@lionweb/utilities 0.7.2-beta.0 → 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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
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
+
3
9
  ## 0.7.1
4
10
 
5
11
  (The 0.7.0 release was deprecated because its `validation` package was faulty.)
@@ -1,7 +1,8 @@
1
- import { Language } from "@lionweb/core";
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: ({ entities }: Language) => string;
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":"AAAA,OAAO,EASH,QAAQ,EASX,MAAM,eAAe,CAAA;AAYtB;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,cAAc,QAAQ,WAU3D,CAAA"}
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(nameSorted(entities).map(generateForRelationsOf)),
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 }) => `class ${name}
48
- <<PrimitiveType>> ${name}
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":"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"}
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 { Language } from "@lionweb/core";
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: ({ name, entities }: Language) => string;
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":"AAAA,OAAO,EASH,QAAQ,EAUX,MAAM,eAAe,CAAA;AAKtB;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,oBAAoB,QAAQ,WAgBlE,CAAA"}
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
- nameSorted(entities).map(generateForEntity),
16
- `
17
-
18
- ' relations:
19
- `,
20
- nameSorted(entities).map(generateForRelationsOf),
21
- `
22
- @enduml`
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 `' unhandled language entity: <${entity.constructor.name}>${entity.name}
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":"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"}
1
+ {"version":3,"file":"PlantUML-generator.js","sourceRoot":"","sources":["../../../src/m3/diagrams/PlantUML-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./Mermaid-generator.js";
2
+ export * from "./PlantUML-generator.js";
3
+ export type * from "./type.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export * from "./Mermaid-generator.js";
2
+ export * from "./PlantUML-generator.js";
3
+ //# sourceMappingURL=index.js.map
@@ -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,6 @@
1
+ import { Language, LanguageEntity } from "@lionweb/core";
2
+ /**
3
+ * Type def. to unify diagram generation functions type-wise.
4
+ */
5
+ export type DiagramRenderer = (language: Language, focusEntities?: LanguageEntity[]) => string;
6
+ //# sourceMappingURL=type.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/m3/diagrams/type.ts"],"names":[],"mappings":""}
@@ -1,7 +1,6 @@
1
- export * from "./diagrams/Mermaid-generator.js";
2
- export * from "./diagrams/PlantUML-generator.js";
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
@@ -1 +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,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uCAAuC,CAAA"}
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/Mermaid-generator.js";
2
- export * from "./diagrams/PlantUML-generator.js";
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
@@ -1 +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,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uCAAuC,CAAA"}
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.2-beta.0",
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.2-beta.0",
19
- "@lionweb/json": "0.7.2-beta.0",
20
- "@lionweb/textgen-utils": "0.7.2-beta.0",
21
- "@lionweb/ts-utils": "0.7.2-beta.0",
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(nameSorted(entities).map(generateForEntity)),
42
+ `classDiagram`,
43
+ ``,
44
+ indented(focusEntities.map(generateForEntity)),
41
45
  ``,
42
- indented(nameSorted(entities).map(generateForRelationsOf)),
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
- <<PrimitiveType>> ${name}
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
- nameSorted(entities).map(generateForEntity),
38
- `
39
-
40
- ' relations:
41
- `,
42
- nameSorted(entities).map(generateForRelationsOf),
43
- `
44
- @enduml`
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 `' unhandled language entity: <${entity.constructor.name}>${entity.name}
127
- `
130
+ return [
131
+ `' unhandled language entity: <${entity.constructor.name}>${entity.name}`,
132
+ ``
133
+ ]
128
134
  }
129
135
 
130
136
  const generateForRelationsOf = (entity: LanguageEntity) => {
@@ -0,0 +1,3 @@
1
+ export * from "./Mermaid-generator.js"
2
+ export * from "./PlantUML-generator.js"
3
+ export type * from "./type.js"
@@ -0,0 +1,7 @@
1
+ import { Language, LanguageEntity } from "@lionweb/core"
2
+
3
+ /**
4
+ * Type def. to unify diagram generation functions type-wise.
5
+ */
6
+ export type DiagramRenderer = (language: Language, focusEntities?: LanguageEntity[]) => string
7
+
package/src/m3/index.ts CHANGED
@@ -1,6 +1,5 @@
1
- export * from "./diagrams/Mermaid-generator.js"
2
- export * from "./diagrams/PlantUML-generator.js"
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"