@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.
Files changed (63) hide show
  1. package/CHANGELOG.md +5 -2
  2. package/README.md +38 -0
  3. package/build.sh +6 -0
  4. package/dist/deserializer.d.ts +3 -3
  5. package/dist/deserializer.d.ts.map +1 -1
  6. package/dist/deserializer.js +18 -18
  7. package/dist/deserializer.js.map +1 -1
  8. package/dist/dynamic-facade.d.ts +19 -0
  9. package/dist/dynamic-facade.d.ts.map +1 -0
  10. package/dist/{dynamic-api.js → dynamic-facade.js} +9 -9
  11. package/dist/dynamic-facade.js.map +1 -0
  12. package/dist/{api.d.ts → facade.d.ts} +14 -14
  13. package/dist/facade.d.ts.map +1 -0
  14. package/dist/{api.js → facade.js} +4 -4
  15. package/dist/facade.js.map +1 -0
  16. package/dist/index.d.ts +5 -4
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +5 -4
  19. package/dist/index.js.map +1 -1
  20. package/dist/m3/builtins.d.ts.map +1 -1
  21. package/dist/m3/builtins.js +2 -1
  22. package/dist/m3/builtins.js.map +1 -1
  23. package/dist/m3/deserializer.js +3 -3
  24. package/dist/m3/deserializer.js.map +1 -1
  25. package/dist/m3/facade.d.ts +16 -0
  26. package/dist/m3/facade.d.ts.map +1 -0
  27. package/dist/m3/{api.js → facade.js} +13 -13
  28. package/dist/m3/facade.js.map +1 -0
  29. package/dist/m3/functions.d.ts +15 -19
  30. package/dist/m3/functions.d.ts.map +1 -1
  31. package/dist/m3/functions.js +22 -22
  32. package/dist/m3/functions.js.map +1 -1
  33. package/dist/m3/index.d.ts +1 -1
  34. package/dist/m3/index.d.ts.map +1 -1
  35. package/dist/m3/index.js +1 -1
  36. package/dist/m3/index.js.map +1 -1
  37. package/dist/m3/lioncore.d.ts.map +1 -1
  38. package/dist/m3/lioncore.js +2 -1
  39. package/dist/m3/lioncore.js.map +1 -1
  40. package/dist/m3/serializer.d.ts.map +1 -1
  41. package/dist/m3/serializer.js +2 -2
  42. package/dist/m3/serializer.js.map +1 -1
  43. package/dist/serialization.d.ts +3 -2
  44. package/dist/serialization.d.ts.map +1 -1
  45. package/dist/serialization.js +4 -2
  46. package/dist/serialization.js.map +1 -1
  47. package/dist/serializer.d.ts +2 -2
  48. package/dist/serializer.d.ts.map +1 -1
  49. package/dist/serializer.js +8 -8
  50. package/dist/serializer.js.map +1 -1
  51. package/dist/version.d.ts +5 -0
  52. package/dist/version.d.ts.map +1 -0
  53. package/dist/version.js +5 -0
  54. package/dist/version.js.map +1 -0
  55. package/package.json +5 -5
  56. package/dist/api.d.ts.map +0 -1
  57. package/dist/api.js.map +0 -1
  58. package/dist/dynamic-api.d.ts +0 -19
  59. package/dist/dynamic-api.d.ts.map +0 -1
  60. package/dist/dynamic-api.js.map +0 -1
  61. package/dist/m3/api.d.ts +0 -16
  62. package/dist/m3/api.d.ts.map +0 -1
  63. 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
- * Replaced all occurrences of "LIon" (with uppercase 'I') with "Lion" (with lowercase 'i').
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 enums.
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
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env sh
2
+
3
+ rm -rf dist/ lionweb-core-*.tgz
4
+ npm i
5
+ npm run build
6
+
@@ -1,14 +1,14 @@
1
1
  import { Node } from "./types.js";
2
2
  import { SerializationChunk } from "./serialization.js";
