@lionweb/class-core 0.8.0-beta.6 → 0.8.0-beta.8
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 +6 -0
- package/README.md +7 -0
- package/dist/base-types.d.ts +4 -4
- package/dist/base-types.d.ts.map +1 -1
- package/dist/deltas/appliers.d.ts.map +1 -1
- package/dist/deltas/appliers.js +9 -8
- package/dist/deltas/appliers.js.map +1 -1
- package/dist/deltas/inverters.js +3 -3
- package/dist/deltas/inverters.js.map +1 -1
- package/dist/deltas/serialization/base.d.ts.map +1 -1
- package/dist/deltas/serialization/base.js +2 -2
- package/dist/deltas/serialization/base.js.map +1 -1
- package/dist/deltas/serialization/deserializer.g.js +58 -58
- package/dist/deltas/serialization/deserializer.g.js.map +1 -1
- package/dist/deltas/serialization/serializer.g.js +4 -4
- package/dist/deltas/serialization/serializer.g.js.map +1 -1
- package/dist/deltas/serialization/types.g.d.ts +4 -4
- package/dist/deltas/serialization/types.g.d.ts.map +1 -1
- package/dist/deltas/types.g.d.ts +8 -8
- package/dist/deltas/types.g.d.ts.map +1 -1
- package/dist/deltas/types.g.js +7 -7
- package/dist/deltas/types.g.js.map +1 -1
- package/dist/deserializer.d.ts +1 -1
- package/dist/deserializer.d.ts.map +1 -1
- package/dist/deserializer.js +3 -3
- package/dist/deserializer.js.map +1 -1
- package/dist/id-mapping.d.ts +16 -10
- package/dist/id-mapping.d.ts.map +1 -1
- package/dist/id-mapping.js +21 -6
- package/dist/id-mapping.js.map +1 -1
- package/dist/references.d.ts +3 -4
- package/dist/references.d.ts.map +1 -1
- package/dist/references.js +1 -1
- package/dist/references.js.map +1 -1
- package/dist/serializer.d.ts +2 -2
- package/dist/serializer.d.ts.map +1 -1
- package/dist/serializer.js +13 -9
- package/dist/serializer.js.map +1 -1
- package/dist/textualizer.d.ts +2 -1
- package/dist/textualizer.d.ts.map +1 -1
- package/dist/textualizer.js +13 -1
- package/dist/textualizer.js.map +1 -1
- package/dist/value-managers/references.d.ts +8 -8
- package/dist/value-managers/references.d.ts.map +1 -1
- package/dist/value-managers/references.js.map +1 -1
- package/package.json +5 -5
- package/src/base-types.ts +4 -4
- package/src/deltas/appliers.ts +16 -15
- package/src/deltas/inverters.ts +3 -3
- package/src/deltas/serialization/base.ts +2 -2
- package/src/deltas/serialization/deserializer.g.ts +58 -58
- package/src/deltas/serialization/serializer.g.ts +4 -4
- package/src/deltas/serialization/types.g.ts +4 -4
- package/src/deltas/types.g.ts +5 -4
- package/src/deserializer.ts +4 -4
- package/src/id-mapping.ts +29 -14
- package/src/references.ts +3 -5
- package/src/serializer.ts +17 -11
- package/src/textualizer.ts +20 -2
- package/src/value-managers/references.ts +8 -8
|
@@ -249,7 +249,7 @@ export type ReferenceAddedSerializedDelta = {
|
|
|
249
249
|
parent: LionWebId
|
|
250
250
|
reference: LionWebJsonMetaPointer
|
|
251
251
|
index: number
|
|
252
|
-
|
|
252
|
+
newReference: IdOrNull
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
export type ReferenceDeletedSerializedDelta = {
|
|
@@ -257,7 +257,7 @@ export type ReferenceDeletedSerializedDelta = {
|
|
|
257
257
|
parent: LionWebId
|
|
258
258
|
reference: LionWebJsonMetaPointer
|
|
259
259
|
index: number
|
|
260
|
-
|
|
260
|
+
deletedReference: IdOrNull
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
export type ReferenceChangedSerializedDelta = {
|
|
@@ -265,8 +265,8 @@ export type ReferenceChangedSerializedDelta = {
|
|
|
265
265
|
parent: LionWebId
|
|
266
266
|
reference: LionWebJsonMetaPointer
|
|
267
267
|
index: number
|
|
268
|
-
|
|
269
|
-
|
|
268
|
+
newReference: IdOrNull
|
|
269
|
+
oldReference: IdOrNull
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
export type CompositeSerializedDelta = {
|
package/src/deltas/types.g.ts
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
import {
|
|
22
22
|
Containment,
|
|
23
|
+
Node,
|
|
23
24
|
Property,
|
|
24
25
|
Reference,
|
|
25
26
|
SingleRef
|
|
@@ -254,7 +255,7 @@ export class ReferenceAddedDelta implements IDelta {
|
|
|
254
255
|
public readonly parent: INodeBase,
|
|
255
256
|
public readonly reference: Reference,
|
|
256
257
|
public readonly index: number,
|
|
257
|
-
public readonly
|
|
258
|
+
public readonly newReference: SingleRef<Node>
|
|
258
259
|
) {
|
|
259
260
|
}
|
|
260
261
|
}
|
|
@@ -264,7 +265,7 @@ export class ReferenceDeletedDelta implements IDelta {
|
|
|
264
265
|
public readonly parent: INodeBase,
|
|
265
266
|
public readonly reference: Reference,
|
|
266
267
|
public readonly index: number,
|
|
267
|
-
public readonly
|
|
268
|
+
public readonly deletedReference: SingleRef<Node>
|
|
268
269
|
) {
|
|
269
270
|
}
|
|
270
271
|
}
|
|
@@ -274,8 +275,8 @@ export class ReferenceChangedDelta implements IDelta {
|
|
|
274
275
|
public readonly parent: INodeBase,
|
|
275
276
|
public readonly reference: Reference,
|
|
276
277
|
public readonly index: number,
|
|
277
|
-
public readonly
|
|
278
|
-
public readonly
|
|
278
|
+
public readonly newReference: SingleRef<Node>,
|
|
279
|
+
public readonly oldReference: SingleRef<Node>
|
|
279
280
|
) {
|
|
280
281
|
}
|
|
281
282
|
}
|
package/src/deserializer.ts
CHANGED
|
@@ -19,8 +19,8 @@ import {
|
|
|
19
19
|
Classifier,
|
|
20
20
|
consoleProblemReporter,
|
|
21
21
|
Containment,
|
|
22
|
-
defaultLionWebVersion,
|
|
23
22
|
Enumeration,
|
|
23
|
+
LionWebVersions,
|
|
24
24
|
MemoisingSymbolTable,
|
|
25
25
|
PrimitiveType,
|
|
26
26
|
ProblemReporter,
|
|
@@ -61,7 +61,7 @@ export type RootsWithIdMapping = { roots: INodeBase[], idMapping: IdMapping };
|
|
|
61
61
|
*/
|
|
62
62
|
export type DeserializerConfiguration = {
|
|
63
63
|
// FIXME parametrize (optionally) in LionWebVersion
|
|
64
|
-
/** Default:
|
|
64
|
+
/** Default: `lioncoreBuiltinsFacade.propertyValueDeserializer`. */
|
|
65
65
|
propertyValueDeserializer?: PropertyValueDeserializer,
|
|
66
66
|
/** Default: {@link consoleProblemReporter}. */
|
|
67
67
|
problemReporter?: ProblemReporter
|
|
@@ -83,8 +83,8 @@ function nodeBaseDeserializerWithIdMapping(languageBases: ILanguageBase[], recei
|
|
|
83
83
|
function nodeBaseDeserializerWithIdMapping(configuration: FactoryConfiguration & DeserializerConfiguration): Deserializer<RootsWithIdMapping>;
|
|
84
84
|
function nodeBaseDeserializerWithIdMapping(languageBasesOrConfiguration: ILanguageBase[] | (FactoryConfiguration & DeserializerConfiguration), mayBeReceiveDelta?: DeltaReceiver): Deserializer<RootsWithIdMapping> {
|
|
85
85
|
const [languageBases, receiveDelta, propertyValueDeserializer, problemReporter] = Array.isArray(languageBasesOrConfiguration)
|
|
86
|
-
? [languageBasesOrConfiguration, mayBeReceiveDelta,
|
|
87
|
-
: [languageBasesOrConfiguration.languageBases, languageBasesOrConfiguration.receiveDelta, languageBasesOrConfiguration.propertyValueDeserializer ??
|
|
86
|
+
? [languageBasesOrConfiguration, mayBeReceiveDelta, LionWebVersions.v2023_1.builtinsFacade.propertyValueDeserializer, consoleProblemReporter]
|
|
87
|
+
: [languageBasesOrConfiguration.languageBases, languageBasesOrConfiguration.receiveDelta, languageBasesOrConfiguration.propertyValueDeserializer ?? LionWebVersions.v2023_1.builtinsFacade.propertyValueDeserializer, languageBasesOrConfiguration.problemReporter ?? languageBasesOrConfiguration.problemsHandler ?? consoleProblemReporter];
|
|
88
88
|
|
|
89
89
|
const symbolTable = new MemoisingSymbolTable(languageBases.map(({language}) => language));
|
|
90
90
|
const languageBaseFor = combinedLanguageBaseLookupFor(languageBases);
|
package/src/id-mapping.ts
CHANGED
|
@@ -15,17 +15,17 @@
|
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
|
|
18
|
-
import { referenceToSet, SingleRef } from "@lionweb/core"
|
|
18
|
+
import { Node, referenceToSet, SingleRef } from "@lionweb/core"
|
|
19
19
|
import { LionWebId } from "@lionweb/json"
|
|
20
20
|
|
|
21
|
-
import { INodeBase } from "./base-types.js"
|
|
21
|
+
import { INodeBase, NodeBase } from "./base-types.js"
|
|
22
22
|
import { IdOrNull } from "./references.js"
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* Type def. for a (hash-)map {@link LionWebId ID} → {@link
|
|
26
|
+
* Type def. for a (hash-)map {@link LionWebId ID} → {@link Node}.
|
|
27
27
|
*/
|
|
28
|
-
type NodesById = { [id: LionWebId]:
|
|
28
|
+
type NodesById = { [id: LionWebId]: Node }
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
/**
|
|
@@ -39,13 +39,13 @@ export class IdMapping {
|
|
|
39
39
|
constructor(nodesById: NodesById) {
|
|
40
40
|
this.nodesById = {...nodesById};
|
|
41
41
|
}
|
|
42
|
-
// TODO consider using an instance of Map<Id,
|
|
42
|
+
// TODO consider using an instance of Map<Id, Node> instead
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
|
-
* @return the {@link
|
|
45
|
+
* @return the {@link Node node} with the given {@link LionWebId `id`}, or
|
|
46
46
|
* @throws an Error if no node with the given ID was registered.
|
|
47
47
|
*/
|
|
48
|
-
fromId = (id: LionWebId):
|
|
48
|
+
fromId = (id: LionWebId): Node => {
|
|
49
49
|
if (!(id in this.nodesById)) {
|
|
50
50
|
throw new Error(`node with id=${id} not in ID mapping`);
|
|
51
51
|
}
|
|
@@ -53,17 +53,30 @@ export class IdMapping {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
|
-
* @return the {@link INodeBase node} with the given {@link LionWebId `id`},
|
|
56
|
+
* @return the {@link INodeBase node} with the given {@link LionWebId `id`}, or
|
|
57
|
+
* @throws an Error if no node with the given ID was registered, or
|
|
58
|
+
* if the node is not a {@link INodeBase}.
|
|
59
|
+
*/
|
|
60
|
+
nodeBaseFromId = (id: LionWebId): INodeBase => {
|
|
61
|
+
const node = this.fromId(id);
|
|
62
|
+
if (node instanceof NodeBase) {
|
|
63
|
+
return node;
|
|
64
|
+
}
|
|
65
|
+
throw new Error(`node with id=${id} is not a[n I]NodeBase`)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @return the {@link Node node} with the given {@link LionWebId `id`},
|
|
57
70
|
* or `undefined` if no node with the given ID was registered.
|
|
58
71
|
*/
|
|
59
|
-
tryFromId = (id: LionWebId): (
|
|
72
|
+
tryFromId = (id: LionWebId): (Node | undefined) =>
|
|
60
73
|
this.nodesById[id];
|
|
61
74
|
|
|
62
75
|
/**
|
|
63
|
-
* @return the {@link
|
|
76
|
+
* @return the {@link Node node} referenced from the given {@link LionWebId ID},
|
|
64
77
|
* or `unresolved` if `unresolved` was passed in or no node with the given ID was registered.
|
|
65
78
|
*/
|
|
66
|
-
fromRefId = (idOrNull: IdOrNull): SingleRef<
|
|
79
|
+
fromRefId = (idOrNull: IdOrNull): SingleRef<Node> =>
|
|
67
80
|
idOrNull === null
|
|
68
81
|
? referenceToSet()
|
|
69
82
|
: (this.nodesById[idOrNull] ?? referenceToSet());
|
|
@@ -71,10 +84,12 @@ export class IdMapping {
|
|
|
71
84
|
/**
|
|
72
85
|
* Updates this {@link IdMapping} with the given `node` *and all its descendants* (recursively).
|
|
73
86
|
*/
|
|
74
|
-
updateWith = (node:
|
|
87
|
+
updateWith = (node: Node) => {
|
|
75
88
|
this.nodesById[node.id] = node;
|
|
76
|
-
node
|
|
77
|
-
.
|
|
89
|
+
if (node instanceof NodeBase) {
|
|
90
|
+
node.children // recurse into all children
|
|
91
|
+
.forEach((child) => this.updateWith(child));
|
|
92
|
+
}
|
|
78
93
|
// TODO figure out when it's really necessary to call this, as it's potentially *very* expensive
|
|
79
94
|
}
|
|
80
95
|
|
package/src/references.ts
CHANGED
|
@@ -15,11 +15,9 @@
|
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
|
|
18
|
-
import { isUnresolvedReference, SingleRef } from "@lionweb/core"
|
|
18
|
+
import { isUnresolvedReference, Node, SingleRef } from "@lionweb/core"
|
|
19
19
|
import { LionWebId } from "@lionweb/json"
|
|
20
20
|
|
|
21
|
-
import { INodeBase } from "./base-types.js"
|
|
22
|
-
|
|
23
21
|
|
|
24
22
|
/**
|
|
25
23
|
* A type that expresses a value is either an {@link LionWebId} or a value to indicate that resolution to a node previously failed.
|
|
@@ -28,8 +26,8 @@ export type IdOrNull = LionWebId | null
|
|
|
28
26
|
|
|
29
27
|
|
|
30
28
|
/**
|
|
31
|
-
* @return the ID of a given reference to a {@link
|
|
29
|
+
* @return the ID of a given reference to a {@link Node}, or `null` if that reference was previously unresolved.
|
|
32
30
|
*/
|
|
33
|
-
export const idFrom = (ref: SingleRef<
|
|
31
|
+
export const idFrom = (ref: SingleRef<Node>): IdOrNull =>
|
|
34
32
|
isUnresolvedReference(ref) ? null : ref.id
|
|
35
33
|
|
package/src/serializer.ts
CHANGED
|
@@ -16,12 +16,14 @@
|
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
|
|
18
18
|
import {
|
|
19
|
+
allLionWebVersions,
|
|
19
20
|
allSuperTypesOf,
|
|
20
21
|
Containment,
|
|
21
|
-
defaultLionWebVersion,
|
|
22
22
|
Enumeration,
|
|
23
23
|
Feature,
|
|
24
24
|
isUnresolvedReference,
|
|
25
|
+
LionWebVersions,
|
|
26
|
+
Node,
|
|
25
27
|
PrimitiveType,
|
|
26
28
|
Property,
|
|
27
29
|
PropertyValueSerializer,
|
|
@@ -31,7 +33,7 @@ import {
|
|
|
31
33
|
serializerWith
|
|
32
34
|
} from "@lionweb/core"
|
|
33
35
|
|
|
34
|
-
import { INodeBase, LionCore_builtinsBase } from "./index.js"
|
|
36
|
+
import { INodeBase, LionCore_builtinsBase, NodeBase } from "./index.js"
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
/**
|
|
@@ -55,7 +57,7 @@ export const getFeatureValue = (node: INodeBase, feature: Feature) => {
|
|
|
55
57
|
* A {@link ResolveInfoDeducer} that works on {@link INodeBase}s.
|
|
56
58
|
* *Note*: the {@link Reference} passed is not taken into account (yet).
|
|
57
59
|
*/
|
|
58
|
-
const nodeBaseResolveInfoDeducer: ResolveInfoDeducer<
|
|
60
|
+
const nodeBaseResolveInfoDeducer: ResolveInfoDeducer<Node> = (node, _reference) => {
|
|
59
61
|
// TODO put innards in separate function
|
|
60
62
|
if ("name" in node) {
|
|
61
63
|
// evaluating `node.name` might cause an error through FeatureValueManager.throwOnReadOfUnset:
|
|
@@ -66,12 +68,16 @@ const nodeBaseResolveInfoDeducer: ResolveInfoDeducer<INodeBase> = (node, _refere
|
|
|
66
68
|
return undefined;
|
|
67
69
|
}
|
|
68
70
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
if (node instanceof NodeBase) {
|
|
72
|
+
const allSupertypes = allSuperTypesOf(node.classifier);
|
|
73
|
+
allLionWebVersions.forEach((lionWebVersion) => {
|
|
74
|
+
if (allSupertypes.indexOf(lionWebVersion.builtinsFacade.classifiers.inamed) > -1) {
|
|
75
|
+
return node.getPropertyValueManager(lionWebVersion.builtinsFacade.features.inamed_name).getDirectly() as (string | undefined);
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
if (allSupertypes.indexOf(LionCore_builtinsBase.INSTANCE.INamed) > -1) {
|
|
79
|
+
return node.getPropertyValueManager(LionCore_builtinsBase.INSTANCE.INamed_name).getDirectly() as (string | undefined);
|
|
80
|
+
}
|
|
75
81
|
}
|
|
76
82
|
return undefined;
|
|
77
83
|
};
|
|
@@ -80,7 +86,7 @@ const nodeBaseResolveInfoDeducer: ResolveInfoDeducer<INodeBase> = (node, _refere
|
|
|
80
86
|
* A {@link Reader} that works on/for {@link INodeBase}s specifically.
|
|
81
87
|
* **Note** that this function is for internal use only!
|
|
82
88
|
*/
|
|
83
|
-
export const nodeBaseReader: Reader<INodeBase> = {
|
|
89
|
+
export const nodeBaseReader: Reader<INodeBase, Node> = {
|
|
84
90
|
classifierOf: (node) => node.classifier,
|
|
85
91
|
getFeatureValue,
|
|
86
92
|
enumerationLiteralFrom: (encoding, enumeration) => {
|
|
@@ -109,7 +115,7 @@ type PropertyValueSerializerConfiguration = Partial<{
|
|
|
109
115
|
* Unrecoverable issues are passed to the optional `reportIssue` argument, and
|
|
110
116
|
*/
|
|
111
117
|
export const propertyValueSerializerWith = (configuration?: PropertyValueSerializerConfiguration) => {
|
|
112
|
-
const primitiveValueSerializer = configuration?.primitiveValueSerializer ??
|
|
118
|
+
const primitiveValueSerializer = configuration?.primitiveValueSerializer ?? LionWebVersions.v2023_1.builtinsFacade.propertyValueSerializer
|
|
113
119
|
const reportIssue = configuration?.reportIssue ?? ((message) => { throw new Error(message) })
|
|
114
120
|
return {
|
|
115
121
|
serializeValue: (value: unknown, property: Property) => {
|
package/src/textualizer.ts
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
Feature,
|
|
22
22
|
isUnresolvedReference,
|
|
23
23
|
Link,
|
|
24
|
+
Node,
|
|
24
25
|
Property,
|
|
25
26
|
Reference,
|
|
26
27
|
UnresolvedReference
|
|
@@ -53,12 +54,29 @@ const asINodeBases = (value: INodeBaseOrNotThere | INodeBaseOrNotThere[]): INode
|
|
|
53
54
|
return []
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
type NodeOrNotThere = Node | UnresolvedReference | undefined
|
|
58
|
+
|
|
59
|
+
const asNodes = (value: NodeOrNotThere | NodeOrNotThere[]): Node[] => {
|
|
60
|
+
const isNode = (value: NodeOrNotThere): value is Node =>
|
|
61
|
+
!(value === undefined || isUnresolvedReference(value))
|
|
62
|
+
|
|
63
|
+
if (Array.isArray(value)) {
|
|
64
|
+
return value
|
|
65
|
+
.filter((subValue) => isNode(subValue))
|
|
66
|
+
.map((subValue) => subValue as Node)
|
|
67
|
+
}
|
|
68
|
+
if (isNode(value)) {
|
|
69
|
+
return [value]
|
|
70
|
+
}
|
|
71
|
+
return []
|
|
72
|
+
}
|
|
73
|
+
|
|
56
74
|
|
|
57
75
|
/**
|
|
58
76
|
* @return a function that renders the roots of a given forest of {@link INodeBase nodes} in a textual tree-representation.
|
|
59
77
|
* @param identificationFor a function that renders an identification for the given {@link INodeBase node} — typically its name or its ID.
|
|
60
78
|
*/
|
|
61
|
-
export const asTreeTextWith = (identificationFor: (node:
|
|
79
|
+
export const asTreeTextWith = (identificationFor: (node: Node) => string): ((nodes: INodeBase[]) => string) => {
|
|
62
80
|
|
|
63
81
|
const asText = (node: INodeBase): Template => {
|
|
64
82
|
const featureValueAsText = (feature: Feature) => {
|
|
@@ -87,7 +105,7 @@ export const asTreeTextWith = (identificationFor: (node: INodeBase) => string):
|
|
|
87
105
|
}
|
|
88
106
|
if (feature instanceof Reference) {
|
|
89
107
|
const valueManager= node.getReferenceValueManager(feature)
|
|
90
|
-
const references =
|
|
108
|
+
const references = asNodes(valueManager.getDirectly())
|
|
91
109
|
return [
|
|
92
110
|
`${feature.name} -> ${references.length === 0 ? nothing : references.map(identificationFor).join(", ")}`
|
|
93
111
|
]
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
|
|
18
|
-
import { MultiRef, Reference, SingleRef } from "@lionweb/core"
|
|
18
|
+
import { MultiRef, Node, Reference, SingleRef } from "@lionweb/core"
|
|
19
19
|
import { action, observable } from "mobx"
|
|
20
20
|
|
|
21
21
|
import { INodeBase } from "../base-types.js"
|
|
@@ -26,7 +26,7 @@ import { checkIndex, FeatureValueManager } from "./base.js"
|
|
|
26
26
|
/**
|
|
27
27
|
* An instance manages the value of a particular reference feature on a particular instance of a classifier.
|
|
28
28
|
*/
|
|
29
|
-
export abstract class ReferenceValueManager<T extends
|
|
29
|
+
export abstract class ReferenceValueManager<T extends Node> extends FeatureValueManager<Reference> {
|
|
30
30
|
|
|
31
31
|
get reference(): Reference {
|
|
32
32
|
return this.feature;
|
|
@@ -44,7 +44,7 @@ export abstract class ReferenceValueManager<T extends INodeBase> extends Feature
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
export abstract class SingleReferenceValueManager<T extends
|
|
47
|
+
export abstract class SingleReferenceValueManager<T extends Node> extends ReferenceValueManager<T> {
|
|
48
48
|
|
|
49
49
|
protected constructor(reference: Reference, container: INodeBase) {
|
|
50
50
|
super(reference, container);
|
|
@@ -72,7 +72,7 @@ export abstract class SingleReferenceValueManager<T extends INodeBase> extends R
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
export class OptionalSingleReferenceValueManager<T extends
|
|
75
|
+
export class OptionalSingleReferenceValueManager<T extends Node> extends SingleReferenceValueManager<T> {
|
|
76
76
|
|
|
77
77
|
constructor(reference: Reference, container: INodeBase) {
|
|
78
78
|
super(reference, container);
|
|
@@ -109,7 +109,7 @@ export class OptionalSingleReferenceValueManager<T extends INodeBase> extends Si
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
|
|
112
|
-
export class RequiredSingleReferenceValueManager<T extends
|
|
112
|
+
export class RequiredSingleReferenceValueManager<T extends Node> extends SingleReferenceValueManager<T> {
|
|
113
113
|
|
|
114
114
|
constructor(reference: Reference, container: INodeBase) {
|
|
115
115
|
super(reference, container);
|
|
@@ -145,7 +145,7 @@ export class RequiredSingleReferenceValueManager<T extends INodeBase> extends Si
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
|
|
148
|
-
export abstract class MultiReferenceValueManager<T extends
|
|
148
|
+
export abstract class MultiReferenceValueManager<T extends Node> extends ReferenceValueManager<T> {
|
|
149
149
|
|
|
150
150
|
protected constructor(reference: Reference, container: INodeBase) {
|
|
151
151
|
super(reference, container);
|
|
@@ -233,7 +233,7 @@ export abstract class MultiReferenceValueManager<T extends INodeBase> extends Re
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
|
|
236
|
-
export class OptionalMultiReferenceValueManager<T extends
|
|
236
|
+
export class OptionalMultiReferenceValueManager<T extends Node> extends MultiReferenceValueManager<T> {
|
|
237
237
|
|
|
238
238
|
constructor(reference: Reference, container: INodeBase) {
|
|
239
239
|
super(reference, container);
|
|
@@ -250,7 +250,7 @@ export class OptionalMultiReferenceValueManager<T extends INodeBase> extends Mul
|
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
|
|
253
|
-
export class RequiredMultiReferenceValueManager<T extends
|
|
253
|
+
export class RequiredMultiReferenceValueManager<T extends Node> extends MultiReferenceValueManager<T> {
|
|
254
254
|
|
|
255
255
|
constructor(reference: Reference, container: INodeBase) {
|
|
256
256
|
super(reference, container);
|