@rimbu/common 2.0.0 → 2.0.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 (53) hide show
  1. package/dist/cjs/async-optlazy.cjs +60 -42
  2. package/dist/cjs/async-optlazy.cjs.map +1 -0
  3. package/dist/cjs/async-optlazy.d.cts +46 -0
  4. package/dist/cjs/collect.cjs +9 -31
  5. package/dist/cjs/collect.cjs.map +1 -0
  6. package/dist/cjs/collect.d.cts +29 -0
  7. package/dist/cjs/comp.cjs +518 -707
  8. package/dist/cjs/comp.cjs.map +1 -0
  9. package/dist/cjs/comp.d.cts +239 -0
  10. package/dist/cjs/eq.cjs +375 -203
  11. package/dist/cjs/eq.cjs.map +1 -0
  12. package/dist/cjs/err.cjs +57 -50
  13. package/dist/cjs/err.cjs.map +1 -0
  14. package/dist/cjs/index-range.cjs +105 -109
  15. package/dist/cjs/index-range.cjs.map +1 -0
  16. package/dist/cjs/index-range.d.cts +42 -0
  17. package/dist/cjs/index.cjs +9 -797
  18. package/dist/cjs/index.cjs.map +1 -0
  19. package/dist/cjs/index.d.cts +6 -0
  20. package/dist/cjs/internal.cjs +14 -797
  21. package/dist/cjs/internal.cjs.map +1 -0
  22. package/dist/cjs/internal.d.cts +11 -0
  23. package/dist/cjs/optlazy.cjs +44 -37
  24. package/dist/cjs/optlazy.cjs.map +1 -0
  25. package/dist/cjs/range.cjs +35 -49
  26. package/dist/cjs/range.cjs.map +1 -0
  27. package/dist/cjs/traverse-state.cjs +30 -46
  28. package/dist/cjs/traverse-state.cjs.map +1 -0
  29. package/dist/cjs/types.cjs +2 -17
  30. package/dist/cjs/types.cjs.map +1 -0
  31. package/dist/cjs/update.cjs +21 -32
  32. package/dist/cjs/update.cjs.map +1 -0
  33. package/dist/esm/eq.d.mts +196 -0
  34. package/dist/esm/err.d.mts +33 -0
  35. package/dist/esm/optlazy.d.mts +42 -0
  36. package/dist/esm/range.d.mts +35 -0
  37. package/dist/esm/traverse-state.d.mts +33 -0
  38. package/dist/esm/types.d.mts +31 -0
  39. package/dist/esm/update.d.mts +18 -0
  40. package/package.json +20 -13
  41. /package/dist/{types/eq.d.mts → cjs/eq.d.cts} +0 -0
  42. /package/dist/{types/err.d.mts → cjs/err.d.cts} +0 -0
  43. /package/dist/{types/optlazy.d.mts → cjs/optlazy.d.cts} +0 -0
  44. /package/dist/{types/range.d.mts → cjs/range.d.cts} +0 -0
  45. /package/dist/{types/traverse-state.d.mts → cjs/traverse-state.d.cts} +0 -0
  46. /package/dist/{types/types.d.mts → cjs/types.d.cts} +0 -0
  47. /package/dist/{types/update.d.mts → cjs/update.d.cts} +0 -0
  48. /package/dist/{types → esm}/async-optlazy.d.mts +0 -0
  49. /package/dist/{types → esm}/collect.d.mts +0 -0
  50. /package/dist/{types → esm}/comp.d.mts +0 -0
  51. /package/dist/{types → esm}/index-range.d.mts +0 -0
  52. /package/dist/{types → esm}/index.d.mts +0 -0
  53. /package/dist/{types → esm}/internal.d.mts +0 -0
package/dist/cjs/eq.cjs CHANGED
@@ -1,210 +1,382 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/eq.mts
21
- var eq_exports = {};
22
- __export(eq_exports, {
23
- Eq: () => Eq
24
- });
25
- module.exports = __toCommonJS(eq_exports);
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Eq = void 0;
4
+ var tslib_1 = require("tslib");
26
5
  var Eq;
