@lionweb/class-core 0.6.13-beta.0 → 0.6.13-beta.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ # Changelog
2
+
3
+ ## 0.6.13
4
+
5
+ * Add a getter `referenceTargets` to `INodeBase` that – like the `children` getter for containments – returns an array of all nodes targeted by reference features (direct and inherited) of the classifier of the node.
6
+ *Note* that these getters are (in principle) meant *for internal use only*!
7
+
@@ -97,9 +97,16 @@ export interface INodeBase extends Node {
97
97
  get setFeatures(): Feature[];
98
98
  /**
99
99
  * @return all children – not all descendants! – of this node, including directly-contained annotations.
100
- *Note* that this is (in principle) **for internal use only**!
100
+ * Children appear uniquely, but their order is *not* guaranteed.
101
+ * *Note* that this is (in principle) **for internal use only**!
101
102
  */
102
103
  get children(): INodeBase[];
104
+ /**
105
+ * @return all nodes targeted by reference values on this node.
106
+ * Reference targets appear uniquely, but their order is *not* guaranteed.
107
+ * *Note* that this is (in principle) **for internal use only**!
108
+ */
109
+ get referenceTargets(): INodeBase[];
103
110
  /**
104
111
  * An optionally-installed {@link DeltaHandler}.
105
112
  */
@@ -136,6 +143,7 @@ export declare abstract class NodeBase implements INodeBase {
136
143
  getFeatureValueManager(feature: Feature): FeatureValueManager<Feature>;
137
144
  get setFeatures(): Feature[];
138
145
  get children(): INodeBase[];
146
+ get referenceTargets(): INodeBase[];
139
147
  readonly annotationsValueManager: AnnotationsValueManager;
140
148
  get annotations(): INodeBase[];
141
149
  addAnnotation(annotation: INodeBase): void;
@@ -1 +1 @@
1
- {"version":3,"file":"base-types.d.ts","sourceRoot":"","sources":["../src/base-types.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEH,UAAU,EAGV,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,SAAS,EACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EAEnB,oBAAoB,EACpB,qBAAqB,EAExB,MAAM,YAAY,CAAC;AAGpB;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,GAAG,IAAI,CAAE,CAAC;AAGrF;;;;;GAKG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI;IAEnC,UAAU,EAAE,UAAU,CAAC;IAEvB;;;;OAIG;IACH,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAE9B;;;;OAIG;IACH,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAE5C;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IAEnE;;;OAGG;IACH,MAAM,IAAI,IAAI,CAAC;IAGf;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE3E;;;OAGG;IACH,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAEzF;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAEjF;;;OAGG;IAEH,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEvE;;OAEG;IACH,uBAAuB,EAAE,uBAAuB,CAAC;IAEjD;;OAEG;IACH,WAAW,EAAE,SAAS,EAAE,CAAC;IAEzB;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;IAE3C;;;OAGG;IACH,uBAAuB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpE;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzD;;OAEG;IACH,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErE;;;OAGG;IACH,gBAAgB,CAAC,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;IAG9C;;;;;;;OAOG;IACH,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;IAE7B;;;OAGG;IACH,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;IAG5B;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAG3B;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;CAE3B;AAGD;;;;;;;;;GASG;AACH,8BAAsB,QAAS,YAAW,SAAS;IAwBzB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAAE,QAAQ,CAAC,EAAE,EAAE,EAAE;IAAE,QAAQ,CAAC,WAAW,CAAC;IAtB7F,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,IAAI,MAAM,IAAI,SAAS,GAAG,SAAS,CAElC;IAED,IAAI,WAAW,IAAI,WAAW,GAAG,IAAI,GAAG,SAAS,CAEhD;IAMD,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,GAAG,IAAI;IAIjE,MAAM;IAKN,SAAS,aAAsB,UAAU,EAAE,UAAU,EAAW,EAAE,EAAE,EAAE,EAAW,WAAW,CAAC,0BAAc,EAAE,SAAS,CAAC,EAAE,SAAS;IASlI,IAAI,eAAe,IAAI,MAAM,CAE5B;IAGD,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC;IAI1E,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,uBAAuB,CAAC,SAAS,CAAC;IAIxF,wBAAwB,CAAC,SAAS,EAAE,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC;IAIhF,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;IActE,IAAI,WAAW,IAAI,OAAO,EAAE,CAG3B;IAED,IAAI,QAAQ,IAAI,SAAS,EAAE,CAgB1B;IAGD,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAqC;IAC9F,IAAI,WAAW,IAAI,SAAS,EAAE,CAE7B;IAED,aAAa,CAAC,UAAU,EAAE,SAAS;IAInC,uBAAuB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAI5D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIjD,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAI7D,gBAAgB,CAAC,UAAU,EAAE,SAAS;CAIzC;AAGD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,KAAK,SAAS,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC;IACrD,eAAe,CAAC,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,GAAG,CAAC,CAAC;CACjE;AAGD;;GAEG;AACH,eAAO,MAAM,gBAAgB,WAAY,SAAS,GAAG,SAAS,SAAS,SAAS,KAAG,MAmBlF,CAAA"}
1
+ {"version":3,"file":"base-types.d.ts","sourceRoot":"","sources":["../src/base-types.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,8 @@
16
16
  // SPDX-License-Identifier: Apache-2.0
17
17
  import { allFeaturesOf, Containment, Property, Reference } from "@lionweb/core";
18
18
  import { makeObservable } from "mobx";
19
- import { AnnotationsValueManager, MultiContainmentValueManager, SingleContainmentValueManager } from "./index.js";
19
+ import { AnnotationsValueManager, MultiContainmentValueManager, MultiReferenceValueManager, SingleContainmentValueManager, SingleReferenceValueManager } from "./index.js";
20
+ import { uniquesAmong } from "./utils.js";
20
21
  /**
21
22
  * The base type for any node that's managed by a, potentially delta-emitting, API.
22
23
  *
@@ -84,7 +85,7 @@ export class NodeBase {
84
85
  .filter((feature) => this.getFeatureValueManager(feature).isSet());
85
86
  }
86
87
  get children() {
87
- return [
88
+ return uniquesAmong([
88
89
  ...(this.setFeatures
89
90
  .filter((feature) => feature instanceof Containment)
90
91
  .flatMap((feature) => {
@@ -98,7 +99,21 @@ export class NodeBase {
98
99
  throw new Error(`don't know how to obtain value of feature ${feature.name} of classifier ${this.classifier.name} in language ${this.classifier.language.name}`);
99
100
  })),
100
101
  ...this.annotations
101
- ];
102
+ ]);
103
+ }
104
+ get referenceTargets() {
105
+ return uniquesAmong(this.setFeatures
106
+ .filter((feature) => feature instanceof Reference)
107
+ .flatMap((feature) => {
108
+ const valueManager = this.getReferenceValueManager(feature);
109
+ if (valueManager instanceof SingleReferenceValueManager) {
110
+ return valueManager.isSet() ? [valueManager.getDirectly()] : [];
111
+ }
112
+ if (valueManager instanceof MultiReferenceValueManager) {
113
+ return valueManager.get();
114
+ }
115
+ throw new Error(`don't know how to obtain value of feature ${feature.name} of classifier ${this.classifier.name} in language ${this.classifier.language.name}`);
116
+ }));
102
117
  }
103
118
  get annotations() {
104
119
  return this.annotationsValueManager.get();
@@ -1 +1 @@
1
- {"version":3,"file":"base-types.js","sourceRoot":"","sources":["../src/base-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-types.js","sourceRoot":"","sources":["../src/base-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @return a view of the given array of items with duplicates removed.
3
+ * *Note*: verbatim copy of a function in @lionweb/utilities/utils/array.ts!
4
+ */
5
+ export declare const uniquesAmong: <T>(ts: T[]) => T[];
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,eAAO,MAAM,YAAY,qBACL,CAAA"}
package/dist/utils.js ADDED
@@ -0,0 +1,22 @@
1
+ // Copyright 2025 TRUMPF Laser SE and other contributors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License")
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
16
+ // SPDX-License-Identifier: Apache-2.0
17
+ /**
18
+ * @return a view of the given array of items with duplicates removed.
19
+ * *Note*: verbatim copy of a function in @lionweb/utilities/utils/array.ts!
20
+ */
21
+ export const uniquesAmong = (ts) => [...new Set(ts)];
22
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,sCAAsC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,EAAO,EAAO,EAAE,CAC5C,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionweb/class-core",
3
- "version": "0.6.13-beta.0",
3
+ "version": "0.6.13-beta.2",
4
4
  "description": "Generic, language-aspecific base types for generated TypeScript APIs",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,7 +15,7 @@
15
15
  "url": "https://github.com/LionWeb-io/lionweb-typescript/issues"
16
16
  },
17
17
  "scripts": {
18
- "clean": "rm -rf dist/ node_modules/",
18
+ "clean": "rm -rf dist/ node_modules/ lionweb-class-core-*.tgz",
19
19
  "build": "rm -rf dist && tsc",
20
20
  "lint": "eslint src",
21
21
  "pre-release-either": "npm run clean && npm install && npm run build",
@@ -25,7 +25,7 @@
25
25
  "release-beta": "npm publish --tag beta"
26
26
  },
27
27
  "dependencies": {
28
- "@lionweb/core": "0.6.13-beta.0",
28
+ "@lionweb/core": "0.6.13-beta.2",
29
29
  "littoral-templates": "0.3.0",
30
30
  "mobx": "6.13.7"
31
31
  },
package/src/base-types.ts CHANGED
@@ -37,10 +37,13 @@ import {
37
37
  DeltaHandler,
38
38
  FeatureValueManager,
39
39
  MultiContainmentValueManager,
40
+ MultiReferenceValueManager,
40
41
  PropertyValueManager,
41
42
  ReferenceValueManager,
42
- SingleContainmentValueManager
43
- } from "./index.js";
43
+ SingleContainmentValueManager,
44
+ SingleReferenceValueManager
45
+ } from "./index.js"
46
+ import {uniquesAmong} from "./utils.js"
44
47
 
45
48
 
46
49
  /**
@@ -163,10 +166,17 @@ export interface INodeBase extends Node {
163
166
 
164
167
  /**
165
168
  * @return all children – not all descendants! – of this node, including directly-contained annotations.
166
- *Note* that this is (in principle) **for internal use only**!
169
+ * Children appear uniquely, but their order is *not* guaranteed.
170
+ * *Note* that this is (in principle) **for internal use only**!
167
171
  */
168
172
  get children(): INodeBase[];
169
173
 
174
+ /**
175
+ * @return all nodes targeted by reference values on this node.
176
+ * Reference targets appear uniquely, but their order is *not* guaranteed.
177
+ * *Note* that this is (in principle) **for internal use only**!
178
+ */
179
+ get referenceTargets(): INodeBase[];
170
180
 
171
181
  /**
172
182
  * An optionally-installed {@link DeltaHandler}.
@@ -262,7 +272,7 @@ export abstract class NodeBase implements INodeBase {
262
272
  }
263
273
 
264
274
  get children(): INodeBase[] {
265
- return [
275
+ return uniquesAmong([
266
276
  ...(this.setFeatures
267
277
  .filter((feature) => feature instanceof Containment)
268
278
  .flatMap((feature) => {
@@ -276,9 +286,25 @@ export abstract class NodeBase implements INodeBase {
276
286
  throw new Error(`don't know how to obtain value of feature ${feature.name} of classifier ${this.classifier.name} in language ${this.classifier.language.name}`);
277
287
  })),
278
288
  ...this.annotations
279
- ];
289
+ ]);
280
290
  }
281
291
 
292
+ get referenceTargets(): INodeBase[] {
293
+ return uniquesAmong(
294
+ this.setFeatures
295
+ .filter((feature) => feature instanceof Reference)
296
+ .flatMap((feature) => {
297
+ const valueManager = this.getReferenceValueManager(feature as Reference);
298
+ if (valueManager instanceof SingleReferenceValueManager) {
299
+ return valueManager.isSet() ? [valueManager.getDirectly()] : [];
300
+ }
301
+ if (valueManager instanceof MultiReferenceValueManager) {
302
+ return valueManager.get();
303
+ }
304
+ throw new Error(`don't know how to obtain value of feature ${feature.name} of classifier ${this.classifier.name} in language ${this.classifier.language.name}`);
305
+ })
306
+ );
307
+ }
282
308
 
283
309
  readonly annotationsValueManager: AnnotationsValueManager = new AnnotationsValueManager(this);
284
310
  get annotations(): INodeBase[] {
package/src/utils.ts ADDED
@@ -0,0 +1,24 @@
1
+ // Copyright 2025 TRUMPF Laser SE and other contributors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License")
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
16
+ // SPDX-License-Identifier: Apache-2.0
17
+
18
+ /**
19
+ * @return a view of the given array of items with duplicates removed.
20
+ * *Note*: verbatim copy of a function in @lionweb/utilities/utils/array.ts!
21
+ */
22
+ export const uniquesAmong = <T>(ts: T[]): T[] =>
23
+ [...new Set(ts)]
24
+