skir 0.0.5 → 0.0.7

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 (76) hide show
  1. package/dist/casing.test.js +1 -1
  2. package/dist/casing.test.js.map +1 -1
  3. package/dist/command_line_parser.d.ts.map +1 -1
  4. package/dist/command_line_parser.js +76 -36
  5. package/dist/command_line_parser.js.map +1 -1
  6. package/dist/command_line_parser.test.js +119 -31
  7. package/dist/command_line_parser.test.js.map +1 -1
  8. package/dist/compiler.js +59 -84
  9. package/dist/compiler.js.map +1 -1
  10. package/dist/config.d.ts +2 -2
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +6 -13
  13. package/dist/config.js.map +1 -1
  14. package/dist/config_parser.d.ts +31 -0
  15. package/dist/config_parser.d.ts.map +1 -0
  16. package/dist/config_parser.js +146 -0
  17. package/dist/config_parser.js.map +1 -0
  18. package/dist/config_parser.test.d.ts +2 -0
  19. package/dist/config_parser.test.d.ts.map +1 -0
  20. package/dist/config_parser.test.js +419 -0
  21. package/dist/config_parser.test.js.map +1 -0
  22. package/dist/doc_comment_parser.d.ts +3 -2
  23. package/dist/doc_comment_parser.d.ts.map +1 -1
  24. package/dist/doc_comment_parser.js +56 -49
  25. package/dist/doc_comment_parser.js.map +1 -1
  26. package/dist/doc_comment_parser.test.js +86 -154
  27. package/dist/doc_comment_parser.test.js.map +1 -1
  28. package/dist/error_renderer.d.ts +5 -0
  29. package/dist/error_renderer.d.ts.map +1 -1
  30. package/dist/error_renderer.js +27 -3
  31. package/dist/error_renderer.js.map +1 -1
  32. package/dist/exit_error.d.ts +8 -0
  33. package/dist/exit_error.d.ts.map +1 -0
  34. package/dist/exit_error.js +8 -0
  35. package/dist/exit_error.js.map +1 -0
  36. package/dist/io.d.ts +2 -0
  37. package/dist/io.d.ts.map +1 -1
  38. package/dist/io.js +22 -3
  39. package/dist/io.js.map +1 -1
  40. package/dist/module_collector.d.ts.map +1 -1
  41. package/dist/module_collector.js +12 -7
  42. package/dist/module_collector.js.map +1 -1
  43. package/dist/module_set.d.ts.map +1 -1
  44. package/dist/module_set.js +33 -16
  45. package/dist/module_set.js.map +1 -1
  46. package/dist/module_set.test.js +318 -173
  47. package/dist/module_set.test.js.map +1 -1
  48. package/dist/parser.d.ts.map +1 -1
  49. package/dist/parser.js +16 -16
  50. package/dist/parser.js.map +1 -1
  51. package/dist/project_initializer.d.ts.map +1 -1
  52. package/dist/project_initializer.js +97 -15
  53. package/dist/project_initializer.js.map +1 -1
  54. package/dist/tokenizer.d.ts +7 -1
  55. package/dist/tokenizer.d.ts.map +1 -1
  56. package/dist/tokenizer.js +12 -0
  57. package/dist/tokenizer.js.map +1 -1
  58. package/package.json +14 -9
  59. package/src/command_line_parser.ts +95 -40
  60. package/src/compiler.ts +74 -86
  61. package/src/config.ts +8 -15
  62. package/src/config_parser.ts +198 -0
  63. package/src/doc_comment_parser.ts +65 -49
  64. package/src/error_renderer.ts +45 -3
  65. package/src/exit_error.ts +6 -0
  66. package/src/io.ts +22 -3
  67. package/src/module_collector.ts +21 -7
  68. package/src/module_set.ts +35 -19
  69. package/src/parser.ts +22 -16
  70. package/src/project_initializer.ts +97 -15
  71. package/src/tokenizer.ts +20 -2
  72. package/dist/language_server.d.ts +0 -15
  73. package/dist/language_server.d.ts.map +0 -1
  74. package/dist/language_server.js +0 -248
  75. package/dist/language_server.js.map +0 -1
  76. package/src/language_server.ts +0 -301
package/dist/compiler.js CHANGED
@@ -1,48 +1,31 @@
1
1
  #!/usr/bin/env node
2
- import * as fs from "fs/promises";
2
+ import * as FileSystem from "fs/promises";
3
3
  import { glob } from "glob";
