skir 1.2.3 → 1.2.5

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 (99) hide show
  1. package/README.md +1 -1
  2. package/dist/config_parser.d.ts.map +1 -1
  3. package/dist/module_collector.d.ts.map +1 -1
  4. package/dist/parser.d.ts.map +1 -1
  5. package/package.json +6 -4
  6. package/src/config_parser.ts +4 -1
  7. package/src/module_collector.ts +18 -20
  8. package/src/parser.ts +12 -0
  9. package/src/project_initializer.ts +18 -0
  10. package/dist/casing.d.ts +0 -5
  11. package/dist/casing.js +0 -23
  12. package/dist/casing.js.map +0 -1
  13. package/dist/command_line_parser.d.ts +0 -36
  14. package/dist/command_line_parser.d.ts.map +0 -1
  15. package/dist/command_line_parser.js +0 -240
  16. package/dist/command_line_parser.js.map +0 -1
  17. package/dist/compatibility_checker.d.ts +0 -74
  18. package/dist/compatibility_checker.js +0 -331
  19. package/dist/compatibility_checker.js.map +0 -1
  20. package/dist/compiler.d.ts +0 -3
  21. package/dist/compiler.js +0 -406
  22. package/dist/compiler.js.map +0 -1
  23. package/dist/completion_helper.d.ts +0 -27
  24. package/dist/completion_helper.js +0 -101
  25. package/dist/completion_helper.js.map +0 -1
  26. package/dist/config.d.ts +0 -18
  27. package/dist/config.js +0 -19
  28. package/dist/config.js.map +0 -1
  29. package/dist/config_parser.d.ts +0 -34
  30. package/dist/config_parser.js +0 -214
  31. package/dist/config_parser.js.map +0 -1
  32. package/dist/definition_finder.d.ts +0 -16
  33. package/dist/definition_finder.js +0 -375
  34. package/dist/definition_finder.js.map +0 -1
  35. package/dist/dependency_manager.d.ts +0 -14
  36. package/dist/dependency_manager.js +0 -109
  37. package/dist/dependency_manager.js.map +0 -1
  38. package/dist/doc_comment_parser.d.ts +0 -6
  39. package/dist/doc_comment_parser.js +0 -269
  40. package/dist/doc_comment_parser.js.map +0 -1
  41. package/dist/doc_reference_resolver.d.ts +0 -5
  42. package/dist/doc_reference_resolver.js +0 -232
  43. package/dist/doc_reference_resolver.js.map +0 -1
  44. package/dist/error_renderer.d.ts +0 -24
  45. package/dist/error_renderer.js +0 -326
  46. package/dist/error_renderer.js.map +0 -1
  47. package/dist/exit_error.d.ts +0 -8
  48. package/dist/exit_error.d.ts.map +0 -1
  49. package/dist/exit_error.js +0 -8
  50. package/dist/exit_error.js.map +0 -1
  51. package/dist/expected_names.d.ts +0 -11
  52. package/dist/expected_names.js +0 -34
  53. package/dist/expected_names.js.map +0 -1
  54. package/dist/formatter.d.ts +0 -28
  55. package/dist/formatter.js +0 -338
  56. package/dist/formatter.js.map +0 -1
  57. package/dist/get_dependencies_flow.d.ts +0 -40
  58. package/dist/get_dependencies_flow.js +0 -177
  59. package/dist/get_dependencies_flow.js.map +0 -1
  60. package/dist/import_block_formatter.d.ts +0 -3
  61. package/dist/import_block_formatter.js +0 -36
  62. package/dist/import_block_formatter.js.map +0 -1
  63. package/dist/index.d.ts +0 -2
  64. package/dist/index.d.ts.map +0 -1
  65. package/dist/index.js +0 -2
  66. package/dist/index.js.map +0 -1
  67. package/dist/io.d.ts +0 -23
  68. package/dist/io.d.ts.map +0 -1
  69. package/dist/io.js +0 -58
  70. package/dist/io.js.map +0 -1
  71. package/dist/literals.d.ts +0 -12
  72. package/dist/literals.js +0 -96
  73. package/dist/literals.js.map +0 -1
  74. package/dist/module_collector.d.ts +0 -9
  75. package/dist/module_collector.js +0 -75
  76. package/dist/module_collector.js.map +0 -1
  77. package/dist/module_set.d.ts +0 -51
  78. package/dist/module_set.js +0 -1331
  79. package/dist/module_set.js.map +0 -1
  80. package/dist/package_downloader.d.ts +0 -4
  81. package/dist/package_downloader.js +0 -256
  82. package/dist/package_downloader.js.map +0 -1
  83. package/dist/package_types.d.ts +0 -30
  84. package/dist/package_types.d.ts.map +0 -1
  85. package/dist/package_types.js +0 -2
  86. package/dist/package_types.js.map +0 -1
  87. package/dist/parser.d.ts +0 -7
  88. package/dist/parser.js +0 -1323
  89. package/dist/parser.js.map +0 -1
  90. package/dist/project_initializer.d.ts +0 -2
  91. package/dist/project_initializer.d.ts.map +0 -1
  92. package/dist/project_initializer.js +0 -189
  93. package/dist/project_initializer.js.map +0 -1
  94. package/dist/snapshotter.d.ts +0 -16
  95. package/dist/snapshotter.js +0 -263
  96. package/dist/snapshotter.js.map +0 -1
  97. package/dist/tokenizer.d.ts +0 -18
  98. package/dist/tokenizer.js +0 -244
  99. package/dist/tokenizer.js.map +0 -1
