1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-06-30 05:41:41 +02:00
market/gatsby-node.js
Moritz Kirstein 46a16a3043
GDPR Compliance (#796)
* add cookie utils

* add gdpr metadata for ppc

* add graphql typeDefs for GDPR metadata

* add ppc variable to app config

* add ppc user preference

* add switch component

* add ppc components

* add cookie consent provider

* add consent provider to wrapRootElement

* add ppc to app component

* add cookie button to footer component

* add ppc to site metadata query

* add styles for buttons in footer

* add switch component unit tests

* renewed siteMetadata json for testing

* add gdpr metadata for testing

* add cookie module unit test

* add cookie module tests

* add customizable format to time component

* add english privacy policy

* add privacy policy slugs to user preferences and appConfig

* add privacy policy components

* add autolink for policy md navigation

* only show language select for multiple policies

* add gatsby policy page creation

* use new privacy slug user preference

* add to top button styling for markdown pages

* add policies for de, es & fr

* add pointer events to toTop buttons css

* add privacy policy basic unit test

* outsource scroll button component

* import cleanup

* add customizable delay for debounce

* add scroll button unit tests

* add disclaimer component

* add disclaimer fields as optional fields in PublishJsonData

* add acces type disclaimer

* adjusted help for desc and author fields

* add disclaimer unit tests

* minor adjustment to test

* add print button to history page

* naming changes for better readability

* add cookies hash to policies

* ppc disabled per default

* fix react unknown prop for disclaimer

* minor adjustments to cookie utils

* add gdpr example file

* change exposed gdpr metadata scope by useConsent

* update README

* readme fixes

* emoji fix

* added imprint

* adjustments to gdpr.json structure and related graphql type

* add default values for ppc

* Update app.config.js

Fixed typo.

* change variable name for consistency, remove console logs

* readability

* adjust css selector order to be consistent

* Update fr.md

updated policy

* Update es.md

updated policy

* Update en.md

updated policy

* Update de.md

* fix type issue

* replace language select input with links

* remove scroll button from codebase

* change privacy policy route to /privacy

* remove Do Not Track detection

* add size to checkbox / radio inputs

* replace switch component with checkbox inputs

* fix plain text links

* remove console log

* refactor privacy policy pages to use PageMarkdown template

* setup useUserPreferences mock for unit tests

* unit tests forprivacy policy components

* setup discalimer to use alert component

* Apply .env suggestions from code review

Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>

* move gdpr example to gdpr.json

* adjustments to address .env approach for appConfig.privacyPreferenceCenter

* update readme

* add small styling option to ppc

* update README

* add ppc unit tests

* update comments

* Update README.md

Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>

* Merge print into profile history

* add inifiniteApproval to UserPreference fixture

* changed default styling of PPC to small

Co-authored-by: Frederic Schwill <41265505+fr-3deric@users.noreply.github.com>
Co-authored-by: MeikeMolitor <88214332+MeikeMolitor@users.noreply.github.com>
Co-authored-by: Jamie Hewitt <jamie.hewitt15@gmail.com>
2021-10-12 09:00:57 +01:00

84 lines
2.2 KiB
JavaScript

const createFields = require('./gatsby/createFields')
const createMarkdownPages = require('./gatsby/createMarkdownPages')
const execSync = require('child_process').execSync
// Write out repo metadata
execSync(`node ./scripts/write-repo-metadata > repo-metadata.json`, {
stdio: 'inherit'
})
// Generate GraphQl typings for urql
// execSync(`npm run graphql:graphTypes`, { stdio: 'inherit' })
// Generate Apollo typings
execSync(`npm run apollo:codegen`, { stdio: 'inherit' })
// Fetch EVM networks metadata
execSync(
`node ./scripts/write-networks-metadata > content/networks-metadata.json`,
{
stdio: 'inherit'
}
)
//Extend ContentJson to support optional field "optionalCookies" in gdpr.json
//Extend PublishJsonData to support optional fields for disclaimers
exports.sourceNodes = ({ actions }) => {
const { createTypes } = actions
const typeDefs = `
type ContentJson implements Node {
accept: String
reject: String
close: String
configure: String
optionalCookies: [Cookie!]
}
type Cookie {
title: String!
desc: String!
cookieName: String!
}
type PublishJsonData implements Node {
disclaimer: String
disclaimerValues: [String!]
}
`
createTypes(typeDefs)
}
exports.onCreateNode = ({ node, actions, getNode }) => {
createFields(node, actions, getNode)
}
exports.createPages = async ({ graphql, actions }) => {
await createMarkdownPages(graphql, actions)
}
exports.onCreatePage = async ({ page, actions }) => {
const { createPage } = actions
// page.matchPath is a special key that's used for matching pages
// only on the client.
const handleClientSideOnlyAsset = page.path.match(/^\/asset/)
const handleClientSideOnlyAccount = page.path.match(/^\/profile/)
if (handleClientSideOnlyAsset) {
page.matchPath = '/asset/*'
// Update the page.
createPage(page)
} else if (handleClientSideOnlyAccount) {
page.matchPath = '/profile/*'
createPage(page)
}
}
exports.onCreateWebpackConfig = ({ actions }) => {
actions.setWebpackConfig({
node: {
// 'fs' fix for ocean.js
fs: 'empty'
},
// fix for 'got'/'swarm-js' dependency
externals: ['got']
})
}