@likec4/core 1.18.0 → 1.19.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 (176) 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.-BdzdI2C.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 +404 -0
  30. package/dist/utils/index.d.ts +404 -0
  31. package/dist/utils/index.js +330 -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 +74 -9
  148. package/src/utils/iterable/_types.ts +5 -0
  149. package/src/utils/iterable/filter.ts +55 -0
  150. package/src/utils/iterable/flat.ts +17 -0
  151. package/src/utils/iterable/index.ts +12 -0
  152. package/src/utils/iterable/map.ts +40 -0
  153. package/src/utils/iterable/reduce.ts +24 -0
  154. package/src/utils/iterable/some.ts +36 -0
  155. package/src/utils/iterable/to.ts +19 -0
  156. package/src/utils/iterable/unique.ts +29 -0
  157. package/src/utils/relations.ts +3 -64
  158. package/src/utils/set.ts +11 -9
  159. package/src/utils/string-hash.ts +1 -1
  160. package/dist/compute-view/index.mjs +0 -79
  161. package/dist/model/index.mjs +0 -2
  162. package/dist/shared/core.BBgiAAv1.mjs +0 -144
  163. package/dist/shared/core.BPyJvuMU.mjs +0 -2420
  164. package/dist/shared/core.BQ4AbfvB.mjs +0 -9228
  165. package/dist/shared/core.k12s_keD.mjs +0 -203
  166. package/dist/types/index.mjs +0 -21
  167. package/src/builder/Builder.test-d.ts +0 -124
  168. package/src/builder/Builder.view.ts +0 -543
  169. package/src/compute-view/LikeC4ModelGraph.ts +0 -330
  170. package/src/compute-view/deployment-view/Memory.ts +0 -108
  171. package/src/compute-view/deployment-view/Stage.ts +0 -145
  172. package/src/compute-view/deployment-view/predicates/deployment-ref.ts +0 -146
  173. package/src/compute-view/element-view/predicates.ts +0 -517
  174. package/src/compute-view/utils/sortNodes.ts +0 -101
  175. package/src/model/connection/ConnectionModel.ts +0 -94
  176. package/src/model/connection/DeploymentConnectionModel.ts +0 -99
