@lionweb/cli 0.6.2 → 0.6.3

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 (43) hide show
  1. package/README.md +15 -0
  2. package/dist/language-aware-args.d.ts +6 -0
  3. package/dist/language-aware-args.d.ts.map +1 -0
  4. package/dist/language-aware-args.js +7 -0
  5. package/dist/language-aware-args.js.map +1 -0
  6. package/dist/lionweb-cli.js +50 -20
  7. package/dist/lionweb-cli.js.map +1 -1
  8. package/dist/m3/diagram-generator.d.ts +1 -1
  9. package/dist/m3/diagram-generator.d.ts.map +1 -1
  10. package/dist/m3/diagram-generator.js +3 -3
  11. package/dist/m3/diagram-generator.js.map +1 -1
  12. package/dist/m3/language-differ.d.ts +4 -0
  13. package/dist/m3/language-differ.d.ts.map +1 -0
  14. package/dist/m3/language-differ.js +26 -0
  15. package/dist/m3/language-differ.js.map +1 -0
  16. package/dist/process.d.ts +2 -0
  17. package/dist/process.d.ts.map +1 -0
  18. package/dist/process.js +17 -0
  19. package/dist/process.js.map +1 -0
  20. package/dist/serialization/differ.d.ts +2 -0
  21. package/dist/serialization/differ.d.ts.map +1 -0
  22. package/dist/serialization/differ.js +9 -0
  23. package/dist/serialization/differ.js.map +1 -0
  24. package/dist/serialization/measurer.d.ts +2 -0
  25. package/dist/serialization/measurer.d.ts.map +1 -0
  26. package/dist/serialization/measurer.js +18 -0
  27. package/dist/serialization/measurer.js.map +1 -0
  28. package/dist/serialization/repairer.d.ts +1 -1
  29. package/dist/serialization/repairer.d.ts.map +1 -1
  30. package/dist/serialization/repairer.js +1 -1
  31. package/dist/serialization/repairer.js.map +1 -1
  32. package/dist/serialization/sorter.d.ts +1 -1
  33. package/dist/serialization/sorter.d.ts.map +1 -1
  34. package/dist/serialization/sorter.js +1 -1
  35. package/dist/serialization/sorter.js.map +1 -1
  36. package/dist/serialization/textualizer.d.ts.map +1 -1
  37. package/dist/serialization/textualizer.js +3 -5
  38. package/dist/serialization/textualizer.js.map +1 -1
  39. package/dist/validator.d.ts +1 -1
  40. package/dist/validator.d.ts.map +1 -1
  41. package/dist/validator.js +3 -3
  42. package/dist/validator.js.map +1 -1
  43. package/package.json +5 -7
package/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # The `cli` package
2
2
 
