@lionweb/core 0.5.0-beta.0

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 (119) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/LICENSE +201 -0
  3. package/dist/api.d.ts +72 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +47 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/deserializer.d.ts +14 -0
  8. package/dist/deserializer.d.ts.map +1 -0
  9. package/dist/deserializer.js +134 -0
  10. package/dist/deserializer.js.map +1 -0
  11. package/dist/dynamic-api.d.ts +19 -0
  12. package/dist/dynamic-api.d.ts.map +1 -0
  13. package/dist/dynamic-api.js +28 -0
  14. package/dist/dynamic-api.js.map +1 -0
  15. package/dist/functions.d.ts +10 -0
  16. package/dist/functions.d.ts.map +1 -0
  17. package/dist/functions.js +13 -0
  18. package/dist/functions.js.map +1 -0
  19. package/dist/id-generation.d.ts +54 -0
  20. package/dist/id-generation.d.ts.map +1 -0
  21. package/dist/id-generation.js +76 -0
  22. package/dist/id-generation.js.map +1 -0
  23. package/dist/index.d.ts +12 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +12 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/m3/api.d.ts +16 -0
  28. package/dist/m3/api.d.ts.map +1 -0
  29. package/dist/m3/api.js +55 -0
  30. package/dist/m3/api.js.map +1 -0
  31. package/dist/m3/builtins.d.ts +24 -0
  32. package/dist/m3/builtins.d.ts.map +1 -0
  33. package/dist/m3/builtins.js +67 -0
  34. package/dist/m3/builtins.js.map +1 -0
  35. package/dist/m3/constraints.d.ts +16 -0
  36. package/dist/m3/constraints.d.ts.map +1 -0
  37. package/dist/m3/constraints.js +40 -0
  38. package/dist/m3/constraints.js.map +1 -0
  39. package/dist/m3/deserializer.d.ts +8 -0
  40. package/dist/m3/deserializer.d.ts.map +1 -0
  41. package/dist/m3/deserializer.js +16 -0
  42. package/dist/m3/deserializer.js.map +1 -0
  43. package/dist/m3/factory.d.ts +26 -0
  44. package/dist/m3/factory.d.ts.map +1 -0
  45. package/dist/m3/factory.js +48 -0
  46. package/dist/m3/factory.js.map +1 -0
  47. package/dist/m3/functions.d.ts +110 -0
  48. package/dist/m3/functions.d.ts.map +1 -0
  49. package/dist/m3/functions.js +145 -0
  50. package/dist/m3/functions.js.map +1 -0
  51. package/dist/m3/index.d.ts +12 -0
  52. package/dist/m3/index.d.ts.map +1 -0
  53. package/dist/m3/index.js +12 -0
  54. package/dist/m3/index.js.map +1 -0
  55. package/dist/m3/key-generation.d.ts +15 -0
  56. package/dist/m3/key-generation.d.ts.map +1 -0
  57. package/dist/m3/key-generation.js +11 -0
  58. package/dist/m3/key-generation.js.map +1 -0
  59. package/dist/m3/lioncore.d.ts +39 -0
  60. package/dist/m3/lioncore.d.ts.map +1 -0
  61. package/dist/m3/lioncore.js +150 -0
  62. package/dist/m3/lioncore.js.map +1 -0
  63. package/dist/m3/reference-checker.d.ts +6 -0
  64. package/dist/m3/reference-checker.d.ts.map +1 -0
  65. package/dist/m3/reference-checker.js +29 -0
  66. package/dist/m3/reference-checker.js.map +1 -0
  67. package/dist/m3/serializer.d.ts +9 -0
  68. package/dist/m3/serializer.d.ts.map +1 -0
  69. package/dist/m3/serializer.js +9 -0
  70. package/dist/m3/serializer.js.map +1 -0
  71. package/dist/m3/textual-syntax.d.ts +4 -0
  72. package/dist/m3/textual-syntax.d.ts.map +1 -0
  73. package/dist/m3/textual-syntax.js +57 -0
  74. package/dist/m3/textual-syntax.js.map +1 -0
  75. package/dist/m3/types.d.ts +117 -0
  76. package/dist/m3/types.d.ts.map +1 -0
  77. package/dist/m3/types.js +196 -0
  78. package/dist/m3/types.js.map +1 -0
  79. package/dist/references.d.ts +18 -0
  80. package/dist/references.d.ts.map +1 -0
  81. package/dist/references.js +10 -0
  82. package/dist/references.js.map +1 -0
  83. package/dist/serialization.d.ts +51 -0
  84. package/dist/serialization.d.ts.map +1 -0
  85. package/dist/serialization.js +5 -0
  86. package/dist/serialization.js.map +1 -0
  87. package/dist/serializer.d.ts +8 -0
  88. package/dist/serializer.d.ts.map +1 -0
  89. package/dist/serializer.js +101 -0
  90. package/dist/serializer.js.map +1 -0
  91. package/dist/types.d.ts +12 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +2 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/utils/array-helpers.d.ts +14 -0
  96. package/dist/utils/array-helpers.d.ts.map +1 -0
  97. package/dist/utils/array-helpers.js +15 -0
  98. package/dist/utils/array-helpers.js.map +1 -0
  99. package/dist/utils/cycles.d.ts +8 -0
  100. package/dist/utils/cycles.d.ts.map +1 -0
  101. package/dist/utils/cycles.js +26 -0
  102. package/dist/utils/cycles.js.map +1 -0
  103. package/dist/utils/grouping.d.ts +13 -0
  104. package/dist/utils/grouping.d.ts.map +1 -0
  105. package/dist/utils/grouping.js +26 -0
  106. package/dist/utils/grouping.js.map +1 -0
  107. package/dist/utils/index.d.ts +5 -0
  108. package/dist/utils/index.d.ts.map +1 -0
  109. package/dist/utils/index.js +5 -0
  110. package/dist/utils/index.js.map +1 -0
  111. package/dist/utils/recursion.d.ts +13 -0
  112. package/dist/utils/recursion.d.ts.map +1 -0
  113. package/dist/utils/recursion.js +21 -0
  114. package/dist/utils/recursion.js.map +1 -0
  115. package/dist/utils/sorting.d.ts +7 -0
  116. package/dist/utils/sorting.d.ts.map +1 -0
  117. package/dist/utils/sorting.js +7 -0
  118. package/dist/utils/sorting.js.map +1 -0
  119. package/package.json +23 -0
