1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-24 20:06:55 +01:00

V3 is aliiiiiiiive

This commit is contained in:
Alvin Bryan 2024-10-18 16:17:00 +01:00
parent 74b13374d7
commit 22abe8d286
No known key found for this signature in database
10 changed files with 1278 additions and 5139 deletions

View File

@ -1,3 +0,0 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

View File

@ -15,7 +15,9 @@
// the bits that are specific to the generation source we use, and make the docs // the bits that are specific to the generation source we use, and make the docs
// easier to use. In particular, removing the leading `/ushosted` is likely to // easier to use. In particular, removing the leading `/ushosted` is likely to
// save us loooots of questions. // save us loooots of questions.
const replace = require('replace-in-file'); const replaceInFileSync = require('replace-in-file');
console.log(replaceInFileSync);
const options = { const options = {
files: 'docs/reference/api/**/*.api.mdx', files: 'docs/reference/api/**/*.api.mdx',
@ -27,4 +29,4 @@ const options = {
to: ['', '"<your-unleash-url>"', '"path":['], to: ['', '"<your-unleash-url>"', '"path":['],
}; };
replace(options); replaceInFileSync(options);

View File

@ -1,5 +1,8 @@
const { sdks } = require('./remote-content/sdks'); import type { Config } from '@docusaurus/types';
const { docs: edgeAndProxy } = require('./remote-content/edge-proxy');
import { sdks } from './remote-content/sdks';
import { docs as edgeAndProxy } from './remote-content/edge-proxy';
import pluginNpm2Yarn from '@docusaurus/remark-plugin-npm2yarn';
// for a given redirect object, modify it's `from` property such that for every // for a given redirect object, modify it's `from` property such that for every
// path that doesn't start with `/docs/`, a corresponding path that _does_ start // path that doesn't start with `/docs/`, a corresponding path that _does_ start
@ -38,8 +41,8 @@ const addDocsRoutePrefix = ({ from, ...rest }) => {
from: addDocs(from), from: addDocs(from),
}; };
}; };
/** @type {import('@docusaurus/types').DocusaurusConfig} */
module.exports = { const config: Config = {
title: 'Unleash', title: 'Unleash',
tagline: 'The enterprise ready feature flag service', tagline: 'The enterprise ready feature flag service',
url: 'https://docs.getunleash.io', url: 'https://docs.getunleash.io',
@ -169,20 +172,20 @@ module.exports = {
}, },
], ],
}, },
prism: { // prism: {
theme: require('prism-react-renderer/themes/oceanicNext'), // theme: require("prism-react-renderer/themes/oceanicNext"),
additionalLanguages: [ // additionalLanguages: [
'csharp', // "csharp",
'dart', // "dart",
'http', // "http",
'java', // "java",
'kotlin', // "kotlin",
'php', // "php",
'ruby', // "ruby",
'rust', // "rust",
'swift', // "swift",
], // ],
}, // },
languageTabs: [ languageTabs: [
{ {
highlight: 'bash', highlight: 'bash',
@ -290,22 +293,15 @@ module.exports = {
'@docusaurus/preset-classic', '@docusaurus/preset-classic',
{ {
docs: { docs: {
sidebarPath: require.resolve('./sidebars.js'),
// Please change this to your repo. // Please change this to your repo.
editUrl: editUrl:
'https://github.com/Unleash/unleash/edit/main/website/', 'https://github.com/Unleash/unleash/edit/main/website/',
routeBasePath: '/', routeBasePath: '/',
remarkPlugins: [ remarkPlugins: [[pluginNpm2Yarn, { sync: true }]],
[
require('@docusaurus/remark-plugin-npm2yarn'),
{ sync: true },
],
],
docLayoutComponent: '@theme/DocPage',
docItemComponent: '@theme/ApiItem', docItemComponent: '@theme/ApiItem',
}, },
theme: { theme: {
customCss: require.resolve('./src/css/custom.css'), customCss: './src/css/custom.css',
}, },
googleAnalytics: { googleAnalytics: {
trackingID: 'UA-134882379-1', trackingID: 'UA-134882379-1',
@ -928,5 +924,7 @@ module.exports = {
defer: true, defer: true,
}, },
], ],
clientModules: [require.resolve('./global.js')], clientModules: ['./global.js'],
}; };
export default config;

View File

@ -20,41 +20,25 @@
"test": "NODE_ENV=test node --trace-warnings ../node_modules/.bin/jest remote-content" "test": "NODE_ENV=test node --trace-warnings ../node_modules/.bin/jest remote-content"
}, },
"dependencies": { "dependencies": {
"@docusaurus/core": "2.3.1", "@docusaurus/core": "^3.5.2",
"@docusaurus/plugin-client-redirects": "2.3.1", "@docusaurus/plugin-client-redirects": "^3.5.2",
"@docusaurus/plugin-google-analytics": "2.3.1", "@docusaurus/plugin-google-analytics": "^3.5.2",
"@docusaurus/preset-classic": "2.3.1", "@docusaurus/preset-classic": "^3.5.2",
"@docusaurus/remark-plugin-npm2yarn": "2.3.1", "@docusaurus/remark-plugin-npm2yarn": "2.3.1",
"@docusaurus/theme-mermaid": "2.3.1", "@docusaurus/theme-mermaid": "^3.5.2",
"@mdx-js/react": "1.6.22", "@mdx-js/react": "^3.0.1",
"@svgr/webpack": "8.1.0", "@svgr/webpack": "8.1.0",
"browserslist": "^4.16.5", "browserslist": "^4.16.5",
"docusaurus-plugin-openapi-docs": "4.1.0", "docusaurus-plugin-openapi-docs": "^4.1.0",
"docusaurus-plugin-remote-content": "^3.1.0", "docusaurus-plugin-remote-content": "^4.0.0",
"docusaurus-theme-openapi-docs": "2.0.0-beta.2", "docusaurus-theme-openapi-docs": "^4.1.0",
"git-url-parse": "^14.0.0", "git-url-parse": "^14.0.0",
"plugin-image-zoom": "flexanalytics/plugin-image-zoom", "plugin-image-zoom": "flexanalytics/plugin-image-zoom",
"prism-react-renderer": "^2.4.0",
"prism-svelte": "^0.5.0", "prism-svelte": "^0.5.0",
"react": "18.3.1", "react": "^18.3.1",
"react-dom": "18.3.1", "react-dom": "^18.3.1",
"url-loader": "4.1.1" "replace-in-file": "^8.2.0"
},
"resolutions": {
"axios": "^0.28.0",
"async": "^3.2.4",
"trim": "^1.0.0",
"got": "^13.0.0",
"glob-parent": "^6.0.0",
"browserslist": "^4.16.5",
"set-value": "^4.0.1",
"ansi-regex": "^5.0.1",
"nth-check": "^2.0.1",
"minimatch": "^5.0.0",
"decode-uri-component": "^0.4.0",
"qs": "^6.9.7",
"ws": "^8.18.0",
"semver": "^7.5.3",
"joi": "17.13.3"
}, },
"browserslist": { "browserslist": {
"production": [ "production": [
@ -70,12 +54,10 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.25.8", "@babel/core": "7.25.8",
"@docusaurus/module-type-aliases": "2.3.1", "@docusaurus/module-type-aliases": "^3.5.2",
"@docusaurus/types": "^3.5.2",
"@tsconfig/docusaurus": "2.0.3", "@tsconfig/docusaurus": "2.0.3",
"babel-loader": "9.1.3", "@types/react": "^18.3.11",
"enhanced-resolve": "5.17.1",
"react-router": "6.26.2",
"replace-in-file": "7.2.0",
"typescript": "5.4.5" "typescript": "5.4.5"
}, },
"packageManager": "yarn@4.4.1" "packageManager": "yarn@4.4.1"

View File

@ -1,10 +1,10 @@
const { import {
enrich, enrich,
mapObject, mapObject,
modifyContent, modifyContent,
getRepoData, getRepoData,
getUrls, getUrls,
} = require('./shared'); } from './shared';
const DOCS = mapObject(enrich)({ const DOCS = mapObject(enrich)({
'unleash-proxy': { 'unleash-proxy': {
@ -46,7 +46,7 @@ const modifyContent2 = modifyContent({
getAdditionalAdmonitions: getAdmonitions, getAdditionalAdmonitions: getAdmonitions,
}); });
module.exports.docs = { export const docs = {
urls: getUrls(DOCS), urls: getUrls(DOCS),
modifyContent: modifyContent2, modifyContent: modifyContent2,
}; };

View File

@ -1,9 +1,9 @@
const { import {
enrichAdditional, enrichAdditional,
modifyContent, modifyContent,
getRepoData, getRepoData,
getUrls, getUrls,
} = require('./shared'); } from './shared';
// Type definitions // Type definitions
// //
@ -44,9 +44,9 @@ const serverSideSdks = {
'unleash-client-ruby': { 'unleash-client-ruby': {
sidebarName: 'Ruby', sidebarName: 'Ruby',
}, },
'unleash-client-rust': { // 'unleash-client-rust': {
sidebarName: 'Rust', // sidebarName: 'Rust',
}, // },
'unleash-client-dotnet': { 'unleash-client-dotnet': {
sidebarName: '.NET', sidebarName: '.NET',
slugName: 'dotnet', slugName: 'dotnet',
@ -117,7 +117,7 @@ const modifyContent2 = modifyContent({
getAdditionalAdmonitions: getAdmonitions, getAdditionalAdmonitions: getAdmonitions,
}); });
module.exports.sdks = { export const sdks = {
urls: getUrls(SDKS), urls: getUrls(SDKS),
modifyContent: modifyContent2, modifyContent: modifyContent2,
}; };

View File

@ -1,4 +1,4 @@
const { docs } = require('./edge-proxy'); import { docs } from './edge-proxy';
test('Should get all sub pages', () => { test('Should get all sub pages', () => {
expect(docs.urls).toStrictEqual([ expect(docs.urls).toStrictEqual([

View File

@ -1,9 +1,9 @@
const path = require('path'); import path from 'node:path';
module.exports.mapObject = (fn) => (o) => export const mapObject = (fn) => (o) =>
Object.fromEntries(Object.entries(o).map(fn)); Object.fromEntries(Object.entries(o).map(fn));
module.exports.enrichAdditional = export const enrichAdditional =
(additionalProperties) => (additionalProperties) =>
([repoName, repoData]) => { ([repoName, repoData]) => {
const repoUrl = `https://github.com/Unleash/${repoName}`; const repoUrl = `https://github.com/Unleash/${repoName}`;
@ -17,9 +17,10 @@ module.exports.enrichAdditional =
{ ...repoData, repoUrl, slugName, branch, ...additionalProperties }, { ...repoData, repoUrl, slugName, branch, ...additionalProperties },
]; ];
}; };
module.exports.enrich = module.exports.enrichAdditional({});
module.exports.getRepoData = (documents) => (filename) => { export const enrich = enrichAdditional({});
export const getRepoData = (documents) => (filename) => {
const repoName = filename.split('/')[0]; const repoName = filename.split('/')[0];
const repoData = documents[repoName]; const repoData = documents[repoName];
@ -80,7 +81,7 @@ const replaceLinks = ({ content, repo }) => {
.replaceAll(imageSrcLink, replaceImageSrcLink); .replaceAll(imageSrcLink, replaceImageSrcLink);
}; };
module.exports.modifyContent = export const modifyContent =
({ ({
getRepoDataFn, getRepoDataFn,
filePath = () => {}, filePath = () => {},
@ -128,11 +129,15 @@ module.exports.modifyContent =
content: `--- content: `---
title: ${subpage?.sidebarName ?? data.sidebarName} title: ${subpage?.sidebarName ?? data.sidebarName}
slug: ${processedSlug} slug: ${processedSlug}
custom_edit_url: ${data.repoUrl}/edit/${data.branch}/${subpage ? subpageKey : 'README.md'} custom_edit_url: ${data.repoUrl}/edit/${data.branch}/${
subpage ? subpageKey : 'README.md'
}
--- ---
:::info Generated content :::info Generated content
This document was generated from ${subpage ? subpageKey : 'README.md'} in the [${data.sidebarName} GitHub repository](${data.repoUrl}). This document was generated from ${
subpage ? subpageKey : 'README.md'
} in the [${data.sidebarName} GitHub repository](${data.repoUrl}).
::: :::
${additionalAdmonitions} ${additionalAdmonitions}
@ -152,7 +157,7 @@ This content was generated on <time dateTime="${generationTime.toISOString()}">$
}; };
}; };
module.exports.getUrls = (documents) => export const getUrls = (documents) =>
Object.entries(documents).flatMap(([repo, { branch, subPages }]) => [ Object.entries(documents).flatMap(([repo, { branch, subPages }]) => [
`${repo}/${branch}/README.md`, `${repo}/${branch}/README.md`,
...(Object.keys(subPages ?? {}).map( ...(Object.keys(subPages ?? {}).map(

View File

@ -9,10 +9,11 @@
Create as many sidebars as you want. Create as many sidebars as you want.
*/ */
// TODO: Add warning to legacy API docs - but generated items import type { SidebarsConfig } from '@docusaurus/plugin-content-docs';
// TODO: Continue to clean URLs & redirects - but wait for SEO results first
module.exports = { import docsSidebar from './docs/reference/api/unleash/sidebar.ts';
const sidebars: SidebarsConfig = {
academy: [ academy: [
{ {
label: 'Unleash Academy', label: 'Unleash Academy',
@ -382,7 +383,7 @@ module.exports = {
slug: '/reference/api/unleash', slug: '/reference/api/unleash',
}, },
items: [ items: [
require('./docs/reference/api/unleash/sidebar.ts'), docsSidebar,
{ {
'System API': [ 'System API': [
'reference/api/legacy/unleash/internal/prometheus', 'reference/api/legacy/unleash/internal/prometheus',
@ -688,3 +689,5 @@ module.exports = {
}, },
], ],
}; };
export default sidebars;

File diff suppressed because it is too large Load Diff