@likec4/core 1.18.0 → 1.19.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.
Files changed (177) hide show
  1. package/LICENSE +1 -1
  2. package/dist/builder/index.d.mts +502 -0
  3. package/dist/builder/index.d.ts +502 -0
  4. package/dist/builder/index.js +871 -0
  5. package/dist/compute-view/index.d.mts +9 -78
  6. package/dist/compute-view/index.d.ts +9 -78
  7. package/dist/compute-view/index.js +78 -0
  8. package/dist/index.d.mts +9 -730
  9. package/dist/index.d.ts +9 -730
  10. package/dist/{index.mjs → index.js} +7 -784
  11. package/dist/model/index.d.mts +218 -606
  12. package/dist/model/index.d.ts +218 -606
  13. package/dist/model/index.js +1 -0
  14. package/dist/shared/chunk-RAAYCPUM.M-JWF7SS.js +21 -0
  15. package/dist/shared/core.BIfgabEw.d.ts +719 -0
  16. package/dist/shared/core.BZ9Msq7w.d.mts +719 -0
  17. package/dist/shared/{core.DMYY7C8s.d.mts → core.C05RDLhi.d.ts} +179 -230
  18. package/dist/shared/{core.DMYY7C8s.d.ts → core.CmYMqgha.d.mts} +179 -230
  19. package/dist/shared/core.D6-fWbM3.d.ts +127 -0
  20. package/dist/shared/core.D74xkKkG.d.mts +148 -0
  21. package/dist/shared/core.D74xkKkG.d.ts +148 -0
  22. package/dist/shared/core.sLaWHBjR.d.mts +127 -0
  23. package/dist/shared/index.DafVOuVd.js +7443 -0
  24. package/dist/shared/object_hash.CE_oF3I3.js +1222 -0
  25. package/dist/shared/view.CyZrG8BJ.js +354 -0
  26. package/dist/types/index.d.mts +4 -2
  27. package/dist/types/index.d.ts +4 -2
  28. package/dist/types/index.js +20 -0
  29. package/dist/utils/index.d.mts +419 -0
  30. package/dist/utils/index.d.ts +419 -0
  31. package/dist/utils/index.js +347 -0
  32. package/package.json +47 -33
  33. package/src/builder/Builder-style1.test-d.ts +190 -0
  34. package/src/builder/Builder-style2.test-d.ts +175 -0
  35. package/src/builder/Builder.deployment.ts +25 -20
  36. package/src/builder/Builder.deploymentModel.ts +80 -55
  37. package/src/builder/Builder.element.ts +2 -0
  38. package/src/builder/Builder.model.ts +57 -43
  39. package/src/builder/Builder.ts +412 -431
  40. package/src/builder/Builder.view-common.ts +234 -0
  41. package/src/builder/Builder.view-deployment.ts +135 -0
  42. package/src/builder/Builder.view-element.ts +189 -0
  43. package/src/builder/Builder.views.ts +109 -33
  44. package/src/builder/Builder.with.ts +475 -0
  45. package/src/builder/__snapshots__/Builder-style1.spec.ts.snap +374 -0
  46. package/src/builder/__snapshots__/Builder-style2.spec.ts.snap +183 -0
  47. package/src/builder/__snapshots__/Builder.spec.ts.snap +374 -0
  48. package/src/builder/_types.ts +28 -5
  49. package/src/builder/index.ts +10 -4
  50. package/src/colors/index.ts +2 -2
  51. package/src/compute-view/compute-view.ts +45 -54
  52. package/src/compute-view/deployment-view/__test__/TestHelper.ts +236 -0
  53. package/src/compute-view/deployment-view/__test__/fixture.ts +50 -62
  54. package/src/compute-view/deployment-view/_types.ts +26 -18
  55. package/src/compute-view/deployment-view/clean-connections.ts +173 -164
  56. package/src/compute-view/deployment-view/compute.ts +51 -37
  57. package/src/compute-view/deployment-view/memory/index.ts +9 -0
  58. package/src/compute-view/deployment-view/memory/memory.ts +97 -0
  59. package/src/compute-view/deployment-view/predicates/elements.ts +144 -0
  60. package/src/compute-view/deployment-view/predicates/relation-direct.ts +183 -76
  61. package/src/compute-view/deployment-view/predicates/relation-in-out.ts +38 -20
  62. package/src/compute-view/deployment-view/predicates/relation-incoming.ts +72 -23
  63. package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +61 -22
  64. package/src/compute-view/deployment-view/predicates/wildcard.ts +15 -15
  65. package/src/compute-view/deployment-view/stages/stage-exclude.ts +5 -0
  66. package/src/compute-view/deployment-view/stages/stage-final.ts +245 -0
  67. package/src/compute-view/deployment-view/stages/stage-include.ts +95 -0
  68. package/src/compute-view/deployment-view/utils.ts +95 -31
  69. package/src/compute-view/dynamic-view/__test__/fixture.ts +4 -4
  70. package/src/compute-view/dynamic-view/compute.ts +59 -45
  71. package/src/compute-view/element-view/__test__/TestHelper.ts +258 -0
  72. package/src/compute-view/element-view/__test__/__snapshots__/legacy.spec.ts.snap +64 -62
  73. package/src/compute-view/element-view/__test__/fixture.ts +147 -117
  74. package/src/compute-view/element-view/_types.ts +48 -0
  75. package/src/compute-view/element-view/clean-connections.ts +113 -0
  76. package/src/compute-view/element-view/compute.ts +264 -683
  77. package/src/compute-view/element-view/memory/NodeGroup.ts +31 -0
  78. package/src/compute-view/element-view/memory/index.ts +10 -0
  79. package/src/compute-view/element-view/memory/memory.ts +177 -0
  80. package/src/compute-view/element-view/memory/stage-exclude.ts +59 -0
  81. package/src/compute-view/element-view/memory/stage-final.ts +129 -0
  82. package/src/compute-view/element-view/memory/stage-include.ts +128 -0
  83. package/src/compute-view/element-view/predicates/_utils.ts +86 -0
  84. package/src/compute-view/element-view/predicates/element-expand.ts +33 -0
  85. package/src/compute-view/element-view/predicates/element-kind-tag.ts +26 -0
  86. package/src/compute-view/element-view/predicates/element-ref.ts +37 -0
  87. package/src/compute-view/element-view/predicates/relation-direct.ts +309 -0
  88. package/src/compute-view/element-view/predicates/relation-in-out.ts +66 -0
  89. package/src/compute-view/element-view/predicates/relation-in.ts +118 -0
  90. package/src/compute-view/element-view/predicates/relation-out.ts +116 -0
  91. package/src/compute-view/element-view/predicates/wildcard.ts +88 -0
  92. package/src/compute-view/element-view/utils.ts +59 -0
  93. package/src/compute-view/index.ts +3 -4
  94. package/src/compute-view/memory/AbstractMemory.ts +45 -0
  95. package/src/compute-view/memory/AbstractStageExclude.ts +216 -0
  96. package/src/compute-view/memory/AbstractStageInclude.ts +200 -0
  97. package/src/compute-view/memory/_types.ts +147 -0
  98. package/src/compute-view/memory/index.ts +5 -0
  99. package/src/compute-view/memory/ops.ts +43 -0
  100. package/src/compute-view/utils/buildComputedNodes.ts +4 -4
  101. package/src/compute-view/utils/elementExpressionToPredicate.ts +1 -3
  102. package/src/compute-view/utils/link-nodes-with-edges.ts +3 -7
  103. package/src/compute-view/utils/{derive-edge-props-from-relationships.ts → merge-props-from-relationships.ts} +54 -23
  104. package/src/compute-view/utils/relationExpressionToPredicates.ts +2 -2
  105. package/src/compute-view/utils/resolve-extended-views.ts +44 -40
  106. package/src/compute-view/utils/resolve-global-rules.ts +6 -6
  107. package/src/compute-view/utils/topological-sort.ts +167 -71
  108. package/src/compute-view/utils/with-readable-edges.ts +14 -9
  109. package/src/index.ts +22 -16
  110. package/src/model/DeploymentElementModel.ts +150 -85
  111. package/src/model/DeploymentModel.ts +27 -21
  112. package/src/model/ElementModel.ts +51 -25
  113. package/src/model/LikeC4Model.test-d.ts +4 -3
  114. package/src/model/LikeC4Model.ts +98 -42
  115. package/src/model/RelationModel.ts +5 -4
  116. package/src/model/__test__/fixture.ts +5 -9
  117. package/src/model/connection/Connection.ts +72 -0
  118. package/src/model/connection/deployment/DeploymentConnectionModel.ts +178 -0
  119. package/src/model/connection/{deployment.ts → deployment/find.ts} +14 -18
  120. package/src/model/connection/deployment/index.ts +8 -0
  121. package/src/model/connection/index.ts +22 -0
  122. package/src/model/connection/model/ConnectionModel.ts +157 -0
  123. package/src/model/connection/{model.ts → model/find.ts} +43 -49
  124. package/src/model/connection/model/index.ts +8 -0
  125. package/src/model/connection/ops.ts +274 -0
  126. package/src/model/guards.ts +9 -0
  127. package/src/model/index.ts +45 -3
  128. package/src/model/types.ts +35 -18
  129. package/src/model/view/EdgeModel.ts +6 -6
  130. package/src/model/view/LikeC4ViewModel.ts +14 -8
  131. package/src/model/view/NodeModel.ts +6 -5
  132. package/src/types/_common.ts +53 -1
  133. package/src/types/deployments.ts +88 -156
  134. package/src/types/element.ts +2 -2
  135. package/src/types/expression-v2.ts +172 -0
  136. package/src/types/expression.ts +9 -5
  137. package/src/types/global.ts +3 -3
  138. package/src/types/index.ts +220 -13
  139. package/src/types/model.ts +28 -24
  140. package/src/types/operators.ts +1 -1
  141. package/src/types/relation.ts +14 -10
  142. package/src/types/theme.ts +0 -1
  143. package/src/types/view.ts +20 -18
  144. package/src/utils/const.ts +1 -0
  145. package/src/utils/fqn.ts +140 -49
  146. package/src/utils/getOrCreate.ts +1 -1
  147. package/src/utils/index.ts +75 -9
  148. package/src/utils/iterable/_types.ts +5 -0
  149. package/src/utils/iterable/filter.ts +55 -0
  150. package/src/utils/iterable/find.ts +36 -0
  151. package/src/utils/iterable/flat.ts +17 -0
  152. package/src/utils/iterable/index.ts +13 -0
  153. package/src/utils/iterable/map.ts +40 -0
  154. package/src/utils/iterable/reduce.ts +24 -0
  155. package/src/utils/iterable/some.ts +36 -0
  156. package/src/utils/iterable/to.ts +19 -0
  157. package/src/utils/iterable/unique.ts +29 -0
  158. package/src/utils/relations.ts +3 -64
  159. package/src/utils/set.ts +11 -9
  160. package/src/utils/string-hash.ts +1 -1
  161. package/dist/compute-view/index.mjs +0 -79
  162. package/dist/model/index.mjs +0 -2
  163. package/dist/shared/core.BBgiAAv1.mjs +0 -144
  164. package/dist/shared/core.BPyJvuMU.mjs +0 -2420
  165. package/dist/shared/core.BQ4AbfvB.mjs +0 -9228
  166. package/dist/shared/core.k12s_keD.mjs +0 -203
  167. package/dist/types/index.mjs +0 -21
  168. package/src/builder/Builder.test-d.ts +0 -124
  169. package/src/builder/Builder.view.ts +0 -543
  170. package/src/compute-view/LikeC4ModelGraph.ts +0 -330
  171. package/src/compute-view/deployment-view/Memory.ts +0 -108
  172. package/src/compute-view/deployment-view/Stage.ts +0 -145
  173. package/src/compute-view/deployment-view/predicates/deployment-ref.ts +0 -146
  174. package/src/compute-view/element-view/predicates.ts +0 -517
  175. package/src/compute-view/utils/sortNodes.ts +0 -101
  176. package/src/model/connection/ConnectionModel.ts +0 -94
  177. package/src/model/connection/DeploymentConnectionModel.ts +0 -99
