@@ -425,53 +425,50 @@ ${reservedFields.map(f => ` * "${f}"`).join(`\n`)}
425
425
426
426
/**
427
427
* Delete a node
428
- * @param {object } $0
429
- * @param {object } $0.node the node object
428
+ * @param {object } node A node object. See the "createNode" action for more information about the node object details.
430
429
* @example
431
- * deleteNode({ node: node} )
430
+ * deleteNode(node)
432
431
*/
433
- actions . deleteNode = ( options : any , plugin : Plugin , args : any ) => {
432
+ actions . deleteNode = ( node : any , plugin ? : Plugin ) => {
434
433
let id
435
434
436
- // Check if using old method signature. Warn about incorrect usage but get
437
- // node from nodeID anyway.
438
- if ( typeof options === `string` ) {
435
+ // TODO(v4): Remove this deprecation warning and only allow deleteNode(node)
436
+ if ( node && node . node ) {
439
437
let msg =
440
- `Calling "deleteNode" with a nodeId is deprecated. Please pass an ` +
441
- `object containing a full node instead: deleteNode({ node }).`
442
- if ( args && args . name ) {
443
- // `plugin` used to be the third argument
444
- plugin = args
438
+ `Calling "deleteNode" with {node} is deprecated. Please pass ` +
439
+ `the node directly to the function: deleteNode(node)`
440
+
441
+ if ( plugin && plugin . name ) {
445
442
msg = msg + ` "deleteNode" was called by ${ plugin . name } `
446
443
}
447
444
report . warn ( msg )
448
445
449
- id = options
446
+ id = node . node . id
450
447
} else {
451
- id = options && options . node && options . node . id
448
+ id = node && node . id
452
449
}
453
450
454
451
// Always get node from the store, as the node we get as an arg
455
452
// might already have been deleted.
456
- const node = getNode ( id )
453
+ const internalNode = getNode ( id )
457
454
if ( plugin ) {
458
455
const pluginName = plugin . name
459
456
460
457
if (
461
- node &&
462
- typeOwners [ node . internal . type ] &&
463
- typeOwners [ node . internal . type ] !== pluginName
458
+ internalNode &&
459
+ typeOwners [ internalNode . internal . type ] &&
460
+ typeOwners [ internalNode . internal . type ] !== pluginName
464
461
)
465
462
throw new Error ( stripIndent `
466
463
The plugin "${ pluginName } " deleted a node of a type owned by another plugin.
467
464
468
- The node type "${ node . internal . type } " is owned by "${
469
- typeOwners [ node . internal . type ]
465
+ The node type "${ internalNode . internal . type } " is owned by "${
466
+ typeOwners [ internalNode . internal . type ]
470
467
} ".
471
468
472
469
The node object passed to "deleteNode":
473
470
474
- ${ JSON . stringify ( node , null , 4 ) }
471
+ ${ JSON . stringify ( internalNode , null , 4 ) }
475
472
476
473
The plugin deleting the node:
477
474
@@ -487,12 +484,13 @@ actions.deleteNode = (options: any, plugin: Plugin, args: any) => {
487
484
}
488
485
}
489
486
490
- const deleteAction = createDeleteAction ( node )
487
+ const deleteAction = createDeleteAction ( internalNode )
491
488
492
489
// It's possible the file node was never created as sometimes tools will
493
490
// write and then immediately delete temporary files to the file system.
494
491
const deleteDescendantsActions =
495
- node && findChildren ( node . children ) . map ( getNode ) . map ( createDeleteAction )
492
+ internalNode &&
493
+ findChildren ( internalNode . children ) . map ( getNode ) . map ( createDeleteAction )
496
494
497
495
if ( deleteDescendantsActions && deleteDescendantsActions . length ) {
498
496
return [ ...deleteDescendantsActions , deleteAction ]
0 commit comments