website/docusaurus.config.js (449 lines of code) (raw):

/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format */ 'use strict'; const versions = require('./versions.json'); const {fbContent, isInternal} = require('internaldocs-fb-helpers'); module.exports = { title: 'Relay', tagline: 'The GraphQL client that scales with you.', url: 'https://relay.dev', baseUrl: '/', trailingSlash: true, organizationName: 'facebook', projectName: 'relay', scripts: [], favicon: 'img/favicon.png', customFields: { users: [ { caption: '1stdibs', image: '/img/logos/1stdibs.png', infoLink: 'https://www.1stdibs.com/', pinned: true, description: 'Used on 1stdibs.com', }, { caption: 'Artsy', image: '/img/logos/artsy.png', infoLink: 'http://artsy.github.io/open-source/', pinned: true, description: 'Used on artsy.net, and the React Native iOS app, Eigen.', }, { caption: 'Entria', image: '/img/logos/entria.png', infoLink: 'https://github.com/entria', pinned: true, description: 'Powers feedback.house', }, { caption: 'Facebook', image: '/img/logos/facebook.png', infoLink: 'https://code.facebook.com', pinned: true, description: 'Used on facebook.com, and in the React Native mobile app.', }, { caption: 'Oculus', image: '/img/logos/oculus.png', infoLink: 'https://www.oculus.com/', pinned: true, description: 'Used on oculus.com, Oculus Home in VR, and the React Native Oculus companion app.', }, { caption: 'Lattice', image: '/img/logos/lattice_logo_full_color.png', infoLink: 'https://lattice.com/', pinned: false, }, { caption: 'Cirrus CI', image: '/img/logos/cirrus.png', infoLink: 'https://cirrus-ci.com/', pinned: false, }, { caption: 'Friday', image: '/img/logos/friday.png', infoLink: 'https://friday.work/', pinned: false, }, { caption: 'Flexport', image: '/img/logos/flexport.png', infoLink: 'https://flexport.com', pinned: false, }, { caption: 'Parabol', image: '/img/logos/parabol.png', infoLink: 'https://www.parabol.co/', pinned: false, }, { caption: 'itDAGENE', image: '/img/logos/itdagene.png', infoLink: 'https://github.com/itdagene-ntnu/itdagene-webapp', pinned: false, }, { caption: 'Kiwi.com', image: '/img/logos/kiwicom.png', infoLink: 'https://www.kiwi.com/', pinned: false, }, { caption: 'Jusbrasil', image: '/img/logos/jusbrasil.png', infoLink: 'https://github.com/jusbrasil', pinned: false, }, { caption: 'Up', image: '/img/logos/up.png', infoLink: 'https://up.com.au/', pinned: false, }, { caption: 'AutoGuru', image: '/img/logos/autoguru.png', infoLink: 'https://www.autoguru.com.au/', pinned: true, description: 'Used at autoguru.com.au, and affiliates', }, { caption: 'Foton', image: '/img/logos/foton.png', infoLink: 'https://fotontech.io', pinned: false, }, { caption: 'M1 Finance', image: '/img/logos/m1finance.png', infoLink: 'https://www.m1finance.com/', pinned: false, }, { caption: 'Bumped', image: '/img/logos/bumped.png', infoLink: 'https://bumped.com/', pinned: false, }, { caption: 'Clubhouse', image: '/img/logos/clubhouse.png', infoLink: 'https://clubhouse.io/', pinned: false, }, { caption: 'Habilelabs', image: '/img/logos/habilelabs.png', infoLink: 'http://www.habilelabs.io/', pinned: false, }, { caption: 'Quanto', image: '/img/logos/quanto.png', infoLink: 'https://www.contaquanto.com.br/', pinned: false, }, { caption: 'Butterfly Network', image: '/img/logos/butterfly.png', infoLink: 'https://www.butterflynetwork.com/', pinned: false, }, { caption: 'Mindworking', image: '/img/logos/mindworking.png', infoLink: 'https://mindworking.eu/', pinned: false, }, { caption: 'domonda', image: '/img/logos/domonda.png', infoLink: 'https://domonda.com/', pinned: false, }, { caption: 'SwissDev JavaScript Jobs', image: '/img/logos/swissdev-javascript-jobs.png', infoLink: 'https://swissdevjobs.ch/jobs/JavaScript/All', pinned: false, }, { caption: 'Atlassian', image: '/img/logos/vertical-logo-gradient-blue-atlassian.svg', infoLink: 'https://www.atlassian.com/', pinned: false, }, ], }, onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'throw', onDuplicateRoutes: 'throw', presets: [ [ require.resolve('docusaurus-plugin-internaldocs-fb/docusaurus-preset'), { docs: { showLastUpdateAuthor: fbContent({ internal: false, external: true, }), showLastUpdateTime: fbContent({ internal: false, external: true, }), editUrl: fbContent({ internal: 'https://www.internalfb.com/intern/diffusion/FBS/browse/master/xplat/js/RKJSModules/Libraries/Relay/oss/__github__/website/', external: 'https://github.com/facebook/relay/tree/main/website', }), path: './docs/', sidebarPath: require.resolve('./sidebars.js'), lastVersion: fbContent({ internal: 'current', external: versions[0], }), onlyIncludeVersions: fbContent({ internal: ['current'], external: [ 'current', ...versions.filter( (version) => version !== 'experimental' && version !== 'classic', ), ], }), versions: { current: { label: 'Next 🚧', }, }, }, blog: {}, theme: { customCss: [ '../src/css/docusaurus-1.css', '../src/css/prism.css', '../src/css/customTheme.css', '../src/css/custom.css', ], }, }, ], ], plugins: [ [ '@docusaurus/plugin-client-redirects', { createRedirects: function (toPath) { if (toPath.startsWith('/docs/')) { const docPath = toPath.substring(6); const fromPaths = ['/docs/en/' + docPath]; if (isInternal()) { fromPaths.push('/docs/next/' + docPath); fromPaths.push('/docs/en/next/' + docPath); } return fromPaths; } }, redirects: [ { to: '/docs/', from: [ '/docs/en/introduction-to-relay', '/docs/introduction-to-relay', ], }, { to: '/docs/getting-started/step-by-step-guide/', from: ['/docs/en/quick-start-guide', '/docs/quick-start-guide'], }, { to: '/docs/getting-started/step-by-step-guide/', from: [ '/docs/en/experimental/step-by-step', '/docs/experimental/step-by-step', ], }, { to: '/docs/guides/testing-relay-with-preloaded-queries/', from: ['/docs/guides/testing-relay-with-preloaded-components/'], }, { to: '/docs/guides/compiler/', from: [ '/docs/en/graphql-in-relay.html', '/docs/en/graphql-in-relay', '/docs/graphql-in-relay.html', '/docs/graphql-in-relay', ], }, { to: '/docs/principles-and-architecture/thinking-in-graphql/', from: [ '/docs/en/thinking-in-graphql.html', '/docs/en/thinking-in-graphql', '/docs/thinking-in-graphql.html', '/docs/thinking-in-graphql', ], }, { to: '/docs/principles-and-architecture/thinking-in-relay/', from: [ '/docs/en/thinking-in-relay.html', '/docs/en/thinking-in-relay', '/docs/thinking-in-relay.html', '/docs/thinking-in-relay', ], }, { to: '/docs/guides/type-emission/', from: ['/docs/en/type-emission', '/docs/type-emission'], }, { to: '/docs/guides/client-schema-extensions/', from: [ '/docs/en/local-state-management', '/docs/en/next/local-state-management', '/docs/local-state-management', '/docs/next/local-state-management', ], }, { to: '/docs/api-reference/store/', from: [ '/docs/en/relay-store', '/docs/en/next/relay-store', '/docs/relay-store', '/docs/next/relay-store', ], }, { to: '/docs/guided-tour/updating-data/graphql-mutations/', from: [ '/docs/en/mutations', '/docs/en/next/mutations', '/docs/mutations', '/docs/next/mutations', ], }, { to: '/compiler-explorer', from: ['/compiler-playground'], }, ], }, ], ], themeConfig: { navbar: { title: 'Relay', style: 'primary', hideOnScroll: false, items: [ { to: 'docs/', label: 'Docs', position: 'left', }, { to: 'blog/', label: 'Blog', position: 'left', }, { to: '/help', label: 'Help', position: 'left', }, { href: 'https://github.com/facebook/relay', label: 'GitHub', position: 'left', }, fbContent({ internal: null, external: { type: 'docsVersionDropdown', position: 'right', dropdownActiveClassDisabled: true, dropdownItemsAfter: [ { to: '/versions', label: 'All versions', }, ], }, }), ].filter(Boolean), }, image: 'img/relay.png', footer: { links: [ { title: 'Docs', items: [ { label: 'Introduction', href: '/docs', target: '_self', }, ], }, { title: 'Community', items: [ { label: 'User Showcase', href: '/users', target: '_self', }, ], }, { title: 'Legal', items: [ { label: 'Privacy', href: 'https://opensource.facebook.com/legal/privacy/', }, { label: 'Terms', href: 'https://opensource.facebook.com/legal/terms/', }, { label: 'Data Policy', href: 'https://opensource.facebook.com/legal/data-policy/', }, { label: 'Cookie Policy', href: 'https://opensource.facebook.com/legal/cookie-policy/', }, ], }, ], logo: { src: 'img/relay.svg', }, }, prism: { theme: require('prism-react-renderer/themes/github'), darkTheme: require('prism-react-renderer/themes/dracula'), defaultLanguage: 'javascript', }, algolia: { apiKey: '3d7d5825d50ea36bca0e6ad06c926f06', indexName: 'relay', contextualSearch: true, }, gtag: { trackingID: 'UA-44373548-50', }, googleAnalytics: { trackingID: 'UA-44373548-50', }, }, };