@@ -1,203 +0,0 @@
1
- function u$1(t,n,a){let o=r=>t(r,...n);return a===void 0?o:Object.assign(o,{lazy:a,lazyArgs:n})}
2
-
3
- function u(r,n,a){let o=r.length-n.length;if(o===0)return r(...n);if(o===1)return u$1(r,n,a);throw new Error("Wrong number of arguments")}
4
-
5
- function n(e){return e==null}
6
-
7
- function o(r){return Array.isArray(r)}
8
-
9
- function nonNullable(value, message) {
10
- if (typeof value === "undefined" || value == null) {
11
- throw new Error(message ?? `Expected defined value, but received ${value}`);
12
- }
13
- return value;
14
- }
15
- function invariant(condition, message) {
16
- if (condition) {
17
- return;
18
- }
19
- throw new Error(message ?? "Invariant failed");
20
- }
21
- function nonexhaustive(value) {
22
- throw new Error(`NonExhaustive value: ${value}`);
23
- }
24
-
25
- var DeploymentElement;
26
- ((DeploymentElement2) => {
27
- DeploymentElement2.isDeploymentNode = (el) => {
28
- return "kind" in el && !("element" in el);
29
- };
30
- DeploymentElement2.isInstance = (el) => {
31
- return "element" in el && !("kind" in el);
32
- };
33
- })(DeploymentElement || (DeploymentElement = {}));
34
- var DeploymentRelationExpression;
35
- ((DeploymentRelationExpression2) => {
36
- DeploymentRelationExpression2.isDirect = (expr) => {
37
- return "source" in expr && "target" in expr;
38
- };
39
- DeploymentRelationExpression2.isIncoming = (expr) => {
40
- return "incoming" in expr;
41
- };
42
- DeploymentRelationExpression2.isOutgoing = (expr) => {
43
- return "outgoing" in expr;
44
- };
45
- DeploymentRelationExpression2.isInOut = (expr) => {
46
- return "inout" in expr;
47
- };
48
- })(DeploymentRelationExpression || (DeploymentRelationExpression = {}));
49
- var DeploymentElementExpression;
50
- ((DeploymentElementExpression2) => {
51
- DeploymentElementExpression2.isRef = (expr) => {
52
- return "ref" in expr;
53
- };
54
- DeploymentElementExpression2.isWildcard = (expr) => {
55
- return "wildcard" in expr && expr.wildcard === true;
56
- };
57
- })(DeploymentElementExpression || (DeploymentElementExpression = {}));
58
- var DeploymentExpression;
59
- ((DeploymentExpression2) => {
60
- DeploymentExpression2.isElement = (expr) => {
61
- return DeploymentElementExpression.isRef(expr) || DeploymentElementExpression.isWildcard(expr);
62
- };
63
- DeploymentExpression2.isRelation = (expr) => {
64
- return !DeploymentExpression2.isElement(expr);
65
- };
66
- })(DeploymentExpression || (DeploymentExpression = {}));
67
-
68
- function AsFqn(name, parent) {
69
- return parent ? parent + "." + name : name;
70
- }
71
- const BorderStyles = ["solid", "dashed", "dotted", "none"];
72
- var ElementKind;
73
- ((ElementKind2) => {
74
- ElementKind2.Group = "@group";
75
- })(ElementKind || (ElementKind = {}));
76
- const ElementShapes = [
77
- "rectangle",
78
- "person",
79
- "browser",
80
- "mobile",
81
- "cylinder",
82
- "storage",
83
- "queue"
84
- ];
85
- const DefaultThemeColor = "primary";
86
- const DefaultElementShape = "rectangle";
87
-
88
- function isViewRulePredicate(rule) {
89
- return "include" in rule && Array.isArray(rule.include) || "exclude" in rule && Array.isArray(rule.exclude);
90
- }
91
- function isViewRuleGlobalPredicateRef(rule) {
92
- return "predicateId" in rule;
93
- }
94
- function isViewRuleStyle(rule) {
95
- return "style" in rule && "targets" in rule && Array.isArray(rule.targets);
96
- }
97
- function isViewRuleGlobalStyle(rule) {
98
- return "styleId" in rule;
99
- }
100
- function isAutoLayoutDirection(autoLayout) {
101
- return autoLayout === "TB" || autoLayout === "BT" || autoLayout === "LR" || autoLayout === "RL";
102
- }
103
- function isViewRuleAutoLayout(rule) {
104
- return "direction" in rule;
105
- }
106
- function isViewRuleGroup(rule) {
107
- return "title" in rule && "groupRules" in rule && Array.isArray(rule.groupRules);
108
- }
109
- function isDynamicViewParallelSteps(step) {
110
- return "__parallel" in step && o(step.__parallel);
111
- }
112
- function isDeploymentView(view) {
113
- return view.__ === "deployment";
114
- }
115
- function isDynamicView(view) {
116
- return view.__ === "dynamic";
117
- }
118
- function isElementView(view) {
119
- return n(view.__) || view.__ === "element";
120
- }
121
- function isExtendsElementView(view) {
122
- return isElementView(view) && "extends" in view;
123
- }
124
- function isScopedElementView(view) {
125
- return isElementView(view) && "viewOf" in view;
126
- }
127
- function stepEdgeId(step, parallelStep) {
128
- const id = `step-${String(step).padStart(2, "0")}`;
129
- return parallelStep ? `${id}.${parallelStep}` : id;
130
- }
131
- function isStepEdgeId(id) {
132
- return id.startsWith("step-");
133
- }
134
- function extractStep(id) {
135
- if (!isStepEdgeId(id)) {
136
- throw new Error(`Invalid step edge id: ${id}`);
137
- }
138
- return parseFloat(id.slice("step-".length));
139
- }
140
- function getParallelStepsPrefix(id) {
141
- if (isStepEdgeId(id) && id.includes(".")) {
142
- return id.slice(0, id.indexOf(".") + 1);
143
- }
144
- return null;
145
- }
146
- var ComputedNode;
147
- ((ComputedNode2) => {
148
- function modelRef(node) {
149
- return node.modelRef === 1 ? node.id : node.modelRef ?? null;
150
- }
151
- ComputedNode2.modelRef = modelRef;
152
- function deploymentRef(node) {
153
- return node.deploymentRef === 1 ? node.id : node.deploymentRef ?? null;
154
- }
155
- ComputedNode2.deploymentRef = deploymentRef;
156
- function isNodesGroup(node) {
157
- return node.kind === ElementKind.Group;
158
- }
159
- ComputedNode2.isNodesGroup = isNodesGroup;
160
- })(ComputedNode || (ComputedNode = {}));
161
- var ComputedView;
162
- ((ComputedView2) => {
163
- function isDeployment(view) {
164
- return view.__ === "deployment";
165
- }
166
- ComputedView2.isDeployment = isDeployment;
167
- function isDynamic(view) {
168
- return view.__ === "dynamic";
169
- }
170
- ComputedView2.isDynamic = isDynamic;
171
- function isElement(view) {
172
- return n(view.__) || view.__ === "element";
173
- }
174
- ComputedView2.isElement = isElement;
175
- })(ComputedView || (ComputedView = {}));
176
- function getBBoxCenter({
177
- x,
178
- y,
179
- width,
180
- height
181
- }) {
182
- return {
183
- x: x + width / 2,
184
- y: y + height / 2
185
- };
186
- }
187
- var DiagramNode;
188
- ((DiagramNode2) => {
189
- function modelRef(node) {
190
- return node.modelRef === 1 ? node.id : node.modelRef ?? null;
191
- }
192
- DiagramNode2.modelRef = modelRef;
193
- function deploymentRef(node) {
194
- return node.deploymentRef === 1 ? node.id : node.deploymentRef ?? null;
195
- }
196
- DiagramNode2.deploymentRef = deploymentRef;
197
- function isNodesGroup(node) {
198
- return node.kind === ElementKind.Group;
199
- }
200
- DiagramNode2.isNodesGroup = isNodesGroup;
201
- })(DiagramNode || (DiagramNode = {}));
202
-
203
- export { AsFqn as A, BorderStyles as B, isStepEdgeId as C, DeploymentElement as D, ElementKind as E, extractStep as F, getParallelStepsPrefix as G, ComputedNode as H, ComputedView as I, getBBoxCenter as J, DiagramNode as K, n as a, invariant as b, isScopedElementView as c, DefaultThemeColor as d, DefaultElementShape as e, nonNullable as f, DeploymentRelationExpression as g, DeploymentElementExpression as h, isExtendsElementView as i, DeploymentExpression as j, ElementShapes as k, isViewRulePredicate as l, isViewRuleGlobalPredicateRef as m, nonexhaustive as n, o, isViewRuleStyle as p, isViewRuleGlobalStyle as q, isAutoLayoutDirection as r, isViewRuleAutoLayout as s, isViewRuleGroup as t, u, isDynamicViewParallelSteps as v, isDeploymentView as w, isDynamicView as x, isElementView as y, stepEdgeId as z };
@@ -1,21 +0,0 @@
1
- export { A as AsFqn, B as BorderStyles, H as ComputedNode, I as ComputedView, e as DefaultElementShape, d as DefaultThemeColor, D as DeploymentElement, h as DeploymentElementExpression, j as DeploymentExpression, g as DeploymentRelationExpression, K as DiagramNode, E as ElementKind, k as ElementShapes, F as extractStep, J as getBBoxCenter, G as getParallelStepsPrefix, r as isAutoLayoutDirection, w as isDeploymentView, x as isDynamicView, v as isDynamicViewParallelSteps, y as isElementView, i as isExtendsElementView, c as isScopedElementView, C as isStepEdgeId, s as isViewRuleAutoLayout, m as isViewRuleGlobalPredicateRef, q as isViewRuleGlobalStyle, t as isViewRuleGroup, l as isViewRulePredicate, p as isViewRuleStyle, z as stepEdgeId } from '../shared/core.k12s_keD.mjs';
2
- export { y as DefaultArrowType, D as DefaultLineStyle, z as DefaultRelationshipColor, v as isAndOperator, c as isCustomElement, q as isCustomRelationExpr, h as isElement, f as isElementKindExpr, i as isElementPredicateExpr, a as isElementRef, g as isElementTagExpr, j as isElementWhere, b as isExpandedElementExpr, l as isInOut, m as isIncoming, t as isKindEqual, u as isNotOperator, w as isOrOperator, n as isOutgoing, k as isRelation, o as isRelationExpression, r as isRelationPredicateExpr, p as isRelationWhere, s as isTagEqual, d as isWildcard, x as whereOperatorAsPredicate } from '../shared/core.BBgiAAv1.mjs';
3
-
4
- const ThemeColors = [
5
- "amber",
6
- "blue",
7
- "gray",
8
- "slate",
9
- "green",
10
- "indigo",
11
- "muted",
12
- "primary",
13
- "red",
14
- "secondary",
15
- "sky"
16
- ];
17
- function isThemeColor(color) {
18
- return color in ThemeColors;
19
- }
20
-
21
- export { isThemeColor };
@@ -1,124 +0,0 @@
1
- import { expectTypeOf, test } from 'vitest'
2
- import type { LikeC4Model } from '../model/LikeC4Model'
3
- import type { ParsedLikeC4Model } from '../types'
4
- import { Builder } from './Builder'
5
-
6
- test('should have types', () => {
7
- const {
8
- model: {
9
- model,
10
- actor,
11
- system,
12
- component,
13
- relTo
14
- },
15
- deployment: {
16
- deployment,
17
- instanceOf,
18
- env,
19
- vm
20
- },
21
- views: {
22
- deploymentView,
23
- views,
24
- view,
25
- viewOf,
26
- $rules,
27
- $include
28
- },
29
- builder
30
- } = Builder.forSpecification({
31
- elements: {
32
- actor: {
33
- style: {
34
- shape: 'person'
35
- }
36
- },
37
- system: {},
38
- component: {}
39
- },
40
- deployments: {
41
- env: {},
42
- vm: {}
43
- },
44
- relationships: {
45
- like: {},
46
- dislike: {}
47
- },
48
- tags: ['tag1', 'tag2', 'tag1']
49
- })
50
-
51
- const m = builder
52
- .with(
53
- model(
54
- actor('alice'),
55
- actor('bob'),
56
- system('cloud').with(
57
- component('backend').with(
58
- component('api'),
59
- component('db')
60
- ),
61
- component('frontend').with(
62
- relTo('cloud.backend.api')
63
- )
64
- )
65
- ),
66
- deployment(
67
- env('prod').with(
68
- vm('vm1'),
69
- vm('vm2')
70
- ),
71
- env('dev').with(
72
- vm('vm1'),
73
- instanceOf('api', 'cloud.backend.api'),
74
- vm('vm2')
75
- )
76
- ),
77
- views(
78
- view('index', $include('*')),
79
- viewOf(
80
- 'cloud',
81
- 'cloud',
82
- $rules(
83
- $include('*'),
84
- $include('cloud.backend.*')
85
- )
86
- ),
87
- deploymentView(
88
- 'prod',
89
- $rules(
90
- $include('prod.*')
91
- )
92
- )
93
- )
94
- )
95
-
96
- expectTypeOf(m.Types.Fqn).toEqualTypeOf(
97
- '' as 'alice' | 'bob' | 'cloud' | 'cloud.backend' | 'cloud.backend.api' | 'cloud.backend.db' | 'cloud.frontend'
98
- )
99
- expectTypeOf(m.Types.ViewId).toEqualTypeOf(
100
- '' as 'index' | 'cloud' | 'prod'
101
- )
102
- expectTypeOf(m.Types.DeploymentFqn).toEqualTypeOf(
103
- '' as 'prod' | 'dev' | 'prod.vm1' | 'prod.vm2' | 'dev.vm1' | 'dev.vm2' | 'dev.api'
104
- )
105
-
106
- expectTypeOf(m.build()).toEqualTypeOf(
107
- {} as ParsedLikeC4Model<
108
- 'actor' | 'system' | 'component',
109
- 'like' | 'dislike',
110
- 'tag1' | 'tag2',
111
- 'alice' | 'bob' | 'cloud' | 'cloud.backend' | 'cloud.backend.api' | 'cloud.backend.db' | 'cloud.frontend',
112
- 'index' | 'cloud' | 'prod',
113
- 'prod' | 'dev' | 'prod.vm1' | 'prod.vm2' | 'dev.vm1' | 'dev.vm2' | 'dev.api'
114
- >
115
- )
116
-
117
- expectTypeOf(m.buildComputedModel()).toEqualTypeOf(
118
- {} as LikeC4Model.Computed<
119
- 'alice' | 'bob' | 'cloud' | 'cloud.backend' | 'cloud.backend.api' | 'cloud.backend.db' | 'cloud.frontend',
120
- 'prod' | 'dev' | 'prod.vm1' | 'prod.vm2' | 'dev.vm1' | 'dev.vm2' | 'dev.api',
121
- 'index' | 'cloud' | 'prod'
122
- >
123
- )
124
- })