@likec4/generators 0.23.0 → 0.25.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.
- package/package.json +3 -3
- package/dist/d2/generate-d2.d.ts +0 -3
- package/dist/d2/generate-d2.js +0 -75
- package/dist/d2/index.d.ts +0 -2
- package/dist/d2/index.js +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.js +0 -3
- package/dist/react/generate-react.d.ts +0 -3
- package/dist/react/generate-react.js +0 -78
- package/dist/react/index.d.ts +0 -2
- package/dist/react/index.js +0 -1
- package/dist/views-data-ts/generate-views-data.d.ts +0 -3
- package/dist/views-data-ts/generate-views-data.js +0 -33
- package/dist/views-data-ts/index.d.ts +0 -2
- package/dist/views-data-ts/index.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@likec4/generators",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"bugs": "https://github.com/likec4/likec4/issues",
|
|
6
6
|
"homepage": "https://likec4.dev",
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
"test:watch": "run -T vitest"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@likec4/core": "0.
|
|
41
|
+
"@likec4/core": "0.25.0",
|
|
42
42
|
"json5": "^2.2.3",
|
|
43
43
|
"langium": "^1.2.1",
|
|
44
44
|
"rambdax": "^9.1.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/node": "^18.15.11",
|
|
48
|
-
"typescript": "^5.1.
|
|
48
|
+
"typescript": "^5.1.6"
|
|
49
49
|
}
|
|
50
50
|
}
|
package/dist/d2/generate-d2.d.ts
DELETED
package/dist/d2/generate-d2.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { CompositeGeneratorNode, NL, joinToNode, toString } from 'langium/lib/generator';
|
|
2
|
-
import { isNil } from 'rambdax';
|
|
3
|
-
const capitalizeFirstLetter = (value) => value.charAt(0).toLocaleUpperCase() + value.slice(1);
|
|
4
|
-
const fqnName = (nodeId) => nodeId.split('.').map(capitalizeFirstLetter).join('');
|
|
5
|
-
const nodeName = (node) => {
|
|
6
|
-
return fqnName(node.parent ? node.id.slice(node.parent.length + 1) : node.id);
|
|
7
|
-
};
|
|
8
|
-
const d2direction = ({ autoLayout }) => {
|
|
9
|
-
switch (autoLayout) {
|
|
10
|
-
case "TB": {
|
|
11
|
-
return "down";
|
|
12
|
-
}
|
|
13
|
-
case "BT": {
|
|
14
|
-
return "up";
|
|
15
|
-
}
|
|
16
|
-
case "LR": {
|
|
17
|
-
return "right";
|
|
18
|
-
}
|
|
19
|
-
case "RL": {
|
|
20
|
-
return "left";
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
const d2shape = ({ shape }) => {
|
|
25
|
-
switch (shape) {
|
|
26
|
-
case 'queue':
|
|
27
|
-
case 'cylinder':
|
|
28
|
-
case 'rectangle':
|
|
29
|
-
case 'person': {
|
|
30
|
-
return shape;
|
|
31
|
-
}
|
|
32
|
-
case 'storage': {
|
|
33
|
-
return 'stored_data';
|
|
34
|
-
}
|
|
35
|
-
case 'mobile':
|
|
36
|
-
case 'browser': {
|
|
37
|
-
return 'rectangle';
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
export function generateD2(view) {
|
|
42
|
-
const { nodes, edges } = view;
|
|
43
|
-
const names = new Map();
|
|
44
|
-
const printNode = (node, parentName) => {
|
|
45
|
-
const name = nodeName(node);
|
|
46
|
-
const fqnName = (parentName ? parentName + '.' : '') + name;
|
|
47
|
-
names.set(node.id, fqnName);
|
|
48
|
-
const label = node.title.replaceAll('\n', '\\n');
|
|
49
|
-
const shape = d2shape(node);
|
|
50
|
-
return new CompositeGeneratorNode()
|
|
51
|
-
.append(name, ': {', NL)
|
|
52
|
-
.indent({
|
|
53
|
-
indentedChildren: indent => indent
|
|
54
|
-
.append('label: "', label, '"', NL)
|
|
55
|
-
.appendIf(shape !== 'rectangle', 'shape: ', shape, NL)
|
|
56
|
-
.appendIf(node.children.length > 0, NL, joinToNode(nodes.filter(n => n.parent === node.id), n => printNode(n, fqnName))),
|
|
57
|
-
indentation: 2
|
|
58
|
-
})
|
|
59
|
-
.append('}', NL);
|
|
60
|
-
};
|
|
61
|
-
// return `${names.get(edge.source)} -> ${names.get(edge.target)}${edge.label ? ': ' + edge.label : ''}`
|
|
62
|
-
const printEdge = (edge) => {
|
|
63
|
-
return new CompositeGeneratorNode()
|
|
64
|
-
.append(names.get(edge.source), ' -> ', names.get(edge.target))
|
|
65
|
-
.append(out => edge.label && out.append(': ', edge.label.replaceAll('\n', '\\n')));
|
|
66
|
-
};
|
|
67
|
-
return toString(new CompositeGeneratorNode()
|
|
68
|
-
.append('direction: ', d2direction(view), NL, NL)
|
|
69
|
-
.append(joinToNode(nodes.filter(n => isNil(n.parent)), n => printNode(n), {
|
|
70
|
-
appendNewLineIfNotEmpty: true
|
|
71
|
-
}))
|
|
72
|
-
.appendIf(edges.length > 0, NL, joinToNode(edges, e => printEdge(e), {
|
|
73
|
-
appendNewLineIfNotEmpty: true
|
|
74
|
-
})));
|
|
75
|
-
}
|
package/dist/d2/index.d.ts
DELETED
package/dist/d2/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './generate-d2';
|
package/dist/index.d.ts
DELETED
package/dist/index.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import JSON5 from 'json5';
|
|
2
|
-
import { CompositeGeneratorNode, NL, expandToNode, joinToNode, toString } from 'langium/lib/generator';
|
|
3
|
-
const componentName = (value) => {
|
|
4
|
-
if (!value.charAt(0).match(/[a-zA-Z]/)) {
|
|
5
|
-
value = 'View' + value;
|
|
6
|
-
}
|
|
7
|
-
value = value.replaceAll('_', '');
|
|
8
|
-
return value.charAt(0).toLocaleUpperCase() + value.slice(1);
|
|
9
|
-
};
|
|
10
|
-
export function generateReact(views) {
|
|
11
|
-
const components = views.map(({ id }) => {
|
|
12
|
-
return {
|
|
13
|
-
id,
|
|
14
|
-
name: componentName(id)
|
|
15
|
-
};
|
|
16
|
-
});
|
|
17
|
-
const out = new CompositeGeneratorNode();
|
|
18
|
-
out.appendTemplate `
|
|
19
|
-
/******************************************************************************
|
|
20
|
-
* This file was generated
|
|
21
|
-
* DO NOT EDIT MANUALLY!
|
|
22
|
-
******************************************************************************/
|
|
23
|
-
/* eslint-disable */
|
|
24
|
-
|
|
25
|
-
import type { DiagramView, EmbeddedDiagramProps } from '@likec4/diagrams'
|
|
26
|
-
import { EmbeddedDiagram } from '@likec4/diagrams'
|
|
27
|
-
`.append(NL, NL);
|
|
28
|
-
if (components.length == 0) {
|
|
29
|
-
out.append('export {}', NL);
|
|
30
|
-
return toString(out);
|
|
31
|
-
}
|
|
32
|
-
out
|
|
33
|
-
.append('export const LikeC4ViewsData = {', NL)
|
|
34
|
-
.indent({
|
|
35
|
-
indentation: 2,
|
|
36
|
-
indentedChildren: indent => {
|
|
37
|
-
indent.append(joinToNode(views, view => expandToNode `'${view.id}': (${JSON5.stringify(view)} as unknown) as DiagramView`, {
|
|
38
|
-
separator: ',',
|
|
39
|
-
appendNewLineIfNotEmpty: true
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
})
|
|
43
|
-
.append('} as const', NL, NL).appendTemplate `
|
|
44
|
-
export type LikeC4ViewsData = typeof LikeC4ViewsData
|
|
45
|
-
export type LikeC4ViewId = keyof LikeC4ViewsData
|
|
46
|
-
export function isLikeC4ViewId(value: unknown): value is LikeC4ViewId {
|
|
47
|
-
return typeof value === 'string' && value in LikeC4ViewsData
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export type LikeC4ViewProps = Omit<EmbeddedDiagramProps<LikeC4ViewsData, LikeC4ViewId>, 'views'>;
|
|
51
|
-
export function LikeC4View(props: LikeC4ViewProps) {
|
|
52
|
-
return <EmbeddedDiagram views={LikeC4ViewsData} {...props}/>
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
type LikeC4ViewsProps = Omit<EmbeddedDiagramProps<LikeC4ViewsData, LikeC4ViewId>, 'views' | 'viewId'>
|
|
56
|
-
export const LikeC4Views = {
|
|
57
|
-
`
|
|
58
|
-
.append(NL)
|
|
59
|
-
.indent({
|
|
60
|
-
indentation: 2,
|
|
61
|
-
indentedChildren: components.map(({ id, name }) => expandToNode `
|
|
62
|
-
['${name}']: (props: LikeC4ViewsProps) => <LikeC4View viewId={'${id}'} {...props}/>,
|
|
63
|
-
`.append(NL))
|
|
64
|
-
// indentedChildren: [joinToNode(
|
|
65
|
-
// components,
|
|
66
|
-
// ({ id, name }) =>
|
|
67
|
-
// expandToNode`
|
|
68
|
-
// ['${name}']: (props: NamedViewProps) => <EmbeddedDiagram views={LikeC4ViewsData} viewId={'${id}'} {...props}/>
|
|
69
|
-
// `,
|
|
70
|
-
// {
|
|
71
|
-
// separator: ',',
|
|
72
|
-
// appendNewLineIfNotEmpty: true
|
|
73
|
-
// }
|
|
74
|
-
// )],
|
|
75
|
-
})
|
|
76
|
-
.append('} as const', NL, NL);
|
|
77
|
-
return toString(out);
|
|
78
|
-
}
|
package/dist/react/index.d.ts
DELETED
package/dist/react/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './generate-react';
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import JSON5 from 'json5';
|
|
2
|
-
import { CompositeGeneratorNode, NL, expandToNode, joinToNode, toString } from 'langium/lib/generator';
|
|
3
|
-
export function generateViewsDataTs(views) {
|
|
4
|
-
const out = new CompositeGeneratorNode();
|
|
5
|
-
out.appendTemplate `
|
|
6
|
-
/******************************************************************************
|
|
7
|
-
* This file was generated
|
|
8
|
-
* DO NOT EDIT MANUALLY!
|
|
9
|
-
******************************************************************************/
|
|
10
|
-
/* eslint-disable */
|
|
11
|
-
|
|
12
|
-
import type { DiagramView } from '@likec4/diagrams'
|
|
13
|
-
`.append(NL, NL);
|
|
14
|
-
out
|
|
15
|
-
.append('export const LikeC4ViewsData = {', NL)
|
|
16
|
-
.indent({
|
|
17
|
-
indentation: 2,
|
|
18
|
-
indentedChildren: indent => {
|
|
19
|
-
indent.append(joinToNode(views, view => expandToNode `'${view.id}': (${JSON5.stringify(view)} as unknown) as DiagramView`, {
|
|
20
|
-
separator: ',',
|
|
21
|
-
appendNewLineIfNotEmpty: true
|
|
22
|
-
}));
|
|
23
|
-
}
|
|
24
|
-
})
|
|
25
|
-
.append('} as const', NL, NL).appendTemplate `
|
|
26
|
-
export type LikeC4ViewsData = typeof LikeC4ViewsData
|
|
27
|
-
export type LikeC4ViewId = keyof LikeC4ViewsData
|
|
28
|
-
export function isLikeC4ViewId(value: unknown): value is LikeC4ViewId {
|
|
29
|
-
return typeof value === 'string' && value in LikeC4ViewsData
|
|
30
|
-
}
|
|
31
|
-
`.append(NL);
|
|
32
|
-
return toString(out);
|
|
33
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './generate-views-data';
|