skir 1.2.4 → 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 (96) hide show
  1. package/dist/config_parser.d.ts.map +1 -1
  2. package/dist/module_collector.d.ts.map +1 -1
  3. package/package.json +5 -3
  4. package/src/config_parser.ts +4 -1
  5. package/src/module_collector.ts +18 -20
  6. package/src/project_initializer.ts +18 -0
  7. package/dist/casing.d.ts +0 -5
  8. package/dist/casing.js +0 -23
  9. package/dist/casing.js.map +0 -1
  10. package/dist/command_line_parser.d.ts +0 -36
  11. package/dist/command_line_parser.d.ts.map +0 -1
  12. package/dist/command_line_parser.js +0 -240
  13. package/dist/command_line_parser.js.map +0 -1
  14. package/dist/compatibility_checker.d.ts +0 -74
  15. package/dist/compatibility_checker.js +0 -331
  16. package/dist/compatibility_checker.js.map +0 -1
  17. package/dist/compiler.d.ts +0 -3
  18. package/dist/compiler.js +0 -406
  19. package/dist/compiler.js.map +0 -1
  20. package/dist/completion_helper.d.ts +0 -27
  21. package/dist/completion_helper.js +0 -101
  22. package/dist/completion_helper.js.map +0 -1
  23. package/dist/config.d.ts +0 -18
  24. package/dist/config.js +0 -19
  25. package/dist/config.js.map +0 -1
  26. package/dist/config_parser.d.ts +0 -34
  27. package/dist/config_parser.js +0 -214
  28. package/dist/config_parser.js.map +0 -1
  29. package/dist/definition_finder.d.ts +0 -16
  30. package/dist/definition_finder.js +0 -375
  31. package/dist/definition_finder.js.map +0 -1
  32. package/dist/dependency_manager.d.ts +0 -14
  33. package/dist/dependency_manager.js +0 -109
  34. package/dist/dependency_manager.js.map +0 -1
  35. package/dist/doc_comment_parser.d.ts +0 -6
  36. package/dist/doc_comment_parser.js +0 -269
  37. package/dist/doc_comment_parser.js.map +0 -1
  38. package/dist/doc_reference_resolver.d.ts +0 -5
  39. package/dist/doc_reference_resolver.js +0 -232
  40. package/dist/doc_reference_resolver.js.map +0 -1
  41. package/dist/error_renderer.d.ts +0 -24
  42. package/dist/error_renderer.js +0 -326
  43. package/dist/error_renderer.js.map +0 -1
  44. package/dist/exit_error.d.ts +0 -8
  45. package/dist/exit_error.d.ts.map +0 -1
  46. package/dist/exit_error.js +0 -8
  47. package/dist/exit_error.js.map +0 -1
  48. package/dist/expected_names.d.ts +0 -11
  49. package/dist/expected_names.js +0 -34
  50. package/dist/expected_names.js.map +0 -1
  51. package/dist/formatter.d.ts +0 -28
  52. package/dist/formatter.js +0 -338
  53. package/dist/formatter.js.map +0 -1
  54. package/dist/get_dependencies_flow.d.ts +0 -40
  55. package/dist/get_dependencies_flow.js +0 -177
  56. package/dist/get_dependencies_flow.js.map +0 -1
  57. package/dist/import_block_formatter.d.ts +0 -3
  58. package/dist/import_block_formatter.js +0 -36
  59. package/dist/import_block_formatter.js.map +0 -1
  60. package/dist/index.d.ts +0 -2
  61. package/dist/index.d.ts.map +0 -1
  62. package/dist/index.js +0 -2
  63. package/dist/index.js.map +0 -1
  64. package/dist/io.d.ts +0 -23
  65. package/dist/io.d.ts.map +0 -1
  66. package/dist/io.js +0 -58
  67. package/dist/io.js.map +0 -1
  68. package/dist/literals.d.ts +0 -12
  69. package/dist/literals.js +0 -96
  70. package/dist/literals.js.map +0 -1
  71. package/dist/module_collector.d.ts +0 -9
  72. package/dist/module_collector.js +0 -75
  73. package/dist/module_collector.js.map +0 -1
  74. package/dist/module_set.d.ts +0 -51
  75. package/dist/module_set.js +0 -1331
  76. package/dist/module_set.js.map +0 -1
  77. package/dist/package_downloader.d.ts +0 -4
  78. package/dist/package_downloader.js +0 -256
  79. package/dist/package_downloader.js.map +0 -1
  80. package/dist/package_types.d.ts +0 -30
  81. package/dist/package_types.d.ts.map +0 -1
  82. package/dist/package_types.js +0 -2
  83. package/dist/package_types.js.map +0 -1
  84. package/dist/parser.d.ts +0 -7
  85. package/dist/parser.js +0 -1335
  86. package/dist/parser.js.map +0 -1
  87. package/dist/project_initializer.d.ts +0 -2
  88. package/dist/project_initializer.d.ts.map +0 -1
  89. package/dist/project_initializer.js +0 -189
  90. package/dist/project_initializer.js.map +0 -1
  91. package/dist/snapshotter.d.ts +0 -16
  92. package/dist/snapshotter.js +0 -263
  93. package/dist/snapshotter.js.map +0 -1
  94. package/dist/tokenizer.d.ts +0 -18
  95. package/dist/tokenizer.js +0 -244
  96. package/dist/tokenizer.js.map +0 -1
