@lionweb/core 0.7.0-beta.20 → 0.7.0-beta.22

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.
@@ -1 +1 @@
1
- {"version":3,"file":"feature-resolvers.d.ts","sourceRoot":"","sources":["../../src/m3/feature-resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAI5F;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,OAAO,IAAI,CAAC,WAAW,EAAE,sBAAsB,EAAE,UAAU,EAAE,UAAU,KAAK,EAAE,CAAA;AAErH;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC/C,uBAAuB,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACrD,qBAAqB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;CACpD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAW,QAAQ,EAAE,KAAG,gBA0B3D,CAAA"}
1
+ {"version":3,"file":"feature-resolvers.d.ts","sourceRoot":"","sources":["../../src/m3/feature-resolvers.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAI5F;;;;;GAKG;AACH,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,OAAO,IAAI,CAAC,WAAW,EAAE,sBAAsB,EAAE,UAAU,EAAE,UAAU,KAAK,EAAE,CAAA;AAErH;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC/C,uBAAuB,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACrD,qBAAqB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;CACpD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,WAAW,QAAQ,EAAE,KAAG,gBA0B3D,CAAA"}
@@ -1,3 +1,19 @@
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
1
17
  import { Containment, Property, Reference } from "./types.js";
2
18
  import { MemoisingSymbolTable } from "./symbol-table.js";
3
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"feature-resolvers.js","sourceRoot":"","sources":["../../src/m3/feature-resolvers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,WAAW,EAAqB,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAqBxD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAqB,EAAoB,EAAE;IAC3E,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACvD,8DAA8D;IAC9D,MAAM,kBAAkB,GAAG,CAAqB,uBAAmD,EAAuB,EAAE,CACxH,CAAC,kBAAkB,EAAE,UAAsB,EAAE,EAAE;QAC3C,MAAM,qBAAqB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;QACtD,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAA;QAC/K,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAA;QACtF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,sBAAsB,EAAE,EAAE,CAAC,CAAA,CAAI,+BAA+B;QACtG,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,uBAAuB,EAAE,CAAC,CAAE,2HAA2H;YAC/K,MAAM,IAAI,KAAK,CAAC,GAAG,sBAAsB,EAAE,aAAa,uBAAuB,CAAC,IAAI,UAAU,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA,CAAI,+BAA+B;QAChK,CAAC;QACD;;;;WAIG;QACH,OAAO,OAAa,CAAA,CAAI,4DAA4D;IACxF,CAAC,CAAA;IACL,OAAO;QACH,oBAAoB,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QAClD,uBAAuB,EAAE,kBAAkB,CAAC,WAAW,CAAC;QACxD,qBAAqB,EAAE,kBAAkB,CAAC,SAAS,CAAC;KACvD,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"feature-resolvers.js","sourceRoot":"","sources":["../../src/m3/feature-resolvers.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;AAItC,OAAO,EAAc,WAAW,EAAqB,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAqBxD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAqB,EAAoB,EAAE;IAC3E,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAA;IACvD,8DAA8D;IAC9D,MAAM,kBAAkB,GAAG,CAAqB,uBAAmD,EAAuB,EAAE,CACxH,CAAC,kBAAkB,EAAE,UAAsB,EAAE,EAAE;QAC3C,MAAM,qBAAqB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;QACtD,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAA;QAC/K,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAA;QACtF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,sBAAsB,EAAE,EAAE,CAAC,CAAA,CAAI,+BAA+B;QACtG,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,uBAAuB,EAAE,CAAC,CAAE,2HAA2H;YAC/K,MAAM,IAAI,KAAK,CAAC,GAAG,sBAAsB,EAAE,aAAa,uBAAuB,CAAC,IAAI,UAAU,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA,CAAI,+BAA+B;QAChK,CAAC;QACD;;;;WAIG;QACH,OAAO,OAAa,CAAA,CAAI,4DAA4D;IACxF,CAAC,CAAA;IACL,OAAO;QACH,oBAAoB,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QAClD,uBAAuB,EAAE,kBAAkB,CAAC,WAAW,CAAC;QACxD,qBAAqB,EAAE,kBAAkB,CAAC,SAAS,CAAC;KACvD,CAAA;AACL,CAAC,CAAA"}
@@ -19,11 +19,16 @@ interface SymbolTable {
19
19
  * Looks up the {@link Feature}, as pointed to by the {@link LionWebJsonMetaPointer} given second,
20
20
  * as a feature of the {@link Classifier}, as pointed to by the {@link LionWebJsonMetaPointer} given first,
21
21
  * or {@code undefined} it it couldn't be found.
22
- * <em>Note</em> that the {@code language} and {@code version} values of both {@link LionWebJsonMetaPointer}-typed arguments should coincide,
22
+ * *Note* that the {@code language} and {@code version} values of both {@link LionWebJsonMetaPointer}-typed arguments should coincide,
23
23
  * although this is typically not checked!
24
24
  */
25
25
  featureMatching(entityMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer): Feature | undefined;
26
26
  }
27
+ /**
28
+ * A {@link SymbolTable} implementation that *memoises* the items it has looked up.
29
+ * This helps with performance, because otherwise lookup might be linear in the (max.) number of languages,
30
+ * entities in a language, features in classifiers — taking inheritance into account.
31
+ */
27
32
  declare class MemoisingSymbolTable implements SymbolTable {
28
33
  private readonly languages;
29
34
  constructor(languages: Language[]);
@@ -37,7 +42,7 @@ declare class MemoisingSymbolTable implements SymbolTable {
37
42
  * and @returns all its {@link Feature features} or an empty array if it couldn't be found.
38
43
  */
39
44
  allFeaturesOfEntityMatching: (entityMetaPointer: LionWebJsonMetaPointer) => Feature[];
40
- featureMatching(classifierMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer): Feature | undefined;
45
+ featureMatching: (classifierMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer) => Feature | undefined;
41
46
  }
42
47
  export type { SymbolTable };
43
48
  export { MemoisingSymbolTable };
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-table.d.ts","sourceRoot":"","sources":["../../src/m3/symbol-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGlE,OAAO,EAAc,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAG1E;;;;GAIG;AACH,UAAU,WAAW;IAEjB;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;IAExE;;;OAGG;IACH,cAAc,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,cAAc,GAAG,SAAS,CAAA;IAErF;;;;;;OAMG;IACH,eAAe,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,sBAAsB,GAAG,OAAO,GAAG,SAAS,CAAA;CAE9H;AASD,cAAM,oBAAqB,YAAW,WAAW;IAE7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,SAAS,EAAE,QAAQ,EAAE;IAIjC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAqE;IAElH,gBAAgB,GAAI,aAAa,UAAU,EAAE,SAAS,MAAM,KAAG,QAAQ,GAAG,SAAS,CAQ9E;IAGL,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAkH;IAE3K,OAAO,CAAC,kBAAkB,CAmBrB;IAEL,cAAc,GAAI,mBAAmB,sBAAsB,KAAG,cAAc,GAAG,SAAS,CAClC;IAEtD;;;OAGG;IACH,2BAA2B,GAAI,mBAAmB,sBAAsB,KAAG,OAAO,EAAE,CACnB;IAEjE,eAAe,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,sBAAsB,GAAG,OAAO,GAAG,SAAS;CAYlI;AAGD,YAAY,EACR,WAAW,EACd,CAAA;AAED,OAAO,EACH,oBAAoB,EACvB,CAAA"}
1
+ {"version":3,"file":"symbol-table.d.ts","sourceRoot":"","sources":["../../src/m3/symbol-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGlE,OAAO,EAAc,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAG1E;;;;GAIG;AACH,UAAU,WAAW;IAEjB;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAA;IAExE;;;OAGG;IACH,cAAc,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,cAAc,GAAG,SAAS,CAAA;IAErF;;;;;;OAMG;IACH,eAAe,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,sBAAsB,GAAG,OAAO,GAAG,SAAS,CAAA;CAE9H;AAUD;;;;GAIG;AACH,cAAM,oBAAqB,YAAW,WAAW;IAE7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAE1B,SAAS,EAAE,QAAQ,EAAE;IAIjC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAqE;IAElH,gBAAgB,GAAI,aAAa,UAAU,EAAE,SAAS,MAAM,KAAG,QAAQ,GAAG,SAAS,CAQ9E;IAGL,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAkH;IAE3K,OAAO,CAAC,kBAAkB,CAmBrB;IAEL,cAAc,GAAI,mBAAmB,sBAAsB,KAAG,cAAc,GAAG,SAAS,CAClC;IAEtD;;;OAGG;IACH,2BAA2B,GAAI,mBAAmB,sBAAsB,KAAG,OAAO,EAAE,CACnB;IAEjE,eAAe,GAAI,uBAAuB,sBAAsB,EAAE,oBAAoB,sBAAsB,KAAG,OAAO,GAAG,SAAS,CAUjI;CAEJ;AAGD,YAAY,EACR,WAAW,EACd,CAAA;AAED,OAAO,EACH,oBAAoB,EACvB,CAAA"}
@@ -1,6 +1,11 @@
1
1
  import { lazyMapGet } from "@lionweb/ts-utils";
2
2
  import { allFeaturesOf } from "./functions.js";
3
3
  import { Classifier } from "./types.js";
4
+ /**
5
+ * A {@link SymbolTable} implementation that *memoises* the items it has looked up.
6
+ * This helps with performance, because otherwise lookup might be linear in the (max.) number of languages,
7
+ * entities in a language, features in classifiers — taking inheritance into account.
8
+ */
4
9
  class MemoisingSymbolTable {
5
10
  constructor(languages) {
6
11
  this.languageKey2version2language = {};
@@ -24,15 +29,15 @@ class MemoisingSymbolTable {
24
29
  * and @returns all its {@link Feature features} or an empty array if it couldn't be found.
25
30
  */
26
31
  this.allFeaturesOfEntityMatching = (entityMetaPointer) => this.entityInfoMatching(entityMetaPointer)?.allFeatures ?? [];
32
+ this.featureMatching = (classifierMetaPointer, featureMetaPointer) => {
33
+ const entityInfo = this.entityInfoMatching(classifierMetaPointer);
34
+ if (entityInfo === undefined || !(entityInfo.entity instanceof Classifier)) {
35
+ return undefined;
36
+ }
37
+ return lazyMapGet(entityInfo.featureKey2feature, featureMetaPointer.key, () => entityInfo.allFeatures.find((feature) => feature.key === featureMetaPointer.key));
38
+ };
27
39
  this.languages = languages;
28
40
  }
29
- featureMatching(classifierMetaPointer, featureMetaPointer) {
30
- const entityInfo = this.entityInfoMatching(classifierMetaPointer);
31
- if (entityInfo === undefined || !(entityInfo.entity instanceof Classifier)) {
32
- return undefined;
33
- }
34
- return lazyMapGet(entityInfo.featureKey2feature, featureMetaPointer.key, () => entityInfo.allFeatures.find((feature) => feature.key === featureMetaPointer.key));
35
- }
36
41
  }
37
42
  export { MemoisingSymbolTable };
38
43
  //# sourceMappingURL=symbol-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-table.js","sourceRoot":"","sources":["../../src/m3/symbol-table.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAqC,MAAM,YAAY,CAAA;AAuC1E,MAAM,oBAAoB;IAItB,YAAY,SAAqB;QAIhB,iCAA4B,GAAmE,EAAE,CAAA;QAElH,qBAAgB,GAAG,CAAC,WAAuB,EAAE,OAAe,EAAwB,EAAE,CAClF,UAAU,CACN,UAAU,CAAC,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACtE,OAAO,EACP,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAChC,QAAQ,CAAC,GAAG,KAAK,WAAW;eAC5B,QAAQ,CAAC,OAAO,KAAK,OAAO,CAClC,CACJ,CAAA;QAGY,6CAAwC,GAAgH,EAAE,CAAA;QAEnK,uBAAkB,GAAG,CAAC,iBAAyC,EAA0B,EAAE,CAC/F,UAAU,CACN,UAAU,CACN,UAAU,CAAC,IAAI,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACjG,iBAAiB,CAAC,OAAO,EACzB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CACb,EACD,iBAAiB,CAAC,GAAG,EACrB,GAAG,EAAE;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBACvF,EAAE,QAAQ;iBACT,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC3D,OAAO,MAAM,KAAK,SAAS;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC;oBACE,MAAM;oBACN,WAAW,EAAE,MAAM,YAAY,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE;iBACrG,CAAA;QACL,CAAC,CACJ,CAAA;QAEL,mBAAc,GAAG,CAAC,iBAAyC,EAA8B,EAAE,CACvF,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAEtD;;;WAGG;QACH,gCAA2B,GAAG,CAAC,iBAAyC,EAAa,EAAE,CACnF,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAA;QA/C7D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,CAAC;IAgDD,eAAe,CAAC,qBAA6C,EAAE,kBAA0C;QACrG,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;QACjE,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,YAAY,UAAU,CAAC,EAAE,CAAC;YACzE,OAAO,SAAS,CAAA;QACpB,CAAC;QACD,OAAO,UAAU,CACb,UAAU,CAAC,kBAAkB,EAC7B,kBAAkB,CAAC,GAAG,EACtB,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,kBAAkB,CAAC,GAAG,CAAC,CACzF,CAAA;IACL,CAAC;CAEJ;AAOD,OAAO,EACH,oBAAoB,EACvB,CAAA"}
1
+ {"version":3,"file":"symbol-table.js","sourceRoot":"","sources":["../../src/m3/symbol-table.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAqC,MAAM,YAAY,CAAA;AAwC1E;;;;GAIG;AACH,MAAM,oBAAoB;IAItB,YAAY,SAAqB;QAIhB,iCAA4B,GAAmE,EAAE,CAAA;QAElH,qBAAgB,GAAG,CAAC,WAAuB,EAAE,OAAe,EAAwB,EAAE,CAClF,UAAU,CACN,UAAU,CAAC,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACtE,OAAO,EACP,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAChC,QAAQ,CAAC,GAAG,KAAK,WAAW;eAC5B,QAAQ,CAAC,OAAO,KAAK,OAAO,CAClC,CACJ,CAAA;QAGY,6CAAwC,GAAgH,EAAE,CAAA;QAEnK,uBAAkB,GAAG,CAAC,iBAAyC,EAA0B,EAAE,CAC/F,UAAU,CACN,UAAU,CACN,UAAU,CAAC,IAAI,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACjG,iBAAiB,CAAC,OAAO,EACzB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CACb,EACD,iBAAiB,CAAC,GAAG,EACrB,GAAG,EAAE;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBACvF,EAAE,QAAQ;iBACT,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC3D,OAAO,MAAM,KAAK,SAAS;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC;oBACE,MAAM;oBACN,WAAW,EAAE,MAAM,YAAY,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE;iBACrG,CAAA;QACL,CAAC,CACJ,CAAA;QAEL,mBAAc,GAAG,CAAC,iBAAyC,EAA8B,EAAE,CACvF,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAEtD;;;WAGG;QACH,gCAA2B,GAAG,CAAC,iBAAyC,EAAa,EAAE,CACnF,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,WAAW,IAAI,EAAE,CAAA;QAEjE,oBAAe,GAAG,CAAC,qBAA6C,EAAE,kBAA0C,EAAuB,EAAE;YACjI,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAA;YACjE,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,YAAY,UAAU,CAAC,EAAE,CAAC;gBACzE,OAAO,SAAS,CAAA;YACpB,CAAC;YACD,OAAO,UAAU,CACb,UAAU,CAAC,kBAAkB,EAC7B,kBAAkB,CAAC,GAAG,EACtB,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,kBAAkB,CAAC,GAAG,CAAC,CACzF,CAAA;QACL,CAAC,CAAA;QA3DG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,CAAC;CA4DJ;AAOD,OAAO,EACH,oBAAoB,EACvB,CAAA"}
@@ -43,7 +43,7 @@ export declare const metaPointerFor: (feature: Feature) => LionWebJsonMetaPointe
43
43
  export declare const nodeSerializer: <NT extends Node>(reader: Reader<NT>, serializationOptions?: SerializationOptions) => (nodes: NT[]) => LionWebJsonChunk;
44
44
  /**
45
45
  * @return a {@link LionWebJsonChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
46
- * <em>Note:</em> this function will be deprecated and removed later — use {@link nodeSerializer} instead.
46
+ * *Note:* this function will be deprecated and removed later — use {@link nodeSerializer} instead.
47
47
  */
48
48
  export declare const serializeNodes: <NT extends Node>(nodes: NT[], reader: Reader<NT>, propertyValueSerializerOrOptions?: PropertyValueSerializer | SerializationOptions) => LionWebJsonChunk;
49
49
  //# sourceMappingURL=serializer.d.ts.map
@@ -138,7 +138,7 @@ export const nodeSerializer = (reader, serializationOptions) => {
138
138
  };
139
139
  /**
140
140
  * @return a {@link LionWebJsonChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
141
- * <em>Note:</em> this function will be deprecated and removed later — use {@link nodeSerializer} instead.
141
+ * *Note:* this function will be deprecated and removed later — use {@link nodeSerializer} instead.
142
142
  */
143
143
  export const serializeNodes = (nodes, reader, propertyValueSerializerOrOptions) => nodeSerializer(reader, isPropertyValueSerializer(propertyValueSerializerOrOptions)
144
144
  ? {
package/dist/version.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The <em>current</em> release(d) version.
2
+ * The *current* release(d) version.
3
3
  */
4
4
  export declare const currentReleaseVersion = "2023.1";
5
5
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The <em>current</em> release(d) version.
2
+ * The *current* release(d) version.
3
3
  */
4
4
  export const currentReleaseVersion = "2023.1";
5
5
  //# sourceMappingURL=version.js.map
package/dist/writing.js CHANGED
@@ -2,7 +2,7 @@ import { Link } from "./m3/types.js";
2
2
  /**
3
3
  * @return a {@link SettingsUpdater} that uses the given “meta key” – which is a property/key on the {@link Feature} type –
4
4
  * to look up what key to look a feature’s value up on a settings object.
5
- * <em>Note:</em> for internal use only — use with some care!
5
+ * *Note:* for internal use only — use with some care!
6
6
  */
7
7
  const settingsUpdater = (metaKey) => (settings, feature, value) => {
8
8
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionweb/core",
3
- "version": "0.7.0-beta.20",
3
+ "version": "0.7.0-beta.22",
4
4
  "description": "LionWeb core for {Java|Type}Script",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "release": "npm publish"
28
28
  },
29
29
  "dependencies": {
30
- "@lionweb/json": "0.7.0-beta.20",
31
- "@lionweb/ts-utils": "0.7.0-beta.20"
30
+ "@lionweb/json": "0.7.0-beta.22",
31
+ "@lionweb/ts-utils": "0.7.0-beta.22"
32
32
  }
33
33
  }
@@ -1,3 +1,20 @@
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
+
1
18
  import { LionWebJsonMetaPointer } from "@lionweb/json"
2
19
 
3
20
  import { Classifier, Containment, Feature, Language, Property, Reference } from "./types.js"
@@ -26,7 +26,7 @@ interface SymbolTable {
26
26
  * Looks up the {@link Feature}, as pointed to by the {@link LionWebJsonMetaPointer} given second,
27
27
  * as a feature of the {@link Classifier}, as pointed to by the {@link LionWebJsonMetaPointer} given first,
28
28
  * or {@code undefined} it it couldn't be found.
29
- * <em>Note</em> that the {@code language} and {@code version} values of both {@link LionWebJsonMetaPointer}-typed arguments should coincide,
29
+ * *Note* that the {@code language} and {@code version} values of both {@link LionWebJsonMetaPointer}-typed arguments should coincide,
30
30
  * although this is typically not checked!
31
31
  */
32
32
  featureMatching(entityMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer): Feature | undefined
@@ -40,6 +40,12 @@ type EntityInfo = {
40
40
  featureKey2feature: { [featureKey: LionWebKey]: Feature } // populated through memoisation
41
41
  }
42
42
 
43
+
44
+ /**
45
+ * A {@link SymbolTable} implementation that *memoises* the items it has looked up.
46
+ * This helps with performance, because otherwise lookup might be linear in the (max.) number of languages,
47
+ * entities in a language, features in classifiers — taking inheritance into account.
48
+ */
43
49
  class MemoisingSymbolTable implements SymbolTable {
44
50
 
45
51
  private readonly languages: Language[]
@@ -94,7 +100,7 @@ class MemoisingSymbolTable implements SymbolTable {
94
100
  allFeaturesOfEntityMatching = (entityMetaPointer: LionWebJsonMetaPointer): Feature[] =>
95
101
  this.entityInfoMatching(entityMetaPointer)?.allFeatures ?? []
96
102
 
97
- featureMatching(classifierMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer): Feature | undefined {
103
+ featureMatching = (classifierMetaPointer: LionWebJsonMetaPointer, featureMetaPointer: LionWebJsonMetaPointer): Feature | undefined => {
98
104
  const entityInfo = this.entityInfoMatching(classifierMetaPointer)
99
105
  if (entityInfo === undefined || !(entityInfo.entity instanceof Classifier)) {
100
106
  return undefined
package/src/serializer.ts CHANGED
@@ -226,7 +226,7 @@ export const nodeSerializer = <NT extends Node>(reader: Reader<NT>, serializatio
226
226
 
227
227
  /**
228
228
  * @return a {@link LionWebJsonChunk} of the given model (i.e., an array of {@link Node nodes} - the first argument) to the LionWeb serialization JSON format.
229
- * <em>Note:</em> this function will be deprecated and removed later — use {@link nodeSerializer} instead.
229
+ * *Note:* this function will be deprecated and removed later — use {@link nodeSerializer} instead.
230
230
  */
231
231
  export const serializeNodes = <NT extends Node>(
232
232
  nodes: NT[],
package/src/version.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The <em>current</em> release(d) version.
2
+ * The *current* release(d) version.
3
3
  */
4
4
  export const currentReleaseVersion = "2023.1"
5
5
 
package/src/writing.ts CHANGED
@@ -49,7 +49,7 @@ export type SettingsUpdater = (settings: Record<string, unknown>, feature: Featu
49
49
  /**
50
50
  * @return a {@link SettingsUpdater} that uses the given “meta key” – which is a property/key on the {@link Feature} type –
51
51
  * to look up what key to look a feature’s value up on a settings object.
52
- * <em>Note:</em> for internal use only — use with some care!
52
+ * *Note:* for internal use only — use with some care!
53
53
  */
54
54
  const settingsUpdater = (metaKey: keyof Feature): SettingsUpdater =>
55
55
  (settings: Record<string, unknown>, feature: Feature, value: unknown): void => {