@likec4/core 1.17.1 → 1.18.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.
Files changed (112) hide show
  1. package/dist/compute-view/index.d.mts +91 -0
  2. package/dist/compute-view/index.d.ts +91 -0
  3. package/dist/compute-view/index.mjs +79 -0
  4. package/dist/index.d.mts +246 -434
  5. package/dist/index.d.ts +246 -434
  6. package/dist/index.mjs +418 -1322
  7. package/dist/model/index.d.mts +642 -0
  8. package/dist/model/index.d.ts +642 -0
  9. package/dist/model/index.mjs +2 -0
  10. package/dist/shared/core.BBgiAAv1.mjs +144 -0
  11. package/dist/shared/core.BPyJvuMU.mjs +2420 -0
  12. package/dist/shared/core.BQ4AbfvB.mjs +9228 -0
  13. package/dist/shared/{core.CoLQkcYL.d.mts → core.DMYY7C8s.d.mts} +398 -249
  14. package/dist/shared/{core.CoLQkcYL.d.ts → core.DMYY7C8s.d.ts} +398 -249
  15. package/dist/shared/core.k12s_keD.mjs +203 -0
  16. package/dist/types/index.d.mts +69 -1
  17. package/dist/types/index.d.ts +69 -1
  18. package/dist/types/index.mjs +21 -1
  19. package/package.json +38 -40
  20. package/src/builder/Builder.deployment.ts +219 -0
  21. package/src/builder/Builder.deploymentModel.ts +360 -0
  22. package/src/builder/Builder.element.ts +17 -19
  23. package/src/builder/Builder.model.ts +13 -2
  24. package/src/builder/Builder.test-d.ts +59 -4
  25. package/src/builder/Builder.ts +238 -53
  26. package/src/builder/Builder.view.ts +238 -53
  27. package/src/builder/_types.ts +87 -15
  28. package/src/compute-view/LikeC4ModelGraph.ts +330 -0
  29. package/src/compute-view/compute-view.ts +92 -0
  30. package/src/compute-view/deployment-view/Memory.ts +108 -0
  31. package/src/compute-view/deployment-view/Stage.ts +145 -0
  32. package/src/compute-view/deployment-view/__test__/fixture.ts +210 -0
  33. package/src/compute-view/deployment-view/_types.ts +29 -0
  34. package/src/compute-view/deployment-view/clean-connections.ts +229 -0
  35. package/src/compute-view/deployment-view/compute.ts +111 -0
  36. package/src/compute-view/deployment-view/predicates/deployment-ref.ts +146 -0
  37. package/src/compute-view/deployment-view/predicates/relation-direct.ts +130 -0
  38. package/src/compute-view/deployment-view/predicates/relation-in-out.ts +43 -0
  39. package/src/compute-view/deployment-view/predicates/relation-incoming.ts +46 -0
  40. package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +49 -0
  41. package/src/compute-view/deployment-view/predicates/wildcard.ts +29 -0
  42. package/src/compute-view/deployment-view/utils.ts +212 -0
  43. package/src/compute-view/dynamic-view/__test__/fixture.ts +58 -0
  44. package/src/compute-view/dynamic-view/compute.ts +310 -0
  45. package/src/compute-view/element-view/__test__/__snapshots__/legacy.spec.ts.snap +456 -0
  46. package/src/compute-view/element-view/__test__/fixture.ts +645 -0
  47. package/src/compute-view/element-view/compute.ts +734 -0
  48. package/src/compute-view/element-view/predicates.ts +517 -0
  49. package/src/compute-view/index.ts +5 -0
  50. package/src/compute-view/utils/__snapshots__/sortNodes.spec.ts.snap +113 -0
  51. package/src/compute-view/utils/ancestorsOfNode.ts +19 -0
  52. package/src/compute-view/utils/applyCustomElementProperties.ts +66 -0
  53. package/src/compute-view/utils/applyCustomRelationProperties.ts +41 -0
  54. package/src/compute-view/utils/applyViewRuleStyles.ts +53 -0
  55. package/src/compute-view/utils/buildComputedNodes.ts +148 -0
  56. package/src/compute-view/utils/buildElementNotations.ts +63 -0
  57. package/src/compute-view/utils/derive-edge-props-from-relationships.ts +97 -0
  58. package/src/compute-view/utils/elementExpressionToPredicate.ts +52 -0
  59. package/src/compute-view/utils/link-nodes-with-edges.ts +58 -0
  60. package/src/compute-view/utils/relationExpressionToPredicates.ts +55 -0
  61. package/src/compute-view/utils/resolve-extended-views.ts +65 -0
  62. package/src/compute-view/utils/resolve-global-rules.ts +83 -0
  63. package/src/compute-view/utils/sortNodes.ts +101 -0
  64. package/src/compute-view/utils/topological-sort.ts +160 -0
  65. package/src/compute-view/utils/uniqueTags.test.ts +42 -0
  66. package/src/compute-view/utils/uniqueTags.ts +21 -0
  67. package/src/compute-view/utils/view-hash.ts +27 -0
  68. package/src/compute-view/utils/with-readable-edges.ts +31 -0
  69. package/src/index.ts +5 -1
  70. package/src/model/DeploymentElementModel.ts +534 -0
  71. package/src/model/DeploymentModel.ts +364 -0
  72. package/src/model/ElementModel.ts +195 -0
  73. package/src/model/LikeC4Model.test-d.ts +151 -0
  74. package/src/model/LikeC4Model.ts +280 -457
  75. package/src/model/RelationModel.ts +84 -0
  76. package/src/model/__test__/fixture.ts +153 -338
  77. package/src/model/connection/ConnectionModel.ts +94 -0
  78. package/src/model/connection/DeploymentConnectionModel.ts +99 -0
  79. package/src/model/connection/deployment.ts +124 -0
  80. package/src/model/connection/model.ts +123 -0
  81. package/src/model/index.ts +4 -2
  82. package/src/model/types.ts +95 -15
  83. package/src/model/view/EdgeModel.ts +103 -0
  84. package/src/model/view/LikeC4ViewModel.ts +220 -0
  85. package/src/model/view/NodeModel.ts +228 -0
  86. package/src/types/_common.ts +2 -0
  87. package/src/types/deployments.ts +237 -0
  88. package/src/types/element.ts +7 -3
  89. package/src/types/expression.ts +8 -6
  90. package/src/types/index.ts +1 -0
  91. package/src/types/model.ts +68 -9
  92. package/src/types/overview-graph.ts +2 -2
  93. package/src/types/relation.ts +4 -4
  94. package/src/types/view-notation.ts +2 -2
  95. package/src/types/view.ts +104 -30
  96. package/src/utils/{commonHead.ts → common-head.ts} +2 -0
  97. package/src/utils/fqn.ts +83 -27
  98. package/src/utils/getOrCreate.ts +42 -0
  99. package/src/utils/graphlib.ts +10 -0
  100. package/src/utils/index.ts +4 -1
  101. package/src/utils/object-hash.ts +3 -0
  102. package/src/utils/set.ts +76 -0
  103. package/src/utils/string-hash.ts +16 -0
  104. package/dist/index.cjs +0 -5452
  105. package/dist/index.d.cts +0 -1053
  106. package/dist/shared/core.BXTs-8n7.mjs +0 -293
  107. package/dist/shared/core.CoLQkcYL.d.cts +0 -734
  108. package/dist/shared/core.DIYZvpVg.cjs +0 -353
  109. package/dist/types/index.cjs +0 -70
  110. package/dist/types/index.d.cts +0 -2
  111. package/src/model/LikeC4DiagramModel.ts +0 -338
  112. package/src/model/LikeC4ViewModel.ts +0 -320
