@lionweb/utilities 0.7.1 → 0.7.2-beta.1
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 +9 -1
- package/dist/m3/diagrams/Mermaid-generator.d.ts +3 -2
- package/dist/m3/diagrams/Mermaid-generator.d.ts.map +1 -1
- package/dist/m3/diagrams/Mermaid-generator.js +11 -8
- package/dist/m3/diagrams/Mermaid-generator.js.map +1 -1
- package/dist/m3/diagrams/PlantUML-generator.d.ts +3 -2
- package/dist/m3/diagrams/PlantUML-generator.d.ts.map +1 -1
- package/dist/m3/diagrams/PlantUML-generator.js +22 -19
- package/dist/m3/diagrams/PlantUML-generator.js.map +1 -1
- package/dist/m3/diagrams/index.d.ts +4 -0
- package/dist/m3/diagrams/index.d.ts.map +1 -0
- package/dist/m3/diagrams/index.js +3 -0
- package/dist/m3/diagrams/index.js.map +1 -0
- package/dist/m3/diagrams/type.d.ts +6 -0
- package/dist/m3/diagrams/type.d.ts.map +1 -0
- package/dist/m3/diagrams/type.js +2 -0
- package/dist/m3/diagrams/type.js.map +1 -0
- package/dist/m3/index.d.ts +2 -3
- package/dist/m3/index.d.ts.map +1 -1
- package/dist/m3/index.js +2 -3
- package/dist/m3/index.js.map +1 -1
- package/package.json +5 -5
- package/src/m3/diagrams/Mermaid-generator.ts +14 -9
- package/src/m3/diagrams/PlantUML-generator.ts +26 -20
- package/src/m3/diagrams/index.ts +3 -0
- package/src/m3/diagrams/type.ts +7 -0
- package/src/m3/index.ts +2 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
0.7.
|
|
3
|
+
## 0.7.2
|
|
4
|
+
|
|
5
|
+
* Extend the `generate{PlantUml|Mermaid}ForLanguage` diagram generation functions with an optional second argument that determines which entities to focus on.
|
|
6
|
+
* (Expose a `DiagramRenderer` type to unify these two diagram generation functions type-wise.)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## 0.7.1
|
|
10
|
+
|
|
11
|
+
(The 0.7.0 release was deprecated because its `validation` package was faulty.)
|
|
4
12
|
|
|
5
13
|
* Move `dependenciesThroughDirectInheritanceOf` and `verboseDependencies` functions from `class-core-generator` to `utilities` package, and expose it.
|
|
6
14
|
* Rename `tsTypesForLanguage` → `tsTypeDefsForLanguage`.
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DiagramRenderer } from "./type.js";
|
|
2
2
|
/**
|
|
3
3
|
* Generates a string with a Mermaid class diagram
|
|
4
4
|
* representing the given {@link Language LionCore instance}.
|
|
5
|
+
* The optional second `focusEntities` argument determines which entities to focus on.
|
|
5
6
|
*/
|
|
6
|
-
export declare const generateMermaidForLanguage:
|
|
7
|
+
export declare const generateMermaidForLanguage: DiagramRenderer;
|
|
7
8
|
//# sourceMappingURL=Mermaid-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mermaid-generator.d.ts","sourceRoot":"","sources":["../../../src/m3/diagrams/Mermaid-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Mermaid-generator.d.ts","sourceRoot":"","sources":["../../../src/m3/diagrams/Mermaid-generator.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAY3C;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,eAUnC,CAAA"}
|
|
@@ -7,14 +7,15 @@ const withNewLine = (content) => [content, ``];
|
|
|
7
7
|
/**
|
|
8
8
|
* Generates a string with a Mermaid class diagram
|
|
9
9
|
* representing the given {@link Language LionCore instance}.
|
|
10
|
+
* The optional second `focusEntities` argument determines which entities to focus on.
|
|
10
11
|
*/
|
|
11
|
-
export const generateMermaidForLanguage = ({ entities }) => asString([
|
|
12
|
+
export const generateMermaidForLanguage = ({ entities }, focusEntities = nameSorted(entities)) => asString([
|
|
12
13
|
"```mermaid",
|
|
13
|
-
`classDiagram
|
|
14
|
-
`,
|
|
15
|
-
indented(nameSorted(entities).map(generateForEntity)),
|
|
14
|
+
`classDiagram`,
|
|
16
15
|
``,
|
|
17
|
-
indented(
|
|
16
|
+
indented(focusEntities.map(generateForEntity)),
|
|
17
|
+
``,
|
|
18
|
+
indented(focusEntities.map(generateForRelationsOf)),
|
|
18
19
|
``,
|
|
19
20
|
"```"
|
|
20
21
|
]);
|
|
@@ -44,9 +45,11 @@ const generateForNonRelationalFeature = (feature) => {
|
|
|
44
45
|
const typeText = `${multiple ? `List~` : ``}${type_ === unresolved ? `???` : type_.name}${multiple ? `~` : ``}${optional ? `?` : ``}`;
|
|
45
46
|
return `+${typeText} ${name}`;
|
|
46
47
|
};
|
|
47
|
-
const generateForPrimitiveType = ({ name }) =>
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
const generateForPrimitiveType = ({ name }) => [
|
|
49
|
+
`class ${name}`,
|
|
50
|
+
`<<PrimitiveType>> ${name}`,
|
|
51
|
+
``
|
|
52
|
+
];
|
|
50
53
|
const generateForEntity = (entity) => {
|
|
51
54
|
if (entity instanceof Annotation) {
|
|
52
55
|
return generateForAnnotation(entity);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mermaid-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/Mermaid-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,OAAO,EACP,WAAW,EACX,WAAW,EAEX,SAAS,EACT,oBAAoB,EACpB,KAAK,EAGL,IAAI,EACJ,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,IAAI,EACJ,UAAU,EACb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAY,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"Mermaid-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/Mermaid-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DiagramRenderer } from "./type.js";
|
|
2
2
|
/**
|
|
3
3
|
* Generates a string with a PlantUML class diagram
|
|
4
4
|
* representing the given {@link Language LionCore instance}.
|
|
5
|
+
* The optional second `focusEntities` argument determines which entities to focus on.
|
|
5
6
|
*/
|
|
6
|
-
export declare const generatePlantUmlForLanguage:
|
|
7
|
+
export declare const generatePlantUmlForLanguage: DiagramRenderer;
|
|
7
8
|
//# sourceMappingURL=PlantUML-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlantUML-generator.d.ts","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlantUML-generator.d.ts","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAK3C;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,eAgBpC,CAAA"}
|
|
@@ -4,28 +4,29 @@ const indented = indentWith(` `)(1);
|
|
|
4
4
|
/**
|
|
5
5
|
* Generates a string with a PlantUML class diagram
|
|
6
6
|
* representing the given {@link Language LionCore instance}.
|
|
7
|
+
* The optional second `focusEntities` argument determines which entities to focus on.
|
|
7
8
|
*/
|
|
8
|
-
export const generatePlantUmlForLanguage = ({ name, entities }) => asString([
|
|
9
|
-
`@startuml
|
|
10
|
-
hide empty members
|
|
11
|
-
|
|
12
|
-
' qualified name: "${name}"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
' relations
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
9
|
+
export const generatePlantUmlForLanguage = ({ name, entities }, focusEntities = nameSorted(entities)) => asString([
|
|
10
|
+
`@startuml`,
|
|
11
|
+
`hide empty members`,
|
|
12
|
+
``,
|
|
13
|
+
`' qualified name: "${name}"`,
|
|
14
|
+
``,
|
|
15
|
+
``,
|
|
16
|
+
focusEntities.map(generateForEntity),
|
|
17
|
+
``,
|
|
18
|
+
``,
|
|
19
|
+
`' relations:`,
|
|
20
|
+
``,
|
|
21
|
+
focusEntities.map(generateForRelationsOf),
|
|
22
|
+
``,
|
|
23
|
+
`@enduml`
|
|
23
24
|
]);
|
|
24
25
|
const generateForEnumeration = ({ name, literals }) => [
|
|
25
26
|
`enum ${name} {`,
|
|
26
27
|
indented(literals.map(({ name }) => name)),
|
|
27
|
-
`}
|
|
28
|
-
|
|
28
|
+
`}`,
|
|
29
|
+
``
|
|
29
30
|
];
|
|
30
31
|
const generateForAnnotation = ({ name, features, extends: extends_, implements: implements_, annotates }) => {
|
|
31
32
|
const fragments = [];
|
|
@@ -94,8 +95,10 @@ const generateForEntity = (entity) => {
|
|
|
94
95
|
if (entity instanceof PrimitiveType) {
|
|
95
96
|
return generateForPrimitiveType(entity);
|
|
96
97
|
}
|
|
97
|
-
return
|
|
98
|
-
|
|
98
|
+
return [
|
|
99
|
+
`' unhandled language entity: <${entity.constructor.name}>${entity.name}`,
|
|
100
|
+
``
|
|
101
|
+
];
|
|
99
102
|
};
|
|
100
103
|
const generateForRelationsOf = (entity) => {
|
|
101
104
|
const relations = relationsOf(entity);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlantUML-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,OAAO,EACP,WAAW,EACX,WAAW,EAEX,SAAS,EACT,oBAAoB,EACpB,KAAK,EAGL,IAAI,EACJ,MAAM,EACN,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,IAAI,EACJ,UAAU,EACb,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"PlantUML-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/m3/diagrams/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,mBAAmB,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/m3/diagrams/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/m3/diagrams/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAExD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,cAAc,EAAE,KAAK,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/m3/diagrams/type.ts"],"names":[],"mappings":""}
|
package/dist/m3/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export * from "./diagrams/
|
|
2
|
-
export * from "./
|
|
1
|
+
export * from "./diagrams/index.js";
|
|
2
|
+
export * from "./ts-generation/ts-types-generator.js";
|
|
3
3
|
export * from "./dependencies.js";
|
|
4
4
|
export * from "./infer-languages.js";
|
|
5
5
|
export * from "./textualizer.js";
|
|
6
|
-
export * from "./ts-generation/ts-types-generator.js";
|
|
7
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/m3/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/m3/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/m3/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,uCAAuC,CAAA;AACrD,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA"}
|
package/dist/m3/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export * from "./diagrams/
|
|
2
|
-
export * from "./
|
|
1
|
+
export * from "./diagrams/index.js";
|
|
2
|
+
export * from "./ts-generation/ts-types-generator.js";
|
|
3
3
|
export * from "./dependencies.js";
|
|
4
4
|
export * from "./infer-languages.js";
|
|
5
5
|
export * from "./textualizer.js";
|
|
6
|
-
export * from "./ts-generation/ts-types-generator.js";
|
|
7
6
|
//# sourceMappingURL=index.js.map
|
package/dist/m3/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/m3/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/m3/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,uCAAuC,CAAA;AACrD,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionweb/utilities",
|
|
3
|
-
"version": "0.7.1",
|
|
3
|
+
"version": "0.7.2-beta.1",
|
|
4
4
|
"description": "LionWeb utilities",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"url": "https://github.com/LionWeb-io/lionweb-typescript/issues"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@lionweb/core": "0.7.1",
|
|
19
|
-
"@lionweb/json": "0.7.1",
|
|
20
|
-
"@lionweb/textgen-utils": "0.7.1",
|
|
21
|
-
"@lionweb/ts-utils": "0.7.1",
|
|
18
|
+
"@lionweb/core": "0.7.2-beta.1",
|
|
19
|
+
"@lionweb/json": "0.7.2-beta.1",
|
|
20
|
+
"@lionweb/textgen-utils": "0.7.2-beta.1",
|
|
21
|
+
"@lionweb/ts-utils": "0.7.2-beta.1",
|
|
22
22
|
"littoral-templates": "0.5.1",
|
|
23
23
|
"nanoid": "5.1.5"
|
|
24
24
|
},
|
|
@@ -19,6 +19,9 @@ import {
|
|
|
19
19
|
} from "@lionweb/core"
|
|
20
20
|
import { asString, indentWith, Template } from "littoral-templates"
|
|
21
21
|
|
|
22
|
+
import { DiagramRenderer } from "./type.js"
|
|
23
|
+
|
|
24
|
+
|
|
22
25
|
// define some layouting basics/building algebra:
|
|
23
26
|
|
|
24
27
|
const indented = indentWith(` `)(1)
|
|
@@ -31,15 +34,16 @@ const withNewLine = (content: Template): Template => [content, ``]
|
|
|
31
34
|
/**
|
|
32
35
|
* Generates a string with a Mermaid class diagram
|
|
33
36
|
* representing the given {@link Language LionCore instance}.
|
|
37
|
+
* The optional second `focusEntities` argument determines which entities to focus on.
|
|
34
38
|
*/
|
|
35
|
-
export const generateMermaidForLanguage = ({ entities }: Language) =>
|
|
39
|
+
export const generateMermaidForLanguage: DiagramRenderer = ({ entities }: Language, focusEntities: LanguageEntity[] = nameSorted(entities)) =>
|
|
36
40
|
asString([
|
|
37
41
|
"```mermaid",
|
|
38
|
-
`classDiagram
|
|
39
|
-
|
|
40
|
-
indented(
|
|
42
|
+
`classDiagram`,
|
|
43
|
+
``,
|
|
44
|
+
indented(focusEntities.map(generateForEntity)),
|
|
41
45
|
``,
|
|
42
|
-
indented(
|
|
46
|
+
indented(focusEntities.map(generateForRelationsOf)),
|
|
43
47
|
``,
|
|
44
48
|
"```"
|
|
45
49
|
])
|
|
@@ -85,10 +89,11 @@ const generateForNonRelationalFeature = (feature: Feature) => {
|
|
|
85
89
|
return `+${typeText} ${name}`
|
|
86
90
|
}
|
|
87
91
|
|
|
88
|
-
const generateForPrimitiveType = ({ name }: PrimitiveType) =>
|
|
89
|
-
`class ${name}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
const generateForPrimitiveType = ({ name }: PrimitiveType) => [
|
|
93
|
+
`class ${name}`,
|
|
94
|
+
`<<PrimitiveType>> ${name}`,
|
|
95
|
+
``
|
|
96
|
+
]
|
|
92
97
|
|
|
93
98
|
const generateForEntity = (entity: LanguageEntity) => {
|
|
94
99
|
if (entity instanceof Annotation) {
|
|
@@ -20,35 +20,39 @@ import {
|
|
|
20
20
|
} from "@lionweb/core"
|
|
21
21
|
import { asString, indentWith } from "littoral-templates"
|
|
22
22
|
|
|
23
|
+
import { DiagramRenderer } from "./type.js"
|
|
24
|
+
|
|
25
|
+
|
|
23
26
|
const indented = indentWith(` `)(1)
|
|
24
27
|
|
|
25
28
|
/**
|
|
26
29
|
* Generates a string with a PlantUML class diagram
|
|
27
30
|
* representing the given {@link Language LionCore instance}.
|
|
31
|
+
* The optional second `focusEntities` argument determines which entities to focus on.
|
|
28
32
|
*/
|
|
29
|
-
export const generatePlantUmlForLanguage = ({ name, entities }: Language) =>
|
|
33
|
+
export const generatePlantUmlForLanguage: DiagramRenderer = ({ name, entities }: Language, focusEntities: LanguageEntity[] = nameSorted(entities)) =>
|
|
30
34
|
asString([
|
|
31
|
-
`@startuml
|
|
32
|
-
hide empty members
|
|
33
|
-
|
|
34
|
-
' qualified name: "${name}"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
' relations
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
35
|
+
`@startuml`,
|
|
36
|
+
`hide empty members`,
|
|
37
|
+
``,
|
|
38
|
+
`' qualified name: "${name}"`,
|
|
39
|
+
``,
|
|
40
|
+
``,
|
|
41
|
+
focusEntities.map(generateForEntity),
|
|
42
|
+
``,
|
|
43
|
+
``,
|
|
44
|
+
`' relations:`,
|
|
45
|
+
``,
|
|
46
|
+
focusEntities.map(generateForRelationsOf),
|
|
47
|
+
``,
|
|
48
|
+
`@enduml`
|
|
45
49
|
])
|
|
46
50
|
|
|
47
51
|
const generateForEnumeration = ({ name, literals }: Enumeration) => [
|
|
48
52
|
`enum ${name} {`,
|
|
49
|
-
indented(literals.map(({name}) => name)),
|
|
50
|
-
`}
|
|
51
|
-
|
|
53
|
+
indented(literals.map(({ name }) => name)),
|
|
54
|
+
`}`,
|
|
55
|
+
``
|
|
52
56
|
]
|
|
53
57
|
|
|
54
58
|
const generateForAnnotation = ({ name, features, extends: extends_, implements: implements_, annotates }: Annotation) => {
|
|
@@ -123,8 +127,10 @@ const generateForEntity = (entity: LanguageEntity) => {
|
|
|
123
127
|
if (entity instanceof PrimitiveType) {
|
|
124
128
|
return generateForPrimitiveType(entity)
|
|
125
129
|
}
|
|
126
|
-
return
|
|
127
|
-
`
|
|
130
|
+
return [
|
|
131
|
+
`' unhandled language entity: <${entity.constructor.name}>${entity.name}`,
|
|
132
|
+
``
|
|
133
|
+
]
|
|
128
134
|
}
|
|
129
135
|
|
|
130
136
|
const generateForRelationsOf = (entity: LanguageEntity) => {
|
package/src/m3/index.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export * from "./diagrams/
|
|
2
|
-
export * from "./
|
|
1
|
+
export * from "./diagrams/index.js"
|
|
2
|
+
export * from "./ts-generation/ts-types-generator.js"
|
|
3
3
|
export * from "./dependencies.js"
|
|
4
4
|
export * from "./infer-languages.js"
|
|
5
5
|
export * from "./textualizer.js"
|
|
6
|
-
export * from "./ts-generation/ts-types-generator.js"
|