@lionweb/core 0.6.5 → 0.6.6
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 -0
- package/dist/facade.d.ts +1 -1
- package/dist/facade.d.ts.map +1 -1
- package/dist/m3/builtins.d.ts +9 -2
- package/dist/m3/builtins.d.ts.map +1 -1
- package/dist/m3/builtins.js +37 -21
- package/dist/m3/builtins.js.map +1 -1
- package/dist/serializer.d.ts +5 -1
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +6 -4
- package/dist/serializer.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -32,6 +32,16 @@ The following is a list of links to potential starting points:
|
|
|
32
32
|
|
|
33
33
|
## Changelog
|
|
34
34
|
|
|
35
|
+
### 0.6.6
|
|
36
|
+
|
|
37
|
+
* The serializer now also serializes annotations.
|
|
38
|
+
* Add support for custom primitive types.
|
|
39
|
+
Specifically:
|
|
40
|
+
* A new interface type `PrimitiveTypeSerializer`.
|
|
41
|
+
* A default implementation `DefaultPrimitiveTypeSerializer` of that that's aware of the LionCore built-in primitive types.
|
|
42
|
+
* `serializeNodes` has an additional argument of type `PrimitiveTypeSerializer` with as default value an instance of `DefaultPrimitiveTypeSerializer`.
|
|
43
|
+
|
|
44
|
+
|
|
35
45
|
### 0.6.5
|
|
36
46
|
|
|
37
47
|
* Add support for custom primitive types.
|
package/dist/facade.d.ts
CHANGED
|
@@ -59,7 +59,7 @@ interface InstantiationFacade<NT extends Node> {
|
|
|
59
59
|
/**
|
|
60
60
|
* Type def. for functions that extract {@link Node nodes} from a given one.
|
|
61
61
|
*/
|
|
62
|
-
type NodesExtractor<NT extends Node> = (
|
|
62
|
+
type NodesExtractor<NT extends Node> = (node: NT) => NT[];
|
|
63
63
|
/**
|
|
64
64
|
* @return A function that extracts the children from a given node.
|
|
65
65
|
*/
|
package/dist/facade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AAC/B,OAAO,EAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAO,MAAM,eAAe,CAAA;AAKxF;;GAEG;AACH,KAAK,iBAAiB,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,UAAU,CAAA;AAElE;;;;GAIG;AACH,KAAK,kBAAkB,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,MAAM,GAAG,SAAS,CAAA;AAG3E;;;;;;GAMG;AAGH,UAAU,gBAAgB,CAAC,EAAE,SAAS,IAAI;IAEtC;;OAEG;IACH,YAAY,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAEnC;;OAEG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;IAGxD;;;OAGG;IACH,sBAAsB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,KAAK,kBAAkB,GAAG,IAAI,CAAA;IAElG;;;OAGG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAA;CAE1C;AAED,UAAU,mBAAmB,CAAC,EAAE,SAAS,IAAI;IAEzC;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,EAAE,CAAA;IAGjI;;;OAGG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAGrE;;OAEG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAA;CAEvD;AAED;;GAEG;AACH,KAAK,cAAc,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AAC/B,OAAO,EAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAO,MAAM,eAAe,CAAA;AAKxF;;GAEG;AACH,KAAK,iBAAiB,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,UAAU,CAAA;AAElE;;;;GAIG;AACH,KAAK,kBAAkB,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,MAAM,GAAG,SAAS,CAAA;AAG3E;;;;;;GAMG;AAGH,UAAU,gBAAgB,CAAC,EAAE,SAAS,IAAI;IAEtC;;OAEG;IACH,YAAY,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;IAEnC;;OAEG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;IAGxD;;;OAGG;IACH,sBAAsB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,KAAK,kBAAkB,GAAG,IAAI,CAAA;IAElG;;;OAGG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAA;CAE1C;AAED,UAAU,mBAAmB,CAAC,EAAE,SAAS,IAAI;IAEzC;;;;OAIG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,EAAE,CAAA;IAGjI;;;OAGG;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAGrE;;OAEG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAA;CAEvD;AAED;;GAEG;AACH,KAAK,cAAc,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAA;AAEzD;;GAEG;AACH,QAAA,MAAM,sBAAsB,iFAIsE,CAAA;AAGlG;;GAEG;AACH,QAAA,MAAM,mBAAmB,iFACsE,CAAA;AAG/F,KAAK,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;AAiBpG;;;GAGG;AACH,QAAA,MAAM,uBAAuB,EAAE,eAAyC,CAAA;AAExE;;;GAGG;AACH,QAAA,MAAM,sBAAsB,iBAAyB,CAAA;AAErD,YAAY,EACR,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EACrB,CAAA;AAED,OAAO,EACH,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EAC1B,CAAA"}
|
package/dist/m3/builtins.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Classifier, Concept, Datatype, Property } from "./types.js";
|
|
2
2
|
import { PrimitiveTypeDeserializer } from "../deserializer.js";
|
|
3
|
+
import { PrimitiveTypeSerializer } from "../serializer.js";
|
|
3
4
|
/**
|
|
4
5
|
* Definition of a LionCore language that serves as a standard library of built-in primitive types.
|
|
5
6
|
*/
|
|
@@ -8,6 +9,7 @@ declare const isBuiltinNodeConcept: (classifier: Classifier) => boolean;
|
|
|
8
9
|
type BuiltinPrimitive = string | boolean | number | Record<string, unknown> | Array<unknown>;
|
|
9
10
|
type PrimitiveTypeValue = BuiltinPrimitive | unknown;
|
|
10
11
|
type SpecificPrimitiveTypeDeserializer = (value: string) => PrimitiveTypeValue;
|
|
12
|
+
type SpecificPrimitiveTypeSerializer = (value: unknown) => string;
|
|
11
13
|
declare const builtinPrimitives: {
|
|
12
14
|
stringDatatype: import("./types.js").PrimitiveType;
|
|
13
15
|
booleanDatatype: import("./types.js").PrimitiveType;
|
|
@@ -21,13 +23,18 @@ declare const builtinClassifiers: {
|
|
|
21
23
|
declare const builtinFeatures: {
|
|
22
24
|
inamed_name: Property;
|
|
23
25
|
};
|
|
24
|
-
declare const serializeBuiltin: (value: BuiltinPrimitive) => string;
|
|
25
26
|
export declare class DefaultPrimitiveTypeDeserializer implements PrimitiveTypeDeserializer {
|
|
26
27
|
private deserializerByType;
|
|
27
28
|
constructor();
|
|
28
29
|
registerDeserializer(dataType: Datatype, deserializer: SpecificPrimitiveTypeDeserializer): void;
|
|
29
30
|
deserializeValue(value: string | undefined, property: Property): PrimitiveTypeValue | undefined;
|
|
30
31
|
}
|
|
32
|
+
export declare class DefaultPrimitiveTypeSerializer implements PrimitiveTypeSerializer {
|
|
33
|
+
private serializerByType;
|
|
34
|
+
constructor();
|
|
35
|
+
registerSerializer(dataType: Datatype, serializer: SpecificPrimitiveTypeSerializer): void;
|
|
36
|
+
serializeValue(value: unknown | undefined, property: Property): string | undefined;
|
|
37
|
+
}
|
|
31
38
|
export type { BuiltinPrimitive };
|
|
32
|
-
export { builtinPrimitives, builtinClassifiers, builtinFeatures, isBuiltinNodeConcept, lioncoreBuiltins
|
|
39
|
+
export { builtinPrimitives, builtinClassifiers, builtinFeatures, isBuiltinNodeConcept, lioncoreBuiltins };
|
|
33
40
|
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAuB,QAAQ,EAAC,MAAM,YAAY,CAAA;AAGvF,OAAO,EAAC,yBAAyB,EAAC,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAuB,QAAQ,EAAC,MAAM,YAAY,CAAA;AAGvF,OAAO,EAAC,yBAAyB,EAAC,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAA;AAkBxD;;GAEG;AACH,QAAA,MAAM,gBAAgB,+BAAmB,CAAA;AAYzC,QAAA,MAAM,oBAAoB,eAAgB,UAAU,YAKb,CAAA;AAqBvC,KAAK,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;AAC5F,KAAK,kBAAkB,GAAG,gBAAgB,GAAG,OAAO,CAAA;AACpD,KAAK,iCAAiC,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,kBAAkB,CAAA;AAC9E,KAAK,+BAA+B,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAA;AAEjE,QAAA,MAAM,iBAAiB;;;;;CAKtB,CAAA;AAED,QAAA,MAAM,kBAAkB;;;CAGvB,CAAA;AAED,QAAA,MAAM,eAAe;;CAEpB,CAAA;AAED,qBAAa,gCAAiC,YAAW,yBAAyB;IAE9E,OAAO,CAAC,kBAAkB,CAAyD;;IASnF,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,iCAAiC;IAIxF,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,kBAAkB,GAAG,SAAS;CAkBlG;AAED,qBAAa,8BAA+B,YAAW,uBAAuB;IAE1E,OAAO,CAAC,gBAAgB,CAAuD;;IAU/E,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,+BAA+B;IAIlF,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;CAkBrF;AAED,YAAY,EACR,gBAAgB,EACnB,CAAA;AAED,OAAO,EACH,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EACnB,CAAA"}
|
package/dist/m3/builtins.js
CHANGED
|
@@ -38,29 +38,13 @@ const builtinClassifiers = {
|
|
|
38
38
|
const builtinFeatures = {
|
|
39
39
|
inamed_name
|
|
40
40
|
};
|
|
41
|
-
const serializeBuiltin = (value) => {
|
|
42
|
-
switch (typeof value) {
|
|
43
|
-
case "string": return value;
|
|
44
|
-
case "boolean": return `${value}`;
|
|
45
|
-
case "number": return `${value}`; // TODO check whether integer?
|
|
46
|
-
case "object": {
|
|
47
|
-
try {
|
|
48
|
-
return JSON.stringify(value, null);
|
|
49
|
-
}
|
|
50
|
-
catch (_) {
|
|
51
|
-
// pass-through
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
throw new Error(`can't serialize value of built-in primitive type: ${value}`);
|
|
56
|
-
};
|
|
57
41
|
export class DefaultPrimitiveTypeDeserializer {
|
|
58
42
|
constructor() {
|
|
59
43
|
this.deserializerByType = new Map();
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
44
|
+
this.registerDeserializer(stringDatatype, (value) => value);
|
|
45
|
+
this.registerDeserializer(booleanDatatype, (value) => JSON.parse(value));
|
|
46
|
+
this.registerDeserializer(integerDatatype, (value) => Number(value));
|
|
47
|
+
this.registerDeserializer(jsonDatatype, (value) => JSON.parse(value));
|
|
64
48
|
}
|
|
65
49
|
registerDeserializer(dataType, deserializer) {
|
|
66
50
|
this.deserializerByType.set(dataType, deserializer);
|
|
@@ -85,5 +69,37 @@ export class DefaultPrimitiveTypeDeserializer {
|
|
|
85
69
|
}
|
|
86
70
|
}
|
|
87
71
|
}
|
|
88
|
-
export
|
|
72
|
+
export class DefaultPrimitiveTypeSerializer {
|
|
73
|
+
constructor() {
|
|
74
|
+
this.serializerByType = new Map();
|
|
75
|
+
this.registerSerializer(stringDatatype, (value) => value);
|
|
76
|
+
this.registerSerializer(stringDatatype, (value) => value);
|
|
77
|
+
this.registerSerializer(booleanDatatype, (value) => `${value}`);
|
|
78
|
+
this.registerSerializer(integerDatatype, (value) => `${value}`);
|
|
79
|
+
this.registerSerializer(jsonDatatype, (value) => JSON.stringify(value, null));
|
|
80
|
+
}
|
|
81
|
+
registerSerializer(dataType, serializer) {
|
|
82
|
+
this.serializerByType.set(dataType, serializer);
|
|
83
|
+
}
|
|
84
|
+
serializeValue(value, property) {
|
|
85
|
+
if (value === undefined) {
|
|
86
|
+
if (property.optional) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`can't serialize undefined as the value of a required property`);
|
|
90
|
+
}
|
|
91
|
+
const { type } = property;
|
|
92
|
+
if (type == null) {
|
|
93
|
+
throw new Error(`cant't serialize a property with unspecified type`);
|
|
94
|
+
}
|
|
95
|
+
const specificSerializer = this.serializerByType.get(type);
|
|
96
|
+
if (specificSerializer != undefined) {
|
|
97
|
+
return specificSerializer(value);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
throw new Error(`can't serialize value of type "${type.name}": ${value}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export { builtinPrimitives, builtinClassifiers, builtinFeatures, isBuiltinNodeConcept, lioncoreBuiltins };
|
|
89
105
|
//# sourceMappingURL=builtins.js.map
|
package/dist/m3/builtins.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAa,OAAO,EAAY,mBAAmB,EAAW,MAAM,YAAY,CAAA;AAEvF,OAAO,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"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"}
|
package/dist/serializer.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { ExtractionFacade } from "./facade.js";
|
|
2
2
|
import { SerializationChunk } from "./serialization.js";
|
|
3
3
|
import { Node } from "./types.js";
|
|
4
|
+
import { Property } from "./m3/types.js";
|
|
5
|
+
export interface PrimitiveTypeSerializer {
|
|
6
|
+
serializeValue(value: unknown, property: Property): string | undefined;
|
|
7
|
+
}
|
|
4
8
|
/**
|
|
5
9
|
* @return a {@link SerializationChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
|
|
6
10
|
*/
|
|
7
|
-
export declare const serializeNodes: <NT extends Node>(nodes: NT[], extractionFacade: ExtractionFacade<NT
|
|
11
|
+
export declare const serializeNodes: <NT extends Node>(nodes: NT[], extractionFacade: ExtractionFacade<NT>, primitiveTypeSerializer?: PrimitiveTypeSerializer) => SerializationChunk;
|
|
8
12
|
//# sourceMappingURL=serializer.d.ts.map
|
package/dist/serializer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAiD,kBAAkB,EAAiB,MAAM,oBAAoB,CAAA;AAErH,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAiD,kBAAkB,EAAiB,MAAM,oBAAoB,CAAA;AAErH,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AAG/B,OAAO,EAKH,QAAQ,EAGX,MAAM,eAAe,CAAA;AAGtB,MAAM,WAAW,uBAAuB;IACpC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;CACzE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,mGAGE,uBAAuB,KACjD,kBAiGF,CAAA"}
|
package/dist/serializer.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { currentSerializationFormatVersion } from "./serialization.js";
|
|
2
2
|
import { asIds } from "./functions.js";
|
|
3
|
-
import {
|
|
3
|
+
import { DefaultPrimitiveTypeSerializer } from "./m3/builtins.js";
|
|
4
4
|
import { allFeaturesOf } from "./m3/functions.js";
|
|
5
5
|
import { Containment, Enumeration, PrimitiveType, Property, Reference, simpleNameDeducer } from "./m3/types.js";
|
|
6
6
|
import { asArray } from "./utils/array-helpers.js";
|
|
7
7
|
/**
|
|
8
8
|
* @return a {@link SerializationChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
|
|
9
9
|
*/
|
|
10
|
-
export const serializeNodes = (nodes, extractionFacade) => {
|
|
10
|
+
export const serializeNodes = (nodes, extractionFacade, primitiveTypeSerializer = new DefaultPrimitiveTypeSerializer()) => {
|
|
11
11
|
const serializedNodes = []; // keep nodes as much as possible "in order"
|
|
12
12
|
const ids = {}; // maintain a map to keep track of IDs of nodes that have been serialized
|
|
13
13
|
const languagesUsed = [];
|
|
@@ -47,7 +47,7 @@ export const serializeNodes = (nodes, extractionFacade) => {
|
|
|
47
47
|
const encodedValue = (() => {
|
|
48
48
|
// (could also just inspect type of value:)
|
|
49
49
|
if (feature.type instanceof PrimitiveType) {
|
|
50
|
-
return
|
|
50
|
+
return primitiveTypeSerializer.serializeValue(value, feature);
|
|
51
51
|
}
|
|
52
52
|
if (feature.type instanceof Enumeration) {
|
|
53
53
|
return extractionFacade.enumerationLiteralFrom(value, feature.type)?.key
|
|
@@ -86,7 +86,9 @@ export const serializeNodes = (nodes, extractionFacade) => {
|
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
|
-
|
|
89
|
+
const annotations = asArray(node.annotations); // assumes that annotations also all are of type NT (which is not unreasonable)
|
|
90
|
+
serializedNode.annotations = annotations.map((annotation) => annotation.id);
|
|
91
|
+
annotations.forEach((annotation) => visit(annotation, node));
|
|
90
92
|
serializedNode.parent = parent?.id ?? null; // (undefined -> null)
|
|
91
93
|
};
|
|
92
94
|
nodes.forEach((node) => visit(node, undefined));
|
package/dist/serializer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iCAAiC,EAAkD,MAAM,oBAAoB,CAAA;AACrH,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAA;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/core",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.6",
|
|
4
4
|
"description": "LionWeb core for {Java|Type}Script",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"license": "Apache-2.0",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "https://github.com/LionWeb-io/lionweb-typescript.git"
|
|
12
|
+
"url": "git+https://github.com/LionWeb-io/lionweb-typescript.git"
|
|
13
13
|
},
|
|
14
14
|
"bugs": {
|
|
15
15
|
"url": "https://github.com/LionWeb-io/lionweb-typescript/issues"
|