@npmcli/arborist 6.2.0 → 6.2.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.
@@ -82,7 +82,6 @@ const _rollbackRetireShallowNodes = Symbol.for('rollbackRetireShallowNodes')
82
82
  const _rollbackCreateSparseTree = Symbol.for('rollbackCreateSparseTree')
83
83
  const _rollbackMoveBackRetiredUnchanged = Symbol.for('rollbackMoveBackRetiredUnchanged')
84
84
  const _saveIdealTree = Symbol.for('saveIdealTree')
85
- const _saveLockFile = Symbol('saveLockFile')
86
85
  const _copyIdealToActual = Symbol('copyIdealToActual')
87
86
  const _addOmitsToTrashList = Symbol('addOmitsToTrashList')
88
87
  const _packageLockOnly = Symbol('packageLockOnly')
@@ -1404,64 +1403,53 @@ module.exports = cls => class Reifier extends cls {
1404
1403
  }
1405
1404
  }
1406
1405
 
1407
- // preserve indentation, if possible
1408
- const {
1409
- [Symbol.for('indent')]: indent,
1410
- } = this.idealTree.package
1411
- const format = indent === undefined ? ' ' : indent
1412
-
1413
- const saveOpt = {
1414
- format: (this[_formatPackageLock] && format) ? format
1415
- : this[_formatPackageLock],
1416
- }
1417
-
1418
- const promises = [this[_saveLockFile](saveOpt)]
1419
-
1420
- const updatePackageJson = async (tree) => {
1421
- const pkgJson = await PackageJson.load(tree.path)
1422
- .catch(() => new PackageJson(tree.path))
1423
- const {
1424
- dependencies = {},
1425
- devDependencies = {},
1426
- optionalDependencies = {},
1427
- peerDependencies = {},
1428
- // bundleDependencies is not required by PackageJson like the other fields here
1429
- // PackageJson also doesn't omit an empty array for this field so defaulting this
1430
- // to an empty array would add that field to every package.json file.
1431
- bundleDependencies,
1432
- } = tree.package
1433
-
1434
- pkgJson.update({
1435
- dependencies,
1436
- devDependencies,
1437
- optionalDependencies,
1438
- peerDependencies,
1439
- bundleDependencies,
1440
- })
1441
- await pkgJson.save()
1442
- }
1443
-
1444
1406
  if (save) {
1445
1407
  for (const tree of updatedTrees) {
1446
1408
  // refresh the edges so they have the correct specs
1447
1409
  tree.package = tree.package
1448
- promises.push(updatePackageJson(tree))
1410
+ const pkgJson = await PackageJson.load(tree.path)
1411
+ .catch(() => new PackageJson(tree.path))
1412
+ const {
1413
+ dependencies = {},
1414
+ devDependencies = {},
1415
+ optionalDependencies = {},
1416
+ peerDependencies = {},
1417
+ // bundleDependencies is not required by PackageJson like the other
1418
+ // fields here PackageJson also doesn't omit an empty array for this
1419
+ // field so defaulting this to an empty array would add that field to
1420
+ // every package.json file.
1421
+ bundleDependencies,
1422
+ } = tree.package
1423
+
1424
+ pkgJson.update({
1425
+ dependencies,
1426
+ devDependencies,
1427
+ optionalDependencies,
1428
+ peerDependencies,
1429
+ bundleDependencies,
1430
+ })
1431
+ await pkgJson.save()
1449
1432
  }
1450
1433
  }
1451
1434
 
1452
- await Promise.all(promises)
1453
- process.emit('timeEnd', 'reify:save')
1454
- return true
1455
- }
1435
+ // before now edge specs could be changing, affecting the `requires` field
1436
+ // in the package lock, so we hold off saving to the very last action
1437
+ if (this[_usePackageLock]) {
1438
+ // preserve indentation, if possible
1439
+ let format = this.idealTree.package[Symbol.for('indent')]
1440
+ if (format === undefined) {
1441
+ format = ' '
1442
+ }
1456
1443
 
1457
- async [_saveLockFile] (saveOpt) {
1458
- if (!this[_usePackageLock]) {
1459
- return
1444
+ // TODO this ignores options.save
1445
+ await this.idealTree.meta.save({
1446
+ format: (this[_formatPackageLock] && format) ? format
1447
+ : this[_formatPackageLock],
1448
+ })
1460
1449
  }
1461
1450
 
1462
- const { meta } = this.idealTree
1463
-
1464
- return meta.save(saveOpt)
1451
+ process.emit('timeEnd', 'reify:save')
1452
+ return true
1465
1453
  }
1466
1454
 
1467
1455
  async [_copyIdealToActual] () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npmcli/arborist",
3
- "version": "6.2.0",
3
+ "version": "6.2.1",
4
4
  "description": "Manage node_modules trees",
5
5
  "dependencies": {
6
6
  "@isaacs/string-locale-compare": "^1.1.0",