chore: remove docusaurus-migrate (#9400)

This commit is contained in:
Sébastien Lorber 2023-10-13 12:37:43 +02:00 committed by GitHub
parent ae3191654c
commit 336a44f3ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 27 additions and 3062 deletions

View File

@ -1,5 +0,0 @@
.tsbuildinfo*
tsconfig*
__tests__
src

View File

@ -1,7 +0,0 @@
# `@docusaurus/migrate`
A CLI tool to migrate from older versions of Docusaurus.
## Usage
Please see [the migration documentation](https://docusaurus.io/docs/migration) for more information.

View File

@ -1,61 +0,0 @@
#!/usr/bin/env node
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
// @ts-check
import path from 'path';
import {createRequire} from 'module';
import logger from '@docusaurus/logger';
import semver from 'semver';
import cli from 'commander';
const moduleRequire = createRequire(import.meta.url);
const requiredVersion = /** @type {import("../package.json")} */ (
moduleRequire('../package.json')
).engines.node;
if (!semver.satisfies(process.version, requiredVersion)) {
logger.error('Minimum Node.js version not met :(');
logger.info`You are using Node.js number=${process.version}, Requirement: Node.js number=${requiredVersion}.`;
process.exit(1);
}
// See https://github.com/facebook/docusaurus/pull/6860
const {migrateDocusaurusProject, migrateMDToMDX} =
/** @type {import("../lib/index.js")} */ (moduleRequire('../lib/index.js'));
cli
.command('migrate [siteDir] [newDir]')
.option('--mdx', 'try to migrate MD to MDX too')
.option('--page', 'try to migrate pages too')
.description('Migrate between versions of Docusaurus website.')
.action(async (siteDir = '.', newDir = '.', {mdx, page} = {}) => {
const sitePath = path.resolve(siteDir);
const newSitePath = path.resolve(newDir);
await migrateDocusaurusProject(sitePath, newSitePath, mdx, page);
});
cli
.command('mdx [siteDir] [newDir]')
.description('Migrate markdown files to MDX.')
.action(async (siteDir = '.', newDir = '.') => {
const sitePath = path.resolve(siteDir);
const newSitePath = path.resolve(newDir);
await migrateMDToMDX(sitePath, newSitePath);
});
cli.parse(process.argv);
if (!process.argv.slice(2).length) {
cli.outputHelp();
}
process.on('unhandledRejection', (err) => {
logger.error(err);
process.exit(1);
});

View File

@ -1,48 +0,0 @@
{
"name": "@docusaurus/migrate",
"version": "3.0.0-beta.0",
"description": "A CLI tool to migrate from older versions of Docusaurus.",
"license": "MIT",
"engines": {
"node": ">=18.0"
},
"scripts": {
"build": "tsc --build",
"watch": "tsc --build --watch"
},
"repository": {
"type": "git",
"url": "https://github.com/facebook/docusaurus.git",
"directory": "packages/docusaurus-migrate"
},
"publishConfig": {
"access": "public"
},
"bin": {
"docusaurus-migrate": "bin/index.mjs"
},
"dependencies": {
"@babel/core": "^7.22.9",
"@babel/preset-env": "^7.22.9",
"@docusaurus/logger": "3.0.0-beta.0",
"@docusaurus/utils": "3.0.0-beta.0",
"@mapbox/hast-util-to-jsx": "^2.0.0",
"color": "^4.2.3",
"commander": "^5.1.0",
"fs-extra": "^11.1.1",
"hast-util-to-string": "^1.0.4",
"html-tags": "^3.3.1",
"jscodeshift": "^0.14.0",
"rehype-parse": "^7.0.1",
"remark-parse": "^8.0.3",
"remark-stringify": "^8.1.1",
"semver": "^7.5.4",
"tslib": "^2.6.0",
"unified": "^10.1.2",
"unist-util-visit": "^2.0.3"
},
"devDependencies": {
"@types/color": "^3.0.3",
"@types/jscodeshift": "^0.11.6"
}
}

View File

@ -1,10 +0,0 @@
---
title: Introducing Docusaurus
author: Joel Marcey
authorURL: http://twitter.com/JoelMarcey
authorImageURL: https://graph.facebook.com/611217057/picture/?height=200&width=200
authorFBID: 611217057
authorTwitter: JoelMarcey
---
# blog

View File

@ -1,19 +0,0 @@
{
"name": "docusaurus-1-website",
"version": "2.0.0-alpha.58",
"private": true,
"scripts": {
"start": "docusaurus-start",
"build": "docusaurus-build",
"publish-gh-pages": "docusaurus-publish",
"examples": "docusaurus-examples",
"write-translations": "docusaurus-write-translations",
"docusaurus-version": "docusaurus-version",
"rename-version": "docusaurus-rename-version",
"crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master",
"crowdin-download": "crowdin --config ../crowdin.yaml download -b master"
},
"dependencies": {
"docusaurus": "*"
}
}

View File

@ -1,17 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const React = require('react');
function Index(props) {
return <></>
}
module.exports = Index;

View File

@ -1,6 +0,0 @@
{
"API": [
"commands",
"doc-markdown",
]
}

View File

@ -1,82 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/* List of projects/orgs using your project for the users page */
const users = {
caption: 'DevSpace',
image: '/img/users/devspace.svg',
infoLink: 'https://devspace.cloud/docs/',
fbOpenSource: false,
pinned: false,
};
const siteConfig = {
title: 'Docusaurus',
tagline: 'Easy to Maintain Open Source Documentation Websites',
url: 'https://docusaurus.io',
baseUrl: '/',
organizationName: 'facebook',
projectName: 'docusaurus',
cname: 'docusaurus.io',
noIndex: false,
users,
editUrl: 'https://github.com/facebook/docusaurus/edit/main/docs/',
headerLinks: [
{doc: 'installation', label: 'Docs'},
{doc: 'tutorial-setup', label: 'Tutorial'},
{page: 'users', label: 'Users'},
{blog: true, label: 'Blog'},
{
href: 'https://github.com/facebook/docusaurus',
label: 'GitHub',
external: true,
},
],
headerIcon: 'img/docusaurus.svg',
footerIcon: 'img/docusaurus_monochrome.svg',
favicon: 'img/docusaurus.ico',
algolia: {
apiKey: '3eb9507824b8be89e7a199ecaa1a9d2c',
indexName: 'docusaurus',
algoliaOptions: {
facetFilters: ['language:LANGUAGE', 'version:VERSION'],
},
},
colors: {
primaryColor: '#2E8555',
secondaryColor: '#205C3B',
},
translationRecruitingLink: 'https://crowdin.com/project/docusaurus',
copyright: `Copyright © ${new Date().getFullYear()} Facebook Inc.`,
usePrism: ['jsx'],
highlight: {
theme: 'atom-one-dark',
},
scripts: [
'https://buttons.github.io/buttons.js',
'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
'/js/code-blocks-buttons.js',
],
gaTrackingId: 'UA-44373548-31',
facebookAppId: '199138890728411',
facebookComments: true,
twitter: 'true',
twitterUsername: 'docusaurus',
ogImage: 'img/docusaurus.png',
twitterImage: 'img/docusaurus.png',
onPageNav: 'separate',
cleanUrl: true,
scrollToTop: true,
scrollToTopOptions: {
zIndex: 100,
},
enableUpdateTime: true,
enableUpdateBy: true,
docsSideNavCollapsible: true,
};
module.exports = siteConfig;

View File

@ -1,7 +0,0 @@
---
id: version-1.10.x-commands
title: CLI Commands
original_id: commands
---
# Doc

View File

@ -1,7 +0,0 @@
---
id: version-1.9.x-commands
title: CLI Commands
original_id: commands
---
# Doc

View File

@ -1,7 +0,0 @@
---
id: version-1.9.x-doc-markdown
title: Markdown Features
original_id: doc-markdown
---
# Doc

View File

@ -1,8 +0,0 @@
{
"version-1.9.x-docs": {
"API": [
"version-1.9.x-commands",
"version-1.9.x-doc-markdown"
]
}
}

View File

@ -1,83 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
module.exports = {
title: 'Docusaurus',
tagline: 'Easy to Maintain Open Source Documentation Websites',
url: 'https://docusaurus.io',
baseUrl: '/',
organizationName: 'facebook',
projectName: 'docusaurus',
noIndex: true,
scripts: [
'https://buttons.github.io/buttons.js',
'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
'/js/code-blocks-buttons.js',
],
favicon: 'img/docusaurus.ico',
customFields: {
users: {
caption: 'DevSpace',
image: '/img/users/devspace.svg',
infoLink: 'https://devspace.cloud/docs/',
fbOpenSource: false,
pinned: false,
},
translationRecruitingLink: 'https://crowdin.com/project/docusaurus',
facebookAppId: '199138890728411',
},
onBrokenLinks: 'log',
onBrokenMarkdownLinks: 'log',
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
showLastUpdateAuthor: true,
showLastUpdateTime: true,
editUrl: 'https://github.com/facebook/docusaurus/edit/main/docs/',
},
blog: {},
theme: {},
googleAnalytics: {trackingID: 'UA-44373548-31'},
},
],
],
plugins: [],
themeConfig: {
navbar: {
title: 'Docusaurus',
logo: {src: 'img/docusaurus.svg'},
items: [
{to: 'docs/installation', label: 'Docs', position: 'left'},
{to: 'docs/tutorial-setup', label: 'Tutorial', position: 'left'},
{to: '/users', label: 'Users', position: 'left'},
{
href: 'https://github.com/facebook/docusaurus',
label: 'GitHub',
position: 'left',
},
],
},
image: 'img/docusaurus.png',
footer: {
links: [
{
title: 'Community',
items: [{label: 'Twitter', to: 'https://twitter.com/docusaurus'}],
},
],
copyright: `Copyright © ${new Date().getFullYear()} Facebook Inc.`,
logo: {src: 'img/docusaurus_monochrome.svg'},
},
algolia: {
apiKey: '3eb9507824b8be89e7a199ecaa1a9d2c',
indexName: 'docusaurus',
algoliaOptions: {facetFilters: ['language:LANGUAGE', 'version:VERSION']},
},
},
};

View File

@ -1,10 +0,0 @@
---
title: Introducing Docusaurus
author: Joel Marcey
authorURL: http://twitter.com/JoelMarcey
authorImageURL: https://graph.facebook.com/611217057/picture/?height=200&width=200
authorFBID: 611217057
authorTwitter: JoelMarcey
---
# Blog

View File

@ -1,19 +0,0 @@
{
"name": "docusaurus-1-website",
"version": "2.0.0-alpha.58",
"private": true,
"scripts": {
"start": "docusaurus-start",
"build": "docusaurus-build",
"publish-gh-pages": "docusaurus-publish",
"examples": "docusaurus-examples",
"write-translations": "docusaurus-write-translations",
"docusaurus-version": "docusaurus-version",
"rename-version": "docusaurus-rename-version",
"crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master",
"crowdin-download": "crowdin --config ../crowdin.yaml download -b master"
},
"dependencies": {
"docusaurus": "*"
}
}

