@likec4/core 1.30.0 → 1.32.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/README.md +407 -5
- package/dist/builder/index.d.mts +221 -42
- package/dist/builder/index.mjs +118 -65
- package/dist/compute-view/index.d.mts +23 -7
- package/dist/compute-view/index.mjs +11 -6
- package/dist/compute-view/relationships-view/index.d.mts +9 -7
- package/dist/compute-view/relationships-view/index.mjs +3 -2
- package/dist/index.d.mts +10 -14
- package/dist/index.mjs +10 -6
- package/dist/model/index.d.mts +173 -19
- package/dist/model/index.mjs +6 -1
- package/dist/shared/core.BaYE_r29.d.mts +258 -0
- package/dist/shared/core.Bk7wEZFG.mjs +276 -0
- package/dist/shared/core.BrCnZFTn.mjs +32 -0
- package/dist/shared/core.BuO4ncfY.d.mts +146 -0
- package/dist/shared/{core.CAcZ6_cP.mjs → core.CBpKAlhj.mjs} +1742 -4128
- package/dist/shared/core.CCWXGc6G.d.mts +920 -0
- package/dist/shared/core.CUYDgv2-.mjs +214 -0
- package/dist/shared/{core.Cu-UdkSl.mjs → core.CpXlRyE5.mjs} +7 -494
- package/dist/shared/{core.C-YXI-43.mjs → core.Cy9smucx.mjs} +3 -1
- package/dist/shared/core.CywrQs86.d.mts +31 -0
- package/dist/shared/core.DoK86JEe.mjs +518 -0
- package/dist/shared/core.Dpq3P3YJ.d.mts +1265 -0
- package/dist/shared/{core.D2830qgg.d.mts → core.Pf5I9o0e.d.mts} +1 -1
- package/dist/shared/core.cbA9VZ02.mjs +2681 -0
- package/dist/shared/{core.CQXU9DF7.mjs → core.rmvsy0n3.mjs} +23 -32
- package/dist/types/aux.d.mts +3 -0
- package/dist/types/aux.mjs +1 -0
- package/dist/types/index.d.mts +7 -45
- package/dist/types/index.mjs +130 -3
- package/dist/utils/index.d.mts +221 -53
- package/dist/utils/index.mjs +14 -10
- package/package.json +19 -10
- package/src/builder/Builder.deploymentModel.ts +82 -18
- package/src/builder/Builder.element.ts +40 -20
- package/src/builder/Builder.model.ts +66 -17
- package/src/builder/Builder.ts +168 -76
- package/src/builder/Builder.view-common.ts +35 -17
- package/src/builder/Builder.view-deployment.ts +25 -25
- package/src/builder/Builder.view-element.ts +13 -12
- package/src/builder/Builder.views.ts +12 -7
- package/src/builder/__snapshots__/Builder-style1.spec.ts.snap +62 -34
- package/src/builder/__snapshots__/Builder-style2.compute-model.json5 +319 -0
- package/src/builder/__snapshots__/Builder-style2.spec.ts.snap +45 -24
- package/src/builder/_types.ts +34 -27
- package/src/compute-view/compute-view.ts +31 -34
- package/src/compute-view/deployment-view/__test__/TestHelper.ts +27 -14
- package/src/compute-view/deployment-view/__test__/fixture.ts +15 -13
- package/src/compute-view/deployment-view/_types.ts +10 -10
- package/src/compute-view/deployment-view/clean-connections.ts +5 -7
- package/src/compute-view/deployment-view/compute.ts +16 -13
- package/src/compute-view/deployment-view/memory/memory.ts +5 -6
- package/src/compute-view/deployment-view/predicates/deploymentRefs.ts +4 -5
- package/src/compute-view/deployment-view/predicates/relation-direct.ts +25 -50
- package/src/compute-view/deployment-view/predicates/relation-in-out.ts +5 -7
- package/src/compute-view/deployment-view/predicates/relation-incoming.ts +7 -11
- package/src/compute-view/deployment-view/predicates/relation-outgoing.ts +7 -10
- package/src/compute-view/deployment-view/predicates/utils.ts +37 -31
- package/src/compute-view/deployment-view/predicates/wildcard.ts +3 -2
- package/src/compute-view/deployment-view/stages/stage-final.ts +2 -2
- package/src/compute-view/deployment-view/stages/stage-include.ts +1 -1
- package/src/compute-view/deployment-view/utils.ts +79 -72
- package/src/compute-view/dynamic-view/__test__/fixture.ts +20 -11
- package/src/compute-view/dynamic-view/compute.ts +60 -53
- package/src/compute-view/element-view/__test__/TestHelper.ts +53 -29
- package/src/compute-view/element-view/__test__/__snapshots__/legacy.spec.ts.snap +26 -26
- package/src/compute-view/element-view/__test__/fixture.ts +134 -83
- package/src/compute-view/element-view/_types.ts +14 -19
- package/src/compute-view/element-view/clean-connections.ts +12 -8
- package/src/compute-view/element-view/compute.ts +61 -51
- package/src/compute-view/element-view/memory/NodeGroup.ts +8 -9
- package/src/compute-view/element-view/memory/memory.ts +22 -22
- package/src/compute-view/element-view/memory/stage-include.ts +5 -3
- package/src/compute-view/element-view/predicates/_utils.ts +18 -14
- package/src/compute-view/element-view/predicates/element-expand.ts +4 -5
- package/src/compute-view/element-view/predicates/element-kind-tag.ts +3 -4
- package/src/compute-view/element-view/predicates/element-ref.ts +3 -4
- package/src/compute-view/element-view/predicates/relation-direct.ts +16 -12
- package/src/compute-view/element-view/predicates/relation-in-out.ts +7 -8
- package/src/compute-view/element-view/predicates/relation-in.ts +19 -26
- package/src/compute-view/element-view/predicates/relation-out.ts +20 -21
- package/src/compute-view/element-view/predicates/wildcard.ts +3 -3
- package/src/compute-view/element-view/utils.ts +25 -23
- package/src/compute-view/index.ts +1 -1
- package/src/compute-view/memory/AbstractStageExclude.ts +3 -4
- package/src/compute-view/memory/AbstractStageInclude.ts +1 -1
- package/src/compute-view/memory/_types.ts +3 -2
- package/src/compute-view/relationships-view/_types.ts +3 -4
- package/src/compute-view/relationships-view/compute.ts +8 -11
- package/src/compute-view/relationships-view/layout.ts +6 -6
- package/src/compute-view/relationships-view/utils.ts +4 -4
- package/src/compute-view/utils/ancestorsOfNode.ts +7 -7
- package/src/compute-view/utils/applyCustomElementProperties.ts +16 -8
- package/src/compute-view/utils/applyCustomRelationProperties.ts +19 -9
- package/src/compute-view/utils/applyViewRuleStyles.ts +18 -10
- package/src/compute-view/utils/buildComputedNodes.ts +40 -40
- package/src/compute-view/utils/buildElementNotations.ts +14 -14
- package/src/compute-view/utils/elementExpressionToPredicate.ts +14 -15
- package/src/compute-view/utils/link-nodes-with-edges.ts +6 -4
- package/src/compute-view/utils/merge-props-from-relationships.ts +52 -20
- package/src/compute-view/utils/relationExpressionToPredicates.ts +19 -19
- package/src/compute-view/utils/resolve-extended-views.ts +8 -7
- package/src/compute-view/utils/resolve-global-rules.ts +31 -26
- package/src/compute-view/utils/topological-sort.ts +14 -14
- package/src/compute-view/utils/view-hash.ts +2 -2
- package/src/compute-view/utils/with-readable-edges.ts +9 -5
- package/src/index.ts +0 -32
- package/src/model/DeploymentElementModel.ts +182 -137
- package/src/model/DeploymentModel.ts +88 -65
- package/src/model/ElementModel.ts +92 -72
- package/src/model/LikeC4Model.ts +430 -241
- package/src/model/RelationModel.ts +69 -26
- package/src/model/__test__/fixture.ts +50 -36
- package/src/model/connection/Connection.ts +2 -2
- package/src/model/connection/deployment/DeploymentConnectionModel.ts +21 -24
- package/src/model/connection/deployment/find.ts +1 -1
- package/src/model/connection/model/ConnectionModel.ts +21 -20
- package/src/model/connection/model/find.ts +7 -7
- package/src/model/connection/ops.ts +6 -6
- package/src/model/guards.ts +66 -14
- package/src/model/index.ts +20 -7
- package/src/model/types.ts +41 -97
- package/src/model/view/EdgeModel.ts +47 -41
- package/src/model/view/LikeC4ViewModel.ts +130 -80
- package/src/model/view/NodeModel.ts +102 -96
- package/src/theme/element.ts +1 -1
- package/src/theme/index.ts +9 -9
- package/src/theme/relationships.ts +1 -1
- package/src/types/_common.ts +21 -15
- package/src/types/aux.ts +285 -0
- package/src/types/const.ts +34 -0
- package/src/types/expression-model.ts +292 -0
- package/src/types/expression.ts +311 -0
- package/src/types/fqnRef.ts +88 -0
- package/src/types/geometry.ts +131 -0
- package/src/types/global.ts +10 -8
- package/src/types/index.ts +39 -201
- package/src/types/model-data.ts +52 -84
- package/src/types/model-deployment.ts +87 -0
- package/src/types/model-dump.ts +72 -0
- package/src/types/model-logical.ts +111 -0
- package/src/types/model-spec.ts +81 -0
- package/src/types/operators.ts +51 -52
- package/src/types/scalar.ts +114 -0
- package/src/types/styles.ts +123 -0
- package/src/types/view-changes.ts +4 -5
- package/src/types/view-common.ts +157 -0
- package/src/types/view-computed.ts +113 -0
- package/src/types/view-layouted.ts +82 -0
- package/src/types/view-parsed.deployment.ts +40 -0
- package/src/types/view-parsed.dynamic.ts +78 -0
- package/src/types/view-parsed.element.ts +65 -0
- package/src/types/view.ts +122 -542
- package/src/utils/compare-natural.ts +43 -1
- package/src/utils/getOrCreate.ts +0 -34
- package/src/utils/index.ts +7 -12
- package/src/utils/iterable/filter.ts +1 -1
- package/src/utils/iterable/find.ts +3 -1
- package/src/utils/iterable/head.ts +22 -0
- package/src/utils/iterable/index.ts +1 -0
- package/src/utils/iterable/map.ts +1 -1
- package/src/utils/iterable/reduce.ts +1 -1
- package/src/utils/iterable/some.ts +1 -1
- package/src/utils/memoize-prop.ts +30 -0
- package/src/utils/object-hash.ts +1 -1
- package/src/utils/relations.ts +14 -11
- package/src/utils/string-hash.ts +1 -1
- package/dist/shared/core.CZR9J1Qx.d.mts +0 -146
- package/dist/shared/core.CiFKryGW.d.mts +0 -745
- package/dist/shared/core.DJvmfnEi.d.mts +0 -1153
- package/dist/shared/core.DgfwjBtu.mjs +0 -495
- package/dist/shared/core.SjLhMA7a.d.mts +0 -62
- package/src/builder/__snapshots__/Builder.spec.ts.snap +0 -374
- package/src/compute-view/element-view/predicates.ts +0 -520
- package/src/compute-view/utils/uniqueTags.ts +0 -21
- package/src/types/deployments.ts +0 -170
- package/src/types/element.ts +0 -109
- package/src/types/expression-v2-model.ts +0 -314
- package/src/types/expression-v2.ts +0 -392
- package/src/types/overview-graph.ts +0 -43
- package/src/types/relation.ts +0 -61
- package/src/types/scalars.ts +0 -39
- package/src/types/theme.ts +0 -82
- package/src/types/view-notation.ts +0 -9
- package/src/utils/graphlib.ts +0 -10
- /package/src/{errors/index.ts → utils/invariant.ts} +0 -0
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
import { u } from './core.DbRvwARP.mjs';
|
|
2
|
+
import { t } from './core.rmvsy0n3.mjs';
|
|
3
|
+
import { i as invariant } from './core.Cy9smucx.mjs';
|
|
4
|
+
|
|
5
|
+
function i(...e){return u(n,e)}var n=(e,r)=>e.length>=r;
|
|
6
|
+
|
|
7
|
+
function m(...a){return u(o,a,p)}var o=(a,e)=>a.map(e),p=a=>(e,t,r)=>({done:false,hasNext:true,next:a(e,t,r)});
|
|
8
|
+
|
|
9
|
+
var set = {};
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Mnemonist Set
|
|
13
|
+
* ==============
|
|
14
|
+
*
|
|
15
|
+
* Useful function related to sets such as union, intersection and so on...
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
var hasRequiredSet;
|
|
19
|
+
|
|
20
|
+
function requireSet () {
|
|
21
|
+
if (hasRequiredSet) return set;
|
|
22
|
+
hasRequiredSet = 1;
|
|
23
|
+
(function (exports) {
|
|
24
|
+
// TODO: optimize versions for less variadicities
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Variadic function computing the intersection of multiple sets.
|
|
28
|
+
*
|
|
29
|
+
* @param {...Set} sets - Sets to intersect.
|
|
30
|
+
* @return {Set} - The intesection.
|
|
31
|
+
*/
|
|
32
|
+
exports.intersection = function() {
|
|
33
|
+
if (arguments.length < 2)
|
|
34
|
+
throw new Error('mnemonist/Set.intersection: needs at least two arguments.');
|
|
35
|
+
|
|
36
|
+
var I = new Set();
|
|
37
|
+
|
|
38
|
+
// First we need to find the smallest set
|
|
39
|
+
var smallestSize = Infinity,
|
|
40
|
+
smallestSet = null;
|
|
41
|
+
|
|
42
|
+
var s, i, l = arguments.length;
|
|
43
|
+
|
|
44
|
+
for (i = 0; i < l; i++) {
|
|
45
|
+
s = arguments[i];
|
|
46
|
+
|
|
47
|
+
// If one of the set has no items, we can stop right there
|
|
48
|
+
if (s.size === 0)
|
|
49
|
+
return I;
|
|
50
|
+
|
|
51
|
+
if (s.size < smallestSize) {
|
|
52
|
+
smallestSize = s.size;
|
|
53
|
+
smallestSet = s;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Now we need to intersect this set with the others
|
|
58
|
+
var iterator = smallestSet.values(),
|
|
59
|
+
step,
|
|
60
|
+
item,
|
|
61
|
+
add,
|
|
62
|
+
set;
|
|
63
|
+
|
|
64
|
+
// TODO: we can optimize by iterating each next time over the current intersection
|
|
65
|
+
// but this probably means more RAM to consume since we'll create n-1 sets rather than
|
|
66
|
+
// only the one.
|
|
67
|
+
while ((step = iterator.next(), !step.done)) {
|
|
68
|
+
item = step.value;
|
|
69
|
+
add = true;
|
|
70
|
+
|
|
71
|
+
for (i = 0; i < l; i++) {
|
|
72
|
+
set = arguments[i];
|
|
73
|
+
|
|
74
|
+
if (set === smallestSet)
|
|
75
|
+
continue;
|
|
76
|
+
|
|
77
|
+
if (!set.has(item)) {
|
|
78
|
+
add = false;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (add)
|
|
84
|
+
I.add(item);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return I;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Variadic function computing the union of multiple sets.
|
|
92
|
+
*
|
|
93
|
+
* @param {...Set} sets - Sets to unite.
|
|
94
|
+
* @return {Set} - The union.
|
|
95
|
+
*/
|
|
96
|
+
exports.union = function() {
|
|
97
|
+
if (arguments.length < 2)
|
|
98
|
+
throw new Error('mnemonist/Set.union: needs at least two arguments.');
|
|
99
|
+
|
|
100
|
+
var U = new Set();
|
|
101
|
+
|
|
102
|
+
var i, l = arguments.length;
|
|
103
|
+
|
|
104
|
+
var iterator,
|
|
105
|
+
step;
|
|
106
|
+
|
|
107
|
+
for (i = 0; i < l; i++) {
|
|
108
|
+
iterator = arguments[i].values();
|
|
109
|
+
|
|
110
|
+
while ((step = iterator.next(), !step.done))
|
|
111
|
+
U.add(step.value);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return U;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Function computing the difference between two sets.
|
|
119
|
+
*
|
|
120
|
+
* @param {Set} A - First set.
|
|
121
|
+
* @param {Set} B - Second set.
|
|
122
|
+
* @return {Set} - The difference.
|
|
123
|
+
*/
|
|
124
|
+
exports.difference = function(A, B) {
|
|
125
|
+
|
|
126
|
+
// If first set is empty
|
|
127
|
+
if (!A.size)
|
|
128
|
+
return new Set();
|
|
129
|
+
|
|
130
|
+
if (!B.size)
|
|
131
|
+
return new Set(A);
|
|
132
|
+
|
|
133
|
+
var D = new Set();
|
|
134
|
+
|
|
135
|
+
var iterator = A.values(),
|
|
136
|
+
step;
|
|
137
|
+
|
|
138
|
+
while ((step = iterator.next(), !step.done)) {
|
|
139
|
+
if (!B.has(step.value))
|
|
140
|
+
D.add(step.value);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return D;
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Function computing the symmetric difference between two sets.
|
|
148
|
+
*
|
|
149
|
+
* @param {Set} A - First set.
|
|
150
|
+
* @param {Set} B - Second set.
|
|
151
|
+
* @return {Set} - The symmetric difference.
|
|
152
|
+
*/
|
|
153
|
+
exports.symmetricDifference = function(A, B) {
|
|
154
|
+
var S = new Set();
|
|
155
|
+
|
|
156
|
+
var iterator = A.values(),
|
|
157
|
+
step;
|
|
158
|
+
|
|
159
|
+
while ((step = iterator.next(), !step.done)) {
|
|
160
|
+
if (!B.has(step.value))
|
|
161
|
+
S.add(step.value);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
iterator = B.values();
|
|
165
|
+
|
|
166
|
+
while ((step = iterator.next(), !step.done)) {
|
|
167
|
+
if (!A.has(step.value))
|
|
168
|
+
S.add(step.value);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return S;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Function returning whether A is a subset of B.
|
|
176
|
+
*
|
|
177
|
+
* @param {Set} A - First set.
|
|
178
|
+
* @param {Set} B - Second set.
|
|
179
|
+
* @return {boolean}
|
|
180
|
+
*/
|
|
181
|
+
exports.isSubset = function(A, B) {
|
|
182
|
+
var iterator = A.values(),
|
|
183
|
+
step;
|
|
184
|
+
|
|
185
|
+
// Shortcuts
|
|
186
|
+
if (A === B)
|
|
187
|
+
return true;
|
|
188
|
+
|
|
189
|
+
if (A.size > B.size)
|
|
190
|
+
return false;
|
|
191
|
+
|
|
192
|
+
while ((step = iterator.next(), !step.done)) {
|
|
193
|
+
if (!B.has(step.value))
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return true;
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Function returning whether A is a superset of B.
|
|
202
|
+
*
|
|
203
|
+
* @param {Set} A - First set.
|
|
204
|
+
* @param {Set} B - Second set.
|
|
205
|
+
* @return {boolean}
|
|
206
|
+
*/
|
|
207
|
+
exports.isSuperset = function(A, B) {
|
|
208
|
+
return exports.isSubset(B, A);
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Function adding the items of set B to the set A.
|
|
213
|
+
*
|
|
214
|
+
* @param {Set} A - First set.
|
|
215
|
+
* @param {Set} B - Second set.
|
|
216
|
+
*/
|
|
217
|
+
exports.add = function(A, B) {
|
|
218
|
+
var iterator = B.values(),
|
|
219
|
+
step;
|
|
220
|
+
|
|
221
|
+
while ((step = iterator.next(), !step.done))
|
|
222
|
+
A.add(step.value);
|
|
223
|
+
|
|
224
|
+
return;
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Function subtracting the items of set B from the set A.
|
|
229
|
+
*
|
|
230
|
+
* @param {Set} A - First set.
|
|
231
|
+
* @param {Set} B - Second set.
|
|
232
|
+
*/
|
|
233
|
+
exports.subtract = function(A, B) {
|
|
234
|
+
var iterator = B.values(),
|
|
235
|
+
step;
|
|
236
|
+
|
|
237
|
+
while ((step = iterator.next(), !step.done))
|
|
238
|
+
A.delete(step.value);
|
|
239
|
+
|
|
240
|
+
return;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Function intersecting the items of A & B.
|
|
245
|
+
*
|
|
246
|
+
* @param {Set} A - First set.
|
|
247
|
+
* @param {Set} B - Second set.
|
|
248
|
+
*/
|
|
249
|
+
exports.intersect = function(A, B) {
|
|
250
|
+
var iterator = A.values(),
|
|
251
|
+
step;
|
|
252
|
+
|
|
253
|
+
while ((step = iterator.next(), !step.done)) {
|
|
254
|
+
if (!B.has(step.value))
|
|
255
|
+
A.delete(step.value);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return;
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Function disjuncting the items of A & B.
|
|
263
|
+
*
|
|
264
|
+
* @param {Set} A - First set.
|
|
265
|
+
* @param {Set} B - Second set.
|
|
266
|
+
*/
|
|
267
|
+
exports.disjunct = function(A, B) {
|
|
268
|
+
var iterator = A.values(),
|
|
269
|
+
step;
|
|
270
|
+
|
|
271
|
+
var toRemove = [];
|
|
272
|
+
|
|
273
|
+
while ((step = iterator.next(), !step.done)) {
|
|
274
|
+
if (B.has(step.value))
|
|
275
|
+
toRemove.push(step.value);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
iterator = B.values();
|
|
279
|
+
|
|
280
|
+
while ((step = iterator.next(), !step.done)) {
|
|
281
|
+
if (!A.has(step.value))
|
|
282
|
+
A.add(step.value);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
for (var i = 0, l = toRemove.length; i < l; i++)
|
|
286
|
+
A.delete(toRemove[i]);
|
|
287
|
+
|
|
288
|
+
return;
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Function returning the size of the intersection of A & B.
|
|
293
|
+
*
|
|
294
|
+
* @param {Set} A - First set.
|
|
295
|
+
* @param {Set} B - Second set.
|
|
296
|
+
* @return {number}
|
|
297
|
+
*/
|
|
298
|
+
exports.intersectionSize = function(A, B) {
|
|
299
|
+
var tmp;
|
|
300
|
+
|
|
301
|
+
// We need to know the smallest set
|
|
302
|
+
if (A.size > B.size) {
|
|
303
|
+
tmp = A;
|
|
304
|
+
A = B;
|
|
305
|
+
B = tmp;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
if (A.size === 0)
|
|
309
|
+
return 0;
|
|
310
|
+
|
|
311
|
+
if (A === B)
|
|
312
|
+
return A.size;
|
|
313
|
+
|
|
314
|
+
var iterator = A.values(),
|
|
315
|
+
step;
|
|
316
|
+
|
|
317
|
+
var I = 0;
|
|
318
|
+
|
|
319
|
+
while ((step = iterator.next(), !step.done)) {
|
|
320
|
+
if (B.has(step.value))
|
|
321
|
+
I++;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
return I;
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Function returning the size of the union of A & B.
|
|
329
|
+
*
|
|
330
|
+
* @param {Set} A - First set.
|
|
331
|
+
* @param {Set} B - Second set.
|
|
332
|
+
* @return {number}
|
|
333
|
+
*/
|
|
334
|
+
exports.unionSize = function(A, B) {
|
|
335
|
+
var I = exports.intersectionSize(A, B);
|
|
336
|
+
|
|
337
|
+
return A.size + B.size - I;
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Function returning the Jaccard similarity between A & B.
|
|
342
|
+
*
|
|
343
|
+
* @param {Set} A - First set.
|
|
344
|
+
* @param {Set} B - Second set.
|
|
345
|
+
* @return {number}
|
|
346
|
+
*/
|
|
347
|
+
exports.jaccard = function(A, B) {
|
|
348
|
+
var I = exports.intersectionSize(A, B);
|
|
349
|
+
|
|
350
|
+
if (I === 0)
|
|
351
|
+
return 0;
|
|
352
|
+
|
|
353
|
+
var U = A.size + B.size - I;
|
|
354
|
+
|
|
355
|
+
return I / U;
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Function returning the overlap coefficient between A & B.
|
|
360
|
+
*
|
|
361
|
+
* @param {Set} A - First set.
|
|
362
|
+
* @param {Set} B - Second set.
|
|
363
|
+
* @return {number}
|
|
364
|
+
*/
|
|
365
|
+
exports.overlap = function(A, B) {
|
|
366
|
+
var I = exports.intersectionSize(A, B);
|
|
367
|
+
|
|
368
|
+
if (I === 0)
|
|
369
|
+
return 0;
|
|
370
|
+
|
|
371
|
+
return I / Math.min(A.size, B.size);
|
|
372
|
+
};
|
|
373
|
+
} (set));
|
|
374
|
+
return set;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
var setExports = /*@__PURE__*/ requireSet();
|
|
378
|
+
|
|
379
|
+
function getOrCreate(map, key, create) {
|
|
380
|
+
let entry = map.get(key);
|
|
381
|
+
if (!entry) {
|
|
382
|
+
entry = create(key);
|
|
383
|
+
map.set(key, entry);
|
|
384
|
+
}
|
|
385
|
+
return entry;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
function ifind(arg1, arg2) {
|
|
389
|
+
const pred = arg2 ?? arg1;
|
|
390
|
+
invariant(t(pred));
|
|
391
|
+
function _find(iter) {
|
|
392
|
+
for (const value of iter) {
|
|
393
|
+
if (pred(value)) {
|
|
394
|
+
return value;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
if (!arg2) {
|
|
400
|
+
return _find;
|
|
401
|
+
}
|
|
402
|
+
return _find(arg1);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
function ihead(iterable) {
|
|
406
|
+
if (!iterable) {
|
|
407
|
+
return _head;
|
|
408
|
+
}
|
|
409
|
+
return _head(iterable);
|
|
410
|
+
}
|
|
411
|
+
function _head(iter) {
|
|
412
|
+
for (const value of iter) {
|
|
413
|
+
return value;
|
|
414
|
+
}
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
function isome(arg1, arg2) {
|
|
419
|
+
const pred = arg2 ?? arg1;
|
|
420
|
+
invariant(t(pred));
|
|
421
|
+
function _some(iter) {
|
|
422
|
+
for (const value of iter) {
|
|
423
|
+
if (pred(value)) {
|
|
424
|
+
return true;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return false;
|
|
428
|
+
}
|
|
429
|
+
if (!arg2) {
|
|
430
|
+
return _some;
|
|
431
|
+
}
|
|
432
|
+
return _some(arg1);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
function memoizeProp(obj, tag, fn) {
|
|
436
|
+
const tagSymbol = typeof tag === "symbol" ? tag : Symbol.for(tag);
|
|
437
|
+
if (!obj.hasOwnProperty(tagSymbol)) {
|
|
438
|
+
Object.defineProperty(obj, tagSymbol, {
|
|
439
|
+
enumerable: false,
|
|
440
|
+
writable: false,
|
|
441
|
+
value: fn()
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
return obj[tagSymbol];
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
function union(...sets) {
|
|
448
|
+
let result = /* @__PURE__ */ new Set();
|
|
449
|
+
for (const set of sets) {
|
|
450
|
+
for (const value of set) {
|
|
451
|
+
result.add(value);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
return result;
|
|
455
|
+
}
|
|
456
|
+
function intersection(first, ...sets) {
|
|
457
|
+
let result = /* @__PURE__ */ new Set();
|
|
458
|
+
if (first.size === 0) {
|
|
459
|
+
return result;
|
|
460
|
+
}
|
|
461
|
+
let other = i(sets, 2) ? setExports.intersection(...sets) : sets[0];
|
|
462
|
+
if (other.size === 0) {
|
|
463
|
+
return result;
|
|
464
|
+
}
|
|
465
|
+
for (const value of first) {
|
|
466
|
+
if (other.has(value)) {
|
|
467
|
+
result.add(value);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return result;
|
|
471
|
+
}
|
|
472
|
+
function difference(a, b) {
|
|
473
|
+
if (a.size === 0) {
|
|
474
|
+
return /* @__PURE__ */ new Set();
|
|
475
|
+
}
|
|
476
|
+
if (b.size === 0) {
|
|
477
|
+
return new Set(a);
|
|
478
|
+
}
|
|
479
|
+
let result = /* @__PURE__ */ new Set();
|
|
480
|
+
for (const value of a) {
|
|
481
|
+
if (!b.has(value)) {
|
|
482
|
+
result.add(value);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
return result;
|
|
486
|
+
}
|
|
487
|
+
function equals(a, b) {
|
|
488
|
+
return a.size === b.size && [...a].every((value) => b.has(value));
|
|
489
|
+
}
|
|
490
|
+
function symmetricDifference(a, b) {
|
|
491
|
+
return setExports.symmetricDifference(a, b);
|
|
492
|
+
}
|
|
493
|
+
function hasIntersection(a, b) {
|
|
494
|
+
if (a.size === 0 || b.size === 0) {
|
|
495
|
+
return false;
|
|
496
|
+
}
|
|
497
|
+
if (b.size < a.size) {
|
|
498
|
+
[a, b] = [b, a];
|
|
499
|
+
}
|
|
500
|
+
for (const value of a) {
|
|
501
|
+
if (b.has(value)) {
|
|
502
|
+
return true;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
return false;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
function stringHash(str) {
|
|
509
|
+
let hash = 5381;
|
|
510
|
+
const len = str.length;
|
|
511
|
+
invariant(len > 0, "stringHash: empty string");
|
|
512
|
+
for (let i = 0; i < len; i++) {
|
|
513
|
+
hash = hash * 33 ^ str.charCodeAt(i);
|
|
514
|
+
}
|
|
515
|
+
return (hash >>> 0).toString(36);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
export { intersection as a, isome as b, ifind as c, difference as d, ihead as e, memoizeProp as f, getOrCreate as g, hasIntersection as h, i, equals as j, stringHash as k, m, symmetricDifference as s, union as u };
|