3
- import { WriteModelAPI } from "./api.js";
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 api - a {@link ModelAPI model API} that is used to instantiate nodes and set values on them
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, api: WriteModelAPI<NT>, languages: Language[], dependentNodes: Node[]) => NT[];
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,aAAa,EAAC,MAAM,UAAU,CAAA;AACtC,OAAO,EAAoC,QAAQ,EAAqC,MAAM,eAAe,CAAA;AAkB7G;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,wCACL,kBAAkB,qCAE3B,QAAQ,EAAE,kBAEL,IAAI,EAAE,SA4IzB,CAAA"}
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"}
@@ -1,5 +1,5 @@
1
1
  import { currentSerializationFormatVersion } from "./serialization.js";
2
- import { Concept, Containment, Enumeration, PrimitiveType, Property, Reference } from "./m3/types.js";
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 api - a {@link ModelAPI model API} that is used to instantiate nodes and set values on them
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, api, languages,
25
- // TODO APIs <--> languages, so it's weird that it looks split up like this
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[], api: ModelAPI<Node>][] after all
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 1`);
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 = ({ concept: conceptMetaPointer, id, properties, children, references }, parent) => {
58
- const concept = allEntities
59
- .find((element) => element instanceof Concept && element.key === conceptMetaPointer.key);
60
- if (concept === undefined) {
61
- throw new Error(`can't deserialize a node having concept with ID "${conceptMetaPointer.key}"`);
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(concept);
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] = api.encodingOf(literal);
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 = api.nodeFor(parent, concept, id, propertySettings);
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
- api.setFeatureValue(node, feature, propertySettings[feature.key]);
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
- api.setFeatureValue(node, feature, instantiateMemoised(serializedNodeById[childId], node));
101
+ instantiationFacade.setFeatureValue(node, feature, instantiateMemoised(serializedNodeById[childId], node));
102
102
  });
103
103
  }
104
104
  else {
105
105
  if (childIds.length > 0) {
106
- api.setFeatureValue(node, feature, instantiateMemoised(serializedNodeById[childIds[0]], node));
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
- api.setFeatureValue(node, reference, lookUpById());
130
+ instantiationFacade.setFeatureValue(node, reference, lookUpById());
131
131
  });
132
132
  return rootNodes;
133
133
  };
@@ -1 +1 @@
1
- {"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"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"}
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 "./api.js";
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 ReadModelAPI} for {@link DynamicNode dynamic nodes}.
4
+ * An implementation of {@link ExtractionFacade} for {@link DynamicNode dynamic nodes}.
5
5
  */