3
+ [![license](https://img.shields.io/badge/License-Apache%202.0-green.svg?style=flat)
4
+ ](./LICENSE)
5
+ [![CI](https://github.com/LionWeb-io/lionweb-typescript/actions/workflows/test.yaml/badge.svg)
6
+ ](https://github.com/LionWeb-io/lionweb-typescript/actions/workflows/test.yaml)
7
+ [![npm](https://img.shields.io/npm/v/%40lionweb%2Fcli?label=%40lionweb%2Fcli)
8
+ ](https://www.npmjs.com/package/@lionweb/cli)
9
+
3
10
  This package exposes an executable for use with a CLI.
4
11
  It can be used as follows:
5
12
 
@@ -39,6 +46,14 @@ That means that key-value pairs appear in precisely the same order as they do in
39
46
 
40
47
  ## Changelog
41
48
 
49
+ ### 0.6.3
50
+
51
+ * Add a command `measure` that computes metrics.
52
+
53
+ ### 0.6.2
54
+
55
+ * Expose diffing functionality from `@lionweb/validation`
56
+
42
57
  ### 0.6.1
43
58
 
44
59
  * Fix that `@lionweb/validation` was not specified as a (non-dev) dependency.
@@ -0,0 +1,6 @@
1
+ export type LanguageAwarePaths = {
2
+ chunkPaths: string[];
3
+ languagePaths: string[];
4
+ };
5
+ export declare const separate: (args: string[]) => LanguageAwarePaths;
6
+ //# sourceMappingURL=language-aware-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-aware-args.d.ts","sourceRoot":"","sources":["../src/language-aware-args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,EAAE,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,QAAQ,SAAU,MAAM,EAAE,KAAG,kBAKzC,CAAA"}
@@ -0,0 +1,7 @@
1
+ export const separate = (args) => {
2
+ const indexLanguageArg = args.findIndex((arg) => arg === "--language" || arg === "--languages");
3
+ return indexLanguageArg > -1
4
+ ? { chunkPaths: args.slice(0, indexLanguageArg), languagePaths: args.slice(indexLanguageArg + 1) }
5
+ : { chunkPaths: args, languagePaths: [] };
6
+ };
7
+ //# sourceMappingURL=language-aware-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-aware-args.js","sourceRoot":"","sources":["../src/language-aware-args.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAsB,EAAE;IAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,aAAa,CAAC,CAAA;IAC/F,OAAO,gBAAgB,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE;QAClG,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAA;AACjD,CAAC,CAAA"}
@@ -1,19 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import { argv } from "process";
3
- import { diagramFromSerialization } from "./m3/diagram-generator.js";
3
+ import { diagramFromSerializationChunkAt } from "./m3/diagram-generator.js";
4
4
  import { generateTsTypesWith } from "./m3/ts-types-generator.js";
5
- import { sortSerialization } from "./serialization/sorter.js";
6
- import { repairSerializationChunk } from "./serialization/repairer.js";
5
+ import { diffSerializationChunks } from "./serialization/differ.js";
6
+ import { executeMeasureCommand } from "./serialization/measurer.js";
7
+ import { repairSerializationChunkAt } from "./serialization/repairer.js";
8
+ import { sortSerializationChunkAt } from "./serialization/sorter.js";
7
9
  import { executeTextualizeCommand } from "./serialization/textualizer.js";
8
- import { runValidation } from "./validator.js";
10
+ import { runValidationOnSerializationChunkAt } from "./validator.js";
9
11
  const main = async (args) => {
10
12
  const DIAGRAM_COMMAND = "diagram";
11
- const SORT_COMMAND = "sort";
13
+ const DIFF_COMMAND = "diff";
12
14
  const GENERATE_TS_TYPES_COMMAND = "generate-ts-types";
15
+ const MEASURE_COMMAND = "measure";
13
16
  const REPAIR_COMMAND = "repair";
17
+ const SORT_COMMAND = "sort";
14
18
  const TEXTUALIZE_COMMAND = "textualize";
15
19
  const VALIDATE_COMMAND = "validate";
16
- const commands = [DIAGRAM_COMMAND, SORT_COMMAND, GENERATE_TS_TYPES_COMMAND, REPAIR_COMMAND, TEXTUALIZE_COMMAND, VALIDATE_COMMAND].sort();
20
+ const commands = [DIAGRAM_COMMAND, DIFF_COMMAND, GENERATE_TS_TYPES_COMMAND, MEASURE_COMMAND, REPAIR_COMMAND, SORT_COMMAND, TEXTUALIZE_COMMAND, VALIDATE_COMMAND].sort();
17
21
  if (args.length <= 2) {
18
22
  console.log(`lionweb-cli is a LionWeb utility around LionWeb-TypeScript
19
23
 
@@ -33,19 +37,19 @@ ${commands.map((command) => ` ${command}\n`).join(``)}
33
37
  console.log(`The ${DIAGRAM_COMMAND} command generates a PlantUML and Mermaid diagram for the language that the given paths point to.`);
34
38
  }
35
39
  else {
36
- commandArgs.forEach(diagramFromSerialization);
40
+ commandArgs.forEach(diagramFromSerializationChunkAt);
37
41
  }
38
- return;
42
+ break;
39
43
  }
40
- case SORT_COMMAND: {
41
- if (commandArgs.length === 0) {
42
- console.log(`The ${SORT_COMMAND} command sorts JSON files that are serialization chunk – sorted serialization chunks can be easily compared.
43
- (See the README.md for more information.)`);
44
+ case DIFF_COMMAND: {
45
+ if (commandArgs.length !== 3) {
46
+ console.log(`The ${DIFF_COMMAND} command generates the difference between two serialization chunks, in a JSON format.
47
+ The chunks to diff are given as the first two paths, and the path for the diff JSON file as the third.`);
44
48
  }
45
49
  else {
46
- commandArgs.forEach(sortSerialization);
50
+ await diffSerializationChunks(commandArgs[0], commandArgs[1], commandArgs[2]);
47
51
  }
48
- return;
52
+ break;
49
53
  }
50
54
  case GENERATE_TS_TYPES_COMMAND: {
51
55
  if (commandArgs.length === 0) {
@@ -54,7 +58,7 @@ ${commands.map((command) => ` ${command}\n`).join(``)}
54
58
  else {
55
59
  await generateTsTypesWith(commandArgs);
56
60
  }
57
- return;
61
+ break;
58
62
  }
59
63
  case REPAIR_COMMAND: {
60
64
  if (commandArgs.length === 0) {
@@ -63,10 +67,20 @@ Right now, that means that key-value pairs appear in precisely the same order as
63
67
  Missing key-value pairs are put in and get their default values.`);
64
68
  }
65
69
  else {
66
- commandArgs.forEach(repairSerializationChunk);
70
+ commandArgs.forEach(repairSerializationChunkAt);
67
71
  }
68
72
  return;
69
73
  }
74
+ case SORT_COMMAND: {
75
+ if (commandArgs.length === 0) {
76
+ console.log(`The ${SORT_COMMAND} command sorts JSON files that are serialization chunk – sorted serialization chunks can be easily compared.
77
+ (See the README.md for more information.)`);
78
+ }
79
+ else {
80
+ commandArgs.forEach(sortSerializationChunkAt);
81
+ }
82
+ break;
83
+ }
70
84
  case TEXTUALIZE_COMMAND: {
71
85
  if (commandArgs.length === 0) {
72
86
  console.log(`The ${TEXTUALIZE_COMMAND} command produces purely textual renderings of the given serialization chunks.
@@ -79,16 +93,32 @@ textual syntax is used, unless a flag '--asRegular' is provided.
79
93
  else {
80
94
  await executeTextualizeCommand(commandArgs);
81
95
  }
82
- return;
96
+ break;
83
97
  }
84
98
  case VALIDATE_COMMAND: {
85
99
  if (commandArgs.length === 0) {
86
- console.log(`The ${VALIDATE_COMMAND} command validates a serialization chunk. \nUsage: npx @lionweb/cli validate <path_to_chunk>`);
100
+ console.log(`The ${VALIDATE_COMMAND} command validates a serialization chunk.
101
+ Usage: npx @lionweb/cli ${VALIDATE_COMMAND} <path_to_chunk>`);
87
102
  }
88
103
  else {
89
- commandArgs.forEach(runValidation);
104
+ commandArgs.forEach(runValidationOnSerializationChunkAt);
90
105
  }
91
- return;
106
+ break;
107
+ }
108
+ case MEASURE_COMMAND: {
109
+ if (commandArgs.length === 0) {
110
+ console.log(`The ${MEASURE_COMMAND} command computes statistics on the given serialization chunks,
111
+ such as which concepts are instantiated how often.
112
+
113
+ Usage: npx @lionweb/cli ${MEASURE_COMMAND} <paths_to_chunks> --language[s] <path_to_chunks_of_languages>
114
+
115
+ Chunks given after a '--language' or '--languages' flag (which are synonyms) are assumed to be serializations of languages.
116
+ These languages are then used to try and resolve the keys of languages' entities and their features to names.`);
117
+ }
118
+ else {
119
+ await executeMeasureCommand(commandArgs);
120
+ }
121
+ break;
92
122
  }
93
123
  default: {
94
124
  console.error(`command "${command}" is not recognized`);
@@ -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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"}
@@ -1,2 +1,2 @@
1
- export declare const diagramFromSerialization: (path: string) => Promise<void>;
1
+ export declare const diagramFromSerializationChunkAt: (path: string) => Promise<void>;
2
2
  //# sourceMappingURL=diagram-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagram-generator.d.ts","sourceRoot":"","sources":["../../src/m3/diagram-generator.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,wBAAwB,SAAgB,MAAM,kBAc1D,CAAA"}
1
+ {"version":3,"file":"diagram-generator.d.ts","sourceRoot":"","sources":["../../src/m3/diagram-generator.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,+BAA+B,SAAgB,MAAM,kBAcjE,CAAA"}
@@ -1,10 +1,10 @@
1
1
  import { writeFileSync } from "fs";
2
2
  import { dirname } from "path";
3
3
  import { deserializeLanguages } from "@lionweb/core";
4
- import { generateMermaidForLanguage, generatePlantUmlForLanguage, readFileAsJson } from "@lionweb/utilities";
5
- export const diagramFromSerialization = async (path) => {
4
+ import { generateMermaidForLanguage, generatePlantUmlForLanguage, readChunk } from "@lionweb/utilities";
5
+ export const diagramFromSerializationChunkAt = async (path) => {
6
6
  try {
7
- const json = readFileAsJson(path);
7
+ const json = await readChunk(path);
8
8
  const dir = dirname(path);
9
9
  const languages = deserializeLanguages(json);
10
10
  languages.forEach((language) => {
@@ -1 +1 @@
1
- {"version":3,"file":"diagram-generator.js","sourceRoot":"","sources":["../../src/m3/diagram-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,IAAI,CAAA;AAChC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAC,oBAAoB,EAAqB,MAAM,eAAe,CAAA;AACtE,OAAO,EAAC,0BAA0B,EAAE,2BAA2B,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAA;AAG1G,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC3D,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAuB,CAAA;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC5C,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3B,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;QAErF,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
+ {"version":3,"file":"diagram-generator.js","sourceRoot":"","sources":["../../src/m3/diagram-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,IAAI,CAAA;AAChC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,eAAe,CAAA;AAClD,OAAO,EAAC,0BAA0B,EAAE,2BAA2B,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAGrG,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClE,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACzB,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC5C,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3B,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;QAErF,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"}
@@ -0,0 +1,4 @@
1
+ import { Language } from "@lionweb/core";
2
+ import { Change } from "@lionweb/validation";
3
+ export declare const languageDiff: (changes: Change[], prevVersionLanguages: Language[], headVersionLanguages: Language[]) => unknown[];
4
+ //# sourceMappingURL=language-differ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-differ.d.ts","sourceRoot":"","sources":["../../src/m3/language-differ.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,QAAQ,EAAkB,MAAM,eAAe,CAAA;AACnF,OAAO,EAAC,MAAM,EAAuD,MAAM,qBAAqB,CAAA;AAGhG,eAAO,MAAM,YAAY,YAAa,MAAM,EAAE,wBAAwB,QAAQ,EAAE,wBAAwB,QAAQ,EAAE,KAAG,OAAO,EAsB3H,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { allContaineds, asMap, idOf, qualifiedNameOf } from "@lionweb/core";
2
+ import { LION_CORE_BUILTINS_INAMED_NAME } from "@lionweb/validation";
3
+ export const languageDiff = (changes, prevVersionLanguages, headVersionLanguages) => {
4
+ const prevVersionNodesPerId = asMap(prevVersionLanguages.flatMap(allContaineds), idOf);
5
+ const mapChange = (change) => {
6
+ switch (change.changeType) {
7
+ case "PropertyValueChanged": {
8
+ const propertyValueChanged = change;
9
+ if (propertyValueChanged.property.key === LION_CORE_BUILTINS_INAMED_NAME) {
10
+ const node = prevVersionNodesPerId[propertyValueChanged.nodeId];
11
+ return {
12
+ kind: "Renamed",
13
+ qualifiedNameParent: node.parent === undefined ? "<root>" : qualifiedNameOf(node.parent),
14
+ what: node.constructor.name,
15
+ oldName: propertyValueChanged.oldValue,
16
+ newName: propertyValueChanged.newValue
17
+ };
18
+ }
19
+ }
20
+ // sentinel:
21
+ default: return undefined;
22
+ }
23
+ };
24
+ return changes.map(mapChange).filter((languageDelta) => languageDelta !== undefined);
25
+ };
26
+ //# sourceMappingURL=language-differ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-differ.js","sourceRoot":"","sources":["../../src/m3/language-differ.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAY,eAAe,EAAC,MAAM,eAAe,CAAA;AACnF,OAAO,EAAS,8BAA8B,EAAuB,MAAM,qBAAqB,CAAA;AAGhG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAiB,EAAE,oBAAgC,EAAE,oBAAgC,EAAa,EAAE;IAC7H,MAAM,qBAAqB,GAAG,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAA;IACtF,MAAM,SAAS,GAAG,CAAC,MAAc,EAAW,EAAE;QAC1C,QAAQ,MAAM,CAAC,UAAU,EAAE,CAAC;YACxB,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC1B,MAAM,oBAAoB,GAAG,MAA8B,CAAA;gBAC3D,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG,KAAK,8BAA8B,EAAE,CAAC;oBACvE,MAAM,IAAI,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;oBAC/D,OAAO;wBACH,IAAI,EAAE,SAAS;wBACf,mBAAmB,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;wBACxF,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;wBAC3B,OAAO,EAAE,oBAAoB,CAAC,QAAQ;wBACtC,OAAO,EAAE,oBAAoB,CAAC,QAAQ;qBACzC,CAAA;gBACL,CAAC;YACL,CAAC;YACD,YAAY;YACZ,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;QAC7B,CAAC;IACL,CAAC,CAAA;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,KAAK,SAAS,CAAC,CAAA;AACxF,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { deserializeLanguages } from "@lionweb/core";
2
+ import { readChunk, writeJsonAsFile } from "@lionweb/utilities";
3
+ import { LionWebJsonDiff } from "@lionweb/validation";
4
+ import { languageDiff } from "./m3/language-differ.js";
5
+ const headVersionChunk = await readChunk("chunks/DSL-0_1_17.json");
6
+ const prevVersionChunk = await readChunk("chunks/DSL-0_1_16.json");
7
+ const differ = new LionWebJsonDiff();
8
+ differ.diffLwChunk(prevVersionChunk, headVersionChunk);
9
+ const changes = differ.diffResult.changes;
10
+ writeJsonAsFile("chunks/DSL-chunky-diff.json", changes);
11
+ const languageChanges = languageDiff(changes, deserializeLanguages(prevVersionChunk), deserializeLanguages(headVersionChunk));
12
+ writeJsonAsFile("chunks/DSL-language-diff.json", languageChanges);
13
+ for (const change of languageChanges) {
14
+ const { what, qualifiedNameParent, oldName, newName } = change;
15
+ console.log(`${what} in ${qualifiedNameParent} renamed from ${oldName} to ${newName}`);
16
+ }
17
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,eAAe,CAAA;AAClD,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAGpD,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,wBAAwB,CAAC,CAAA;AAClE,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,wBAAwB,CAAC,CAAA;AAElE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;AACpC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;AACtD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAA;AAEzC,eAAe,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAA;AAEvD,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAE7H,eAAe,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAA;AAEjE,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;IACnC,MAAM,EAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAa,CAAA;IACpE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,mBAAmB,iBAAiB,OAAO,OAAO,OAAO,EAAE,CAAC,CAAA;AAC1F,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const diffSerializationChunks: (leftPath: string, rightPath: string, diffPath: string) => Promise<void>;
2
+ //# sourceMappingURL=differ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../src/serialization/differ.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,aAAoB,MAAM,aAAa,MAAM,YAAY,MAAM,kBAIlG,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { readChunk, writeJsonAsFile } from "@lionweb/utilities";
2
+ import { LionWebJsonDiff } from "@lionweb/validation";
3
+ export const diffSerializationChunks = async (leftPath, rightPath, diffPath) => {
4
+ const differ = new LionWebJsonDiff();
5
+ differ.diffLwChunk(await readChunk(leftPath), await readChunk(rightPath));
6
+ writeJsonAsFile(diffPath, differ.diffResult.changes);
7
+ };
8
+ // TODO re-interpret diff of two languages in a LionCore/M3-specific way, i.e. in terms of domain-specific ∂s
9
+ //# sourceMappingURL=differ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"differ.js","sourceRoot":"","sources":["../../src/serialization/differ.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAA;AAEnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,QAAgB,EAAE,SAAiB,EAAE,QAAgB,EAAE,EAAE;IACnG,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;IACpC,MAAM,CAAC,WAAW,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IACzE,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACxD,CAAC,CAAA;AAED,8GAA8G"}
@@ -0,0 +1,2 @@
1
+ export declare const executeMeasureCommand: (args: string[]) => Promise<void>;
2
+ //# sourceMappingURL=measurer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measurer.d.ts","sourceRoot":"","sources":["../../src/serialization/measurer.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,SAAgB,MAAM,EAAE,kBAMzD,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { extname } from "path";
2
+ import { measure, readChunk, tryLoadAllAsLanguages, writeJsonAsFile } from "@lionweb/utilities";
3
+ import { separate } from "../language-aware-args.js";
4
+ export const executeMeasureCommand = async (args) => {
5
+ const { chunkPaths, languagePaths } = separate(args);
6
+ const languages = await tryLoadAllAsLanguages(languagePaths);
7
+ chunkPaths.forEach(chunkPath => {
8
+ measureSerializationChunk(chunkPath, languages);
9
+ });
10
+ };
11
+ const measureSerializationChunk = async (path, languages) => {
12
+ const chunk = await readChunk(path);
13
+ const extLessPath = path.substring(0, path.length - extname(path).length);
14
+ const metricsPath = extLessPath + ".metrics.json";
15
+ writeJsonAsFile(metricsPath, measure(chunk, languages));
16
+ console.log(`Wrote metrics for ${path} --> ${metricsPath}`);
17
+ };
18
+ //# sourceMappingURL=measurer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measurer.js","sourceRoot":"","sources":["../../src/serialization/measurer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAC7F,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAA;AAElD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;IAC1D,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAA;IAC5D,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC3B,yBAAyB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAAY,EAAE,SAAqB,EAAE,EAAE;IAC5E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IACzE,MAAM,WAAW,GAAG,WAAW,GAAG,eAAe,CAAA;IACjD,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,QAAQ,WAAW,EAAE,CAAC,CAAA;AAC/D,CAAC,CAAA"}
@@ -1,2 +1,2 @@
1
- export declare const repairSerializationChunk: (path: string) => Promise<void>;
1
+ export declare const repairSerializationChunkAt: (path: string) => Promise<void>;
2
2
  //# sourceMappingURL=repairer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repairer.d.ts","sourceRoot":"","sources":["../../src/serialization/repairer.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,SAAgB,MAAM,kBAI1D,CAAA"}
1
+ {"version":3,"file":"repairer.d.ts","sourceRoot":"","sources":["../../src/serialization/repairer.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,0BAA0B,SAAgB,MAAM,kBAI5D,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { orderedSerializationChunk, readChunk, writeJsonAsFile } from "@lionweb/utilities";
2
- export const repairSerializationChunk = async (path) => {
2
+ export const repairSerializationChunkAt = async (path) => {
3
3
  const chunk = await readChunk(path);
4
4
  writeJsonAsFile(path, orderedSerializationChunk(chunk));
5
5
  console.log(`ordered(/"repaired"): ${path}`);
@@ -1 +1 @@
1
- {"version":3,"file":"repairer.js","sourceRoot":"","sources":["../../src/serialization/repairer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAE,SAAS,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAGxF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC3D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,eAAe,CAAC,IAAI,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAA;AAChD,CAAC,CAAA"}
1
+ {"version":3,"file":"repairer.js","sourceRoot":"","sources":["../../src/serialization/repairer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAE,SAAS,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAGxF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,eAAe,CAAC,IAAI,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAA;AAChD,CAAC,CAAA"}
@@ -1,2 +1,2 @@
1
- export declare const sortSerialization: (path: string) => Promise<void>;
1
+ export declare const sortSerializationChunkAt: (path: string) => Promise<void>;
2
2
  //# sourceMappingURL=sorter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sorter.d.ts","sourceRoot":"","sources":["../../src/serialization/sorter.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB,SAAgB,MAAM,kBAMnD,CAAA"}
1
+ {"version":3,"file":"sorter.d.ts","sourceRoot":"","sources":["../../src/serialization/sorter.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,wBAAwB,SAAgB,MAAM,kBAM1D,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { extname } from "path";
2
2
  import { readChunk, sortedSerializationChunk, writeJsonAsFile } from "@lionweb/utilities";
3
- export const sortSerialization = async (path) => {
3
+ export const sortSerializationChunkAt = async (path) => {
4
4
  const chunk = await readChunk(path);
5
5
  const extLessPath = path.substring(0, path.length - extname(path).length);
6
6
  const sortedJson = sortedSerializationChunk(chunk);
@@ -1 +1 @@
1
- {"version":3,"file":"sorter.js","sourceRoot":"","sources":["../../src/serialization/sorter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAC,SAAS,EAAE,wBAAwB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAGvF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IACpD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IACzE,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAClD,eAAe,CAAC,WAAW,GAAG,cAAc,EAAE,UAAU,CAAC,CAAA;IACzD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,QAAQ,WAAW,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA"}
1
+ {"version":3,"file":"sorter.js","sourceRoot":"","sources":["../../src/serialization/sorter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAC,SAAS,EAAE,wBAAwB,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAA;AAGvF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC3D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IACzE,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAClD,eAAe,CAAC,WAAW,GAAG,cAAc,EAAE,UAAU,CAAC,CAAA;IACzD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,QAAQ,WAAW,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"textualizer.d.ts","sourceRoot":"","sources":["../../src/serialization/textualizer.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,wBAAwB,SAAgB,MAAM,EAAE,kBAW5D,CAAA"}
1
+ {"version":3,"file":"textualizer.d.ts","sourceRoot":"","sources":["../../src/serialization/textualizer.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,wBAAwB,SAAgB,MAAM,EAAE,kBAQ5D,CAAA"}
@@ -2,15 +2,13 @@ import { writeFile } from "fs/promises";
2
2
  import { extname } from "path";
3
3
  import { genericAsTreeText, languagesAsText, looksLikeSerializedLanguages, readChunk, tryLoadAllAsLanguages } from "@lionweb/utilities";
4
4
  import { deserializeLanguages } from "@lionweb/core";
5
+ import { separate } from "../language-aware-args.js";
5
6
  const languagesAsRegularFlag = "--languagesAsRegular";
6
7
  export const executeTextualizeCommand = async (args) => {
7
8
  const languagesAsRegular = args.some((arg) => arg === languagesAsRegularFlag);
8
9
  const otherArgs = args.filter((arg) => arg !== languagesAsRegularFlag);
9
- const indexLanguageArg = otherArgs.findIndex((arg) => arg === "--language" || arg === "--languages");
10
- const languages = indexLanguageArg > -1
11
- ? await tryLoadAllAsLanguages(otherArgs.slice(indexLanguageArg + 1))
12
- : [];
13
- const chunkPaths = otherArgs.slice(0, indexLanguageArg > -1 ? indexLanguageArg : undefined);
10
+ const { chunkPaths, languagePaths } = separate(otherArgs);
11
+ const languages = await tryLoadAllAsLanguages(languagePaths);
14
12
  chunkPaths.forEach((chunkPath) => {
15
13
  textualizeSerializationChunk(chunkPath, languagesAsRegular, languages);
16
14
  });
@@ -1 +1 @@
1
- {"version":3,"file":"textualizer.js","sourceRoot":"","sources":["../../src/serialization/textualizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAA;AAC5B,OAAO,EACH,iBAAiB,EACjB,eAAe,EACf,4BAA4B,EAC5B,SAAS,EACT,qBAAqB,EACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAC,oBAAoB,EAAW,MAAM,eAAe,CAAA;AAG5D,MAAM,sBAAsB,GAAG,sBAAsB,CAAA;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;IAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,sBAAsB,CAAC,CAAA;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,sBAAsB,CAAC,CAAA;IACtE,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,aAAa,CAAC,CAAA;IACpG,MAAM,SAAS,GAAG,gBAAgB,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,MAAM,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,EAAE,CAAA;IACR,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC3F,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC7B,4BAA4B,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAGD,MAAM,4BAA4B,GAAG,KAAK,EAAE,IAAY,EAAE,kBAA2B,EAAE,YAAwB,EAAE,EAAE,EAAE;IACjH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IACzE,MAAM,SAAS,CACX,WAAW,GAAG,MAAM,EACpB,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB;QACtD,CAAC,CAAC,eAAe,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAC5C,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAA;AACvC,CAAC,CAAA"}
1
+ {"version":3,"file":"textualizer.js","sourceRoot":"","sources":["../../src/serialization/textualizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AACrC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAA;AAC5B,OAAO,EACH,iBAAiB,EACjB,eAAe,EACf,4BAA4B,EAC5B,SAAS,EACT,qBAAqB,EACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAC,oBAAoB,EAAW,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAC,QAAQ,EAAC,MAAM,2BAA2B,CAAA;AAGlD,MAAM,sBAAsB,GAAG,sBAAsB,CAAA;AAErD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;IAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,sBAAsB,CAAC,CAAA;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,sBAAsB,CAAC,CAAA;IACtE,MAAM,EAAC,UAAU,EAAE,aAAa,EAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IACvD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAA;IAC5D,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QAC7B,4BAA4B,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAGD,MAAM,4BAA4B,GAAG,KAAK,EAAE,IAAY,EAAE,kBAA2B,EAAE,YAAwB,EAAE,EAAE,EAAE;IACjH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAA;IACzE,MAAM,SAAS,CACX,WAAW,GAAG,MAAM,EACpB,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB;QACtD,CAAC,CAAC,eAAe,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAC5C,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAA;AACvC,CAAC,CAAA"}
@@ -1,2 +1,2 @@
1
- export declare function runValidation(file: string): void;
1
+ export declare function runValidationOnSerializationChunkAt(path: string): void;
2
2
  //# sourceMappingURL=validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQhD"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAGA,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQtE"}
package/dist/validator.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { LanguageRegistry, validateFileResult } from "@lionweb/validation";
2
- export function runValidation(file) {
3
- console.log(`Validating ${file}`);
4
- const validationResult = validateFileResult(file, false, new LanguageRegistry());
2
+ export function runValidationOnSerializationChunkAt(path) {
3
+ console.log(`Validating ${path}`);
4
+ const validationResult = validateFileResult(path, false, new LanguageRegistry());
5
5
  console.log(validationResult.hasErrors()
6
6
  ? validationResult.issues.map(issue => issue.errorMsg()).join("\n")
7
7
  : "No errors found");
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAG1E,MAAM,UAAU,aAAa,CAAC,IAAY;IACtC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAA;IACjC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAA;IAChF,OAAO,CAAC,GAAG,CACP,gBAAgB,CAAC,SAAS,EAAE;QACxB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnE,CAAC,CAAC,iBAAiB,CAC1B,CAAA;AACL,CAAC"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAG1E,MAAM,UAAU,mCAAmC,CAAC,IAAY;IAC5D,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAA;IACjC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAA;IAChF,OAAO,CAAC,GAAG,CACP,gBAAgB,CAAC,SAAS,EAAE;QACxB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnE,CAAC,CAAC,iBAAiB,CAC1B,CAAA;AACL,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,11 @@
1
1
  {
2
2
  "name": "@lionweb/cli",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "LionWeb CLI for {Java|Type}Script",
5
5
  "bin": {
6
6
  "lionweb-cli": "./dist/lionweb-cli.js"
7
7
  },
8
- "main": "dist/index.js",
9
- "types": "dist/index.d.ts",
10
- "typings": "dist/index.d.ts",
8
+ "main": "dist/lionweb-cli.js",
11
9
  "type": "module",
12
10
  "license": "Apache-2.0",
13
11
  "repository": {
@@ -18,9 +16,9 @@
18
16
  "url": "https://github.com/LionWeb-io/lionweb-typescript/issues"
19
17
  },
20
18
  "dependencies": {
21
- "@lionweb/core": "0.6.1",
22
- "@lionweb/utilities": "0.6.1",
23
- "@lionweb/validation": "0.6.1"
19
+ "@lionweb/core": "0.6.2",
20
+ "@lionweb/utilities": "0.6.2",
21
+ "@lionweb/validation": "0.6.2"
24
22
  },
25
23
  "scripts": {
26
24
  "clean": "rm -rf dist/ lionweb-cli-*.tgz",