@lionweb/utilities 0.5.0-beta.3 → 0.5.0-beta.6
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 +7 -0
- package/dist/id-generation.d.ts +41 -0
- package/dist/id-generation.d.ts.map +1 -1
- package/dist/id-generation.js +67 -0
- package/dist/id-generation.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/m3/diagrams/Mermaid-generator.js +5 -5
- package/dist/m3/diagrams/Mermaid-generator.js.map +1 -1
- package/dist/m3/diagrams/PlantUML-generator.d.ts.map +1 -1
- package/dist/m3/diagrams/PlantUML-generator.js +5 -5
- package/dist/m3/diagrams/PlantUML-generator.js.map +1 -1
- package/dist/m3/ecore/importer.d.ts.map +1 -1
- package/dist/m3/ecore/importer.js +3 -3
- package/dist/m3/ecore/importer.js.map +1 -1
- package/dist/m3/index.d.ts +8 -0
- package/dist/m3/index.d.ts.map +1 -0
- package/dist/m3/index.js +8 -0
- package/dist/m3/index.js.map +1 -0
- package/dist/m3/textual-syntax.d.ts +4 -0
- package/dist/m3/textual-syntax.d.ts.map +1 -0
- package/dist/m3/textual-syntax.js +50 -0
- package/dist/m3/textual-syntax.js.map +1 -0
- package/dist/m3/ts-types-generator.d.ts +10 -0
- package/dist/m3/ts-types-generator.d.ts.map +1 -0
- package/dist/m3/ts-types-generator.js +148 -0
- package/dist/m3/ts-types-generator.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
ADDED
package/dist/id-generation.d.ts
CHANGED
|
@@ -22,5 +22,46 @@ export type HashingIdGenConfig = {
|
|
|
22
22
|
* Note that the created ID generator must be given data in the form of a string (`!== undefined`).
|
|
23
23
|
*/
|
|
24
24
|
export declare const hashingIdGen: (config?: HashingIdGenConfig) => IdGenerator;
|
|
25
|
+
/**
|
|
26
|
+
* Augments the given {@link IdGenerator ID generator} by checking
|
|
27
|
+
* whether it's been given unique {@link GenData data},
|
|
28
|
+
* throwing an error when not.
|
|
29
|
+
*/
|
|
30
|
+
export declare const checkUniqueData: (idGen: IdGenerator) => IdGenerator;
|
|
31
|
+
/**
|
|
32
|
+
* Augments the given {@link IdGenerator ID generator} by checking
|
|
33
|
+
* whether it's been given defined ({@code !== undefined}) data,
|
|
34
|
+
* throwing an error when not.
|
|
35
|
+
*/
|
|
36
|
+
export declare const checkDefinedData: (idGen: IdGenerator) => IdGenerator;
|
|
37
|
+
/**
|
|
38
|
+
* Augments the given {@link IdGenerator ID generator} by checking
|
|
39
|
+
* whether that returns unique IDs, throwing an error when not.
|
|
40
|
+
*/
|
|
41
|
+
export declare const checkUniqueId: (idGen: IdGenerator) => IdGenerator;
|
|
42
|
+
/**
|
|
43
|
+
* Augments the given {@link IdGenerator ID generator} by checking
|
|
44
|
+
* whether it returns valid IDs, meaning [Base64URL](https://www.base64url.com/).
|
|
45
|
+
* (See also [Wikipedia](https://en.wikipedia.org/wiki/Base64#Variants_summary_table).)
|
|
46
|
+
* If a generated ID is not valid, an error is thrown.
|
|
47
|
+
*/
|
|
48
|
+
export declare const checkValidId: (idGen: IdGenerator) => IdGenerator;
|
|
49
|
+
/**
|
|
50
|
+
* Type definition for transformers of {@link IdGenerator ID generators}.
|
|
51
|
+
*/
|
|
52
|
+
export type IdGenTransformer = (idGen: IdGenerator) => IdGenerator;
|
|
53
|
+
/**
|
|
54
|
+
* Wraps the given ("initial") {@link IdGenerator ID generator}
|
|
55
|
+
* with the given {@link IdGenTransformer ID generator transformers}.
|
|
56
|
+
* In other words:
|
|
57
|
+
*
|
|
58
|
+
* wrap(idGen, trafo1, trafo2, ..., trafoN) === trafoN(...trafo2(trafo1(idGen)))
|
|
59
|
+
*/
|
|
60
|
+
export declare const wrapIdGen: (idGen: IdGenerator, ...idGenTransformers: IdGenTransformer[]) => IdGenerator;
|
|
61
|
+
/**
|
|
62
|
+
* Wraps the given ("initial") {@link IdGenerator ID generator} with all
|
|
63
|
+
* {@link IdGenTransformer ID generator checkers} defined above.
|
|
64
|
+
*/
|
|
65
|
+
export declare const checkAll: (idGen: IdGenerator) => IdGenerator;
|
|
25
66
|
export {};
|
|
26
67
|
//# sourceMappingURL=id-generation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-generation.d.ts","sourceRoot":"","sources":["../src/id-generation.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"id-generation.d.ts","sourceRoot":"","sources":["../src/id-generation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,WAAW,EAAC,MAAM,eAAe,CAAA;AAGlD;;GAEG;AACH,eAAO,MAAM,SAAS,QAAO,WACX,CAAA;AAGlB,QAAA,MAAM,oBAAoB,WAAW,CAAA;AAErC;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,CAAC,EAAE,OAAO,oBAAoB,GAAG,MAAM,CAAA;IAChD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAA;CACpC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,YAAa,kBAAkB,KAAG,WAc1D,CAAA;AAGD;;;;GAIG;AACH,eAAO,MAAM,eAAe,UAAW,WAAW,KAAG,WASpD,CAAA;AAGD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAW,WAAW,KAAG,WAMjD,CAAA;AAGL;;;GAGG;AACH,eAAO,MAAM,aAAa,UAAW,WAAW,KAAG,WAWlD,CAAA;AAGD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,UAAW,WAAW,KAAG,WAO7C,CAAA;AAGL;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,WAAW,CAAA;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,WAAW,wBAAwB,gBAAgB,EAAE,KAAG,WACtB,CAAA;AAGnE;;;GAGG;AACH,eAAO,MAAM,QAAQ,UAAW,WAAW,KAAG,WAOzC,CAAA"}
|
package/dist/id-generation.js
CHANGED
|
@@ -27,4 +27,71 @@ export const hashingIdGen = (config) => {
|
|
|
27
27
|
.toString();
|
|
28
28
|
};
|
|
29
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Augments the given {@link IdGenerator ID generator} by checking
|
|
32
|
+
* whether it's been given unique {@link GenData data},
|
|
33
|
+
* throwing an error when not.
|
|
34
|
+
*/
|
|
35
|
+
export const checkUniqueData = (idGen) => {
|
|
36
|
+
const datas = [];
|
|
37
|
+
return (data) => {
|
|
38
|
+
if (datas.indexOf(data) > -1) {
|
|
39
|
+
throw new Error(`duplicate data encountered: "${data}"`);
|
|
40
|
+
}
|
|
41
|
+
datas.push(data);
|
|
42
|
+
return idGen(data);
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Augments the given {@link IdGenerator ID generator} by checking
|
|
47
|
+
* whether it's been given defined ({@code !== undefined}) data,
|
|
48
|
+
* throwing an error when not.
|
|
49
|
+
*/
|
|
50
|
+
export const checkDefinedData = (idGen) => (data) => {
|
|
51
|
+
if (data === undefined) {
|
|
52
|
+
throw new Error(`expected data`);
|
|
53
|
+
}
|
|
54
|
+
return idGen(data);
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Augments the given {@link IdGenerator ID generator} by checking
|
|
58
|
+
* whether that returns unique IDs, throwing an error when not.
|
|
59
|
+
*/
|
|
60
|
+
export const checkUniqueId = (idGen) => {
|
|
61
|
+
const ids = [];
|
|
62
|
+
return (data) => {
|
|
63
|
+
const id = idGen(data);
|
|
64
|
+
if (ids.indexOf(id) > -1) {
|
|
65
|
+
throw new Error(`duplicate ID generated: "${id}"`);
|
|
66
|
+
}
|
|
67
|
+
ids.push(id);
|
|
68
|
+
return id;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Augments the given {@link IdGenerator ID generator} by checking
|
|
73
|
+
* whether it returns valid IDs, meaning [Base64URL](https://www.base64url.com/).
|
|
74
|
+
* (See also [Wikipedia](https://en.wikipedia.org/wiki/Base64#Variants_summary_table).)
|
|
75
|
+
* If a generated ID is not valid, an error is thrown.
|
|
76
|
+
*/
|
|
77
|
+
export const checkValidId = (idGen) => (data) => {
|
|
78
|
+
const id = idGen(data);
|
|
79
|
+
if (!id.match(/^[A-Za-z0-9_-]+$/)) {
|
|
80
|
+
throw new Error(`generated ID is not valid: ${id}`);
|
|
81
|
+
}
|
|
82
|
+
return id;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Wraps the given ("initial") {@link IdGenerator ID generator}
|
|
86
|
+
* with the given {@link IdGenTransformer ID generator transformers}.
|
|
87
|
+
* In other words:
|
|
88
|
+
*
|
|
89
|
+
* wrap(idGen, trafo1, trafo2, ..., trafoN) === trafoN(...trafo2(trafo1(idGen)))
|
|
90
|
+
*/
|
|
91
|
+
export const wrapIdGen = (idGen, ...idGenTransformers) => idGenTransformers.reduce((acc, current) => current(acc), idGen);
|
|
92
|
+
/**
|
|
93
|
+
* Wraps the given ("initial") {@link IdGenerator ID generator} with all
|
|
94
|
+
* {@link IdGenTransformer ID generator checkers} defined above.
|
|
95
|
+
*/
|
|
96
|
+
export const checkAll = (idGen) => wrapIdGen(idGen, checkDefinedData, checkUniqueData, checkValidId, checkUniqueId);
|
|
30
97
|
//# sourceMappingURL=id-generation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"id-generation.js","sourceRoot":"","sources":["../src/id-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAA;AAKjC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAgB,EAAE,CACvC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAA;AAGlB,MAAM,oBAAoB,GAAG,QAAQ,CAAA;AAYrC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAA2B,EAAe,EAAE;IACrE,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,oBAAoB,CAAA;IAC3D,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,CAAA;IAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,WAAW,CAAA;IAEhD,OAAO,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;SAC/C;QACD,OAAO,UAAU,CAAC,SAAS,CAAC;aACvB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;aACnB,MAAM,CAAC,QAAQ,CAAC;aAChB,QAAQ,EAAE,CAAA;IACnB,CAAC,CAAA;AACL,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"id-generation.js","sourceRoot":"","sources":["../src/id-generation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
export * from "./m3/diagrams/Mermaid-generator.js";
|
|
2
|
-
export * from "./m3/diagrams/PlantUML-generator.js";
|
|
3
|
-
export * from "./m3/ecore/importer.js";
|
|
4
|
-
export * from "./m3/ecore/types.js";
|
|
5
|
-
export * from "./m3/schema-generator.js";
|
|
6
1
|
export * from "./id-generation.js";
|
|
7
2
|
export * from "./json.js";
|
|
3
|
+
export * from "./m3/index.js";
|
|
8
4
|
export * from "./serialization-utils.js";
|
|
9
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
export * from "./m3/diagrams/Mermaid-generator.js";
|
|
2
|
-
export * from "./m3/diagrams/PlantUML-generator.js";
|
|
3
|
-
export * from "./m3/ecore/importer.js";
|
|
4
|
-
export * from "./m3/ecore/types.js";
|
|
5
|
-
export * from "./m3/schema-generator.js";
|
|
6
1
|
export * from "./id-generation.js";
|
|
7
2
|
export * from "./json.js";
|
|
3
|
+
export * from "./m3/index.js";
|
|
8
4
|
export * from "./serialization-utils.js";
|
|
9
5
|
//# 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,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,0BAA0B,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { asString, indentWith } from "littoral-templates";
|
|
2
|
-
import { Concept,
|
|
2
|
+
import { Concept, Containment, entitiesSortedByName, Enumeration, Interface, isRef, Link, nonRelationalFeatures, PrimitiveType, relationsOf, type, unresolved } from "@lionweb/core";
|
|
3
3
|
// define some layouting basics/building algebra:
|
|
4
4
|
const indented = indentWith(` `)(1);
|
|
5
5
|
const block = (header, elements) => elements.length === 0
|
|
@@ -38,7 +38,7 @@ const generateForConcept = ({ name, features, abstract: abstract_, extends: exte
|
|
|
38
38
|
isRef(extends_) ? `${extends_.name} <|-- ${name}` : [],
|
|
39
39
|
``
|
|
40
40
|
];
|
|
41
|
-
const
|
|
41
|
+
const generateForInterface = ({ name, features, extends: extends_ }) => [
|
|
42
42
|
block(`class ${name}`, nonRelationalFeatures(features).map(generateForNonRelationalFeature)),
|
|
43
43
|
`<<Interface>> ${name}`,
|
|
44
44
|
extends_.map(({ name: extendsName }) => `${extendsName} <|-- ${name}`),
|
|
@@ -59,12 +59,12 @@ const generateForElement = (element) => {
|
|
|
59
59
|
if (element instanceof Concept) {
|
|
60
60
|
return generateForConcept(element);
|
|
61
61
|
}
|
|
62
|
-
if (element instanceof ConceptInterface) {
|
|
63
|
-
return generateForConceptInterface(element);
|
|
64
|
-
}
|
|
65
62
|
if (element instanceof Enumeration) {
|
|
66
63
|
return generateForEnumeration(element);
|
|
67
64
|
}
|
|
65
|
+
if (element instanceof Interface) {
|
|
66
|
+
return generateForInterface(element);
|
|
67
|
+
}
|
|
68
68
|
if (element instanceof PrimitiveType) {
|
|
69
69
|
return generateForPrimitiveType(element);
|
|
70
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mermaid-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/Mermaid-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAA;AACrE,OAAO,EACH,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"Mermaid-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/Mermaid-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlantUML-generator.d.ts","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAQH,QAAQ,
|
|
1
|
+
{"version":3,"file":"PlantUML-generator.d.ts","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAQH,QAAQ,EASX,MAAM,eAAe,CAAA;AAMtB;;;GAGG;AACH,eAAO,MAAM,2BAA2B,uBAAsB,QAAQ,WAmBpE,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { asString, indentWith } from "littoral-templates";
|
|
2
|
-
import { Concept,
|
|
2
|
+
import { Concept, Containment, entitiesSortedByName, Enumeration, Interface, isRef, Link, nameOf, nonRelationalFeatures, PrimitiveType, relationsOf, type, unresolved } from "@lionweb/core";
|
|
3
3
|
const indented = indentWith(` `)(1);
|
|
4
4
|
/**
|
|
5
5
|
* Generates a string with a PlantUML class diagram
|
|
@@ -45,7 +45,7 @@ const generateForConcept = ({ name, features, abstract: abstract_, extends: exte
|
|
|
45
45
|
fragments.push(`extends`, extends_.name);
|
|
46
46
|
}
|
|
47
47
|
if (implements_.length > 0) {
|
|
48
|
-
fragments.push(`implements`, implements_.map(
|
|
48
|
+
fragments.push(`implements`, implements_.map(nameOf).sort().join(", "));
|
|
49
49
|
}
|
|
50
50
|
return nonRelationalFeatures_.length === 0
|
|
51
51
|
? [
|
|
@@ -59,7 +59,7 @@ const generateForConcept = ({ name, features, abstract: abstract_, extends: exte
|
|
|
59
59
|
``
|
|
60
60
|
];
|
|
61
61
|
};
|
|
62
|
-
const
|
|
62
|
+
const generateForInterface = ({ name, extends: extends_, features }) => {
|
|
63
63
|
const nonRelationalFeatures_ = nonRelationalFeatures(features);
|
|
64
64
|
const fragments = [`interface`, name];
|
|
65
65
|
if (extends_.length > 0) {
|
|
@@ -91,8 +91,8 @@ const generateForElement = (element) => {
|
|
|
91
91
|
if (element instanceof Concept) {
|
|
92
92
|
return generateForConcept(element);
|
|
93
93
|
}
|
|
94
|
-
if (element instanceof
|
|
95
|
-
return
|
|
94
|
+
if (element instanceof Interface) {
|
|
95
|
+
return generateForInterface(element);
|
|
96
96
|
}
|
|
97
97
|
if (element instanceof PrimitiveType) {
|
|
98
98
|
return generateForPrimitiveType(element);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlantUML-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAA;AACvD,OAAO,EACH,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"PlantUML-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../../src/m3/ecore/importer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../../src/m3/ecore/importer.ts"],"names":[],"mappings":"AAAA,OAAO,EASH,QAAQ,EAMX,MAAM,eAAe,CAAA;AAStB,OAAO,EAAsB,QAAQ,EAA4B,MAAM,YAAY,CAAA;AAuBnF;;GAEG;AACH,eAAO,MAAM,kBAAkB,aAAc,QAAQ,WAAW,MAAM,KAAG,QAwHxE,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { asArray, builtinPrimitives,
|
|
2
|
-
import { hashingIdGen } from "../../id-generation.js";
|
|
1
|
+
import { asArray, builtinPrimitives, duplicatesAmong, keyOf, LanguageFactory, namedsOf, qualifiedNameOf } from "@lionweb/core";
|
|
2
|
+
import { checkDefinedData, checkUniqueData, checkUniqueId, checkValidId, hashingIdGen, wrapIdGen } from "../../id-generation.js";
|
|
3
3
|
const localRefPrefix = "#//";
|
|
4
4
|
/**
|
|
5
5
|
* "Dereferences" a type descriptor string by removing the optional <pre>"#//"</pre> prefix.
|
|
@@ -32,7 +32,7 @@ export const asLionCoreLanguage = (ecoreXml, version) => {
|
|
|
32
32
|
}
|
|
33
33
|
throw new Error(`don't know how to convert an EClassifier with descriptor "${xsiType}"`);
|
|
34
34
|
};
|
|
35
|
-
// TODO (#10)
|
|
35
|
+
// TODO (#10) Interface?
|
|
36
36
|
const convertedEClassifiers = ePackage["eClassifiers"]
|
|
37
37
|
.map((eClassifier) => [eClassifier, convertEClassifier(eClassifier)]);
|
|
38
38
|
const eClassifierConversionFor = (eClassifierName) => convertedEClassifiers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importer.js","sourceRoot":"","sources":["../../../src/m3/ecore/importer.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,iBAAiB,
|
|
1
|
+
{"version":3,"file":"importer.js","sourceRoot":"","sources":["../../../src/m3/ecore/importer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./diagrams/Mermaid-generator.js";
|
|
2
|
+
export * from "./diagrams/PlantUML-generator.js";
|
|
3
|
+
export * from "./ecore/importer.js";
|
|
4
|
+
export * from "./ecore/types.js";
|
|
5
|
+
export * from "./schema-generator.js";
|
|
6
|
+
export * from "./ts-types-generator.js";
|
|
7
|
+
export { asText } from "./textual-syntax.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/m3/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAA"}
|
package/dist/m3/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./diagrams/Mermaid-generator.js";
|
|
2
|
+
export * from "./diagrams/PlantUML-generator.js";
|
|
3
|
+
export * from "./ecore/importer.js";
|
|
4
|
+
export * from "./ecore/types.js";
|
|
5
|
+
export * from "./schema-generator.js";
|
|
6
|
+
export * from "./ts-types-generator.js";
|
|
7
|
+
export { asText } from "./textual-syntax.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/m3/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textual-syntax.d.ts","sourceRoot":"","sources":["../../src/m3/textual-syntax.ts"],"names":[],"mappings":"AAAA,OAAO,EASH,MAAM,EAOT,MAAM,eAAe,CAAA;AAetB,QAAA,MAAM,MAAM,SAAU,MAAM,KAAG,MAoD9B,CAAA;AAGD,OAAO,EACH,MAAM,EACT,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Concept, Containment, Enumeration, EnumerationLiteral, Interface, Language, Link, nameOf, nameSorted, PrimitiveType, Property, unresolved } from "@lionweb/core";
|
|
2
|
+
// TODO use littoral-templates?
|
|
3
|
+
const indent = (str) => str.split("\n").map((line) => ` ${line}`).join("\n");
|
|
4
|
+
const descent = (ts, separator) => nameSorted(ts).map((t) => indent(indent(asText(t)))).join(separator);
|
|
5
|
+
const refAsText = (ref) => ref === unresolved ? `???` : ref.name;
|
|
6
|
+
const asText = (node) => {
|
|
7
|
+
if (node instanceof Concept) {
|
|
8
|
+
return `${node.partition ? `<<partition>> ` : ``}${node.abstract ? `abstract ` : ``}concept ${node.name}${node.extends === undefined ? `` : ` extends ${refAsText(node.extends)}`}${node.implements.length === 0 ? `` : ` implements ${nameSorted(node.implements).map(nameOf).join(", ")}`}${node.features.length === 0 ? `` : `
|
|
9
|
+
features (↓name):
|
|
10
|
+
${descent(node.features, "\n")}`}`;
|
|
11
|
+
}
|
|
12
|
+
if (node instanceof Interface) {
|
|
13
|
+
return `interface ${node.name}${node.extends.length === 0 ? `` : ` extends ${nameSorted(node.extends).map(nameOf).join(", ")}`}${node.features.length === 0 ? `` : `
|
|
14
|
+
features (↓name):
|
|
15
|
+
${descent(node.features, "\n")}`}`;
|
|
16
|
+
}
|
|
17
|
+
if (node instanceof Link) {
|
|
18
|
+
return `${node.name}${node instanceof Containment ? `:` : ` ->`} ${refAsText(node.type)}${node.multiple ? `[${node.optional ? `0` : `1`}..*]` : ``}${node.optional && !node.multiple ? `?` : ``}`;
|
|
19
|
+
}
|
|
20
|
+
if (node instanceof Enumeration) {
|
|
21
|
+
return `enumeration ${node.name}${node.literals.length === 0 ? `` : `
|
|
22
|
+
literals:
|
|
23
|
+
${descent(node.literals, "\n")}`}`;
|
|
24
|
+
}
|
|
25
|
+
if (node instanceof EnumerationLiteral) {
|
|
26
|
+
return `${node.name}`;
|
|
27
|
+
}
|
|
28
|
+
if (node instanceof Language) {
|
|
29
|
+
return `language ${node.name}
|
|
30
|
+
version: ${node.version}${node.dependsOn.length > 0
|
|
31
|
+
? ` dependsOn:
|
|
32
|
+
${node.dependsOn.map((language) => ` ${language.key} (${language.version})`).join("\n")}
|
|
33
|
+
`
|
|
34
|
+
: ``}
|
|
35
|
+
entities (↓name):
|
|
36
|
+
|
|
37
|
+
${descent(node.entities, "\n\n")}
|
|
38
|
+
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
if (node instanceof PrimitiveType) {
|
|
42
|
+
return `primitive type ${node.name}`;
|
|
43
|
+
}
|
|
44
|
+
if (node instanceof Property) {
|
|
45
|
+
return `${node.name}: ${refAsText(node.type)}${node.optional ? `?` : ``}`;
|
|
46
|
+
}
|
|
47
|
+
return `node (key=${node.key}, ID=${node.id}) of class ${node.constructor.name} not handled`;
|
|
48
|
+
};
|
|
49
|
+
export { asText };
|
|
50
|
+
//# sourceMappingURL=textual-syntax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textual-syntax.js","sourceRoot":"","sources":["../../src/m3/textual-syntax.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Language } from "@lionweb/core";
|
|
2
|
+
export declare enum GenerationOptions {
|
|
3
|
+
assumeSealed = 0
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* @return string generated TypeScript source code that contains type definitions that match the given {@link Language language}
|
|
7
|
+
* in combination with using the {@link DynamicNode} base type and corresponding facades.
|
|
8
|
+
*/
|
|
9
|
+
export declare const tsTypesForLanguage: (language: Language, ...generationOptions: GenerationOptions[]) => string;
|
|
10
|
+
//# sourceMappingURL=ts-types-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-types-generator.d.ts","sourceRoot":"","sources":["../../src/m3/ts-types-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAYH,QAAQ,EASX,MAAM,eAAe,CAAA;AA6EtB,oBAAY,iBAAiB;IACzB,YAAY,IAAA;CACf;AAGD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,aAAc,QAAQ,wBAAwB,iBAAiB,EAAE,WA6G/F,CAAA"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { builtinClassifiers, builtinPrimitives, Concept, conceptsOf, Enumeration, Interface, isConcrete, Link, nameOf, nameSorted, PrimitiveType, Property, unresolved } from "@lionweb/core";
|
|
2
|
+
import { asString, indentWith } from "littoral-templates";
|
|
3
|
+
const indent = indentWith(" ")(1);
|
|
4
|
+
/**
|
|
5
|
+
* Include the given `result` only when the `expr` is `true`.
|
|
6
|
+
*/
|
|
7
|
+
const cond = (expr, result) => expr ? [result] : [];
|
|
8
|
+
const fieldForFeature = (feature) => {
|
|
9
|
+
if (feature instanceof Link) {
|
|
10
|
+
return fieldForLink(feature);
|
|
11
|
+
}
|
|
12
|
+
if (feature instanceof Property) {
|
|
13
|
+
return fieldForProperty(feature);
|
|
14
|
+
}
|
|
15
|
+
return `${feature.name}: unknown;`;
|
|
16
|
+
};
|
|
17
|
+
const fieldForLink = ({ name, type, optional, multiple }) => `${name}${optional && !multiple ? `?` : ``}: ${type === unresolved ? `unknown` : type.name}${multiple ? `[]` : ``};`;
|
|
18
|
+
// FIXME this doesn't work cross-language
|
|
19
|
+
const tsTypeFor = (datatype) => {
|
|
20
|
+
switch (datatype) {
|
|
21
|
+
case builtinPrimitives.booleanDatatype: return `boolean`;
|
|
22
|
+
case builtinPrimitives.stringDatatype: return `string`;
|
|
23
|
+
case builtinPrimitives.integerDatatype: return `number`;
|
|
24
|
+
case builtinPrimitives.jsonDatatype: return `unknown`;
|
|
25
|
+
case unresolved:
|
|
26
|
+
default:
|
|
27
|
+
return `unknown`;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const fieldForProperty = ({ name, type, optional }) => `${name}${optional ? `?` : ``}: ${tsTypeFor(type)};`;
|
|
31
|
+
const isINamed = (entity) => entity === builtinClassifiers.inamed;
|
|
32
|
+
const usesINamedDirectly = (entity) => {
|
|
33
|
+
if (entity instanceof Concept) {
|
|
34
|
+
return entity.implements.some(isINamed);
|
|
35
|
+
}
|
|
36
|
+
if (entity instanceof Interface) {
|
|
37
|
+
return entity.extends.some(isINamed);
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
};
|
|
41
|
+
const typeForEnumeration = (enumeration) => [
|
|
42
|
+
`enum ${enumeration.name} {`,
|
|
43
|
+
indent(enumeration.literals.map(nameOf).join(`, `)),
|
|
44
|
+
`}`,
|
|
45
|
+
``
|
|
46
|
+
];
|
|
47
|
+
const typeForPrimitiveType = (datatype) => [
|
|
48
|
+
`export type ${datatype.name} = ${tsTypeFor(datatype)};`,
|
|
49
|
+
``
|
|
50
|
+
];
|
|
51
|
+
export var GenerationOptions;
|
|
52
|
+
(function (GenerationOptions) {
|
|
53
|
+
GenerationOptions[GenerationOptions["assumeSealed"] = 0] = "assumeSealed";
|
|
54
|
+
})(GenerationOptions || (GenerationOptions = {}));
|
|
55
|
+
/**
|
|
56
|
+
* @return string generated TypeScript source code that contains type definitions that match the given {@link Language language}
|
|
57
|
+
* in combination with using the {@link DynamicNode} base type and corresponding facades.
|
|
58
|
+
*/
|
|
59
|
+
export const tsTypesForLanguage = (language, ...generationOptions) => {
|
|
60
|
+
const typeForConcept = (concept) => {
|
|
61
|
+
const { name } = concept;
|
|
62
|
+
const superTypes = [
|
|
63
|
+
...(concept.extends ? [concept.extends] : []),
|
|
64
|
+
...concept.implements
|
|
65
|
+
];
|
|
66
|
+
const mixinNames = superTypes.length === 0 ? [`DynamicNode`] : superTypes.map(nameOf);
|
|
67
|
+
const subClassifiers = concept.abstract
|
|
68
|
+
? (generationOptions.indexOf(GenerationOptions.assumeSealed) > -1
|
|
69
|
+
? conceptsOf(language).filter((entity) => entity.extends === concept)
|
|
70
|
+
: [])
|
|
71
|
+
: [concept];
|
|
72
|
+
const hasBody = !concept.abstract || concept.features.length > 0 || subClassifiers.length > 0;
|
|
73
|
+
return [
|
|
74
|
+
`${concept.abstract ? `/** abstract */ ` : ``}export type ${name} = ${mixinNames.join(` & `)}${hasBody ? ` & {` : `;`}`,
|
|
75
|
+
cond(hasBody, [
|
|
76
|
+
indent([
|
|
77
|
+
cond(subClassifiers.length > 0, `// classifier -> ${subClassifiers.map(nameOf).join(` | `)}`),
|
|
78
|
+
cond(concept.features.length > 0, [
|
|
79
|
+
`settings: {`,
|
|
80
|
+
indent(concept.features.map(fieldForFeature)),
|
|
81
|
+
`};`
|
|
82
|
+
]),
|
|
83
|
+
]),
|
|
84
|
+
`};` // (`{` was already rendered as part of the header)
|
|
85
|
+
]),
|
|
86
|
+
``
|
|
87
|
+
];
|
|
88
|
+
};
|
|
89
|
+
const typeForInterface = (intface) => {
|
|
90
|
+
const { name } = intface;
|
|
91
|
+
const mixinNames = intface.extends.length === 0 ? [`DynamicNode`] : intface.extends.map(nameOf);
|
|
92
|
+
const hasBody = intface.features.length > 0;
|
|
93
|
+
return [
|
|
94
|
+
`/** interface */ export type ${name} = ${mixinNames.join(` & `)}${hasBody ? ` & {` : `;`}`,
|
|
95
|
+
cond(hasBody, [
|
|
96
|
+
indent([
|
|
97
|
+
cond(intface.features.length > 0, [
|
|
98
|
+
`settings: {`,
|
|
99
|
+
indent(intface.features.map(fieldForFeature)),
|
|
100
|
+
`};`
|
|
101
|
+
]),
|
|
102
|
+
]),
|
|
103
|
+
`};` // (`{` was already rendered as part of the header)
|
|
104
|
+
]),
|
|
105
|
+
``
|
|
106
|
+
];
|
|
107
|
+
};
|
|
108
|
+
// TODO Refactor previous two functions: 1) transform to an instance of a type def. that captures the code to generate, 2) generate from that
|
|
109
|
+
const typeForLanguageEntity = (entity) => {
|
|
110
|
+
// TODO Annotation
|
|
111
|
+
if (entity instanceof Concept) {
|
|
112
|
+
return typeForConcept(entity);
|
|
113
|
+
}
|
|
114
|
+
if (entity instanceof Enumeration) {
|
|
115
|
+
return typeForEnumeration(entity);
|
|
116
|
+
}
|
|
117
|
+
if (entity instanceof Interface) {
|
|
118
|
+
return typeForInterface(entity);
|
|
119
|
+
}
|
|
120
|
+
if (entity instanceof PrimitiveType) {
|
|
121
|
+
return typeForPrimitiveType(entity);
|
|
122
|
+
}
|
|
123
|
+
return [
|
|
124
|
+
`// unhandled language entity <${entity.constructor.name}>"${entity.name}"`,
|
|
125
|
+
``
|
|
126
|
+
];
|
|
127
|
+
};
|
|
128
|
+
const globalImports = [
|
|
129
|
+
...cond(!language.entities.every(usesINamedDirectly), `DynamicNode`),
|
|
130
|
+
...cond(language.entities.some(usesINamedDirectly), `DynamicINamed as INamed`) // (rename import so we don't have to map just the one)
|
|
131
|
+
];
|
|
132
|
+
return asString([
|
|
133
|
+
`// Warning: this file is generated!`,
|
|
134
|
+
`// Modifying it by hand it useless at best, and sabotage at worst.`,
|
|
135
|
+
``,
|
|
136
|
+
`/*
|
|
137
|
+
* language's metadata:
|
|
138
|
+
* name: ${language.name}
|
|
139
|
+
* version: ${language.version}
|
|
140
|
+
*/`,
|
|
141
|
+
``,
|
|
142
|
+
cond(globalImports.length > 0, `import {${globalImports.join(`, `)}} from "@lionweb/core";`),
|
|
143
|
+
``,
|
|
144
|
+
nameSorted(language.entities).map(typeForLanguageEntity),
|
|
145
|
+
`export type ${language.name}Node = ${nameSorted(language.entities.filter(isConcrete)).map(nameOf).join(` | `)};`
|
|
146
|
+
]);
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=ts-types-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-types-generator.js","sourceRoot":"","sources":["../../src/m3/ts-types-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,UAAU,EAIV,WAAW,EAEX,SAAS,EACT,UAAU,EAGV,IAAI,EACJ,MAAM,EACN,UAAU,EACV,aAAa,EACb,QAAQ,EAER,UAAU,EACb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAA;AAGrE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpC;;GAEG;AACH,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,MAAoB,EAAE,EAAE,CACjD,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAGxB,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,EAAE;IACzC,IAAI,OAAO,YAAY,IAAI,EAAE;QACzB,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA;KAC/B;IACD,IAAI,OAAO,YAAY,QAAQ,EAAE;QAC7B,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAA;KACnC;IACD,OAAO,GAAG,OAAO,CAAC,IAAI,YAAY,CAAA;AACtC,CAAC,CAAA;AAGD,MAAM,YAAY,GAAG,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAO,EAAE,EAAE,CAC5D,GAAG,IAAI,GAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAA;AAChH,0CAA0C;AAGlD,MAAM,SAAS,GAAG,CAAC,QAA6B,EAAE,EAAE;IAChD,QAAQ,QAAQ,EAAE;QACd,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,OAAO,SAAS,CAAA;QACxD,KAAK,iBAAiB,CAAC,cAAc,CAAC,CAAC,OAAO,QAAQ,CAAA;QACtD,KAAK,iBAAiB,CAAC,eAAe,CAAC,CAAC,OAAO,QAAQ,CAAA;QACvD,KAAK,iBAAiB,CAAC,YAAY,CAAC,CAAC,OAAO,SAAS,CAAA;QAErD,KAAK,UAAU,CAAC;QAChB;YACI,OAAO,SAAS,CAAA;KACvB;AACL,CAAC,CAAA;AAGD,MAAM,gBAAgB,GAAG,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAW,EAAE,EAAE,CAC1D,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAA;AAGxD,MAAM,QAAQ,GAAG,CAAC,MAAsB,EAAE,EAAE,CACxC,MAAM,KAAK,kBAAkB,CAAC,MAAM,CAAA;AAGxC,MAAM,kBAAkB,GAAG,CAAC,MAAsB,EAAW,EAAE;IAC3D,IAAI,MAAM,YAAY,OAAO,EAAE;QAC3B,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KAC1C;IACD,IAAI,MAAM,YAAY,SAAS,EAAE;QAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KACvC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AAGD,MAAM,kBAAkB,GAAG,CAAC,WAAwB,EAAE,EAAE,CACpD;IACI,QAAQ,WAAW,CAAC,IAAI,IAAI;IAC5B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,GAAG;IACH,EAAE;CACL,CAAA;AAEL,MAAM,oBAAoB,GAAG,CAAC,QAAuB,EAAE,EAAE,CACrD;IACI,eAAe,QAAQ,CAAC,IAAI,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG;IACxD,EAAE;CACL,CAAA;AAGL,MAAM,CAAN,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IACzB,yEAAY,CAAA;AAChB,CAAC,EAFW,iBAAiB,KAAjB,iBAAiB,QAE5B;AAGD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAkB,EAAE,GAAG,iBAAsC,EAAE,EAAE;IAEhG,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,EAAE;QAExC,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAA;QACtB,MAAM,UAAU,GAAG;YACf,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,OAAO,CAAC,UAAU;SACxB,CAAA;QACD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACrF,MAAM,cAAc,GAChB,OAAO,CAAC,QAAQ;YACZ,CAAC,CAAC,CACE,iBAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC1D,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;gBACrE,CAAC,CAAC,EAAE,CACX;YACD,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACnB,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;QAE7F,OAAO;YACH,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,eAAe,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;YACvH,IAAI,CAAC,OAAO,EAAE;gBACV,MAAM,CAAC;oBACH,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,oBAAoB,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7F,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC9B,aAAa;wBACb,MAAM,CACF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CACxC;wBACD,IAAI;qBACP,CAAC;iBACL,CAAC;gBACF,IAAI,CAAI,mDAAmD;aAC9D,CAAC;YACF,EAAE;SACL,CAAA;IAEL,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,OAAkB,EAAE,EAAE;QAE5C,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAA;QACtB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/F,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QAE3C,OAAO;YACH,gCAAgC,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;YAC3F,IAAI,CAAC,OAAO,EAAE;gBACV,MAAM,CAAC;oBACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC9B,aAAa;wBACb,MAAM,CACF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CACxC;wBACD,IAAI;qBACP,CAAC;iBACL,CAAC;gBACF,IAAI,CAAI,mDAAmD;aAC9D,CAAC;YACF,EAAE;SACL,CAAA;IAEL,CAAC,CAAA;IAED,8IAA8I;IAE9I,MAAM,qBAAqB,GAAG,CAAC,MAAsB,EAAE,EAAE;QACrD,mBAAmB;QACnB,IAAI,MAAM,YAAY,OAAO,EAAE;YAC3B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAA;SAChC;QACD,IAAI,MAAM,YAAY,WAAW,EAAE;YAC/B,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAA;SACpC;QACD,IAAI,MAAM,YAAY,SAAS,EAAE;YAC7B,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAA;SAClC;QACD,IAAI,MAAM,YAAY,aAAa,EAAE;YACjC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAA;SACtC;QACD,OAAO;YACH,iCAAiC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG;YAC3E,EAAE;SACL,CAAA;IACL,CAAC,CAAA;IAED,MAAM,aAAa,GAAG;QAClB,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC;QACpE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,yBAAyB,CAAC,CAAK,uDAAuD;KAC7I,CAAA;IAED,OAAO,QAAQ,CACX;QACI,qCAAqC;QACrC,oEAAoE;QACpE,EAAE;QACF;;kBAEM,QAAQ,CAAC,IAAI;kBACb,QAAQ,CAAC,OAAO;IAC9B;QACQ,EAAE;QACF,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC;QAC5F,EAAE;QACF,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACxD,eAAe,QAAQ,CAAC,IAAI,UAAU,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;KACpH,CACJ,CAAA;AACL,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/utilities",
|
|
3
|
-
"version": "0.5.0-beta.
|
|
3
|
+
"version": "0.5.0-beta.6",
|
|
4
4
|
"description": "LionWeb utilities",
|
|
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
|
"dependencies": {
|
|
18
|
-
"@lionweb/core": "0.5.0-beta.
|
|
18
|
+
"@lionweb/core": "0.5.0-beta.6",
|
|
19
19
|
"littoral-templates": "0.2.2",
|
|
20
20
|
"nanoid": "4.0.2"
|
|
21
21
|
},
|