View File

@ -1,17 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const React = require('react');
function Index(props) {
return <></>
}
module.exports = Index;

View File

@ -1,6 +0,0 @@
{
"API": [
"commands",
"doc-markdown",
]
}

View File

@ -1,82 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/* List of projects/orgs using your project for the users page */
const users = {
caption: 'DevSpace',
image: '/img/users/devspace.svg',
infoLink: 'https://devspace.cloud/docs/',
fbOpenSource: false,
pinned: false,
};
const siteConfig = {
title: 'Docusaurus',
tagline: 'Easy to Maintain Open Source Documentation Websites',
url: 'https://docusaurus.io',
baseUrl: '/',
organizationName: 'facebook',
projectName: 'docusaurus',
cname: 'docusaurus.io',
noIndex: false,
users,
editUrl: 'https://github.com/facebook/docusaurus/edit/main/docs/',
headerLinks: [
{doc: 'installation', label: 'Docs'},
{doc: 'tutorial-setup', label: 'Tutorial'},
{page: 'users', label: 'Users'},
{blog: true, label: 'Blog'},
{
href: 'https://github.com/facebook/docusaurus',
label: 'GitHub',
external: true,
},
],
headerIcon: 'img/docusaurus.svg',
footerIcon: 'img/docusaurus_monochrome.svg',
favicon: 'img/docusaurus.ico',
algolia: {
apiKey: '3eb9507824b8be89e7a199ecaa1a9d2c',
indexName: 'docusaurus',
algoliaOptions: {
facetFilters: ['language:LANGUAGE', 'version:VERSION'],
},
},
colors: {
primaryColor: '#2E8555',
secondaryColor: '#205C3B',
},
translationRecruitingLink: 'https://crowdin.com/project/docusaurus',
copyright: `Copyright © ${new Date().getFullYear()} Facebook Inc.`,
usePrism: ['jsx'],
highlight: {
theme: 'atom-one-dark',
},
scripts: [
'https://buttons.github.io/buttons.js',
'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
'/js/code-blocks-buttons.js',
],
gaTrackingId: 'UA-44373548-31',
facebookAppId: '199138890728411',
facebookComments: true,
twitter: 'true',
twitterUsername: 'docusaurus',
ogImage: 'img/docusaurus.png',
twitterImage: 'img/docusaurus.png',
onPageNav: 'separate',
cleanUrl: true,
scrollToTop: true,
scrollToTopOptions: {
zIndex: 100,
},
enableUpdateTime: true,
enableUpdateBy: true,
docsSideNavCollapsible: true,
};
module.exports = siteConfig;

View File

@ -1,7 +0,0 @@
---
id: version-1.10.x-commands
title: CLI Commands
original_id: commands
---
# Doc

View File

@ -1,7 +0,0 @@
---
id: version-1.9.x-commands
title: CLI Commands
original_id: commands
---
# Doc

View File

@ -1,7 +0,0 @@
---
id: version-1.9.x-doc-markdown
title: Markdown Features
original_id: doc-markdown
---
# Doc

View File

@ -1,8 +0,0 @@
{
"version-1.9.x-docs": {
"API": [
"version-1.9.x-commands",
"version-1.9.x-doc-markdown"
]
}
}

View File

@ -1 +0,0 @@
[ "1.10.x","1.9.10", "1.9.x"]

View File

@ -1,6 +0,0 @@
---
id: commands
title: CLI Commands
---
## Doc

View File

@ -1,6 +0,0 @@
---
id: doc-markdown
title: Markdown Features
---
## Doc

View File

@ -1,19 +0,0 @@
{
"name": "docusaurus-1-website",
"version": "2.0.0-alpha.58",
"private": true,
"scripts": {
"start": "docusaurus-start",
"build": "docusaurus-build",
"publish-gh-pages": "docusaurus-publish",
"examples": "docusaurus-examples",
"write-translations": "docusaurus-write-translations",
"docusaurus-version": "docusaurus-version",
"rename-version": "docusaurus-rename-version",
"crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master",
"crowdin-download": "crowdin --config ../crowdin.yaml download -b master"
},
"dependencies": {
"docusaurus": "*"
}
}

View File

@ -1,17 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const React = require('react');
function Index(props) {
return <></>
}
module.exports = Index;

View File

@ -1,6 +0,0 @@
{
"API": [
"commands",
"doc-markdown",
]
}

View File

@ -1,82 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/* List of projects/orgs using your project for the users page */
const users = {
caption: 'DevSpace',
image: '/img/users/devspace.svg',
infoLink: 'https://devspace.cloud/docs/',
fbOpenSource: false,
pinned: false,
};
const siteConfig = {
title: 'Docusaurus',
tagline: 'Easy to Maintain Open Source Documentation Websites',
url: 'https://docusaurus.io',
baseUrl: '/',
organizationName: 'facebook',
projectName: 'docusaurus',
cname: 'docusaurus.io',
noIndex: false,
users,
editUrl: 'https://github.com/facebook/docusaurus/edit/main/docs/',
headerLinks: [
{doc: 'installation', label: 'Docs'},
{doc: 'tutorial-setup', label: 'Tutorial'},
{page: 'users', label: 'Users'},
{blog: true, label: 'Blog'},
{
href: 'https://github.com/facebook/docusaurus',
label: 'GitHub',
external: true,
},
],
headerIcon: 'img/docusaurus.svg',
footerIcon: 'img/docusaurus_monochrome.svg',
favicon: 'img/docusaurus.ico',
algolia: {
apiKey: '3eb9507824b8be89e7a199ecaa1a9d2c',
indexName: 'docusaurus',
algoliaOptions: {
facetFilters: ['language:LANGUAGE', 'version:VERSION'],
},
},
colors: {
primaryColor: '#2E8555',
secondaryColor: '#205C3B',
},
translationRecruitingLink: 'https://crowdin.com/project/docusaurus',
copyright: `Copyright © ${new Date().getFullYear()} Facebook Inc.`,
usePrism: ['jsx'],
highlight: {
theme: 'atom-one-dark',
},
scripts: [
'https://buttons.github.io/buttons.js',
'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
'/js/code-blocks-buttons.js',
],
gaTrackingId: 'UA-44373548-31',
facebookAppId: '199138890728411',
facebookComments: true,
twitter: 'true',
twitterUsername: 'docusaurus',
ogImage: 'img/docusaurus.png',
twitterImage: 'img/docusaurus.png',
onPageNav: 'separate',
cleanUrl: true,
scrollToTop: true,
scrollToTopOptions: {
zIndex: 100,
},
enableUpdateTime: true,
enableUpdateBy: true,
docsSideNavCollapsible: true,
};
module.exports = siteConfig;

View File

@ -1,81 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const users = {
caption: 'DevSpace',
image: '/img/users/devspace.svg',
infoLink: 'https://devspace.cloud/docs/',
fbOpenSource: false,
pinned: false,
};
const siteConfig = {
title: 'Docusaurus',
tagline: 'Easy to Maintain Open Source Documentation Websites',
url: 'https://docusaurus.io',
baseUrl: '/',
organizationName: 'facebook',
projectName: 'docusaurus',
cname: 'docusaurus.io',
noIndex: true,
users,
editUrl: 'https://github.com/facebook/docusaurus/edit/main/docs/',
headerLinks: [
{doc: 'installation', label: 'Docs'},
{doc: 'tutorial-setup', label: 'Tutorial'},
{page: 'users', label: 'Users'},
{blog: true, label: 'Blog'},
{
href: 'https://github.com/facebook/docusaurus',
label: 'GitHub',
external: true,
},
],
headerIcon: 'img/docusaurus.svg',
footerIcon: 'img/docusaurus_monochrome.svg',
favicon: 'img/docusaurus.ico',
algolia: {
apiKey: '3eb9507824b8be89e7a199ecaa1a9d2c',
indexName: 'docusaurus',
algoliaOptions: {
facetFilters: ['language:LANGUAGE', 'version:VERSION'],
},
},
colors: {
primaryColor: '#2E8555',
secondaryColor: '#205C3B',
},
translationRecruitingLink: 'https://crowdin.com/project/docusaurus',
copyright: `Copyright © ${new Date().getFullYear()} Facebook Inc.`,
usePrism: ['jsx'],
highlight: {
theme: 'atom-one-dark',
},
scripts: [
'https://buttons.github.io/buttons.js',
'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
'/js/code-blocks-buttons.js',
],
gaTrackingId: 'UA-44373548-31',
facebookAppId: '199138890728411',
facebookComments: true,
twitter: 'true',
twitterUsername: 'docusaurus',
ogImage: 'img/docusaurus.png',
twitterImage: 'img/docusaurus.png',
onPageNav: 'separate',
cleanUrl: true,
scrollToTop: true,
scrollToTopOptions: {
zIndex: 100,
},
enableUpdateTime: true,
enableUpdateBy: true,
docsSideNavCollapsible: true,
};
module.exports = siteConfig;

View File