package/dist/compiler.js DELETED
@@ -1,406 +0,0 @@
1
- #!/usr/bin/env node
2
- import * as FileSystem from "fs/promises";
3
- import { glob } from "glob";
4
- import * as Paths from "path";
5
- import Watcher from "watcher";
6
- import { parseCommandLine } from "./command_line_parser.js";
7
- import { importCodeGenerator, parseSkirConfigWithDynamicImports, } from "./config_parser.js";
8
- import { DependencyManager } from "./dependency_manager.js";
9
- import { makeGray, makeGreen, makeRed, renderErrors, renderSkirConfigErrors, } from "./error_renderer.js";
10
- import { ExitError } from "./exit_error.js";
11
- import { formatModule } from "./formatter.js";
12
- import { isDirectory, REAL_FILE_SYSTEM, rewritePathForRendering, } from "./io.js";
13
- import { collectEditableModules, collectModules } from "./module_collector.js";
14
- import { ModuleSet } from "./module_set.js";
15
- import { initializeProject } from "./project_initializer.js";
16
- import { takeSnapshot, viewSnapshot } from "./snapshotter.js";
17
- async function makeGeneratorBundle(config, root) {
18
- const generator = await importCodeGenerator(config.mod);
19
- let skiroutDirs;
20
- if (typeof config.outDir === "string") {
21
- skiroutDirs = [config.outDir];
22
- }
23
- else {
24
- skiroutDirs = config.outDir;
25
- }
26
- skiroutDirs = skiroutDirs.map((d) => Paths.join(root, d));
27
- return {
28
- generator: generator,
29
- config: config.config,
30
- skiroutDirs: skiroutDirs,
31
- };
32
- }
33
- class WatchModeMainLoop {
34
- constructor(srcDir, generatorBundles, dependencies, mode) {
35
- this.srcDir = srcDir;
36
- this.generatorBundles = generatorBundles;
37
- this.dependencies = dependencies;
38
- this.mode = mode;
39
- this.skiroutDirs = new Set();
40
- this.generating = false;
41
- this.mustRegenerate = false;
42
- this.lastWriteBatch = {
43
- pathToFile: new Map(),
44
- writeTime: new Date(0),
45
- };
46
- for (const generatorBundle of generatorBundles) {
47
- for (const skiroutDir of generatorBundle.skiroutDirs) {
48
- this.skiroutDirs.add(skiroutDir);
49
- }
50
- }
51
- checkNoOverlappingSkiroutDirs([...this.skiroutDirs]);
52
- }
53
- async start() {
54
- await this.generate();
55
- const watcher = new Watcher(this.srcDir, {
56
- renameDetection: true,
57
- recursive: true,
58
- persistent: true,
59
- });
60
- watcher.on("all", (_, targetPath, targetPathNext) => {
61
- if (targetPath.endsWith(".skir") ||
62
- (targetPathNext && targetPathNext.endsWith(".skir"))) {
63
- this.triggerGeneration();
64
- }
65
- });
66
- }
67
- triggerGeneration() {
68
- if (this.generating) {
69
- this.mustRegenerate = true;
70
- return;
71
- }
72
- if (this.timeoutId !== undefined) {
73
- globalThis.clearTimeout(this.timeoutId);
74
- }
75
- const delayMillis = 200;
76
- const callback = () => {
77
- try {
78
- this.generate();
79
- }
80
- catch (e) {
81
- const message = e && typeof e === "object" && "message" in e ? e.message : e;
82
- console.error(message);
83
- }
84
- };
85
- this.timeoutId = globalThis.setTimeout(callback, delayMillis);
86
- }
87
- async generate() {
88
- this.generating = true;
89
- this.timeoutId = undefined;
90
- this.mustRegenerate = false;
91
- if (this.mode === "watch") {
92
- console.clear();
93
- }
94
- try {
95
- let moduleSet;
96
- try {
97
- moduleSet = await collectModules(this.srcDir, this.dependencies, this.previousModuleSet);
98
- this.previousModuleSet = moduleSet;
99
- }
100
- catch (e) {
101
- if (this.mode === "watch" && e instanceof Error) {
102
- console.error(makeRed(e.message));
103
- return false;
104
- }
105
- else {
106
- throw e;
107
- }
108
- }
109
- const errors = moduleSet.errors.filter((e) => !e.errorIsInOtherModule);
110
- if (errors.length) {
111
- renderErrors(errors);
112
- return false;
113
- }
114
- else {
115
- if (moduleSet.recordMap.size <= 0) {
116
- console.error(makeRed("No skir modules found in source directory"));
117
- }
118
- await this.doGenerate(moduleSet);
119
- if (this.mode === "watch") {
120
- const date = new Date().toLocaleTimeString("en-US");
121
- const successMessage = `Generation succeeded at ${date}`;
122
- console.log(makeGreen(successMessage));
123
- console.log("\nWaiting for changes in files matching:");
124
- const glob = Paths.resolve(Paths.join(this.srcDir, "/**/*.skir"));
125
- console.log(` ${glob}`);
126
- }
127
- return true;
128
- }
129
- }
130
- finally {
131
- this.generating = false;
132
- if (this.mustRegenerate) {
133
- this.triggerGeneration();
134
- }
135
- }
136
- }
137
- async doGenerate(moduleSet) {
138
- if (moduleSet.errors.length) {
139
- throw new Error();
140
- }
141
- const { skiroutDirs } = this;
142
- const preExistingAbsolutePaths = new Set();
143
- for (const skiroutDir of skiroutDirs) {
144
- await FileSystem.mkdir(skiroutDir, { recursive: true });
145
- // Collect all the files in all the skirout dirs.
146
- (await glob(Paths.join(skiroutDir, "**/*"), { withFileTypes: true })).forEach((p) => preExistingAbsolutePaths.add(p.fullpath()));
147
- }
148
- const pathToFile = new Map();
149
- const pathToGenerator = new Map();
150
- for (const generator of this.generatorBundles) {
151
- const files = generator.generator.generateCode({
152
- modules: [...moduleSet.modules.values()].map((r) => r.result),
153
- recordMap: moduleSet.recordMap,
154
- config: generator.config,
155
- }).files;
156
- for (const file of files) {
157
- const { path } = file;
158
- if (pathToFile.has(path)) {
159
- throw new ExitError("Multiple generators produce " + rewritePathForRendering(path));
160
- }
161
- pathToFile.set(path, file);
162
- pathToGenerator.set(path, generator);
163
- for (const skiroutDir of generator.skiroutDirs) {
164
- // Remove this path and all its parents from the set of paths to remove
165
- // at the end of the generation.
166
- for (let pathToKeep = path; pathToKeep !== "."; pathToKeep = Paths.dirname(pathToKeep)) {
167
- preExistingAbsolutePaths.delete(Paths.resolve(Paths.join(skiroutDir, pathToKeep)));
168
- }
169
- }
170
- }
171
- }
172
- // Write or override all the generated files.
173
- const { lastWriteBatch } = this;
174
- await Promise.all(Array.from(pathToFile).map(async ([p, newFile]) => {
175
- const oldFile = lastWriteBatch.pathToFile.get(p);
176
- const generator = pathToGenerator.get(p);
177
- for (const skiroutDir of generator.skiroutDirs) {
178
- const fsPath = Paths.join(skiroutDir, p);
179
- if (oldFile?.code === newFile.code) {
180
- const mtime = (await FileSystem.stat(fsPath)).mtime;
181
- if (mtime !== null &&
182
- mtime.getDate() <= lastWriteBatch.writeTime.getDate()) {
183
- return;
184
- }
185
- }
186
- await FileSystem.mkdir(Paths.dirname(fsPath), { recursive: true });
187
- await FileSystem.writeFile(fsPath, newFile.code, "utf-8");
188
- }
189
- }));
190
- // Remove all the pre-existing paths which haven't been overridden.
191
- await Promise.all(Array.from(preExistingAbsolutePaths)
192
- .sort((a, b) => b.localeCompare(a, "en-US"))
193
- .map(async (p) => {
194
- try {
195
- await FileSystem.rm(p, { force: true, recursive: true });
196
- }
197
- catch (_e) {
198
- // Ignore error.
199
- }
200
- }));
201
- this.lastWriteBatch = {
202
- pathToFile: pathToFile,
203
- writeTime: new Date(),
204
- };
205
- }
206
- }
207
- function checkNoOverlappingSkiroutDirs(skiroutDirs) {
208
- for (let i = 0; i < skiroutDirs.length; ++i) {
209
- for (let j = i + 1; j < skiroutDirs.length; ++j) {
210
- const dirA = Paths.normalize(skiroutDirs[i]);
211
- const dirB = Paths.normalize(skiroutDirs[j]);
212
- if (dirA.startsWith(dirB + Paths.sep) ||
213
- dirB.startsWith(dirA + Paths.sep)) {
214
- throw new ExitError(`Overlapping skirout directories: ${dirA} and ${dirB}`);
215
- }
216
- }
217
- }
218
- }
219
- async function format(srcDir, mode) {
220
- const editableModules = await collectEditableModules(srcDir);
221
- const pathToFormatResult = new Map();
222
- for await (const editableModule of editableModules) {
223
- const unformattedCode = editableModule.content;
224
- const formattedModule = formatModule(unformattedCode, editableModule.modulePath);
225
- const { errors } = formattedModule;
226
- if (errors.length) {
227
- renderErrors(errors);
228
- process.exit(1);
229
- }
230
- pathToFormatResult.set(editableModule.fullPath, {
231
- formattedCode: formattedModule.newSourceCode,
232
- alreadyFormatted: formattedModule.newSourceCode === unformattedCode,
233
- });
234
- }
235
- let numFilesNotFormatted = 0;
236
- for (const [path, result] of pathToFormatResult) {
237
- const relativePath = Paths.relative(srcDir, path).replace(/\\/g, "/");
238
- if (mode === "fix") {
239
- if (result.alreadyFormatted) {
240
- console.log(`${makeGray(relativePath)} (unchanged)`);
241
- }
242
- else {
243
- REAL_FILE_SYSTEM.writeTextFile(path, result.formattedCode);
244
- console.log(makeGray(relativePath));
245
- }
246
- }
247
- else {
248
- const _ = mode;
249
- if (result.alreadyFormatted) {
250
- console.log(`${makeGray(relativePath)} (OK)`);
251
- }
252
- else {
253
- console.log(makeRed(relativePath));
254
- ++numFilesNotFormatted;
255
- }
256
- }
257
- }
258
- if (numFilesNotFormatted) {
259
- console.log();
260
- console.log(makeRed(`${numFilesNotFormatted} file${numFilesNotFormatted > 1 ? "s" : ""} not formatted; run with 'format fix' to format ${numFilesNotFormatted > 1 ? "them" : "it"}`));
261
- process.exit(1);
262
- }
263
- }
264
- async function getDependencies(dependencies, root, githubTokenEnvVar) {
265
- let githubToken = undefined;
266
- if (githubTokenEnvVar) {
267
- githubToken = process.env[githubTokenEnvVar];
268
- if (githubToken === undefined) {
269
- console.error(makeRed(`Environment variable ${githubTokenEnvVar} is not set. Please set it to authenticate with GitHub.`));
270
- process.exit(1);
271
- }
272
- }
273
- const manager = new DependencyManager(root, githubToken);
274
- const result = await manager.getDependencies(dependencies);
275
- if (result.kind === "success") {
276
- const moduleMap = new Map();
277
- for (const pkg of Object.values(result.packages)) {
278
- for (const [modulePath, content] of Object.entries(pkg.modules)) {
279
- moduleMap.set(modulePath, content);
280
- }
281
- }
282
- // Validate: compile the dependencies to check for errors.
283
- const depModuleSet = ModuleSet.compile(moduleMap);
284
- if (depModuleSet.errors.length) {
285
- renderErrors(depModuleSet.errors);
286
- process.exit(1);
287
- }
288
- return depModuleSet;
289
- }
290
- else {
291
- console.error(makeRed(result.message));
292
- process.exit(1);
293
- }
294
- }
295
- async function runGeneration(skirConfig, root, srcDir, mode) {
296
- // Run the skir code generators in watch mode or once.
297
- const generatorBundles = await Promise.all(skirConfig.generators.map((config) => makeGeneratorBundle(config, root)));
298
- // Look for duplicates.
299
- for (let i = 0; i < generatorBundles.length - 1; ++i) {
300
- const { id } = generatorBundles[i].generator;
301
- if (id === generatorBundles[i + 1].generator.id) {
302
- console.error(makeRed(`Duplicate generator: ${id}`));
303
- process.exit(1);
304
- }
305
- }
306
- // Get dependencies.
307
- const dependencies = await getDependencies(skirConfig.dependencies, root, skirConfig.githubTokenEnvVar);
308
- const watchModeMainLoop = new WatchModeMainLoop(srcDir, generatorBundles, dependencies, mode);
309
- if (mode === "watch") {
310
- await watchModeMainLoop.start();
311
- }
312
- else {
313
- const success = await watchModeMainLoop.generate();
314
- process.exit(success ? 0 : 1);
315
- }
316
- }
317
- async function main() {
318
- const args = parseCommandLine(process.argv.slice(2));
319
- if (args.kind === "version") {
320
- const packageJsonPath = new URL("../package.json", import.meta.url);
321
- const packageJson = JSON.parse(await FileSystem.readFile(packageJsonPath, "utf-8"));
322
- console.log(`v${packageJson.version}`);
323
- return;
324
- }
325
- const root = args.root || ".";
326
- if (!(await isDirectory(root))) {
327
- console.error(makeRed(`Not a directory: ${root}`));
328
- process.exit(1);
329
- }
330
- switch (args.kind) {
331
- case "init": {
332
- initializeProject(root);
333
- return;
334
- }
335
- case "help":
336
- case "error": {
337
- return;
338
- }
339
- }
340
- const skirConfigPath = rewritePathForRendering(Paths.join(root, "skir.yml"));
341
- const skirConfigCode = REAL_FILE_SYSTEM.readTextFile(skirConfigPath);
342
- if (skirConfigCode === undefined) {
343
- console.error(makeRed(`Cannot find ${skirConfigPath}`));
344
- process.exit(1);
345
- }
346
- const skirConfigResult = await parseSkirConfigWithDynamicImports(skirConfigCode);
347
- if (skirConfigResult.errors.length) {
348
- console.error(makeRed("Invalid skir config"));
349
- const { maybeForgotToEditAfterInit } = skirConfigResult;
350
- renderSkirConfigErrors(skirConfigResult.errors, {
351
- skirConfigPath,
352
- maybeForgotToEditAfterInit,
353
- });
354
- process.exit(1);
355
- }
356
- const skirConfig = skirConfigResult.skirConfig;
357
- const srcDir = Paths.join(root, "skir-src");
358
- switch (args.kind) {
359
- case "format": {
360
- // Check or fix the formatting to the .skir files in the source directory.
361
- await format(srcDir, args.subcommand === "ci" ? "check" : "fix");
362
- break;
363
- }
364
- case "gen": {
365
- await runGeneration(skirConfig, root, srcDir, args.subcommand ?? "once");
366
- break;
367
- }
368
- case "snapshot": {
369
- if (args.subcommand === "view") {
370
- viewSnapshot({
371
- rootDir: root,
372
- });
373
- }
374
- else {
375
- const dependencies = await getDependencies(skirConfig.dependencies, root, skirConfig.githubTokenEnvVar);
376
- const success = takeSnapshot({
377
- rootDir: root,
378
- srcDir: srcDir,
379
- dependencies: dependencies,
380
- subcommand: args.subcommand,
381
- });
382
- if (!success) {
383
- process.exit(1);
384
- }
385
- }
386
- break;
387
- }
388
- default: {
389
- const _ = args;
390
- throw new TypeError(_);
391
- }
392
- }
393
- }
394
- try {
395
- await main();
396
- }
397
- catch (e) {
398
- if (e instanceof Error) {
399
- console.error(makeRed(e.message));
400
- if (e instanceof ExitError) {
401
- process.exit(1);
402
- }
403
- }
404
- throw e;
405
- }
406
- //# sourceMappingURL=compiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { Doc } from "skir-internal";
2
- import { TextEdit } from "./formatter.js";
3
- import { ModuleSet } from "./module_set.js";
4
- export { declarationsToExpectedNames, ExpectedNamesCollector, } from "./expected_names.js";
5
- export interface CompletionItem {
6
- readonly name: string;
7
- readonly doc?: Doc;
8
- /** Set if the item requires an automatic import. */
9
- readonly modulePath?: string;
10
- /**
11
- * Set if the text to insert when the user selects the item is different from 'name'.
12
- * Example: name is "foo", insert text is "module_alias.Foo" or ".Foo".
13
- */
14
- readonly insertText?: string;
15
- /**
16
- * The text edit to add the import statement.
17
- * Set if the item required an automatic import.
18
- */
19
- readonly importBlockEdit?: TextEdit;
20
- }
21
- export interface CompletionItems {
22
- readonly placeholderStartPos: number;
23
- readonly placeholderEndPos: number;
24
- readonly items: readonly CompletionItem[];
25
- }
26
- export declare function provideCompletionItems(modulePath: string, moduleContent: string, position: number, oldModuleSet: ModuleSet): CompletionItems | null;
27
- //# sourceMappingURL=completion_helper.d.ts.map
@@ -1,101 +0,0 @@
1
- import { formatImportBlock } from "./import_block_formatter.js";
2
- import { ModuleSet } from "./module_set.js";
3
- export { declarationsToExpectedNames, ExpectedNamesCollector, } from "./expected_names.js";
4
- export function provideCompletionItems(modulePath, moduleContent, position, oldModuleSet) {
5
- const modulePathToContent = new Map();
6
- for (const [modulePath, module] of oldModuleSet.modules) {
7
- modulePathToContent.set(modulePath, module.result.sourceCode);
8
- }
9
- modulePathToContent.set(modulePath, moduleContent);
10
- const moduleResult = ModuleSet.compileForCompletion(modulePath, position, modulePathToContent, oldModuleSet);
11
- for (const error of moduleResult.errors) {
12
- const { token } = error;
13
- let startPosition;
14
- let endPosition;
15
- if (token.text.startsWith('"') || token.text.startsWith("'")) {
16
- startPosition = token.position + 1;
17
- endPosition = token.position + token.originalText.length - 1;
18
- }
19
- else {
20
- startPosition = token.position;
21
- endPosition =
22
- token.position + (token.text === "..." ? 0 : token.originalText.length);
23
- }
24
- if (startPosition <= position &&
25
- position <= endPosition &&
26
- error.expectedNames?.length) {
27
- return {
28
- placeholderStartPos: startPosition,
29
- placeholderEndPos: endPosition,
30
- items: error.expectedNames.map((it) => expectedNameToCompletionItem(it, moduleResult.result)),
31
- };
32
- }
33
- }
34
- return null;
35
- }
36
- function expectedNameToCompletionItem(expectedName, module) {
37
- const { modulePath } = expectedName;
38
- if (!modulePath) {
39
- return expectedName;
40
- }
41
- // Requires an automatic import.
42
- let insertText;
43
- // Set if the import block needs to be modified.
44
- let newPathToImportedNames;
45
- // Check if the module is already imported.
46
- const oldImportedNames = module.pathToImportedNames[modulePath];
47
- if (oldImportedNames) {
48
- if (oldImportedNames.kind === "all") {
49
- // The module is already imported with an alias, we can use the alias.
50
- // No need to modify the import block.
51
- insertText = `${oldImportedNames.alias}.${expectedName.name}`;
52
- }
53
- else {
54
- // Some records from the module are already imported.
55
- newPathToImportedNames = {
56
- ...module.pathToImportedNames,
57
- [modulePath]: {
58
- kind: "some",
59
- names: new Set([...oldImportedNames.names, expectedName.name]),
60
- },
61
- };
62
- }
63
- }
64
- else {
65
- // The module is not imported yet.
66
- newPathToImportedNames = {
67
- ...module.pathToImportedNames,
68
- [modulePath]: {
69
- kind: "some",
70
- names: new Set([expectedName.name]),
71
- },
72
- };
73
- }
74
- let importBlockEdit;
75
- if (newPathToImportedNames) {
76
- const newImportBlock = formatImportBlock(newPathToImportedNames);
77
- const oldImportBlockRange = module.importBlockRange;
78
- if (oldImportBlockRange) {
79
- // Replace the old import block with the new one.
80
- importBlockEdit = {
81
- oldStart: oldImportBlockRange.start,
82
- oldEnd: oldImportBlockRange.end,
83
- newText: newImportBlock,
84
- };
85
- }
86
- else {
87
- // No import block exists, insert the new import block at the top.
88
- importBlockEdit = {
89
- oldStart: 0,
90
- oldEnd: 0,
91
- newText: `${newImportBlock}\n\n`,
92
- };
93
- }
94
- }
95
- return {
96
- ...expectedName,
97
- insertText: insertText,
98
- importBlockEdit: importBlockEdit,
99
- };
100
- }
101
- //# sourceMappingURL=completion_helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion_helper.js","sourceRoot":"","sources":["../src/completion_helper.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import { z } from "zod";
2
- export declare const GeneratorConfig: z.ZodObject<{
3
- mod: z.ZodString;
4
- outDir: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
5
- config: z.ZodAny;
6
- }, z.core.$strict>;
7
- export type GeneratorConfig = z.infer<typeof GeneratorConfig>;
8
- export declare const SkirConfig: z.ZodObject<{
9
- generators: z.ZodDefault<z.ZodArray<z.ZodObject<{
10
- mod: z.ZodString;
11
- outDir: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
12
- config: z.ZodAny;
13
- }, z.core.$strict>>>;
14
- dependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
15
- githubTokenEnvVar: z.ZodDefault<z.ZodString>;
16
- }, z.core.$strict>;
17
- export type SkirConfig = z.infer<typeof SkirConfig>;
18
- //# sourceMappingURL=config.d.ts.map
package/dist/config.js DELETED
@@ -1,19 +0,0 @@
1
- import { z } from "zod";
2
- export const GeneratorConfig = z.strictObject({
3
- mod: z.string(),
4
- outDir: z.union([
5
- z.string().endsWith("/skirout"),
6
- z.array(z.string().endsWith("/skirout")),
7
- ]),
8
- config: z.any(),
9
- });
10
- const PackageId = z.string().regex(/^@[A-Za-z0-9-]+\/[A-Za-z0-9\-_.]+$/);
11
- const Version = z.string().regex(/^[A-Za-z0-9\-_./+]+$/);
12
- export const SkirConfig = z
13
- .object({
14
- generators: z.array(GeneratorConfig).default([]),
15
- dependencies: z.record(PackageId, Version).default({}),
16
- githubTokenEnvVar: z.string().default(""),
17
- })
18
- .strict();
19
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,CAAC;IAC5C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;QACd,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC/B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KACzC,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE;CAChB,CAAC,CAAC;AAIH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACzE,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -1,34 +0,0 @@
1
- import { CodeGenerator } from "skir-internal";
2
- import { SkirConfig } from "./config.js";
3
- export interface SkirConfigResult {
4
- /** Defined if and only if `errors` is empty. */
5
- skirConfig: SkirConfig | undefined;
6
- errors: readonly SkirConfigError[];
7
- /**
8
- * If true, the user may have forgotten to edit skir.yml after running
9
- * `npx skir init`.
10
- */
11
- maybeForgotToEditAfterInit?: boolean;
12
- }
13
- export interface SkirConfigError {
14
- message: string;
15
- range?: SkirConfigErrorRange;
16
- }
17
- export interface SkirConfigErrorRange {
18
- start: SkirConfigErrorPos;
19
- end: SkirConfigErrorPos;
20
- }
21
- export interface SkirConfigErrorPos {
22
- /** 0-based */
23
- offset: number;
24
- /** 1-based */
25
- lineNumber: number;
26
- /** 1-based */
27
- colNumber: number;
28
- }
29
- /** Synchronous version - doesn't import any module. */
30
- export declare function parseSkirConfig(yamlCode: string): SkirConfigResult;
31
- /** Async version - dynamically imports generator modules. */
32
- export declare function parseSkirConfigWithDynamicImports(yamlCode: string): Promise<SkirConfigResult>;
33
- export declare function importCodeGenerator(mod: string): Promise<CodeGenerator<unknown>>;
34
- //# sourceMappingURL=config_parser.d.ts.map