@magic/types 0.1.26 → 0.1.28

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 CHANGED
@@ -176,6 +176,12 @@ isDeepEqual([1, 2, 3], [1, 2, 3]) // true
176
176
  isDeepDifferent([1, 2, 3], [1, 2, 3]) // false
177
177
  // alias is.deep.diff, is.deep.different
178
178
 
179
+ isDeepEqual([1, 2, 3], [3, 2, 1]) // true
180
+ isDeepEqual([1, 2, 3], [3, 2, 1], { strict: true }) // false
181
+
182
+ isDeepEqual({a: 1, b: 2, c: 3 }, { c: 3, b: 2, a: 1 }) // true
183
+ isDeepEqual({a: 1, b: 2, c: 3 }, { c: 3, b: 2, a: 1 }, { strict: true }) // false
184
+
179
185
  isEvery([1, 2, 3], 'number') // true
180
186
  isEvery([1, 2, 3], is.number) // true
181
187
  // alias is.every, is.all
@@ -210,6 +216,7 @@ isModule(mod) // true
210
216
 
211
217
  isOwnProp({ test: undefined }, 'test') // true
212
218
  // alias isOwnProperty, is.ownProperty, is.ownProp, is.prop
219
+
213
220
  ```
214
221
 
215
222
  #### Changelog
@@ -343,6 +350,16 @@ update dependencies
343
350
 
344
351
  - fix typescript d.ts files
345
352
 
346
- ##### 0.0.27 - unreleased
353
+ ##### 0.1.27
354
+
355
+ - @types/node is a dependency, not devDependency
356
+ - update dependencies
357
+
358
+ ##### 0.1.28
359
+
360
+ - options.strict makes the tests include sort order of objects and array, [1, 2] is [2, 1] if options.strict = true
361
+ - update dependencies
362
+
363
+ ##### 0.1.29 - unreleased
347
364
 
348
365
  ...
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magic/types",
3
- "version": "0.1.26",
3
+ "version": "0.1.28",
4
4
  "author": "Wizards & Witches",
5
5
  "homepage": "https://github.com/magic/types",
6
6
  "license": "AGPL-3.0",
@@ -47,8 +47,7 @@
47
47
  "@magic/format": "0.0.68",
48
48
  "@magic/fs": "0.0.31",
49
49
  "@magic/test": "0.2.20",
50
- "@types/node": "24.5.2",
51
- "typescript": "5.9.2"
50
+ "typescript": "5.9.3"
52
51
  },
53
52
  "keywords": [
54
53
  "magic",
@@ -60,5 +59,8 @@
60
59
  "name": "jascha ehrenreich",
61
60
  "github": "jaeh"
62
61
  }
63
- ]
62
+ ],
63
+ "dependencies": {
64
+ "@types/node": "24.7.1"
65
+ }
64
66
  }
package/src/deep/equal.js CHANGED
@@ -16,9 +16,11 @@ import is from '../lib.js'
16
16
  /**
17
17
  * @param {unknown} a
18
18
  * @param {unknown} [b]
19
+ * @param {object} [options]
20
+ * @param {boolean} [options.strict=false]
19
21
  * @returns {boolean | ((c: unknown) => boolean)}
20
22
  */
21
- export const equal = (a, b) => {
23
+ export const equal = (a, b, options = { strict: false }) => {
22
24
  // curry
23
25
  if (is.undefined(b)) {
24
26
  if (is.undefined(a)) {
@@ -46,7 +48,6 @@ export const equal = (a, b) => {
46
48
  // return is.length.eq(a, b)
47
49
  // }
48
50
 
49
- // Check if both are objects before accessing prototype
50
51
  if (!is.object(a) || !is.object(b)) {
51
52
  return a === b
52
53
  }
@@ -100,6 +101,11 @@ export const equal = (a, b) => {
100
101
  return false
101
102
  }
102
103
 
104
+ if (!options.strict) {
105
+ a.sort()
106
+ b.sort()
107
+ }
108
+
103
109
  return !a.some((v, i) => v !== b[i])
104
110
  }
105
111
 
@@ -118,8 +124,10 @@ export const equal = (a, b) => {
118
124
  return false
119
125
  }
120
126
 
121
- ka.sort()
122
- kb.sort()
127
+ if (!options.strict) {
128
+ ka.sort()
129
+ kb.sort()
130
+ }
123
131
 
124
132
  // ~~~cheap key test
125
133
  for (let i = 0; i < ka.length; i++) {