@peter.naydenov/walk-async 2.0.2 → 3.0.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/Changelog.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
 
4
4
 
5
+ ### 3.0.0 ( 2024-12-04)
6
+ - [x] Object callback will be triggered on 'root' object as well;
7
+
8
+
9
+
10
+
5
11
  ### 2.0.2 ( 2024-01-31)
6
12
  - [x] Dev dependencies updates. Chai to version 5.0.3;
7
13
  - [x] Dev dependencies updates. C8 to version 9.1.0;
@@ -0,0 +1,23 @@
1
+ # Migration Guides
2
+
3
+
4
+
5
+ ## From v.2.x.x - v.3.x.x
6
+ Difference between v.2.x.x and v.3.x.x is that object callbacks are triggered on 'root' object as well. So if you have object callbacks that are not working as expected after upgrade, you need to add extra line of code for version 3.
7
+
8
+ ```js
9
+ // version 2
10
+ function oCallbackFn ({ value:o, key, IGNORE }) {
11
+ // Some code
12
+ }
13
+
14
+ // version 3
15
+ function oCallbackFn ({ value:o, key, IGNORE, breadcrumbs }) {
16
+ if ( breadcrumbs === 'root' ) return o // Extra line of code for version 3
17
+ // Some code
18
+ }
19
+ ```
20
+
21
+ Everything else works the same.
22
+
23
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peter.naydenov/walk-async",
3
- "version": "2.0.2",
3
+ "version": "3.0.0",
4
4
  "description": "Deep copy with fine control during the process. Can be used also as a deep forEach function",
5
5
  "main": ".dist/walk-async.umd.js",
6
6
  "type": "module",
@@ -29,13 +29,13 @@
29
29
  "ask-for-promise": "2.0.3"
30
30
  },
31
31
  "devDependencies": {
32
- "@rollup/plugin-commonjs": "^25.0.7",
33
- "@rollup/plugin-node-resolve": "^15.2.3",
32
+ "@rollup/plugin-commonjs": "^28.0.1",
33
+ "@rollup/plugin-node-resolve": "^15.3.0",
34
34
  "@rollup/plugin-terser": "^0.4.4",
35
- "c8": "^9.1.0",
36
- "chai": "^5.0.3",
37
- "mocha": "^10.2.0",
38
- "rollup": "^4.9.6"
35
+ "c8": "^10.1.2",
36
+ "chai": "^5.1.2",
37
+ "mocha": "^11.0.1",
38
+ "rollup": "^4.28.0"
39
39
  },
40
40
  "c8": {
41
41
  "include": [
package/src/main.js CHANGED
@@ -35,12 +35,12 @@ function walk ({
35
35
  switch ( type ) {
36
36
  case 'array' :
37
37
  result = []
38
- copyObject ( origin, result, extend, cb, breadcrumbs, ...args )
38
+ copyObject ( {root:origin}, result, extend, cb, breadcrumbs, ...args )
39
39
  .then ( () => goNext ( extend, result, end ))
40
40
  break
41
41
  case 'object' :
42
42
  result = {}
43
- copyObject ( origin, result, extend, cb, breadcrumbs, ...args )
43
+ copyObject ( {root:origin}, result, extend, cb, breadcrumbs, ...args )
44
44
  .then ( () => {
45
45
  goNext ( extend, result, end )
46
46
  })
@@ -106,6 +106,8 @@ function copyObject ( origin, result, extend, cb, breadcrumbs, ...args ) {
106
106
  , resultIsArray = (findType (result) === 'array')
107
107
  , keyNumber = !isNaN ( k )
108
108
  , IGNORE = Symbol ( 'ignore___' )
109
+ , isRoot = (breadcrumbs === 'root' && k === 'root' )
110
+ , br = isRoot ? 'root' : `${breadcrumbs}/${k}`
109
111
  ;
110
112
 
111
113
  if ( hasObjectCallback ) {
@@ -114,7 +116,7 @@ function copyObject ( origin, result, extend, cb, breadcrumbs, ...args ) {
114
116
  , reject : () => objectCallbackTask.done ( IGNORE )
115
117
  , value : item
116
118
  , key : k
117
- , breadcrumbs : `${breadcrumbs}/${k}`
119
+ , breadcrumbs : br
118
120
  }, ...args )
119
121
  }
120
122
  else {
@@ -144,7 +146,7 @@ function copyObject ( origin, result, extend, cb, breadcrumbs, ...args ) {
144
146
  , reject : () => keyCallbackTask.done ( IGNORE )
145
147
  , value : item
146
148
  , key : k
147
- , breadcrumbs : `${breadcrumbs}/${k}`
149
+ , breadcrumbs : br
148
150
  }, ...args );
149
151
  }
150
152
  else {
@@ -153,6 +155,11 @@ function copyObject ( origin, result, extend, cb, breadcrumbs, ...args ) {
153
155
  }) // objectCallbackTask complete
154
156
 
155
157
  keyCallbackTask.onComplete ( value => {
158
+ if ( isRoot ) {
159
+ extend.push ( generateList ( item, result, extend, cb, 'root', args ) )
160
+ executeCallback[i].done ( 'root' )
161
+ return
162
+ }
156
163
  if ( value == IGNORE ) {
157
164
  executeCallback[i].done ( 'ignore key' )
158
165
  return
@@ -180,14 +187,14 @@ function copyObject ( origin, result, extend, cb, breadcrumbs, ...args ) {
180
187
  const newObject = {};
181
188
  if ( resultIsArray && keyNumber ) result.push ( newObject )
182
189
  else result[k] = newObject
183
- extend.push ( generateList( item, newObject, extend, cb, `${breadcrumbs}/${k}`, args ) )
190
+ extend.push ( generateList( item, newObject, extend, cb, br, args ) )
184
191
  executeCallback[i].done ('object')
185
192
  }
186
193
  if ( type === 'array' ) {
187
194
  const newArray = [];
188
195
  if ( resultIsArray && keyNumber ) result.push ( newArray )
189
196
  else result[k] = newArray
190
- extend.push ( generateList( item, newArray, extend, cb, `${breadcrumbs}/${k}`, args ) )
197
+ extend.push ( generateList( item, newArray, extend, cb, br, args ) )
191
198
  executeCallback[i].done ('array')
192
199
  }
193
200
  })