@@ -1,293 +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 o$1(a){return t=>!a(t)}
6
-
7
- function n(e){return e==null}
8
-
9
- function o(r){return Array.isArray(r)}
10
-
11
- function t(...a){return u(e,a)}var e=(a,o)=>o.every(l=>l(a));
12
-
13
- function y(...a){return u(r,a)}var r=(a,o)=>o.some(e=>e(a));
14
-
15
- function nonNullable(value, message) {
16
- if (typeof value === "undefined" || value == null) {
17
- throw new Error(message ?? `Expected defined value, but received ${value}`);
18
- }
19
- return value;
20
- }
21
- function invariant(condition, message) {
22
- if (condition) {
23
- return;
24
- }
25
- throw new Error(message ?? "Invariant failed");
26
- }
27
- function nonexhaustive(value) {
28
- throw new Error(`NonExhaustive value: ${value}`);
29
- }
30
-
31
- function AsFqn(name, parent) {
32
- return parent ? parent + "." + name : name;
33
- }
34
- const BorderStyles = ["solid", "dashed", "dotted", "none"];
35
- var ElementKind;
36
- ((ElementKind2) => {
37
- ElementKind2.Group = "@group";
38
- })(ElementKind || (ElementKind = {}));
39
- const ElementShapes = [
40
- "rectangle",
41
- "person",
42
- "browser",
43
- "mobile",
44
- "cylinder",
45
- "storage",
46
- "queue"
47
- ];
48
- const DefaultThemeColor = "primary";
49
- const DefaultElementShape = "rectangle";
50
-
51
- function isElementRef(expr) {
52
- return "element" in expr;
53
- }
54
- function isExpandedElementExpr(expr) {
55
- return "expanded" in expr;
56
- }
57
- function isCustomElement(expr) {
58
- return "custom" in expr && (isElement(expr.custom.expr) || isElementWhere(expr.custom.expr));
59
- }
60
- function isWildcard(expr) {
61
- return "wildcard" in expr;
62
- }
63
- function isElementKindExpr(expr) {
64
- return "elementKind" in expr && "isEqual" in expr;
65
- }
66
- function isElementTagExpr(expr) {
67
- return "elementTag" in expr && "isEqual" in expr;
68
- }
69
- function isElement(expr) {
70
- return isElementRef(expr) || isWildcard(expr) || isElementKindExpr(expr) || isElementTagExpr(expr) || isExpandedElementExpr(expr);
71
- }
72
- function isElementWhere(expr) {
73
- return "where" in expr && isElement(expr.where.expr);
74
- }
75
- function isElementPredicateExpr(expr) {
76
- return isElement(expr) || isElementWhere(expr) || isCustomElement(expr);
77
- }
78
- function isRelation(expr) {
79
- return "source" in expr && "target" in expr;
80
- }
81
- function isInOut(expr) {
82
- return "inout" in expr;
83
- }
84
- function isIncoming(expr) {
85
- return "incoming" in expr;
86
- }
87
- function isOutgoing(expr) {
88
- return "outgoing" in expr;
89
- }
90
- function isRelationExpression(expr) {
91
- return isRelation(expr) || isInOut(expr) || isIncoming(expr) || isOutgoing(expr);
92
- }
93
- function isRelationWhere(expr) {
94
- return "where" in expr && isRelationExpression(expr.where.expr);
95
- }
96
- function isCustomRelationExpr(expr) {
97
- return "customRelation" in expr;
98
- }
99
- function isRelationPredicateExpr(expr) {
100
- return isRelationExpression(expr) || isRelationWhere(expr) || isCustomRelationExpr(expr);
101
- }
102
-
103
- const expression = {
104
- __proto__: null,
105
- isCustomElement: isCustomElement,
106
- isCustomRelationExpr: isCustomRelationExpr,
107
- isElement: isElement,
108
- isElementKindExpr: isElementKindExpr,
109
- isElementPredicateExpr: isElementPredicateExpr,
110
- isElementRef: isElementRef,
111
- isElementTagExpr: isElementTagExpr,
112
- isElementWhere: isElementWhere,
113
- isExpandedElementExpr: isExpandedElementExpr,
114
- isInOut: isInOut,
115
- isIncoming: isIncoming,
116
- isOutgoing: isOutgoing,
117
- isRelation: isRelation,
118
- isRelationExpression: isRelationExpression,
119
- isRelationPredicateExpr: isRelationPredicateExpr,
120
- isRelationWhere: isRelationWhere,
121
- isWildcard: isWildcard
122
- };
123
-
124
- const isTagEqual = (operator) => {
125
- return "tag" in operator;
126
- };
127
- const isKindEqual = (operator) => {
128
- return "kind" in operator;
129
- };
130
- const isNotOperator = (operator) => {
131
- return "not" in operator;
132
- };
133
- const isAndOperator = (operator) => {
134
- return "and" in operator;
135
- };
136
- const isOrOperator = (operator) => {
137
- return "or" in operator;
138
- };
139
- function whereOperatorAsPredicate(operator) {
140
- switch (true) {
141
- case isTagEqual(operator): {
142
- if ("eq" in operator.tag) {
143
- const tag2 = operator.tag.eq;
144
- return (value) => {
145
- return Array.isArray(value.tags) && value.tags.includes(tag2);
146
- };
147
- }
148
- const tag = operator.tag.neq;
149
- return (value) => {
150
- return !Array.isArray(value.tags) || !value.tags.includes(tag);
151
- };
152
- }
153
- case isKindEqual(operator): {
154
- if ("eq" in operator.kind) {
155
- const kind2 = operator.kind.eq;
156
- return (value) => {
157
- return value.kind === kind2;
158
- };
159
- }
160
- const kind = operator.kind.neq;
161
- return (value) => {
162
- return n(value.kind) || value.kind !== kind;
163
- };
164
- }
165
- case isNotOperator(operator): {
166
- const predicate = whereOperatorAsPredicate(operator.not);
167
- return o$1(predicate);
168
- }
169
- case isAndOperator(operator): {
170
- const predicates = operator.and.map(whereOperatorAsPredicate);
171
- return t(predicates);
172
- }
173
- case isOrOperator(operator): {
174
- const predicates = operator.or.map(whereOperatorAsPredicate);
175
- return y(predicates);
176
- }
177
- default:
178
- nonexhaustive(operator);
179
- }
180
- }
181
-
182
- const DefaultLineStyle = "dashed";
183
- const DefaultArrowType = "normal";
184
- const DefaultRelationshipColor = "gray";
185
-
186
- const ThemeColors = [
187
- "amber",
188
- "blue",
189
- "gray",
190
- "slate",
191
- "green",
192
- "indigo",
193
- "muted",
194
- "primary",
195
- "red",
196
- "secondary",
197
- "sky"
198
- ];
199
- function isThemeColor(color) {
200
- return color in ThemeColors;
201
- }
202
-
203
- function isViewRulePredicate(rule) {
204
- return "include" in rule && Array.isArray(rule.include) || "exclude" in rule && Array.isArray(rule.exclude);
205
- }
206
- function isViewRuleGlobalPredicateRef(rule) {
207
- return "predicateId" in rule;
208
- }
209
- function isViewRuleStyle(rule) {
210
- return "style" in rule && "targets" in rule;
211
- }
212
- function isViewRuleGlobalStyle(rule) {
213
- return "styleId" in rule;
214
- }
215
- function isAutoLayoutDirection(autoLayout) {
216
- return autoLayout === "TB" || autoLayout === "BT" || autoLayout === "LR" || autoLayout === "RL";
217
- }
218
- function isViewRuleAutoLayout(rule) {
219
- return "direction" in rule;
220
- }
221
- function isViewRuleGroup(rule) {
222
- return "title" in rule && "groupRules" in rule && Array.isArray(rule.groupRules);
223
- }
224
- function isDynamicViewIncludeRule(rule) {
225
- return "include" in rule && Array.isArray(rule.include);
226
- }
227
- function isDynamicViewParallelSteps(step) {
228
- return "__parallel" in step && o(step.__parallel);
229
- }
230
- function isDynamicView(view) {
231
- return view.__ === "dynamic";
232
- }
233
- function isElementView(view) {
234
- return n(view.__) || view.__ === "element";
235
- }
236
- function isExtendsElementView(view) {
237
- return isElementView(view) && "extends" in view;
238
- }
239
- function isScopedElementView(view) {
240
- return isElementView(view) && "viewOf" in view;
241
- }
242
- function StepEdgeId(step, parallelStep) {
243
- const id = `step-${String(step).padStart(2, "0")}`;
244
- return parallelStep ? `${id}.${parallelStep}` : id;
245
- }
246
- function isStepEdgeId(id) {
247
- return id.startsWith("step-");
248
- }
249
- function extractStep(id) {
250
- if (!isStepEdgeId(id)) {
251
- throw new Error(`Invalid step edge id: ${id}`);
252
- }
253
- return parseFloat(id.slice("step-".length));
254
- }
255
- function getParallelStepsPrefix(id) {
256
- if (isStepEdgeId(id) && id.includes(".")) {
257
- return id.slice(0, id.indexOf(".") + 1);
258
- }
259
- return null;
260
- }
261
- var ComputedNode;
262
- ((ComputedNode2) => {
263
- function isNodesGroup(node) {
264
- return node.kind === ElementKind.Group;
265
- }
266
- ComputedNode2.isNodesGroup = isNodesGroup;
267
- })(ComputedNode || (ComputedNode = {}));
268
- function isComputedDynamicView(view) {
269
- return view.__ === "dynamic";
270
- }
271
- function isComputedElementView(view) {
272
- return n(view.__) || view.__ === "element";
273
- }
274
- function getBBoxCenter({
275
- x,
276
- y,
277
- width,
278
- height
279
- }) {
280
- return {
281
- x: x + width / 2,
282
- y: y + height / 2
283
- };
284
- }
285
- var DiagramNode;
286
- ((DiagramNode2) => {
287
- function isNodesGroup(node) {
288
- return node.kind === ElementKind.Group;
289
- }
290
- DiagramNode2.isNodesGroup = isNodesGroup;
291
- })(DiagramNode || (DiagramNode = {}));
292
-
293
- export { StepEdgeId as $, AsFqn as A, BorderStyles as B, isCustomRelationExpr as C, DefaultThemeColor as D, ElementKind as E, isRelationPredicateExpr as F, isTagEqual as G, isKindEqual as H, isNotOperator as I, isAndOperator as J, isOrOperator as K, whereOperatorAsPredicate as L, DefaultLineStyle as M, DefaultArrowType as N, isThemeColor as O, isViewRulePredicate as P, isViewRuleGlobalPredicateRef as Q, isViewRuleStyle as R, isViewRuleGlobalStyle as S, isAutoLayoutDirection as T, isViewRuleAutoLayout as U, isViewRuleGroup as V, isDynamicViewIncludeRule as W, isDynamicViewParallelSteps as X, isDynamicView as Y, isElementView as Z, isExtendsElementView as _, invariant as a, isStepEdgeId as a0, extractStep as a1, getParallelStepsPrefix as a2, ComputedNode as a3, isComputedDynamicView as a4, isComputedElementView as a5, getBBoxCenter as a6, DiagramNode as a7, isScopedElementView as b, DefaultElementShape as c, nonNullable as d, DefaultRelationshipColor as e, expression as f, nonexhaustive as g, ElementShapes as h, isElementPredicateExpr as i, isElementRef as j, isExpandedElementExpr as k, isCustomElement as l, isWildcard as m, n, o, isElementKindExpr as p, isElementTagExpr as q, isElement as r, isElementWhere as s, isRelation as t, u, isInOut as v, isIncoming as w, isOutgoing as x, isRelationExpression as y, isRelationWhere as z };