4
- import * as paths from "path";
4
+ import * as Paths from "path";
5
5
  import Watcher from "watcher";
6
- import * as yaml from "yaml";
7
- import { fromZodError } from "zod-validation-error";
8
6
  import { parseCommandLine } from "./command_line_parser.js";
9
- import { SkirConfig } from "./config.js";
10
- import { makeGray, makeGreen, makeRed, renderErrors, } from "./error_renderer.js";
7
+ import { importCodeGenerator, parseSkirConfig } from "./config_parser.js";
8
+ import { makeGray, makeGreen, makeRed, renderErrors, renderSkirConfigErrors, } from "./error_renderer.js";
9
+ import { ExitError } from "./exit_error.js";
11
10
  import { formatModule } from "./formatter.js";
12
- import { REAL_FILE_SYSTEM } from "./io.js";
11
+ import { isDirectory, REAL_FILE_SYSTEM, rewritePathForRendering, } from "./io.js";
13
12
  import { collectModules } from "./module_collector.js";
14
13
  import { initializeProject } from "./project_initializer.js";
15
14
  import { takeSnapshot, viewSnapshot } from "./snapshotter.js";
16
15
  import { tokenizeModule } from "./tokenizer.js";
17
16
  async function makeGeneratorBundle(config, root) {
18
- const mod = await import(config.mod);
19
- const generator = mod.GENERATOR;
20
- if (typeof generator !== "object") {
21
- throw new Error(`Cannot import GENERATOR from module ${config.mod}`);
22
- }
23
- // Validate the generator config.
24
- const parsedConfig = generator.configType.safeParse(config.config);
25
- if (!parsedConfig.success) {
26
- const { id } = generator;
27
- console.error(makeRed(`Invalid config for ${id} generator`));
28
- const validationError = fromZodError(parsedConfig.error);
29
- console.error(validationError.toString());
30
- process.exit(1);
31
- }
17
+ const generator = await importCodeGenerator(config.mod);
32
18
  let skiroutDirs;
33
- if (config.skiroutDir === undefined) {
34
- skiroutDirs = ["skirout"];
35
- }
36
- else if (typeof config.skiroutDir === "string") {
37
- skiroutDirs = [config.skiroutDir];
19
+ if (typeof config.outDir === "string") {
20
+ skiroutDirs = [config.outDir];
38
21
  }
39
22
  else {
40
- skiroutDirs = config.skiroutDir;
23
+ skiroutDirs = config.outDir;
41
24
  }
42
- skiroutDirs = skiroutDirs.map((d) => paths.join(root, d));
25
+ skiroutDirs = skiroutDirs.map((d) => Paths.join(root, d));
43
26
  return {
44
- generator,
45
- config: parsedConfig.data,
27
+ generator: generator,
28
+ config: config.config,
46
29
  skiroutDirs: skiroutDirs,
47
30
  };
48
31
  }
@@ -123,7 +106,7 @@ class WatchModeMainLoop {
123
106
  const successMessage = `Generation succeeded at ${date}`;
124
107
  console.log(makeGreen(successMessage));
125
108
  console.log("\nWaiting for changes in files matching:");
126
- const glob = paths.resolve(paths.join(this.srcDir, "/**/*.skir"));
109
+ const glob = Paths.resolve(Paths.join(this.srcDir, "/**/*.skir"));
127
110
  console.log(` ${glob}`);
128
111
  }
129
112
  return true;
@@ -140,9 +123,9 @@ class WatchModeMainLoop {
140
123
  const { skiroutDirs } = this;
141
124
  const preExistingAbsolutePaths = new Set();
142
125
  for (const skiroutDir of skiroutDirs) {
143
- await fs.mkdir(skiroutDir, { recursive: true });
126
+ await FileSystem.mkdir(skiroutDir, { recursive: true });
144
127
  // Collect all the files in all the skirout dirs.
145
- (await glob(paths.join(skiroutDir, "**/*"), { withFileTypes: true })).forEach((p) => preExistingAbsolutePaths.add(p.fullpath()));
128
+ (await glob(Paths.join(skiroutDir, "**/*"), { withFileTypes: true })).forEach((p) => preExistingAbsolutePaths.add(p.fullpath()));
146
129
  }
147
130
  const pathToFile = new Map();
148
131
  const pathToGenerator = new Map();
@@ -155,15 +138,15 @@ class WatchModeMainLoop {
155
138
  for (const file of files) {
156
139
  const { path } = file;
157
140
  if (pathToFile.has(path)) {
158
- throw new Error(`Multiple generators produce ${path}`);
141
+ throw new ExitError("Multiple generators produce " + rewritePathForRendering(path));
159
142
  }
160
143
  pathToFile.set(path, file);
161
144
  pathToGenerator.set(path, generator);
162
145
  for (const skiroutDir of generator.skiroutDirs) {
163
146
  // Remove this path and all its parents from the set of paths to remove
164
147
  // at the end of the generation.
165
- for (let pathToKeep = path; pathToKeep !== "."; pathToKeep = paths.dirname(pathToKeep)) {
166
- preExistingAbsolutePaths.delete(paths.resolve(paths.join(skiroutDir, pathToKeep)));
148
+ for (let pathToKeep = path; pathToKeep !== "."; pathToKeep = Paths.dirname(pathToKeep)) {
149
+ preExistingAbsolutePaths.delete(Paths.resolve(Paths.join(skiroutDir, pathToKeep)));
167
150
  }
168
151
  }
169
152
  }
@@ -174,16 +157,16 @@ class WatchModeMainLoop {
174
157
  const oldFile = lastWriteBatch.pathToFile.get(p);
175
158
  const generator = pathToGenerator.get(p);
176
159
  for (const skiroutDir of generator.skiroutDirs) {
177
- const fsPath = paths.join(skiroutDir, p);
160
+ const fsPath = Paths.join(skiroutDir, p);
178
161
  if (oldFile?.code === newFile.code) {
179
- const mtime = (await fs.stat(fsPath)).mtime;
162
+ const mtime = (await FileSystem.stat(fsPath)).mtime;
180
163
  if (mtime !== null &&
181
164
  mtime.getDate() <= lastWriteBatch.writeTime.getDate()) {
182
165
  return;
183
166
  }
184
167
  }
185
- await fs.mkdir(paths.dirname(fsPath), { recursive: true });
186
- await fs.writeFile(fsPath, newFile.code, "utf-8");
168
+ await FileSystem.mkdir(Paths.dirname(fsPath), { recursive: true });
169
+ await FileSystem.writeFile(fsPath, newFile.code, "utf-8");
187
170
  }
188
171
  }));
189
172
  // Remove all the pre-existing paths which haven't been overridden.
@@ -191,9 +174,9 @@ class WatchModeMainLoop {
191
174
  .sort((a, b) => b.localeCompare(a, "en-US"))
192
175
  .map(async (p) => {
193
176
  try {
194
- await fs.rm(p, { force: true, recursive: true });
177
+ await FileSystem.rm(p, { force: true, recursive: true });
195
178
  }
196
- catch (e) {
179
+ catch (_e) {
197
180
  // Ignore error.
198
181
  }
199
182
  }));
@@ -203,28 +186,20 @@ class WatchModeMainLoop {
203
186
  };
204
187
  }
205
188
  }
206
- async function isDirectory(path) {
207
- try {
208
- return (await fs.lstat(path)).isDirectory();
209
- }
210
- catch (e) {
211
- return false;
212
- }
213
- }
214
189
  function checkNoOverlappingSkiroutDirs(skiroutDirs) {
215
190
  for (let i = 0; i < skiroutDirs.length; ++i) {
216
191
  for (let j = i + 1; j < skiroutDirs.length; ++j) {
217
- const dirA = paths.normalize(skiroutDirs[i]);
218
- const dirB = paths.normalize(skiroutDirs[j]);
219
- if (dirA.startsWith(dirB + paths.sep) ||
220
- dirB.startsWith(dirA + paths.sep)) {
221
- throw new Error(`Overlapping skirout directories: ${dirA} and ${dirB}`);
192
+ const dirA = Paths.normalize(skiroutDirs[i]);
193
+ const dirB = Paths.normalize(skiroutDirs[j]);
194
+ if (dirA.startsWith(dirB + Paths.sep) ||
195
+ dirB.startsWith(dirA + Paths.sep)) {
196
+ throw new ExitError(`Overlapping skirout directories: ${dirA} and ${dirB}`);
222
197
  }
223
198
  }
224
199
  }
225
200
  }
226
201
  async function format(root, mode) {
227
- const skirFiles = await glob(paths.join(root, "**/*.skir"), {
202
+ const skirFiles = await glob(Paths.join(root, "**/*.skir"), {
228
203
  withFileTypes: true,
229
204
  });
230
205
  const pathToFormatResult = new Map();
@@ -234,7 +209,7 @@ async function format(root, mode) {
234
209
  }
235
210
  const unformattedCode = REAL_FILE_SYSTEM.readTextFile(skirFile.fullpath());
236
211
  if (unformattedCode === undefined) {
237
- throw new Error(`Cannot read ${skirFile.fullpath()}`);
212
+ throw new ExitError("Cannot read " + rewritePathForRendering(skirFile.fullpath()));
238
213
  }
239
214
  const tokens = tokenizeModule(unformattedCode, "");
240
215
  if (tokens.errors.length) {
@@ -249,7 +224,7 @@ async function format(root, mode) {
249
224
  }
250
225
  let numFilesNotFormatted = 0;
251
226
  for (const [path, result] of pathToFormatResult) {
252
- const relativePath = paths.relative(root, path).replace(/\\/g, "/");
227
+ const relativePath = Paths.relative(root, path).replace(/\\/g, "/");
253
228
  if (mode === "fix") {
254
229
  if (result.alreadyFormatted) {
255
230
  console.log(`${makeGray(relativePath)} (unchanged)`);
@@ -293,29 +268,24 @@ async function main() {
293
268
  return;
294
269
  }
295
270
  }
296
- // Use an absolute path to make error messages more helpful.
297
- const skirConfigPath = paths.resolve(paths.join(root, "skir.yml"));
298
- const skirConfigContents = REAL_FILE_SYSTEM.readTextFile(skirConfigPath);
299
- if (skirConfigContents === undefined) {
271
+ const skirConfigPath = rewritePathForRendering(Paths.join(root, "skir.yml"));
272
+ const skirConfigCode = REAL_FILE_SYSTEM.readTextFile(skirConfigPath);
273
+ if (skirConfigCode === undefined) {
300
274
  console.error(makeRed(`Cannot find ${skirConfigPath}`));
301
275
  process.exit(1);
302
276
  }
303
- let skirConfig;
304
- {
305
- // `yaml.parse` fail with a helpful error message, no need to add context.
306
- const parseResult = SkirConfig.safeParse(yaml.parse(skirConfigContents));
307
- if (parseResult.success) {
308
- skirConfig = parseResult.data;
309
- }
310
- else {
311
- console.error(makeRed("Invalid skir config"));
312
- console.error(` Path: ${skirConfigPath}`);
313
- const validationError = fromZodError(parseResult.error);
314
- console.error(validationError.toString());
315
- process.exit(1);
316
- }
277
+ const skirConfigResult = await parseSkirConfig(skirConfigCode, "import-mods");
278
+ if (skirConfigResult.errors.length > 0) {
279
+ console.error(makeRed("Invalid skir config"));
280
+ const { maybeForgotToEditAfterInit } = skirConfigResult;
281
+ renderSkirConfigErrors(skirConfigResult.errors, {
282
+ skirConfigPath,
283
+ maybeForgotToEditAfterInit,
284
+ });
285
+ process.exit(1);
317
286
  }
318
- const srcDir = paths.join(root, skirConfig.srcDir || ".");
287
+ const skirConfig = skirConfigResult.skirConfig;
288
+ const srcDir = Paths.join(root, skirConfig.srcDir || ".");
319
289
  switch (args.kind) {
320
290
  case "format": {
321
291
  // Check or fix the formatting to the .skir files in the source directory.
@@ -325,12 +295,6 @@ async function main() {
325
295
  case "gen": {
326
296
  // Run the skir code generators in watch mode or once.
327
297
  const generatorBundles = await Promise.all(skirConfig.generators.map((config) => makeGeneratorBundle(config, root)));
328
- // Sort for consistency.
329
- generatorBundles.sort((a, b) => {
330
- const aId = a.generator.id;
331
- const bId = b.generator.id;
332
- return aId.localeCompare(bId, "en-US");
333
- });
334
298
  // Look for duplicates.
335
299
  for (let i = 0; i < generatorBundles.length - 1; ++i) {
336
300
  const { id } = generatorBundles[i].generator;
@@ -371,5 +335,16 @@ async function main() {
371
335
  }
372
336
  }
373
337
  }
374
- main();
338
+ try {
339
+ await main();
340
+ }
341
+ catch (e) {
342
+ if (e instanceof Error) {
343
+ console.error(makeRed(e.message));
344
+ if (e instanceof ExitError) {
345
+ process.exit(1);
346
+ }
347
+ }
348
+ throw e;
349
+ }
375
350
  //# sourceMappingURL=compiler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { z } from "zod";
2
2
  export declare const GeneratorConfig: z.ZodObject<{
3
3
  mod: z.ZodString;
4
+ outDir: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
4
5
  config: z.ZodAny;
5
- skiroutDir: z.ZodOptional<z.ZodUnion<readonly [z.ZodOptional<z.ZodString>, z.ZodArray<z.ZodString>]>>;
6
6
  }, z.core.$strict>;
7
7
  export type GeneratorConfig = z.infer<typeof GeneratorConfig>;
8
8
  export declare const SkirConfig: z.ZodObject<{
9
9
  generators: z.ZodArray<z.ZodObject<{
10
10
  mod: z.ZodString;
11
+ outDir: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
11
12
  config: z.ZodAny;
12
- skiroutDir: z.ZodOptional<z.ZodUnion<readonly [z.ZodOptional<z.ZodString>, z.ZodArray<z.ZodString>]>>;
13
13
  }, z.core.$strict>>;
14
14
  srcDir: z.ZodOptional<z.ZodString>;
15
15
  }, z.core.$strict>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;kBAcjB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,UAAU;;;;;;;kBAKZ,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;kBAO1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,UAAU;;;;;;;kBAKZ,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
package/dist/config.js CHANGED
@@ -1,19 +1,12 @@
1
1
  import { z } from "zod";
2
- export const GeneratorConfig = z
3
- .object({
2
+ export const GeneratorConfig = z.strictObject({
4
3
  mod: z.string(),
4
+ outDir: z.union([
5
+ z.string().endsWith("/skirout"),
6
+ z.array(z.string().endsWith("/skirout")),
7
+ ]),
5
8
  config: z.any(),
6
- skiroutDir: z
7
- .union([
8
- z
9
- .string()
10
- .regex(/^.*\/skirout$/)
11
- .optional(),
12
- z.array(z.string().regex(/^.*\/skirout$/)),
13
- ])
14
- .optional(),
15
- })
16
- .strict();
9
+ });
17
10
  export const SkirConfig = z
18
11
  .object({
19
12
  generators: z.array(GeneratorConfig),
@@ -1 +1 @@
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;KAC7B,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE;IACf,UAAU,EAAE,CAAC;SACV,KAAK,CAAC;QACL,CAAC;aACE,MAAM,EAAE;aACR,KAAK,CAAC,eAAe,CAAC;aACtB,QAAQ,EAAE;QACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;KAC3C,CAAC;SACD,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC"}
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,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC"}
@@ -0,0 +1,31 @@
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
+ /** 2-based */
27
+ colNumber: number;
28
+ }
29
+ export declare function parseSkirConfig(yamlCode: string, importMods?: "import-mods"): Promise<SkirConfigResult>;
30
+ export declare function importCodeGenerator(mod: string): Promise<CodeGenerator<unknown>>;
31
+ //# sourceMappingURL=config_parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config_parser.d.ts","sourceRoot":"","sources":["../src/config_parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAM9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,GAAG,EAAE,kBAAkB,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,aAAa,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA+I3B;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAOjC"}
@@ -0,0 +1,146 @@
1
+ import * as CcGen from "skir-cc-gen";
2
+ import * as DartGen from "skir-dart-gen";
3
+ import * as JavaGen from "skir-java-gen";
4
+ import * as KotlinGen from "skir-kotlin-gen";
5
+ import * as PythonGen from "skir-python-gen";
6
+ import * as TypescriptGen from "skir-typescript-gen";
7
+ import { LineCounter, parseDocument } from "yaml";
8
+ import { SkirConfig } from "./config.js";
9
+ export async function parseSkirConfig(yamlCode, importMods) {
10
+ const errors = [];
11
+ // 1. Parse YAML into a Document object
12
+ const lineCounter = new LineCounter();
13
+ const doc = parseDocument(yamlCode, { lineCounter });
14
+ const offsetToPos = (offset) => {
15
+ const pos = lineCounter.linePos(offset);
16
+ return {
17
+ offset: offset,
18
+ lineNumber: pos.line,
19
+ colNumber: pos.col,
20
+ };
21
+ };
22
+ const offsetRangeToRange = (start, end) => ({
23
+ start: offsetToPos(start),
24
+ end: offsetToPos(end),
25
+ });
26
+ const pathToRange = (path) => {
27
+ const node = doc.getIn(path, true);
28
+ if (!node || !node.range) {
29
+ return undefined;
30
+ }
31
+ return offsetRangeToRange(node.range[0], node.range[1]);
32
+ };
33
+ const pushErrorAtPath = (path, message) => {
34
+ const pathRemainder = [];
35
+ while (path.length !== 0) {
36
+ const range = pathToRange(path);
37
+ if (range) {
38
+ break;
39
+ }
40
+ else {
41
+ // It's possible that 'path' does not map to a node if 'path' refers to
42
+ // a property which is missing. In that case, we pop the last element
43
+ // of 'path' and try again, until we find a node that exists. The
44
+ // elements which were popped will be included in the error message.
45
+ pathRemainder.push(path.at(-1));
46
+ path = path.slice(0, -1);
47
+ }
48
+ }
49
+ pathRemainder.reverse();
50
+ const messagePrefix = pathRemainder.length
51
+ ? `Missing property '${pathRemainder.join(".")}': `
52
+ : "";
53
+ const range = pathToRange(path);
54
+ errors.push({
55
+ message: messagePrefix + message,
56
+ range: range,
57
+ });
58
+ };
59
+ // Check for YAML parsing errors
60
+ if (doc.errors.length > 0) {
61
+ for (const error of doc.errors) {
62
+ const range = offsetRangeToRange(error.pos[0], error.pos[1]);
63
+ errors.push({
64
+ message: error.message,
65
+ range: range,
66
+ });
67
+ }
68
+ return {
69
+ skirConfig: undefined,
70
+ errors: errors,
71
+ };
72
+ }
73
+ // 2. Validate with Zod schema
74
+ const jsData = doc.toJS();
75
+ const result = SkirConfig.safeParse(jsData);
76
+ if (!result.success) {
77
+ for (const issue of result.error.issues) {
78
+ pushErrorAtPath(issue.path, issue.message);
79
+ }
80
+ const maybeForgotToEditAfterInit = jsData && typeof jsData === "object" && jsData.generators === null;
81
+ return {
82
+ skirConfig: undefined,
83
+ errors: errors,
84
+ maybeForgotToEditAfterInit,
85
+ };
86
+ }
87
+ // 3. Validate each generator's config with Zod schema
88
+ for (let i = 0; i < result.data.generators.length; i++) {
89
+ const generatorConfig = result.data.generators[i];
90
+ const { mod } = generatorConfig;
91
+ let generator;
92
+ if (importMods) {
93
+ try {
94
+ generator = await importCodeGenerator(mod);
95
+ }
96
+ catch (e) {
97
+ if (e instanceof Error) {
98
+ pushErrorAtPath(["generators", i, "mod"], e.message);
99
+ continue;
100
+ }
101
+ else {
102
+ throw e;
103
+ }
104
+ }
105
+ }
106
+ else {
107
+ // TODO: rm the casts
108
+ const modToGenerator = {
109
+ "skir-cc-gen": CcGen.GENERATOR,
110
+ "skir-dart-gen": DartGen.GENERATOR,
111
+ "skir-java-gen": JavaGen.GENERATOR,
112
+ "skir-kotlin-gen": KotlinGen.GENERATOR,
113
+ "skir-python-gen": PythonGen.GENERATOR,
114
+ "skir-typescript-gen": TypescriptGen.GENERATOR,
115
+ };
116
+ generator = modToGenerator[mod];
117
+ }
118
+ if (generator) {
119
+ const parsedGeneratorConfig = generator.configType.safeParse(generatorConfig.config);
120
+ if (!parsedGeneratorConfig.success) {
121
+ for (const issue of parsedGeneratorConfig.error.issues) {
122
+ const path = [
123
+ "generators",
124
+ i,
125
+ "config",
126
+ ...issue.path,
127
+ ];
128
+ pushErrorAtPath(path, issue.message ?? "Error");
129
+ }
130
+ }
131
+ }
132
+ }
133
+ if (errors.length > 0) {
134
+ return { skirConfig: undefined, errors: errors };
135
+ }
136
+ return { skirConfig: result.data, errors: [] };
137
+ }
138
+ export async function importCodeGenerator(mod) {
139
+ const module = await import(mod);
140
+ const generator = module.GENERATOR;
141
+ if (typeof generator !== "object") {
142
+ throw new Error(`Cannot import GENERATOR from module ${mod}`);
143
+ }
144
+ return generator;
145
+ }
146
+ //# sourceMappingURL=config_parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config_parser.js","sourceRoot":"","sources":["../src/config_parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config_parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config_parser.test.d.ts","sourceRoot":"","sources":["../src/config_parser.test.ts"],"names":[],"mappings":""}