@lionweb/utilities 0.5.0 → 0.6.0-beta.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.
- package/README.md +10 -1
- package/dist/m3/textual-syntax.d.ts +2 -3
- package/dist/m3/textual-syntax.d.ts.map +1 -1
- package/dist/m3/textual-syntax.js +2 -2
- package/dist/m3/textual-syntax.js.map +1 -1
- package/dist/serialization/chunk.d.ts +8 -1
- package/dist/serialization/chunk.d.ts.map +1 -1
- package/dist/serialization/chunk.js +29 -1
- package/dist/serialization/chunk.js.map +1 -1
- package/dist/serialization/index.d.ts +5 -3
- package/dist/serialization/index.d.ts.map +1 -1
- package/dist/serialization/index.js +5 -3
- package/dist/serialization/index.js.map +1 -1
- package/dist/serialization/ordering.d.ts +8 -0
- package/dist/serialization/ordering.d.ts.map +1 -0
- package/dist/serialization/ordering.js +41 -0
- package/dist/serialization/ordering.js.map +1 -0
- package/dist/serialization/shortening.d.ts +1 -1
- package/dist/serialization/shortening.d.ts.map +1 -1
- package/dist/serialization/shortening.js +1 -1
- package/dist/serialization/shortening.js.map +1 -1
- package/dist/serialization/sorting.d.ts +1 -1
- package/dist/serialization/sorting.d.ts.map +1 -1
- package/dist/serialization/sorting.js +8 -20
- package/dist/serialization/sorting.js.map +1 -1
- package/dist/serialization/textual-syntax.d.ts +3 -0
- package/dist/serialization/textual-syntax.d.ts.map +1 -0
- package/dist/serialization/textual-syntax.js +48 -0
- package/dist/serialization/textual-syntax.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -9,11 +9,20 @@ It contains utilities on top of the `core` package, such as:
|
|
|
9
9
|
|
|
10
10
|
* diagram generation (PlantUML and Mermaid) from an M2
|
|
11
11
|
* an Ecore → M2 importer
|
|
12
|
-
* functions to sort or
|
|
12
|
+
* functions to order, sort, shorten, or “textualize” – i.e.: render as text – a serialization to make introspection easier, and to possibly repair it (or at least make it more aligned with the specification)
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
## Changelog
|
|
16
16
|
|
|
17
|
+
### 0.6.0
|
|
18
|
+
|
|
19
|
+
* _Breaking name changes_: rename `asText` → `languageAsText`, `shortenedSerialization` → `shortenedSerializationChunk`, `sortedSerialization` → `sortedSerializationChunk`.
|
|
20
|
+
* Expose an `isSerializedLanguages` function.
|
|
21
|
+
* Expose an `orderedSerializationChunk` function that aligns the JSON key-value pairs in a serialization chunk according to the specification of the serialization format.
|
|
22
|
+
* Expose a generic textual syntax for serialization chunks, through the `genericTreeAsText` function.
|
|
23
|
+
This function is optionally language-aware: by providing an array of `Language`s as its second argument, it will try and look up `LanguageEntity` and `Feature` names instead of rendering their keys.
|
|
24
|
+
|
|
25
|
+
|
|
17
26
|
### 0.5.0
|
|
18
27
|
|
|
19
28
|
This is the first version corresponding to a release of LionWeb (version: 2023.1) as a whole.
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Language, M3Node } from "@lionweb/core";
|
|
2
|
-
declare const
|
|
3
|
-
declare const languagesAsText: (languages: Language[]) => string;
|
|
4
|
-
export { asText, languagesAsText };
|
|
2
|
+
export declare const languageAsText: (node: M3Node) => string;
|
|
3
|
+
export declare const languagesAsText: (languages: Language[]) => string;
|
|
5
4
|
//# sourceMappingURL=textual-syntax.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textual-syntax.d.ts","sourceRoot":"","sources":["../../src/m3/textual-syntax.ts"],"names":[],"mappings":"AAAA,OAAO,EAQH,QAAQ,EAER,MAAM,EAOT,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"textual-syntax.d.ts","sourceRoot":"","sources":["../../src/m3/textual-syntax.ts"],"names":[],"mappings":"AAAA,OAAO,EAQH,QAAQ,EAER,MAAM,EAOT,MAAM,eAAe,CAAA;AA4EtB,eAAO,MAAM,cAAc,SA7DL,MAAM,KAAG,MA6DK,CAAA;AAEpC,eAAO,MAAM,eAAe,cAAe,QAAQ,EAAE,KAAG,MACN,CAAA"}
|
|
@@ -51,6 +51,6 @@ ${descent(node.entities, "\n\n")}
|
|
|
51
51
|
}
|
|
52
52
|
return `node (key=${node.key}, ID=${node.id}) of class ${node.constructor.name} not handled`;
|
|
53
53
|
};
|
|
54
|
-
const
|
|
55
|
-
export
|
|
54
|
+
export const languageAsText = asText;
|
|
55
|
+
export const languagesAsText = (languages) => nameSorted(languages).map(asText).join("\n\n");
|
|
56
56
|
//# sourceMappingURL=textual-syntax.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textual-syntax.js","sourceRoot":"","sources":["../../src/m3/textual-syntax.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"textual-syntax.js","sourceRoot":"","sources":["../../src/m3/textual-syntax.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
import { SerializationChunk } from "@lionweb/core";
|
|
1
|
+
import { Language, SerializationChunk } from "@lionweb/core";
|
|
2
2
|
export declare const readChunk: (path: string) => Promise<SerializationChunk>;
|
|
3
|
+
export declare const looksLikeSerializedLanguages: (json: unknown) => boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Check whether the given path exists, is a JSON file containing the serialization of languages,
|
|
6
|
+
* and attempt to deserialize when it is. If any of that fails, return an empty list.
|
|
7
|
+
*/
|
|
8
|
+
export declare const tryLoadAsLanguages: (path: string) => Promise<Language[]>;
|
|
9
|
+
export declare const tryLoadAllAsLanguages: (paths: string[]) => Promise<Language[]>;
|
|
3
10
|
//# sourceMappingURL=chunk.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../../src/serialization/chunk.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"chunk.d.ts","sourceRoot":"","sources":["../../src/serialization/chunk.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,QAAQ,EAER,kBAAkB,EACrB,MAAM,eAAe,CAAA;AAItB,eAAO,MAAM,SAAS,SAAgB,MAAM,gCAO3C,CAAA;AAMD,eAAO,MAAM,4BAA4B,SAAU,OAAO,KAAG,OAKqC,CAAA;AAGlG;;;GAGG;AACH,eAAO,MAAM,kBAAkB,SAAgB,MAAM,KAAG,QAAQ,QAAQ,EAAE,CAazE,CAAA;AAGD,eAAO,MAAM,qBAAqB,UAAiB,MAAM,EAAE,KAAG,QAAQ,QAAQ,EAAE,CACnB,CAAA"}
|
|
@@ -1,11 +1,39 @@
|
|
|
1
|
+
import { currentSerializationFormatVersion, deserializeLanguages, lioncoreKey } from "@lionweb/core";
|
|
1
2
|
import { readFileAsJson } from "../json.js";
|
|
2
3
|
export const readChunk = async (path) => {
|
|
3
4
|
try {
|
|
4
5
|
return readFileAsJson(path);
|
|
5
6
|
}
|
|
6
7
|
catch (e) {
|
|
7
|
-
console.error(
|
|
8
|
+
console.error(`${path} is not a valid JSON file`);
|
|
8
9
|
throw e;
|
|
9
10
|
}
|
|
10
11
|
};
|
|
12
|
+
const isRecord = (json) => typeof json === "object" && !Array.isArray(json);
|
|
13
|
+
export const looksLikeSerializedLanguages = (json) => isRecord(json)
|
|
14
|
+
&& json["serializationFormatVersion"] === currentSerializationFormatVersion
|
|
15
|
+
&& "languages" in json
|
|
16
|
+
&& Array.isArray(json["languages"])
|
|
17
|
+
&& json["languages"].some((language) => isRecord(language) && language["key"] === lioncoreKey);
|
|
18
|
+
/**
|
|
19
|
+
* Check whether the given path exists, is a JSON file containing the serialization of languages,
|
|
20
|
+
* and attempt to deserialize when it is. If any of that fails, return an empty list.
|
|
21
|
+
*/
|
|
22
|
+
export const tryLoadAsLanguages = async (path) => {
|
|
23
|
+
const chunk = await readChunk(path);
|
|
24
|
+
if (!looksLikeSerializedLanguages(chunk)) {
|
|
25
|
+
console.error(`${path} is not a valid JSON serialization chunk of LionCore languages`);
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
return deserializeLanguages(chunk);
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
console.error(`${path} is not a valid JSON serialization chunk of LionCore languages: ${e.message}`);
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
export const tryLoadAllAsLanguages = async (paths) => (await Promise.all(paths.map(tryLoadAsLanguages))).flat();
|
|
38
|
+
// TODO load languages “in dependency order”, i.e.: later-named languages can be dependent on earlier-named languages -- (this is a foldRight, really)
|
|
11
39
|
//# sourceMappingURL=chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/serialization/chunk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../../src/serialization/chunk.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iCAAiC,EACjC,oBAAoB,EAEpB,WAAW,EAEd,MAAM,eAAe,CAAA;AACtB,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAA;AAGzC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC5C,IAAI,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,CAAuB,CAAA;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,2BAA2B,CAAC,CAAA;QACjD,MAAM,CAAC,CAAA;IACX,CAAC;AACL,CAAC,CAAA;AAGD,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAmC,EAAE,CAChE,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEpD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAa,EAAW,EAAE,CACnE,QAAQ,CAAC,IAAI,CAAC;OACX,IAAI,CAAC,4BAA4B,CAAC,KAAK,iCAAiC;OACxE,WAAW,IAAI,IAAI;OACnB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;OAChC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,CAAA;AAGlG;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAY,EAAuB,EAAE;IAC1E,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,gEAAgE,CAAC,CAAA;QACtF,OAAO,EAAE,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACD,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAA;QAC1C,8DAA8D;IAC1D,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,mEAAmE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QACpG,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,KAAe,EAAuB,EAAE,CAChF,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AAC7D,uJAAuJ"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export { readChunk } from "./chunk.js";
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
1
|
+
export { looksLikeSerializedLanguages, readChunk, tryLoadAllAsLanguages, tryLoadAsLanguages } from "./chunk.js";
|
|
2
|
+
export { orderedSerializationChunk } from "./ordering.js";
|
|
3
|
+
export { shortenedSerializationChunk } from "./shortening.js";
|
|
4
|
+
export { sortedSerializationChunk } from "./sorting.js";
|
|
5
|
+
export { genericAsTreeText } from "./textual-syntax.js";
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAAE,SAAS,EAAE,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAA;AAC7G,OAAO,EAAC,yBAAyB,EAAC,MAAM,eAAe,CAAA;AACvD,OAAO,EAAC,2BAA2B,EAAC,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export { readChunk } from "./chunk.js";
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
1
|
+
export { looksLikeSerializedLanguages, readChunk, tryLoadAllAsLanguages, tryLoadAsLanguages } from "./chunk.js";
|
|
2
|
+
export { orderedSerializationChunk } from "./ordering.js";
|
|
3
|
+
export { shortenedSerializationChunk } from "./shortening.js";
|
|
4
|
+
export { sortedSerializationChunk } from "./sorting.js";
|
|
5
|
+
export { genericAsTreeText } from "./textual-syntax.js";
|
|
4
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAAE,SAAS,EAAE,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAA;AAC7G,OAAO,EAAC,yBAAyB,EAAC,MAAM,eAAe,CAAA;AACvD,OAAO,EAAC,2BAA2B,EAAC,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MetaPointer, SerializationChunk, SerializedLanguageReference, SerializedProperty, SerializedReferenceTarget } from "@lionweb/core";
|
|
2
|
+
declare const orderedMetaPointer: ({ language, version, key }: MetaPointer) => MetaPointer;
|
|
3
|
+
declare const orderedSerializedLanguageReference: ({ key, version }: SerializedLanguageReference) => SerializedLanguageReference;
|
|
4
|
+
declare const orderedSerializedReferenceTarget: ({ reference, resolveInfo }: SerializedReferenceTarget) => SerializedReferenceTarget;
|
|
5
|
+
declare const orderedSerializedProperty: ({ property, value }: SerializedProperty) => SerializedProperty;
|
|
6
|
+
declare const orderedSerializationChunk: ({ serializationFormatVersion, languages, nodes }: SerializationChunk) => SerializationChunk;
|
|
7
|
+
export { orderedMetaPointer, orderedSerializationChunk, orderedSerializedLanguageReference, orderedSerializedProperty, orderedSerializedReferenceTarget };
|
|
8
|
+
//# sourceMappingURL=ordering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.d.ts","sourceRoot":"","sources":["../../src/serialization/ordering.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,kBAAkB,EAElB,2BAA2B,EAE3B,kBAAkB,EAElB,yBAAyB,EAC5B,MAAM,eAAe,CAAA;AAGtB,QAAA,MAAM,kBAAkB,+BAA8B,WAAW,KAAG,WAK9D,CAAA;AAEN,QAAA,MAAM,kCAAkC,qBAAoB,2BAA2B,KAAG,2BAIpF,CAAA;AAEN,QAAA,MAAM,gCAAgC,+BAA8B,yBAAyB,KAAG,yBAI1F,CAAA;AAEN,QAAA,MAAM,yBAAyB,wBAAuB,kBAAkB,KAAG,kBAIrE,CAAA;AA0BN,QAAA,MAAM,yBAAyB,qDAAoD,kBAAkB,KAAG,kBAKlG,CAAA;AAGN,OAAO,EACH,kBAAkB,EAClB,yBAAyB,EACzB,kCAAkC,EAClC,yBAAyB,EACzB,gCAAgC,EACnC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const orderedMetaPointer = ({ language, version, key }) => ({
|
|
2
|
+
language,
|
|
3
|
+
version,
|
|
4
|
+
key
|
|
5
|
+
});
|
|
6
|
+
const orderedSerializedLanguageReference = ({ key, version }) => ({
|
|
7
|
+
key,
|
|
8
|
+
version
|
|
9
|
+
});
|
|
10
|
+
const orderedSerializedReferenceTarget = ({ reference, resolveInfo }) => ({
|
|
11
|
+
resolveInfo,
|
|
12
|
+
reference
|
|
13
|
+
});
|
|
14
|
+
const orderedSerializedProperty = ({ property, value }) => ({
|
|
15
|
+
property: orderedMetaPointer(property),
|
|
16
|
+
value
|
|
17
|
+
});
|
|
18
|
+
const orderedSerializedContainment = ({ containment, children }) => ({
|
|
19
|
+
containment: orderedMetaPointer(containment),
|
|
20
|
+
children
|
|
21
|
+
});
|
|
22
|
+
const orderedSerializedReference = ({ reference, targets }) => ({
|
|
23
|
+
reference: orderedMetaPointer(reference),
|
|
24
|
+
targets: targets.map(orderedSerializedReferenceTarget)
|
|
25
|
+
});
|
|
26
|
+
const orderedSerializedNode = ({ id, classifier, properties, containments, references, annotations, parent }) => ({
|
|
27
|
+
id,
|
|
28
|
+
classifier: orderedMetaPointer(classifier),
|
|
29
|
+
properties: properties.map(orderedSerializedProperty),
|
|
30
|
+
containments: containments.map(orderedSerializedContainment),
|
|
31
|
+
references: references.map(orderedSerializedReference),
|
|
32
|
+
annotations,
|
|
33
|
+
parent
|
|
34
|
+
});
|
|
35
|
+
const orderedSerializationChunk = ({ serializationFormatVersion, languages, nodes }) => ({
|
|
36
|
+
serializationFormatVersion,
|
|
37
|
+
languages: languages.map(orderedSerializedLanguageReference),
|
|
38
|
+
nodes: nodes.map(orderedSerializedNode)
|
|
39
|
+
});
|
|
40
|
+
export { orderedMetaPointer, orderedSerializationChunk, orderedSerializedLanguageReference, orderedSerializedProperty, orderedSerializedReferenceTarget };
|
|
41
|
+
//# sourceMappingURL=ordering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.js","sourceRoot":"","sources":["../../src/serialization/ordering.ts"],"names":[],"mappings":"AAYA,MAAM,kBAAkB,GAAG,CAAC,EAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAc,EAAe,EAAE,CAC9E,CAAC;IACG,QAAQ;IACR,OAAO;IACP,GAAG;CACN,CAAC,CAAA;AAEN,MAAM,kCAAkC,GAAG,CAAC,EAAC,GAAG,EAAE,OAAO,EAA8B,EAA+B,EAAE,CACpH,CAAC;IACG,GAAG;IACH,OAAO;CACV,CAAC,CAAA;AAEN,MAAM,gCAAgC,GAAG,CAAC,EAAC,SAAS,EAAE,WAAW,EAA4B,EAA6B,EAAE,CACxH,CAAC;IACG,WAAW;IACX,SAAS;CACZ,CAAC,CAAA;AAEN,MAAM,yBAAyB,GAAG,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAqB,EAAsB,EAAE,CAC5F,CAAC;IACG,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;IACtC,KAAK;CACR,CAAC,CAAA;AAEN,MAAM,4BAA4B,GAAG,CAAC,EAAC,WAAW,EAAE,QAAQ,EAAwB,EAAyB,EAAE,CAC3G,CAAC;IACG,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC;IAC5C,QAAQ;CACX,CAAC,CAAA;AAEN,MAAM,0BAA0B,GAAG,CAAC,EAAC,SAAS,EAAE,OAAO,EAAsB,EAAuB,EAAE,CAClG,CAAC;IACG,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;CACzD,CAAC,CAAA;AAEN,MAAM,qBAAqB,GAAG,CAAC,EAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAiB,EAAkB,EAAE,CAC1I,CAAC;IACG,EAAE;IACF,UAAU,EAAE,kBAAkB,CAAC,UAAU,CAAC;IAC1C,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACrD,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAC5D,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACtD,WAAW;IACX,MAAM;CACT,CAAC,CAAA;AAGN,MAAM,yBAAyB,GAAG,CAAC,EAAC,0BAA0B,EAAE,SAAS,EAAE,KAAK,EAAqB,EAAsB,EAAE,CACzH,CAAC;IACG,0BAA0B;IAC1B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAC5D,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC;CAC1C,CAAC,CAAA;AAGN,OAAO,EACH,kBAAkB,EAClB,yBAAyB,EACzB,kCAAkC,EAClC,yBAAyB,EACzB,gCAAgC,EACnC,CAAA"}
|
|
@@ -3,5 +3,5 @@ import { SerializationChunk } from "@lionweb/core";
|
|
|
3
3
|
* @return A shortened version of a {@link SerializedModel JSON serialization}, which should make it easier to inspect.
|
|
4
4
|
* Note that the shortened version doesn't contain all information, and could (in theory) be malformed.
|
|
5
5
|
*/
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const shortenedSerializationChunk: ({ nodes }: SerializationChunk) => any[];
|
|
7
7
|
//# sourceMappingURL=shortening.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortening.d.ts","sourceRoot":"","sources":["../../src/serialization/shortening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAA;AAGhD;;;GAGG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"shortening.d.ts","sourceRoot":"","sources":["../../src/serialization/shortening.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAA;AAGhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,cAAa,kBAAkB,UAYhE,CAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @return A shortened version of a {@link SerializedModel JSON serialization}, which should make it easier to inspect.
|
|
3
3
|
* Note that the shortened version doesn't contain all information, and could (in theory) be malformed.
|
|
4
4
|
*/
|
|
5
|
-
export const
|
|
5
|
+
export const shortenedSerializationChunk = ({ nodes }) => nodes.map((node) => ({
|
|
6
6
|
id: node.id,
|
|
7
7
|
classifier: node.classifier.key,
|
|
8
8
|
...Object.fromEntries([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortening.js","sourceRoot":"","sources":["../../src/serialization/shortening.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"shortening.js","sourceRoot":"","sources":["../../src/serialization/shortening.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EAAC,KAAK,EAAqB,EAAE,EAAE,CACvE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjB,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;IAC/B,GAAG,MAAM,CAAC,WAAW,CACjB;QACI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1E,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAC,SAAS,EAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;KAC/H,CACJ;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;CACnC,CAAC,CAAC,CAAA"}
|
|
@@ -3,5 +3,5 @@ import { SerializationChunk } from "@lionweb/core";
|
|
|
3
3
|
* @return A sorted version of a {@link SerializedModel JSON serialization}, which should make it easier to inspect.
|
|
4
4
|
* Note that the sorted version destroy the order of links, which might effectively alter semantics.
|
|
5
5
|
*/
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const sortedSerializationChunk: ({ serializationFormatVersion, languages, nodes }: SerializationChunk) => SerializationChunk;
|
|
7
7
|
//# sourceMappingURL=sorting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sorting.d.ts","sourceRoot":"","sources":["../../src/serialization/sorting.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sorting.d.ts","sourceRoot":"","sources":["../../src/serialization/sorting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAkB,MAAM,eAAe,CAAA;AAajE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,qDAAoD,kBAAkB,KAAG,kBAsBxG,CAAA"}
|
|
@@ -1,40 +1,28 @@
|
|
|
1
1
|
import { sortByStringKey } from "@lionweb/core";
|
|
2
|
-
|
|
3
|
-
language,
|
|
4
|
-
version,
|
|
5
|
-
key
|
|
6
|
-
});
|
|
7
|
-
const sortedSerializedLanguageReference = ({ key, version }) => ({
|
|
8
|
-
key,
|
|
9
|
-
version
|
|
10
|
-
});
|
|
11
|
-
const sortedSerializedReferenceTarget = ({ reference, resolveInfo }) => ({
|
|
12
|
-
reference,
|
|
13
|
-
resolveInfo
|
|
14
|
-
});
|
|
2
|
+
import { orderedMetaPointer, orderedSerializedLanguageReference, orderedSerializedProperty, orderedSerializedReferenceTarget } from "./ordering.js";
|
|
15
3
|
const pick = (key) => (t) => t[key];
|
|
16
4
|
// TODO (find a nice way to compose such things)
|
|
17
5
|
/**
|
|
18
6
|
* @return A sorted version of a {@link SerializedModel JSON serialization}, which should make it easier to inspect.
|
|
19
7
|
* Note that the sorted version destroy the order of links, which might effectively alter semantics.
|
|
20
8
|
*/
|
|
21
|
-
export const
|
|
9
|
+
export const sortedSerializationChunk = ({ serializationFormatVersion, languages, nodes }) => ({
|
|
22
10
|
serializationFormatVersion,
|
|
23
|
-
languages: sortByStringKey(languages, pick("key")).map(
|
|
11
|
+
languages: sortByStringKey(languages, pick("key")).map(orderedSerializedLanguageReference),
|
|
24
12
|
nodes: sortByStringKey(nodes, pick("id"))
|
|
25
13
|
.map((node) => ({
|
|
26
14
|
id: node.id,
|
|
27
|
-
classifier:
|
|
28
|
-
properties: sortByStringKey(node.properties, ({ property }) => property.key),
|
|
15
|
+
classifier: orderedMetaPointer(node.classifier),
|
|
16
|
+
properties: sortByStringKey(node.properties, ({ property }) => property.key).map(orderedSerializedProperty),
|
|
29
17
|
containments: sortByStringKey(node.containments, ({ containment }) => containment.key)
|
|
30
18
|
.map(({ containment, children }) => ({
|
|
31
|
-
containment,
|
|
19
|
+
containment: orderedMetaPointer(containment),
|
|
32
20
|
children: children.sort()
|
|
33
21
|
})),
|
|
34
22
|
references: sortByStringKey(node.references, ({ reference }) => reference.key)
|
|
35
23
|
.map(({ reference, targets }) => ({
|
|
36
|
-
reference,
|
|
37
|
-
targets: sortByStringKey(targets, pick("reference")).map(
|
|
24
|
+
reference: orderedMetaPointer(reference),
|
|
25
|
+
targets: sortByStringKey(targets, pick("reference")).map(orderedSerializedReferenceTarget)
|
|
38
26
|
})),
|
|
39
27
|
annotations: node.annotations.sort(),
|
|
40
28
|
parent: node.parent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sorting.js","sourceRoot":"","sources":["../../src/serialization/sorting.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sorting.js","sourceRoot":"","sources":["../../src/serialization/sorting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,eAAe,EAAC,MAAM,eAAe,CAAA;AACjE,OAAO,EACH,kBAAkB,EAClB,kCAAkC,EAClC,yBAAyB,EACzB,gCAAgC,EACnC,MAAM,eAAe,CAAA;AAGtB,MAAM,IAAI,GAAG,CAAuB,GAAM,EAAkB,EAAE,CAC1D,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACpB,iDAAiD;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EAAC,0BAA0B,EAAE,SAAS,EAAE,KAAK,EAAqB,EAAsB,EAAE,CAC/H,CAAC;IACG,0BAA0B;IAC1B,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,kCAAkC,CAAC;IAC1F,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACpC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACZ,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/C,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAC,QAAQ,EAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACzG,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAC,WAAW,EAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;aAC3E,GAAG,CAAC,CAAC,EAAC,WAAW,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC;YAC5C,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE;SAC5B,CAAC,CAAC;QACX,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAC,SAAS,EAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;aACnE,GAAG,CAAC,CAAC,EAAC,SAAS,EAAE,OAAO,EAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;YACxC,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,gCAAgC,CAAC;SAC7F,CAAC,CAAC;QACX,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM;KACtB,CAAC,CAAC;CACV,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textual-syntax.d.ts","sourceRoot":"","sources":["../../src/serialization/textual-syntax.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,QAAQ,EAIR,kBAAkB,EAMrB,MAAM,eAAe,CAAA;AAOtB,eAAO,MAAM,iBAAiB,cAAa,kBAAkB,cAAa,QAAQ,EAAE,WAoEnF,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Enumeration, MemoisingSymbolTable, Property } from "@lionweb/core";
|
|
2
|
+
import { asString, indentWith } from "littoral-templates";
|
|
3
|
+
const indent = indentWith(" ")(1);
|
|
4
|
+
export const genericAsTreeText = ({ nodes }, languages = []) => {
|
|
5
|
+
const nodesById = {};
|
|
6
|
+
nodes.forEach((node) => {
|
|
7
|
+
nodesById[node.id] = node;
|
|
8
|
+
});
|
|
9
|
+
const symbolTable = new MemoisingSymbolTable(languages);
|
|
10
|
+
const nameOrKey = (classifier, feature) => symbolTable.featureMatching(classifier, feature)?.name ?? `[${feature.key}]`;
|
|
11
|
+
const propertyAsText = (classifier, { property: propertyMetaPointer, value }) => {
|
|
12
|
+
const property = symbolTable.featureMatching(classifier, propertyMetaPointer);
|
|
13
|
+
const identification = nameOrKey(classifier, propertyMetaPointer);
|
|
14
|
+
const displayValue = property instanceof Property
|
|
15
|
+
? (property.type instanceof Enumeration
|
|
16
|
+
? (property.type.literals.find((literal) => literal.key === value)?.name ?? value)
|
|
17
|
+
: (() => {
|
|
18
|
+
switch (property?.type?.name) {
|
|
19
|
+
case "String": return `'${value}'`;
|
|
20
|
+
default: return value;
|
|
21
|
+
}
|
|
22
|
+
})())
|
|
23
|
+
: value;
|
|
24
|
+
return `${identification} = ${displayValue}`;
|
|
25
|
+
};
|
|
26
|
+
const referenceTargetAsText = ({ reference: referenceId, resolveInfo }) => `${referenceId}${resolveInfo === undefined ? `` : ` (${resolveInfo})`}`;
|
|
27
|
+
const referenceAsText = (classifier, { reference, targets }) => `${nameOrKey(classifier, reference)} -> ${targets.length === 0 ? `<none>` : targets.map(referenceTargetAsText).join(",")}`;
|
|
28
|
+
const containmentAsText = (classifier, { containment, children }) => [
|
|
29
|
+
`${nameOrKey(classifier, containment)}:${children.length === 0 ? ` <none>` : ``}`,
|
|
30
|
+
indent(children.map((childId) => childId in nodesById
|
|
31
|
+
? asText(nodesById[childId])
|
|
32
|
+
: `<child with id=${childId} not present in this chunk>`))
|
|
33
|
+
];
|
|
34
|
+
const curry1 = (func, t1) => (t2) => func(t1, t2);
|
|
35
|
+
const asText = ({ id, classifier: classifierMetaPointer, properties, containments, references }) => [
|
|
36
|
+
`${symbolTable.entityMatching(classifierMetaPointer)?.name ?? `[${classifierMetaPointer.key}]`} (id: ${id}) {`,
|
|
37
|
+
indent([
|
|
38
|
+
properties.map(curry1(propertyAsText, classifierMetaPointer)),
|
|
39
|
+
references.map(curry1(referenceAsText, classifierMetaPointer)),
|
|
40
|
+
containments.map(curry1(containmentAsText, classifierMetaPointer))
|
|
41
|
+
]),
|
|
42
|
+
`}`
|
|
43
|
+
];
|
|
44
|
+
return asString(nodes
|
|
45
|
+
.filter((node) => node.parent === null) // root nodes
|
|
46
|
+
.map(asText));
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=textual-syntax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textual-syntax.js","sourceRoot":"","sources":["../../src/serialization/textual-syntax.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/utilities",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0-beta.3",
|
|
4
4
|
"description": "LionWeb utilities",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"url": "https://github.com/LionWeb-io/lionweb-typescript/issues"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@lionweb/core": "0.
|
|
18
|
+
"@lionweb/core": "0.6.0-beta.3",
|
|
19
19
|
"littoral-templates": "0.2.2",
|
|
20
20
|
"nanoid": "4.0.2"
|
|
21
21
|
},
|