@lionweb/core 0.5.0-beta.0 → 0.5.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/CHANGELOG.md +5 -2
- package/README.md +38 -0
- package/build.sh +6 -0
- package/dist/deserializer.d.ts +3 -3
- package/dist/deserializer.d.ts.map +1 -1
- package/dist/deserializer.js +18 -18
- package/dist/deserializer.js.map +1 -1
- package/dist/dynamic-facade.d.ts +19 -0
- package/dist/dynamic-facade.d.ts.map +1 -0
- package/dist/{dynamic-api.js → dynamic-facade.js} +9 -9
- package/dist/dynamic-facade.js.map +1 -0
- package/dist/{api.d.ts → facade.d.ts} +14 -14
- package/dist/facade.d.ts.map +1 -0
- package/dist/{api.js → facade.js} +4 -4
- package/dist/facade.js.map +1 -0
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/m3/builtins.d.ts.map +1 -1
- package/dist/m3/builtins.js +2 -1
- package/dist/m3/builtins.js.map +1 -1
- package/dist/m3/deserializer.js +3 -3
- package/dist/m3/deserializer.js.map +1 -1
- package/dist/m3/facade.d.ts +16 -0
- package/dist/m3/facade.d.ts.map +1 -0
- package/dist/m3/{api.js → facade.js} +13 -13
- package/dist/m3/facade.js.map +1 -0
- package/dist/m3/functions.d.ts +15 -19
- package/dist/m3/functions.d.ts.map +1 -1
- package/dist/m3/functions.js +22 -22
- package/dist/m3/functions.js.map +1 -1
- package/dist/m3/index.d.ts +1 -1
- package/dist/m3/index.d.ts.map +1 -1
- package/dist/m3/index.js +1 -1
- package/dist/m3/index.js.map +1 -1
- package/dist/m3/lioncore.d.ts.map +1 -1
- package/dist/m3/lioncore.js +2 -1
- package/dist/m3/lioncore.js.map +1 -1
- package/dist/m3/serializer.d.ts.map +1 -1
- package/dist/m3/serializer.js +2 -2
- package/dist/m3/serializer.js.map +1 -1
- package/dist/serialization.d.ts +3 -2
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +4 -2
- package/dist/serialization.js.map +1 -1
- package/dist/serializer.d.ts +2 -2
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +8 -8
- package/dist/serializer.js.map +1 -1
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +5 -5
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js.map +0 -1
- package/dist/dynamic-api.d.ts +0 -19
- package/dist/dynamic-api.d.ts.map +0 -1
- package/dist/dynamic-api.js.map +0 -1
- package/dist/m3/api.d.ts +0 -16
- package/dist/m3/api.d.ts.map +0 -1
- package/dist/m3/api.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## 0.5.0
|
|
4
4
|
|
|
5
|
-
*
|
|
5
|
+
* Changed names: `ReadModelAPI` → `ExtractionFacade`, `WriteModelAPI` → `InstantiationFacade`.
|
|
6
|
+
* For Change name of `concept` fields to `classifier`, and their types (where applicable) to `Classifier`.
|
|
7
|
+
* Fix `license` field in `package.json` to `"Apache-2.0"`.
|
|
8
|
+
* Replace all occurrences of "LIon" (with uppercase 'I') with "Lion" (with lowercase 'i').
|
|
6
9
|
* Split the `ModelAPI` interface into a read- and write-part: `ReadModelAPI` vs. `WriteModelAPI`.
|
|
7
10
|
* Make fixes w.r.t. multi-language models.
|
|
8
11
|
* Migrate from Deno to Node.js.
|
|
9
|
-
* Implement import of Ecore
|
|
12
|
+
* Implement import of enums in Ecore importer.
|
|
10
13
|
|
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# The `core` package
|
|
2
|
+
|
|
3
|
+
An NPM package that can be added to a Node.js/NPM codebase as follows:
|
|
4
|
+
|
|
5
|
+
```shell
|
|
6
|
+
$ npm add @lionweb/core
|
|
7
|
+
```
|
|
8
|
+
It contains:
|
|
9
|
+
|
|
10
|
+
* several base types
|
|
11
|
+
* the LionCore M3, including the `builtins` language
|
|
12
|
+
* functions for (de-)serialization
|
|
13
|
+
|
|
14
|
+
Build it from source as follows:
|
|
15
|
+
|
|
16
|
+
```shell
|
|
17
|
+
$ ./build.sh
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Consult the [changelog](./CHANGELOG.md) to see what changed from version to version.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Starting points
|
|
24
|
+
|
|
25
|
+
The following is a list of links to potential starting points:
|
|
26
|
+
|
|
27
|
+
* Implementation of the LionCore metametamodel (M3): see the [specific README](src/m3/README.md).
|
|
28
|
+
* Metamodel-generic/-aspecific code regarding:
|
|
29
|
+
* [TypeScript type definitions](src/types.ts).
|
|
30
|
+
* Representation of [references](src/references.ts).
|
|
31
|
+
* [Serialization](src/serialization.ts).
|
|
32
|
+
* [Generation of IDs](src/id-generation.ts).
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## API
|
|
36
|
+
|
|
37
|
+
**TODO** describe
|
|
38
|
+
|
package/build.sh
ADDED
package/dist/deserializer.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Node } from "./types.js";
|
|
2
2
|
import { SerializationChunk } from "./serialization.js";
|
|
3
|
-
import {
|
|
3
|
+
import { InstantiationFacade } from "./facade.js";
|
|
4
4
|
import { Language } from "./m3/types.js";
|
|
5
5
|
/**
|
|
6
6
|
* @return a deserialization of a {@link SerializationChunk}
|
|
7
7
|
*
|
|
8
8
|
* @param serializationChunk - a {@link SerializedModel model} from its LionWeb serialization JSON format
|
|
9
|
-
* @param
|
|
9
|
+
* @param instantiationFacade - a {@link InstantiationFacade} that is used to instantiate nodes and set values on them
|
|
10
10
|
* @param languages - a {@link Language language} that the serialized model is expected to conform to
|
|
11
11
|
* @param dependentNodes - a collection of nodes from dependent models against which all references in the serialized model are supposed to resolve against
|
|
12
12
|
*/
|
|
13
|
-
export declare const deserializeChunk: <NT extends Node>(serializationChunk: SerializationChunk,
|
|
13
|
+
export declare const deserializeChunk: <NT extends Node>(serializationChunk: SerializationChunk, instantiationFacade: InstantiationFacade<NT>, languages: Language[], dependentNodes: Node[]) => NT[];
|
|
14
14
|
//# sourceMappingURL=deserializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializer.d.ts","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,IAAI,EAAC,MAAM,YAAY,CAAA;AACnC,OAAO,EAAoC,kBAAkB,EAAiB,MAAM,oBAAoB,CAAA;AACxG,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"deserializer.d.ts","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,IAAI,EAAC,MAAM,YAAY,CAAA;AACnC,OAAO,EAAoC,kBAAkB,EAAiB,MAAM,oBAAoB,CAAA;AACxG,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAA;AAC/C,OAAO,EAKH,QAAQ,EAIX,MAAM,eAAe,CAAA;AAkBtB;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,wCACL,kBAAkB,2DAE3B,QAAQ,EAAE,kBAEL,IAAI,EAAE,SA4IzB,CAAA"}
|
package/dist/deserializer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { currentSerializationFormatVersion } from "./serialization.js";
|
|
2
|
-
import {
|
|
2
|
+
import { Classifier, Containment, Enumeration, PrimitiveType, Property, Reference } from "./m3/types.js";
|
|
3
3
|
import { allFeaturesOf } from "./m3/functions.js";
|
|
4
4
|
import { deserializeBuiltin } from "./m3/builtins.js";
|
|
5
5
|
import { groupBy } from "./utils/grouping.js";
|
|
@@ -17,17 +17,17 @@ const byIdMap = (ts) => {
|
|
|
17
17
|
* @return a deserialization of a {@link SerializationChunk}
|
|
18
18
|
*
|
|
19
19
|
* @param serializationChunk - a {@link SerializedModel model} from its LionWeb serialization JSON format
|
|
20
|
-
* @param
|
|
20
|
+
* @param instantiationFacade - a {@link InstantiationFacade} that is used to instantiate nodes and set values on them
|
|
21
21
|
* @param languages - a {@link Language language} that the serialized model is expected to conform to
|
|
22
22
|
* @param dependentNodes - a collection of nodes from dependent models against which all references in the serialized model are supposed to resolve against
|
|
23
23
|
*/
|
|
24
|
-
export const deserializeChunk = (serializationChunk,
|
|
25
|
-
// TODO
|
|
24
|
+
export const deserializeChunk = (serializationChunk, instantiationFacade, languages,
|
|
25
|
+
// TODO facades <--> languages, so it's weird that it looks split up like this
|
|
26
26
|
dependentNodes
|
|
27
|
-
// TODO (#13) see if you can turn this into [nodes: Node[],
|
|
27
|
+
// TODO (#13) see if you can turn this into [nodes: Node[], instantiationFacade: InstantiationFacade<Node>][] after all
|
|
28
28
|
) => {
|
|
29
29
|
if (serializationChunk.serializationFormatVersion !== currentSerializationFormatVersion) {
|
|
30
|
-
throw new Error(`can't deserialize from serialization format other than version
|
|
30
|
+
throw new Error(`can't deserialize from serialization format other than version "${currentSerializationFormatVersion}"`);
|
|
31
31
|
}
|
|
32
32
|
const allEntities = languages.flatMap(({ entities }) => entities);
|
|
33
33
|
const { nodes: serializedNodes } = serializationChunk;
|
|
@@ -54,13 +54,13 @@ dependentNodes
|
|
|
54
54
|
/**
|
|
55
55
|
* Instantiates a {@link Node} from its {@link SerializedNode serialization}.
|
|
56
56
|
*/
|
|
57
|
-
const instantiate = ({
|
|
58
|
-
const
|
|
59
|
-
.find((element) => element instanceof
|
|
60
|
-
if (
|
|
61
|
-
throw new Error(`can't deserialize a node having
|
|
57
|
+
const instantiate = ({ classifier: classifierMetaPointer, id, properties, children, references }, parent) => {
|
|
58
|
+
const classifier = allEntities
|
|
59
|
+
.find((element) => element instanceof Classifier && element.key === classifierMetaPointer.key);
|
|
60
|
+
if (classifier === undefined) {
|
|
61
|
+
throw new Error(`can't deserialize a node having a classifier with key "${classifierMetaPointer.key}"`);
|
|
62
62
|
}
|
|
63
|
-
const allFeatures = allFeaturesOf(
|
|
63
|
+
const allFeatures = allFeaturesOf(classifier);
|
|
64
64
|
const propertySettings = {};
|
|
65
65
|
const serializedPropertiesPerKey = properties === undefined ? {} : groupBy(properties, (sp) => sp.property.key);
|
|
66
66
|
if (properties !== undefined) {
|
|
@@ -77,7 +77,7 @@ dependentNodes
|
|
|
77
77
|
if (property.type instanceof Enumeration) {
|
|
78
78
|
const literal = property.type.literals.find((literal) => literal.key = value);
|
|
79
79
|
if (literal !== undefined) {
|
|
80
|
-
propertySettings[property.key] =
|
|
80
|
+
propertySettings[property.key] = instantiationFacade.encodingOf(literal);
|
|
81
81
|
}
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
@@ -85,25 +85,25 @@ dependentNodes
|
|
|
85
85
|
}
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
|
-
const node =
|
|
88
|
+
const node = instantiationFacade.nodeFor(parent, classifier, id, propertySettings);
|
|
89
89
|
const serializedChildrenPerKey = children === undefined ? {} : groupBy(children, (sp) => sp.containment.key);
|
|
90
90
|
const serializedReferencesPerKey = references === undefined ? {} : groupBy(references, (sp) => sp.reference.key);
|
|
91
91
|
allFeatures
|
|
92
92
|
.forEach((feature) => {
|
|
93
93
|
if (feature instanceof Property && properties !== undefined && feature.key in serializedPropertiesPerKey) {
|
|
94
|
-
|
|
94
|
+
instantiationFacade.setFeatureValue(node, feature, propertySettings[feature.key]);
|
|
95
95
|
}
|
|
96
96
|
else if (feature instanceof Containment && children !== undefined && feature.key in serializedChildrenPerKey) {
|
|
97
97
|
const childIds = serializedChildrenPerKey[feature.key].flatMap((serChildren) => serChildren.children);
|
|
98
98
|
if (feature.multiple) {
|
|
99
99
|
childIds
|
|
100
100
|
.forEach((childId) => {
|
|
101
|
-
|
|
101
|
+
instantiationFacade.setFeatureValue(node, feature, instantiateMemoised(serializedNodeById[childId], node));
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
104
|
else {
|
|
105
105
|
if (childIds.length > 0) {
|
|
106
|
-
|
|
106
|
+
instantiationFacade.setFeatureValue(node, feature, instantiateMemoised(serializedNodeById[childIds[0]], node));
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
}
|
|
@@ -127,7 +127,7 @@ dependentNodes
|
|
|
127
127
|
}
|
|
128
128
|
return target;
|
|
129
129
|
};
|
|
130
|
-
|
|
130
|
+
instantiationFacade.setFeatureValue(node, reference, lookUpById());
|
|
131
131
|
});
|
|
132
132
|
return rootNodes;
|
|
133
133
|
};
|
package/dist/deserializer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iCAAiC,EAAqC,MAAM,oBAAoB,CAAA;AAExG,OAAO,
|
|
1
|
+
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Node } from "./types.js";
|
|
2
|
+
import { ExtractionFacade, InstantiationFacade } from "./facade.js";
|
|
3
|
+
import { Classifier } from "./m3/types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Type definition for "dynamic nodes" that are not backed by specific types (e.g. classes).
|
|
6
|
+
*/
|
|
7
|
+
export type DynamicNode = Node & {
|
|
8
|
+
classifier: Classifier;
|
|
9
|
+
settings: Record<string, unknown>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* An implementation of {@link ExtractionFacade} for {@link DynamicNode dynamic nodes}.
|
|
13
|
+
*/
|
|
14
|
+
export declare const dynamicExtractionFacade: ExtractionFacade<DynamicNode>;
|
|
15
|
+
/**
|
|
16
|
+
* An implementation of {@link InstantiationFacade} for {@link DynamicNode dynamic nodes}.
|
|
17
|
+
*/
|
|
18
|
+
export declare const dynamicInstantiationFacade: InstantiationFacade<DynamicNode>;
|
|
19
|
+
//# sourceMappingURL=dynamic-facade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-facade.d.ts","sourceRoot":"","sources":["../src/dynamic-facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AAC/B,OAAO,EAAC,gBAAgB,EAAE,mBAAmB,EAAyB,MAAM,aAAa,CAAA;AACzF,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAA;AAGxC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG;IAC7B,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAID;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,CAAC,WAAW,CAQhE,CAAA;AAGF;;GAEG;AAEH,eAAO,MAAM,0BAA0B,EAAE,mBAAmB,CAAC,WAAW,CAUtE,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { updateSettingsKeyBased } from "./
|
|
1
|
+
import { updateSettingsKeyBased } from "./facade.js";
|
|
2
2
|
// TODO could also have properties, containments, references - mimicking the serialization
|
|
3
3
|
/**
|
|
4
|
-
* An implementation of {@link
|
|
4
|
+
* An implementation of {@link ExtractionFacade} for {@link DynamicNode dynamic nodes}.
|
|
5
5
|
*/
|
|
6
|
-
export const
|
|
7
|
-
|
|
6
|
+
export const dynamicExtractionFacade = ({
|
|
7
|
+
classifierOf: (node) => node.classifier,
|
|
8
8
|
getFeatureValue: (node, feature) =>
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
10
|
node.settings[feature.key],
|
|
@@ -12,12 +12,12 @@ export const dynamicReadModelAPI = ({
|
|
|
12
12
|
?? null // (undefined -> null)
|
|
13
13
|
});
|
|
14
14
|
/**
|
|
15
|
-
* An implementation of {@link
|
|
15
|
+
* An implementation of {@link InstantiationFacade} for {@link DynamicNode dynamic nodes}.
|
|
16
16
|
*/
|
|
17
|
-
export const
|
|
18
|
-
nodeFor: (_parent,
|
|
17
|
+
export const dynamicInstantiationFacade = ({
|
|
18
|
+
nodeFor: (_parent, classifier, id, _propertySettings) => ({
|
|
19
19
|
id,
|
|
20
|
-
|
|
20
|
+
classifier,
|
|
21
21
|
settings: {}
|
|
22
22
|
}),
|
|
23
23
|
setFeatureValue: (node, feature, value) => {
|
|
@@ -25,4 +25,4 @@ export const dynamicWriteModelAPI = ({
|
|
|
25
25
|
},
|
|
26
26
|
encodingOf: ({ key }) => key
|
|
27
27
|
});
|
|
28
|
-
//# sourceMappingURL=dynamic-
|
|
28
|
+
//# sourceMappingURL=dynamic-facade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-facade.js","sourceRoot":"","sources":["../src/dynamic-facade.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,sBAAsB,EAAC,MAAM,aAAa,CAAA;AAWzF,2FAA2F;AAG3F;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAkC,CAAC;IACnE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU;IACvC,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IACvC,8DAA8D;IACrD,IAAI,CAAC,QAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;IACvC,sBAAsB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,CAC3C,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC;WAChD,IAAI,CAAI,sBAAsB;CACxC,CAAC,CAAA;AAGF;;GAEG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAqC,CAAC;IACzE,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACtD,EAAE;QACF,UAAU;QACV,QAAQ,EAAE,EAAE;KACC,CAAA;IACjB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACtC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IACzD,CAAC;IACD,UAAU,EAAE,CAAC,EAAC,GAAG,EAAC,EAAE,EAAE,CAAC,GAAG;CAC7B,CAAC,CAAA"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { Node } from "./types.js";
|
|
2
|
-
import {
|
|
2
|
+
import { Classifier, Enumeration, EnumerationLiteral, Feature } from "./m3/types.js";
|
|
3
3
|
/**
|
|
4
|
-
* Type def. for functions that deduce the {@link
|
|
4
|
+
* Type def. for functions that deduce the {@link Classifier classifier} of a given {@link Node node}.
|
|
5
5
|
*/
|
|
6
|
-
type
|
|
6
|
+
type ClassifierDeducer<NT extends Node> = (node: NT) => Classifier;
|
|
7
7
|
/**
|
|
8
|
-
* Two interfaces that defines
|
|
8
|
+
* Two interfaces that defines façades for in-memory models.
|
|
9
9
|
* Instances/implementations of this interface parametrize generic (de-)serialization.
|
|
10
|
-
* Implementations of
|
|
10
|
+
* Implementations of these interfaces {w|c}ould be:
|
|
11
11
|
* - specific to Lioncore (so to match m3/types.ts)
|
|
12
|
-
* - generic
|
|
12
|
+
* - generic to deserialize into @link DynamicNode}
|
|
13
13
|
*/
|
|
14
|
-
interface
|
|
14
|
+
interface ExtractionFacade<NT extends Node> {
|
|
15
15
|
/**
|
|
16
16
|
* @return The {@link Concept concept} of the given node
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
classifierOf: ClassifierDeducer<NT>;
|
|
19
19
|
/**
|
|
20
20
|
* @return The value of the given {@link Feature feature} on the given node.
|
|
21
21
|
*/
|
|
@@ -26,13 +26,13 @@ interface ReadModelAPI<NT extends Node> {
|
|
|
26
26
|
*/
|
|
27
27
|
enumerationLiteralFrom: (encoding: unknown, enumeration: Enumeration) => EnumerationLiteral | null;
|
|
28
28
|
}
|
|
29
|
-
interface
|
|
29
|
+
interface InstantiationFacade<NT extends Node> {
|
|
30
30
|
/**
|
|
31
31
|
* @return An instance of the given concept, also given its parent (or {@link undefined} for root nodes),
|
|
32
32
|
* its ID and the values of the node's properties ("settings").
|
|
33
33
|
* (The latter may be required as arguments for the constructor of a class, whose instances represent nodes.)
|
|
34
34
|
*/
|
|
35
|
-
nodeFor: (parent: NT | undefined,
|
|
35
|
+
nodeFor: (parent: NT | undefined, classifier: Classifier, id: string, propertySettings: {
|
|
36
36
|
[propertyKey: string]: unknown;
|
|
37
37
|
}) => NT;
|
|
38
38
|
/**
|
|
@@ -52,11 +52,11 @@ type NodesExtractor<NT extends Node> = (nodes: NT) => NT[];
|
|
|
52
52
|
/**
|
|
53
53
|
* @return A function that extracts the children from a given node.
|
|
54
54
|
*/
|
|
55
|
-
declare const childrenExtractorUsing: <NT extends Node>(
|
|
55
|
+
declare const childrenExtractorUsing: <NT extends Node>(extractionFacade: ExtractionFacade<NT>) => NodesExtractor<NT>;
|
|
56
56
|
/**
|
|
57
57
|
* @return a function that extracts *all* nodes from a given start node - usually a root node.
|
|
58
58
|
*/
|
|
59
|
-
declare const nodesExtractorUsing: <NT extends Node>(
|
|
59
|
+
declare const nodesExtractorUsing: <NT extends Node>(extractionFacade: ExtractionFacade<NT>) => NodesExtractor<NT>;
|
|
60
60
|
/**
|
|
61
61
|
* Updates the value of the given {@link Feature feature} on the given "settings" object
|
|
62
62
|
* (either a {@link Node node} or a sub object of it), using the feature's *name*.
|
|
@@ -67,6 +67,6 @@ declare const updateSettingsNameBased: (settings: Record<string, unknown>, featu
|
|
|
67
67
|
* (either a {@link Node node} or a sub object of it), using the feature's *key*.
|
|
68
68
|
*/
|
|
69
69
|
declare const updateSettingsKeyBased: (settings: Record<string, unknown>, feature: Feature, value: unknown) => void;
|
|
70
|
-
export type {
|
|
70
|
+
export type { ClassifierDeducer, NodesExtractor, ExtractionFacade, InstantiationFacade };
|
|
71
71
|
export { childrenExtractorUsing, nodesExtractorUsing, updateSettingsKeyBased, updateSettingsNameBased };
|
|
72
|
-
//# sourceMappingURL=
|
|
72
|
+
//# sourceMappingURL=facade.d.ts.map
|
|
@@ -0,0 +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;AAGlE;;;;;;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;CAErG;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;IAEjI;;;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,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAA;AAE1D;;GAEG;AACH,QAAA,MAAM,sBAAsB,iFAIsE,CAAA;AAGlG;;GAEG;AACH,QAAA,MAAM,mBAAmB,iFACsE,CAAA;AAG/F;;;GAGG;AACH,QAAA,MAAM,uBAAuB,aAAc,OAAO,MAAM,EAAE,OAAO,CAAC,WAAW,OAAO,SAAS,OAAO,KAAG,IAUtG,CAAA;AAED;;;GAGG;AACH,QAAA,MAAM,sBAAsB,aAAc,OAAO,MAAM,EAAE,OAAO,CAAC,WAAW,OAAO,SAAS,OAAO,KAAG,IAUrG,CAAA;AAED,YAAY,EACR,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACtB,CAAA;AAED,OAAO,EACH,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EAC1B,CAAA"}
|
|
@@ -4,13 +4,13 @@ import { allFeaturesOf, isContainment } from "./m3/functions.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* @return A function that extracts the children from a given node.
|
|
6
6
|
*/
|
|
7
|
-
const childrenExtractorUsing = (
|
|
7
|
+
const childrenExtractorUsing = (extractionFacade) => (node) => allFeaturesOf(extractionFacade.classifierOf(node))
|
|
8
8
|
.filter(isContainment)
|
|
9
|
-
.flatMap((containment) =>
|
|
9
|
+
.flatMap((containment) => extractionFacade.getFeatureValue(node, containment));
|
|
10
10
|
/**
|
|
11
11
|
* @return a function that extracts *all* nodes from a given start node - usually a root node.
|
|
12
12
|
*/
|
|
13
|
-
const nodesExtractorUsing = (
|
|
13
|
+
const nodesExtractorUsing = (extractionFacade) => flatMapNonCyclingFollowing(trivialFlatMapper, childrenExtractorUsing(extractionFacade));
|
|
14
14
|
/**
|
|
15
15
|
* Updates the value of the given {@link Feature feature} on the given "settings" object
|
|
16
16
|
* (either a {@link Node node} or a sub object of it), using the feature's *name*.
|
|
@@ -44,4 +44,4 @@ const updateSettingsKeyBased = (settings, feature, value) => {
|
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
export { childrenExtractorUsing, nodesExtractorUsing, updateSettingsKeyBased, updateSettingsNameBased };
|
|
47
|
-
//# sourceMappingURL=
|
|
47
|
+
//# sourceMappingURL=facade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AACA,OAAO,EAAuD,IAAI,EAAC,MAAM,eAAe,CAAA;AACxF,OAAO,EAAC,0BAA0B,EAAE,iBAAiB,EAAC,MAAM,sBAAsB,CAAA;AAClF,OAAO,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAmE9D;;GAEG;AACH,MAAM,sBAAsB,GAAG,CAAkB,gBAAsC,EAAsB,EAAE,CAC3G,CAAC,IAAQ,EAAQ,EAAE,CACf,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC7C,MAAM,CAAC,aAAa,CAAC;KACrB,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAS,CAAC,CAAA;AAGlG;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAkB,gBAAsC,EAAsB,EAAE,CACxG,0BAA0B,CAAC,iBAAiB,EAAE,sBAAsB,CAAK,gBAAgB,CAAC,CAAC,CAAA;AAG/F;;;GAGG;AACH,MAAM,uBAAuB,GAAG,CAAC,QAAiC,EAAE,OAAgB,EAAE,KAAc,EAAQ,EAAE;IAC1G,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAA;IAC1B,IAAI,OAAO,YAAY,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;QAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YACjC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;SACvB;QACA,QAAQ,CAAC,KAAK,CAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC7C;SAAM;QACH,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;KAC1B;AACL,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,sBAAsB,GAAG,CAAC,QAAiC,EAAE,OAAgB,EAAE,KAAc,EAAQ,EAAE;IACzG,MAAM,EAAC,GAAG,EAAC,GAAG,OAAO,CAAA;IACrB,IAAI,OAAO,YAAY,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;QAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;SACrB;QACA,QAAQ,CAAC,GAAG,CAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC3C;SAAM;QACH,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;KACxB;AACL,CAAC,CAAA;AASD,OAAO,EACH,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EAC1B,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
export * from "./api.js";
|
|
2
|
-
export * from "./types.js";
|
|
3
1
|
export * from "./deserializer.js";
|
|
4
|
-
export * from "./dynamic-
|
|
2
|
+
export * from "./dynamic-facade.js";
|
|
3
|
+
export * from "./facade.js";
|
|
5
4
|
export * from "./functions.js";
|
|
6
5
|
export * from "./id-generation.js";
|
|
7
6
|
export * from "./references.js";
|
|
8
7
|
export * from "./serializer.js";
|
|
9
8
|
export * from "./serialization.js";
|
|
10
|
-
export * from "./
|
|
9
|
+
export * from "./types.js";
|
|
11
10
|
export * from "./utils/index.js";
|
|
11
|
+
export * from "./version.js";
|
|
12
|
+
export * from "./m3/index.js";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
export * from "./api.js";
|
|
2
|
-
export * from "./types.js";
|
|
3
1
|
export * from "./deserializer.js";
|
|
4
|
-
export * from "./dynamic-
|
|
2
|
+
export * from "./dynamic-facade.js";
|
|
3
|
+
export * from "./facade.js";
|
|
5
4
|
export * from "./functions.js";
|
|
6
5
|
export * from "./id-generation.js";
|
|
7
6
|
export * from "./references.js";
|
|
8
7
|
export * from "./serializer.js";
|
|
9
8
|
export * from "./serialization.js";
|
|
10
|
-
export * from "./
|
|
9
|
+
export * from "./types.js";
|
|
11
10
|
export * from "./utils/index.js";
|
|
11
|
+
export * from "./version.js";
|
|
12
|
+
export * from "./m3/index.js";
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"AACA,OAAO,EAAgD,QAAQ,EAAC,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"AACA,OAAO,EAAgD,QAAQ,EAAC,MAAM,YAAY,CAAA;AAalF;;GAEG;AACH,QAAA,MAAM,gBAAgB,+BAAmB,CAAA;AA8BzC,KAAK,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;AAE5F,QAAA,MAAM,iBAAiB;;;;;CAKtB,CAAA;AAED,QAAA,MAAM,kBAAkB;;;CAGvB,CAAA;AAED,QAAA,MAAM,eAAe;;CAEpB,CAAA;AAGD,QAAA,MAAM,gBAAgB,UAAW,gBAAgB,KAAG,MAcnD,CAAA;AAGD,QAAA,MAAM,kBAAkB,UAAW,MAAM,GAAG,SAAS,YAAY,QAAQ,KAAG,gBAAgB,GAAG,SAgB9F,CAAA;AAGD,YAAY,EACR,gBAAgB,EACnB,CAAA;AAED,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EACrB,CAAA"}
|
package/dist/m3/builtins.js
CHANGED
|
@@ -2,7 +2,8 @@ import { LanguageFactory } from "./factory.js";
|
|
|
2
2
|
import { lioncoreBuiltinsQName, lioncoreQNameSeparator } from "./types.js";
|
|
3
3
|
import { qualifiedNameBasedKeyGenerator } from "./key-generation.js";
|
|
4
4
|
import { checkAll } from "../id-generation.js";
|
|
5
|
-
|
|
5
|
+
import { currentReleaseVersion } from "../version.js";
|
|
6
|
+
const factory = new LanguageFactory(lioncoreBuiltinsQName, currentReleaseVersion, checkAll((qualifiedName) => qualifiedName), qualifiedNameBasedKeyGenerator(lioncoreQNameSeparator));
|
|
6
7
|
/**
|
|
7
8
|
* Definition of a LionCore language that serves as a standard library of built-in primitive types.
|
|
8
9
|
*/
|
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,EAAC,qBAAqB,EAAE,sBAAsB,EAAW,MAAM,YAAY,CAAA;AAClF,OAAO,EAAC,8BAA8B,EAAC,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"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"}
|
package/dist/m3/deserializer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { nodesExtractorUsing } from "../
|
|
1
|
+
import { lioncoreExtractionFacade, lioncoreInstantiationFacade } from "./facade.js";
|
|
2
|
+
import { nodesExtractorUsing } from "../facade.js";
|
|
3
3
|
import { deserializeChunk } from "../deserializer.js";
|
|
4
4
|
import { lioncore } from "./lioncore.js";
|
|
5
5
|
import { lioncoreBuiltins } from "./builtins.js";
|
|
@@ -8,7 +8,7 @@ import { lioncoreBuiltins } from "./builtins.js";
|
|
|
8
8
|
* as an instance of the LionCore metametamodel, using {@link _M3Concept these type definitions}.
|
|
9
9
|
*/
|
|
10
10
|
export const deserializeLanguage = (serializationChunk, ...dependentMetamodels) => {
|
|
11
|
-
const language = deserializeChunk(serializationChunk,
|
|
11
|
+
const language = deserializeChunk(serializationChunk, lioncoreInstantiationFacade, [lioncore], [lioncoreBuiltins, ...dependentMetamodels].flatMap(nodesExtractorUsing(lioncoreExtractionFacade)))[0];
|
|
12
12
|
language.dependingOn(...dependentMetamodels);
|
|
13
13
|
return language;
|
|
14
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../../src/m3/deserializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../../src/m3/deserializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,wBAAwB,EAAE,2BAA2B,EAAC,MAAM,aAAa,CAAA;AACjF,OAAO,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAA;AAChD,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AACtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAA;AAG9C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,kBAAsC,EAAE,GAAG,mBAA+B,EAAY,EAAE;IACxH,MAAM,QAAQ,GAAG,gBAAgB,CAC7B,kBAAkB,EAClB,2BAA2B,EAC3B,CAAC,QAAQ,CAAC,EACV,CAAC,gBAAgB,EAAE,GAAG,mBAAmB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC,CACpG,CAAC,CAAC,CAAa,CAAA;IAChB,QAAQ,CAAC,WAAW,CAAC,GAAG,mBAAmB,CAAC,CAAA;IAC5C,OAAO,QAAQ,CAAA;AACnB,CAAC,CAAA;AACD,sHAAsH"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ExtractionFacade, InstantiationFacade } from "../facade.js";
|
|
2
|
+
import { M3Concept } from "./types.js";
|
|
3
|
+
import { KeyGenerator } from "./key-generation.js";
|
|
4
|
+
export declare const lioncoreExtractionFacade: ExtractionFacade<M3Concept>;
|
|
5
|
+
/**
|
|
6
|
+
* @return An implementation of {@link InstantiationFacade} for instances of the LionCore M3 (so M2s).
|
|
7
|
+
* The returned {@link InstantiationFacade} uses the given {@link KeyGenerator key generator} to generate the keys of all objects in the M2.
|
|
8
|
+
*/
|
|
9
|
+
export declare const lioncoreInstantiationFacadeWithKeyGen: (keyGen: KeyGenerator) => InstantiationFacade<M3Concept>;
|
|
10
|
+
/**
|
|
11
|
+
* An implementation of {@link InstantiationFacade} for instances of the LionCore M3 (so M2s), where key = name.
|
|
12
|
+
*
|
|
13
|
+
* TODO deprecate this: [de-]serialization of metamodels should be parametrized with key generation throughout
|
|
14
|
+
*/
|
|
15
|
+
export declare const lioncoreInstantiationFacade: InstantiationFacade<M3Concept>;
|
|
16
|
+
//# sourceMappingURL=facade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/m3/facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,mBAAmB,EAA0B,MAAM,cAAc,CAAA;AAC3F,OAAO,EAQH,SAAS,EAIZ,MAAM,YAAY,CAAA;AAInB,OAAO,EAAC,YAAY,EAAqB,MAAM,qBAAqB,CAAA;AAMpE,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,SAAS,CAM/D,CAAA;AAGF;;;GAGG;AACH,eAAO,MAAM,qCAAqC,WAAY,YAAY,KAAG,oBAAoB,SAAS,CA6BxG,CAAA;AAGF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,gCAA4D,CAAA"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { updateSettingsNameBased } from "../
|
|
1
|
+
import { updateSettingsNameBased } from "../facade.js";
|
|
2
2
|
import { Concept, ConceptInterface, Containment, Enumeration, EnumerationLiteral, Language, PrimitiveType, Property, Reference } from "./types.js";
|
|
3
3
|
import { builtinFeatures } from "./builtins.js";
|
|
4
4
|
import { lioncore, metaConcepts, metaFeatures } from "./lioncore.js";
|
|
5
|
-
import {
|
|
5
|
+
import { classBasedClassifierDeducerFor, qualifiedNameOf } from "./functions.js";
|
|
6
6
|
import { nameIsKeyGenerator } from "./key-generation.js";
|
|
7
7
|
const { inamed_name } = builtinFeatures;
|
|
8
|
-
export const
|
|
9
|
-
|
|
8
|
+
export const lioncoreExtractionFacade = ({
|
|
9
|
+
classifierOf: classBasedClassifierDeducerFor(lioncore),
|
|
10
10
|
getFeatureValue: (node, feature) =>
|
|
11
11
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
12
|
node[feature.name],
|
|
13
13
|
enumerationLiteralFrom: (value, _) => value
|
|
14
14
|
});
|
|
15
15
|
/**
|
|
16
|
-
* @return An implementation of {@link
|
|
17
|
-
* The returned {@link
|
|
16
|
+
* @return An implementation of {@link InstantiationFacade} for instances of the LionCore M3 (so M2s).
|
|
17
|
+
* The returned {@link InstantiationFacade} uses the given {@link KeyGenerator key generator} to generate the keys of all objects in the M2.
|
|
18
18
|
*/
|
|
19
|
-
export const
|
|
20
|
-
nodeFor: (parent,
|
|
21
|
-
switch (
|
|
19
|
+
export const lioncoreInstantiationFacadeWithKeyGen = (keyGen) => ({
|
|
20
|
+
nodeFor: (parent, classifier, id, propertySettings) => {
|
|
21
|
+
switch (classifier.key) {
|
|
22
22
|
case metaConcepts.concept.key:
|
|
23
23
|
return new Concept(parent, propertySettings[inamed_name.key], "", id, propertySettings[metaFeatures.concept_abstract.key]).keyed(keyGen);
|
|
24
24
|
case metaConcepts.conceptInterface.key:
|
|
@@ -38,7 +38,7 @@ export const lioncoreWriteAPIWithKeyGen = (keyGen) => ({
|
|
|
38
38
|
case metaConcepts.reference.key:
|
|
39
39
|
return new Reference(parent, propertySettings[inamed_name.key], "", id).keyed(keyGen);
|
|
40
40
|
default:
|
|
41
|
-
throw new Error(`can't deserialize a node of concept "${qualifiedNameOf(
|
|
41
|
+
throw new Error(`can't deserialize a node of concept "${qualifiedNameOf(classifier)}" with key "${classifier.key}"`);
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
setFeatureValue: (node, feature, value) => {
|
|
@@ -47,9 +47,9 @@ export const lioncoreWriteAPIWithKeyGen = (keyGen) => ({
|
|
|
47
47
|
encodingOf: (literal) => literal
|
|
48
48
|
});
|
|
49
49
|
/**
|
|
50
|
-
* An implementation of {@link
|
|
50
|
+
* An implementation of {@link InstantiationFacade} for instances of the LionCore M3 (so M2s), where key = name.
|
|
51
51
|
*
|
|
52
52
|
* TODO deprecate this: [de-]serialization of metamodels should be parametrized with key generation throughout
|
|
53
53
|
*/
|
|
54
|
-
export const
|
|
55
|
-
//# sourceMappingURL=
|
|
54
|
+
export const lioncoreInstantiationFacade = lioncoreInstantiationFacadeWithKeyGen(nameIsKeyGenerator);
|
|
55
|
+
//# sourceMappingURL=facade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/m3/facade.ts"],"names":[],"mappings":"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"}
|