Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: gatsbyjs/gatsby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: gatsby@3.13.0
Choose a base ref
...
head repository: gatsbyjs/gatsby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: gatsby@3.13.1
Choose a head ref
  • 5 commits
  • 10 files changed
  • 6 contributors

Commits on Sep 3, 2021

  1. fix(gatsby-source-drupal): delete relationships to now deleted nodes (#…

    …32971) (#33041)
    
    * fix(gatsby-source-drupal): delete relationships to now deleted nodes
    
    * Cleanup back/reference weakmaps
    
    * Fix lint error
    
    * Update packages/gatsby-source-drupal/src/utils.js
    
    Co-authored-by: Ward Peeters <ward@coding-tech.com>
    
    * Actually recreate updated nodes
    
    * referenced nodes doesn't always exist
    
    Co-authored-by: Ward Peeters <ward@coding-tech.com>
    Co-authored-by: gatsbybot <mathews.kyle+gatsbybot@gmail.com>
    (cherry picked from commit c720767)
    
    Co-authored-by: Kyle Mathews <mathews.kyle@gmail.com>
    GatsbyJS Bot and KyleAMathews authored Sep 3, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    a584ab0 View commit details
  2. tests(gatsby-source-contentful): fix snapshot (#32960) (#33043)

    (cherry picked from commit 4ef8437)
    
    Co-authored-by: Ward Peeters <ward@coding-tech.com>
    GatsbyJS Bot and wardpeet authored Sep 3, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    c508112 View commit details
  3. chore(release): Publish

     - gatsby-source-drupal@4.13.1
    vladar committed Sep 3, 2021
    Copy the full SHA
    75241e1 View commit details

Commits on Sep 16, 2021

  1. fix(gatsby): Don't bundle moment locale files (#33092) (#33222)

    (cherry picked from commit f03fb94)
    
    Co-authored-by: James Brooks <52410024+jabrks@users.noreply.github.com>
    GatsbyJS Bot and jabrks authored Sep 16, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    093f7b4 View commit details
  2. chore(release): Publish

     - gatsby-admin@0.23.1
     - gatsby@3.13.1
    pieh committed Sep 16, 2021
    Copy the full SHA
    3cfc791 View commit details
4 changes: 2 additions & 2 deletions packages/gatsby-admin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "gatsby-admin",
"version": "0.23.0",
"version": "0.23.1",
"main": "index.js",
"author": "Max Stoiber",
"license": "MIT",
@@ -29,7 +29,7 @@
"@typescript-eslint/parser": "^4.29.3",
"csstype": "^2.6.14",
"formik": "^2.2.6",
"gatsby": "^3.13.0",
"gatsby": "^3.13.1",
"gatsby-interface": "^0.0.244",
"gatsby-plugin-typescript": "^3.13.0",
"gatsby-plugin-webfonts": "^1.1.4",
Original file line number Diff line number Diff line change
@@ -99,7 +99,7 @@ describe(`contentful extend node type`, () => {
test(`keeps image format`, async () => {
const result = await getBase64Image(imageProps)
expect(result).toMatch(
`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAMAAAC5ge+kAAAAllBMVEUAAABHl745rOE7tOc7tOcqMDkqMDkqMDkqMDnfzG9Pm7o7tOc7tOcqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDn4wF/eXWDtXGjtXGgqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDnbVmDpWGbtXGjtXGh1tTylAAAAMnRSTlMATd3gVSUjTCDgHRIscF+MeqB8qpqbk4ienYAxr+AeEipyZI9/aW+No4WJeWuuTdzgVnu3oiUAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQflCAUMNjFcK/NJAAAAMklEQVQI12NkBII/DCDA+htIsDEy/mBj4WDEBCwiyLwnIpyMjL/ZWASB7PMMMPAZTAIALlUHKTqI1/MAAAAASUVORK5CYII=`
`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAMAAAC5ge+kAAAAllBMVEUAAABHl745rOE7tOc7tOcqMDkqMDkqMDkqMDnfzG9Pm7o7tOc7tOcqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDn4wF/eXWDtXGjtXGgqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDkqMDnbVmDpWGbtXGjtXGh1tTylAAAAMnRSTlMATd3gVSUjTCDgHRIscF+MeqB8qpqbk4ienYAxr+AeEipyZI9/aW+No4WJeWuuTdzgVnu3oiUAAAAJcEhZcwAACxIAAAsSAdLdfvwAAAAHdElNRQflCBQANxNx70pyAAAAMklEQVQI12NkBII/DCDA+htIsDEy/mBj4WDEBCwiyLwnIpyMjL/ZWASB7PMMMPAZTAIALlUHKTqI1/MAAAAASUVORK5CYII=`
)
})
test(`uses given image format`, async () => {
2 changes: 1 addition & 1 deletion packages/gatsby-source-drupal/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "gatsby-source-drupal",
"description": "Gatsby source plugin for building websites using the Drupal CMS as a data source",
"version": "4.13.0",
"version": "4.13.1",
"author": "Kyle Mathews <mathews.kyle@gmail.com>",
"bugs": {
"url": "https://github.com/gatsbyjs/gatsby/issues"
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
{
"timestamp": 1593545807,
"entities": [
{
"action": "delete",
"id": "file-4",
"type": "file--file"
},
{
"jsonapi": {
"version": "1.0",
26 changes: 26 additions & 0 deletions packages/gatsby-source-drupal/src/__tests__/fixtures/article.json
Original file line number Diff line number Diff line change
@@ -43,6 +43,32 @@
"id": "file-1"
}
},
"field_secondary_image": {
"data": [
{
"type": "file--file",
"id": "file-4"
}
]
},
"field_secondary_multiple_image": {
"data": [
{
"type": "file--file",
"id": "file-3"
},
{
"type": "file--file",
"id": "file-4"
}
]
},
"field_tertiary_image": {
"data": {
"type": "file--file",
"id": "file-4"
}
},
"field_tags": {
"data": null
}
23 changes: 23 additions & 0 deletions packages/gatsby-source-drupal/src/__tests__/index.js
Original file line number Diff line number Diff line change
@@ -32,6 +32,7 @@ describe(`gatsby-source-drupal`, () => {
const { objectContaining } = expect
const actions = {
createNode: jest.fn(node => (nodes[node.id] = node)),
deleteNode: jest.fn(node => delete nodes[node.id]),
setPluginStatus: jest.fn(),
touchNode: jest.fn(),
}
@@ -433,15 +434,22 @@ describe(`gatsby-source-drupal`, () => {
const fastBuilds = true
await sourceNodes(args, { baseUrl, fastBuilds })
})

it(`Attributes`, () => {
expect(nodes[createNodeId(`und.article-3`)].title).toBe(`Article #3`)
})

it(`Relationships`, () => {
expect(nodes[createNodeId(`und.article-3`)].relationships).toEqual({
field_main_image___NODE: createNodeId(`und.file-1`),
field_tags___NODE: [createNodeId(`und.tag-1`)],
})
expect(
nodes[createNodeId(`und.article-2`)].relationships
.field_secondary_image___NODE
).toEqual([createNodeId(`und.file-4`)])
})

it(`Back references`, () => {
expect(
nodes[createNodeId(`und.file-1`)].relationships[
@@ -473,17 +481,32 @@ describe(`gatsby-source-drupal`, () => {
})
await sourceNodes(args, { baseUrl, fastBuilds })
})

it(`Attributes`, () => {
expect(nodes[createNodeId(`und.article-3`)].title).toBe(
`Article #3 - Synced`
)
})

it(`Relationships`, () => {
// removed `field_main_image`, changed `field_tags`
expect(nodes[createNodeId(`und.article-3`)].relationships).toEqual({
field_tags___NODE: [createNodeId(`und.tag-2`)],
})
expect(
nodes[createNodeId(`und.article-2`)].relationships
.field_secondary_image___NODE
).toBe(undefined)
expect(
nodes[createNodeId(`und.article-2`)].relationships
.field_secondary_multiple_image___NODE.length
).toBe(1)
expect(
nodes[createNodeId(`und.article-2`)].relationships
.field_tertiary_image___NODE_image___NODE
).toBe(undefined)
})

it(`Back references`, () => {
// removed `field_main_image`, `file-1` no longer has back reference to `article-3`
expect(
51 changes: 22 additions & 29 deletions packages/gatsby-source-drupal/src/gatsby-node.js
Original file line number Diff line number Diff line change
@@ -14,7 +14,11 @@ const {
isFileNode,
createNodeIdWithVersion,
} = require(`./normalize`)
const { handleReferences, handleWebhookUpdate } = require(`./utils`)
const {
handleReferences,
handleWebhookUpdate,
handleDeletedNode,
} = require(`./utils`)

const agent = {
http: new HttpAgent(),
@@ -149,19 +153,15 @@ exports.sourceNodes = async (
}

for (const nodeToDelete of nodesToDelete) {
const nodeIdToDelete = createNodeId(
createNodeIdWithVersion(
nodeToDelete.id,
nodeToDelete.type,
getOptions().languageConfig
? nodeToDelete.attributes?.langcode
: `und`,
nodeToDelete.attributes?.drupal_internal__revision_id,
entityReferenceRevisions
)
)
actions.deleteNode(getNode(nodeIdToDelete))
reporter.log(`Deleted node: ${nodeIdToDelete}`)
const deletedNode = await handleDeletedNode({
actions,
getNode,
node: nodeToDelete,
createNodeId,
createContentDigest,
entityReferenceRevisions,
})
reporter.log(`Deleted node: ${deletedNode.id}`)
}

changesActivity.end()
@@ -248,21 +248,14 @@ exports.sourceNodes = async (
const nodesToSync = res.body.entities
for (const nodeSyncData of nodesToSync) {
if (nodeSyncData.action === `delete`) {
actions.deleteNode(
getNode(
createNodeId(
createNodeIdWithVersion(
nodeSyncData.id,
nodeSyncData.type,
getOptions().languageConfig
? nodeSyncData.attributes.langcode
: `und`,
nodeSyncData.attributes?.drupal_internal__revision_id,
entityReferenceRevisions
)
)
)
)
handleDeletedNode({
actions,
getNode,
node: nodeSyncData,
createNodeId,
createContentDigest,
entityReferenceRevisions,
})
} else {
// The data could be a single Drupal entity or an array of Drupal
// entities to update.
73 changes: 73 additions & 0 deletions packages/gatsby-source-drupal/src/utils.js
Original file line number Diff line number Diff line change
@@ -110,6 +110,78 @@ const handleReferences = (

exports.handleReferences = handleReferences

const handleDeletedNode = async ({
actions,
node,
getNode,
createNodeId,
createContentDigest,
entityReferenceRevisions,
}) => {
const deletedNode = getNode(
createNodeId(
createNodeIdWithVersion(
node.id,
node.type,
getOptions().languageConfig ? node.attributes.langcode : `und`,
node.attributes?.drupal_internal__revision_id,
entityReferenceRevisions
)
)
)

// Remove the deleted node from backRefsNamesLookup
backRefsNamesLookup.delete(deletedNode)

// Remove relationships from other nodes and re-create them.
Object.keys(deletedNode.relationships).forEach(key => {
let ids = deletedNode.relationships[key]
ids = [].concat(ids)
ids.forEach(id => {
const node = getNode(id)
let referencedNodes = referencedNodesLookup.get(node)
if (referencedNodes?.includes(deletedNode.id)) {
// Loop over relationships and cleanup references.
Object.entries(node.relationships).forEach(([key, value]) => {
// If a string ref matches, delete it.
if (_.isString(value) && value === deletedNode.id) {
delete node.relationships[key]
}

// If it's an array, filter, then check if the array is empty and then delete
// if so
if (_.isArray(value)) {
value = value.filter(v => v !== deletedNode.id)

if (value.length === 0) {
delete node.relationships[key]
} else {
node.relationships[key] = value
}
}
})

// Remove deleted node from array of referencedNodes
referencedNodes = referencedNodes.filter(nId => nId !== deletedNode.id)
referencedNodesLookup.set(node, referencedNodes)
}
// Recreate the referenced node with its now cleaned-up relationships.
if (node.internal.owner) {
delete node.internal.owner
}
if (node.fields) {
delete node.fields
}
node.internal.contentDigest = createContentDigest(node)
actions.createNode(node)
})
})

actions.deleteNode(deletedNode)

return deletedNode
}

const handleWebhookUpdate = async (
{
nodeToUpdate,
@@ -216,3 +288,4 @@ const handleWebhookUpdate = async (
}

exports.handleWebhookUpdate = handleWebhookUpdate
exports.handleDeletedNode = handleDeletedNode
2 changes: 1 addition & 1 deletion packages/gatsby/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "gatsby",
"description": "Blazing fast modern site generator for React",
"version": "3.13.0",
"version": "3.13.1",
"author": "Kyle Mathews <mathews.kyle@gmail.com>",
"bin": {
"gatsby": "./cli.js"
2 changes: 1 addition & 1 deletion packages/gatsby/src/utils/webpack-utils.ts
Original file line number Diff line number Diff line change
@@ -765,7 +765,7 @@ export const createWebpackUtils = (
})

plugins.moment = (): WebpackPluginInstance =>
plugins.ignore(/^\.\/locale$/, /moment$/)
plugins.ignore({ resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/ })

plugins.extractStats = (): GatsbyWebpackStatsExtractor =>
new GatsbyWebpackStatsExtractor()