@@ -0,0 +1,57 @@
1
+ import { Concept, ConceptInterface, Containment, Enumeration, EnumerationLiteral, Language, PrimitiveType, Property, Reference } from "./types.js";
2
+ import { nameOf } from "./functions.js";
3
+ import { sortByStringKey } from "../utils/sorting.js";
4
+ import { unresolved } from "../references.js";
5
+ // TODO use littoral-templates?
6
+ const indent = (str) => str.split("\n").map((line) => ` ${line}`).join("\n");
7
+ const nameSorted = (ts) => sortByStringKey(ts, nameOf);
8
+ const descent = (ts, separator) => nameSorted(ts).map((t) => indent(indent(asText(t)))).join(separator);
9
+ const refAsText = (ref) => ref === unresolved ? `???` : ref.name;
10
+ const asText = (node) => {
11
+ if (node instanceof Concept) {
12
+ return `${node.partition ? `<<partition>> ` : ``}${node.abstract ? `abstract ` : ``}concept ${node.name}${node.extends === undefined ? `` : ` extends ${refAsText(node.extends)}`}${node.implements.length === 0 ? `` : ` implements ${sortByStringKey(node.implements, nameOf).map(nameOf).join(", ")}`}${node.features.length === 0 ? `` : `
13
+ features (↓name):
14
+ ${descent(node.features, "\n")}`}`;
15
+ }
16
+ if (node instanceof ConceptInterface) {
17
+ return `concept-interface ${node.name}${node.extends.length === 0 ? `` : ` extends ${sortByStringKey(node.extends, nameOf).map(nameOf).join(", ")}`}${node.features.length === 0 ? `` : `
18
+ features (↓name):
19
+ ${descent(node.features, "\n")}`}`;
20
+ }
21
+ if (node instanceof Containment) {
22
+ return `${node.name}: ${refAsText(node.type)}${node.multiple ? `[${node.optional ? `0` : `1`}..*]` : ``}${node.optional && !node.multiple ? `?` : ``}`;
23
+ }
24
+ if (node instanceof Enumeration) {
25
+ return `enumeration ${node.name}${node.literals.length === 0 ? `` : `
26
+ literals:
27
+ ${descent(node.literals, "\n")}`}`;
28
+ }
29
+ if (node instanceof EnumerationLiteral) {
30
+ return `${node.name}`;
31
+ }
32
+ if (node instanceof Language) {
33
+ return `language ${node.name}
34
+ version: ${node.version}${node.dependsOn.length > 0
35
+ ? ` dependsOn:
36
+ ${node.dependsOn.map((language) => ` ${language.key} (${language.version})`).join("\n")}
37
+ `
38
+ : ``}
39
+ entities (↓name):
40
+
41
+ ${descent(node.entities, "\n\n")}
42
+
43
+ `;
44
+ }
45
+ if (node instanceof PrimitiveType) {
46
+ return `primitive type ${node.name}`;
47
+ }
48
+ if (node instanceof Property) {
49
+ return `${node.name}: ${refAsText(node.type)}${node.optional ? `?` : ``}`;
50
+ }
51
+ if (node instanceof Reference) {
52
+ return `${node.name} -> ${refAsText(node.type)}${node.multiple ? `[${node.optional ? `0` : `1`}..*]` : ``}${node.optional && !node.multiple ? `?` : ``}`;
53
+ }
54
+ return `node (key=${node.key}, ID=${node.id}) of class ${node.constructor.name} not handled`;
55
+ };
56
+ export { asText };
57
+ //# sourceMappingURL=textual-syntax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textual-syntax.js","sourceRoot":"","sources":["../../src/m3/textual-syntax.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * TypeScript type definitions for the `LionCore` M3 (=meta-meta) model.
3
+ * A LionWeb language (at the M2 meta level) can be represented as an instance of the {@link Language} type.
4
+ */
5
+ import { MultiRef, SingleRef } from "../references.js";
6
+ import { Id, Node } from "../types.js";
7
+ import { KeyGenerator } from "./key-generation.js";
8
+ declare const lioncoreQNameSeparator = "-";
9
+ /**
10
+ * The qualified name of the LionCore language containing the built-in {@link PrimitiveType primitive types}.
11
+ * (It's defined here because its knowledge intrinsic to all LionCore M3 instances.
12
+ */
13
+ declare const lioncoreBuiltinsQName = "LionCore-builtins";
14
+ interface INamed extends Node {
15
+ name: string;
16
+ }
17
+ declare const isINamed: (node: Node) => node is INamed;
18
+ interface IKeyed extends INamed {
19
+ key: Id;
20
+ }
21
+ declare const isIKeyed: (node: Node) => node is IKeyed;
22
+ /**
23
+ * Abstract base class for nodes in an LionCore instance,
24
+ * providing an ID, a key, and the containment hierarchy.
25
+ */
26
+ declare abstract class M3Node implements IKeyed {
27
+ parent?: M3Node;
28
+ readonly id: Id;
29
+ name: string;
30
+ key: Id;
31
+ protected constructor(id: Id, name: string, key: Id, parent?: M3Node);
32
+ havingKey(key: Id): this;
33
+ /**
34
+ * Sets the key of this {@link M3Node} using the given {@link KeyGenerator key generator}.
35
+ * Note: this doesn't need to be idempotent!
36
+ */
37
+ keyed(keyGenerator: KeyGenerator): this;
38
+ }
39
+ declare abstract class Feature extends M3Node {
40
+ optional: boolean;
41
+ constructor(classifier: Classifier, name: string, key: string, id: Id);
42
+ isOptional(): this;
43
+ get classifier(): Classifier;
44
+ }
45
+ declare class Property extends Feature {
46
+ type: SingleRef<Datatype>;
47
+ ofType(type: Datatype): Property;
48
+ }
49
+ declare abstract class Link extends Feature {
50
+ multiple: boolean;
51
+ type: SingleRef<Classifier>;
52
+ isMultiple(): this;
53
+ ofType(type: Classifier): this;
54
+ }
55
+ declare class Containment extends Link {
56
+ }
57
+ declare class Reference extends Link {
58
+ }
59
+ declare abstract class LanguageEntity extends M3Node {
60
+ constructor(language: Language, name: string, key: Id, id: Id);
61
+ get language(): Language;
62
+ }
63
+ declare abstract class Classifier extends LanguageEntity {
64
+ features: Feature[];
65
+ havingFeatures(...features: Feature[]): this;
66
+ }
67
+ declare class Concept extends Classifier {
68
+ abstract: boolean;
69
+ partition: boolean;
70
+ extends?: SingleRef<Concept>;
71
+ implements: MultiRef<ConceptInterface>;
72
+ constructor(language: Language, name: string, key: string, id: Id, abstract: boolean, extends_?: SingleRef<Concept>);
73
+ implementing(...conceptInterfaces: ConceptInterface[]): Concept;
74
+ isPartition(): Concept;
75
+ }
76
+ declare class Annotation extends Classifier {
77
+ multiple: boolean;
78
+ extends?: SingleRef<Annotation>;
79
+ implements: MultiRef<ConceptInterface>;
80
+ constructor(language: Language, name: string, key: string, id: Id, extends_?: SingleRef<Annotation>);
81
+ implementing(...conceptInterfaces: ConceptInterface[]): Annotation;
82
+ isMultiple(): Annotation;
83
+ }
84
+ declare class ConceptInterface extends Classifier {
85
+ extends: MultiRef<ConceptInterface>;
86
+ extending(...conceptInterfaces: ConceptInterface[]): ConceptInterface;
87
+ }
88
+ declare abstract class Datatype extends LanguageEntity {
89
+ }
90
+ declare class PrimitiveType extends Datatype {
91
+ }
92
+ declare class Enumeration extends Datatype {
93
+ literals: EnumerationLiteral[];
94
+ havingLiterals(...literals: EnumerationLiteral[]): this;
95
+ }
96
+ declare class EnumerationLiteral extends M3Node {
97
+ constructor(enumeration: Enumeration, name: string, key: string, id: Id);
98
+ get enumeration(): Enumeration;
99
+ }
100
+ declare class Language extends M3Node {
101
+ version: string;
102
+ entities: LanguageEntity[];
103
+ dependsOn: MultiRef<Language>;
104
+ constructor(name: string, version: string, id: Id, key: Id);
105
+ havingEntities(...elements: LanguageEntity[]): Language;
106
+ dependingOn(...metamodels: Language[]): Language;
107
+ equals(that: Language): boolean;
108
+ }
109
+ /**
110
+ * Sum type of all LionCore type definitions whose meta-type is a concrete (thus: instantiable) Concept.
111
+ * All the classes in this sum type extend (from) {@link M3Node},
112
+ * so they also implement {@link INamed} and {@link IKeyed}.
113
+ */
114
+ type M3Concept = Annotation | Concept | ConceptInterface | Containment | Enumeration | EnumerationLiteral | Language | PrimitiveType | Property | Reference;
115
+ export { Annotation, Classifier, Concept, ConceptInterface, Containment, Datatype, Enumeration, EnumerationLiteral, Feature, Language, LanguageEntity, Link, PrimitiveType, Property, Reference, isINamed, isIKeyed, lioncoreBuiltinsQName, lioncoreQNameSeparator };
116
+ export type { IKeyed, INamed, M3Concept, M3Node };
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/m3/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * TypeScript type definitions for the `LionCore` M3 (=meta-meta) model.
3
+ * A LionWeb language (at the M2 meta level) can be represented as an instance of the {@link Language} type.
4
+ */
5
+ import { unresolved } from "../references.js";
6
+ const lioncoreQNameSeparator = "-";
7
+ /**
8
+ * The qualified name of the LionCore language containing the built-in {@link PrimitiveType primitive types}.
9
+ * (It's defined here because its knowledge intrinsic to all LionCore M3 instances.
10
+ */
11
+ const lioncoreBuiltinsQName = "LionCore-builtins";
12
+ const isINamed = (node) => "name" in node && typeof node.name === "string";
13
+ const isIKeyed = (node) => isINamed(node) && "key" in node && typeof node.key === "string";
14
+ /**
15
+ * Abstract base class for nodes in an LionCore instance,
16
+ * providing an ID, a key, and the containment hierarchy.
17
+ */
18
+ class M3Node {
19
+ constructor(id, name, key, parent) {
20
+ this.id = id;
21
+ this.name = name;
22
+ this.key = key;
23
+ this.parent = parent;
24
+ }
25
+ havingKey(key) {
26
+ this.key = key;
27
+ return this;
28
+ }
29
+ /**
30
+ * Sets the key of this {@link M3Node} using the given {@link KeyGenerator key generator}.
31
+ * Note: this doesn't need to be idempotent!
32
+ */
33
+ keyed(keyGenerator) {
34
+ this.key = keyGenerator(this);
35
+ // FIXME the cast smells like a hack...
36
+ return this;
37
+ }
38
+ }
39
+ class Feature extends M3Node {
40
+ // TODO look at order of constructors' arguments!
41
+ constructor(classifier, name, key, id) {
42
+ super(id, name, key, classifier);
43
+ this.optional /*: boolean */ = false;
44
+ }
45
+ isOptional() {
46
+ this.optional = true;
47
+ return this;
48
+ }
49
+ get classifier() {
50
+ return this.parent;
51
+ }
52
+ }
53
+ class Property extends Feature {
54
+ constructor() {
55
+ super(...arguments);
56
+ this.type = unresolved; // (reference)
57
+ }
58
+ ofType(type) {
59
+ this.type = type;
60
+ return this;
61
+ }
62
+ }
63
+ class Link extends Feature {
64
+ constructor() {
65
+ super(...arguments);
66
+ this.multiple /*: boolean */ = false;
67
+ this.type = unresolved; // (reference)
68
+ }
69
+ isMultiple() {
70
+ this.multiple = true;
71
+ return this;
72
+ }
73
+ ofType(type) {
74
+ this.type = type;
75
+ return this;
76
+ }
77
+ }
78
+ class Containment extends Link {
79
+ }
80
+ class Reference extends Link {
81
+ }
82
+ class LanguageEntity extends M3Node {
83
+ constructor(language, name, key, id) {
84
+ super(id, name, key, language);
85
+ }
86
+ get language() {
87
+ return this.parent;
88
+ }
89
+ }
90
+ class Classifier extends LanguageEntity {
91
+ constructor() {
92
+ super(...arguments);
93
+ this.features = []; // (containment)
94
+ }
95
+ havingFeatures(...features) {
96
+ // TODO check actual types of features, or use type shapes/interfaces
97
+ this.features.push(...features);
98
+ return this;
99
+ }
100
+ }
101
+ class Concept extends Classifier {
102
+ constructor(language, name, key, id, abstract, extends_) {
103
+ super(language, name, key, id);
104
+ this.implements = []; // (reference)
105
+ this.abstract = abstract;
106
+ this.extends = extends_;
107
+ this.partition = false;
108
+ }
109
+ implementing(...conceptInterfaces) {
110
+ // TODO check actual types of concept interfaces, or use type shapes/interfaces
111
+ this.implements.push(...conceptInterfaces);
112
+ return this;
113
+ }
114
+ isPartition() {
115
+ this.partition = true;
116
+ return this;
117
+ }
118
+ }
119
+ class Annotation extends Classifier {
120
+ constructor(language, name, key, id, extends_) {
121
+ super(language, name, key, id);
122
+ this.multiple /*: boolean */ = false;
123
+ this.implements = []; // (reference)
124
+ this.extends = extends_;
125
+ }
126
+ implementing(...conceptInterfaces) {
127
+ // TODO check actual types of concept interfaces, or use type shapes/interfaces
128
+ this.implements.push(...conceptInterfaces);
129
+ return this;
130
+ }
131
+ isMultiple() {
132
+ this.multiple = true;
133
+ return this;
134
+ }
135
+ }
136
+ class ConceptInterface extends Classifier {
137
+ constructor() {
138
+ super(...arguments);
139
+ this.extends = []; // (reference)
140
+ }
141
+ extending(...conceptInterfaces) {
142
+ // TODO check actual types of concept interfaces, or use type shapes/interfaces
143
+ this.extends.push(...conceptInterfaces);
144
+ return this;
145
+ }
146
+ }
147
+ class Datatype extends LanguageEntity {
148
+ }
149
+ class PrimitiveType extends Datatype {
150
+ }
151
+ class Enumeration extends Datatype {
152
+ constructor() {
153
+ super(...arguments);
154
+ this.literals = []; // (containment)
155
+ }
156
+ havingLiterals(...literals) {
157
+ this.literals.push(...literals);
158
+ return this;
159
+ }
160
+ }
161
+ class EnumerationLiteral extends M3Node {
162
+ constructor(enumeration, name, key, id) {
163
+ super(id, name, key, enumeration);
164
+ }
165
+ get enumeration() {
166
+ return this.parent;
167
+ }
168
+ }
169
+ class Language extends M3Node {
170
+ // (!) special because deserializer needs to be aware of where to get the instance from
171
+ constructor(name, version, id, key) {
172
+ super(id, name, key);
173
+ this.entities = []; // (containment)
174
+ this.dependsOn = []; // special (!) reference
175
+ this.version = version;
176
+ }
177
+ havingEntities(...elements) {
178
+ const nonLanguageElements = elements.filter((element) => !(element instanceof LanguageEntity));
179
+ if (nonLanguageElements.length > 0) {
180
+ throw Error(`trying to add non-LanguageElements to Language: ${nonLanguageElements.map((node) => `<${node.constructor.name}>"${node.name}"`).join(", ")}`);
181
+ }
182
+ this.entities.push(...elements);
183
+ return this;
184
+ }
185
+ dependingOn(...metamodels) {
186
+ // TODO check actual types of metamodels, or use type shapes/interfaces
187
+ this.dependsOn.push(...metamodels
188
+ .filter((metamodel) => metamodel.name !== lioncoreBuiltinsQName));
189
+ return this;
190
+ }
191
+ equals(that) {
192
+ return this.key === that.key && this.version === that.version;
193
+ }
194
+ }
195
+ export { Annotation, Classifier, Concept, ConceptInterface, Containment, Datatype, Enumeration, EnumerationLiteral, Feature, Language, LanguageEntity, Link, PrimitiveType, Property, Reference, isINamed, isIKeyed, lioncoreBuiltinsQName, lioncoreQNameSeparator };
196
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/m3/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The `unresolved` symbol indicates a reference value which hasn't been resolved yet.
3
+ * It differs from an unset (`undefined`) value.
4
+ */
5
+ export declare const unresolved: null;
6
+ /**
7
+ * A type definition for a reference value that can be unresolved.
8
+ */
9
+ export type SingleRef<T> = typeof unresolved | T;
10
+ /**
11
+ * Checks whether a given (at most) single-valued reference actually refers to something.
12
+ */
13
+ export declare const isRef: <T>(ref?: SingleRef<T> | undefined) => ref is T;
14
+ /**
15
+ * A type alias for a multi-valued reference, to make it look consistent with {@link SingleRef}.
16
+ */
17
+ export type MultiRef<T> = T[];
18
+ //# sourceMappingURL=references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,UAAU,MAAO,CAAA;AAE9B;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,OAAO,UAAU,GAAG,CAAC,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,KAAK,iDACyB,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The `unresolved` symbol indicates a reference value which hasn't been resolved yet.
3
+ * It differs from an unset (`undefined`) value.
4
+ */
5
+ export const unresolved = null;
6
+ /**
7
+ * Checks whether a given (at most) single-valued reference actually refers to something.
8
+ */
9
+ export const isRef = (ref) => ref !== undefined && ref !== unresolved;
10
+ //# sourceMappingURL=references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAA;AAO9B;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAI,GAAkB,EAAY,EAAE,CACrD,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,UAAU,CAAA"}
@@ -0,0 +1,51 @@
1
+ import { Id } from "./types.js";
2
+ export type Ids = Id[];
3
+ export type MetaPointer = {
4
+ language: string;
5
+ version: string;
6
+ key: string;
7
+ };
8
+ export type SerializedProperty = {
9
+ property: MetaPointer;
10
+ value: string;
11
+ };
12
+ export type SerializedContainment = {
13
+ containment: MetaPointer;
14
+ children: Ids;
15
+ };
16
+ export type SerializedReferenceTarget = {
17
+ resolveInfo?: string;
18
+ reference: Id;
19
+ };
20
+ export type SerializedReference = {
21
+ reference: MetaPointer;
22
+ targets: SerializedReferenceTarget[];
23
+ };
24
+ /**
25
+ * Type definition for an AST node serialized to JSON.
26
+ */
27
+ export type SerializedNode = {
28
+ concept: MetaPointer;
29
+ id: string;
30
+ properties: SerializedProperty[];
31
+ children: SerializedContainment[];
32
+ references: SerializedReference[];
33
+ parent: Id | null;
34
+ };
35
+ export type SerializedLanguageReference = {
36
+ key: string;
37
+ version: string;
38
+ };
39
+ /**
40
+ * The <em>current</em> version of the serialization format.
41
+ */
42
+ export declare const currentSerializationFormatVersion = "2023.1";
43
+ /**
44
+ * Type definition for a serialization of a whole model to JSON.
45
+ */
46
+ export type SerializationChunk = {
47
+ serializationFormatVersion: string;
48
+ languages: SerializedLanguageReference[];
49
+ nodes: SerializedNode[];
50
+ };
51
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,YAAY,CAAA;AAG7B,MAAM,MAAM,GAAG,GAAG,EAAE,EAAE,CAAA;AAGtB,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,EAAE,WAAW,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,GAAG,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,SAAS,EAAE,WAAW,CAAA;IACtB,OAAO,EAAE,yBAAyB,EAAE,CAAA;CACvC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB,OAAO,EAAE,WAAW,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,kBAAkB,EAAE,CAAA;IAChC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;IACjC,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAA;CACpB,CAAA;AAGD,MAAM,MAAM,2BAA2B,GAAG;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAClB,CAAA;AAGD;;GAEG;AACH,eAAO,MAAM,iCAAiC,WAAW,CAAA;AAEzD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,0BAA0B,EAAE,MAAM,CAAA;IAClC,SAAS,EAAE,2BAA2B,EAAE,CAAA;IACxC,KAAK,EAAE,cAAc,EAAE,CAAA;CAC1B,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The <em>current</em> version of the serialization format.
3
+ */
4
+ export const currentSerializationFormatVersion = "2023.1";
5
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAmDA;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,QAAQ,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { ReadModelAPI } from "./api.js";
2
+ import { SerializationChunk } from "./serialization.js";
3
+ import { Node } from "./types.js";
4
+ /**
5
+ * @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
+ */
7
+ export declare const serializeNodes: <NT extends Node>(nodes: NT[], api: ReadModelAPI<NT>) => SerializationChunk;
8
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,UAAU,CAAA;AACrC,OAAO,EAAiD,kBAAkB,EAAiB,MAAM,oBAAoB,CAAA;AAErH,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAA;AAO/B;;GAEG;AACH,eAAO,MAAM,cAAc,2DAA0D,kBA8FpF,CAAA"}
@@ -0,0 +1,101 @@
1
+ import { currentSerializationFormatVersion } from "./serialization.js";
2
+ import { asIds } from "./functions.js";
3
+ import { Containment, Enumeration, isINamed, PrimitiveType, Property, Reference } from "./m3/types.js";
4
+ import { allFeaturesOf } from "./m3/functions.js";
5
+ import { asArray } from "./utils/array-helpers.js";
6
+ import { lioncoreBuiltins, serializeBuiltin } from "./m3/builtins.js";
7
+ /**
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
+ */
10
+ export const serializeNodes = (nodes, api) => {
11
+ const serializedNodes = []; // keep nodes as much as possible "in order"
12
+ const ids = {}; // maintain a map to keep track of IDs of nodes that have been serialized
13
+ const languagesUsed = [];
14
+ const registerLanguageUsed = (language) => {
15
+ if (!languagesUsed.some((languageUsed) => language.equals(languageUsed))) {
16
+ languagesUsed.push(language);
17
+ }
18
+ };
19
+ const visit = (node, parent) => {
20
+ if (ids[node.id]) {
21
+ return;
22
+ }
23
+ const concept = api.conceptOf(node);
24
+ const language = concept.language;
25
+ registerLanguageUsed(language);
26
+ const serializedNode = {
27
+ id: node.id,
28
+ concept: {
29
+ language: language.key,
30
+ version: language.version,
31
+ key: concept.key
32
+ },
33
+ properties: [],
34
+ children: [],
35
+ references: [],
36
+ parent: null
37
+ };
38
+ serializedNodes.push(serializedNode);
39
+ ids[node.id] = true;
40
+ allFeaturesOf(concept).forEach((feature) => {
41
+ const value = api.getFeatureValue(node, feature);
42
+ const featureLanguage = feature.classifier.language;
43
+ registerLanguageUsed(featureLanguage);
44
+ const featureMetaPointer = {
45
+ language: featureLanguage.key,
46
+ version: featureLanguage.version,
47
+ key: feature.key
48
+ };
49
+ if (feature instanceof Property && value !== undefined) {
50
+ const encodedValue = (() => {
51
+ // (could also just inspect type of value:)
52
+ if (feature.type instanceof PrimitiveType) {
53
+ return serializeBuiltin(value);
54
+ }
55
+ if (feature.type instanceof Enumeration) {
56
+ return api.enumerationLiteralFrom(value, feature.type)?.key
57
+ ?? null; // (undefined -> null)
58
+ }
59
+ return null;
60
+ })();
61
+ if (encodedValue !== null) {
62
+ serializedNode.properties.push({
63
+ property: featureMetaPointer,
64
+ value: encodedValue
65
+ });
66
+ }
67
+ return;
68
+ }
69
+ if (feature instanceof Containment) {
70
+ const children = asArray(value);
71
+ serializedNode.children.push({
72
+ containment: featureMetaPointer,
73
+ children: asIds(children)
74
+ });
75
+ children.forEach((child) => visit(child, node));
76
+ return;
77
+ }
78
+ if (feature instanceof Reference) {
79
+ const targets = asArray(value);
80
+ serializedNode.references.push({
81
+ reference: featureMetaPointer,
82
+ targets: targets.map((t) => ({
83
+ resolveInfo: isINamed(t) ? t.name : undefined,
84
+ reference: t.id
85
+ }))
86
+ });
87
+ return;
88
+ }
89
+ });
90
+ serializedNode.parent = parent?.id ?? null; // (undefined -> null)
91
+ };
92
+ nodes.forEach((node) => visit(node, undefined));
93
+ return {
94
+ serializationFormatVersion: currentSerializationFormatVersion,
95
+ languages: languagesUsed
96
+ .filter((language) => !language.equals(lioncoreBuiltins))
97
+ .map(({ key, version }) => ({ key, version })),
98
+ nodes: serializedNodes
99
+ };
100
+ };
101
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Type definition for LionWeb-compliant IDs of AST nodes.
3
+ */
4
+ export type Id = string;
5
+ /**
6
+ * Type definition for a LionWeb-compliant AST node.
7
+ */
8
+ export type Node = {
9
+ id: Id;
10
+ parent?: Node;
11
+ };
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,EAAE,GAAG,MAAM,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG;IACf,EAAE,EAAE,EAAE,CAAA;IACN,MAAM,CAAC,EAAE,IAAI,CAAA;CAChB,CAAA"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}