package/dist/formatter.js DELETED
@@ -1,338 +0,0 @@
1
- import { formatImportBlock } from "./import_block_formatter.js";
2
- import { parseModule } from "./parser.js";
3
- import { tokenizeModule } from "./tokenizer.js";
4
- /**
5
- * Formats the given module and returns the new source code.
6
- * Preserves token ordering.
7
- */
8
- export function formatModule(sourceCode, modulePath, randomGenerator = Math.random) {
9
- const makeErroredResult = (errors) => ({
10
- newSourceCode: sourceCode,
11
- textEdits: [],
12
- errors: errors,
13
- });
14
- const moduleTokens = tokenizeModule(sourceCode, modulePath);
15
- if (moduleTokens.errors.length > 0) {
16
- return makeErroredResult(moduleTokens.errors);
17
- }
18
- const module = parseModule(moduleTokens.result, "lenient");
19
- if (module.errors.length > 0) {
20
- return makeErroredResult(module.errors);
21
- }
22
- const blocks = getBlocks(moduleTokens.result, module.result);
23
- const context = {
24
- context: null,
25
- indentStack: [{ indent: "" }],
26
- };
27
- let newSourceCode = "";
28
- const textEdits = [];
29
- let lastNonCommentToken = "";
30
- const appendBlock = (block) => {
31
- if (block.kind === "import-block") {
32
- if (block.newBlock !== block.oldBlock) {
33
- textEdits.push({
34
- oldStart: block.oldRange.start,
35
- oldEnd: block.oldRange.end,
36
- newText: block.newBlock,
37
- });
38
- }
39
- newSourceCode += block.newBlock;
40
- }
41
- else {
42
- const { token } = block;
43
- const newToken = normalizeToken(token.text, lastNonCommentToken, randomGenerator);
44
- if (newToken !== token.text) {
45
- textEdits.push({
46
- oldStart: token.position,
47
- oldEnd: token.position + token.text.length,
48
- newText: newToken,
49
- });
50
- }
51
- if (!isComment(token)) {
52
- lastNonCommentToken = token.text;
53
- }
54
- newSourceCode += newToken;
55
- }
56
- };
57
- {
58
- const firstBlock = blocks[0];
59
- const firstBlockStart = getStartPosition(firstBlock);
60
- if (firstBlockStart > 0) {
61
- textEdits.push({
62
- oldStart: 0,
63
- oldEnd: firstBlockStart,
64
- newText: "",
65
- });
66
- }
67
- appendBlock(firstBlock);
68
- }
69
- for (let i = 1; i < blocks.length; i++) {
70
- const block = blocks[i - 1];
71
- const next = blocks[i];
72
- // Find the next non-comment block
73
- let nextNonComment = next;
74
- for (let j = i; j < blocks.length; j++) {
75
- const block = blocks[j];
76
- if (!blockIsComment(block)) {
77
- nextNonComment = block;
78
- break;
79
- }
80
- }
81
- // Determine the text to add after 'block' and before 'next': a possible
82
- // trailing comma followed by whitespace.
83
- let newSeparator = shouldAddTrailingComma(block, nextNonComment, context)
84
- ? ","
85
- : "";
86
- newSeparator += getWhitespaceAfterBlock(block, next, nextNonComment, context);
87
- const topOfStack = context.indentStack.at(-1);
88
- if (newSeparator.endsWith("\n")) {
89
- newSeparator = newSeparator + topOfStack.indent;
90
- }
91
- const oldSeparator = sourceCode.slice(getEndPosition(block), getStartPosition(next));
92
- if (oldSeparator !== newSeparator) {
93
- textEdits.push({
94
- oldStart: getEndPosition(block),
95
- oldEnd: getStartPosition(next),
96
- newText: newSeparator,
97
- });
98
- }
99
- newSourceCode += newSeparator;
100
- appendBlock(next);
101
- }
102
- return {
103
- newSourceCode: newSourceCode,
104
- textEdits: textEdits,
105
- errors: [],
106
- };
107
- }
108
- function getBlocks(moduleTokens, module) {
109
- const blocks = moduleTokens.tokensWithComments.map((t) => ({ kind: "token", token: t }));
110
- const { importBlockRange } = module;
111
- if (!importBlockRange) {
112
- // No import block.
113
- return blocks;
114
- }
115
- const importBlock = {
116
- kind: "import-block",
117
- newBlock: formatImportBlock(module.pathToImportedNames),
118
- oldBlock: module.sourceCode.slice(importBlockRange.start, importBlockRange.end),
119
- oldRange: importBlockRange,
120
- };
121
- // Index of the first token in the import block.
122
- const importTokenIndex = blocks.findIndex((t) => t.kind === "token" && t.token.position >= importBlockRange.start);
123
- // Number of tokens in the import block.
124
- const importTokenCount = blocks
125
- .slice(importTokenIndex)
126
- .findIndex((t) => t.kind === "token" && t.token.position >= importBlockRange.end);
127
- // Replace the tokens in the import block with a single "import-block" block.
128
- blocks.splice(importTokenIndex, importTokenCount, importBlock);
129
- return blocks;
130
- }
131
- function getWhitespaceAfterBlock(block, nextBlock,
132
- // If 'next' is a comment, the next non-comment block after 'next'.
133
- // Otherwise, 'next' itself.
134
- nextNonComment, context) {
135
- if (block.kind === "import-block" || nextBlock.kind === "import-block") {
136
- return "\n\n";
137
- }
138
- const token = block.token;
139
- const next = nextBlock.token;
140
- const topOfStack = () => context.indentStack.at(-1);
141
- const indentUnit = " ";
142
- if (token.text === "{" ||
143
- token.text === "{|" ||
144
- (context.context === "in-value" && token.text === "[")) {
145
- context.indentStack.push({
146
- indent: topOfStack().indent + indentUnit,
147
- });
148
- }
149
- else if (token.text === "(" && !isNumberOrQuestionMark(nextNonComment)) {
150
- context.indentStack.push({
151
- indent: topOfStack().indent + indentUnit,
152
- methodRequest: true,
153
- });
154
- }
155
- let dedent;
156
- if (next.text === "}" ||
157
- next.text === "|}" ||
158
- (context.context === "in-value" && next.text === "]") ||
159
- (next.text === ")" && topOfStack().methodRequest)) {
160
- context.indentStack.pop();
161
- dedent = true;
162
- }
163
- // Reset context when we encounter a semicolon, even if the next token is a
164
- // comment. Without this, the "in-value" context from a const declaration
165
- // leaks past comments and into subsequent declarations, causing spurious
166
- // trailing commas.
167
- if (token.text === ";") {
168
- context.context = null;
169
- }
170
- if (isComment(token)) {
171
- return oneOrTwoLineBreaks(token, next);
172
- }
173
- else if (token.text !== "{" &&
174
- next.text === "}" &&
175
- context.context !== "in-value") {
176
- return "\n";
177
- }
178
- else if (next.text === ")" && dedent) {
179
- return "\n";
180
- }
181
- else if (isComment(next)) {
182
- return token.line.lineNumber === next.line.lineNumber
183
- ? " "
184
- : oneOrTwoLineBreaks(token, next);
185
- }
186
- else if (next.text === "=") {
187
- return " ";
188
- }
189
- else if ((token.text === "[" && next.text === "]") ||
190
- (token.text === "{" && next.text === "}") ||
191
- (token.text === "{|" && next.text === "|}")) {
192
- return "";
193
- }
194
- else if (["{", "{|"].includes(token.text)) {
195
- return "\n";
196
- }
197
- else if (token.text === "[") {
198
- return context.context === "in-value" ? "\n" : "";
199
- }
200
- else if (["*", ":"].includes(token.text)) {
201
- return " ";
202
- }
203
- else if (token.text === "(") {
204
- return isNumberOrQuestionMark(nextNonComment) ? "" : "\n";
205
- }
206
- else if (token.text === ")") {
207
- return next.text === "{" ? " " : "";
208
- }
209
- else if (token.text === ";") {
210
- return oneOrTwoLineBreaks(token, next);
211
- }
212
- else if (token.text === "}") {
213
- return [",", ";"].includes(next.text)
214
- ? ""
215
- : oneOrTwoLineBreaks(token, next);
216
- }
217
- else if (token.text === ",") {
218
- return context.context === "removed" || context.context === "import"
219
- ? " "
220
- : "\n";
221
- }
222
- else if (token.text === "=") {
223
- if (context.context === "const") {
224
- context.context = "in-value";
225
- }
226
- return " ";
227
- }
228
- else if (token.text === "const") {
229
- context.context = "const";
230
- return " ";
231
- }
232
- else if (token.text === "removed") {
233
- context.context = "removed";
234
- return next.text === ";" ? "" : " ";
235
- }
236
- else if (token.text === "import") {
237
- context.context = "import";
238
- return " ";
239
- }
240
- else if (context.context === "in-value" &&
241
- ["]", "}", "|}"].includes(next.text)) {
242
- return "\n";
243
- }
244
- else if (/^[A-Za-z]/.test(token.text) &&
245
- !["(", ":", ",", ";", "|", ".", ")", "]", "?"].includes(next.text)) {
246
- return " ";
247
- }
248
- else {
249
- return "";
250
- }
251
- }
252
- function shouldAddTrailingComma(first, nextNonComment, context) {
253
- return (first.kind !== "import-block" &&
254
- nextNonComment.kind !== "import-block" &&
255
- context.context === "in-value" &&
256
- ["]", "}", "|}"].includes(nextNonComment.token.text) &&
257
- !["[", "{", "{|", ","].includes(first.token.text));
258
- }
259
- function oneOrTwoLineBreaks(first, second) {
260
- const firstLineNumber = first.line.lineNumber + first.text.split("\n").length - 1;
261
- if (firstLineNumber < second.line.lineNumber - 1 &&
262
- (isComment(second) || /^[A-Za-z]/.test(second.text))) {
263
- return "\n\n";
264
- }
265
- else {
266
- return "\n";
267
- }
268
- }
269
- function isComment(token) {
270
- return token.text.startsWith("//") || token.text.startsWith("/*");
271
- }
272
- function blockIsComment(block) {
273
- return block.kind === "token" && isComment(block.token);
274
- }
275
- function isNumberOrQuestionMark(block) {
276
- return block.kind === "token" && /^[?0-9]/.test(block.token.text);
277
- }
278
- function getStartPosition(block) {
279
- if (block.kind === "import-block") {
280
- return block.oldRange.start;
281
- }
282
- else {
283
- return block.token.position;
284
- }
285
- }
286
- function getEndPosition(block) {
287
- if (block.kind === "import-block") {
288
- return block.oldRange.end;
289
- }
290
- else {
291
- const { token } = block;
292
- return token.position + token.text.length;
293
- }
294
- }
295
- function normalizeToken(token, lastNonCommentToken, randomGenerator) {
296
- if (token.startsWith("//")) {
297
- // Make sure there is a space between the double slash and the comment text.
298
- if (token.startsWith("// ") ||
299
- token.startsWith("/// ") ||
300
- token === "//" ||
301
- token === "///") {
302
- return token;
303
- }
304
- else if (token.startsWith("///")) {
305
- return "/// " + token.slice(3);
306
- }
307
- else {
308
- return "// " + token.slice(2);
309
- }
310
- }
311
- else if (token.startsWith("'")) {
312
- // A single-quoted string
313
- if (token.includes('"')) {
314
- // Remove escape characters before single quotes.
315
- return token.replace(/\\(?=(?:\\\\)*')/g, "");
316
- }
317
- else {
318
- // If the string does not contain double quotes, turn it into a
319
- // double-quoted string for consistency
320
- const content = token.slice(1, -1);
321
- // Remove escape characters before double quotes.
322
- return '"' + content.replace(/\\(?=(?:\\\\)*")/g, "") + '"';
323
- }
324
- }
325
- else if (token.startsWith('"')) {
326
- // A double-quoted string
327
- // Remove escape characters before double quotes.
328
- return token.replace(/\\(?=(?:\\\\)*')/g, "");
329
- }
330
- else if (token === "?" && ["=", "("].includes(lastNonCommentToken)) {
331
- const randomNumber = Math.floor(randomGenerator() * 1000000);
332
- return String(randomNumber);
333
- }
334
- else {
335
- return token;
336
- }
337
- }
338
- //# sourceMappingURL=formatter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- import type { Record } from "skir-internal";
2
- import { ModuleSet } from "./module_set.js";
3
- import type { DependenciesResult, DependencyError, PackageDownloader, PackageIdToVersion, Packages } from "./package_types.js";
4
- export declare class GetDependenciesFlow {
5
- private readonly cachedPackages;
6
- private readonly githubToken;
7
- private readonly packageDownloader;
8
- private readonly packageBundles;
9
- private readonly dependencyChain;
10
- private readonly errors;
11
- private allDependenciesOnDisk;
12
- constructor(cachedPackages: Packages, githubToken: string | undefined, packageDownloader: PackageDownloader);
13
- run(dependencies: PackageIdToVersion): Promise<DependenciesResult>;
14
- private getDependency;
15
- private getCachedPackage;
16
- }
17
- /**
18
- * Resolves a GitHub blob URL to the first record declared at the referenced line.
19
- *
20
- * Expected URL shape:
21
- * https://github.com/<owner>/<repo>/blob/<version>/skir-src/<path>.skir#L<line>
22
- *
23
- * Returns:
24
- * - `{ kind: "success", record, moduleSet }` when a record is found.
25
- * - `{ kind: "error", message }` for invalid URLs, dependency download issues,
26
- * compilation failures, missing modules, or when no record starts at the line.
27
- */
28
- export declare function getModuleFromGithubUrl(githubUrl: string, githubToken: string | undefined, packageDownloader?: PackageDownloader): Promise<{
29
- kind: "success";
30
- record: Record;
31
- moduleSet: ModuleSet;
32
- } | DependencyError>;
33
- export declare function parseGithubModuleUrl(githubUrl: string): {
34
- kind: "success";
35
- packageId: string;
36
- version: string;
37
- modulePath: string;
38
- lineNumber: number;
39
- } | DependencyError;
40
- //# sourceMappingURL=get_dependencies_flow.d.ts.map
@@ -1,177 +0,0 @@
1
- import { ModuleSet } from "./module_set.js";
2
- import { downloadPackage } from "./package_downloader.js";
3
- export class GetDependenciesFlow {
4
- constructor(cachedPackages, githubToken, packageDownloader) {
5
- this.cachedPackages = cachedPackages;
6
- this.githubToken = githubToken;
7
- this.packageDownloader = packageDownloader;
8
- this.packageBundles = {};
9
- this.dependencyChain = [];
10
- this.errors = [];
11
- this.allDependenciesOnDisk = true;
12
- }
13
- async run(dependencies) {
14
- for (const [packageId, version] of Object.entries(dependencies)) {
15
- await this.getDependency(packageId, version);
16
- if (this.errors.length > 0) {
17
- return this.errors[0];
18
- }
19
- }
20
- const changed = !(this.allDependenciesOnDisk &&
21
- Object.keys(dependencies).length ===
22
- Object.keys(this.cachedPackages).length);
23
- return {
24
- kind: "success",
25
- packages: Object.fromEntries(Object.entries(this.packageBundles).map(([packageId, bundle]) => [
26
- packageId,
27
- bundle.pkg,
28
- ])),
29
- changed: changed,
30
- };
31
- }
32
- async getDependency(packageId, version) {
33
- this.dependencyChain.push({ packageId, version });
34
- try {
35
- const presentPackage = this.packageBundles[packageId];
36
- if (presentPackage?.pkg.version === version) {
37
- return;
38
- }
39
- else if (presentPackage) {
40
- this.errors.push({
41
- kind: "error",
42
- message: [
43
- `Version conflict for package ${packageId}:`,
44
- `- ${formatDependencyChain(this.dependencyChain)}`,
45
- `- ${formatDependencyChain(presentPackage.dependencyChain)}`,
46
- ].join("\n"),
47
- });
48
- return;
49
- }
50
- let pkg = this.getCachedPackage(packageId, version);
51
- if (!pkg) {
52
- this.allDependenciesOnDisk = false;
53
- const downloadResult = await this.packageDownloader(packageId, version, this.githubToken);
54
- if (downloadResult.kind === "success") {
55
- pkg = downloadResult.package;
56
- }
57
- else {
58
- this.errors.push(downloadResult);
59
- return;
60
- }
61
- }
62
- this.packageBundles[packageId] = {
63
- pkg: pkg,
64
- dependencyChain: [...this.dependencyChain],
65
- };
66
- for (const [depId, depVersion] of Object.entries(pkg.dependencies)) {
67
- await this.getDependency(depId, depVersion);
68
- }
69
- }
70
- finally {
71
- this.dependencyChain.pop();
72
- }
73
- }
74
- getCachedPackage(packageId, version) {
75
- const pkg = this.cachedPackages[packageId];
76
- return pkg?.version === version ? pkg : undefined;
77
- }
78
- }
79
- function formatDependencyChain(chain) {
80
- return ("main depends on " +
81
- chain
82
- .map((item) => `${item.packageId}:${item.version}`)
83
- .join(" which depends on "));
84
- }
85
- /**
86
- * Resolves a GitHub blob URL to the first record declared at the referenced line.
87
- *
88
- * Expected URL shape:
89
- * https://github.com/<owner>/<repo>/blob/<version>/skir-src/<path>.skir#L<line>
90
- *
91
- * Returns:
92
- * - `{ kind: "success", record, moduleSet }` when a record is found.
93
- * - `{ kind: "error", message }` for invalid URLs, dependency download issues,
94
- * compilation failures, missing modules, or when no record starts at the line.
95
- */
96
- export async function getModuleFromGithubUrl(githubUrl, githubToken, packageDownloader = downloadPackage) {
97
- const parsedUrl = parseGithubModuleUrl(githubUrl);
98
- if (parsedUrl.kind === "error") {
99
- return parsedUrl;
100
- }
101
- const { packageId, version, modulePath, lineNumber } = parsedUrl;
102
- const flow = new GetDependenciesFlow({}, githubToken, packageDownloader);
103
- const dependenciesResult = await flow.run({
104
- [packageId]: version,
105
- });
106
- if (dependenciesResult.kind === "error") {
107
- return dependenciesResult;
108
- }
109
- const modulePathToContent = new Map();
110
- for (const pkg of Object.values(dependenciesResult.packages)) {
111
- for (const [path, content] of Object.entries(pkg.modules)) {
112
- modulePathToContent.set(path, content);
113
- }
114
- }
115
- const moduleSet = ModuleSet.compile(modulePathToContent);
116
- if (moduleSet.errors.length > 0) {
117
- return {
118
- kind: "error",
119
- message: moduleSet.errors[0].message || "Compilation failed",
120
- };
121
- }
122
- const moduleResult = moduleSet.modules.get(modulePath);
123
- if (!moduleResult) {
124
- return {
125
- kind: "error",
126
- message: `Module not found: ${modulePath}`,
127
- };
128
- }
129
- const recordAtLine = moduleResult.result.records.find((record) => record.record.name.line.lineNumber === lineNumber);
130
- if (!recordAtLine) {
131
- return {
132
- kind: "error",
133
- message: `No record found at line ${lineNumber + 1} in ${modulePath}`,
134
- };
135
- }
136
- return {
137
- kind: "success",
138
- record: recordAtLine.record,
139
- moduleSet,
140
- };
141
- }
142
- export function parseGithubModuleUrl(githubUrl) {
143
- const match = githubUrl.match(/^https:\/\/github\.com\/([^/]+)\/([^/]+)\/blob\/([^/]+)\/(.+)#L(\d+)$/);
144
- if (!match) {
145
- return {
146
- kind: "error",
147
- message: `Invalid GitHub URL: ${githubUrl}`,
148
- };
149
- }
150
- const owner = match[1];
151
- const repo = match[2];
152
- const version = match[3];
153
- const repoPath = match[4];
154
- const lineNumberOneBased = Number(match[5]);
155
- if (!repoPath.startsWith("skir-src/") || !repoPath.endsWith(".skir")) {
156
- return {
157
- kind: "error",
158
- message: `URL must target a .skir file in skir-src: ${githubUrl}`,
159
- };
160
- }
161
- if (!Number.isInteger(lineNumberOneBased) || lineNumberOneBased <= 0) {
162
- return {
163
- kind: "error",
164
- message: `Invalid line number in URL: ${githubUrl}`,
165
- };
166
- }
167
- const packageId = `@${owner}/${repo}`;
168
- const modulePath = packageId + repoPath.substring("skir-src".length);
169
- return {
170
- kind: "success",
171
- packageId,
172
- version,
173
- modulePath,
174
- lineNumber: lineNumberOneBased - 1,
175
- };
176
- }
177
- //# sourceMappingURL=get_dependencies_flow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get_dependencies_flow.js","sourceRoot":"","sources":["../src/get_dependencies_flow.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { PathToImportedNames } from "skir-internal";
2
- export declare function formatImportBlock(pathToImportedNames: Readonly<PathToImportedNames>): string;
3
- //# sourceMappingURL=import_block_formatter.d.ts.map
@@ -1,36 +0,0 @@
1
- export function formatImportBlock(pathToImportedNames) {
2
- const formatImport = (import_) => {
3
- const [path, names] = import_;
4
- const quotedPath = JSON.stringify(path);
5
- if (names.kind === "all") {
6
- return `import * as ${names.alias} from ${quotedPath};`;
7
- }
8
- else if (names.names.size <= 0) {
9
- return "";
10
- }
11
- else if (names.names.size === 1) {
12
- const name = [...names.names][0];
13
- return `import { ${name} } from ${quotedPath};`;
14
- }
15
- else {
16
- const nameLines = [...names.names].sort().map((name) => ` ${name},\n`);
17
- return `import {\n${nameLines.join("")}} from ${quotedPath};`;
18
- }
19
- };
20
- const formatImports = (imports) => {
21
- imports.sort(([pathA], [pathB]) => pathA.localeCompare(pathB, "en-US"));
22
- return imports
23
- .map(formatImport)
24
- .filter((it) => it)
25
- .join("\n");
26
- };
27
- const imports = Object.entries(pathToImportedNames);
28
- return [
29
- imports.filter(([path, _]) => path.startsWith("@")),
30
- imports.filter(([path, _]) => !path.startsWith("@")),
31
- ]
32
- .map(formatImports)
33
- .filter((it) => it)
34
- .join("\n\n");
35
- }
36
- //# sourceMappingURL=import_block_formatter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import_block_formatter.js","sourceRoot":"","sources":["../src/import_block_formatter.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAC/B,mBAAkD;IAElD,MAAM,YAAY,GAAG,CAAC,OAAgC,EAAU,EAAE;QAChE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,OAAO,eAAe,KAAK,CAAC,KAAK,SAAS,UAAU,GAAG,CAAC;QAC1D,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO,YAAY,IAAI,WAAW,UAAU,GAAG,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;YACxE,OAAO,aAAa,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,UAAU,GAAG,CAAC;QAChE,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,OAAuC,EAAU,EAAE;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,OAAO,OAAO;aACX,GAAG,CAAC,YAAY,CAAC;aACjB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;aAClB,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEpD,OAAO;QACL,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACrD;SACE,GAAG,CAAC,aAAa,CAAC;SAClB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;SAClB,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}