Skip to content

Commit 01b6123

Browse files
LekoArtsgatsbybot
and
gatsbybot
authored
feat(gatsby): Remove deleteNode with ID arg (#29205)
Co-authored-by: gatsbybot <[email protected]>
1 parent e691342 commit 01b6123

File tree

14 files changed

+51
-77
lines changed

14 files changed

+51
-77
lines changed

docs/docs/creating-a-source-plugin.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -446,9 +446,7 @@ exports.sourceNodes = async ({ actions, getNodesByType }, pluginOptions) => {
446446
newData.forEach(newDatum => {
447447
switch (newDatum.status) {
448448
case "deleted":
449-
deleteNode({
450-
node: getNode(createNodeId(`YourSourceType-${newDatum.uuid}`)),
451-
})
449+
deleteNode(getNode(createNodeId(`YourSourceType-${newDatum.uuid}`)))
452450
break
453451
case "created":
454452
case "updated":

docs/docs/how-to/plugins-and-themes/creating-a-source-plugin.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -887,9 +887,7 @@ exports.sourceNodes = async (
887887
const nodeId = createNodeId(`${POST_NODE_TYPE}-${post.id}`)
888888
switch (post.status) {
889889
case "deleted":
890-
deleteNode({
891-
node: getNode(nodeId),
892-
})
890+
deleteNode(getNode(nodeId))
893891
break
894892
case "created":
895893
case "updated":

e2e-tests/development-runtime/plugins/gatsby-source-fake-data/gatsby-node.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ exports.sourceNodes = async function sourceNodes({
4040
deleted.forEach(node => {
4141
const existing = getNode(node.id)
4242
if (existing) {
43-
deleteNode({
44-
node: existing,
45-
})
43+
deleteNode(existing)
4644
}
4745
})
4846
}

e2e-tests/development-runtime/plugins/gatsby-source-pinc-data/gatsby-node.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ exports.sourceNodes = async function sourceNodes({
4040
deleted.forEach(node => {
4141
const existing = getNode(node.id)
4242
if (existing) {
43-
deleteNode({
44-
node: existing,
45-
})
43+
deleteNode(existing)
4644
}
4745
})
4846
}

examples/creating-source-plugins/source-plugin/gatsby-node.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,7 @@ exports.sourceNodes = async function sourceNodes(
179179
const nodeId = createNodeId(`${POST_NODE_TYPE}-${post.id}`)
180180
switch (post.status) {
181181
case "deleted":
182-
deleteNode({
183-
node: getNode(nodeId),
184-
})
182+
deleteNode(getNode(nodeId))
185183
break
186184
case "created":
187185
case "updated":

packages/gatsby-source-contentful/src/__tests__/gatsby-node.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ describe(`gatsby-node`, () => {
256256
// don't allow mutations (this isn't traversing so only top level is frozen)
257257
currentNodeMap.set(node.id, Object.freeze(node))
258258
})
259-
actions.deleteNode = ({ node }) => {
259+
actions.deleteNode = node => {
260260
currentNodeMap.delete(node.id)
261261
}
262262
actions.touchNode = jest.fn()

packages/gatsby-source-contentful/src/gatsby-node.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ exports.sourceNodes = async (
485485
localizedNodes.forEach(node => {
486486
// touchNode first, to populate typeOwners & avoid erroring
487487
touchNode({ nodeId: node.id })
488-
deleteNode({ node })
488+
deleteNode(node)
489489
})
490490
}
491491

packages/gatsby-source-drupal/src/gatsby-node.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ exports.sourceNodes = async (
7171
return
7272
}
7373
if (action === `delete`) {
74-
actions.deleteNode({ node: getNode(createNodeId(id)) })
74+
actions.deleteNode(getNode(createNodeId(id)))
7575
reporter.log(`Deleted node: ${id}`)
7676
changesActivity.end()
7777
return
@@ -147,7 +147,7 @@ exports.sourceNodes = async (
147147
let nodesToSync = data.data.entities
148148
for (const nodeSyncData of nodesToSync) {
149149
if (nodeSyncData.action === `delete`) {
150-
actions.deleteNode({ node: getNode(createNodeId(nodeSyncData.id)) })
150+
actions.deleteNode(getNode(createNodeId(nodeSyncData.id)))
151151
} else {
152152
// The data could be a single Drupal entity or an array of Drupal
153153
// entities to update.
@@ -385,7 +385,7 @@ exports.onCreateDevServer = (
385385
)
386386
}
387387
if (action === `delete`) {
388-
actions.deleteNode({ node: getNode(createNodeId(id)) })
388+
actions.deleteNode(getNode(createNodeId(id)))
389389
return reporter.log(`Deleted node: ${id}`)
390390
}
391391
const nodeToUpdate = JSON.parse(JSON.parse(req.body)).data

packages/gatsby-source-filesystem/src/gatsby-node.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const createFSMachine = (
3636
// It's possible the node was never created as sometimes tools will
3737
// write and then immediately delete temporary files to the file system.
3838
if (node) {
39-
deleteNode({ node })
39+
deleteNode(node)
4040
}
4141
}
4242

packages/gatsby/index.d.ts

+1-6
Original file line numberDiff line numberDiff line change
@@ -1091,10 +1091,6 @@ interface ActionPlugin {
10911091
name: string
10921092
}
10931093

1094-
interface DeleteNodeArgs {
1095-
node: Node
1096-
}
1097-
10981094
interface CreateNodeFieldArgs {
10991095
node: Node
11001096
name: string
@@ -1128,9 +1124,8 @@ export interface Actions {
11281124

11291125
/** @see https://www.gatsbyjs.org/docs/actions/#deletePage */
11301126
deleteNode(
1131-
options: { node: Node },
1127+
node: NodeInput,
11321128
plugin?: ActionPlugin,
1133-
option?: ActionOptions
11341129
): void
11351130

11361131
/** @see https://www.gatsbyjs.org/docs/actions/#createNode */

packages/gatsby/src/db/__tests__/nodes.js

+16-25
Original file line numberDiff line numberDiff line change
@@ -222,14 +222,9 @@ describe(`nodes db tests`, () => {
222222
)
223223
)
224224
store.dispatch(
225-
actions.deleteNode(
226-
{
227-
node: getNode(`hi`),
228-
},
229-
{
230-
name: `tests`,
231-
}
232-
)
225+
actions.deleteNode(getNode(`hi`), {
226+
name: `tests`,
227+
})
233228
)
234229
expect(getNodes()).toHaveLength(1)
235230
})
@@ -306,12 +301,9 @@ describe(`nodes db tests`, () => {
306301
)
307302
)
308303
store.dispatch(
309-
actions.deleteNode(
310-
{ node: getNode(`hi`) },
311-
{
312-
name: `tests`,
313-
}
314-
)
304+
actions.deleteNode(getNode(`hi`), {
305+
name: `tests`,
306+
})
315307
)
316308
expect(getNodes()).toHaveLength(0)
317309
})
@@ -343,11 +335,7 @@ describe(`nodes db tests`, () => {
343335
}
344336
)
345337
)
346-
store.dispatch(
347-
actions.deleteNode({
348-
node: getNode(`hi`),
349-
})
350-
)
338+
store.dispatch(actions.deleteNode(getNode(`hi`)))
351339
expect(getNode(`hi`)).toBeUndefined()
352340
})
353341

@@ -370,14 +358,17 @@ describe(`nodes db tests`, () => {
370358
)
371359
expect(getNode(`hi`)).toMatchObject({ id: `hi` })
372360
store.dispatch(
373-
actions.deleteNode(`hi`, getNode(`hi`), {
374-
name: `tests`,
375-
})
361+
actions.deleteNode(
362+
{ node: getNode(`hi`) },
363+
{
364+
name: `tests`,
365+
}
366+
)
376367
)
377368
expect(getNode(`hi`)).toBeUndefined()
378369
const deprecationNotice =
379-
`Calling "deleteNode" with a nodeId is deprecated. Please pass an ` +
380-
`object containing a full node instead: deleteNode({ node }). ` +
370+
`Calling "deleteNode" with {node} is deprecated. Please pass ` +
371+
`the node directly to the function: deleteNode(node) ` +
381372
`"deleteNode" was called by tests`
382373
expect(report.warn).toHaveBeenCalledWith(deprecationNotice)
383374
})
@@ -401,7 +392,7 @@ describe(`nodes db tests`, () => {
401392
)
402393
)
403394
store.dispatch(
404-
actions.deleteNode(`hi`, getNode(`hi`), {
395+
actions.deleteNode(getNode(`hi`), {
405396
name: `tests`,
406397
})
407398
)

packages/gatsby/src/internal-plugins/internal-data-bridge/gatsby-node.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -197,5 +197,5 @@ exports.onCreatePage = ({ createContentDigest, page, actions }) => {
197197
emitter.on(`DELETE_PAGE`, action => {
198198
const nodeId = createPageId(action.payload.path)
199199
const node = getNode(nodeId)
200-
boundActionCreators.deleteNode({ node })
200+
boundActionCreators.deleteNode(node)
201201
})

packages/gatsby/src/redux/actions/public.js

+21-23
Original file line numberDiff line numberDiff line change
@@ -425,53 +425,50 @@ ${reservedFields.map(f => ` * "${f}"`).join(`\n`)}
425425

426426
/**
427427
* 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.
430429
* @example
431-
* deleteNode({node: node})
430+
* deleteNode(node)
432431
*/
433-
actions.deleteNode = (options: any, plugin: Plugin, args: any) => {
432+
actions.deleteNode = (node: any, plugin?: Plugin) => {
434433
let id
435434

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) {
439437
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) {
445442
msg = msg + ` "deleteNode" was called by ${plugin.name}`
446443
}
447444
report.warn(msg)
448445

449-
id = options
446+
id = node.node.id
450447
} else {
451-
id = options && options.node && options.node.id
448+
id = node && node.id
452449
}
453450

454451
// Always get node from the store, as the node we get as an arg
455452
// might already have been deleted.
456-
const node = getNode(id)
453+
const internalNode = getNode(id)
457454
if (plugin) {
458455
const pluginName = plugin.name
459456

460457
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
464461
)
465462
throw new Error(stripIndent`
466463
The plugin "${pluginName}" deleted a node of a type owned by another plugin.
467464
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]
470467
}".
471468
472469
The node object passed to "deleteNode":
473470
474-
${JSON.stringify(node, null, 4)}
471+
${JSON.stringify(internalNode, null, 4)}
475472
476473
The plugin deleting the node:
477474
@@ -487,12 +484,13 @@ actions.deleteNode = (options: any, plugin: Plugin, args: any) => {
487484
}
488485
}
489486

490-
const deleteAction = createDeleteAction(node)
487+
const deleteAction = createDeleteAction(internalNode)
491488

492489
// It's possible the file node was never created as sometimes tools will
493490
// write and then immediately delete temporary files to the file system.
494491
const deleteDescendantsActions =
495-
node && findChildren(node.children).map(getNode).map(createDeleteAction)
492+
internalNode &&
493+
findChildren(internalNode.children).map(getNode).map(createDeleteAction)
496494

497495
if (deleteDescendantsActions && deleteDescendantsActions.length) {
498496
return [...deleteDescendantsActions, deleteAction]

packages/gatsby/src/utils/source-nodes.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ function deleteStaleNodes(state: IGatsbyState, nodes: Array<Node>): void {
8181
const staleNodes = getStaleNodes(state, nodes)
8282

8383
if (staleNodes.length > 0) {
84-
staleNodes.forEach(node => deleteNode({ node }))
84+
staleNodes.forEach(node => deleteNode(node))
8585
}
8686
}
8787

0 commit comments

Comments
 (0)