@lionweb/io-lionweb-mps-specific 0.7.0-alpha.1 → 0.7.0-alpha.10
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/README.md +16 -2
- package/dist/annotations.d.ts +7 -0
- package/dist/annotations.d.ts.map +1 -0
- package/dist/annotations.js +24 -0
- package/dist/annotations.js.map +1 -0
- package/dist/deserializer.d.ts +7 -2
- package/dist/deserializer.d.ts.map +1 -1
- package/dist/deserializer.js +8 -3
- package/dist/deserializer.js.map +1 -1
- package/dist/facade.d.ts +2 -2
- package/dist/facade.d.ts.map +1 -1
- package/dist/facade.js +3 -3
- package/dist/facade.js.map +1 -1
- package/dist/{io.lionweb.mps.specific.d.ts → implementation.d.ts} +7 -7
- package/dist/implementation.d.ts.map +1 -0
- package/dist/{io.lionweb.mps.specific.js → implementation.js} +7 -7
- package/dist/implementation.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/textualizer.d.ts +8 -0
- package/dist/textualizer.d.ts.map +1 -0
- package/dist/textualizer.js +187 -0
- package/dist/textualizer.js.map +1 -0
- package/meta/io.lionweb.mps.specific.md +35 -0
- package/meta/io.lionweb.mps.specific.puml +39 -0
- package/package.json +7 -6
- package/dist/io.lionweb.mps.specific.d.ts.map +0 -1
- package/dist/io.lionweb.mps.specific.js.map +0 -1
- /package/{io.lionweb.mps.specific.json → meta/io.lionweb.mps.specific.json} +0 -0
- /package/{io.lionweb.mps.specific.txt → meta/io.lionweb.mps.specific.txt} +0 -0
package/README.md
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
](https://www.npmjs.com/package/@lionweb/io-lionweb-mps-specific)
|
|
9
9
|
|
|
10
10
|
This NPM package contains an implementation of the `io.lionweb.mps.specific` language.
|
|
11
|
-
The MPS implementation of that language is part of the `lionweb-mps` plug-in.
|
|
12
|
-
|
|
11
|
+
The MPS implementation of that language is part of [the `lionweb-mps` plug-in](https://github.com/LionWeb-io/lionweb-mps/tree/mps2021.3).
|
|
12
|
+
The annotations in this language are used to export MPS-specific language (structure) metadata as part of LionWeb language exports from MPS (in the LionCore M3 format).
|
|
13
13
|
More specifically, this pertains to metadata like the *alias*, *short description*, *documentation*, etc., of a language concept.
|
|
14
14
|
|
|
15
15
|
It can be added to a TypeScript codebase as follows:
|
|
@@ -18,3 +18,17 @@ It can be added to a TypeScript codebase as follows:
|
|
|
18
18
|
$ npm add @lionweb/io-lionweb-mps-specific
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
+
## API
|
|
22
|
+
|
|
23
|
+
The API consists of the following things exported from this package:
|
|
24
|
+
|
|
25
|
+
* The _implementation_ of the language consists of the following classes: `ConceptDescription`, `Deprecated`, `KeyedDescription`, `ShortDescription`, `VirtualPackage`.
|
|
26
|
+
Also see [this PlantUml diagram](meta/io.lionweb.mps.specific.puml) for some more information.
|
|
27
|
+
* The language is _defined_ through the constant `ioLionWebMpsSpecificLanguage` (of type `Language`).
|
|
28
|
+
Its classifiers are exported separately through the `ioLionWebMpsSpecificClassifiers` dictionary.
|
|
29
|
+
* The `deserializeLanguagesWithIoLionWebMpsSpecific` function deserializes a LionWeb serialization chunk as an array of `Language`s, potentially being annotated with instances of annotations from the `io.lionweb.mps.specific` language.
|
|
30
|
+
* The `ioLionWebMpsSpecificAnnotationsFrom` function returns the (instances of the) `io.lionweb.mps.specific` language's annotations that annotate the given language element (of type `M3Concept`).
|
|
31
|
+
* The `textualizationOfAnnotationsIn` function renders an textualization of all instances of `io.lionweb.mps.specific` annotations, in the given languages' tree structure.
|
|
32
|
+
**Note**: only language elements having annotations (at any nesting depth) are rendered.
|
|
33
|
+
This is useful to get a quick overview of the annotations.
|
|
34
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { M3Concept } from "@lionweb/core";
|
|
2
|
+
import { IoLionWebMpsSpecificAnnotation } from "./implementation.js";
|
|
3
|
+
/**
|
|
4
|
+
* @return the `io.lionweb.mps.specific` annotations present on the given node.
|
|
5
|
+
*/
|
|
6
|
+
export declare const ioLionWebMpsSpecificAnnotationsFrom: (node: M3Concept) => IoLionWebMpsSpecificAnnotation[];
|
|
7
|
+
//# sourceMappingURL=annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAA;AAEpE;;GAEG;AACH,eAAO,MAAM,mCAAmC,SAAU,SAAS,KAAG,8BAA8B,EAGqB,CAAA"}
|
|
@@ -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
|
+
import { IoLionWebMpsSpecificAnnotation } from "./implementation.js";
|
|
18
|
+
/**
|
|
19
|
+
* @return the `io.lionweb.mps.specific` annotations present on the given node.
|
|
20
|
+
*/
|
|
21
|
+
export const ioLionWebMpsSpecificAnnotationsFrom = (node) => node
|
|
22
|
+
.annotations
|
|
23
|
+
.filter((annotation) => annotation instanceof IoLionWebMpsSpecificAnnotation);
|
|
24
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../src/annotations.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;AAGtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAA;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,IAAe,EAAoC,EAAE,CACrG,IAAI;KACC,WAAW;KACX,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,YAAY,8BAA8B,CAAqC,CAAA"}
|
package/dist/deserializer.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { LionWebJsonChunk } from "@lionweb/json";
|
|
2
|
-
import { SimplisticHandler } from "@lionweb/core";
|
|
3
|
-
|
|
2
|
+
import { Language, SimplisticHandler } from "@lionweb/core";
|
|
3
|
+
/**
|
|
4
|
+
* @return the deserialization of the given {@link LionWebJsonChunk serialization chunk} as an array of {@link Language languages}.
|
|
5
|
+
* Any LionCore/M3 node can be annotated using annotations from the `io.lionweb.mps.specific` language.
|
|
6
|
+
* Problems are reported through the given {@link SimplisticHandler} which defaults to {@link defaultSimplisticHandler}.
|
|
7
|
+
*/
|
|
8
|
+
export declare const deserializeLanguagesWithIoLionWebMpsSpecific: (serializationChunk: LionWebJsonChunk, problemHandler?: SimplisticHandler) => Language[];
|
|
4
9
|
//# sourceMappingURL=deserializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializer.d.ts","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"deserializer.d.ts","sourceRoot":"","sources":["../src/deserializer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAIH,QAAQ,EAIR,iBAAiB,EACpB,MAAM,eAAe,CAAA;AAKtB;;;;GAIG;AACH,eAAO,MAAM,4CAA4C,uBAAwB,gBAAgB,mBAAkB,iBAAiB,eAQtE,CAAA"}
|
package/dist/deserializer.js
CHANGED
|
@@ -14,9 +14,14 @@
|
|
|
14
14
|
//
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
|
-
import { DefaultPrimitiveTypeDeserializer, defaultSimplisticHandler, deserializeChunk, lioncore, lioncoreBuiltins, nodesExtractorUsing } from "@lionweb/core";
|
|
17
|
+
import { DefaultPrimitiveTypeDeserializer, defaultSimplisticHandler, deserializeChunk, Language, lioncore, lioncoreBuiltins, nodesExtractorUsing } from "@lionweb/core";
|
|
18
18
|
import { lioncoreExtractionFacade } from "@lionweb/core/dist/m3/facade.js";
|
|
19
|
-
import { combinedWriter } from "./facade.js";
|
|
20
19
|
import { ioLionWebMpsSpecificLanguage } from "./definition.js";
|
|
21
|
-
|
|
20
|
+
import { combinedWriter } from "./facade.js";
|
|
21
|
+
/**
|
|
22
|
+
* @return the deserialization of the given {@link LionWebJsonChunk serialization chunk} as an array of {@link Language languages}.
|
|
23
|
+
* Any LionCore/M3 node can be annotated using annotations from the `io.lionweb.mps.specific` language.
|
|
24
|
+
* Problems are reported through the given {@link SimplisticHandler} which defaults to {@link defaultSimplisticHandler}.
|
|
25
|
+
*/
|
|
26
|
+
export const deserializeLanguagesWithIoLionWebMpsSpecific = (serializationChunk, problemHandler = defaultSimplisticHandler) => deserializeChunk(serializationChunk, combinedWriter, [lioncore, ioLionWebMpsSpecificLanguage], [lioncore, lioncoreBuiltins].flatMap(nodesExtractorUsing(lioncoreExtractionFacade)), new DefaultPrimitiveTypeDeserializer(), problemHandler).filter((node) => node instanceof Language);
|
|
22
27
|
//# sourceMappingURL=deserializer.js.map
|
package/dist/deserializer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../src/deserializer.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;AAGtC,OAAO,EACH,gCAAgC,EAChC,wBAAwB,EACxB,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EAEtB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../src/deserializer.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;AAGtC,OAAO,EACH,gCAAgC,EAChC,wBAAwB,EACxB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EAEtB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG,CAAC,kBAAoC,EAAE,iBAAoC,wBAAwB,EAAE,EAAE,CAC/J,gBAAgB,CACZ,kBAAkB,EAClB,cAAc,EACd,CAAC,QAAQ,EAAE,4BAA4B,CAAC,EACxC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC,EACnF,IAAI,gCAAgC,EAAE,EACtC,cAAc,CACjB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,QAAQ,CAAe,CAAA"}
|
package/dist/facade.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { InstantiationFacade, M3Node, Node } from "@lionweb/core";
|
|
2
|
-
import {
|
|
3
|
-
export declare const combinedWriter: InstantiationFacade<M3Node |
|
|
2
|
+
import { IoLionWebMpsSpecificAnnotation } from "./implementation.js";
|
|
3
|
+
export declare const combinedWriter: InstantiationFacade<M3Node | IoLionWebMpsSpecificAnnotation, Node>;
|
|
4
4
|
//# sourceMappingURL=facade.d.ts.map
|
package/dist/facade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AAiBA,OAAO,EAIH,mBAAmB,EAInB,MAAM,EACN,IAAI,EAEP,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"AAiBA,OAAO,EAIH,mBAAmB,EAInB,MAAM,EACN,IAAI,EAEP,MAAM,eAAe,CAAA;AAItB,OAAO,EAGH,8BAA8B,EAIjC,MAAM,qBAAqB,CAAA;AA6C5B,eAAO,MAAM,cAAc,EAAE,mBAAmB,CAAC,MAAM,GAAG,8BAA8B,EAAE,IAAI,CAc7F,CAAA"}
|
package/dist/facade.js
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
//
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
|
-
import { areSameClassifiers, areSameLanguages, lioncore,
|
|
18
|
-
import { ConceptDescription, Deprecated, KeyedDescription, ShortDescription, VirtualPackage } from "./io.lionweb.mps.specific.js";
|
|
17
|
+
import { areSameClassifiers, areSameLanguages, lioncore, lioncoreWriter, updateSettingsNameBased } from "@lionweb/core";
|
|
19
18
|
import { ioLionWebMpsSpecificClassifiers, ioLionWebMpsSpecificLanguage } from "./definition.js";
|
|
19
|
+
import { ConceptDescription, Deprecated, KeyedDescription, ShortDescription, VirtualPackage } from "./implementation.js";
|
|
20
20
|
const ioLionWebMpsSpecificFactory = (parent, classifier, id, propertySettings) => {
|
|
21
21
|
const setProperties = (node, ...namesOfOptionalStringProperties) => {
|
|
22
22
|
namesOfOptionalStringProperties.forEach((propertyName) => {
|
|
@@ -62,7 +62,7 @@ export const combinedWriter = {
|
|
|
62
62
|
return ioLionWebMpsSpecificFactory(parent, classifier, id, propertySettings);
|
|
63
63
|
}
|
|
64
64
|
if (areSameLanguages(classifier.language, lioncore)) {
|
|
65
|
-
return
|
|
65
|
+
return lioncoreWriter.nodeFor(parent, classifier, id, propertySettings);
|
|
66
66
|
}
|
|
67
67
|
throw new Error(`don't know how to instantiate a ${classifier.name} from language ${classifier.language.name} (${classifier.language.key}, ${classifier.language.version})`);
|
|
68
68
|
},
|
package/dist/facade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.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,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAGhB,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"facade.js","sourceRoot":"","sources":["../src/facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
import { Classifier, INamed, Node } from "@lionweb/core";
|
|
2
|
-
export declare abstract class
|
|
2
|
+
export declare abstract class IoLionWebMpsSpecificAnnotation implements Node {
|
|
3
3
|
readonly id: string;
|
|
4
4
|
readonly classifier: Classifier;
|
|
5
5
|
protected constructor(id: string, classifier: Classifier);
|
|
6
6
|
parent?: Node;
|
|
7
7
|
readonly annotations: Node[];
|
|
8
8
|
}
|
|
9
|
-
export declare class ConceptDescription extends
|
|
9
|
+
export declare class ConceptDescription extends IoLionWebMpsSpecificAnnotation {
|
|
10
10
|
constructor(id: string);
|
|
11
11
|
conceptAlias?: string;
|
|
12
12
|
conceptShortDescription?: string;
|
|
13
13
|
helpUrl?: string;
|
|
14
14
|
}
|
|
15
|
-
export declare class Deprecated extends
|
|
15
|
+
export declare class Deprecated extends IoLionWebMpsSpecificAnnotation {
|
|
16
16
|
constructor(id: string);
|
|
17
17
|
comment?: string;
|
|
18
18
|
build?: string;
|
|
19
19
|
}
|
|
20
|
-
export declare class KeyedDescription extends
|
|
20
|
+
export declare class KeyedDescription extends IoLionWebMpsSpecificAnnotation {
|
|
21
21
|
constructor(id: string);
|
|
22
22
|
documentation?: string;
|
|
23
23
|
readonly seeAlso: Node[];
|
|
24
24
|
}
|
|
25
|
-
export declare class ShortDescription extends
|
|
25
|
+
export declare class ShortDescription extends IoLionWebMpsSpecificAnnotation {
|
|
26
26
|
constructor(id: string);
|
|
27
27
|
description?: string;
|
|
28
28
|
}
|
|
29
|
-
export declare class VirtualPackage extends
|
|
29
|
+
export declare class VirtualPackage extends IoLionWebMpsSpecificAnnotation implements INamed {
|
|
30
30
|
constructor(id: string);
|
|
31
31
|
private _name?;
|
|
32
32
|
get name(): string;
|
|
33
33
|
set name(newName: string);
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=implementation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementation.d.ts","sourceRoot":"","sources":["../src/implementation.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAGxD,8BAAsB,8BAA+B,YAAW,IAAI;aAC1B,EAAE,EAAE,MAAM;aAAkB,UAAU,EAAE,UAAU;IAAxF,SAAS,aAA6B,EAAE,EAAE,MAAM,EAAkB,UAAU,EAAE,UAAU;IAEjF,MAAM,CAAC,EAAE,IAAI,CAAA;IACpB,SAAgB,WAAW,EAAE,IAAI,EAAE,CAAK;CAC3C;AAED,qBAAa,kBAAmB,SAAQ,8BAA8B;gBACtD,EAAE,EAAE,MAAM;IAGf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,UAAW,SAAQ,8BAA8B;gBAC9C,EAAE,EAAE,MAAM;IAGf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,gBAAiB,SAAQ,8BAA8B;gBACpD,EAAE,EAAE,MAAM;IAGf,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,SAAgB,OAAO,EAAE,IAAI,EAAE,CAAK;CACvC;AAED,qBAAa,gBAAiB,SAAQ,8BAA8B;gBACpD,EAAE,EAAE,MAAM;IAGf,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,qBAAa,cAAe,SAAQ,8BAA+B,YAAW,MAAM;gBACpE,EAAE,EAAE,MAAM;IAGtB,OAAO,CAAC,KAAK,CAAC,CAAQ;IACtB,IAAI,IAAI,IAMU,MAAM,CADvB;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAEvB;CACJ"}
|
|
@@ -15,35 +15,35 @@
|
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
17
|
import { ioLionWebMpsSpecificClassifiers } from "./definition.js";
|
|
18
|
-
export class
|
|
18
|
+
export class IoLionWebMpsSpecificAnnotation {
|
|
19
19
|
constructor(id, classifier) {
|
|
20
20
|
this.id = id;
|
|
21
21
|
this.classifier = classifier;
|
|
22
22
|
this.annotations = [];
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
export class ConceptDescription extends
|
|
25
|
+
export class ConceptDescription extends IoLionWebMpsSpecificAnnotation {
|
|
26
26
|
constructor(id) {
|
|
27
27
|
super(id, ioLionWebMpsSpecificClassifiers.ConceptDescription);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
export class Deprecated extends
|
|
30
|
+
export class Deprecated extends IoLionWebMpsSpecificAnnotation {
|
|
31
31
|
constructor(id) {
|
|
32
32
|
super(id, ioLionWebMpsSpecificClassifiers.Deprecated);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
export class KeyedDescription extends
|
|
35
|
+
export class KeyedDescription extends IoLionWebMpsSpecificAnnotation {
|
|
36
36
|
constructor(id) {
|
|
37
37
|
super(id, ioLionWebMpsSpecificClassifiers.KeyedDescription);
|
|
38
38
|
this.seeAlso = [];
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
export class ShortDescription extends
|
|
41
|
+
export class ShortDescription extends IoLionWebMpsSpecificAnnotation {
|
|
42
42
|
constructor(id) {
|
|
43
43
|
super(id, ioLionWebMpsSpecificClassifiers.ShortDescription);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
export class VirtualPackage extends
|
|
46
|
+
export class VirtualPackage extends IoLionWebMpsSpecificAnnotation {
|
|
47
47
|
constructor(id) {
|
|
48
48
|
super(id, ioLionWebMpsSpecificClassifiers.VirtualPackage);
|
|
49
49
|
}
|
|
@@ -57,4 +57,4 @@ export class VirtualPackage extends IoLionWebMpsSpecificNode {
|
|
|
57
57
|
this._name = newName;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
//# sourceMappingURL=
|
|
60
|
+
//# sourceMappingURL=implementation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementation.js","sourceRoot":"","sources":["../src/implementation.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;AAGtC,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAA;AAEjE,MAAM,OAAgB,8BAA8B;IAChD,YAAsC,EAAU,EAAkB,UAAsB;QAAlD,OAAE,GAAF,EAAE,CAAQ;QAAkB,eAAU,GAAV,UAAU,CAAY;QAGxE,gBAAW,GAAW,EAAE,CAAA;IAFxC,CAAC;CAGJ;AAED,MAAM,OAAO,kBAAmB,SAAQ,8BAA8B;IAClE,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,kBAAkB,CAAC,CAAA;IACjE,CAAC;CAIJ;AAED,MAAM,OAAO,UAAW,SAAQ,8BAA8B;IAC1D,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,UAAU,CAAC,CAAA;IACzD,CAAC;CAGJ;AAED,MAAM,OAAO,gBAAiB,SAAQ,8BAA8B;IAChE,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAA;QAG/C,YAAO,GAAW,EAAE,CAAA;IAFpC,CAAC;CAGJ;AAED,MAAM,OAAO,gBAAiB,SAAQ,8BAA8B;IAChE,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAA;IAC/D,CAAC;CAEJ;AAED,MAAM,OAAO,cAAe,SAAQ,8BAA8B;IAC9D,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,cAAc,CAAC,CAAA;IAC7D,CAAC;IAED,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;QACtG,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,OAAe;QACpB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;IACxB,CAAC;CACJ"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
//
|
|
15
15
|
// SPDX-FileCopyrightText: 2025 TRUMPF Laser SE and other contributors
|
|
16
16
|
// SPDX-License-Identifier: Apache-2.0
|
|
17
|
+
export * from "./annotations.js";
|
|
17
18
|
export * from "./definition.js";
|
|
18
19
|
export * from "./deserializer.js";
|
|
19
|
-
export * from "./
|
|
20
|
+
export * from "./implementation.js";
|
|
21
|
+
export * from "./textualizer.js";
|
|
20
22
|
//# 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,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,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Language } from "@lionweb/core";
|
|
2
|
+
/**
|
|
3
|
+
* @return textualization of all instances of io.lionweb.mps.specific annotations, in the given languages' tree structure.
|
|
4
|
+
* **Note**: only language elements having annotations (at any nesting depth) are rendered.
|
|
5
|
+
* This is useful to get a quick overview of the annotations.
|
|
6
|
+
*/
|
|
7
|
+
export declare const textualizationOfAnnotationsIn: (languages: Language[]) => string;
|
|
8
|
+
//# sourceMappingURL=textualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textualizer.d.ts","sourceRoot":"","sources":["../src/textualizer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAKH,QAAQ,EAKX,MAAM,eAAe,CAAA;AAsMtB;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,cAAe,QAAQ,EAAE,KAAG,MACH,CAAA"}
|
|
@@ -0,0 +1,187 @@
|
|
|
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
|
+
import { Classifier, Enumeration, EnumerationLiteral, Feature, Language, LanguageEntity, PrimitiveType } from "@lionweb/core";
|
|
18
|
+
import { indent, withFirstLower } from "@lionweb/textgen-utils";
|
|
19
|
+
import { asString, when } from "littoral-templates";
|
|
20
|
+
import { ConceptDescription, Deprecated, KeyedDescription, ShortDescription, VirtualPackage } from "./implementation.js";
|
|
21
|
+
import { ioLionWebMpsSpecificAnnotationsFrom } from "./annotations.js";
|
|
22
|
+
/**
|
|
23
|
+
* @return human-readable text of the location/“path to” the given {@link Node node},
|
|
24
|
+
* which is *assumed* to be a language element – i.e., a {@link M3Concept}.
|
|
25
|
+
*/
|
|
26
|
+
const pathTo = (node) => {
|
|
27
|
+
if (node instanceof LanguageEntity) {
|
|
28
|
+
return `${withFirstLower(node.metaType())} ${node.name} in ${pathTo(node.language)}`;
|
|
29
|
+
}
|
|
30
|
+
if (node instanceof EnumerationLiteral) {
|
|
31
|
+
return `literal ${node.name} of ${pathTo(node.enumeration)}`;
|
|
32
|
+
}
|
|
33
|
+
if (node instanceof Feature) {
|
|
34
|
+
return `${withFirstLower(node.metaType())} ${node.name} of ${pathTo(node.classifier)}`;
|
|
35
|
+
}
|
|
36
|
+
if (node instanceof Language) {
|
|
37
|
+
return `language ${node.name}`;
|
|
38
|
+
}
|
|
39
|
+
throw new Error(`don't know how to handle an instance of ${node.constructor.name}`);
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* @return a textualization of the given io.lionweb.mps.specific annotation.
|
|
43
|
+
*/
|
|
44
|
+
const textualizationOfAnnotation = (annotation) => {
|
|
45
|
+
const textualizeProperty = (propertyName, displayName) => {
|
|
46
|
+
const value = annotation[propertyName];
|
|
47
|
+
return value === undefined
|
|
48
|
+
? undefined
|
|
49
|
+
: `${displayName}: ${value}`;
|
|
50
|
+
};
|
|
51
|
+
const textualizePropertiesWithDisplayNames = (properties) => Object.entries(properties)
|
|
52
|
+
.map(([displayName, propertyName]) => textualizeProperty(propertyName, displayName))
|
|
53
|
+
.filter((optStr) => optStr !== undefined);
|
|
54
|
+
const textualizeProperties = (...propertyNames) => propertyNames
|
|
55
|
+
.map((propertyName) => textualizeProperty(propertyName, propertyName))
|
|
56
|
+
.filter((optStr) => optStr !== undefined);
|
|
57
|
+
if (annotation instanceof ConceptDescription) {
|
|
58
|
+
const fragments = textualizePropertiesWithDisplayNames({ "short description": "conceptShortDescription", "alias": "conceptAlias", "help URL": "helpUrl" });
|
|
59
|
+
return fragments.length === 0
|
|
60
|
+
? `@ConceptDescription: (no info)`
|
|
61
|
+
: [
|
|
62
|
+
`@ConceptDescription:`,
|
|
63
|
+
indent(fragments)
|
|
64
|
+
];
|
|
65
|
+
}
|
|
66
|
+
if (annotation instanceof Deprecated) {
|
|
67
|
+
const fragments = textualizeProperties("comment", "build");
|
|
68
|
+
return fragments.length === 0
|
|
69
|
+
? `@Deprecated: (no info)`
|
|
70
|
+
: [
|
|
71
|
+
`@Deprecated:`,
|
|
72
|
+
indent(fragments)
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
if (annotation instanceof KeyedDescription) {
|
|
76
|
+
const fragments = textualizeProperties("documentation");
|
|
77
|
+
return (fragments.length === 0 && annotation.seeAlso.length === 0)
|
|
78
|
+
? `@KeyedDescription: (no info)`
|
|
79
|
+
: [
|
|
80
|
+
`@KeyedDescription: `,
|
|
81
|
+
indent([
|
|
82
|
+
fragments,
|
|
83
|
+
when(annotation.seeAlso.length > 0)([
|
|
84
|
+
`see also:`,
|
|
85
|
+
indent(annotation.seeAlso.map(pathTo))
|
|
86
|
+
])
|
|
87
|
+
])
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
if (annotation instanceof ShortDescription) {
|
|
91
|
+
const fragments = textualizeProperties("description");
|
|
92
|
+
return fragments.length === 0
|
|
93
|
+
? `@ShortDescription: (no info)`
|
|
94
|
+
: [
|
|
95
|
+
`@ShortDescription:`,
|
|
96
|
+
indent(fragments)
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
if (annotation instanceof VirtualPackage) {
|
|
100
|
+
const fragments = textualizeProperties("name");
|
|
101
|
+
return fragments.length === 0
|
|
102
|
+
? `@VirtualPackage: (no info)`
|
|
103
|
+
: [
|
|
104
|
+
`@VirtualPackage:`,
|
|
105
|
+
indent(fragments)
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
throw new Error(`don't know how to handle an instance of ${annotation.constructor.name}`);
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* @return textualization of the given {@link M3Concept language element} provided it either has (1 or more) annotations itself,
|
|
112
|
+
* or if any of its nested language elements – i.e.: descendants – have (1 or more) annotations.
|
|
113
|
+
* Otherwise, it returns an empty array `[]`.
|
|
114
|
+
*/
|
|
115
|
+
const textualizationOfAnnotationsInM3Concept = (node) => {
|
|
116
|
+
const annotations = ioLionWebMpsSpecificAnnotationsFrom(node);
|
|
117
|
+
if (node instanceof Classifier) {
|
|
118
|
+
const annotatedFeatures = node.features.flatMap((feature) => textualizationOfAnnotationsInM3Concept(feature));
|
|
119
|
+
return (annotations.length > 0 || annotatedFeatures.length > 0)
|
|
120
|
+
? [
|
|
121
|
+
`${withFirstLower(node.metaType())} ${node.name}:`,
|
|
122
|
+
indent([
|
|
123
|
+
annotations.map(textualizationOfAnnotation),
|
|
124
|
+
annotatedFeatures
|
|
125
|
+
])
|
|
126
|
+
]
|
|
127
|
+
: [];
|
|
128
|
+
}
|
|
129
|
+
if (node instanceof Enumeration) {
|
|
130
|
+
const annotatedLiterals = node.literals.flatMap((literal) => textualizationOfAnnotationsInM3Concept(literal));
|
|
131
|
+
return (annotations.length > 0 || annotatedLiterals.length > 0)
|
|
132
|
+
? [
|
|
133
|
+
`enumeration ${node.name}:`,
|
|
134
|
+
indent([
|
|
135
|
+
annotations.map(textualizationOfAnnotation),
|
|
136
|
+
annotatedLiterals
|
|
137
|
+
])
|
|
138
|
+
]
|
|
139
|
+
: [];
|
|
140
|
+
}
|
|
141
|
+
if (node instanceof EnumerationLiteral) {
|
|
142
|
+
return annotations.length > 0
|
|
143
|
+
? [
|
|
144
|
+
`enumeration literal ${node.name}:`,
|
|
145
|
+
indent(annotations.map(textualizationOfAnnotation))
|
|
146
|
+
]
|
|
147
|
+
: [];
|
|
148
|
+
}
|
|
149
|
+
if (node instanceof Feature) {
|
|
150
|
+
return annotations.length > 0
|
|
151
|
+
? [
|
|
152
|
+
`${withFirstLower(node.metaType())} ${node.name}:`,
|
|
153
|
+
indent(annotations.map(textualizationOfAnnotation))
|
|
154
|
+
]
|
|
155
|
+
: [];
|
|
156
|
+
}
|
|
157
|
+
if (node instanceof Language) {
|
|
158
|
+
const annotatedEntities = node.entities.flatMap((entity) => textualizationOfAnnotationsInM3Concept(entity));
|
|
159
|
+
return (annotations.length > 0 || annotatedEntities.length > 0)
|
|
160
|
+
? [
|
|
161
|
+
`language ${node.name}:`,
|
|
162
|
+
indent([
|
|
163
|
+
annotations.map(textualizationOfAnnotation),
|
|
164
|
+
annotatedEntities
|
|
165
|
+
])
|
|
166
|
+
]
|
|
167
|
+
: [];
|
|
168
|
+
}
|
|
169
|
+
if (node instanceof PrimitiveType) {
|
|
170
|
+
return annotations.length > 0
|
|
171
|
+
? [
|
|
172
|
+
`primitive type ${node.name}:`,
|
|
173
|
+
indent(annotations.map(textualizationOfAnnotation))
|
|
174
|
+
]
|
|
175
|
+
: [];
|
|
176
|
+
}
|
|
177
|
+
// can't happen as node has type 'never' at this point, because of type exhaustion,
|
|
178
|
+
// but need to return a Template:
|
|
179
|
+
return [];
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* @return textualization of all instances of io.lionweb.mps.specific annotations, in the given languages' tree structure.
|
|
183
|
+
* **Note**: only language elements having annotations (at any nesting depth) are rendered.
|
|
184
|
+
* This is useful to get a quick overview of the annotations.
|
|
185
|
+
*/
|
|
186
|
+
export const textualizationOfAnnotationsIn = (languages) => asString(languages.map(textualizationOfAnnotationsInM3Concept));
|
|
187
|
+
//# sourceMappingURL=textualizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textualizer.js","sourceRoot":"","sources":["../src/textualizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
```mermaid
|
|
2
|
+
classDiagram
|
|
3
|
+
|
|
4
|
+
class ConceptDescription,<<Annotation>> ConceptDescription,ConceptDescription ..> Classifier {
|
|
5
|
+
+String? conceptAlias
|
|
6
|
+
+String? conceptShortDescription
|
|
7
|
+
+String? helpUrl
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
class Deprecated,<<Annotation>> Deprecated,Deprecated ..> IKeyed {
|
|
11
|
+
+String? comment
|
|
12
|
+
+String? build
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
class KeyedDescription,<<Annotation>> KeyedDescription,KeyedDescription ..> IKeyed {
|
|
16
|
+
+String? documentation
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
class ShortDescription,<<Annotation>> ShortDescription,ShortDescription ..> Node {
|
|
20
|
+
+String? description
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
class VirtualPackage
|
|
24
|
+
<<Annotation>> VirtualPackage
|
|
25
|
+
VirtualPackage ..> Node
|
|
26
|
+
INamed <|.. VirtualPackage
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
KeyedDescription "*" --> "*" Node: seeAlso
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
@startuml
|
|
2
|
+
hide empty members
|
|
3
|
+
|
|
4
|
+
' qualified name: "io.lionweb.mps.specific"
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
annotation ConceptDescription {
|
|
8
|
+
conceptAlias: String?
|
|
9
|
+
conceptShortDescription: String?
|
|
10
|
+
helpUrl: String?
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
annotation Deprecated {
|
|
14
|
+
comment: String?
|
|
15
|
+
build: String?
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
annotation KeyedDescription {
|
|
19
|
+
documentation: String?
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
annotation ShortDescription {
|
|
23
|
+
description: String?
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
annotation VirtualPackage implements INamed
|
|
27
|
+
VirtualPackage ..> Node
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
' relations:
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
KeyedDescription "*" --> "*" Node: seeAlso
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@enduml
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/io-lionweb-mps-specific",
|
|
3
|
-
"version": "0.7.0-alpha.
|
|
3
|
+
"version": "0.7.0-alpha.10",
|
|
4
4
|
"description": "TypeScript implementation of the io.lionweb.mps.specific language",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,14 +15,15 @@
|
|
|
15
15
|
"url": "https://github.com/LionWeb-io/lionweb-typescript/issues"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@lionweb/core": "0.7.0-alpha.
|
|
19
|
-
"@lionweb/json": "0.7.0-alpha.
|
|
20
|
-
"@lionweb/
|
|
21
|
-
"
|
|
18
|
+
"@lionweb/core": "0.7.0-alpha.10",
|
|
19
|
+
"@lionweb/json": "0.7.0-alpha.10",
|
|
20
|
+
"@lionweb/textgen-utils": "0.7.0-alpha.10",
|
|
21
|
+
"@lionweb/ts-utils": "0.7.0-alpha.10",
|
|
22
|
+
"littoral-templates": "0.5.0",
|
|
22
23
|
"nanoid": "5.0.9"
|
|
23
24
|
},
|
|
24
25
|
"scripts": {
|
|
25
|
-
"clean": "
|
|
26
|
+
"clean": "npx rimraf dist node_modules -g lionweb-io-lionweb-mps-specific-*.tgz",
|
|
26
27
|
"build": "tsc",
|
|
27
28
|
"lint": "eslint src",
|
|
28
29
|
"prep:pre-release": "npm run clean && npm install && npm run build",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"io.lionweb.mps.specific.d.ts","sourceRoot":"","sources":["../src/io.lionweb.mps.specific.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAIxD,8BAAsB,wBAAyB,YAAW,IAAI;aACpB,EAAE,EAAE,MAAM;aAAkB,UAAU,EAAE,UAAU;IAAxF,SAAS,aAA6B,EAAE,EAAE,MAAM,EAAkB,UAAU,EAAE,UAAU;IAEjF,MAAM,CAAC,EAAE,IAAI,CAAA;IACpB,SAAgB,WAAW,EAAE,IAAI,EAAE,CAAK;CAC3C;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;gBAChD,EAAE,EAAE,MAAM;IAGf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,UAAW,SAAQ,wBAAwB;gBACxC,EAAE,EAAE,MAAM;IAGf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,gBAAiB,SAAQ,wBAAwB;gBAC9C,EAAE,EAAE,MAAM;IAGf,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,SAAgB,OAAO,EAAE,IAAI,EAAE,CAAK;CACvC;AAED,qBAAa,gBAAiB,SAAQ,wBAAwB;gBAC9C,EAAE,EAAE,MAAM;IAGf,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,qBAAa,cAAe,SAAQ,wBAAyB,YAAW,MAAM;gBAC9D,EAAE,EAAE,MAAM;IAGtB,OAAO,CAAC,KAAK,CAAC,CAAQ;IACtB,IAAI,IAAI,IAMU,MAAM,CADvB;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAEvB;CACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"io.lionweb.mps.specific.js","sourceRoot":"","sources":["../src/io.lionweb.mps.specific.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;AAGtC,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAA;AAGjE,MAAM,OAAgB,wBAAwB;IAC1C,YAAsC,EAAU,EAAkB,UAAsB;QAAlD,OAAE,GAAF,EAAE,CAAQ;QAAkB,eAAU,GAAV,UAAU,CAAY;QAGxE,gBAAW,GAAW,EAAE,CAAA;IAFxC,CAAC;CAGJ;AAED,MAAM,OAAO,kBAAmB,SAAQ,wBAAwB;IAC5D,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,kBAAkB,CAAC,CAAA;IACjE,CAAC;CAIJ;AAED,MAAM,OAAO,UAAW,SAAQ,wBAAwB;IACpD,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,UAAU,CAAC,CAAA;IACzD,CAAC;CAGJ;AAED,MAAM,OAAO,gBAAiB,SAAQ,wBAAwB;IAC1D,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAA;QAG/C,YAAO,GAAW,EAAE,CAAA;IAFpC,CAAC;CAGJ;AAED,MAAM,OAAO,gBAAiB,SAAQ,wBAAwB;IAC1D,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,gBAAgB,CAAC,CAAA;IAC/D,CAAC;CAEJ;AAED,MAAM,OAAO,cAAe,SAAQ,wBAAwB;IACxD,YAAY,EAAU;QAClB,KAAK,CAAC,EAAE,EAAE,+BAA+B,CAAC,cAAc,CAAC,CAAA;IAC7D,CAAC;IAED,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;QACtG,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,OAAe;QACpB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;IACxB,CAAC;CACJ"}
|
|
File without changes
|
|
File without changes
|