@likec4/generators 0.34.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
1
  import type { DiagramView } from '@likec4/core';
2
+ import { CompositeGeneratorNode } from 'langium';
3
+ export declare const generateViewId: (views: DiagramView[]) => CompositeGeneratorNode | undefined;
2
4
  export declare function generateReact(views: DiagramView[]): string;
3
5
  //# sourceMappingURL=generate-react.d.ts.map
@@ -7,7 +7,7 @@ const componentName = (value) => {
7
7
  value = value.replaceAll('_', '');
8
8
  return value.charAt(0).toLocaleUpperCase() + value.slice(1);
9
9
  };
10
- const generateViewId = (views) => joinToNode(views, view => expandToNode `'${view.id}'`, {
10
+ export const generateViewId = (views) => joinToNode(views, view => expandToNode `'${view.id}'`, {
11
11
  separator: ' | '
12
12
  });
13
13
  export function generateReact(views) {
@@ -37,17 +37,16 @@ export function generateReact(views) {
37
37
  export type LikeC4ViewId = ${generateViewId(views)};
38
38
  export const LikeC4Views = {
39
39
  `
40
- .appendNewLine()
41
40
  .indent({
42
41
  indentation: 2,
43
- indentedChildren: indent => {
44
- indent.append(joinToNode(views, view => expandToNode `'${view.id}': (${JSON5.stringify(view)} as unknown) as DiagramView`, {
42
+ indentedChildren(indented) {
43
+ indented.appendNewLineIf(views.length > 1).append(joinToNode(views, view => expandToNode `${JSON5.stringify(view.id)}: (${JSON5.stringify(view)} as unknown) as DiagramView`, {
45
44
  separator: ',',
46
45
  appendNewLineIfNotEmpty: true
47
46
  }));
48
47
  }
49
48
  })
50
- .append('} as const satisfies Record<LikeC4ViewId, DiagramView>', NL, NL).appendTemplate `
49
+ .append('} as const satisfies Record<LikeC4ViewId, DiagramView>', NL, NL).appendTemplate `
51
50
  export type LikeC4Views = typeof LikeC4Views
52
51
 
53
52
  export const {
@@ -1,54 +1,61 @@
1
1
  import JSON5 from 'json5';
2
2
  import { CompositeGeneratorNode, NL, expandToNode, joinToNode, toString } from 'langium';
3
+ import { generateViewId } from '../react/generate-react';
3
4
  export function generateViewsDataTs(views) {
4
5
  const out = new CompositeGeneratorNode();
5
6
  out.appendTemplate `
6
- /******************************************************************************
7
- * This file was generated
8
- * DO NOT EDIT MANUALLY!
9
- ******************************************************************************/
10
- /* eslint-disable */
7
+ /******************************************************************************
8
+ * This file was generated
9
+ * DO NOT EDIT MANUALLY!
10
+ ******************************************************************************/
11
+ /* eslint-disable */
11
12
 
12
- import type { DiagramView } from '@likec4/core'
13
+ import type { DiagramView } from '@likec4/core'
13
14
  `.append(NL, NL);
14
- out
15
- .append('export const LikeC4Views = {', NL)
15
+ if (views.length == 0) {
16
+ out.append('export {}', NL);
17
+ return toString(out);
18
+ }
19
+ out.appendTemplate `
20
+ export type LikeC4ViewId = ${generateViewId(views)};
21
+ export const LikeC4Views = {
22
+ `
16
23
  .indent({
17
24
  indentation: 2,
18
- indentedChildren: indent => {
19
- indent.append(joinToNode(views, view => expandToNode `'${view.id}': (${JSON5.stringify(view)} as unknown) as DiagramView`, {
25
+ indentedChildren(indented) {
26
+ indented.appendNewLineIf(views.length > 1).append(joinToNode(views, view => expandToNode `${JSON5.stringify(view.id)}: (${JSON5.stringify(view)} as unknown) as DiagramView`, {
20
27
  separator: ',',
21
28
  appendNewLineIfNotEmpty: true
22
29
  }));
23
30
  }
24
31
  })
25
- .append('} as const', NL, NL).appendTemplate `
26
- export type LikeC4Views = typeof LikeC4Views
27
- export type LikeC4ViewId = keyof LikeC4Views
32
+ .append('} as const satisfies Record<LikeC4ViewId, DiagramView>', NL, NL).appendTemplate `
33
+ export type LikeC4Views = typeof LikeC4Views
28
34
 
29
- export function isLikeC4ViewId(value: unknown): value is LikeC4ViewId {
30
- return (
31
- value != null &&
32
- typeof value === 'string' &&
33
- Object.prototype.hasOwnProperty.call(LikeC4Views, value)
34
- )
35
- }
36
- `.append(NL, NL).appendTemplate `
37
- export type {
38
- Fqn,
39
- Element,
40
- RelationID,
41
- Relation,
42
- NodeId,
43
- EdgeId,
44
- ComputedNode,
45
- ComputedEdge,
46
- ComputedView,
47
- DiagramView,
48
- DiagramNode,
49
- DiagramEdge,
50
- DiagramLabel
51
- } from '@likec4/core'
52
- `.append(NL, NL);
35
+ export function isLikeC4ViewId(value: unknown): value is LikeC4ViewId {
36
+ return (
37
+ value != null &&
38
+ typeof value === 'string' &&
39
+ Object.prototype.hasOwnProperty.call(LikeC4Views, value)
40
+ )
41
+ }
42
+
43
+ // Re-export types
44
+ export type {
45
+ Fqn,
46
+ Element,
47
+ RelationID,
48
+ Relation,
49
+ NodeId,
50
+ EdgeId,
51
+ ComputedNode,
52
+ ComputedEdge,
53
+ ComputedView,
54
+ DiagramView,
55
+ DiagramNode,
56
+ DiagramEdge,
57
+ DiagramLabel
58
+ } from '@likec4/core'
59
+ `.append(NL, NL);
53
60
  return toString(out);
54
61
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@likec4/generators",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "license": "MIT",
5
5
  "bugs": "https://github.com/likec4/likec4/issues",
6
6
  "homepage": "https://likec4.dev",
@@ -38,14 +38,15 @@
38
38
  "test:watch": "run -T vitest"
39
39
  },
40
40
  "dependencies": {
41
- "@likec4/core": "0.34.0",
41
+ "@likec4/core": "0.35.0",
42
42
  "json5": "^2.2.3",
43
- "langium": "^2.0.0",
43
+ "langium": "^2.0.2",
44
44
  "rambdax": "^9.1.1"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^18.15.11",
48
- "typescript": "^5.1.6",
49
- "vitest": "^0.34.1"
50
- }
48
+ "typescript": "^5.2.2",
49
+ "vitest": "^0.34.3"
50
+ },
51
+ "packageManager": "yarn@3.6.3"
51
52
  }