6
- export const dynamicReadModelAPI = ({
7
- conceptOf: (node) => node.concept,
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 WriteModelAPI} for {@link DynamicNode dynamic nodes}.
15
+ * An implementation of {@link InstantiationFacade} for {@link DynamicNode dynamic nodes}.
16
16
  */
17
- export const dynamicWriteModelAPI = ({
18
- nodeFor: (_parent, concept, id, _propertySettings) => ({
17
+ export const dynamicInstantiationFacade = ({
18
+ nodeFor: (_parent, classifier, id, _propertySettings) => ({
19
19
  id,
20
- concept,
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-api.js.map
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 { Concept, Enumeration, EnumerationLiteral, Feature } from "./m3/types.js";
2
+ import { Classifier, Enumeration, EnumerationLiteral, Feature } from "./m3/types.js";
3
3
  /**
4
- * Type def. for functions that deduce the {@link Concept concept} of a given {@link Node node}.
4
+ * Type def. for functions that deduce the {@link Classifier classifier} of a given {@link Node node}.
5
5
  */
6
- type ConceptDeducer<NT extends Node> = (node: NT) => Concept;
6
+ type ClassifierDeducer<NT extends Node> = (node: NT) => Classifier;
7
7
  /**
8
- * Two interfaces that defines APIs for in-memory models.
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 ModelAPI {w|c}ould be:
10
+ * Implementations of these interfaces {w|c}ould be:
11
11
  * - specific to Lioncore (so to match m3/types.ts)
12
- * - generic just to deserialize into Node & { settings: { [featureName: string]: unknown } } -- á la Federico
12
+ * - generic to deserialize into @link DynamicNode}
13
13
  */
14
- interface ReadModelAPI<NT extends Node> {
14
+ interface ExtractionFacade<NT extends Node> {
15
15
  /**
16
16
  * @return The {@link Concept concept} of the given node
17
17
  */
18
- conceptOf: ConceptDeducer<NT>;
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 WriteModelAPI<NT extends Node> {
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, concept: Concept, id: string, propertySettings: {
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>(api: ReadModelAPI<NT>) => NodesExtractor<NT>;
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>(api: ReadModelAPI<NT>) => NodesExtractor<NT>;
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 { ConceptDeducer, NodesExtractor, ReadModelAPI, WriteModelAPI };
70
+ export type { ClassifierDeducer, NodesExtractor, ExtractionFacade, InstantiationFacade };
71
71
  export { childrenExtractorUsing, nodesExtractorUsing, updateSettingsKeyBased, updateSettingsNameBased };
72
- //# sourceMappingURL=api.d.ts.map
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 = (api) => (node) => allFeaturesOf(api.conceptOf(node))
7
+ const childrenExtractorUsing = (extractionFacade) => (node) => allFeaturesOf(extractionFacade.classifierOf(node))
8
8
  .filter(isContainment)
9
- .flatMap((containment) => api.getFeatureValue(node, 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 = (api) => flatMapNonCyclingFollowing(trivialFlatMapper, childrenExtractorUsing(api));
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=api.js.map
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-api.js";
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 "./m3/index.js";
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA"}
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-api.js";
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 "./m3/index.js";
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,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA"}
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;AAYlF;;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"}
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"}
@@ -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
- const factory = new LanguageFactory(lioncoreBuiltinsQName, "1", checkAll((qualifiedName) => qualifiedName), qualifiedNameBasedKeyGenerator(lioncoreQNameSeparator));
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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/m3/builtins.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { lioncoreReadAPI, lioncoreWriteAPI } from "./api.js";
2
- import { nodesExtractorUsing } from "../api.js";
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, lioncoreWriteAPI, [lioncore], [lioncoreBuiltins, ...dependentMetamodels].flatMap(nodesExtractorUsing(lioncoreReadAPI)))[0];
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,eAAe,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAC,mBAAmB,EAAC,MAAM,WAAW,CAAA;AAC7C,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,gBAAgB,EAChB,CAAC,QAAQ,CAAC,EACV,CAAC,gBAAgB,EAAE,GAAG,mBAAmB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAC3F,CAAC,CAAC,CAAa,CAAA;IAChB,QAAQ,CAAC,WAAW,CAAC,GAAG,mBAAmB,CAAC,CAAA;IAC5C,OAAO,QAAQ,CAAA;AACnB,CAAC,CAAA;AACD,sHAAsH"}
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 "../api.js";
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 { classBasedConceptDeducerFor, qualifiedNameOf } from "./functions.js";
5
+ import { classBasedClassifierDeducerFor, qualifiedNameOf } from "./functions.js";
6
6
  import { nameIsKeyGenerator } from "./key-generation.js";
7
7
  const { inamed_name } = builtinFeatures;
8
- export const lioncoreReadAPI = ({
9
- conceptOf: classBasedConceptDeducerFor(lioncore),
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 WriteModelAPI write-part of the model API} for instances of the LionCore M3 (so M2s).
17
- * The returned {@link ModelAPI model API} uses the given {@link KeyGenerator key generator} to generate the keys of all objects in the M2.
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 lioncoreWriteAPIWithKeyGen = (keyGen) => ({
20
- nodeFor: (parent, concept, id, propertySettings) => {
21
- switch (concept.key) {
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(concept)}" with key "${concept.key}"`);
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 WriteModelAPI} for instances of the LionCore M3 (so M2s), where key = name.
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 lioncoreWriteAPI = lioncoreWriteAPIWithKeyGen(nameIsKeyGenerator);
55
- //# sourceMappingURL=api.js.map
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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"}