27
- ((Eq2) => {
28
- function convertAnyToString(value) {
29
- if (typeof value !== "object" || null === value || !("toString" in value) || typeof value.toString !== "function" || value.toString !== Object.prototype.toString) {
30
- return String(value);
31
- }
32
- return JSON.stringify(value);
33
- }
34
- Eq2.convertAnyToString = convertAnyToString;
35
- const _anyFlatEq = createAnyEq("FLAT");
36
- const _anyShallowEq = createAnyEq("SHALLOW");
37
- const _anyDeepEq = createAnyEq("DEEP");
38
- function defaultEq() {
39
- return _anyDeepEq;
40
- }
41
- Eq2.defaultEq = defaultEq;
42
- Eq2.objectIs = Object.is;
43
- const _valueOfEq = (v1, v2) => Object.is(v1.valueOf(), v2.valueOf());
44
- function valueOfEq() {
45
- return _valueOfEq;
46
- }
47
- Eq2.valueOfEq = valueOfEq;
48
- function dateEq() {
49
- return _valueOfEq;
50
- }
51
- Eq2.dateEq = dateEq;
52
- function createIterableEq(itemEq) {
53
- return (v1, v2) => {
54
- if (Object.is(v1, v2))
55
- return true;
56
- const iter1 = v1[Symbol.iterator]();
57
- const iter2 = v2[Symbol.iterator]();
58
- while (true) {
59
- const value1 = iter1.next();
60
- const value2 = iter2.next();
61
- if (value1.done || value2.done)
62
- return value1.done === value2.done;
63
- if (!itemEq(value1.value, value2.value))
64
- return false;
65
- }
66
- };
67
- }
68
- const _iterableAnyEq = createIterableEq(defaultEq());
69
- function iterableEq(itemEq) {
70
- if (void 0 === itemEq)
71
- return _iterableAnyEq;
72
- return createIterableEq(itemEq);
73
- }
74
- Eq2.iterableEq = iterableEq;
75
- function createObjectEq(valueEq) {
76
- return (v1, v2) => {
77
- if (Object.is(v1, v2))
78
- return true;
79
- if (v1.constructor !== v2.constructor)
80
- return false;
81
- for (const key in v1) {
82
- if (!(key in v2))
83
- return false;
84
- }
85
- for (const key in v2) {
86
- if (!(key in v1))
87
- return false;
88
- }
89
- for (const key in v1) {
90
- const value1 = v1[key];
91
- const value2 = v2[key];
92
- if (!valueEq(value1, value2))
93
- return false;
94
- }
95
- return true;
6
+ (function (Eq) {
7
+ function convertAnyToString(value) {
8
+ if (typeof value !== 'object' ||
9
+ null === value ||
10
+ !('toString' in value) ||
11
+ typeof value.toString !== 'function' ||
12
+ value.toString !== Object.prototype.toString) {
13
+ return String(value);
14
+ }
15
+ return JSON.stringify(value);
16
+ }
17
+ Eq.convertAnyToString = convertAnyToString;
18
+ var _anyFlatEq = createAnyEq('FLAT');
19
+ var _anyShallowEq = createAnyEq('SHALLOW');
20
+ var _anyDeepEq = createAnyEq('DEEP');
21
+ /**
22
+ * Returns the default Eq instance, which is the Eq.anyDeepEq() instance.
23
+ */
24
+ function defaultEq() {
25
+ return _anyDeepEq;
26
+ }
27
+ Eq.defaultEq = defaultEq;
28
+ /**
29
+ * An Eq instance that uses `Object.is` to determine if two objects are equal.
30
+ * @example
31
+ * ```ts
32
+ * const eq = Eq.objectIs
33
+ * console.log(eq(5, 5))
34
+ * // => true
35
+ * console.log(eq(5, 'a'))
36
+ * // => false
37
+ * ```
38
+ */
39
+ Eq.objectIs = Object.is;
40
+ var _valueOfEq = function (v1, v2) {
41
+ return Object.is(v1.valueOf(), v2.valueOf());
96
42
  };
97
- }
98
- const _objectEq = createObjectEq(defaultEq());
99
- function objectEq(valueEq) {
100
- if (void 0 === valueEq)
101
- return _objectEq;
102
- return createObjectEq(valueEq);
103
- }
104
- Eq2.objectEq = objectEq;
105
- function createAnyEq(mode) {
106
- const result = (v1, v2) => {
107
- if (Object.is(v1, v2))
108
- return true;
109
- const type1 = typeof v1;
110
- const type2 = typeof v2;
111
- if (type1 !== type2)
112
- return false;
113
- switch (type1) {
114
- case "undefined":
115
- case "bigint":
116
- case "boolean":
117
- case "number":
118
- case "string":
119
- case "symbol":
120
- case "function":
121
- return Object.is(v1, v2);
122
- case "object": {
123
- if (v1 === null || v2 === null)
124
- return false;
125
- if (v1.constructor !== v2.constructor) {
126
- return false;
127
- }
128
- if (v1 instanceof Boolean || v1 instanceof Date || v1 instanceof Number || v1 instanceof String) {
129
- return _valueOfEq(v1, v2);
130
- }
131
- if (mode !== "FLAT") {
132
- if (Symbol.iterator in v1 && Symbol.iterator in v2) {
133
- if (mode === "SHALLOW") {
134
- return createIterableEq(_anyFlatEq)(v1, v2);
135
- }
136
- return createIterableEq(result)(v1, v2);
43
+ /**
44
+ * Returns an Eq instance for objects that have a `valueOf` method. It returns true if the `.valueOf` values of both given objects are equal.
45
+ * @typeparam T - the object type containing a valueOf function of type V
46
+ * @typeparam V - the valueOf result type
47
+ * @example
48
+ * ```ts
49
+ * const eq = Eq.valueOfEq()
50
+ * console.log(eq(new Number(5), new Number(5)))
51
+ * // => true
52
+ * console.log(eq(new Number(5), new Number(3)))
53
+ * // => false
54
+ * ```
55
+ */
56
+ function valueOfEq() {
57
+ return _valueOfEq;
58
+ }
59
+ Eq.valueOfEq = valueOfEq;
60
+ /**
61
+ * Returns an Eq instance that compares Date objects according to their `valueOf` value.
62
+ * @example
63
+ * ```ts
64
+ * const eq = Eq.dateEq()
65
+ * console.log(eq(new Date(2020, 1, 1), new Date(2020, 1, 1))
66
+ * // => true
67
+ * console.log(eq(new Date(2020, 1, 1), new Date(2020, 2, 1))
68
+ * // => false
69
+ * ```
70
+ */
71
+ function dateEq() {
72
+ return _valueOfEq;
73
+ }
74
+ Eq.dateEq = dateEq;
75
+ function createIterableEq(itemEq) {
76
+ return function (v1, v2) {
77
+ if (Object.is(v1, v2))
78
+ return true;
79
+ var iter1 = v1[Symbol.iterator]();
80
+ var iter2 = v2[Symbol.iterator]();
81
+ while (true) {
82
+ var value1 = iter1.next();
83
+ var value2 = iter2.next();
84
+ if (value1.done || value2.done)
85
+ return value1.done === value2.done;
86
+ if (!itemEq(value1.value, value2.value))
87
+ return false;
88
+ }
89
+ };
90
+ }
91
+ var _iterableAnyEq = createIterableEq(defaultEq());
92
+ /**
93
+ * Returns an Eq instance that compares Iterables by comparing their elements with the given `itemEq` Eq instance.
94
+ * @typeparam T - the Iterable element type
95
+ * @param itemEq - (optional) the Eq instance to use to compare the Iterable's elements
96
+ * @example
97
+ * ```ts
98
+ * const eq = Eq.iterableEq();
99
+ * console.log(eq([1, 2, 3], [1, 2, 3])
100
+ * // => true
101
+ * console.log(eq([1, 2, 3], [1, 3, 2])
102
+ * // => false
103
+ * ```
104
+ */
105
+ function iterableEq(itemEq) {
106
+ if (undefined === itemEq)
107
+ return _iterableAnyEq;
108
+ return createIterableEq(itemEq);
109
+ }
110
+ Eq.iterableEq = iterableEq;
111
+ function createObjectEq(valueEq) {
112
+ return function (v1, v2) {
113
+ if (Object.is(v1, v2))
114
+ return true;
115
+ if (v1.constructor !== v2.constructor)
116
+ return false;
117
+ for (var key in v1) {
118
+ if (!(key in v2))
119
+ return false;
120
+ }
121
+ for (var key in v2) {
122
+ if (!(key in v1))
123
+ return false;
137
124
  }
138
- if (mode === "SHALLOW") {
139
- return createObjectEq(_anyFlatEq)(v1, v2);
125
+ for (var key in v1) {
126
+ var value1 = v1[key];
127
+ var value2 = v2[key];
128
+ if (!valueEq(value1, value2))
129
+ return false;
130
+ }
131
+ return true;
132
+ };
133
+ }
134
+ var _objectEq = createObjectEq(defaultEq());
135
+ /**
136
+ * Returns an Eq instance that checks equality of objects containing property values of type V by iteratively
137
+ * applying given `valueEq` to each of the object's property values.
138
+ * @typeparam - the object property value type
139
+ * @param valueEq - (optional) the Eq instance to use to compare property values
140
+ * @example
141
+ * ```ts
142
+ * const eq = Eq.objectEq()
143
+ * console.log(eq({ a: 1, b: { c: 2 }}, { b: { c: 2 }, a: 1 }))
144
+ * // => true
145
+ * console.log(eq({ a: 1, b: { c: 2 }}, { a: 1, b: { c: 3 }}))
146
+ * // => false
147
+ * ```
148
+ */
149
+ function objectEq(valueEq) {
150
+ if (undefined === valueEq)
151
+ return _objectEq;
152
+ return createObjectEq(valueEq);
153
+ }
154
+ Eq.objectEq = objectEq;
155
+ function createAnyEq(mode) {
156
+ var result = function (v1, v2) {
157
+ if (Object.is(v1, v2))
158
+ return true;
159
+ var type1 = typeof v1;
160
+ var type2 = typeof v2;
161
+ if (type1 !== type2)
162
+ return false;
163
+ switch (type1) {
164
+ case 'undefined':
165
+ case 'bigint':
166
+ case 'boolean':
167
+ case 'number':
168
+ case 'string':
169
+ case 'symbol':
170
+ case 'function':
171
+ return Object.is(v1, v2);
172
+ case 'object': {
173
+ if (v1 === null || v2 === null)
174
+ return false;
175
+ if (v1.constructor !== v2.constructor) {
176
+ return false;
177
+ }
178
+ if (v1 instanceof Boolean ||
179
+ v1 instanceof Date ||
180
+ v1 instanceof Number ||
181
+ v1 instanceof String) {
182
+ return _valueOfEq(v1, v2);
183
+ }
184
+ if (mode !== 'FLAT') {
185
+ if (Symbol.iterator in v1 && Symbol.iterator in v2) {
186
+ if (mode === 'SHALLOW') {
187
+ return createIterableEq(_anyFlatEq)(v1, v2);
188
+ }
189
+ return createIterableEq(result)(v1, v2);
190
+ }
191
+ if (mode === 'SHALLOW') {
192
+ return createObjectEq(_anyFlatEq)(v1, v2);
193
+ }
194
+ return _objectEq(v1, v2);
195
+ }
196
+ // cannot establish that they are equal in flat mode
197
+ return false;
198
+ }
140
199
  }
141
- return _objectEq(v1, v2);
142
- }
143
- return false;
200
+ };
201
+ return result;
202
+ }
203
+ /**
204
+ * Returns an Eq instance that checks equality of any values. For composed values (objects and iterables)
205
+ * it will compare with Object.is.
206
+ * @typeparam T - the value type
207
+ * @example
208
+ * ```ts
209
+ * const eq = anyFlatEq()
210
+ * console.log(eq(1, 'a'))
211
+ * // => false
212
+ * console.log(eq({ a: 1, b: 2 }, { b: 2, a: 1 }))
213
+ * // => false
214
+ * ```
215
+ */
216
+ function anyFlatEq() {
217
+ return _anyFlatEq;
218
+ }
219
+ Eq.anyFlatEq = anyFlatEq;
220
+ /**
221
+ * Returns an Eq instance that checks equality of any values. For composed values (objects and iterables)
222
+ * it will enter 1 level, and if again compound values are found, they are compared
223
+ * with Object.is.
224
+ * @typeparam T - the value type
225
+ * @example
226
+ * ```ts
227
+ * const eq = anyFlatEq()
228
+ * console.log(eq(1, 'a'))
229
+ * // => false
230
+ * console.log(eq({ a: 1, b: 2 }, { b: 2, a: 1 }))
231
+ * // => true
232
+ * console.log(eq([{ a: 1, b: 2 }], [{ b: 2, a: 1 }]))
233
+ * // => false
234
+ * ```
235
+ */
236
+ function anyShallowEq() {
237
+ return _anyShallowEq;
238
+ }
239
+ Eq.anyShallowEq = anyShallowEq;
240
+ /**
241
+ * Returns an Eq instance that checks equality of any values. For composed values (objects and iterables)
242
+ * it will recursively compare the contained values.
243
+ * @note may have poor performance for deeply nested types and large arrays, and objects with circular structures
244
+ * may cause infinite loops
245
+ * @typeparam T - the value type
246
+ * @example
247
+ * ```ts
248
+ * const eq = anyFlatEq()
249
+ * console.log(eq(1, 'a'))
250
+ * // => false
251
+ * console.log(eq({ a: 1, b: 2 }, { b: 2, a: 1 }))
252
+ * // => true
253
+ * console.log(eq([{ a: 1, b: 2 }], [{ b: 2, a: 1 }]))
254
+ * // => false
255
+ * ```
256
+ */
257
+ function anyDeepEq() {
258
+ return _anyDeepEq;
259
+ }
260
+ Eq.anyDeepEq = anyDeepEq;
261
+ var _defaultCollator = Intl.Collator('und');
262
+ var _defaultStringCollatorEq = function (v1, v2) {
263
+ return _defaultCollator.compare(v1, v2) === 0;
264
+ };
265
+ /**
266
+ * Returns an Eq instance that considers strings equal taking the given or default locale into account.
267
+ * @param locales - (optional) a locale or list of locales
268
+ * @param options - (optional) see String.localeCompare for details
269
+ * @example
270
+ * ```ts
271
+ * const eq = Eq.createStringCollatorEq()
272
+ * console.log(eq('a', 'a'))
273
+ * // => true
274
+ * console.log(eq('abc', 'aBc'))
275
+ * // => false
276
+ * ```
277
+ */
278
+ function createStringCollatorEq() {
279
+ var args = [];
280
+ for (var _i = 0; _i < arguments.length; _i++) {
281
+ args[_i] = arguments[_i];
144
282
  }
145
- }
283
+ if (args.length === 0)
284
+ return _defaultStringCollatorEq;
285
+ var collator = Intl.Collator.apply(Intl, tslib_1.__spreadArray([], tslib_1.__read(args), false));
286
+ return function (v1, v2) { return collator.compare(v1, v2) === 0; };
287
+ }
288
+ Eq.createStringCollatorEq = createStringCollatorEq;
289
+ var _stringCaseInsensitiveEq = createStringCollatorEq('und', {
290
+ sensitivity: 'accent',
291
+ });
292
+ /**
293
+ * Returns an Eq instance that considers strings equal regardless of their case.
294
+ * @example
295
+ * ```ts
296
+ * const eq = Eq.stringCaseInsentitiveEq()
297
+ * console.log(eq('aB', 'Ab'))
298
+ * // => true
299
+ * console.log(eq('aBc', 'abB'))
300
+ * // => false
301
+ * ```
302
+ */
303
+ function stringCaseInsentitiveEq() {
304
+ return _stringCaseInsensitiveEq;
305
+ }
306
+ Eq.stringCaseInsentitiveEq = stringCaseInsentitiveEq;
307
+ var _stringCharCodeEq = function (v1, v2) {
308
+ var len = v1.length;
309
+ if (len !== v2.length)
310
+ return false;
311
+ var i = -1;
312
+ while (++i < len) {
313
+ if (v1.charCodeAt(i) !== v2.charCodeAt(i))
314
+ return false;
315
+ }
316
+ return true;
317
+ };
318
+ /**
319
+ * Returns an Eq instance that considers strings equal when all their charcodes are equal.
320
+ * @example
321
+ * ```ts
322
+ * const eq = Eq.stringCharCodeEq()
323
+ * console.log(eq('a', 'a'))
324
+ * // => true
325
+ * console.log(eq('abc', 'aBc'))
326
+ * // => false
327
+ * ```
328
+ */
329
+ function stringCharCodeEq() {
330
+ return _stringCharCodeEq;
331
+ }
332
+ Eq.stringCharCodeEq = stringCharCodeEq;
333
+ var _anyToStringEq = function (v1, v2) {
334
+ return convertAnyToString(v1) === convertAnyToString(v2);
146
335
  };
147
- return result;
148
- }
149
- function anyFlatEq() {
150
- return _anyFlatEq;
151
- }
152
- Eq2.anyFlatEq = anyFlatEq;
153
- function anyShallowEq() {
154
- return _anyShallowEq;
155
- }
156
- Eq2.anyShallowEq = anyShallowEq;
157
- function anyDeepEq() {
158
- return _anyDeepEq;
159
- }
160
- Eq2.anyDeepEq = anyDeepEq;
161
- const _defaultCollator = Intl.Collator("und");
162
- const _defaultStringCollatorEq = (v1, v2) => _defaultCollator.compare(v1, v2) === 0;
163
- function createStringCollatorEq(...args) {
164
- if (args.length === 0)
165
- return _defaultStringCollatorEq;
166
- const collator = Intl.Collator(...args);
167
- return (v1, v2) => collator.compare(v1, v2) === 0;
168
- }
169
- Eq2.createStringCollatorEq = createStringCollatorEq;
170
- const _stringCaseInsensitiveEq = createStringCollatorEq("und", {
171
- sensitivity: "accent"
172
- });
173
- function stringCaseInsentitiveEq() {
174
- return _stringCaseInsensitiveEq;
175
- }
176
- Eq2.stringCaseInsentitiveEq = stringCaseInsentitiveEq;
177
- const _stringCharCodeEq = (v1, v2) => {
178
- const len = v1.length;
179
- if (len !== v2.length)
180
- return false;
181
- let i = -1;
182
- while (++i < len) {
183
- if (v1.charCodeAt(i) !== v2.charCodeAt(i))
184
- return false;
185
- }
186
- return true;
187
- };
188
- function stringCharCodeEq() {
189
- return _stringCharCodeEq;
190
- }
191
- Eq2.stringCharCodeEq = stringCharCodeEq;
192
- const _anyToStringEq = (v1, v2) => convertAnyToString(v1) === convertAnyToString(v2);
193
- function anyToStringEq() {
194
- return _anyToStringEq;
195
- }
196
- Eq2.anyToStringEq = anyToStringEq;
197
- const _anyJsonEq = (v1, v2) => JSON.stringify(v1) === JSON.stringify(v2);
198
- function anyJsonEq() {
199
- return _anyJsonEq;
200
- }
201
- Eq2.anyJsonEq = anyJsonEq;
202
- function tupleSymmetric(eq = defaultEq()) {
203
- return (tup1, tup2) => eq(tup1[0], tup2[0]) && eq(tup1[1], tup2[1]) || eq(tup1[0], tup2[1]) && eq(tup1[1], tup2[0]);
204
- }
205
- Eq2.tupleSymmetric = tupleSymmetric;
206
- })(Eq || (Eq = {}));
207
- // Annotate the CommonJS export names for ESM import in node:
208
- 0 && (module.exports = {
209
- Eq
210
- });
336
+ function anyToStringEq() {
337
+ return _anyToStringEq;
338
+ }
339
+ Eq.anyToStringEq = anyToStringEq;
340
+ var _anyJsonEq = function (v1, v2) {
341
+ return JSON.stringify(v1) === JSON.stringify(v2);
342
+ };
343
+ /**
344
+ * Returns an Eq instance that considers values equal their JSON.stringify values are equal.
345
+ * @example
346
+ * ```ts
347
+ * const eq = Eq.anyJsonEq()
348
+ * console.log(eq({ a: 1, b: 2 }, { a: 1, b: 2 }))
349
+ * // => true
350
+ * console.log(eq({ a: 1, b: 2 }, { b: 2, a: 1 }))
351
+ * // => false
352
+ * ```
353
+ */
354
+ function anyJsonEq() {
355
+ return _anyJsonEq;
356
+ }
357
+ Eq.anyJsonEq = anyJsonEq;
358
+ /**
359
+ * Returns an `Eq` instance for tuples that considers two tuples [A, B] and [C, D] equal if [A, B] equals [C, D],
360
+ * or if [A, B] equals [D, C]
361
+ * @param eq - (optional) an alternative `Eq` instance to use for the values in the tuple
362
+ * @example
363
+ * ```ts
364
+ * const eq = Eq.tupleSymmetric()
365
+ * console.log(eq([1, 2], [1, 2]))
366
+ * // => true
367
+ * console.log(eq([1, 2], [2, 1]))
368
+ * // => true
369
+ * console.log(eq([1, 3], [2, 1]))
370
+ * // => false
371
+ * ```
372
+ */
373
+ function tupleSymmetric(eq) {
374
+ if (eq === void 0) { eq = defaultEq(); }
375
+ return function (tup1, tup2) {
376
+ return (eq(tup1[0], tup2[0]) && eq(tup1[1], tup2[1])) ||
377
+ (eq(tup1[0], tup2[1]) && eq(tup1[1], tup2[0]));
378
+ };
379
+ }
380
+ Eq.tupleSymmetric = tupleSymmetric;
381
+ })(Eq || (exports.Eq = Eq = {}));
382
+ //# sourceMappingURL=eq.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eq.cjs","sourceRoot":"","sources":["../../_cjs_prepare/eq.cts"],"names":[],"mappings":"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"}