@ -1,565 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`migration CLI migrates complex website: copy 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/blog",
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/blog",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/pages/en",
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/pages",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/complex_website/website/static",
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/static",
],
]
`;
exports[`migration CLI migrates complex website: mkdirp 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/pages",
],
]
`;
exports[`migration CLI migrates complex website: mkdirs 1`] = `[]`;
exports[`migration CLI migrates complex website: write 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/docusaurus.config.js",
"module.exports={
"title": "Docusaurus",
"tagline": "Easy to Maintain Open Source Documentation Websites",
"url": "https://docusaurus.io",
"baseUrl": "/",
"organizationName": "facebook",
"projectName": "docusaurus",
"noIndex": false,
"scripts": [
"https://buttons.github.io/buttons.js",
"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js",
"/js/code-blocks-buttons.js"
],
"favicon": "img/docusaurus.ico",
"customFields": {
"users": {
"caption": "DevSpace",
"image": "/img/users/devspace.svg",
"infoLink": "https://devspace.cloud/docs/",
"fbOpenSource": false,
"pinned": false
},
"translationRecruitingLink": "https://crowdin.com/project/docusaurus",
"facebookAppId": "199138890728411"
},
"onBrokenLinks": "log",
"onBrokenMarkdownLinks": "log",
"presets": [
[
"@docusaurus/preset-classic",
{
"docs": {
"showLastUpdateAuthor": true,
"showLastUpdateTime": true,
"editUrl": "https://github.com/facebook/docusaurus/edit/main/docs/"
},
"blog": {},
"theme": {
"customCss": "../complex_website/src/css/customTheme.css"
},
"googleAnalytics": {
"trackingID": "UA-44373548-31"
}
}
]
],
"plugins": [],
"themeConfig": {
"navbar": {
"title": "Docusaurus",
"logo": {
"src": "img/docusaurus.svg"
},
"items": [
{
"to": "docs/installation",
"label": "Docs",
"position": "left"
},
{
"to": "docs/tutorial-setup",
"label": "Tutorial",
"position": "left"
},
{
"to": "/users",
"label": "Users",
"position": "left"
},
{
"href": "https://github.com/facebook/docusaurus",
"label": "GitHub",
"position": "left"
}
]
},
"image": "img/docusaurus.png",
"footer": {
"links": [
{
"title": "Community",
"items": [
{
"label": "Twitter",
"to": "https://twitter.com/docusaurus"
}
]
}
],
"copyright": "Copyright © 2023 Facebook Inc.",
"logo": {
"src": "img/docusaurus_monochrome.svg"
}
},
"algolia": {
"apiKey": "3eb9507824b8be89e7a199ecaa1a9d2c",
"indexName": "docusaurus",
"algoliaOptions": {
"facetFilters": [
"language:LANGUAGE",
"version:VERSION"
]
}
}
}
}",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/package.json",
"{
"name": "docusaurus-1-website",
"version": "2.0.0-alpha.58",
"private": true,
"scripts": {
"start": "docusaurus start",
"build": "docusaurus build",
"publish-gh-pages": "docusaurus-publish",
"examples": "docusaurus-examples",
"write-translations": "docusaurus-write-translations",
"docusaurus-version": "docusaurus-version",
"rename-version": "docusaurus-rename-version",
"crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master",
"crowdin-download": "crowdin --config ../crowdin.yaml download -b master",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"docusaurus": "docusaurus"
},
"dependencies": {
"@docusaurus/core": "<CURRENT_VERSION>",
"@docusaurus/preset-classic": "<CURRENT_VERSION>",
"clsx": "^1.1.1",
"react": "^17.0.2",
"react-dom": "^17.0.2"
}
}",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_complex_site/src/css/customTheme.css",
":root{
--ifm-color-primary-lightest: #3CAD6E;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-light: #33925D;
--ifm-color-primary: #2E8555;
--ifm-color-primary-dark: #29784C;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205D3B;
}
",
],
]
`;
exports[`migration CLI migrates missing versions: copy 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/blog",
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/blog",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/pages/en",
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/pages",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/missing_version_website/website/static",
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/static",
],
]
`;
exports[`migration CLI migrates missing versions: mkdirp 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/pages",
],
]
`;
exports[`migration CLI migrates missing versions: mkdirs 1`] = `[]`;
exports[`migration CLI migrates missing versions: write 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/docusaurus.config.js",
"module.exports={
"title": "Docusaurus",
"tagline": "Easy to Maintain Open Source Documentation Websites",
"url": "https://docusaurus.io",
"baseUrl": "/",
"organizationName": "facebook",
"projectName": "docusaurus",
"noIndex": false,
"scripts": [
"https://buttons.github.io/buttons.js",
"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js",
"/js/code-blocks-buttons.js"
],
"favicon": "img/docusaurus.ico",
"customFields": {
"users": {
"caption": "DevSpace",
"image": "/img/users/devspace.svg",
"infoLink": "https://devspace.cloud/docs/",
"fbOpenSource": false,
"pinned": false
},
"translationRecruitingLink": "https://crowdin.com/project/docusaurus",
"facebookAppId": "199138890728411"
},
"onBrokenLinks": "log",
"onBrokenMarkdownLinks": "log",
"presets": [
[
"@docusaurus/preset-classic",
{
"docs": {
"showLastUpdateAuthor": true,
"showLastUpdateTime": true,
"editUrl": "https://github.com/facebook/docusaurus/edit/main/docs/"
},
"blog": {},
"theme": {
"customCss": "../missing_version_website/src/css/customTheme.css"
},
"googleAnalytics": {
"trackingID": "UA-44373548-31"
}
}
]
],
"plugins": [],
"themeConfig": {
"navbar": {
"title": "Docusaurus",
"logo": {
"src": "img/docusaurus.svg"
},
"items": [
{
"to": "docs/installation",
"label": "Docs",
"position": "left"
},
{
"to": "docs/tutorial-setup",
"label": "Tutorial",
"position": "left"
},
{
"to": "/users",
"label": "Users",
"position": "left"
},
{
"href": "https://github.com/facebook/docusaurus",
"label": "GitHub",
"position": "left"
}
]
},
"image": "img/docusaurus.png",
"footer": {
"links": [
{
"title": "Community",
"items": [
{
"label": "Twitter",
"to": "https://twitter.com/docusaurus"
}
]
}
],
"copyright": "Copyright © 2023 Facebook Inc.",
"logo": {
"src": "img/docusaurus_monochrome.svg"
}
},
"algolia": {
"apiKey": "3eb9507824b8be89e7a199ecaa1a9d2c",
"indexName": "docusaurus",
"algoliaOptions": {
"facetFilters": [
"language:LANGUAGE",
"version:VERSION"
]
}
}
}
}",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/package.json",
"{
"name": "docusaurus-1-website",
"version": "2.0.0-alpha.58",
"private": true,
"scripts": {
"start": "docusaurus start",
"build": "docusaurus build",
"publish-gh-pages": "docusaurus-publish",
"examples": "docusaurus-examples",
"write-translations": "docusaurus-write-translations",
"docusaurus-version": "docusaurus-version",
"rename-version": "docusaurus-rename-version",
"crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master",
"crowdin-download": "crowdin --config ../crowdin.yaml download -b master",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"docusaurus": "docusaurus"
},
"dependencies": {
"@docusaurus/core": "<CURRENT_VERSION>",
"@docusaurus/preset-classic": "<CURRENT_VERSION>",
"clsx": "^1.1.1",
"react": "^17.0.2",
"react-dom": "^17.0.2"
}
}",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_missing_version_site/src/css/customTheme.css",
":root{
--ifm-color-primary-lightest: #3CAD6E;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-light: #33925D;
--ifm-color-primary: #2E8555;
--ifm-color-primary-dark: #29784C;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205D3B;
}
",
],
]
`;
exports[`migration CLI migrates simple website: copy 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/website/pages/en",
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/pages",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/website/static",
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/static",
],
]
`;
exports[`migration CLI migrates simple website: mkdirp 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/pages",
],
]
`;
exports[`migration CLI migrates simple website: mkdirs 1`] = `[]`;
exports[`migration CLI migrates simple website: write 1`] = `
[
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/docusaurus.config.js",
"module.exports={
"title": "Docusaurus",
"tagline": "Easy to Maintain Open Source Documentation Websites",
"url": "https://docusaurus.io",
"baseUrl": "/",
"organizationName": "facebook",
"projectName": "docusaurus",
"noIndex": false,
"scripts": [
"https://buttons.github.io/buttons.js",
"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js",
"/js/code-blocks-buttons.js"
],
"favicon": "img/docusaurus.ico",
"customFields": {
"users": {
"caption": "DevSpace",
"image": "/img/users/devspace.svg",
"infoLink": "https://devspace.cloud/docs/",
"fbOpenSource": false,
"pinned": false
},
"translationRecruitingLink": "https://crowdin.com/project/docusaurus",
"facebookAppId": "199138890728411"
},
"onBrokenLinks": "log",
"onBrokenMarkdownLinks": "log",
"presets": [
[
"@docusaurus/preset-classic",
{
"docs": {
"showLastUpdateAuthor": true,
"showLastUpdateTime": true,
"editUrl": "https://github.com/facebook/docusaurus/edit/main/docs/",
"path": "../simple_website/docs"
},
"blog": {},
"theme": {
"customCss": "../simple_website/src/css/customTheme.css"
},
"googleAnalytics": {
"trackingID": "UA-44373548-31"
}
}
]
],
"plugins": [],
"themeConfig": {
"navbar": {
"title": "Docusaurus",
"logo": {
"src": "img/docusaurus.svg"
},
"items": [
{
"to": "docs/installation",
"label": "Docs",
"position": "left"
},
{
"to": "docs/tutorial-setup",
"label": "Tutorial",
"position": "left"
},
{
"to": "/users",
"label": "Users",
"position": "left"
},
{
"href": "https://github.com/facebook/docusaurus",
"label": "GitHub",
"position": "left"
}
]
},
"image": "img/docusaurus.png",
"footer": {
"links": [
{
"title": "Community",
"items": [
{
"label": "Twitter",
"to": "https://twitter.com/docusaurus"
}
]
}
],
"copyright": "Copyright © 2023 Facebook Inc.",
"logo": {
"src": "img/docusaurus_monochrome.svg"
}
},
"algolia": {
"apiKey": "3eb9507824b8be89e7a199ecaa1a9d2c",
"indexName": "docusaurus",
"algoliaOptions": {
"facetFilters": [
"language:LANGUAGE",
"version:VERSION"
]
}
}
}
}",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/package.json",
"{
"name": "docusaurus-1-website",
"version": "2.0.0-alpha.58",
"private": true,
"scripts": {
"start": "docusaurus start",
"build": "docusaurus build",
"publish-gh-pages": "docusaurus-publish",
"examples": "docusaurus-examples",
"write-translations": "docusaurus-write-translations",
"docusaurus-version": "docusaurus-version",
"rename-version": "docusaurus-rename-version",
"crowdin-upload": "crowdin --config ../crowdin.yaml upload sources --auto-update -b master",
"crowdin-download": "crowdin --config ../crowdin.yaml download -b master",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"docusaurus": "docusaurus"
},
"dependencies": {
"@docusaurus/core": "<CURRENT_VERSION>",
"@docusaurus/preset-classic": "<CURRENT_VERSION>",
"clsx": "^1.1.1",
"react": "^17.0.2",
"react-dom": "^17.0.2"
}
}",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/migrated_simple_site/src/css/customTheme.css",
":root{
--ifm-color-primary-lightest: #3CAD6E;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-light: #33925D;
--ifm-color-primary: #2E8555;
--ifm-color-primary-dark: #29784C;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205D3B;
}
",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/docs/api-commands.md",
"---
id: commands
title: CLI Commands
---
## Doc
",
],
[
"<PROJECT_ROOT>/packages/docusaurus-migrate/src/__tests__/__fixtures__/simple_website/docs/api-doc-markdown.md",
"---
id: doc-markdown
title: Markdown Features
---
## Doc
",
],
]
`;

View File

@ -1,28 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import {shouldQuotifyFrontMatter} from '../frontMatter';
describe('shouldQuotifyFrontMatter', () => {
it('works', () => {
expect(shouldQuotifyFrontMatter(['id', 'value'])).toBe(false);
expect(
shouldQuotifyFrontMatter([
'title',
// cSpell:ignore sàáâãäåçèéêëìíîïðòóôõöùúûüýÿ
"Some title front matter with allowed special chars like sàáâãäåçèéêëìíîïðòóôõöùúûüýÿ!;,=+-_?'`&#()[]§%€$",
]),
).toBe(false);
expect(shouldQuotifyFrontMatter(['title', 'Special char :'])).toBe(true);
expect(shouldQuotifyFrontMatter(['title', 'value!'])).toBe(false);
expect(shouldQuotifyFrontMatter(['title', '!value'])).toBe(true);
expect(shouldQuotifyFrontMatter(['tags', '[tag1, tag2]'])).toBe(false);
});
});

View File

@ -1,65 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import {jest} from '@jest/globals';
import path from 'path';
import fs from 'fs-extra';
import {posixPath} from '@docusaurus/utils';
import {migrateDocusaurusProject} from '../index';
async function testMigration(siteDir: string, newDir: string) {
const writeMock = jest.spyOn(fs, 'outputFile').mockImplementation(() => {});
const mkdirpMock = jest.spyOn(fs, 'mkdirp').mockImplementation(() => {});
const mkdirsMock = jest.spyOn(fs, 'mkdirs').mockImplementation(() => {});
const copyMock = jest.spyOn(fs, 'copy').mockImplementation(() => {});
await migrateDocusaurusProject(siteDir, newDir, true, true);
expect(
writeMock.mock.calls.sort((a, b) =>
posixPath(a[0]).localeCompare(posixPath(b[0])),
),
).toMatchSnapshot('write');
expect(
mkdirpMock.mock.calls.sort((a, b) =>
posixPath(a[0]).localeCompare(posixPath(b[0])),
),
).toMatchSnapshot('mkdirp');
expect(
mkdirsMock.mock.calls.sort((a, b) =>
posixPath(a[0]).localeCompare(posixPath(b[0])),
),
).toMatchSnapshot('mkdirs');
expect(
copyMock.mock.calls.sort((a, b) =>
posixPath(a[0]).localeCompare(posixPath(b[0])),
),
).toMatchSnapshot('copy');
writeMock.mockRestore();
mkdirpMock.mockRestore();
mkdirsMock.mockRestore();
copyMock.mockRestore();
}
describe('migration CLI', () => {
const fixtureDir = path.join(__dirname, '__fixtures__');
it('migrates simple website', async () => {
const siteDir = path.join(fixtureDir, 'simple_website', 'website');
const newDir = path.join(fixtureDir, 'migrated_simple_site');
await testMigration(siteDir, newDir);
});
it('migrates complex website', async () => {
const siteDir = path.join(fixtureDir, 'complex_website', 'website');
const newDir = path.join(fixtureDir, 'migrated_complex_site');
await testMigration(siteDir, newDir);
});
it('migrates missing versions', async () => {
const siteDir = path.join(fixtureDir, 'missing_version_website', 'website');
const newDir = path.join(fixtureDir, 'migrated_missing_version_site');
await testMigration(siteDir, newDir);
});
});

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import importFresh from 'import-fresh';
import {createConfigFile} from '../index';
import type {VersionOneConfig} from '../types';
describe('create config', () => {
it('simple test', () => {
const v1Config: VersionOneConfig = importFresh(
`${__dirname}/__fixtures__/sourceSiteConfig.js`,
);
const siteDir = 'website';
const newDir = 'websiteMigrated';
const result = createConfigFile({v1Config, siteDir, newDir});
const output = importFresh(
`${__dirname}/__fixtures__/expectedSiteConfig.js`,
);
expect(result).toEqual(output);
});
});

View File

@ -1,18 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
declare module '@mapbox/hast-util-to-jsx' {
import type {Node} from 'unist';
export default function toJsx(node: Node): string;
}
declare module 'hast-util-to-string' {
import type {Node} from 'unist';
export default function toString(node: Node): string;
}

View File

@ -1,70 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import type {RawData, Data} from './types';
function splitHeader(content: string): RawData {
// New line characters need to handle all operating systems.
const lines = content.split(/\r?\n/);
if (lines[0] !== '---') {
return {};
}
let i = 1;
for (; i < lines.length - 1; i = 1 + i) {
if (lines[i] === '---') {
break;
}
}
return {
header: lines.slice(1, i + 1).join('\n'),
content: lines.slice(i + 1).join('\n'),
};
}
export default function extractMetadata(content: string): Data {
const metadata: {[key: string]: string} = {};
const both = splitHeader(content);
if (!both.content) {
if (!both.header) {
return {metadata, rawContent: content};
}
return {metadata, rawContent: both.header};
}
// New line characters => to handle all operating systems.
const lines = (both.header ?? '').split(/\r?\n/);
lines.slice(0, -1).forEach((line) => {
const keyValue = line.split(':') as [string, ...string[]];
const key = keyValue[0].trim();
const value = keyValue.slice(1).join(':').trim();
metadata[key] = value;
});
return {metadata, rawContent: both.content};
}
// The new front matter parser need some special chars to
export function shouldQuotifyFrontMatter([key, value]: [
string,
string,
]): boolean {
if (key === 'tags') {
return false;
}
if (String(value).match(/^(?<quote>["']).+\1$/)) {
return false;
}
// title: !something needs quotes because otherwise it's a YAML tag.
if (!String(value).trim().match(/^\w.*/)) {
return true;
}
// TODO this is not ideal to have to maintain such a list of allowed chars
// maybe we should quotify if gray-matter throws instead?
return !String(value).match(
// cSpell:ignore àáâãäåçèéêëìíîïðòóôõöùúûüýÿ
/^[\w .\-àáâãäåçèéêëìíîïðòóôõöùúûüýÿ!;,=+?'`&#()[\]§%€$]+$/,
);
}

View File

@ -1,763 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import path from 'path';
import fs from 'fs-extra';
import logger from '@docusaurus/logger';
import {Globby, DOCUSAURUS_VERSION} from '@docusaurus/utils';
import Color from 'color';
import extractMetadata, {shouldQuotifyFrontMatter} from './frontMatter';
import migratePage from './transform';
import sanitizeMD from './sanitizeMD';
import type {
SidebarEntry,
SidebarEntries,
VersionOneConfig,
VersionTwoConfig,
} from './types';
async function walk(dir: string): Promise<string[]> {
const results: string[] = [];
const list = await fs.readdir(dir);
for (const file of list) {
const fullPath = `${dir}/${file}`;
const stat = await fs.stat(fullPath);
if (stat.isDirectory()) {
results.push(...(await walk(fullPath)));
} else {
results.push(fullPath);
}
}
return results;
}
async function sanitizedFileContent(
content: string,
migrateMDFiles: boolean,
): Promise<string> {
const extractedData = extractMetadata(content);
const extractedMetaData = Object.entries(extractedData.metadata)
.map(
([key, value]) =>
`${key}: ${
shouldQuotifyFrontMatter([key, value]) ? `"${value}"` : value
}`,
)
.join('\n');
const sanitizedData = `---
${extractedMetaData}
---
${
migrateMDFiles
? await sanitizeMD(extractedData.rawContent)
: extractedData.rawContent
}`;
return sanitizedData;
}
type MigrationContext = {
siteDir: string;
newDir: string;
deps: {[key: string]: string};
shouldMigrateMdFiles: boolean;
shouldMigratePages: boolean;
v1Config: VersionOneConfig;
v2Config: VersionTwoConfig;
};
export async function migrateDocusaurusProject(
siteDir: string,
newDir: string,
shouldMigrateMdFiles: boolean = false,
shouldMigratePages: boolean = false,
): Promise<void> {
async function createMigrationContext(): Promise<MigrationContext> {
const v1Config = (await import(`${siteDir}/siteConfig.js`))
.default as VersionOneConfig;
logger.info('Starting migration from v1 to v2...');
const deps = {
'@docusaurus/core': DOCUSAURUS_VERSION,
'@docusaurus/preset-classic': DOCUSAURUS_VERSION,
clsx: '^1.1.1',
react: '^17.0.2',
'react-dom': '^17.0.2',
};
const partialMigrationContext = {
siteDir,
newDir,
deps,
shouldMigrateMdFiles,
shouldMigratePages,
v1Config,
};
const v2Config = createConfigFile(partialMigrationContext);
return {
...partialMigrationContext,
v2Config,
};
}
const migrationContext = await createMigrationContext();
let errorCount = 0;
try {
createClientRedirects(migrationContext);
logger.success('Created client redirect for non clean URL');
} catch (err) {
logger.error(`Failed to creating redirects: ${err}`);
errorCount += 1;
}
if (shouldMigratePages) {
try {
await createPages(migrationContext);
logger.success(
'Created new doc pages (check migration page for more details)',
);
} catch (err) {
logger.error(`Failed to create new doc pages: ${err}`);
errorCount += 1;
}
} else {
try {
await createDefaultLandingPage(migrationContext);
logger.success(
'Created landing page (check migration page for more details)',
);
} catch (err) {
logger.error(`Failed to create landing page: ${err}`);
errorCount += 1;
}
}
try {
await migrateStaticFiles(migrationContext);
logger.success('Migrated static folder');
} catch (err) {
logger.error(`Failed to copy static folder: ${err}`);
errorCount += 1;
}
try {
await migrateBlogFiles(migrationContext);
} catch (err) {
logger.error(`Failed to migrate blogs: ${err}`);
errorCount += 1;
}
try {
await handleVersioning(migrationContext);
} catch (err) {
logger.error(`Failed to migrate versioned docs: ${err}`);
errorCount += 1;
}
try {
await migrateLatestDocs(migrationContext);
} catch (err) {
logger.error(`Failed to migrate docs: ${err}`);
errorCount += 1;
}
try {
await migrateLatestSidebar(migrationContext);
} catch (err) {
logger.error(`Failed to migrate sidebar: ${err}`);
errorCount += 1;
}
try {
await fs.outputFile(
path.join(newDir, 'docusaurus.config.js'),
`module.exports=${JSON.stringify(migrationContext.v2Config, null, 2)}`,
);
logger.success(
`Created a new config file with new navbar and footer config`,
);
} catch (err) {
logger.error(`Failed to create config file: ${err}`);
errorCount += 1;
}
try {
await migratePackageFile(migrationContext);
} catch (err) {
logger.error(
`Error occurred while creating package.json file for project: ${err}`,
);
errorCount += 1;
}
if (errorCount) {
logger.warn`Migration from v1 to v2 failed with number=${errorCount} errors: please check the log above`;
} else {
logger.success('Completed migration from v1 to v2');
}
}
export function createConfigFile({
v1Config,
siteDir,
newDir,
}: Pick<
MigrationContext,
'v1Config' | 'siteDir' | 'newDir'
>): VersionTwoConfig {
const siteConfig = v1Config;
const customConfigFields: {[key: string]: unknown} = {};
// Add fields that are unknown to v2 to customConfigFields
Object.keys(siteConfig).forEach((key) => {
const knownFields = [
'title',
'tagline',
'url',
'baseUrl',
'organizationName',
'projectName',
'scripts',
'stylesheets',
'favicon',
'cname',
'noIndex',
'headerLinks',
'headerIcon',
'footerIcon',
'algolia',
'colors',
'copyright',
'editUrl',
'customDocsPath',
'facebookComments',
'usePrism',
'highlight',
'twitterUsername',
'scrollToTopOptions',
'twitter',
'twitterImage',
'onPageNav',
'cleanUrl',
'ogImage',
'scrollToTop',
'enableUpdateTime',
'enableUpdateBy',
'docsSideNavCollapsible',
'gaTrackingId',
'gaGtag',
];
const value = siteConfig[key as keyof typeof siteConfig];
if (value !== undefined && !knownFields.includes(key)) {
customConfigFields[key] = value;
}
});
logger.info`Following Fields from path=${'siteConfig.js'} will be added to path=${'docusaurus.config.js'} in code=${'customFields'}: ${Object.keys(
customConfigFields,
)}`;
let v2DocsPath: string | undefined;
if (siteConfig.customDocsPath) {
const absoluteDocsPath = path.resolve(
siteDir,
'..',
siteConfig.customDocsPath,
);
v2DocsPath = path.relative(newDir, absoluteDocsPath);
}
return {
title: siteConfig.title ?? '',
tagline: siteConfig.tagline,
url: siteConfig.url ?? '',
baseUrl: siteConfig.baseUrl ?? '',
organizationName: siteConfig.organizationName,
projectName: siteConfig.projectName,
noIndex: siteConfig.noIndex,
scripts: siteConfig.scripts,
stylesheets: siteConfig.stylesheets,
favicon: siteConfig.favicon ?? '',
customFields: customConfigFields,
onBrokenLinks: 'log',
onBrokenMarkdownLinks: 'log',
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
...(v2DocsPath && {path: v2DocsPath}),
showLastUpdateAuthor: true,
showLastUpdateTime: true,
editUrl: siteConfig.editUrl,
},
blog: {},
theme: {},
...(() => {
if (siteConfig.gaTrackingId) {
if (siteConfig.gaGtag) {
return {gtag: {trackingID: siteConfig.gaTrackingId}};
}
return {googleAnalytics: {trackingID: siteConfig.gaTrackingId}};
}
return undefined;
})(),
},
],
],
plugins: [],
themeConfig: {
navbar: {
title: siteConfig.title,
logo: siteConfig.headerIcon
? {
src: siteConfig.headerIcon,
}
: undefined,
items: (siteConfig.headerLinks ?? [])
.map((link) => {
const {doc, href, label, page} = link;
const position = 'left';
if (doc) {
return {
to: `docs/${doc}`,
label,
position,
};
}
if (page) {
return {
to: `/${page}`,
label,
position,
};
}
if (href) {
return {href, label, position};
}
return null;
})
.filter(Boolean),
},
image: siteConfig.ogImage ? siteConfig.ogImage : undefined,
footer: {
links: siteConfig.twitterUsername
? [
{
title: 'Community',
items: [
{
label: 'Twitter',
to: `https://twitter.com/${siteConfig.twitterUsername}`,
},
],
},
]
: [],
copyright: siteConfig.copyright,
logo: {
src: siteConfig.footerIcon,
},
},
algolia: siteConfig.algolia ? siteConfig.algolia : undefined,
},
};
}
function createClientRedirects(context: MigrationContext): void {
if (!context.v1Config.cleanUrl) {
context.deps['@docusaurus/plugin-client-redirects'] = DOCUSAURUS_VERSION;
context.v2Config.plugins.push([
'@docusaurus/plugin-client-redirects',
{fromExtensions: ['html']},
]);
}
}
async function createPages(context: MigrationContext) {
const {newDir, siteDir} = context;
await fs.mkdirp(path.join(newDir, 'src', 'pages'));
if (await fs.pathExists(path.join(siteDir, 'pages', 'en'))) {
try {
await fs.copy(
path.join(siteDir, 'pages', 'en'),
path.join(newDir, 'src', 'pages'),
);
const files = await Globby('**/*.js', {
cwd: path.join(newDir, 'src', 'pages'),
});
await Promise.all(
files.map(async (file) => {
const filePath = path.join(newDir, 'src', 'pages', file);
const content = await fs.readFile(filePath, 'utf-8');
await fs.outputFile(filePath, migratePage(content));
}),
);
} catch (err) {
logger.error(`Unable to migrate Pages: ${err}`);
await createDefaultLandingPage(context);
}
} else {
logger.info('Ignoring Pages');
}
}
async function createDefaultLandingPage({newDir}: MigrationContext) {
const indexPage = `import Layout from "@theme/Layout";
import React from "react";
export default () => {
return <Layout />;
};
`;
await fs.outputFile(`${newDir}/src/pages/index.js`, indexPage);
}
async function migrateStaticFiles({siteDir, newDir}: MigrationContext) {
if (await fs.pathExists(path.join(siteDir, 'static'))) {
await fs.copy(path.join(siteDir, 'static'), path.join(newDir, 'static'));
} else {
await fs.mkdir(path.join(newDir, 'static'));
}
}
async function migrateBlogFiles(context: MigrationContext) {
const {siteDir, newDir, shouldMigrateMdFiles} = context;
if (await fs.pathExists(path.join(siteDir, 'blog'))) {
await fs.copy(path.join(siteDir, 'blog'), path.join(newDir, 'blog'));
const files = await walk(path.join(newDir, 'blog'));
await Promise.all(
files.map(async (file) => {
const content = await fs.readFile(file, 'utf-8');
await fs.outputFile(
file,
await sanitizedFileContent(content, shouldMigrateMdFiles),
);
}),
);
context.v2Config.presets[0][1].blog.path = 'blog';
logger.success('Migrated blogs to version 2 with change in front matter');
} else {
logger.warn('Blog not found. Skipping migration for blog');
}
}
async function handleVersioning(context: MigrationContext) {
const {siteDir, newDir} = context;
if (await fs.pathExists(path.join(siteDir, 'versions.json'))) {
const loadedVersions = (await fs.readJSON(
path.join(siteDir, 'versions.json'),
)) as string[];
await fs.copyFile(
path.join(siteDir, 'versions.json'),
path.join(newDir, 'versions.json'),
);
const versions = loadedVersions.reverse();
const versionRegex = new RegExp(`version-(${versions.join('|')})-`, 'gim');
await migrateVersionedSidebar(context, versions, versionRegex);
await fs.mkdirp(path.join(newDir, 'versioned_docs'));
await migrateVersionedDocs(context, versions, versionRegex);
logger.success`Migrated version docs and sidebar. The following doc versions have been created:name=${loadedVersions}`;
} else {
logger.warn(
'Versioned docs not found. Skipping migration for versioned docs',
);
}
}
async function migrateVersionedDocs(
context: MigrationContext,
versions: string[],
versionRegex: RegExp,
) {
const {siteDir, newDir, shouldMigrateMdFiles} = context;
await Promise.all(
versions.reverse().map(async (version, index) => {
if (index === 0) {
await fs.copy(
path.join(siteDir, '..', context.v1Config.customDocsPath ?? 'docs'),
path.join(newDir, 'versioned_docs', `version-${version}`),
);
await fs.copy(
path.join(siteDir, 'versioned_docs', `version-${version}`),
path.join(newDir, 'versioned_docs', `version-${version}`),
);
return;
}
try {
await fs.mkdirs(
path.join(newDir, 'versioned_docs', `version-${version}`),
);
await fs.copy(
path.join(
newDir,
'versioned_docs',
`version-${versions[index - 1]!}`,
),
path.join(newDir, 'versioned_docs', `version-${version}`),
);
await fs.copy(
path.join(siteDir, 'versioned_docs', `version-${version}`),
path.join(newDir, 'versioned_docs', `version-${version}`),
);
} catch {
await fs.copy(
path.join(
newDir,
'versioned_docs',
`version-${versions[index - 1]!}`,
),
path.join(newDir, 'versioned_docs', `version-${version}`),
);
}
}),
);
const files = await walk(path.join(newDir, 'versioned_docs'));
await Promise.all(
files.map(async (pathToFile) => {
if (path.extname(pathToFile) === '.md') {
const content = await fs.readFile(pathToFile, 'utf-8');
await fs.outputFile(
pathToFile,
await sanitizedFileContent(
content.replace(versionRegex, ''),
shouldMigrateMdFiles,
),
);
}
}),
);
}
async function migrateVersionedSidebar(
context: MigrationContext,
versions: string[],
versionRegex: RegExp,
) {
const {siteDir, newDir} = context;
if (await fs.pathExists(path.join(siteDir, 'versioned_sidebars'))) {
await fs.mkdirp(path.join(newDir, 'versioned_sidebars'));
const sidebars: {
entries: SidebarEntries;
version: string;
}[] = [];
// Order matters: if a sidebar file doesn't exist, we have to use the
// previous version's
for (let i = 0; i < versions.length; i += 1) {
const version = versions[i]!;
let sidebarEntries: SidebarEntries;
const sidebarPath = path.join(
siteDir,
'versioned_sidebars',
`version-${version}-sidebars.json`,
);
try {
sidebarEntries = (await fs.readJSON(sidebarPath)) as SidebarEntries;
} catch {
sidebars.push({version, entries: sidebars[i - 1]!.entries});
return;
}
const newSidebar = Object.entries(sidebarEntries).reduce(
(topLevel: SidebarEntries, value) => {
const key = value[0].replace(versionRegex, '');
topLevel[key] = Object.entries(value[1]).reduce<{
[key: string]: (string | {[key: string]: unknown})[];
}>((acc, val) => {
acc[val[0].replace(versionRegex, '')] = (
val[1] as SidebarEntry[]
).map((item) => {
if (typeof item === 'string') {
return item.replace(versionRegex, '');
}
return {
type: 'category',
label: item.label,
ids: item.ids.map((id) => id.replace(versionRegex, '')),
};
});
return acc;
}, {});
return topLevel;
},
{},
);
sidebars.push({version, entries: newSidebar});
}
await Promise.all(
sidebars.map(async (sidebar) => {
const newSidebar = Object.entries(
sidebar.entries,
).reduce<SidebarEntries>((acc, val) => {
const key = `version-${sidebar.version}/${val[0]}`;
acc[key] = Object.entries(val[1]).map((value) => ({
type: 'category',
label: value[0],
items: (value[1] as SidebarEntry[]).map((sidebarItem) => {
if (typeof sidebarItem === 'string') {
return {
type: 'doc',
id: `version-${sidebar.version}/${sidebarItem}`,
};
}
return {
type: 'category',
label: sidebarItem.label,
items: sidebarItem.ids.map((id) => ({
type: 'doc',
id: `version-${sidebar.version}/${id}`,
})),
};
}),
}));
return acc;
}, {});
await fs.outputFile(
path.join(
newDir,
'versioned_sidebars',
`version-${sidebar.version}-sidebars.json`,
),
JSON.stringify(newSidebar, null, 2),
);
}),
);
context.v2Config.themeConfig.navbar.items.push({
label: 'Version',
to: 'docs',
position: 'right',
items: [
{
label: versions[versions.length - 1],
to: 'docs/',
activeBaseRegex: `docs/(?!${versions.join('|')}|next)`,
},
...versions
.reverse()
.slice(1)
.map((version) => ({
label: version,
to: `docs/${version}/`,
})),
{
label: 'Main/Unreleased',
to: `docs/next/`,
activeBaseRegex: `docs/next/(?!support|team|resources)`,
},
],
});
}
}
async function migrateLatestSidebar(context: MigrationContext) {
const {siteDir, newDir} = context;
try {
await fs.copyFile(
path.join(siteDir, 'sidebars.json'),
path.join(newDir, 'sidebars.json'),
);
context.v2Config.presets[0][1].docs.sidebarPath = path.join(
path.relative(newDir, siteDir),
'sidebars.json',
);
} catch {
logger.warn('Sidebar not found. Skipping migration for sidebar');
}
if (context.v1Config.colors) {
const primaryColor = Color(context.v1Config.colors.primaryColor);
const css = `:root{
--ifm-color-primary-lightest: ${primaryColor.darken(-0.3).hex()};
--ifm-color-primary-lighter: ${primaryColor.darken(-0.15).hex()};
--ifm-color-primary-light: ${primaryColor.darken(-0.1).hex()};
--ifm-color-primary: ${primaryColor.hex()};
--ifm-color-primary-dark: ${primaryColor.darken(0.1).hex()};
--ifm-color-primary-darker: ${primaryColor.darken(0.15).hex()};
--ifm-color-primary-darkest: ${primaryColor.darken(0.3).hex()};
}
`;
await fs.outputFile(
path.join(newDir, 'src', 'css', 'customTheme.css'),
css,
);
context.v2Config.presets[0][1].theme.customCss = path.join(
path.relative(newDir, path.join(siteDir, '..')),
'src/css/customTheme.css',
);
}
}
async function migrateLatestDocs(context: MigrationContext) {
const {siteDir, newDir, shouldMigrateMdFiles} = context;
if (await fs.pathExists(path.join(siteDir, '..', 'docs'))) {
context.v2Config.presets[0][1].docs.path = path.join(
path.relative(newDir, path.join(siteDir, '..')),
'docs',
);
const files = await walk(path.join(siteDir, '..', 'docs'));
await Promise.all(
files.map(async (file) => {
if (path.extname(file) === '.md') {
const content = await fs.readFile(file, 'utf-8');
await fs.outputFile(
file,
await sanitizedFileContent(content, shouldMigrateMdFiles),
);
}
}),
);
logger.success('Migrated docs to version 2');
} else {
logger.warn('Docs folder not found. Skipping migration for docs');
}
}
async function migratePackageFile(context: MigrationContext): Promise<void> {
const {deps, siteDir, newDir} = context;
// eslint-disable-next-line global-require, import/no-dynamic-require
const packageFile = (await require(`${siteDir}/package.json`)) as {
scripts?: {[key: string]: string};
dependencies?: {[key: string]: string};
devDependencies?: {[key: string]: string};
[otherKey: string]: unknown;
};
packageFile.scripts = {
...packageFile.scripts,
start: 'docusaurus start',
build: 'docusaurus build',
swizzle: 'docusaurus swizzle',
deploy: 'docusaurus deploy',
docusaurus: 'docusaurus',
};
if (packageFile.dependencies) {
delete packageFile.dependencies.docusaurus;
}
if (packageFile.devDependencies) {
delete packageFile.devDependencies.docusaurus;
}
packageFile.dependencies = {
...packageFile.dependencies,
...deps,
};
await fs.outputFile(
path.join(newDir, 'package.json'),
JSON.stringify(packageFile, null, 2),
);
logger.success('Migrated package.json file');
}
export async function migrateMDToMDX(
siteDir: string,
newDir: string,
): Promise<void> {
await fs.mkdirp(newDir);
await fs.copy(siteDir, newDir);
const files = await walk(newDir);
await Promise.all(
files.map(async (filePath) => {
if (path.extname(filePath) === '.md') {
const content = await fs.readFile(filePath, 'utf-8');
await fs.outputFile(
filePath,
await sanitizedFileContent(content, true),
);
}
}),
);
logger.success`Successfully migrated path=${siteDir} to path=${newDir}`;
}

View File

@ -1,55 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import markdown from 'remark-parse';
import toJsx from '@mapbox/hast-util-to-jsx';
import parse from 'rehype-parse';
import visit from 'unist-util-visit';
import remarkStringify from 'remark-stringify';
import htmlTags from 'html-tags';
import toText from 'hast-util-to-string';
import type {Code, InlineCode} from 'mdast';
import type {Element, Text} from 'hast';
const tags = htmlTags.reduce((acc: {[key: string]: boolean}, tag) => {
acc[tag] = true;
return acc;
}, {});
export default async function sanitizeMD(code: string): Promise<string> {
const {unified} = await import('unified');
const markdownTree = unified().use(markdown).parse(code);
visit(markdownTree, 'code', (node: Code) => {
node.value = `\n<!--${node.value}-->\n`;
});
visit(markdownTree, 'inlineCode', (node: InlineCode) => {
node.value = `<!--${node.value}-->`;
});
// @ts-expect-error: :/
const markdownString: string = await unified()
.use(remarkStringify, {fence: '`', fences: true})
.stringify(markdownTree);
const htmlTree = unified().use(parse).parse(markdownString);
visit(htmlTree, 'element', (node: Element) => {
if (!tags[node.tagName]) {
(node as Element | Text).type = 'text';
(node as Element & Partial<Omit<Text, 'type'>>).value =
node.tagName + toText(node);
delete (node as Partial<Element>).children;
delete (node as Partial<Element>).tagName;
}
});
return toJsx(htmlTree)
.replace(/\{\/\*|\*\/\}/g, '')
.replace(/\{\/\*|\*\/\}/g, '')
.replace(/<html><head \/><body>|<\/body><\/html>/g, '');
}

View File

@ -1,216 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import jscodeshift, {
type ArrowFunctionExpression,
AssignmentExpression,
type ASTPath,
type Collection,
type TemplateElement,
VariableDeclarator,
type CallExpression,
type MemberExpression,
type Identifier,
} from 'jscodeshift';
const empty = () =>
jscodeshift.arrowFunctionExpression(
[jscodeshift.identifier('props')],
jscodeshift.jsxElement(
jscodeshift.jsxOpeningElement(jscodeshift.jsxIdentifier('div'), [
jscodeshift.jsxSpreadAttribute(jscodeshift.identifier('props')),
]),
jscodeshift.jsxClosingElement(jscodeshift.jsxIdentifier('div')),
),
);
const property = (key: string, value: ArrowFunctionExpression) =>
jscodeshift.objectProperty(jscodeshift.identifier(key), value);
const processCallExpression = (node: ASTPath<VariableDeclarator>) => {
const args = (node?.value?.init as CallExpression)?.arguments[0];
if (!args) {
return;
}
if (args.type === 'Literal') {
if (
typeof args.value === 'string' &&
args.value.includes('../../core/CompLibrary')
) {
const newDeclarator = jscodeshift.variableDeclarator(
node.value.id,
jscodeshift.objectExpression([
property('Container', empty()),
property('GridBlock', empty()),
property('MarkdownBlock', empty()),
]),
);
jscodeshift(node).replaceWith(newDeclarator);
}
}
if (args.type === 'TemplateLiteral') {
if (
args.quasis
.map((element: TemplateElement) => element.value.raw)
.join('')
.match(/\/core\//)
) {
const newDeclarator = jscodeshift.variableDeclarator(
node.value.id,
empty(),
);
jscodeshift(node).replaceWith(newDeclarator);
}
}
};
const processMemberExpression = (node: ASTPath<VariableDeclarator>) => {
const object = (node?.value?.init as MemberExpression)?.object;
if (!(object.type === 'CallExpression')) {
return;
}
const args = object.arguments[0];
if (!args) {
return;
}
if (args.type === 'Literal') {
if (args.value === '../../core/CompLibrary.js') {
const newDeclarator = jscodeshift.variableDeclarator(
node.value.id,
jscodeshift.objectExpression([
property('Container', empty()),
property('GridBlock', empty()),
property('MarkdownBlock', empty()),
]),
);
jscodeshift(node).replaceWith(newDeclarator);
} else if (typeof args.value === 'string' && args.value.match(/server/)) {
const newDeclarator = jscodeshift.variableDeclarator(
node.value.id,
empty(),
);
jscodeshift(node).replaceWith(newDeclarator);
}
}
if (args.type === 'TemplateLiteral') {
if (
args.quasis
.map((ele: TemplateElement) => ele.value.raw)
.join('')
.match(/\/core\//)
) {
const newDeclarator = jscodeshift.variableDeclarator(
node.value.id,
empty(),
);
jscodeshift(node).replaceWith(newDeclarator);
}
}
};
export default function transformer(file: string): string {
const root = jscodeshift(file);
const r = getImportDeclaratorPaths(root);
r.forEach((node) => {
if (node?.value?.init?.type === 'CallExpression') {
processCallExpression(node);
} else if (node?.value?.init?.type === 'MemberExpression') {
processMemberExpression(node);
}
});
if (r[r.length - 1]) {
jscodeshift(r[r.length - 1]!.parent).insertAfter(
jscodeshift.importDeclaration(
[jscodeshift.importDefaultSpecifier(jscodeshift.identifier('Layout'))],
jscodeshift.literal('@theme/Layout'),
),
);
}
root
.find(AssignmentExpression, {
operator: '=',
left: {
type: 'MemberExpression',
object: {
name: 'module',
},
property: {
name: 'exports',
},
},
right: {
type: 'Identifier',
},
})
.filter((p) => p.parentPath.parentPath.name === 'body')
.forEach((p) => {
const exportDecl = jscodeshift.exportDeclaration(
true,
jscodeshift.arrowFunctionExpression(
[jscodeshift.identifier('props')],
jscodeshift.jsxElement(
jscodeshift.jsxOpeningElement(
jscodeshift.jsxIdentifier('Layout'),
[],
),
jscodeshift.jsxClosingElement(jscodeshift.jsxIdentifier('Layout')),
[
jscodeshift.jsxElement(
jscodeshift.jsxOpeningElement(
jscodeshift.jsxIdentifier((p.value.right as Identifier).name),
[
jscodeshift.jsxSpreadAttribute(
jscodeshift.identifier('props'),
),
],
true,
),
),
],
),
),
);
exportDecl.comments = p.parentPath.value.comments;
jscodeshift(p.parentPath).replaceWith(exportDecl);
});
return root.toSource();
}
function getDefaultImportDeclarations(rootAst: Collection) {
// var ... = require('y')
return rootAst
.find(VariableDeclarator, {
init: {
callee: {
name: 'require',
},
},
})
.filter((variableDeclarator) => !!variableDeclarator.value);
}
function getNamedImportDeclarations(rootAst: Collection) {
// var ... = require('y').x
return rootAst.find(VariableDeclarator, {
init: {
object: {
callee: {
name: 'require',
},
},
},
});
}
function getImportDeclaratorPaths(variableDeclaration: Collection) {
const defaultImports = getDefaultImportDeclarations(variableDeclaration);
const namedImports = getNamedImportDeclarations(variableDeclaration);
return [...defaultImports.paths(), ...namedImports.paths()];
}

View File

@ -1,134 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
export type RawData = {
header?: string;
content?: string;
};
export type Data = {
metadata: {[key: string]: string};
rawContent: string;
};
export type ClassicPresetEntries = {
docs: {[key: string]: unknown};
blog: {[key: string]: unknown};
gtag?: {trackingID: string} | undefined;
googleAnalytics?: {trackingID: string} | undefined;
theme: {[key: string]: unknown};
};
export type SidebarEntry =
| string
| {
type: string;
label: string;
ids: string[];
};
export type SidebarEntries = {
[key: string]:
| {[key: string]: unknown}
| ({[key: string]: unknown} | string)[];
};
export type VersionTwoConfig = {
baseUrl: string;
favicon: string;
tagline?: string;
title: string;
url: string;
organizationName?: string;
projectName?: string;
noIndex?: boolean;
githubHost?: string;
onBrokenLinks: string;
onBrokenMarkdownLinks: string;
plugins: [string, {[key: string]: unknown}][];
themes?: [];
presets: [[string, ClassicPresetEntries]];
themeConfig: {
navbar: {
title?: string;
logo?: {
src?: string;
};
items: ({[key: string]: unknown} | null)[];
};
image?: string;
footer: {
links: {
title: string;
items: {label: string; to: string}[];
}[];
copyright?: string;
logo: {
src?: string;
};
};
algolia?: {[key: string]: unknown};
};
customFields: {
[key: string]: unknown;
};
scripts?: (
| string
| {
src: string;
[key: string]: unknown;
}
)[];
stylesheets?: (
| string
| {
href: string;
[key: string]: unknown;
}
)[];
};
export type VersionOneConfig = {
title?: string;
tagline?: string;
url?: string;
baseUrl?: string;
defaultVersionShown?: string;
organizationName?: string;
projectName?: string;
noIndex?: boolean;
headerLinks?: {doc: string; href: string; label: string; page: string}[];
headerIcon?: string;
favicon?: string;
colors?: {primaryColor: string};
copyright?: string;
editUrl?: string;
customDocsPath?: string;
users?: {[key: string]: unknown}[];
disableHeaderTitle?: string;
disableTitleTagline?: string;
separateCss?: {[key: string]: unknown}[];
footerIcon?: string;
translationRecruitingLink?: string;
algolia?: {[key: string]: unknown};
gaTrackingId?: string;
gaGtag?: boolean;
highlight?: {[key: string]: unknown};
markdownPlugins?: (() => void)[];
scripts?: ({src: string; [key: string]: unknown} | string)[];
stylesheets?: ({href: string; [key: string]: unknown} | string)[];
facebookAppId?: string;
facebookComments?: true;
facebookPixelId?: string;
twitter?: string;
twitterUsername?: string;
twitterImage?: string;
ogImage?: string;
cleanUrl?: boolean;
scrollToTop?: boolean;
scrollToTopOptions?: {[key: string]: unknown};
};

View File

@ -1,13 +0,0 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"noEmit": false,
"composite": true,
"incremental": true,
"tsBuildInfoFile": "./lib/.tsbuildinfo",
"rootDir": "src",
"outDir": "lib"
},
"include": ["src"],
"exclude": ["**/__tests__/**"]
}

View File

@ -1,10 +0,0 @@
{
"extends": "../../tsconfig.json",
"references": [{"path": "./tsconfig.build.json"}],
"compilerOptions": {
"noEmit": true,
"rootDir": "."
},
"include": ["bin"],
"exclude": ["**/__tests__/**"]
}

View File

@ -85,6 +85,7 @@
"devDependencies": {
"@docusaurus/eslint-plugin": "3.0.0-beta.0",
"@docusaurus/tsconfig": "3.0.0-beta.0",
"@types/color": "^3.0.4",
"@types/jest": "^29.5.3",
"cross-env": "^7.0.3",
"rimraf": "^3.0.2",

375
yarn.lock
View File

@ -200,7 +200,7 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730"
integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.19.6", "@babel/core@^7.22.9":
"@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.6", "@babel/core@^7.22.9":
version "7.22.9"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f"
integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==
@ -256,7 +256,7 @@
lru-cache "^5.1.1"
semver "^6.3.1"
"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.22.9":
"@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.22.9":
version "7.22.9"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236"
integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==
@ -343,7 +343,7 @@
dependencies:
"@babel/types" "^7.22.5"
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
@ -373,7 +373,7 @@
dependencies:
"@babel/types" "^7.22.5"
"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
"@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847"
integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==
@ -429,7 +429,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7":
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7":
version "7.22.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae"
integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==
@ -450,31 +450,6 @@
"@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
"@babel/plugin-transform-optional-chaining" "^7.22.5"
"@babel/plugin-proposal-class-properties@^7.13.0":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3"
integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1"
integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
"@babel/plugin-proposal-optional-chaining@^7.13.12":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea"
integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
version "7.21.0-placeholder-for-preset-env.2"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703"
@ -530,13 +505,6 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/plugin-syntax-flow@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859"
integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/plugin-syntax-import-assertions@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98"
@ -769,14 +737,6 @@
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
"@babel/plugin-transform-flow-strip-types@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2"
integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/plugin-syntax-flow" "^7.22.5"
"@babel/plugin-transform-for-of@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f"
@ -831,7 +791,7 @@
"@babel/helper-module-transforms" "^7.22.5"
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.22.5":
"@babel/plugin-transform-modules-commonjs@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa"
integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==
@ -1187,15 +1147,6 @@
core-js-compat "^3.31.0"
semver "^6.3.1"
"@babel/preset-flow@^7.13.13":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.5.tgz#876f24ab6b38bd79703a93f32020ca2162312784"
integrity sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q==
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/helper-validator-option" "^7.22.5"
"@babel/plugin-transform-flow-strip-types" "^7.22.5"
"@babel/preset-modules@^0.1.5":
version "0.1.5"
resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
@ -1219,7 +1170,7 @@
"@babel/plugin-transform-react-jsx-development" "^7.22.5"
"@babel/plugin-transform-react-pure-annotations" "^7.22.5"
"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5":
"@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8"
integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==
@ -1230,17 +1181,6 @@
"@babel/plugin-transform-modules-commonjs" "^7.22.5"
"@babel/plugin-transform-typescript" "^7.22.5"
"@babel/register@^7.13.16":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.5.tgz#e4d8d0f615ea3233a27b5c6ada6750ee59559939"
integrity sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ==
dependencies:
clone-deep "^4.0.1"
find-cache-dir "^2.0.0"
make-dir "^2.1.0"
pirates "^4.0.5"
source-map-support "^0.5.16"
"@babel/regjsgen@^0.8.0":
version "0.8.0"
resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
@ -2146,19 +2086,6 @@
write-pkg "4.0.0"
yargs "16.2.0"
"@mapbox/hast-util-to-jsx@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@mapbox/hast-util-to-jsx/-/hast-util-to-jsx-2.0.0.tgz#17b25cca42015d8d3f6f241de4f068f36975a6e7"
integrity sha512-o+2fGJo3xdqHOw3Y4hioS1qg/Bjh6NR80cJToTBRx682gLs1rttyyJTpYwi+AWFajPNaVxymGDnwYOmVqAAZSA==
dependencies:
kebab-case "^1.0.0"
postcss "^7.0.39"
postcss-js "^2.0.3"
property-information "^5.5.0"
react-attr-converter "^0.3.1"
stringify-entities "^3.0.1"
stringify-object "^3.3.0"
"@mdx-js/mdx@^2.1.5":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.3.0.tgz#d65d8c3c28f3f46bb0e7cb3bf7613b39980671a9"
@ -3131,9 +3058,9 @@
source-map "^0.6.0"
"@types/color-convert@*":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22"
integrity sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==
version "2.0.1"
resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.1.tgz#45216f0d8289c6ae32d139ed08c205a9c55bb5d0"
integrity sha512-GwXanrvq/tBHJtudbl1lSy9Ybt7KS9+rA+YY3bcuIIM+d6jSHUr+5yjO83gtiRpuaPiBccwFjSnAK2qSrIPA7w==
dependencies:
"@types/color-name" "*"
@ -3142,10 +3069,10 @@
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
"@types/color@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/color/-/color-3.0.3.tgz#e6d8d72b7aaef4bb9fe80847c26c7c786191016d"
integrity sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA==
"@types/color@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@types/color/-/color-3.0.4.tgz#53ceca0946660c7779442948878172c6ace13777"
integrity sha512-OpisS4bqJJwbkkQRrMvURf3DOxBoAg9mysHYI7WgrWpSYHqHGKYBULHdz4ih77SILcLDo/zyHGFyfIl9yb8NZQ==
dependencies:
"@types/color-convert" "*"
@ -3384,14 +3311,6 @@
resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138"
integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==
"@types/jscodeshift@^0.11.6":
version "0.11.6"
resolved "https://registry.yarnpkg.com/@types/jscodeshift/-/jscodeshift-0.11.6.tgz#9ced613c8dd92559000fb671d151685ea8e420c7"
integrity sha512-3lJ4DajWkk4MZ1F7q+1C7jE0z0xOtbu0VU/Kg3wdPq2DUvJjySSlu3B5Q/bICrTxugLhONBO7inRUWsymOID/A==
dependencies:
ast-types "^0.14.1"
recast "^0.20.3"
"@types/jsdom@^20.0.0":
version "20.0.1"
resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808"
@ -3519,11 +3438,6 @@
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/parse5@^5.0.0":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109"
integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==
"@types/parse5@^6.0.0":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb"
@ -4497,20 +4411,6 @@ ast-types-flow@^0.0.7:
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==
ast-types@0.14.2, ast-types@^0.14.1:
version "0.14.2"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd"
integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==
dependencies:
tslib "^2.0.1"
ast-types@0.15.2:
version "0.15.2"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d"
integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==
dependencies:
tslib "^2.0.1"
astral-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
@ -4596,11 +4496,6 @@ b4a@^1.6.4:
resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9"
integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==
babel-core@^7.0.0-bridge.0:
version "7.0.0-bridge.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
babel-jest@^29.6.1:
version "29.6.1"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.1.tgz#a7141ad1ed5ec50238f3cd36127636823111233a"
@ -5064,11 +4959,6 @@ camel-case@^4.1.2:
pascal-case "^3.1.2"
tslib "^2.0.3"
camelcase-css@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
camelcase-keys@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
@ -5591,11 +5481,6 @@ common-tags@^1.8.0:
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
compare-func@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3"
@ -7432,7 +7317,7 @@ espree@^9.6.0:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.4.1"
esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
@ -7879,15 +7764,6 @@ finalhandler@1.2.0:
statuses "2.0.1"
unpipe "~1.0.0"
find-cache-dir@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
dependencies:
commondir "^1.0.1"
make-dir "^2.0.0"
pkg-dir "^3.0.0"
find-cache-dir@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2"
@ -7952,11 +7828,6 @@ flatted@^3.1.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
flow-parser@0.*:
version "0.212.0"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.212.0.tgz#2b15a32bf0cc15fc81818fe849752dd70cb87871"
integrity sha512-45eNySEs7n692jLN+eHQ6zvC9e1cqu9Dq1PpDHTcWRri2HFEs8is8Anmp1RcIhYxA5TZYD6RuESG2jdj6nkDJQ==
flux@~4.0.1:
version "4.0.4"
resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.4.tgz#9661182ea81d161ee1a6a6af10d20485ef2ac572"
@ -8630,18 +8501,6 @@ hast-util-from-html@^1.0.0:
vfile "^5.0.0"
vfile-message "^3.0.0"
hast-util-from-parse5@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a"
integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==
dependencies:
"@types/parse5" "^5.0.0"
hastscript "^6.0.0"
property-information "^5.0.0"
vfile "^4.0.0"
vfile-location "^3.2.0"
web-namespaces "^1.0.0"
hast-util-from-parse5@^7.0.0:
version "7.1.2"
resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz#aecfef73e3ceafdfa4550716443e4eb7b02e22b0"
@ -8668,11 +8527,6 @@ hast-util-is-element@^2.0.0:
"@types/hast" "^2.0.0"
"@types/unist" "^2.0.0"
hast-util-parse-selector@^2.0.0:
version "2.2.5"
resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a"
integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==
hast-util-parse-selector@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz#25ab00ae9e75cbc62cf7a901f68a247eade659e2"
@ -8746,11 +8600,6 @@ hast-util-to-parse5@^7.0.0:
web-namespaces "^2.0.0"
zwitch "^2.0.0"
hast-util-to-string@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz#9b24c114866bdb9478927d7e9c36a485ac728378"
integrity sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==
hast-util-to-text@^3.1.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz#ecf30c47141f41e91a5d32d0b1e1859fd2ac04f2"
@ -8771,17 +8620,6 @@ hast-util-whitespace@^2.0.0:
resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557"
integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==
hastscript@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640"
integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==
dependencies:
"@types/hast" "^2.0.0"
comma-separated-tokens "^1.0.0"
hast-util-parse-selector "^2.0.0"
property-information "^5.0.0"
space-separated-tokens "^1.0.0"
hastscript@^7.0.0, hastscript@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.2.0.tgz#0eafb7afb153d047077fa2a833dc9b7ec604d10b"
@ -9332,11 +9170,6 @@ is-alphabetical@^2.0.0:
resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b"
integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==
is-alphanumeric@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4"
integrity sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==
is-alphanumerical@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
@ -10259,31 +10092,6 @@ js-yaml@^3.10.0, js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
jscodeshift@^0.14.0:
version "0.14.0"
resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881"
integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==
dependencies:
"@babel/core" "^7.13.16"
"@babel/parser" "^7.13.16"
"@babel/plugin-proposal-class-properties" "^7.13.0"
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8"
"@babel/plugin-proposal-optional-chaining" "^7.13.12"
"@babel/plugin-transform-modules-commonjs" "^7.13.8"
"@babel/preset-flow" "^7.13.13"
"@babel/preset-typescript" "^7.13.0"
"@babel/register" "^7.13.16"
babel-core "^7.0.0-bridge.0"
chalk "^4.1.2"
flow-parser "0.*"
graceful-fs "^4.2.4"
micromatch "^4.0.4"
neo-async "^2.5.0"
node-dir "^0.1.17"
recast "^0.21.0"
temp "^0.8.4"
write-file-atomic "^2.3.0"
jsdoctypeparser@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26"
@ -10444,11 +10252,6 @@ katex@^0.16.0:
dependencies:
commander "^8.3.0"
kebab-case@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/kebab-case/-/kebab-case-1.0.2.tgz#5eac97d5d220acf606d40e3c0ecfea21f1f9e1eb"
integrity sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==
keyv@^4.5.2:
version "4.5.2"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56"
@ -10866,11 +10669,6 @@ log-update@^4.0.0:
slice-ansi "^4.0.0"
wrap-ansi "^6.2.0"
longest-streak@^2.0.1:
version "2.0.4"
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
longest-streak@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4"
@ -10933,7 +10731,7 @@ make-dir@3.1.0, make-dir@^3.0.0:
dependencies:
semver "^6.0.0"
make-dir@^2.0.0, make-dir@^2.1.0:
make-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
@ -11033,13 +10831,6 @@ markdown-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3"
integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==
markdown-table@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b"
integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==
dependencies:
repeat-string "^1.0.0"
markdown-table@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd"
@ -11050,13 +10841,6 @@ mathml-tag-names@^2.1.3:
resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
mdast-util-compact@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490"
integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==
dependencies:
unist-util-visit "^2.0.0"
mdast-util-definitions@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2"
@ -12134,7 +11918,7 @@ minimatch@3.0.5:
dependencies:
brace-expansion "^1.1.7"
minimatch@3.1.2, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@ -12411,7 +12195,7 @@ negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.2:
neo-async@^2.6.0, neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@ -12456,13 +12240,6 @@ node-addon-api@^6.1.0:
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
node-dir@^0.1.17:
version "0.1.17"
resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==
dependencies:
minimatch "^3.0.2"
node-emoji@^1.10.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c"
@ -13452,11 +13229,6 @@ periscopic@^3.0.0:
estree-walker "^3.0.0"
is-reference "^3.0.0"
picocolors@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@ -13497,18 +13269,11 @@ pify@^4.0.1:
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.5:
pirates@^4.0.1, pirates@^4.0.4:
version "4.0.6"
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
pkg-dir@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
dependencies:
find-up "^3.0.0"
pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
@ -13588,14 +13353,6 @@ postcss-discard-unused@^5.1.0:
dependencies:
postcss-selector-parser "^6.0.5"
postcss-js@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.3.tgz#a96f0f23ff3d08cec7dc5b11bf11c5f8077cdab9"
integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==
dependencies:
camelcase-css "^2.0.1"
postcss "^7.0.18"
postcss-loader@^7.3.3:
version "7.3.3"
resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.3.tgz#6da03e71a918ef49df1bb4be4c80401df8e249dd"
@ -13839,14 +13596,6 @@ postcss-zindex@^5.1.0:
resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff"
integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==
postcss@^7.0.18, postcss@^7.0.39:
version "7.0.39"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309"
integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
dependencies:
picocolors "^0.2.1"
source-map "^0.6.1"
postcss@^8.2.x, postcss@^8.4.17, postcss@^8.4.19, postcss@^8.4.21, postcss@^8.4.26:
version "8.4.31"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
@ -14012,7 +13761,7 @@ prop-types@^15.0.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
object-assign "^4.1.1"
react-is "^16.13.1"
property-information@^5.0.0, property-information@^5.5.0:
property-information@^5.0.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69"
integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==
@ -14187,11 +13936,6 @@ rc@1.2.8, rc@^1.2.7:
minimist "^1.2.0"
strip-json-comments "~2.0.1"
react-attr-converter@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/react-attr-converter/-/react-attr-converter-0.3.1.tgz#4a2abf6d907b7ddae4d862dfec80e489ce41ad6e"
integrity sha512-dSxo2Mn6Zx4HajeCeQNLefwEO4kNtV/0E682R1+ZTyFRPqxDa5zYb5qM/ocqw9Bxr/kFQO0IUiqdV7wdHw+Cdg==
react-base16-styling@~0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c"
@ -14539,26 +14283,6 @@ reading-time@^1.5.0:
resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb"
integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==
recast@^0.20.3:
version "0.20.5"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae"
integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==
dependencies:
ast-types "0.14.2"
esprima "~4.0.0"
source-map "~0.6.1"
tslib "^2.0.1"
recast@^0.21.0:
version "0.21.5"
resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495"
integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==
dependencies:
ast-types "0.15.2"
esprima "~4.0.0"
source-map "~0.6.1"
tslib "^2.0.1"
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
@ -14705,14 +14429,6 @@ rehype-katex@^6.0.3:
katex "^0.16.0"
unist-util-visit "^4.0.0"
rehype-parse@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-7.0.1.tgz#58900f6702b56767814afc2a9efa2d42b1c90c57"
integrity sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==
dependencies:
hast-util-from-parse5 "^6.0.0"
parse5 "^6.0.0"
rehype-raw@^6.1.1:
version "6.1.1"
resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-6.1.1.tgz#81bbef3793bd7abacc6bf8335879d1b6c868c9d4"
@ -14848,26 +14564,6 @@ remark-stringify@^10.0.0:
mdast-util-to-markdown "^1.0.0"
unified "^10.0.0"
remark-stringify@^8.1.1:
version "8.1.1"
resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5"
integrity sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==
dependencies:
ccount "^1.0.0"
is-alphanumeric "^1.0.0"
is-decimal "^1.0.0"
is-whitespace-character "^1.0.0"
longest-streak "^2.0.1"
markdown-escapes "^1.0.0"
markdown-table "^2.0.0"
mdast-util-compact "^2.0.0"
parse-entities "^2.0.0"
repeat-string "^1.5.4"
state-toggle "^1.0.0"
stringify-entities "^3.0.0"
unherit "^1.0.4"
xtend "^4.0.1"
remark@^14.0.3:
version "14.0.3"
resolved "https://registry.yarnpkg.com/remark/-/remark-14.0.3.tgz#e477886a7579df612908f387c7753dc93cdaa3fc"
@ -14889,7 +14585,7 @@ renderkid@^3.0.0:
lodash "^4.17.21"
strip-ansi "^6.0.1"
repeat-string@^1.0.0, repeat-string@^1.5.4, repeat-string@^1.6.1:
repeat-string@^1.5.4, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
@ -15035,13 +14731,6 @@ rimraf@^4.4.1:
dependencies:
glob "^9.2.0"
rimraf@~2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
dependencies:
glob "^7.1.3"
robust-predicates@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771"
@ -15605,7 +15294,7 @@ source-map-support@0.5.13:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map-support@^0.5.16, source-map-support@~0.5.20:
source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
@ -15881,7 +15570,7 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
stringify-entities@^3.0.0, stringify-entities@^3.0.1:
stringify-entities@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903"
integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==
@ -16255,13 +15944,6 @@ temp-dir@^2.0.0:
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==
temp@^0.8.4:
version "0.8.4"
resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2"
integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==
dependencies:
rimraf "~2.6.2"
tempy@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.0.tgz#4f192b3ee3328a2684d0e3fc5c491425395aab65"
@ -16535,7 +16217,7 @@ tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.0:
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3"
integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==
@ -17190,7 +16872,7 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
vfile-location@^3.0.0, vfile-location@^3.2.0:
vfile-location@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==
@ -17325,11 +17007,6 @@ wcwidth@^1.0.0, wcwidth@^1.0.1:
dependencies:
defaults "^1.0.3"
web-namespaces@^1.0.0:
version "1.1.4"
resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec"
integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==
web-namespaces@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692"
@ -17788,7 +17465,7 @@ write-file-atomic@4.0.1:
imurmurhash "^0.1.4"
signal-exit "^3.0.7"
write-file-atomic@^2.3.0, write-file-atomic@^2.4.2:
write-file-atomic@^2.4.2:
version "2.4.3"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==