diff --git a/e2e-tests/contentful/src/pages/tags.js b/e2e-tests/contentful/src/pages/tags.js index 6c32f701bffc7..71206762d4adc 100644 --- a/e2e-tests/contentful/src/pages/tags.js +++ b/e2e-tests/contentful/src/pages/tags.js @@ -56,19 +56,19 @@ export default TagsPage export const pageQuery = graphql` query TagsQuery { - tags: allContentfulTag(sort: { fields: contentful_id }) { + tags: allContentfulTag(sort: { fields: id }) { nodes { name contentful_id } } - integers: allContentfulNumber( - sort: { fields: contentful_id } + integers: allContentfulContentTypeNumber( + sort: { fields: sys___id } filter: { metadata: { tags: { elemMatch: { contentful_id: { eq: "numberInteger" } } } } - node_locale: { eq: "en-US" } + sys: { locale: { eq: "en-US" } } } ) { nodes { @@ -76,13 +76,13 @@ export const pageQuery = graphql` integer } } - decimals: allContentfulNumber( - sort: { fields: contentful_id } + decimals: allContentfulContentTypeNumber( + sort: { fields: sys___id } filter: { metadata: { tags: { elemMatch: { contentful_id: { eq: "numberDecimal" } } } } - node_locale: { eq: "en-US" } + sys: { locale: { eq: "en-US" } } } ) { nodes { diff --git a/packages/gatsby-source-contentful/README.md b/packages/gatsby-source-contentful/README.md index 3161e7d83f8fb..74980f5257a9e 100644 --- a/packages/gatsby-source-contentful/README.md +++ b/packages/gatsby-source-contentful/README.md @@ -167,12 +167,6 @@ Additional config which will get passed to [Contentfuls JS SDK](https://github.c Use this with caution, you might override values this plugin does set for you to connect to Contentful. -**`enableTags`** [boolean][optional] [default: `false`] - -Enable the new [tags feature](https://www.contentful.com/blog/2021/04/08/governance-tagging-metadata/). This will disallow the content type name `tags` till the next major version of this plugin. - -Learn how to use them at the [Contentful Tags](#contentful-tags) section. - ## How to query for nodes Two standard node types are available from Contentful: `Asset` and `ContentType`. @@ -380,8 +374,6 @@ module.exports = { ## [Contentful Tags](https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/content-tags) -You need to set the `enableTags` flag to `true` to use this new feature. - ### List available tags This example lists all available tags. The sorting is optional. diff --git a/packages/gatsby-source-contentful/src/__fixtures__/rich-text-data.js b/packages/gatsby-source-contentful/src/__fixtures__/rich-text-data.js index 6a0200de2dc4e..8a8a0cae01e19 100644 --- a/packages/gatsby-source-contentful/src/__fixtures__/rich-text-data.js +++ b/packages/gatsby-source-contentful/src/__fixtures__/rich-text-data.js @@ -438,6 +438,7 @@ exports.initialSync = () => { }, }, }, + metadata: { tags: [] }, }, { sys: { @@ -600,6 +601,7 @@ exports.initialSync = () => { }, }, }, + metadata: { tags: [] }, }, ], assets: [ diff --git a/packages/gatsby-source-contentful/src/__fixtures__/starter-blog-data.js b/packages/gatsby-source-contentful/src/__fixtures__/starter-blog-data.js index eafa7a2723a4d..4279015592b3e 100644 --- a/packages/gatsby-source-contentful/src/__fixtures__/starter-blog-data.js +++ b/packages/gatsby-source-contentful/src/__fixtures__/starter-blog-data.js @@ -66,6 +66,7 @@ exports.initialSync = () => { publishDate: { "en-US": `2017-05-12T00:00+02:00` }, tags: { "en-US": [`javascript`] }, }, + metadata: { tags: [] }, }, { sys: { @@ -131,6 +132,7 @@ exports.initialSync = () => { publishDate: { "en-US": `2017-05-15T00:00+02:00` }, tags: { "en-US": [`general`] }, }, + metadata: { tags: [] }, }, { sys: { @@ -196,6 +198,7 @@ exports.initialSync = () => { publishDate: { "en-US": `2017-05-16T00:00+02:00` }, tags: { "en-US": [`javascript`, `static-sites`] }, }, + metadata: { tags: [] }, }, { sys: { @@ -252,6 +255,7 @@ exports.initialSync = () => { }, }, }, + metadata: { tags: [] }, }, ], assets: [ @@ -765,6 +769,7 @@ exports.createBlogPost = () => { }, publishDate: { "en-US": `2020-04-01T00:00+02:00` }, }, + metadata: { tags: [] }, }, ], assets: [ @@ -1155,6 +1160,7 @@ exports.updateBlogPost = () => { }, publishDate: { "en-US": `2020-05-15T00:00+02:00` }, }, + metadata: { tags: [] }, }, ], assets: [], diff --git a/packages/gatsby-source-contentful/src/__tests__/__snapshots__/gatsby-node.js.snap b/packages/gatsby-source-contentful/src/__tests__/__snapshots__/gatsby-node.js.snap index 7e1914f895ae1..8b66ac2cc8fd6 100644 --- a/packages/gatsby-source-contentful/src/__tests__/__snapshots__/gatsby-node.js.snap +++ b/packages/gatsby-source-contentful/src/__tests__/__snapshots__/gatsby-node.js.snap @@ -13,6 +13,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypeBlogPost", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Blog Post", "publishDate": "2020-04-01T00:00+02:00", "slug": "integration-tests", @@ -51,6 +54,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypePerson", }, + "metadata": Object { + "tags___NODE": Array [], + }, "name": "John Doe", "parent": "Person", "phone": "0176 / 1234567", @@ -84,6 +90,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypeBlogPost", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Blog Post", "publishDate": "2020-04-01T00:00+02:00", "slug": "integration-tests", @@ -122,6 +131,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypePerson", }, + "metadata": Object { + "tags___NODE": Array [], + }, "name": "John Doe", "parent": "Person", "phone": "0176 / 1234567", @@ -161,6 +173,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypePerson", }, + "metadata": Object { + "tags___NODE": Array [], + }, "name": "John Doe", "parent": "Person", "phone": "0176 / 1234567", @@ -200,6 +215,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypePerson", }, + "metadata": Object { + "tags___NODE": Array [], + }, "name": "John Doe", "parent": "Person", "phone": "0176 / 1234567", @@ -233,6 +251,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypeBlogPost", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Blog Post", "publishDate": "2020-05-15T00:00+02:00", "slug": "hello-world-1234", @@ -271,6 +292,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypePerson", }, + "metadata": Object { + "tags___NODE": Array [], + }, "name": "John Doe", "parent": "Person", "phone": "0176 / 1234567", @@ -304,6 +328,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypeBlogPost", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Blog Post", "publishDate": "2020-05-15T00:00+02:00", "slug": "hello-world-1234", @@ -342,6 +369,9 @@ Object { "owner": "gatsby-source-contentful", "type": "ContentfulContentTypePerson", }, + "metadata": Object { + "tags___NODE": Array [], + }, "name": "John Doe", "parent": "Person", "phone": "0176 / 1234567", diff --git a/packages/gatsby-source-contentful/src/__tests__/__snapshots__/normalize.js.snap b/packages/gatsby-source-contentful/src/__tests__/__snapshots__/normalize.js.snap index d0aff9c0214bc..715a2152662b5 100644 --- a/packages/gatsby-source-contentful/src/__tests__/__snapshots__/normalize.js.snap +++ b/packages/gatsby-source-contentful/src/__tests__/__snapshots__/normalize.js.snap @@ -64,6 +64,9 @@ Array [ "en-US": "Home & Kitchen", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -158,6 +161,9 @@ Array [ "en-US": "Toys", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -267,6 +273,9 @@ Array [ "en-US": "http://www.normann-copenhagen.com/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -391,6 +400,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://www.lemnos.jp/en/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -487,6 +499,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://playsam.com/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -809,6 +824,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://www.amazon.com/dp/B001R6JUZ2/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -1138,6 +1156,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://www.amazon.com/dp/B00E82D7I8/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -1469,6 +1490,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://www.amazon.com/dp/B0081F2CCK/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -1817,6 +1841,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://store.dwell.com/soso-wall-clock.html", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -1936,6 +1963,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te }, }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -2002,6 +2032,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "Contentful images inlined in Markdown", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -2883,6 +2916,9 @@ Array [ "contentDigest": "2020-06-30T11:22:54.201Z", "type": "ContentfulContentTypeC6XwpTaSiiI2Ak2Ww0Oi6Qa", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c6XwpTaSiiI2Ak2Ww0oi6qa", "sys": Object { "contentType___NODE": "c6XwpTaSiiI2Ak2Ww0oi6qa", @@ -2911,6 +2947,9 @@ Array [ "contentDigest": "2017-06-27T09:46:43.477Z", "type": "ContentfulContentTypeC6XwpTaSiiI2Ak2Ww0Oi6Qa", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c6XwpTaSiiI2Ak2Ww0oi6qa", "sys": Object { "contentType___NODE": "c6XwpTaSiiI2Ak2Ww0oi6qa", @@ -3015,6 +3054,9 @@ Array [ "contentDigest": "2020-06-30T11:22:54.201Z", "type": "ContentfulContentTypeC6XwpTaSiiI2Ak2Ww0Oi6Qa", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c6XwpTaSiiI2Ak2Ww0oi6qa", "sys": Object { "contentType___NODE": "c6XwpTaSiiI2Ak2Ww0oi6qa", @@ -3043,6 +3085,9 @@ Array [ "contentDigest": "2017-06-27T09:46:43.477Z", "type": "ContentfulContentTypeC6XwpTaSiiI2Ak2Ww0Oi6Qa", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c6XwpTaSiiI2Ak2Ww0oi6qa", "sys": Object { "contentType___NODE": "c6XwpTaSiiI2Ak2Ww0oi6qa", @@ -3148,6 +3193,9 @@ Array [ "type": "ContentfulContentTypeSFzTZbSuM8CoEwygeUYes", }, "logo___NODE": "rocybtov1ozk___c3wtvPBbBjiMKqKKga8I2Cu___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "sFzTZbSuM8coEwygeUYes", "phone": Array [ "+45 35 55 44 59", @@ -3182,6 +3230,9 @@ Array [ "type": "ContentfulContentTypeSFzTZbSuM8CoEwygeUYes", }, "logo___NODE": "rocybtov1ozk___c2Y8LhXLnYAYqKCGEWG4EKI___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "sFzTZbSuM8coEwygeUYes", "phone": Array [ "+1 212 260 2269", @@ -3214,6 +3265,9 @@ Array [ "type": "ContentfulContentTypeSFzTZbSuM8CoEwygeUYes", }, "logo___NODE": "rocybtov1ozk___c4zj1ZOfHgQ8oqgaSKm4Qo2___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "sFzTZbSuM8coEwygeUYes", "sys": Object { "contentType___NODE": "sFzTZbSuM8coEwygeUYes", @@ -3365,6 +3419,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeSFzTZbSuM8CoEwygeUYes", }, "logo___NODE": "rocybtov1ozk___c3wtvPBbBjiMKqKKga8I2Cu___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "sFzTZbSuM8coEwygeUYes", "phone": Array [ "+45 35 55 44 59", @@ -3399,6 +3456,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeSFzTZbSuM8CoEwygeUYes", }, "logo___NODE": "rocybtov1ozk___c2Y8LhXLnYAYqKCGEWG4EKI___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "sFzTZbSuM8coEwygeUYes", "phone": Array [ "+1 212 260 2269", @@ -3431,6 +3491,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeSFzTZbSuM8CoEwygeUYes", }, "logo___NODE": "rocybtov1ozk___c4zj1ZOfHgQ8oqgaSKm4Qo2___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "sFzTZbSuM8coEwygeUYes", "sys": Object { "contentType___NODE": "sFzTZbSuM8coEwygeUYes", @@ -3581,6 +3644,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:56:59.626Z", "type": "ContentfulContentTypeC2PqfXuJwE8QSyKuM0U6W8M", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c2PqfXUJwE8qSYKuM0U6w8M", "price": 44, "productDescription___NODE": "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___EntryproductDescriptionTextNode", @@ -3625,6 +3691,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:54:51.159Z", "type": "ContentfulContentTypeC2PqfXuJwE8QSyKuM0U6W8M", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c2PqfXUJwE8qSYKuM0U6w8M", "price": 11, "productDescription___NODE": "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___EntryproductDescriptionTextNode", @@ -3667,6 +3736,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:53:23.179Z", "type": "ContentfulContentTypeC2PqfXuJwE8QSyKuM0U6W8M", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c2PqfXUJwE8qSYKuM0U6w8M", "price": 22, "productDescription___NODE": "rocybtov1ozk___c6dbjWqNd9SqccegcqYq224___EntryproductDescriptionTextNode", @@ -3711,6 +3783,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:52:29.215Z", "type": "ContentfulContentTypeC2PqfXuJwE8QSyKuM0U6W8M", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c2PqfXUJwE8qSYKuM0U6w8M", "price": 120, "productDescription___NODE": "rocybtov1ozk___c4BqrajvA8E6qwgkieoqmqO___EntryproductDescriptionTextNode", @@ -3881,6 +3956,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:56:59.626Z", "type": "ContentfulContentTypeC2PqfXuJwE8QSyKuM0U6W8M", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c2PqfXUJwE8qSYKuM0U6w8M", "price": 44, "productDescription___NODE": "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___deproductDescriptionTextNode", @@ -3925,6 +4003,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:54:51.159Z", "type": "ContentfulContentTypeC2PqfXuJwE8QSyKuM0U6W8M", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c2PqfXUJwE8qSYKuM0U6w8M", "price": 11, "productDescription___NODE": "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry___deproductDescriptionTextNode", @@ -3967,6 +4048,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:53:23.179Z", "type": "ContentfulContentTypeC2PqfXuJwE8QSyKuM0U6W8M", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c2PqfXUJwE8qSYKuM0U6w8M", "price": 22, "productDescription___NODE": "rocybtov1ozk___c6dbjWqNd9SqccegcqYq224___Entry___deproductDescriptionTextNode", @@ -4011,6 +4095,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:52:29.215Z", "type": "ContentfulContentTypeC2PqfXuJwE8QSyKuM0U6W8M", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "c2PqfXUJwE8qSYKuM0U6w8M", "price": 120, "productDescription___NODE": "rocybtov1ozk___c4BqrajvA8E6qwgkieoqmqO___Entry___deproductDescriptionTextNode", @@ -4251,6 +4338,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "packages/*", ], }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "jsonTest", "sys": Object { "contentType___NODE": "jsonTest", @@ -4372,6 +4462,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "packages/*", ], }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "jsonTest", "sys": Object { "contentType___NODE": "jsonTest", @@ -4417,6 +4510,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2018-05-28T08:49:06.230Z", "type": "ContentfulContentTypeRemarkTest", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "remarkTest", "sys": Object { "contentType___NODE": "remarkTest", @@ -4520,6 +4616,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2018-05-28T08:49:06.230Z", "type": "ContentfulContentTypeRemarkTest", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "remarkTest", "sys": Object { "contentType___NODE": "remarkTest", @@ -4659,6 +4758,9 @@ Array [ "en-US": "Home & Kitchen", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -4753,6 +4855,9 @@ Array [ "en-US": "Toys", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -4862,6 +4967,9 @@ Array [ "en-US": "http://www.normann-copenhagen.com/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -4986,6 +5094,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://www.lemnos.jp/en/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -5082,6 +5193,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://playsam.com/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -5404,6 +5518,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://www.amazon.com/dp/B001R6JUZ2/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -5733,6 +5850,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://www.amazon.com/dp/B00E82D7I8/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -6064,6 +6184,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://www.amazon.com/dp/B0081F2CCK/", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -6412,6 +6535,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "http://store.dwell.com/soso-wall-clock.html", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -6531,6 +6657,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te }, }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -6597,6 +6726,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "en-US": "Contentful images inlined in Markdown", }, }, + "metadata": Object { + "tags": Array [], + }, "sys": Object { "contentType": Object { "sys": Object { @@ -7473,6 +7605,9 @@ Array [ "contentDigest": "2020-06-30T11:22:54.201Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry", @@ -7503,6 +7638,9 @@ Array [ "contentDigest": "2017-06-27T09:46:43.477Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry", @@ -7605,6 +7743,9 @@ Array [ "contentDigest": "2020-06-30T11:22:54.201Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry___de", @@ -7635,6 +7776,9 @@ Array [ "contentDigest": "2017-06-27T09:46:43.477Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___de", @@ -7739,6 +7883,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c3wtvPBbBjiMKqKKga8I2Cu___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+45 35 55 44 59", @@ -7774,6 +7921,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c2Y8LhXLnYAYqKCGEWG4EKI___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+1 212 260 2269", @@ -7806,6 +7956,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c4zj1ZOfHgQ8oqgaSKm4Qo2___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry", @@ -7956,6 +8109,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c3wtvPBbBjiMKqKKga8I2Cu___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+45 35 55 44 59", @@ -7991,6 +8147,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c2Y8LhXLnYAYqKCGEWG4EKI___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+1 212 260 2269", @@ -8023,6 +8182,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c4zj1ZOfHgQ8oqgaSKm4Qo2___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___de", @@ -8176,6 +8338,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:56:59.626Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 44, "productDescription___NODE": "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___EntryproductDescriptionTextNode", @@ -8220,6 +8385,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:54:51.159Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 11, "productDescription___NODE": "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___EntryproductDescriptionTextNode", @@ -8262,6 +8430,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:53:23.179Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 22, "productDescription___NODE": "rocybtov1ozk___c6dbjWqNd9SqccegcqYq224___EntryproductDescriptionTextNode", @@ -8306,6 +8477,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:52:29.215Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 120, "productDescription___NODE": "rocybtov1ozk___c4BqrajvA8E6qwgkieoqmqO___EntryproductDescriptionTextNode", @@ -8476,6 +8650,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:56:59.626Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 44, "productDescription___NODE": "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___deproductDescriptionTextNode", @@ -8520,6 +8697,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:54:51.159Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 11, "productDescription___NODE": "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry___deproductDescriptionTextNode", @@ -8562,6 +8742,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:53:23.179Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 22, "productDescription___NODE": "rocybtov1ozk___c6dbjWqNd9SqccegcqYq224___Entry___deproductDescriptionTextNode", @@ -8606,6 +8789,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:52:29.215Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 120, "productDescription___NODE": "rocybtov1ozk___c4BqrajvA8E6qwgkieoqmqO___Entry___deproductDescriptionTextNode", @@ -8846,6 +9032,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "packages/*", ], }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "JSON-test", "sys": Object { "contentType___NODE": "JSON-test", @@ -8967,6 +9156,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "packages/*", ], }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "JSON-test", "sys": Object { "contentType___NODE": "JSON-test", @@ -9012,6 +9204,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2018-05-28T08:49:06.230Z", "type": "ContentfulContentTypeRemarkTest", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Remark Test", "sys": Object { "contentType___NODE": "Remark Test", @@ -9115,6 +9310,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2018-05-28T08:49:06.230Z", "type": "ContentfulContentTypeRemarkTest", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Remark Test", "sys": Object { "contentType___NODE": "Remark Test", @@ -9867,6 +10065,9 @@ Array [ "contentDigest": "2020-06-30T11:22:54.201Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry", @@ -9897,6 +10098,9 @@ Array [ "contentDigest": "2017-06-27T09:46:43.477Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry", @@ -9999,6 +10203,9 @@ Array [ "contentDigest": "2020-06-30T11:22:54.201Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry___de", @@ -10029,6 +10236,9 @@ Array [ "contentDigest": "2017-06-27T09:46:43.477Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___de", @@ -10133,6 +10343,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c3wtvPBbBjiMKqKKga8I2Cu___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+45 35 55 44 59", @@ -10168,6 +10381,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c2Y8LhXLnYAYqKCGEWG4EKI___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+1 212 260 2269", @@ -10200,6 +10416,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c4zj1ZOfHgQ8oqgaSKm4Qo2___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry", @@ -10350,6 +10569,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c3wtvPBbBjiMKqKKga8I2Cu___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+45 35 55 44 59", @@ -10385,6 +10607,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c2Y8LhXLnYAYqKCGEWG4EKI___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+1 212 260 2269", @@ -10417,6 +10642,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c4zj1ZOfHgQ8oqgaSKm4Qo2___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___de", @@ -10570,6 +10798,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:56:59.626Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 44, "productDescription___NODE": "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___EntryproductDescriptionTextNode", @@ -10614,6 +10845,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:54:51.159Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 11, "productDescription___NODE": "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___EntryproductDescriptionTextNode", @@ -10656,6 +10890,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:53:23.179Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 22, "productDescription___NODE": "rocybtov1ozk___c6dbjWqNd9SqccegcqYq224___EntryproductDescriptionTextNode", @@ -10700,6 +10937,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:52:29.215Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 120, "productDescription___NODE": "rocybtov1ozk___c4BqrajvA8E6qwgkieoqmqO___EntryproductDescriptionTextNode", @@ -10870,6 +11110,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:56:59.626Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 44, "productDescription___NODE": "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___deproductDescriptionTextNode", @@ -10914,6 +11157,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:54:51.159Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 11, "productDescription___NODE": "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry___deproductDescriptionTextNode", @@ -10956,6 +11202,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:53:23.179Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 22, "productDescription___NODE": "rocybtov1ozk___c6dbjWqNd9SqccegcqYq224___Entry___deproductDescriptionTextNode", @@ -11000,6 +11249,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:52:29.215Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 120, "productDescription___NODE": "rocybtov1ozk___c4BqrajvA8E6qwgkieoqmqO___Entry___deproductDescriptionTextNode", @@ -11240,6 +11492,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "packages/*", ], }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "JSON-test", "sys": Object { "contentType___NODE": "JSON-test", @@ -11361,6 +11616,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "packages/*", ], }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "JSON-test", "sys": Object { "contentType___NODE": "JSON-test", @@ -11406,6 +11664,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2018-05-28T08:49:06.230Z", "type": "ContentfulContentTypeRemarkTest", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Remark Test", "sys": Object { "contentType___NODE": "Remark Test", @@ -11509,6 +11770,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2018-05-28T08:49:06.230Z", "type": "ContentfulContentTypeRemarkTest", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Remark Test", "sys": Object { "contentType___NODE": "Remark Test", @@ -12261,6 +12525,9 @@ Array [ "contentDigest": "2020-06-30T11:22:54.201Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry", @@ -12291,6 +12558,9 @@ Array [ "contentDigest": "2017-06-27T09:46:43.477Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry", @@ -12393,6 +12663,9 @@ Array [ "contentDigest": "2020-06-30T11:22:54.201Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry___de", @@ -12423,6 +12696,9 @@ Array [ "contentDigest": "2017-06-27T09:46:43.477Z", "type": "ContentfulContentTypeCategory", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Category", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___de", @@ -12527,6 +12803,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c3wtvPBbBjiMKqKKga8I2Cu___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+45 35 55 44 59", @@ -12562,6 +12841,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c2Y8LhXLnYAYqKCGEWG4EKI___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+1 212 260 2269", @@ -12594,6 +12876,9 @@ Array [ "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c4zj1ZOfHgQ8oqgaSKm4Qo2___Asset", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry", @@ -12744,6 +13029,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c3wtvPBbBjiMKqKKga8I2Cu___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+45 35 55 44 59", @@ -12779,6 +13067,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c2Y8LhXLnYAYqKCGEWG4EKI___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "phone": Array [ "+1 212 260 2269", @@ -12811,6 +13102,9 @@ Our Lemnos products are made carefully by our craftsmen finely honed skillful te "type": "ContentfulContentTypeBrand", }, "logo___NODE": "rocybtov1ozk___c4zj1ZOfHgQ8oqgaSKm4Qo2___Asset___de", + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Brand", "product___NODE": Array [ "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___de", @@ -12964,6 +13258,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:56:59.626Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 44, "productDescription___NODE": "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___EntryproductDescriptionTextNode", @@ -13008,6 +13305,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:54:51.159Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 11, "productDescription___NODE": "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___EntryproductDescriptionTextNode", @@ -13050,6 +13350,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:53:23.179Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 22, "productDescription___NODE": "rocybtov1ozk___c6dbjWqNd9SqccegcqYq224___EntryproductDescriptionTextNode", @@ -13094,6 +13397,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:52:29.215Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 120, "productDescription___NODE": "rocybtov1ozk___c4BqrajvA8E6qwgkieoqmqO___EntryproductDescriptionTextNode", @@ -13264,6 +13570,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:56:59.626Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 44, "productDescription___NODE": "rocybtov1ozk___c5KsDBWseXY6QegucYAoacS___Entry___deproductDescriptionTextNode", @@ -13308,6 +13617,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:54:51.159Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 11, "productDescription___NODE": "rocybtov1ozk___c3DVqIYj4dOwwcKu6sgqOgg___Entry___deproductDescriptionTextNode", @@ -13350,6 +13662,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:53:23.179Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 22, "productDescription___NODE": "rocybtov1ozk___c6dbjWqNd9SqccegcqYq224___Entry___deproductDescriptionTextNode", @@ -13394,6 +13709,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2017-06-27T09:52:29.215Z", "type": "ContentfulContentTypeProduct", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Product", "price": 120, "productDescription___NODE": "rocybtov1ozk___c4BqrajvA8E6qwgkieoqmqO___Entry___deproductDescriptionTextNode", @@ -13634,6 +13952,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "packages/*", ], }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "JSON-test", "sys": Object { "contentType___NODE": "JSON-test", @@ -13755,6 +14076,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "packages/*", ], }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "JSON-test", "sys": Object { "contentType___NODE": "JSON-test", @@ -13800,6 +14124,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2018-05-28T08:49:06.230Z", "type": "ContentfulContentTypeRemarkTest", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Remark Test", "sys": Object { "contentType___NODE": "Remark Test", @@ -13903,6 +14230,9 @@ Unsere Lemnos Produkte werden sorgfältig von unseren Handwerkern fein geschliff "contentDigest": "2018-05-28T08:49:06.230Z", "type": "ContentfulContentTypeRemarkTest", }, + "metadata": Object { + "tags___NODE": Array [], + }, "parent": "Remark Test", "sys": Object { "contentType___NODE": "Remark Test", diff --git a/packages/gatsby-source-contentful/src/__tests__/data.json b/packages/gatsby-source-contentful/src/__tests__/data.json index 3ae5343044db9..3fa40a1e5973b 100644 --- a/packages/gatsby-source-contentful/src/__tests__/data.json +++ b/packages/gatsby-source-contentful/src/__tests__/data.json @@ -1,4 +1,5 @@ { + "___@todo": "move this files into fixtures directory", "currentSyncData": { "entries": [ { @@ -83,7 +84,8 @@ "de": "Shop für Möbel, Bettwäsche, Bad, Staubsauger, Küchenprodukte und vieles mehr", "en-US": "Shop for furniture, bedding, bath, vacuums, kitchen products, and more" } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -189,7 +191,8 @@ } }, "jsonStringTest": { "en-US": ["test"] } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -229,7 +232,8 @@ "content": { "en-US": "## Toys\n\n![Toys](//images.ctfassets.net/rocybtov1ozk/6t4HKjytPi0mYgs240wkG/6e730b1e6c2a46929239019240c037e6/toys_512pxGREY.png) \n\n## Chive\n\n![Chive logo](//images.ctfassets.net/rocybtov1ozk/1MgbdJNTsMWKI0W68oYqkU/ad0200fe320b85ecdd823c711161c2f6/9ef190c59f0d375c0dea58b58a4bc1f0.jpeg) \n\n## Playsam Streamliner\n\n![Playsam Streamliner](//images.ctfassets.net/rocybtov1ozk/wtrHxeu3zEoEce2MokCSi/73dce36715f16e27cf5ff0d2d97d7dff/quwowooybuqbl6ntboz3.jpg) \n\n## Whisk beaters\n\n![Whisk beaters](//images.ctfassets.net/rocybtov1ozk/10TkaLheGeQG6qQGqWYqUI/f997e8e13c8c83c145e976d0905e64b7/ryugj83mqwa1asojwtwb.jpg) \n\n## SoSo Wall Clock\n\n![SoSo Wall Clock](//images.ctfassets.net/rocybtov1ozk/KTRF62Q4gg60q6WCsWKw8/a8b2e93ac83fbbbb7bf9fba9f92b018e/soso.clock.jpg) \n\n## Hudson Wall Cup\n\n![Hudson Wall Cup ](//images.ctfassets.net/rocybtov1ozk/Xc0ny7GWsMEMCeASWO2um/af8e29320c04af689798afe96e2345c7/jqvtazcyfwseah9fmysz.jpg)" } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -502,7 +506,8 @@ "quantity": { "en-US": 56 }, "sku": { "en-US": "B001R6JUZ2" }, "website": { "en-US": "http://www.amazon.com/dp/B001R6JUZ2/" } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -590,7 +595,8 @@ "twitter": { "en-US": "https://twitter.com/NormannCPH" }, "email": { "en-US": "normann@normann-copenhagen.com" }, "phone": { "en-US": ["+45 35 55 44 59"] } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -861,7 +867,8 @@ "quantity": { "en-US": 101 }, "sku": { "en-US": "B00E82D7I8" }, "website": { "en-US": "http://www.amazon.com/dp/B00E82D7I8/" } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -1140,7 +1147,8 @@ "quantity": { "en-US": 89 }, "sku": { "en-US": "B0081F2CCK" }, "website": { "en-US": "http://www.amazon.com/dp/B0081F2CCK/" } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -1418,7 +1426,8 @@ "quantity": { "en-US": 3 }, "sku": { "en-US": "B00MG4ULK2" }, "website": { "en-US": "http://store.dwell.com/soso-wall-clock.html" } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -1505,7 +1514,8 @@ "website": { "en-US": "http://www.lemnos.jp/en/" }, "email": { "en-US": "info@acgears.com" }, "phone": { "en-US": ["+1 212 260 2269"] } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -1590,7 +1600,8 @@ "en-US": "Playsam is the leading Scandinavian design company for executive wooden toy gift. Scandinavian design playful creativity, integrity and sophistication are Playsam. Scandinavian design and wooden toy makes Playsam gift lovely to the world of design since 1984." }, "website": { "en-US": "http://playsam.com/" } - } + }, + "metadata": { "tags": [] } }, { "sys": { @@ -1674,7 +1685,8 @@ "de": "Spielzeugladen, Spiele, Lernhilfen", "en-US": "Shop for toys, games, educational aids" } - } + }, + "metadata": { "tags": [] } } ], "assets": [ diff --git a/packages/gatsby-source-contentful/src/__tests__/fetch-backoff.js b/packages/gatsby-source-contentful/src/__tests__/fetch-backoff.js index cc3658bcf5407..bf6d3375247a9 100644 --- a/packages/gatsby-source-contentful/src/__tests__/fetch-backoff.js +++ b/packages/gatsby-source-contentful/src/__tests__/fetch-backoff.js @@ -87,6 +87,11 @@ describe(`fetch-backoff`, () => { `/spaces/${options.spaceId}/environments/master/content_types?skip=0&limit=1000&order=sys.createdAt` ) .reply(200, { items: [] }) + // Tags + .get( + `/spaces/${options.spaceId}/environments/master/tags?skip=0&limit=1000&order=sys.createdAt` + ) + .reply(200, { items: [] }) await fetchData({ pluginConfig, reporter }) @@ -130,6 +135,11 @@ describe(`fetch-backoff`, () => { `/spaces/${options.spaceId}/environments/master/content_types?skip=0&limit=1000&order=sys.createdAt` ) .reply(200, { items: [] }) + // Tags + .get( + `/spaces/${options.spaceId}/environments/master/tags?skip=0&limit=1000&order=sys.createdAt` + ) + .reply(200, { items: [] }) await fetchData({ pluginConfig, reporter }) diff --git a/packages/gatsby-source-contentful/src/__tests__/fetch-network-errors.js b/packages/gatsby-source-contentful/src/__tests__/fetch-network-errors.js index 8f3d0a2db687a..0956ce974971a 100644 --- a/packages/gatsby-source-contentful/src/__tests__/fetch-network-errors.js +++ b/packages/gatsby-source-contentful/src/__tests__/fetch-network-errors.js @@ -70,6 +70,11 @@ describe(`fetch-retry`, () => { `/spaces/${options.spaceId}/environments/master/content_types?skip=0&limit=1000&order=sys.createdAt` ) .reply(200, { items: [] }) + // Tags + .get( + `/spaces/${options.spaceId}/environments/master/tags?skip=0&limit=1000&order=sys.createdAt` + ) + .reply(200, { items: [] }) await fetchData({ pluginConfig, reporter }) diff --git a/packages/gatsby-source-contentful/src/__tests__/fetch.js b/packages/gatsby-source-contentful/src/__tests__/fetch.js index d9bbbd4479047..d0d8c5ee1f06b 100644 --- a/packages/gatsby-source-contentful/src/__tests__/fetch.js +++ b/packages/gatsby-source-contentful/src/__tests__/fetch.js @@ -188,7 +188,7 @@ it(`calls contentful.getContentTypes with custom plugin option page limit`, asyn }) describe(`Tags feature`, () => { - it(`tags are disabled by default`, async () => { + it(`calls contentful.getTags`, async () => { await fetchData({ pluginConfig: createPluginConfig({ accessToken: `6f35edf0db39085e9b9c19bd92943e4519c77e72c852d961968665f1324bfc94`, @@ -198,20 +198,6 @@ describe(`Tags feature`, () => { reporter, }) - expect(reporter.panic).not.toBeCalled() - expect(mockClient.getTags).not.toBeCalled() - }) - it(`calls contentful.getTags when enabled`, async () => { - await fetchData({ - pluginConfig: createPluginConfig({ - accessToken: `6f35edf0db39085e9b9c19bd92943e4519c77e72c852d961968665f1324bfc94`, - spaceId: `rocybtov1ozk`, - pageLimit: 50, - enableTags: true, - }), - reporter, - }) - expect(reporter.panic).not.toBeCalled() expect(mockClient.getTags).toHaveBeenCalledWith({ limit: 50, diff --git a/packages/gatsby-source-contentful/src/fetch.js b/packages/gatsby-source-contentful/src/fetch.js index 136031150d68e..43c2557c161e6 100644 --- a/packages/gatsby-source-contentful/src/fetch.js +++ b/packages/gatsby-source-contentful/src/fetch.js @@ -298,22 +298,20 @@ ${formatPluginOptionsForCLI(pluginConfig.getOriginalPluginOptions(), errors)}`, const contentTypeItems = contentTypes.items // We need to fetch tags with the non-sync API as the sync API doesn't support this. - let tagItems = [] - if (pluginConfig.get(`enableTags`)) { - try { - const tagsResult = await pagedGet(client, `getTags`, pageLimit) - tagItems = tagsResult.items - reporter.verbose(`Tags fetched ${tagItems.length}`) - } catch (e) { - reporter.panic({ - id: CODES.FetchTags, - context: { - sourceMessage: `Error fetching tags: ${createContentfulErrorMessage( - e - )}`, - }, - }) - } + let tagItems + try { + const tagsResult = await pagedGet(client, `getTags`, pageLimit) + tagItems = tagsResult.items + reporter.verbose(`Tags fetched ${tagItems.length}`) + } catch (e) { + reporter.panic({ + id: CODES.FetchTags, + context: { + sourceMessage: `Error fetching tags: ${createContentfulErrorMessage( + e + )}`, + }, + }) } const result = { diff --git a/packages/gatsby-source-contentful/src/gatsby-node.js b/packages/gatsby-source-contentful/src/gatsby-node.js index f38adcb835f05..9ce1aa898d1bb 100644 --- a/packages/gatsby-source-contentful/src/gatsby-node.js +++ b/packages/gatsby-source-contentful/src/gatsby-node.js @@ -307,35 +307,6 @@ exports.sourceNodes = async ( } } - // Check for restricted content type names - const useNameForId = pluginConfig.get(`useNameForId`) - const restrictedContentTypes = [`entity`, `reference`, `asset`] - - if (pluginConfig.get(`enableTags`)) { - restrictedContentTypes.push(`tags`) - } - - contentTypeItems.forEach(contentTypeItem => { - // Establish identifier for content type - // Use `name` if specified, otherwise, use internal id (usually a natural-language constant, - // but sometimes a base62 uuid generated by Contentful, hence the option) - let contentTypeItemId - if (useNameForId) { - contentTypeItemId = contentTypeItem.name.toLowerCase() - } else { - contentTypeItemId = contentTypeItem.sys.id.toLowerCase() - } - - if (restrictedContentTypes.includes(contentTypeItemId)) { - reporter.panic({ - id: CODES.FetchContentTypes, - context: { - sourceMessage: `Restricted ContentType name found. The name "${contentTypeItemId}" is not allowed.`, - }, - }) - } - }) - const allLocales = locales locales = locales.filter(pluginConfig.get(`localeFilter`)) reporter.verbose( @@ -636,6 +607,7 @@ exports.sourceNodes = async ( reporter.info(`Creating ${tagItems.length} Contentful Tag nodes`) for (const tag of tagItems) { + console.log(`ContentfulTag__${space.sys.id}__${tag.sys.id}`) await createNode({ id: createNodeId(`ContentfulTag__${space.sys.id}__${tag.sys.id}`), name: tag.name, diff --git a/packages/gatsby-source-contentful/src/generate-schema.js b/packages/gatsby-source-contentful/src/generate-schema.js index aa0c3c22b2353..a08ab4b15cd16 100644 --- a/packages/gatsby-source-contentful/src/generate-schema.js +++ b/packages/gatsby-source-contentful/src/generate-schema.js @@ -107,7 +107,7 @@ const translateFieldType = field => { function generateAssetTypes({ createTypes }) { createTypes(` type ContentfulAsset implements ContentfulReference & Node { - sys: ContentfulSys + sys: ContentfulSys! id: ID! title: String description: String @@ -131,7 +131,7 @@ export function generateSchema({ createTypes(` interface ContentfulReference implements Node { id: ID! - sys: ContentfulSys + sys: ContentfulSys! } `) @@ -159,12 +159,36 @@ export function generateSchema({ `) createTypes(` - interface ContentfulEntry implements Node @dontInfer { + interface ContentfulEntry implements ContentfulReference & Node @dontInfer { id: ID! - sys: ContentfulSys + sys: ContentfulSys! + metadata: ContentfulMetadata! } `) + createTypes( + schema.buildObjectType({ + name: `ContentfulMetadata`, + fields: { + tags: { type: `[ContentfulTag]!` }, + }, + extensions: { dontInfer: {} }, + }) + ) + + createTypes( + schema.buildObjectType({ + name: `ContentfulTag`, + fields: { + name: { type: `String!` }, + contentful_id: { type: `String!` }, + id: { type: `ID!` }, + }, + interfaces: [`Node`], + extensions: { dontInfer: {} }, + }) + ) + // Assets generateAssetTypes({ createTypes }) @@ -189,21 +213,6 @@ export function generateSchema({ } // Contentful specific types - if (pluginConfig.get(`enableTags`)) { - createTypes( - schema.buildObjectType({ - name: `ContentfulTag`, - fields: { - name: { type: `String!` }, - contentful_id: { type: `String!` }, - id: { type: `ID!` }, - }, - interfaces: [`Node`], - extensions: { dontInfer: {} }, - }) - ) - } - createTypes( schema.buildObjectType({ name: `ContentfulRichTextAssets`, @@ -303,6 +312,7 @@ export function generateSchema({ fields: { raw: `String!`, }, + // @todo do we need a node interface here? interfaces: [`Node`], extensions: { dontInfer: {}, @@ -330,7 +340,8 @@ export function generateSchema({ name: makeTypeName(type), fields: { id: { type: `ID!` }, - sys: { type: `ContentfulSys` }, + sys: { type: `ContentfulSys!` }, + metadata: { type: `ContentfulMetadata!` }, ...fields, }, interfaces: [`ContentfulReference`, `ContentfulEntry`, `Node`], diff --git a/packages/gatsby-source-contentful/src/normalize.js b/packages/gatsby-source-contentful/src/normalize.js index af491bec6eb06..0cf579424e82d 100644 --- a/packages/gatsby-source-contentful/src/normalize.js +++ b/packages/gatsby-source-contentful/src/normalize.js @@ -440,17 +440,14 @@ exports.createNodesForContentType = ({ entryNode = { ...entryItemFields, ...entryNode, - } - - // Link tags - if (pluginConfig.get(`enableTags`)) { - entryNode.metadata = { - tags___NODE: entryItem.metadata.tags.map(tag => - createNodeId(`ContentfulTag__${space.sys.id}__${tag.sys.id}`) + metadata: { + tags___NODE: entryItem.metadata.tags.map( + tag => + console.log(`ContentfulTag__${space.sys.id}__${tag.sys.id}`) || + createNodeId(`ContentfulTag__${space.sys.id}__${tag.sys.id}`) ), - } + }, } - return entryNode }) .filter(Boolean) diff --git a/packages/gatsby-source-contentful/src/plugin-options.js b/packages/gatsby-source-contentful/src/plugin-options.js index 5fe9d96fa3453..7319b2432d230 100644 --- a/packages/gatsby-source-contentful/src/plugin-options.js +++ b/packages/gatsby-source-contentful/src/plugin-options.js @@ -12,7 +12,6 @@ const defaultOptions = { forceFullSync: false, pageLimit: DEFAULT_PAGE_LIMIT, useNameForId: true, - enableTags: false, } const createPluginConfig = pluginOptions => {