@lionweb/cli 0.10.0-beta.0 → 0.10.0-beta.1

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.
package/CHANGELOG.md CHANGED
@@ -1,8 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.0 — not yet released
4
+
5
+ * Add a `--sort-connections` flag to the `sort` command — see [`README.md`](README.md) for more information.
6
+
7
+
3
8
  ## 0.9.0
4
9
 
5
- * Add a command `generate-class-core-types` to invoke the `@lionweb/class-core-generator`.
10
+ * Add a `generate-class-core-types` command to invoke the `@lionweb/class-core-generator`.
6
11
 
7
12
 
8
13
  ## 0.8.0, 0.7.2
package/README.md CHANGED
@@ -28,7 +28,7 @@ It does some implicit validation as it can error out on incorrect serializations
28
28
 
29
29
  ## Sorting a serialization chunk
30
30
 
31
- Run the following command to sort a serialization chunk (e.g.):
31
+ Run the following command to sort one or more serialization chunks (e.g.):
32
32
 
33
33
  ```shell
34
34
  npx @lionweb/cli sort ../build/artifacts/core/v2023_1/lioncore.json
@@ -37,11 +37,12 @@ npx @lionweb/cli sort ../build/artifacts/core/v2023_1/lioncore.json
37
37
  Sorting a serialization chunk means the following:
38
38
 
39
39
  * All nodes sorted by ID.
40
- * For all nodes, their properties, containments, and references sorted by key (from the meta-pointer),
41
- * All containments and references sorted by ID.
40
+ * For all nodes, their properties, containments, and references are sorted lexicographically by the tuple (language-key, feature-key, language-version) — essentially, by the meta-pointer.
41
+ * If the `--sort-connections` flag is given as one (or more) of the arguments, then for every node, all containments, references, and contained annotations are sorted by ID.
42
+ * All key-value pairs in the objects in the JSON produced, appear according to the specification of the LionWeb serialization format, with missing key-value pairs put in with their default values.
42
43
 
43
- The sorting produces a serialization chunk that's also aligned on JSON-level with the specification.
44
- That means that key-value pairs appear in precisely the same order as they do in the specification, and that missing key-value pairs are put in and get their default values.
44
+ Sorted serialization chunks lean themselves well to being compared as text files.
45
+ Setting the `--sort-connections` flag usually changes the meaning of the serialization chunk, but makes it easy to find out whether a list of items appearing in a containment, a reference, or the annotations of a node merely appear in a different order, or really differ.
45
46
 
46
47
 
47
48
  ## Development
@@ -7,7 +7,7 @@ import { generateTsTypesWith } from "./m2/generate-ts-types-command.js";
7
7
  import { diffSerializationChunks } from "./serialization/diff-command.js";
8
8
  import { executeMeasureCommand } from "./serialization/measure-command.js";
9
9
  import { repairSerializationChunkAt } from "./serialization/repair-command.js";
10
- import { sortSerializationChunkAt } from "./serialization/sort-command.js";
10
+ import { executeSortCommand } from "./serialization/sort-command.js";
11
11
  import { executeTextualizeCommand } from "./serialization/textualize-command.js";
12
12
  import { runValidationOnSerializationChunkAt } from "./validate-command.js";
13
13
  const main = async (args) => {
@@ -107,7 +107,7 @@ Missing key-value pairs are put in and get their default values.`);
107
107
  (See the README.md for more information.)`);
108
108
  }
109
109
  else {
110
- commandArgs.forEach(sortSerializationChunkAt);
110
+ await executeSortCommand(commandArgs);
111
111
  }
112
112
  break;
113
113
  }
@@ -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,4 @@
1
- export declare const sortSerializationChunkAt: (path: string) => Promise<void>;
1
+ export declare const sortFlag = "--sort-connections";
2
+ export declare const executeSortCommand: (args: string[]) => Promise<void>;
3
+ export declare const sortSerializationChunkAt: (path: string, sortConnections: boolean) => Promise<void>;
2
4
  //# sourceMappingURL=sort-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort-command.d.ts","sourceRoot":"","sources":["../../src/serialization/sort-command.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,GAAU,MAAM,MAAM,kBAM1D,CAAA"}
1
+ {"version":3,"file":"sort-command.d.ts","sourceRoot":"","sources":["../../src/serialization/sort-command.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,uBAAuB,CAAA;AAE5C,eAAO,MAAM,kBAAkB,GAAU,MAAM,MAAM,EAAE,kBAMtD,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAU,MAAM,MAAM,EAAE,iBAAiB,OAAO,kBAMpF,CAAA"}
@@ -1,10 +1,16 @@
1
1
  import { writeJsonAsFileSync } from "@lionweb/node-utils";
2
2
  import { readSerializationChunk, sortedSerializationChunk } from "@lionweb/utilities";
3
3
  import { extname } from "path";
4
- export const sortSerializationChunkAt = async (path) => {
4
+ export const sortFlag = "--sort-connections";
5
+ export const executeSortCommand = async (args) => {
6
+ const chunkPaths = args.filter((arg) => arg !== sortFlag);
7
+ const sortConnections = chunkPaths.length < args.length;
8
+ await Promise.all(chunkPaths.map((chunkPath) => sortSerializationChunkAt(chunkPath, sortConnections)));
9
+ };
10
+ export const sortSerializationChunkAt = async (path, sortConnections) => {
5
11
  const chunk = await readSerializationChunk(path);
6
12
  const extLessPath = path.substring(0, path.length - extname(path).length);
7
- const sortedJson = sortedSerializationChunk(chunk);
13
+ const sortedJson = sortedSerializationChunk(chunk, sortConnections);
8
14
  writeJsonAsFileSync(extLessPath + ".sorted.json", sortedJson);
9
15
  console.log(`sorted: "${path}" -> ${extLessPath}`);
10
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sort-command.js","sourceRoot":"","sources":["../../src/serialization/sort-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE9B,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC3D,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAChD,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,mBAAmB,CAAC,WAAW,GAAG,cAAc,EAAE,UAAU,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,QAAQ,WAAW,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA"}
1
+ {"version":3,"file":"sort-command.js","sourceRoot":"","sources":["../../src/serialization/sort-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B,MAAM,CAAC,MAAM,QAAQ,GAAG,oBAAoB,CAAA;AAE5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAc,EAAE,EAAE;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAA;IACzD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IACvD,MAAM,OAAO,CAAC,GAAG,CACb,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CACtF,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAY,EAAE,eAAwB,EAAE,EAAE;IACrF,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAChD,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,EAAE,eAAe,CAAC,CAAA;IACnE,mBAAmB,CAAC,WAAW,GAAG,cAAc,EAAE,UAAU,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,QAAQ,WAAW,EAAE,CAAC,CAAA;AACtD,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionweb/cli",
3
- "version": "0.10.0-beta.0",
3
+ "version": "0.10.0-beta.1",
4
4
  "description": "LionWeb CLI for {Java|Type}Script",
5
5
  "bin": {
6
6
  "lionweb-cli": "./dist/lionweb-cli.js"
@@ -29,12 +29,12 @@
29
29
  "release": "npm publish"
30
30
  },
31
31
  "dependencies": {
32
- "@lionweb/class-core-generator": "0.10.0-beta.0",
33
- "@lionweb/core": "0.10.0-beta.0",
34
- "@lionweb/json-diff": "0.10.0-beta.0",
35
- "@lionweb/node-utils": "0.10.0-beta.0",
36
- "@lionweb/ts-utils": "0.10.0-beta.0",
37
- "@lionweb/utilities": "0.10.0-beta.0",
38
- "@lionweb/validation": "0.10.0-beta.0"
32
+ "@lionweb/class-core-generator": "0.10.0-beta.1",
33
+ "@lionweb/core": "0.10.0-beta.1",
34
+ "@lionweb/json-diff": "0.10.0-beta.1",
35
+ "@lionweb/node-utils": "0.10.0-beta.1",
36
+ "@lionweb/ts-utils": "0.10.0-beta.1",
37
+ "@lionweb/utilities": "0.10.0-beta.1",
38
+ "@lionweb/validation": "0.10.0-beta.1"
39
39
  }
40
40
  }
@@ -10,7 +10,7 @@ import { generateTsTypesWith } from "./m2/generate-ts-types-command.js"
10
10
  import { diffSerializationChunks } from "./serialization/diff-command.js"
11
11
  import { executeMeasureCommand } from "./serialization/measure-command.js"
12
12
  import { repairSerializationChunkAt } from "./serialization/repair-command.js"
13
- import { sortSerializationChunkAt } from "./serialization/sort-command.js"
13
+ import { executeSortCommand } from "./serialization/sort-command.js"
14
14
  import { executeTextualizeCommand } from "./serialization/textualize-command.js"
15
15
  import { runValidationOnSerializationChunkAt } from "./validate-command.js"
16
16
 
@@ -126,7 +126,7 @@ Missing key-value pairs are put in and get their default values.`
126
126
  (See the README.md for more information.)`
127
127
  )
128
128
  } else {
129
- commandArgs.forEach(sortSerializationChunkAt)
129
+ await executeSortCommand(commandArgs)
130
130
  }
131
131
  break
132
132
  }
@@ -2,10 +2,22 @@ import { writeJsonAsFileSync } from "@lionweb/node-utils"
2
2
  import { readSerializationChunk, sortedSerializationChunk } from "@lionweb/utilities"
3
3
  import { extname } from "path"
4
4
 
5
- export const sortSerializationChunkAt = async (path: string) => {
5
+
6
+ export const sortFlag = "--sort-connections"
7
+
8
+ export const executeSortCommand = async (args: string[]) => {
9
+ const chunkPaths = args.filter((arg) => arg !== sortFlag)
10
+ const sortConnections = chunkPaths.length < args.length
11
+ await Promise.all(
12
+ chunkPaths.map((chunkPath) => sortSerializationChunkAt(chunkPath, sortConnections))
13
+ )
14
+ }
15
+
16
+ export const sortSerializationChunkAt = async (path: string, sortConnections: boolean) => {
6
17
  const chunk = await readSerializationChunk(path)
7
18
  const extLessPath = path.substring(0, path.length - extname(path).length)
8
- const sortedJson = sortedSerializationChunk(chunk)
19
+ const sortedJson = sortedSerializationChunk(chunk, sortConnections)
9
20
  writeJsonAsFileSync(extLessPath + ".sorted.json", sortedJson)
10
21
  console.log(`sorted: "${path}" -> ${extLessPath}`)
11
22
  }
23
+