@@ -0,0 +1,404 @@
1
+ export { I as IterableContainer, R as ReorderedArray, a as ancestorsFqn, c as commonAncestor, b as compareByFqnHierarchically, d as compareFqnHierarchically, h as hierarchyDistance, e as hierarchyLevel, i as isAncestor, f as isDescendantOf, g as isSameHierarchy, n as nameFromFqn, p as parentFqn, s as sortByFqnHierarchically, j as sortNaturalByFqn, k as sortParentsFirst } from '../shared/core.D6-fWbM3.js';
2
+ import { N as NonEmptyArray, a as IteratorLike } from '../shared/core.D74xkKkG.js';
3
+ import { IsNumericLiteral } from 'type-fest';
4
+
5
+ /**
6
+ * Mnemonist DefaultMap Typings
7
+ * =============================
8
+ */
9
+ declare class DefaultMap<K, V> implements Iterable<[K, V]> {
10
+
11
+ // Members
12
+ size: number;
13
+
14
+ // Constructor
15
+ constructor(factory: (key: K, index: number) => V);
16
+
17
+ // Methods
18
+ clear(): void;
19
+ set(key: K, value: V): this;
20
+ delete(key: K): boolean;
21
+ has(key: K): boolean;
22
+ get(key: K): V;
23
+ peek(key: K): V | undefined;
24
+ forEach(callback: (value: V, key: K, map: this) => void, scope?: any): void;
25
+ keys(): IterableIterator<K>;
26
+ values(): IterableIterator<V>;
27
+ entries(): IterableIterator<[K, V]>;
28
+ [Symbol.iterator](): IterableIterator<[K, V]>;
29
+ inspect(): any;
30
+
31
+ // Statics
32
+ static autoIncrement(): number;
33
+ }
34
+
35
+ /**
36
+ * Mnemonist LinkedList Typings
37
+ * =============================
38
+ */
39
+ declare class LinkedList<T> implements Iterable<T> {
40
+
41
+ // Members
42
+ size: number;
43
+
44
+ // Constructor
45
+ constructor();
46
+
47
+ // Methods
48
+ clear(): void;
49
+ first(): T | undefined;
50
+ last(): T | undefined;
51
+ peek(): T | undefined;
52
+ push(value: T): number;
53
+ shift(): T | undefined;
54
+ unshift(value: T): number;
55
+ forEach(callback: (value: T, index: number, list: this) => void, scope?: any): void;
56
+ toArray(): Array<T>;
57
+ values(): IterableIterator<T>;
58
+ entries(): IterableIterator<[number, T]>;
59
+ [Symbol.iterator](): IterableIterator<T>;
60
+ toString(): string;
61
+ toJSON(): Array<T>;
62
+ inspect(): any;
63
+
64
+ // Statics
65
+ static from<I>(iterable: Iterable<I> | {[key: string]: I}): LinkedList<I>;
66
+ }
67
+
68
+ /**
69
+ * Common head of two arrays
70
+ *
71
+ * @param equals - Equality function, defaults to `Object.is`
72
+ */
73
+ declare function commonHead<T>(sources: ReadonlyArray<T>, targets: ReadonlyArray<T>, equals?: (a: T, b: T) => boolean): T[];
74
+
75
+ declare function compareNatural(a: string | undefined, b: string | undefined): -1 | 0 | 1;
76
+
77
+ declare function getOrCreate<K, V>(map: Map<K, V>, key: K, create: (key: K) => V): V;
78
+
79
+ /**
80
+ * This should only be used for defining generics which extend any kind of JS
81
+ * array under the hood, this includes arrays *AND* tuples (of the form [x, y],
82
+ * and of the form [x, ...y[]], etc...), and their readonly equivalent. This
83
+ * allows us to be more inclusive to what functions can process.
84
+ *
85
+ * @example
86
+ * function map<T extends IterableContainer>(items: T) { ... }
87
+ *
88
+ * We would've named this `ArrayLike`, but that's already used by typescript...
89
+ * @see This was inspired by the type-definition of Promise.all (https://github.com/microsoft/TypeScript/blob/1df5717b120cddd325deab8b0f2b2c3eecaf2b01/src/lib/es2015.promise.d.ts#L21)
90
+ */
91
+ type IterableContainer<T = unknown> = ReadonlyArray<T> | readonly [];
92
+
93
+ type ArraySetRequired<T extends IterableContainer, Min extends number, Iteration extends ReadonlyArray<unknown> = []> = number extends Min ? never : Iteration["length"] extends Min ? T : T extends readonly [] ? never : T extends [infer Head, ...infer Rest] ? [
94
+ Head,
95
+ ...ArraySetRequired<Rest, Min, [unknown, ...Iteration]>
96
+ ] : T extends readonly [infer Head, ...infer Rest] ? readonly [
97
+ Head,
98
+ ...ArraySetRequired<Rest, Min, [unknown, ...Iteration]>
99
+ ] : T extends Array<infer Item> ? [
100
+ Item,
101
+ ...ArraySetRequired<T, Min, [unknown, ...Iteration]>
102
+ ] : T extends ReadonlyArray<infer Item> ? readonly [
103
+ Item,
104
+ ...ArraySetRequired<T, Min, [unknown, ...Iteration]>
105
+ ] : never;
106
+ /**
107
+ * Checks if the given array has at least the defined number of elements. When
108
+ * the minimum used is a literal (e.g. `3`) the output is refined accordingly so
109
+ * that those indices are defined when accessing the array even when using
110
+ * typescript's 'noUncheckedIndexAccess'.
111
+ *
112
+ * @param data - The input array.
113
+ * @param minimum - The minimum number of elements the array must have.
114
+ * @returns True if the array's length is *at least* `minimum`. When `minimum`
115
+ * is a literal value, the output is narrowed to ensure the first items are
116
+ * guaranteed.
117
+ * @signature
118
+ * R.hasAtLeast(data, minimum)
119
+ * @example
120
+ * R.hasAtLeast([], 4); // => false
121
+ *
122
+ * const data: number[] = [1,2,3,4];
123
+ * R.hasAtLeast(data, 1); // => true
124
+ * data[0]; // 1, with type `number`
125
+ * @dataFirst
126
+ * @category Array
127
+ */
128
+ declare function hasAtLeast<T extends IterableContainer, N extends number>(data: IterableContainer | T, minimum: IsNumericLiteral<N> extends true ? N : never): data is ArraySetRequired<T, N>;
129
+ declare function hasAtLeast(data: IterableContainer, minimum: number): boolean;
130
+ /**
131
+ * Checks if the given array has at least the defined number of elements. When
132
+ * the minimum used is a literal (e.g. `3`) the output is refined accordingly so
133
+ * that those indices are defined when accessing the array even when using
134
+ * typescript's 'noUncheckedIndexAccess'.
135
+ *
136
+ * @param minimum - The minimum number of elements the array must have.
137
+ * @returns True if the array's length is *at least* `minimum`. When `minimum`
138
+ * is a literal value, the output is narrowed to ensure the first items are
139
+ * guaranteed.
140
+ * @signature
141
+ * R.hasAtLeast(minimum)(data)
142
+ * @example
143
+ * R.pipe([], R.hasAtLeast(4)); // => false
144
+ *
145
+ * const data = [[1,2], [3], [4,5]];
146
+ * R.pipe(
147
+ * data,
148
+ * R.filter(R.hasAtLeast(2)),
149
+ * R.map(([, second]) => second),
150
+ * ); // => [2,5], with type `number[]`
151
+ * @dataLast
152
+ * @category Array
153
+ */
154
+ declare function hasAtLeast<N extends number>(minimum: IsNumericLiteral<N> extends true ? N : never): <T extends IterableContainer>(data: IterableContainer | T) => data is ArraySetRequired<T, N>;
155
+ declare function hasAtLeast(minimum: number): (data: IterableContainer) => boolean;
156
+
157
+ declare function isString(value: unknown): value is string;
158
+ declare function isNonEmptyArray<A>(arr: ArrayLike<A> | undefined): arr is NonEmptyArray<A>;
159
+
160
+ declare function isIterable<T, I extends Iterable<T>>(something: I | unknown): something is Iterable<T>;
161
+
162
+ /**
163
+ * Filters an iterable based on a predicate.
164
+ * Composabel first version of `ifilter`.
165
+ * @signature
166
+ * ifilter(predicate)(data)
167
+ */
168
+ declare function ifilter<T, S extends T>(predicate: (v: T) => v is S): (iterable: Iterable<T>) => IteratorLike<S>;
169
+ declare function ifilter<T>(predicate: (v: T) => boolean): (iterable: Iterable<T>) => IteratorLike<T>;
170
+ /**
171
+ * Filters an iterable based on a predicate.
172
+ * Data first version of `ifilter`.
173
+ * @signature
174
+ * ifilter(data, predicate)
175
+ * @example
176
+ * ifilter(new Set([1, 2, 3]), x => x % 2 === 1) // => Iterable<[1, 3]>
177
+ */
178
+ declare function ifilter<T, S extends T>(iterable: Iterable<T>, predicate: (v: T) => v is S): IteratorLike<S>;
179
+ declare function ifilter<T>(iterable: Iterable<T>, predicate: (v: T) => boolean): IteratorLike<T>;
180
+
181
+ declare function iflat(): <T>(iterable: Iterable<IteratorLike<T>>) => IteratorLike<T>;
182
+ declare function iflat<T>(iterable: Iterable<IteratorLike<T>>): IteratorLike<T>;
183
+
184
+ type MapFunction<T, S> = (item: T) => S;
185
+ /**
186
+ * Maps an iterable using a mapper function.
187
+ * Composable first version of `imap`.
188
+ * @signature
189
+ * imap(mapper)(data)
190
+ */
191
+ declare function imap<T, S>(mapper: MapFunction<T, S>): (iterable: Iterable<T>) => IteratorLike<S>;
192
+ /**
193
+ * Maps an iterable using a mapper function.
194
+ * Data first version of `imap`.
195
+ * @signature
196
+ * imap(data, mapper)
197
+ */
198
+ declare function imap<T, S>(iterable: Iterable<T>, mapper: MapFunction<T, S>): IteratorLike<S>;
199
+
200
+ declare function ireduce<T, R>(reducer: (acc: R, item: T) => R, initialValue: R): (iterable: Iterable<T>) => R;
201
+ declare function ireduce<T, R>(iterable: Iterable<T>, reducer: (acc: R, item: T) => R, initialValue: R): R;
202
+
203
+ /**
204
+ * Checks if at least one element in the iterable satisfies the predicate.
205
+ * Composable first version of `some`.
206
+ * @signature
207
+ * isome(predicate)(data)
208
+ */
209
+ declare function isome<T>(predicate: (item: T) => boolean): (iterable: Iterable<T>) => boolean;
210
+ /**
211
+ * Checks if at least one element in the iterable satisfies the predicate.
212
+ * Data first version of `some`.
213
+ * @signature
214
+ * isome(data, predicate)
215
+ */
216
+ declare function isome<T>(iterable: Iterable<T>, predicate: (item: T) => boolean): boolean;
217
+
218
+ declare function toArray(): <T>(iterable: Iterable<T> | ArrayLike<T>) => T[];
219
+ declare function toArray<T>(iterable: Iterable<T> | ArrayLike<T>): T[];
220
+ declare function toSet(): <T>(iterable: Iterable<T>) => Set<T>;
221
+ declare function toSet<T>(iterable: Iterable<T>): Set<T>;
222
+
223
+ /**
224
+ * Returns an iterable that yields only unique values.
225
+ * It uses a Set to keep track of the values.
226
+ */
227
+ declare function iunique(): <T>(iterable: Iterable<T>) => IteratorLike<T>;
228
+ declare function iunique<T>(iterable: Iterable<T>): IteratorLike<T>;
229
+
230
+ declare function delay(): Promise<string>;
231
+ declare function delay(ms: number): Promise<string>;
232
+ declare function delay(randomFrom: number, randomTo: number): Promise<string>;
233
+
234
+ /**
235
+ * Compares two relations hierarchically.
236
+ * From the most general (implicit) to the most specific.
237
+ */
238
+ declare const compareRelations: <T extends {
239
+ source: string;
240
+ target: string;
241
+ }>(a: T, b: T) => number;
242
+
243
+ /**
244
+ * Returns new set as a union of given sets
245
+ * Keeps order of elements
246
+ */
247
+ declare function union<T>(...sets: ReadonlySet<T>[]): Set<T>;
248
+ /**
249
+ * Returns new set as an intersection of all sets
250
+ * Keeps order from the first set
251
+ */
252
+ declare function intersection<T>(first: ReadonlySet<T>, ...sets: NonEmptyArray<ReadonlySet<NoInfer<T>>>): Set<T>;
253
+ declare function difference<T>(a: ReadonlySet<T>, b: ReadonlySet<NoInfer<T>>): Set<T>;
254
+ declare function equals<T>(a: ReadonlySet<T>, b: ReadonlySet<T>): boolean;
255
+ declare function symmetricDifference<T>(a: ReadonlySet<T>, b: ReadonlySet<T>): Set<T>;
256
+
257
+ /**
258
+ * @see https://gist.github.com/victor-homyakov/bcb7d7911e4a388b1c810f8c3ce17bcf
259
+ */
260
+ declare function stringHash(str: string): string;
261
+
262
+ declare namespace objectHash {
263
+ type NotUndefined = object | string | number | boolean | null | NotUndefined[];
264
+
265
+ /**
266
+ * @see https://github.com/puleos/object-hash#hashsha1value
267
+ */
268
+ function sha1(object: NotUndefined): string;
269
+ /**
270
+ * @see https://github.com/puleos/object-hash#hashkeysvalue
271
+ */
272
+ function keys(object: NotUndefined): string;
273
+ /**
274
+ * @see https://github.com/puleos/object-hash#hashmd5value
275
+ */
276
+ function MD5(object: NotUndefined): string;
277
+ /**
278
+ * @see https://github.com/puleos/object-hash#hashkeysmd5value
279
+ */
280
+ function keysMD5(object: NotUndefined): string;
281
+ /**
282
+ * @see https://github.com/puleos/object-hash#hashwritetostreamvalue-options-stream
283
+ */
284
+ function writeToStream(value: any, stream: Stream): void;
285
+ function writeToStream(value: any, options: Options, stream: Stream): void;
286
+
287
+ type BufferEncoding =
288
+ | "ascii"
289
+ | "base64"
290
+ | "binary"
291
+ | "hex"
292
+ | "latin1"
293
+ | "ucs-2"
294
+ | "ucs2"
295
+ | "utf-8"
296
+ | "utf16le"
297
+ | "utf8";
298
+
299
+ interface Stream {
300
+ update?(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
301
+ write?(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
302
+ }
303
+
304
+ type HashName =
305
+ | "md4"
306
+ | "md4WithRSAEncryption"
307
+ | "md5"
308
+ | "md5WithRSAEncryption"
309
+ | "ripemd"
310
+ | "ripemd160"
311
+ | "ripemd160WithRSA"
312
+ | "rmd160"
313
+ | "rsa-md4"
314
+ | "rsa-md5"
315
+ | "rsa-ripemd160"
316
+ | "rsa-sha1"
317
+ | "rsa-sha1-2"
318
+ | "rsa-sha224"
319
+ | "rsa-sha256"
320
+ | "rsa-sha3-224"
321
+ | "rsa-sha3-256"
322
+ | "rsa-sha3-384"
323
+ | "rsa-sha3-512"
324
+ | "rsa-sha384"
325
+ | "rsa-sha512"
326
+ | "sha1"
327
+ | "sha1WithRSAEncryption"
328
+ | "sha224"
329
+ | "sha224WithRSAEncryption"
330
+ | "sha256"
331
+ | "sha256WithRSAEncryption"
332
+ | "sha3-224"
333
+ | "sha3-256"
334
+ | "sha3-384"
335
+ | "sha3-512"
336
+ | "sha384"
337
+ | "sha384WithRSAEncryption"
338
+ | "sha512"
339
+ | "sha512WithRSAEncryption";
340
+
341
+ interface BaseOptions {
342
+ /**
343
+ * @default 'sha1'
344
+ */
345
+ algorithm?: HashName | "passthrough" | undefined;
346
+
347
+ excludeKeys?: ((key: string) => boolean) | undefined;
348
+ /**
349
+ * @default false
350
+ */
351
+ excludeValues?: boolean | undefined;
352
+ /**
353
+ * @default false
354
+ */
355
+ ignoreUnknown?: boolean | undefined;
356
+
357
+ replacer?: ((value: any) => any) | undefined;
358
+ /**
359
+ * @default true
360
+ */
361
+ respectFunctionNames?: boolean | undefined;
362
+ /**
363
+ * @default true
364
+ */
365
+ respectFunctionProperties?: boolean | undefined;
366
+ /**
367
+ * @default true
368
+ */
369
+ respectType?: boolean | undefined;
370
+ /**
371
+ * @default false
372
+ */
373
+ unorderedArrays?: boolean | undefined;
374
+ /**
375
+ * @default true
376
+ */
377
+ unorderedObjects?: boolean | undefined;
378
+ /**
379
+ * @default true
380
+ */
381
+ unorderedSets?: boolean | undefined;
382
+ }
383
+
384
+ interface NormalOption extends BaseOptions {
385
+ /**
386
+ * @default 'hex'
387
+ */
388
+ encoding?: "hex" | "binary" | "base64" | undefined;
389
+ }
390
+
391
+ interface WithBufferOption extends BaseOptions {
392
+ encoding: "buffer";
393
+ }
394
+
395
+ type Options = NormalOption | WithBufferOption;
396
+ }
397
+
398
+ /**
399
+ * @see https://github.com/puleos/object-hash#hashvalue-options
400
+ */
401
+ declare function objectHash(object: objectHash.NotUndefined, options?: objectHash.NormalOption): string;
402
+ declare function objectHash(object: objectHash.NotUndefined, options?: objectHash.WithBufferOption): Buffer;
403
+
404
+ export { DefaultMap, LinkedList, commonHead, compareNatural, compareRelations, delay, difference, equals as equalsSet, getOrCreate, hasAtLeast, ifilter, iflat, imap, intersection, ireduce, isIterable, isNonEmptyArray, isString, isome, iunique, objectHash, stringHash, symmetricDifference, toArray, toSet, union };