@lionweb/cli 0.9.0-beta.0 → 0.9.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +20 -5
  2. package/dist/fs-utils.d.ts +3 -0
  3. package/dist/fs-utils.d.ts.map +1 -0
  4. package/dist/fs-utils.js +18 -0
  5. package/dist/fs-utils.js.map +1 -0
  6. package/dist/infer-languages-command.js +2 -2
  7. package/dist/infer-languages-command.js.map +1 -1
  8. package/dist/lionweb-cli.js +20 -6
  9. package/dist/lionweb-cli.js.map +1 -1
  10. package/dist/m2/diagram-command.d.ts.map +1 -0
  11. package/dist/m2/diagram-command.js +21 -0
  12. package/dist/m2/diagram-command.js.map +1 -0
  13. package/dist/m2/generate-class-core-types-command.d.ts +4 -0
  14. package/dist/m2/generate-class-core-types-command.d.ts.map +1 -0
  15. package/dist/m2/generate-class-core-types-command.js +62 -0
  16. package/dist/m2/generate-class-core-types-command.js.map +1 -0
  17. package/dist/m2/generate-ts-types-command.d.ts.map +1 -0
  18. package/dist/m2/generate-ts-types-command.js +41 -0
  19. package/dist/m2/generate-ts-types-command.js.map +1 -0
  20. package/package.json +7 -6
  21. package/src/fs-utils.ts +19 -0
  22. package/src/infer-languages-command.ts +3 -2
  23. package/src/lionweb-cli.ts +22 -6
  24. package/src/m2/diagram-command.ts +25 -0
  25. package/src/m2/generate-class-core-types-command.ts +76 -0
  26. package/src/m2/generate-ts-types-command.ts +56 -0
  27. package/dist/m3/diagram-command.d.ts.map +0 -1
  28. package/dist/m3/diagram-command.js +0 -22
  29. package/dist/m3/diagram-command.js.map +0 -1
  30. package/dist/m3/generate-ts-types-command.d.ts.map +0 -1
  31. package/dist/m3/generate-ts-types-command.js +0 -42
  32. package/dist/m3/generate-ts-types-command.js.map +0 -1
  33. package/src/m3/diagram-command.ts +0 -21
  34. package/src/m3/generate-ts-types-command.ts +0 -48
  35. /package/dist/{m3 → m2}/diagram-command.d.ts +0 -0
  36. /package/dist/{m3 → m2}/generate-ts-types-command.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.0 — not yet released
4
+
5
+ * Add a command `generate-class-core-types` to invoke the `@lionweb/class-core-generator`.
6
+
7
+
8
+ ## 0.8.0
9
+
10
+ (No changes)
11
+
12
+
13
+ ## 0.7.2
14
+
15
+ (No changes)
16
+
17
+
3
18
  ## 0.7.1
4
19
 
5
20
  (The 0.7.0 release was deprecated because its `validation` package was faulty.)
@@ -16,7 +31,7 @@ Changes in this version:
16
31
 
17
32
  Dependencies: `@lionweb/core` and `@lionweb/utilities` version 0.6.12
18
33
 
19
- (no changes)
34
+ (No changes)
20
35
 
21
36
 
22
37
  ## 0.6.12
@@ -30,7 +45,7 @@ Dependencies: `@lionweb/core` and `@lionweb/utilities` version 0.6.11
30
45
 
31
46
  Dependencies: `@lionweb/core` and `@lionweb/utilities` version 0.6.10
32
47
 
33
- (no changes)
48
+ (No changes)
34
49
 
35
50
 
36
51
  ## 0.6.10
@@ -44,21 +59,21 @@ Dependencies: `@lionweb/core` and `@lionweb/utilities` version 0.6.9
44
59
 
45
60
  Dependencies: `@lionweb/core` and `@lionweb/utilities` version 0.6.8
46
61
 
47
- (no changes)
62
+ (No changes)
48
63
 
49
64
 
50
65
  ## 0.6.8
51
66
 
52
67
  Dependencies: `@lionweb/core` and `@lionweb/utilities` version 0.6.7
53
68
 
54
- (no changes)
69
+ (No changes)
55
70
 
56
71
 
57
72
  ## 0.6.7
58
73
 
59
74
  Dependencies: `@lionweb/core` and `@lionweb/utilities` version 0.6.6
60
75
 
61
- (no changes)
76
+ (No changes)
62
77
 
63
78
 
64
79
  ## 0.6.6
@@ -0,0 +1,3 @@
1
+ export declare const tryReadFileAsText: (path: string) => Promise<string | undefined>;
2
+ export declare const ensurePathSync: (path: string) => void;
3
+ //# sourceMappingURL=fs-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-utils.d.ts","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAQhF,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,SAI1C,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { readFile } from "fs/promises";
2
+ import { existsSync, mkdirSync, statSync } from "fs";
3
+ export const tryReadFileAsText = async (path) => {
4
+ try {
5
+ return (await readFile(path)).toString();
6
+ }
7
+ catch (e) {
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ console.error(`"${path}" does not point to a readable file: ${e.message}`);
10
+ return undefined;
11
+ }
12
+ };
13
+ export const ensurePathSync = (path) => {
14
+ if (!(existsSync(path) && statSync(path).isDirectory())) {
15
+ mkdirSync(path);
16
+ }
17
+ };
18
+ //# sourceMappingURL=fs-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-utils.js","sourceRoot":"","sources":["../src/fs-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;AAEpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAY,EAA+B,EAAE;IACjF,IAAI,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC5C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,8DAA8D;QAC9D,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,wCAAyC,CAAS,CAAC,OAAO,EAAE,CAAC,CAAA;QACnF,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE;IAC3C,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC;AACL,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { serializeLanguages } from "@lionweb/core";
2
2
  import { asPrettyJsonString } from "@lionweb/ts-utils";
3
3
  import { inferLanguagesFromSerializationChunk, readSerializationChunk } from "@lionweb/utilities";
4
- import { writeFileSync } from "fs";
4
+ import { writeFile } from "fs/promises";
5
5
  import path from "path";
6
6
  export const inferLanguages = async (filePath) => {
7
7
  const dirName = path.dirname(filePath);
@@ -9,7 +9,7 @@ export const inferLanguages = async (filePath) => {
9
9
  const languages = inferLanguagesFromSerializationChunk(chunk);
10
10
  for (const language of languages) {
11
11
  const languageFile = path.join(dirName, `${language.name}.language.json`);
12
- writeFileSync(languageFile, asPrettyJsonString(serializeLanguages(language)));
12
+ await writeFile(languageFile, asPrettyJsonString(serializeLanguages(language)));
13
13
  console.log(`Language ${language.name} has been generated: "${languageFile}"`);
14
14
  }
15
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"infer-languages-command.js","sourceRoot":"","sources":["../src/infer-languages-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,oCAAoC,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAClC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAEpD,MAAM,SAAS,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAA;IAC7D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAA;QACzE,aAAa,CAAC,YAAY,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC7E,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,IAAI,yBAAyB,YAAY,GAAG,CAAC,CAAA;IAClF,CAAC;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"infer-languages-command.js","sourceRoot":"","sources":["../src/infer-languages-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,oCAAoC,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAEpD,MAAM,SAAS,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAA;IAC7D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAA;QACzE,MAAM,SAAS,CAAC,YAAY,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC/E,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,IAAI,yBAAyB,YAAY,GAAG,CAAC,CAAA;IAClF,CAAC;AACL,CAAC,CAAA"}
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { argv } from "process";
3
3
  import { inferLanguages } from "./infer-languages-command.js";
4
- import { diagramFromSerializationChunkAt } from "./m3/diagram-command.js";
5
- import { generateTsTypesWith } from "./m3/generate-ts-types-command.js";
4
+ import { diagramFromSerializationChunkAt } from "./m2/diagram-command.js";
5
+ import { generateClassCoreTypes, headerFlag, notVerboseFlag } from "./m2/generate-class-core-types-command.js";
6
+ import { generateTsTypesWith } from "./m2/generate-ts-types-command.js";
6
7
  import { diffSerializationChunks } from "./serialization/diff-command.js";
7
8
  import { executeMeasureCommand } from "./serialization/measure-command.js";
8
9
  import { repairSerializationChunkAt } from "./serialization/repair-command.js";
@@ -19,6 +20,7 @@ const main = async (args) => {
19
20
  const SORT_COMMAND = "sort";
20
21
  const TEXTUALIZE_COMMAND = "textualize";
21
22
  const VALIDATE_COMMAND = "validate";
23
+ const GENERATE_CLASS_CORE_TYPES = "generate-class-core-types";
22
24
  const commands = [
23
25
  DIAGRAM_COMMAND,
24
26
  DIFF_COMMAND,
@@ -28,7 +30,8 @@ const main = async (args) => {
28
30
  REPAIR_COMMAND,
29
31
  SORT_COMMAND,
30
32
  TEXTUALIZE_COMMAND,
31
- VALIDATE_COMMAND
33
+ VALIDATE_COMMAND,
34
+ GENERATE_CLASS_CORE_TYPES
32
35
  ].sort();
33
36
  if (args.length <= 2) {
34
37
  console.log(`lionweb-cli is a LionWeb utility around LionWeb-TypeScript
@@ -123,7 +126,7 @@ textual syntax is used, unless a flag '--asRegular' is provided.
123
126
  break;
124
127
  }
125
128
  case VALIDATE_COMMAND: {
126
- if (commandArgs.length === 0) {
129
+ if (commandArgs.length !== 1) {
127
130
  console.log(`The ${VALIDATE_COMMAND} command validates a serialization chunk.
128
131
  Usage: npx @lionweb/cli ${VALIDATE_COMMAND} <path_to_chunk>`);
129
132
  }
@@ -133,14 +136,25 @@ Usage: npx @lionweb/cli ${VALIDATE_COMMAND} <path_to_chunk>`);
133
136
  break;
134
137
  }
135
138
  case INFER_LANGUAGES_COMMAND: {
136
- if (commandArgs.length === 0) {
137
- console.log(`The ${INFER_LANGUAGES_COMMAND} command infer language(s) from a given serialization chunk. \nUsage: npx @lionweb/cli infer-language <path_to_chunk>`);
139
+ if (commandArgs.length !== 1) {
140
+ console.log(`The ${INFER_LANGUAGES_COMMAND} command infer language(s) from a given serialization chunk.
141
+ Usage: npx @lionweb/cli ${INFER_LANGUAGES_COMMAND} <path_to_chunk>`);
138
142
  }
139
143
  else {
140
144
  await inferLanguages(commandArgs[0]);
141
145
  }
142
146
  return;
143
147
  }
148
+ case GENERATE_CLASS_CORE_TYPES: {
149
+ if (commandArgs.length === 0) {
150
+ console.log(`The ${GENERATE_CLASS_CORE_TYPES} command generates an API that’s based on the @lionweb/class-core from a given serialization chunk containing one or more languages.
151
+ Usage: npx @lionweb/cli ${GENERATE_CLASS_CORE_TYPES} <path_to_chunk> <path_to_generate_to> [--${headerFlag} <path_to_file_with_header_text] [--${notVerboseFlag}]`);
152
+ }
153
+ else {
154
+ await generateClassCoreTypes(commandArgs);
155
+ }
156
+ return;
157
+ }
144
158
  default: {
145
159
  console.error(`command "${command}" is not recognized`);
146
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lionweb-cli.js","sourceRoot":"","sources":["../src/lionweb-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lionweb-cli.js","sourceRoot":"","sources":["../src/lionweb-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-command.d.ts","sourceRoot":"","sources":["../../src/m2/diagram-command.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,+BAA+B,GAAU,MAAM,MAAM,kBAkBjE,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { AggregatingProblemReporter, deserializeLanguagesFrom } from "@lionweb/core";
2
+ import { generateMermaidForLanguage, generatePlantUmlForLanguage, tryReadSerializationChunk } from "@lionweb/utilities";
3
+ import { writeFile } from "fs/promises";
4
+ import { dirname } from "path";
5
+ export const diagramFromSerializationChunkAt = async (path) => {
6
+ const jsonOrError = await tryReadSerializationChunk(path);
7
+ if (jsonOrError instanceof Error) {
8
+ console.error(`"${path}" does not point to a valid JSON serialization of a language: ${jsonOrError.message}`);
9
+ return;
10
+ }
11
+ const dir = dirname(path);
12
+ const problemReporter = new AggregatingProblemReporter();
13
+ const languages = deserializeLanguagesFrom({ serializationChunk: jsonOrError, problemReporter });
14
+ problemReporter.reportAllProblemsOnConsole();
15
+ await Promise.all(languages.flatMap((language) => [
16
+ writeFile(`${dir}/${language.name}.puml`, generatePlantUmlForLanguage(language)),
17
+ writeFile(`${dir}/${language.name}.md`, generateMermaidForLanguage(language))
18
+ ]));
19
+ console.log(`generated diagrams: "${path}" -> "${dir}/"`);
20
+ };
21
+ //# sourceMappingURL=diagram-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagram-command.js","sourceRoot":"","sources":["../../src/m2/diagram-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AACvH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClE,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,CAAA;IACzD,IAAI,WAAW,YAAY,KAAK,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,iEAAiE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7G,OAAM;IACV,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,eAAe,GAAG,IAAI,0BAA0B,EAAE,CAAA;IACxD,MAAM,SAAS,GAAG,wBAAwB,CAAC,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAC,CAAC,CAAA;IAC/F,eAAe,CAAC,0BAA0B,EAAE,CAAA;IAC5C,MAAM,OAAO,CAAC,GAAG,CACb,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC5B,SAAS,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,OAAO,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAChF,SAAS,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC;KAChF,CAAC,CACL,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,SAAS,GAAG,IAAI,CAAC,CAAA;AAC7D,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare const headerFlag = "header";
2
+ export declare const notVerboseFlag = "not-verbose";
3
+ export declare const generateClassCoreTypes: (args: string[]) => Promise<void>;
4
+ //# sourceMappingURL=generate-class-core-types-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-class-core-types-command.d.ts","sourceRoot":"","sources":["../../src/m2/generate-class-core-types-command.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,WAAW,CAAA;AAClC,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAkD3C,eAAO,MAAM,sBAAsB,GAAU,MAAM,MAAM,EAAE,kBAiB1D,CAAA"}
@@ -0,0 +1,62 @@
1
+ import { exit } from "process";
2
+ import { generateApiFromLanguages } from "@lionweb/class-core-generator";
3
+ import { deserializeLanguages } from "@lionweb/core";
4
+ import { readSerializationChunk } from "@lionweb/utilities";
5
+ import { ensurePathSync, tryReadFileAsText } from "../fs-utils.js";
6
+ export const headerFlag = "header";
7
+ export const notVerboseFlag = "not-verbose";
8
+ const parseArgs = (args) => {
9
+ const properArgs = [];
10
+ let nextArgIsHeaderPath = false;
11
+ let notVerbose = false;
12
+ let headerPath;
13
+ let multipleHeaderPathsReported = false;
14
+ args.forEach((arg) => {
15
+ if (arg === `--${headerFlag}`) {
16
+ nextArgIsHeaderPath = true;
17
+ }
18
+ else if (arg === `--${notVerboseFlag}`) {
19
+ notVerbose = true;
20
+ }
21
+ else {
22
+ if (nextArgIsHeaderPath) {
23
+ if (headerPath !== undefined && !multipleHeaderPathsReported) {
24
+ console.error(`Multiple header paths given: taking first, and ignoring the rest.`);
25
+ multipleHeaderPathsReported = true;
26
+ }
27
+ else {
28
+ headerPath = arg;
29
+ nextArgIsHeaderPath = false;
30
+ }
31
+ }
32
+ else {
33
+ properArgs.push(arg);
34
+ }
35
+ }
36
+ });
37
+ if (properArgs.length !== 2) {
38
+ console.error(`Expected 2 arguments <path_to_chunk> and <path_to_generate_in> but got ${properArgs} instead — exiting.`);
39
+ exit(2);
40
+ }
41
+ return {
42
+ chunkPath: properArgs[0],
43
+ genPath: properArgs[1],
44
+ notVerbose,
45
+ headerPath
46
+ };
47
+ };
48
+ export const generateClassCoreTypes = async (args) => {
49
+ const { chunkPath, genPath, headerPath, notVerbose } = parseArgs(args);
50
+ ensurePathSync(genPath);
51
+ const jsonOrError = await readSerializationChunk(chunkPath);
52
+ if (jsonOrError instanceof Error) {
53
+ console.error(`"${chunkPath}" does not point to a valid JSON serialization of a language: ${jsonOrError.message}`);
54
+ return;
55
+ }
56
+ const header = headerPath === undefined
57
+ ? undefined
58
+ : await tryReadFileAsText(headerPath);
59
+ const languages = deserializeLanguages(jsonOrError);
60
+ generateApiFromLanguages(languages, genPath, { header, verbose: !notVerbose });
61
+ };
62
+ //# sourceMappingURL=generate-class-core-types-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-class-core-types-command.js","sourceRoot":"","sources":["../../src/m2/generate-class-core-types-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElE,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAA;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAA;AAS3C,MAAM,SAAS,GAAG,CAAC,IAAc,EAAoC,EAAE;IACnE,MAAM,UAAU,GAAa,EAAE,CAAA;IAE/B,IAAI,mBAAmB,GAAG,KAAK,CAAA;IAC/B,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,UAA8B,CAAA;IAClC,IAAI,2BAA2B,GAAG,KAAK,CAAA;IAEvC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACjB,IAAI,GAAG,KAAK,KAAK,UAAU,EAAE,EAAE,CAAC;YAC5B,mBAAmB,GAAG,IAAI,CAAA;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,KAAK,cAAc,EAAE,EAAE,CAAC;YACvC,UAAU,GAAG,IAAI,CAAA;QACrB,CAAC;aAAM,CAAC;YACJ,IAAI,mBAAmB,EAAE,CAAC;gBACtB,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBAC3D,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;oBAClF,2BAA2B,GAAG,IAAI,CAAA;gBACtC,CAAC;qBAAM,CAAC;oBACJ,UAAU,GAAG,GAAG,CAAA;oBAChB,mBAAmB,GAAG,KAAK,CAAA;gBAC/B,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACxB,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,0EAA0E,UAAU,qBAAqB,CAAC,CAAA;QACxH,IAAI,CAAC,CAAC,CAAC,CAAA;IACX,CAAC;IAED,OAAO;QACH,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QACxB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QACtB,UAAU;QACV,UAAU;KACb,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;IAC3D,MAAM,EAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAEpE,cAAc,CAAC,OAAO,CAAC,CAAA;IAEvB,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAA;IAC3D,IAAI,WAAW,YAAY,KAAK,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,iEAAiE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAA;QAClH,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS;QACnC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAEzC,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAA;IACnD,wBAAwB,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC,CAAA;AAClF,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-ts-types-command.d.ts","sourceRoot":"","sources":["../../src/m2/generate-ts-types-command.ts"],"names":[],"mappings":"AA8CA,eAAO,MAAM,mBAAmB,GAAU,MAAM,MAAM,EAAE,kBASvD,CAAA"}
@@ -0,0 +1,41 @@
1
+ import { extname, join } from "path";
2
+ import { writeFile } from "fs/promises";
3
+ import { AggregatingProblemReporter, deserializeLanguagesFrom } from "@lionweb/core";
4
+ import { GenerationOptions, readSerializationChunk, tryReadSerializationChunk, tsTypeDefsForLanguage } from "@lionweb/utilities";
5
+ import { ensurePathSync } from "../fs-utils.js";
6
+ const generateTsTypesFromSerialization = async (path, generationOptions) => {
7
+ const genPath = path.substring(0, path.length - extname(path).length) + "_gen";
8
+ ensurePathSync(genPath);
9
+ const problemReporter = new AggregatingProblemReporter();
10
+ const jsonOrError = await tryReadSerializationChunk(path);
11
+ if (jsonOrError instanceof Error) {
12
+ console.error(`"${path}" does not point to a valid JSON serialization of a language: ${jsonOrError.message}`);
13
+ return;
14
+ }
15
+ const languages = deserializeLanguagesFrom({ serializationChunk: await readSerializationChunk(path), problemReporter });
16
+ problemReporter.reportAllProblemsOnConsole();
17
+ await Promise.all(languages.map((language) => {
18
+ const fileName = `${language.name}.g.ts`;
19
+ const promise = writeFile(join(genPath, fileName), tsTypeDefsForLanguage(language, ...generationOptions));
20
+ console.log(`generated ${language.name}.g.ts for language "${language.name}"`);
21
+ return promise;
22
+ }));
23
+ console.log(`generated TS types: "${path}" -> "${genPath}"`);
24
+ if (languages.length > 1) {
25
+ const linesIndexTs = [
26
+ languages.map((language) => `export * as ${language.name.replaceAll(".", "_")} from "./${language.name}.g.js"`)
27
+ ];
28
+ await writeFile(join(genPath, "index.g.ts"), linesIndexTs.join(`\n`) + `\n`);
29
+ console.log("generated index.g.ts");
30
+ }
31
+ };
32
+ export const generateTsTypesWith = async (args) => {
33
+ const generationOptions = args
34
+ .filter(arg => arg.startsWith("--"))
35
+ .map(option => option.substring(2).trim())
36
+ .filter(option => option in GenerationOptions)
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ .map(option => GenerationOptions[option]); // e.g. "assumeSealed" -> GenerationOptions.assumeSealed
39
+ args.filter(arg => !arg.startsWith("--")).forEach(path => generateTsTypesFromSerialization(path, generationOptions));
40
+ };
41
+ //# sourceMappingURL=generate-ts-types-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-ts-types-command.js","sourceRoot":"","sources":["../../src/m2/generate-ts-types-command.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionweb/cli",
3
- "version": "0.9.0-beta.0",
3
+ "version": "0.9.0-beta.2",
4
4
  "description": "LionWeb CLI for {Java|Type}Script",
5
5
  "bin": {
6
6
  "lionweb-cli": "./dist/lionweb-cli.js"
@@ -29,10 +29,11 @@
29
29
  "release": "npm publish"
30
30
  },
31
31
  "dependencies": {
32
- "@lionweb/core": "0.9.0-beta.0",
33
- "@lionweb/json-diff": "0.9.0-beta.0",
34
- "@lionweb/ts-utils": "0.9.0-beta.0",
35
- "@lionweb/utilities": "0.9.0-beta.0",
36
- "@lionweb/validation": "0.9.0-beta.0"
32
+ "@lionweb/class-core-generator": "0.9.0-beta.2",
33
+ "@lionweb/core": "0.9.0-beta.2",
34
+ "@lionweb/json-diff": "0.9.0-beta.2",
35
+ "@lionweb/ts-utils": "0.9.0-beta.2",
36
+ "@lionweb/utilities": "0.9.0-beta.2",
37
+ "@lionweb/validation": "0.9.0-beta.2"
37
38
  }
38
39
  }
@@ -0,0 +1,19 @@
1
+ import { readFile } from "fs/promises"
2
+ import { existsSync, mkdirSync, statSync } from "fs"
3
+
4
+ export const tryReadFileAsText = async (path: string): Promise<string | undefined> => {
5
+ try {
6
+ return (await readFile(path)).toString()
7
+ } catch (e) {
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ console.error(`"${path}" does not point to a readable file: ${(e as any).message}`)
10
+ return undefined
11
+ }
12
+ }
13
+
14
+ export const ensurePathSync = (path: string) => {
15
+ if (!(existsSync(path) && statSync(path).isDirectory())) {
16
+ mkdirSync(path)
17
+ }
18
+ }
19
+
@@ -1,7 +1,7 @@
1
1
  import { serializeLanguages } from "@lionweb/core"
2
2
  import { asPrettyJsonString } from "@lionweb/ts-utils"
3
3
  import { inferLanguagesFromSerializationChunk, readSerializationChunk } from "@lionweb/utilities"
4
- import { writeFileSync } from "fs"
4
+ import { writeFile } from "fs/promises"
5
5
  import path from "path"
6
6
 
7
7
  export const inferLanguages = async (filePath: string) => {
@@ -11,7 +11,8 @@ export const inferLanguages = async (filePath: string) => {
11
11
  const languages = inferLanguagesFromSerializationChunk(chunk)
12
12
  for (const language of languages) {
13
13
  const languageFile = path.join(dirName, `${language.name}.language.json`)
14
- writeFileSync(languageFile, asPrettyJsonString(serializeLanguages(language)))
14
+ await writeFile(languageFile, asPrettyJsonString(serializeLanguages(language)))
15
15
  console.log(`Language ${language.name} has been generated: "${languageFile}"`)
16
16
  }
17
17
  }
18
+
@@ -4,8 +4,9 @@
4
4
  import { argv } from "process"
5
5
  import { inferLanguages } from "./infer-languages-command.js"
6
6
 
7
- import { diagramFromSerializationChunkAt } from "./m3/diagram-command.js"
8
- import { generateTsTypesWith } from "./m3/generate-ts-types-command.js"
7
+ import { diagramFromSerializationChunkAt } from "./m2/diagram-command.js"
8
+ import { generateClassCoreTypes, headerFlag, notVerboseFlag } from "./m2/generate-class-core-types-command.js"
9
+ import { generateTsTypesWith } from "./m2/generate-ts-types-command.js"
9
10
  import { diffSerializationChunks } from "./serialization/diff-command.js"
10
11
  import { executeMeasureCommand } from "./serialization/measure-command.js"
11
12
  import { repairSerializationChunkAt } from "./serialization/repair-command.js"
@@ -23,6 +24,7 @@ const main = async (args: string[]) => {
23
24
  const SORT_COMMAND = "sort"
24
25
  const TEXTUALIZE_COMMAND = "textualize"
25
26
  const VALIDATE_COMMAND = "validate"
27
+ const GENERATE_CLASS_CORE_TYPES = "generate-class-core-types"
26
28
 
27
29
  const commands = [
28
30
  DIAGRAM_COMMAND,
@@ -33,7 +35,8 @@ const main = async (args: string[]) => {
33
35
  REPAIR_COMMAND,
34
36
  SORT_COMMAND,
35
37
  TEXTUALIZE_COMMAND,
36
- VALIDATE_COMMAND
38
+ VALIDATE_COMMAND,
39
+ GENERATE_CLASS_CORE_TYPES
37
40
  ].sort()
38
41
 
39
42
  if (args.length <= 2) {
@@ -145,7 +148,7 @@ textual syntax is used, unless a flag '--asRegular' is provided.
145
148
  }
146
149
 
147
150
  case VALIDATE_COMMAND: {
148
- if (commandArgs.length === 0) {
151
+ if (commandArgs.length !== 1) {
149
152
  console.log(
150
153
  `The ${VALIDATE_COMMAND} command validates a serialization chunk.
151
154
  Usage: npx @lionweb/cli ${VALIDATE_COMMAND} <path_to_chunk>`
@@ -157,9 +160,10 @@ Usage: npx @lionweb/cli ${VALIDATE_COMMAND} <path_to_chunk>`
157
160
  }
158
161
 
159
162
  case INFER_LANGUAGES_COMMAND: {
160
- if (commandArgs.length === 0) {
163
+ if (commandArgs.length !== 1) {
161
164
  console.log(
162
- `The ${INFER_LANGUAGES_COMMAND} command infer language(s) from a given serialization chunk. \nUsage: npx @lionweb/cli infer-language <path_to_chunk>`
165
+ `The ${INFER_LANGUAGES_COMMAND} command infer language(s) from a given serialization chunk.
166
+ Usage: npx @lionweb/cli ${INFER_LANGUAGES_COMMAND} <path_to_chunk>`
163
167
  )
164
168
  } else {
165
169
  await inferLanguages(commandArgs[0])
@@ -167,6 +171,18 @@ Usage: npx @lionweb/cli ${VALIDATE_COMMAND} <path_to_chunk>`
167
171
  return
168
172
  }
169
173
 
174
+ case GENERATE_CLASS_CORE_TYPES: {
175
+ if (commandArgs.length === 0) {
176
+ console.log(
177
+ `The ${GENERATE_CLASS_CORE_TYPES} command generates an API that’s based on the @lionweb/class-core from a given serialization chunk containing one or more languages.
178
+ Usage: npx @lionweb/cli ${GENERATE_CLASS_CORE_TYPES} <path_to_chunk> <path_to_generate_to> [--${headerFlag} <path_to_file_with_header_text] [--${notVerboseFlag}]`
179
+ )
180
+ } else {
181
+ await generateClassCoreTypes(commandArgs)
182
+ }
183
+ return
184
+ }
185
+
170
186
  default: {
171
187
  console.error(`command "${command}" is not recognized`)
172
188
  }
@@ -0,0 +1,25 @@
1
+ import { AggregatingProblemReporter, deserializeLanguagesFrom } from "@lionweb/core"
2
+ import { generateMermaidForLanguage, generatePlantUmlForLanguage, tryReadSerializationChunk } from "@lionweb/utilities"
3
+ import { writeFile } from "fs/promises"
4
+ import { dirname } from "path"
5
+
6
+ export const diagramFromSerializationChunkAt = async (path: string) => {
7
+ const jsonOrError = await tryReadSerializationChunk(path)
8
+ if (jsonOrError instanceof Error) {
9
+ console.error(`"${path}" does not point to a valid JSON serialization of a language: ${jsonOrError.message}`)
10
+ return
11
+ }
12
+
13
+ const dir = dirname(path)
14
+ const problemReporter = new AggregatingProblemReporter()
15
+ const languages = deserializeLanguagesFrom({ serializationChunk: jsonOrError, problemReporter})
16
+ problemReporter.reportAllProblemsOnConsole()
17
+ await Promise.all(
18
+ languages.flatMap((language) => [
19
+ writeFile(`${dir}/${language.name}.puml`, generatePlantUmlForLanguage(language)),
20
+ writeFile(`${dir}/${language.name}.md`, generateMermaidForLanguage(language))
21
+ ])
22
+ )
23
+ console.log(`generated diagrams: "${path}" -> "${dir}/"`)
24
+ }
25
+
@@ -0,0 +1,76 @@
1
+ import { exit } from "process"
2
+ import { generateApiFromLanguages } from "@lionweb/class-core-generator"
3
+ import { deserializeLanguages } from "@lionweb/core"
4
+ import { readSerializationChunk } from "@lionweb/utilities"
5
+ import { ensurePathSync, tryReadFileAsText } from "../fs-utils.js"
6
+
7
+ export const headerFlag = "header"
8
+ export const notVerboseFlag = "not-verbose"
9
+
10
+ type ClassCoreTypesGeneratorArguments = {
11
+ chunkPath: string
12
+ genPath: string
13
+ notVerbose: boolean
14
+ headerPath?: string
15
+ }
16
+
17
+ const parseArgs = (args: string[]): ClassCoreTypesGeneratorArguments => {
18
+ const properArgs: string[] = []
19
+
20
+ let nextArgIsHeaderPath = false
21
+ let notVerbose = false
22
+ let headerPath: string | undefined
23
+ let multipleHeaderPathsReported = false
24
+
25
+ args.forEach((arg) => {
26
+ if (arg === `--${headerFlag}`) {
27
+ nextArgIsHeaderPath = true
28
+ } else if (arg === `--${notVerboseFlag}`) {
29
+ notVerbose = true
30
+ } else {
31
+ if (nextArgIsHeaderPath) {
32
+ if (headerPath !== undefined && !multipleHeaderPathsReported) {
33
+ console.error(`Multiple header paths given: taking first, and ignoring the rest.`)
34
+ multipleHeaderPathsReported = true
35
+ } else {
36
+ headerPath = arg
37
+ nextArgIsHeaderPath = false
38
+ }
39
+ } else {
40
+ properArgs.push(arg)
41
+ }
42
+ }
43
+ })
44
+
45
+ if (properArgs.length !== 2) {
46
+ console.error(`Expected 2 arguments <path_to_chunk> and <path_to_generate_in> but got ${properArgs} instead — exiting.`)
47
+ exit(2)
48
+ }
49
+
50
+ return {
51
+ chunkPath: properArgs[0],
52
+ genPath: properArgs[1],
53
+ notVerbose,
54
+ headerPath
55
+ }
56
+ }
57
+
58
+ export const generateClassCoreTypes = async (args: string[]) => {
59
+ const {chunkPath, genPath, headerPath, notVerbose} = parseArgs(args)
60
+
61
+ ensurePathSync(genPath)
62
+
63
+ const jsonOrError = await readSerializationChunk(chunkPath)
64
+ if (jsonOrError instanceof Error) {
65
+ console.error(`"${chunkPath}" does not point to a valid JSON serialization of a language: ${jsonOrError.message}`)
66
+ return
67
+ }
68
+
69
+ const header = headerPath === undefined
70
+ ? undefined
71
+ : await tryReadFileAsText(headerPath)
72
+
73
+ const languages = deserializeLanguages(jsonOrError)
74
+ generateApiFromLanguages(languages, genPath, { header, verbose: !notVerbose })
75
+ }
76
+
@@ -0,0 +1,56 @@
1
+ import { extname, join } from "path"
2
+ import { writeFile } from "fs/promises"
3
+
4
+ import { AggregatingProblemReporter, deserializeLanguagesFrom } from "@lionweb/core"
5
+ import {
6
+ GenerationOptions,
7
+ readSerializationChunk,
8
+ tryReadSerializationChunk,
9
+ tsTypeDefsForLanguage
10
+ } from "@lionweb/utilities"
11
+ import { ensurePathSync } from "../fs-utils.js"
12
+
13
+ const generateTsTypesFromSerialization = async (path: string, generationOptions: GenerationOptions[]) => {
14
+ const genPath = path.substring(0, path.length - extname(path).length) + "_gen"
15
+ ensurePathSync(genPath)
16
+
17
+ const problemReporter = new AggregatingProblemReporter()
18
+ const jsonOrError = await tryReadSerializationChunk(path)
19
+ if (jsonOrError instanceof Error) {
20
+ console.error(`"${path}" does not point to a valid JSON serialization of a language: ${jsonOrError.message}`)
21
+ return
22
+ }
23
+
24
+ const languages = deserializeLanguagesFrom({ serializationChunk: await readSerializationChunk(path), problemReporter })
25
+ problemReporter.reportAllProblemsOnConsole()
26
+
27
+ await Promise.all(
28
+ languages.map((language) => {
29
+ const fileName = `${language.name}.g.ts`
30
+ const promise = writeFile(join(genPath, fileName), tsTypeDefsForLanguage(language, ...generationOptions))
31
+ console.log(`generated ${language.name}.g.ts for language "${language.name}"`)
32
+ return promise
33
+ })
34
+ )
35
+
36
+ console.log(`generated TS types: "${path}" -> "${genPath}"`)
37
+
38
+ if (languages.length > 1) {
39
+ const linesIndexTs = [
40
+ languages.map((language) => `export * as ${language.name.replaceAll(".", "_")} from "./${language.name}.g.js"`)
41
+ ]
42
+ await writeFile(join(genPath, "index.g.ts"), linesIndexTs.join(`\n`) + `\n`)
43
+ console.log("generated index.g.ts")
44
+ }
45
+ }
46
+
47
+ export const generateTsTypesWith = async (args: string[]) => {
48
+ const generationOptions = args
49
+ .filter(arg => arg.startsWith("--"))
50
+ .map(option => option.substring(2).trim())
51
+ .filter(option => option in GenerationOptions)
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ .map(option => (GenerationOptions as any)[option]) // e.g. "assumeSealed" -> GenerationOptions.assumeSealed
54
+
55
+ args.filter(arg => !arg.startsWith("--")).forEach(path => generateTsTypesFromSerialization(path, generationOptions))
56
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"diagram-command.d.ts","sourceRoot":"","sources":["../../src/m3/diagram-command.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,+BAA+B,GAAU,MAAM,MAAM,kBAejE,CAAA"}
@@ -1,22 +0,0 @@
1
- import { AggregatingProblemReporter, deserializeLanguagesFrom } from "@lionweb/core";
2
- import { generateMermaidForLanguage, generatePlantUmlForLanguage, readSerializationChunk } from "@lionweb/utilities";
3
- import { writeFileSync } from "fs";
4
- import { dirname } from "path";
5
- export const diagramFromSerializationChunkAt = async (path) => {
6
- try {
7
- const json = await readSerializationChunk(path);
8
- const dir = dirname(path);
9
- const problemReporter = new AggregatingProblemReporter();
10
- const languages = deserializeLanguagesFrom({ serializationChunk: json, problemReporter });
11
- problemReporter.reportAllProblemsOnConsole();
12
- languages.forEach(language => {
13
- writeFileSync(`${dir}/${language.name}.puml`, generatePlantUmlForLanguage(language));
14
- writeFileSync(`${dir}/${language.name}.md`, generateMermaidForLanguage(language));
15
- });
16
- console.log(`generated diagrams: "${path}" -> "${dir}/"`);
17
- }
18
- catch (_) {
19
- console.error(`"${path}" does not point to a valid JSON serialization of a language`);
20
- }
21
- };
22
- //# sourceMappingURL=diagram-command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diagram-command.js","sourceRoot":"","sources":["../../src/m3/diagram-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AACpH,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClE,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,eAAe,GAAG,IAAI,0BAA0B,EAAE,CAAA;QACxD,MAAM,SAAS,GAAG,wBAAwB,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC,CAAA;QACxF,eAAe,CAAC,0BAA0B,EAAE,CAAA;QAC5C,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACzB,aAAa,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,OAAO,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAA;YACpF,aAAa,CAAC,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAA;QACrF,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,SAAS,GAAG,IAAI,CAAC,CAAA;IAC7D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,8DAA8D,CAAC,CAAA;IACzF,CAAC;AACL,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-ts-types-command.d.ts","sourceRoot":"","sources":["../../src/m3/generate-ts-types-command.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,mBAAmB,GAAU,MAAM,MAAM,EAAE,kBASvD,CAAA"}
@@ -1,42 +0,0 @@
1
- import { extname, join } from "path";
2
- import { existsSync, mkdirSync, statSync, writeFileSync } from "fs";
3
- import { AggregatingProblemReporter, deserializeLanguagesFrom } from "@lionweb/core";
4
- import { GenerationOptions, readSerializationChunk, tsTypeDefsForLanguage } from "@lionweb/utilities";
5
- const generateTsTypesFromSerialization = async (path, generationOptions) => {
6
- try {
7
- const genPath = path.substring(0, path.length - extname(path).length) + "_gen";
8
- if (!(existsSync(genPath) && statSync(genPath).isDirectory())) {
9
- mkdirSync(genPath);
10
- }
11
- const problemReporter = new AggregatingProblemReporter();
12
- const languages = deserializeLanguagesFrom({ serializationChunk: await readSerializationChunk(path), problemReporter });
13
- problemReporter.reportAllProblemsOnConsole();
14
- languages.forEach((language) => {
15
- const fileName = `${language.name}.g.ts`;
16
- writeFileSync(join(genPath, fileName), tsTypeDefsForLanguage(language, ...generationOptions));
17
- console.log(`generated ${language.name}.g.ts for language "${language.name}"`);
18
- });
19
- console.log(`generated TS types: "${path}" -> "${genPath}"`);
20
- if (languages.length > 1) {
21
- const linesIndexTs = [
22
- languages.map((language) => `export * as ${language.name.replaceAll(".", "_")} from "./${language.name}.g.js"`)
23
- ];
24
- writeFileSync(join(genPath, "index.g.ts"), linesIndexTs.join(`\n`) + `\n`);
25
- console.log("generated index.g.ts");
26
- }
27
- }
28
- catch (e) {
29
- console.error(`"${path}" does not point to a valid JSON serialization of a language`);
30
- throw e;
31
- }
32
- };
33
- export const generateTsTypesWith = async (args) => {
34
- const generationOptions = args
35
- .filter(arg => arg.startsWith("--"))
36
- .map(option => option.substring(2).trim())
37
- .filter(option => option in GenerationOptions)
38
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
- .map(option => GenerationOptions[option]); // e.g. "assumeSealed" -> GenerationOptions.assumeSealed
40
- args.filter(arg => !arg.startsWith("--")).forEach(path => generateTsTypesFromSerialization(path, generationOptions));
41
- };
42
- //# sourceMappingURL=generate-ts-types-command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-ts-types-command.js","sourceRoot":"","sources":["../../src/m3/generate-ts-types-command.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { AggregatingProblemReporter, deserializeLanguagesFrom } from "@lionweb/core"
2
- import { generateMermaidForLanguage, generatePlantUmlForLanguage, readSerializationChunk } from "@lionweb/utilities"
3
- import { writeFileSync } from "fs"
4
- import { dirname } from "path"
5
-
6
- export const diagramFromSerializationChunkAt = async (path: string) => {
7
- try {
8
- const json = await readSerializationChunk(path)
9
- const dir = dirname(path)
10
- const problemReporter = new AggregatingProblemReporter()
11
- const languages = deserializeLanguagesFrom({ serializationChunk: json, problemReporter})
12
- problemReporter.reportAllProblemsOnConsole()
13
- languages.forEach(language => {
14
- writeFileSync(`${dir}/${language.name}.puml`, generatePlantUmlForLanguage(language))
15
- writeFileSync(`${dir}/${language.name}.md`, generateMermaidForLanguage(language))
16
- })
17
- console.log(`generated diagrams: "${path}" -> "${dir}/"`)
18
- } catch (_) {
19
- console.error(`"${path}" does not point to a valid JSON serialization of a language`)
20
- }
21
- }
@@ -1,48 +0,0 @@
1
- import { extname, join } from "path"
2
- import { existsSync, mkdirSync, statSync, writeFileSync } from "fs"
3
-
4
- import { AggregatingProblemReporter, deserializeLanguagesFrom } from "@lionweb/core"
5
- import { GenerationOptions, readSerializationChunk, tsTypeDefsForLanguage } from "@lionweb/utilities"
6
-
7
- const generateTsTypesFromSerialization = async (path: string, generationOptions: GenerationOptions[]) => {
8
- try {
9
- const genPath = path.substring(0, path.length - extname(path).length) + "_gen"
10
- if (!(existsSync(genPath) && statSync(genPath).isDirectory())) {
11
- mkdirSync(genPath)
12
- }
13
-
14
- const problemReporter = new AggregatingProblemReporter()
15
- const languages = deserializeLanguagesFrom({ serializationChunk: await readSerializationChunk(path), problemReporter })
16
- problemReporter.reportAllProblemsOnConsole()
17
-
18
- languages.forEach((language) => {
19
- const fileName = `${language.name}.g.ts`
20
- writeFileSync(join(genPath, fileName), tsTypeDefsForLanguage(language, ...generationOptions))
21
- console.log(`generated ${language.name}.g.ts for language "${language.name}"`)
22
- })
23
-
24
- console.log(`generated TS types: "${path}" -> "${genPath}"`)
25
-
26
- if (languages.length > 1) {
27
- const linesIndexTs = [
28
- languages.map((language) => `export * as ${language.name.replaceAll(".", "_")} from "./${language.name}.g.js"`)
29
- ]
30
- writeFileSync(join(genPath, "index.g.ts"), linesIndexTs.join(`\n`) + `\n`)
31
- console.log("generated index.g.ts")
32
- }
33
- } catch (e) {
34
- console.error(`"${path}" does not point to a valid JSON serialization of a language`)
35
- throw e
36
- }
37
- }
38
-
39
- export const generateTsTypesWith = async (args: string[]) => {
40
- const generationOptions = args
41
- .filter(arg => arg.startsWith("--"))
42
- .map(option => option.substring(2).trim())
43
- .filter(option => option in GenerationOptions)
44
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
- .map(option => (GenerationOptions as any)[option]) // e.g. "assumeSealed" -> GenerationOptions.assumeSealed
46
-
47
- args.filter(arg => !arg.startsWith("--")).forEach(path => generateTsTypesFromSerialization(path, generationOptions))
48
- }
File without changes
File without changes