@docusaurus/core 2.0.0-beta.15d451942 → 2.0.0-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/bin/beforeCli.mjs +136 -0
  2. package/bin/docusaurus.mjs +280 -0
  3. package/lib/babel/preset.d.ts +8 -3
  4. package/lib/babel/preset.js +8 -7
  5. package/lib/choosePort.js +32 -41
  6. package/lib/client/.eslintrc.js +0 -1
  7. package/lib/client/App.d.ts +1 -2
  8. package/lib/client/App.js +19 -24
  9. package/lib/client/LinksCollector.d.ts +3 -3
  10. package/lib/client/LinksCollector.js +5 -9
  11. package/lib/client/PendingNavigation.d.ts +24 -1
  12. package/lib/client/PendingNavigation.js +5 -7
  13. package/lib/client/baseUrlIssueBanner/BaseUrlIssueBanner.d.ts +13 -0
  14. package/lib/client/baseUrlIssueBanner/BaseUrlIssueBanner.js +15 -10
  15. package/lib/client/client-lifecycles-dispatcher.d.ts +2 -5
  16. package/lib/client/client-lifecycles-dispatcher.js +5 -9
  17. package/lib/client/clientEntry.js +11 -5
  18. package/lib/client/docusaurus.d.ts +6 -0
  19. package/lib/client/docusaurus.js +17 -23
  20. package/lib/client/exports/BrowserOnly.d.ts +2 -3
  21. package/lib/client/exports/BrowserOnly.js +14 -7
  22. package/lib/client/exports/ComponentCreator.d.ts +1 -2
  23. package/lib/client/exports/ComponentCreator.js +7 -6
  24. package/lib/client/exports/ErrorBoundary.d.ts +18 -0
  25. package/lib/client/exports/ErrorBoundary.js +36 -0
  26. package/lib/client/exports/Head.d.ts +2 -3
  27. package/lib/client/exports/Head.js +3 -4
  28. package/lib/client/exports/Interpolate.d.ts +1 -1
  29. package/lib/client/exports/Interpolate.js +15 -21
  30. package/lib/client/exports/Link.d.ts +11 -5
  31. package/lib/client/exports/Link.js +29 -17
  32. package/lib/client/exports/Translate.d.ts +3 -3
  33. package/lib/client/exports/Translate.js +15 -10
  34. package/lib/client/exports/browserContext.d.ts +11 -0
  35. package/lib/client/exports/browserContext.js +22 -0
  36. package/lib/client/exports/constants.js +1 -11
  37. package/lib/client/exports/docusaurusContext.d.ts +12 -0
  38. package/lib/client/exports/docusaurusContext.js +25 -0
  39. package/lib/client/exports/isInternalUrl.js +1 -1
  40. package/lib/client/exports/renderRoutes.d.ts +1 -2
  41. package/lib/client/exports/renderRoutes.js +1 -2
  42. package/lib/client/exports/router.d.ts +1 -1
  43. package/lib/client/exports/router.js +1 -1
  44. package/lib/client/exports/useBaseUrl.js +3 -5
  45. package/lib/client/exports/useDocusaurusContext.d.ts +2 -3
  46. package/lib/client/exports/useDocusaurusContext.js +3 -9
  47. package/lib/client/exports/useGlobalData.js +4 -8
  48. package/lib/{server/versions/__tests/index.test.d.ts → client/exports/useIsBrowser.d.ts} +1 -1
  49. package/lib/client/exports/useIsBrowser.js +11 -0
  50. package/lib/client/flat.d.ts +2 -2
  51. package/lib/client/flat.js +8 -11
  52. package/lib/client/normalizeLocation.d.ts +2 -5
  53. package/lib/client/normalizeLocation.js +1 -2
  54. package/lib/client/nprogress.css +2 -2
  55. package/lib/client/prefetch.d.ts +1 -2
  56. package/lib/client/prefetch.js +1 -3
  57. package/lib/client/preload.d.ts +3 -2
  58. package/lib/client/preload.js +2 -1
  59. package/lib/client/serverEntry.d.ts +10 -0
  60. package/lib/client/serverEntry.js +90 -142
  61. package/lib/client/theme-fallback/Error/index.d.ts +10 -0
  62. package/lib/client/theme-fallback/Error/index.js +39 -0
  63. package/lib/client/theme-fallback/Layout/index.d.ts +10 -0
  64. package/lib/client/theme-fallback/Layout/index.js +10 -19
  65. package/lib/client/theme-fallback/Loading/index.d.ts +9 -0
  66. package/lib/client/theme-fallback/Loading/index.js +47 -115
  67. package/lib/client/{exports/context.js → theme-fallback/NotFound/index.d.ts} +2 -2
  68. package/lib/client/theme-fallback/NotFound/index.js +9 -16
  69. package/lib/{webpack/sharedModuleAliases.d.ts → client/theme-fallback/Root/index.d.ts} +4 -4
  70. package/lib/client/theme-fallback/Root/index.js +2 -7
  71. package/lib/commands/build.d.ts +1 -1
  72. package/lib/commands/build.js +59 -61
  73. package/lib/commands/clear.d.ts +6 -0
  74. package/lib/commands/clear.js +32 -21
  75. package/lib/commands/commandUtils.d.ts +7 -1
  76. package/lib/commands/commandUtils.js +7 -7
  77. package/lib/commands/deploy.d.ts +4 -1
  78. package/lib/commands/deploy.js +115 -71
  79. package/lib/commands/external.d.ts +2 -2
  80. package/lib/commands/external.js +4 -4
  81. package/lib/commands/serve.d.ts +1 -1
  82. package/lib/commands/serve.js +30 -16
  83. package/lib/commands/start.d.ts +1 -1
  84. package/lib/commands/start.js +100 -89
  85. package/lib/commands/swizzle/actions.d.ts +23 -0
  86. package/lib/commands/swizzle/actions.js +102 -0
  87. package/lib/commands/swizzle/common.d.ts +33 -0
  88. package/lib/commands/swizzle/common.js +57 -0
  89. package/lib/commands/swizzle/components.d.ts +29 -0
  90. package/lib/commands/swizzle/components.js +165 -0
  91. package/lib/commands/swizzle/config.d.ts +10 -0
  92. package/lib/commands/swizzle/config.js +77 -0
  93. package/lib/{client/exports → commands/swizzle}/context.d.ts +2 -4
  94. package/lib/commands/swizzle/context.js +30 -0
  95. package/lib/commands/swizzle/index.d.ts +8 -0
  96. package/lib/commands/swizzle/index.js +115 -0
  97. package/lib/commands/swizzle/prompts.d.ts +12 -0
  98. package/lib/commands/swizzle/prompts.js +110 -0
  99. package/lib/commands/swizzle/tables.d.ts +9 -0
  100. package/lib/commands/swizzle/tables.js +116 -0
  101. package/lib/commands/swizzle/themes.d.ts +20 -0
  102. package/lib/commands/swizzle/themes.js +105 -0
  103. package/lib/commands/writeHeadingIds.d.ts +9 -6
  104. package/lib/commands/writeHeadingIds.js +44 -46
  105. package/lib/commands/writeTranslations.d.ts +2 -2
  106. package/lib/commands/writeTranslations.js +36 -14
  107. package/lib/index.d.ts +10 -9
  108. package/lib/index.js +20 -19
  109. package/lib/server/brokenLinks.d.ts +1 -1
  110. package/lib/server/brokenLinks.js +38 -33
  111. package/lib/server/client-modules/index.d.ts +1 -1
  112. package/lib/server/client-modules/index.js +1 -3
  113. package/lib/server/config.d.ts +2 -2
  114. package/lib/server/config.js +10 -7
  115. package/lib/server/configValidation.d.ts +4 -2
  116. package/lib/server/configValidation.js +63 -32
  117. package/lib/server/duplicateRoutes.d.ts +1 -1
  118. package/lib/server/duplicateRoutes.js +10 -6
  119. package/lib/server/html-tags/htmlTags.js +8 -9
  120. package/lib/server/html-tags/index.d.ts +2 -2
  121. package/lib/server/html-tags/index.js +3 -3
  122. package/lib/server/i18n.d.ts +1 -2
  123. package/lib/server/i18n.js +31 -46
  124. package/lib/server/index.d.ts +9 -2
  125. package/lib/server/index.js +165 -87
  126. package/lib/server/loadSetup.d.ts +2 -3
  127. package/lib/server/loadSetup.js +5 -5
  128. package/lib/server/moduleShorthand.d.ts +9 -0
  129. package/lib/server/moduleShorthand.js +46 -0
  130. package/lib/server/plugins/applyRouteTrailingSlash.d.ts +9 -0
  131. package/lib/server/plugins/applyRouteTrailingSlash.js +19 -0
  132. package/lib/server/plugins/index.d.ts +3 -4
  133. package/lib/server/plugins/index.js +53 -37
  134. package/lib/server/plugins/init.d.ts +11 -5
  135. package/lib/server/plugins/init.js +40 -47
  136. package/lib/server/plugins/pluginIds.d.ts +2 -2
  137. package/lib/server/plugins/pluginIds.js +8 -5
  138. package/lib/server/presets/index.d.ts +3 -3
  139. package/lib/server/presets/index.js +14 -14
  140. package/lib/server/routes.d.ts +1 -1
  141. package/lib/server/routes.js +51 -28
  142. package/lib/server/themes/alias.d.ts +3 -2
  143. package/lib/server/themes/alias.js +24 -15
  144. package/lib/server/themes/index.d.ts +6 -2
  145. package/lib/server/themes/index.js +36 -24
  146. package/lib/server/translations/translations.d.ts +10 -5
  147. package/lib/server/translations/translations.js +27 -35
  148. package/lib/server/translations/translationsExtractor.d.ts +9 -4
  149. package/lib/server/translations/translationsExtractor.js +160 -119
  150. package/lib/server/utils.d.ts +9 -3
  151. package/lib/server/utils.js +8 -10
  152. package/lib/server/versions/__fixtures__/dummy-plugin.d.ts +0 -0
  153. package/lib/server/versions/index.d.ts +3 -4
  154. package/lib/server/versions/index.js +22 -21
  155. package/lib/webpack/base.d.ts +4 -4
  156. package/lib/webpack/base.js +54 -38
  157. package/lib/webpack/client.d.ts +3 -3
  158. package/lib/webpack/client.js +15 -21
  159. package/lib/webpack/plugins/ChunkAssetPlugin.d.ts +13 -3
  160. package/lib/webpack/plugins/ChunkAssetPlugin.js +17 -10
  161. package/lib/webpack/plugins/CleanWebpackPlugin.d.ts +6 -6
  162. package/lib/webpack/plugins/CleanWebpackPlugin.js +10 -16
  163. package/lib/webpack/plugins/LogPlugin.d.ts +1 -1
  164. package/lib/webpack/plugins/LogPlugin.js +5 -6
  165. package/lib/webpack/plugins/WaitPlugin.d.ts +1 -1
  166. package/lib/webpack/plugins/WaitPlugin.js +4 -4
  167. package/lib/webpack/server.d.ts +3 -3
  168. package/lib/webpack/server.js +18 -11
  169. package/lib/{client → webpack}/templates/index.html.template.ejs +0 -0
  170. package/lib/webpack/templates/ssr.html.template.d.ts +8 -0
  171. package/lib/{client → webpack}/templates/ssr.html.template.js +5 -4
  172. package/lib/webpack/utils.d.ts +9 -30
  173. package/lib/webpack/utils.js +58 -171
  174. package/package.json +76 -69
  175. package/bin/docusaurus.js +0 -326
  176. package/lib/.tsbuildinfo +0 -5732
  177. package/lib/client/.tsbuildinfo +0 -4171
  178. package/lib/commands/buildRemoteBranchUrl.d.ts +0 -7
  179. package/lib/commands/buildRemoteBranchUrl.js +0 -27
  180. package/lib/commands/swizzle.d.ts +0 -9
  181. package/lib/commands/swizzle.js +0 -245
  182. package/lib/constants.d.ts +0 -18
  183. package/lib/constants.js +0 -23
  184. package/lib/server/versions/__tests/index.test.js +0 -25
  185. package/lib/webpack/react-dev-utils-webpack5/README.md +0 -11
  186. package/lib/webpack/react-dev-utils-webpack5/evalSourceMapMiddleware.js +0 -57
  187. package/lib/webpack/react-dev-utils-webpack5/formatWebpackMessages.js +0 -138
  188. package/lib/webpack/react-dev-utils-webpack5/webpackHotDevClient.js +0 -285
  189. package/lib/webpack/sharedModuleAliases.js +0 -18
  190. package/tsconfig.client.json +0 -13
  191. package/tsconfig.json +0 -13
@@ -4,165 +4,113 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
-
8
7
  import * as eta from 'eta';
9
8
  import React from 'react';
10
- import {StaticRouter} from 'react-router-dom';
9
+ import { StaticRouter } from 'react-router-dom';
11
10
  import ReactDOMServer from 'react-dom/server';
12
- import {Helmet} from 'react-helmet';
13
- import {getBundles} from 'react-loadable-ssr-addon-v5-slorber';
11
+ import { HelmetProvider } from 'react-helmet-async';
12
+ import { getBundles } from 'react-loadable-ssr-addon-v5-slorber';
14
13
  import Loadable from 'react-loadable';
15
-
16
- import {minify} from 'html-minifier-terser';
14
+ import { minify } from 'html-minifier-terser';
17
15
  import path from 'path';
18
16
  import fs from 'fs-extra';
19
17
  import routes from '@generated/routes';
20
- import packageJson from '../../package.json';
21
- // eslint-disable-next-line import/no-unresolved
22
18
  import preload from './preload';
23
- // eslint-disable-next-line import/no-unresolved
24
19
  import App from './App';
25
- import {
26
- createStatefulLinksCollector,
27
- ProvideLinksCollector,
28
- } from './LinksCollector';
29
- import chalk from 'chalk';
20
+ import { createStatefulLinksCollector, ProvideLinksCollector, } from './LinksCollector';
21
+ import logger from '@docusaurus/logger';
30
22
  // eslint-disable-next-line no-restricted-imports
31
- import {memoize} from 'lodash';
32
-
33
- const getCompiledSSRTemplate = memoize((template) => {
34
- return eta.compile(template.trim(), {
23
+ import _ from 'lodash';
24
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
25
+ const packageJson = require('../../package.json');
26
+ const getCompiledSSRTemplate = _.memoize((template) => eta.compile(template.trim(), {
35
27
  rmWhitespace: true,
36
- });
37
- });
38
-
28
+ }));
39
29
  function renderSSRTemplate(ssrTemplate, data) {
40
- const compiled = getCompiledSSRTemplate(ssrTemplate);
41
- return compiled(data, eta.defaultConfig);
30
+ const compiled = getCompiledSSRTemplate(ssrTemplate);
31
+ return compiled(data, eta.defaultConfig);
42
32
  }
43
-
44
33
  export default async function render(locals) {
45
- try {
46
- return await doRender(locals);
47
- } catch (e) {
48
- console.error(
49
- chalk.red(
50
- `Docusaurus Node/SSR could not render static page with path "${locals.path}" because of following error:\n\n${e.stack}\n`,
51
- ),
52
- );
53
-
54
- const isNotDefinedErrorRegex = /(window|document|localStorage|navigator|alert|location|buffer|self) is not defined/i;
55
-
56
- if (isNotDefinedErrorRegex.test(e.message)) {
57
- console.error(
58
- chalk.green(
59
- 'Pro tip: It looks like you are using code that should run on the client-side only.\nTo get around it, try using <BrowserOnly> (https://docusaurus.io/docs/docusaurus-core/#browseronly) or ExecutionEnvironment (https://docusaurus.io/docs/docusaurus-core/#executionenvironment).\nIt might also require to wrap your client code in useEffect hook and/or import a third-party library dynamically (if any).',
60
- ),
61
- );
34
+ try {
35
+ return await doRender(locals);
36
+ }
37
+ catch (err) {
38
+ logger.error `Docusaurus server-side rendering could not render static page with path path=${locals.path}.`;
39
+ const isNotDefinedErrorRegex = /(?:window|document|localStorage|navigator|alert|location|buffer|self) is not defined/i;
40
+ if (isNotDefinedErrorRegex.test(err.message)) {
41
+ logger.info `It looks like you are using code that should run on the client-side only.
42
+ To get around it, try using code=${'<BrowserOnly>'} (path=${'https://docusaurus.io/docs/docusaurus-core/#browseronly'}) or code=${'ExecutionEnvironment'} (path=${'https://docusaurus.io/docs/docusaurus-core/#executionenvironment'}).
43
+ It might also require to wrap your client code in code=${'useEffect'} hook and/or import a third-party library dynamically (if any).`;
44
+ }
45
+ throw err;
62
46
  }
63
-
64
- throw new Error('Server-side rendering fails due to the error above.');
65
- }
66
47
  }
67
-
68
- // Renderer for static-site-generator-webpack-plugin (async rendering via promises).
48
+ // Renderer for static-site-generator-webpack-plugin (async rendering).
69
49
  async function doRender(locals) {
70
- const {
71
- routesLocation,
72
- headTags,
73
- preBodyTags,
74
- postBodyTags,
75
- onLinksCollected,
76
- baseUrl,
77
- ssrTemplate,
78
- noIndex,
79
- } = locals;
80
- const location = routesLocation[locals.path];
81
- await preload(routes, location);
82
- const modules = new Set();
83
- const context = {};
84
-
85
- const linksCollector = createStatefulLinksCollector();
86
- const appHtml = ReactDOMServer.renderToString(
87
- <Loadable.Capture report={(moduleName) => modules.add(moduleName)}>
88
- <StaticRouter location={location} context={context}>
89
- <ProvideLinksCollector linksCollector={linksCollector}>
90
- <App />
91
- </ProvideLinksCollector>
92
- </StaticRouter>
93
- </Loadable.Capture>,
94
- );
95
- onLinksCollected(location, linksCollector.getCollectedLinks());
96
-
97
- const helmet = Helmet.renderStatic();
98
- const htmlAttributes = helmet.htmlAttributes.toString();
99
- const bodyAttributes = helmet.bodyAttributes.toString();
100
- const metaStrings = [
101
- helmet.title.toString(),
102
- helmet.meta.toString(),
103
- helmet.link.toString(),
104
- helmet.script.toString(),
105
- ];
106
- const metaAttributes = metaStrings.filter(Boolean);
107
-
108
- const {generatedFilesDir} = locals;
109
- const manifestPath = path.join(generatedFilesDir, 'client-manifest.json');
110
- const manifest = JSON.parse(await fs.readFile(manifestPath, 'utf8'));
111
-
112
- // Get all required assets for this particular page based on client
113
- // manifest information.
114
- const modulesToBeLoaded = [...manifest.entrypoints, ...Array.from(modules)];
115
- const bundles = getBundles(manifest, modulesToBeLoaded);
116
- const stylesheets = (bundles.css || []).map((b) => b.file);
117
- const scripts = (bundles.js || []).map((b) => b.file);
118
-
119
- const renderedHtml = renderSSRTemplate(ssrTemplate, {
120
- appHtml,
121
- baseUrl,
122
- htmlAttributes: htmlAttributes || '',
123
- bodyAttributes: bodyAttributes || '',
124
- headTags,
125
- preBodyTags,
126
- postBodyTags,
127
- metaAttributes,
128
- scripts,
129
- stylesheets,
130
- noIndex,
131
- version: packageJson.version,
132
- });
133
-
134
- // Minify html with https://github.com/DanielRuf/html-minifier-terser
135
- function doMinify() {
136
- return minify(renderedHtml, {
137
- removeComments: true,
138
- removeRedundantAttributes: true,
139
- removeEmptyAttributes: true,
140
- removeScriptTypeAttributes: true,
141
- removeStyleLinkTypeAttributes: true,
142
- useShortDoctype: true,
143
- minifyJS: true,
50
+ const { routesLocation, headTags, preBodyTags, postBodyTags, onLinksCollected, baseUrl, ssrTemplate, noIndex, } = locals;
51
+ const location = routesLocation[locals.path];
52
+ await preload(routes, location);
53
+ const modules = new Set();
54
+ const context = {};
55
+ const helmetContext = {};
56
+ const linksCollector = createStatefulLinksCollector();
57
+ const appHtml = ReactDOMServer.renderToString(<Loadable.Capture report={(moduleName) => modules.add(moduleName)}>
58
+ <HelmetProvider context={helmetContext}>
59
+ <StaticRouter location={location} context={context}>
60
+ <ProvideLinksCollector linksCollector={linksCollector}>
61
+ <App />
62
+ </ProvideLinksCollector>
63
+ </StaticRouter>
64
+ </HelmetProvider>
65
+ </Loadable.Capture>);
66
+ onLinksCollected(location, linksCollector.getCollectedLinks());
67
+ const { helmet } = helmetContext;
68
+ const htmlAttributes = helmet.htmlAttributes.toString();
69
+ const bodyAttributes = helmet.bodyAttributes.toString();
70
+ const metaStrings = [
71
+ helmet.title.toString(),
72
+ helmet.meta.toString(),
73
+ helmet.link.toString(),
74
+ helmet.script.toString(),
75
+ ];
76
+ const metaAttributes = metaStrings.filter(Boolean);
77
+ const { generatedFilesDir } = locals;
78
+ const manifestPath = path.join(generatedFilesDir, 'client-manifest.json');
79
+ const manifest = JSON.parse(await fs.readFile(manifestPath, 'utf8'));
80
+ // Get all required assets for this particular page based on client
81
+ // manifest information.
82
+ const modulesToBeLoaded = [...manifest.entrypoints, ...Array.from(modules)];
83
+ const bundles = getBundles(manifest, modulesToBeLoaded);
84
+ const stylesheets = (bundles.css || []).map((b) => b.file);
85
+ const scripts = (bundles.js || []).map((b) => b.file);
86
+ const renderedHtml = renderSSRTemplate(ssrTemplate, {
87
+ appHtml,
88
+ baseUrl,
89
+ htmlAttributes: htmlAttributes || '',
90
+ bodyAttributes: bodyAttributes || '',
91
+ headTags,
92
+ preBodyTags,
93
+ postBodyTags,
94
+ metaAttributes,
95
+ scripts,
96
+ stylesheets,
97
+ noIndex,
98
+ version: packageJson.version,
144
99
  });
145
- }
146
-
147
- // TODO this is a temporary error affecting only monorepos due to Terser 5 (async) being used by html-minifier-terser,
148
- // instead of the expected Terser 4 (sync)
149
- // TODO, remove this once we upgrade everything to Terser 5 (https://github.com/terser/html-minifier-terser/issues/46)
150
- // See also
151
- // - https://github.com/facebook/docusaurus/issues/3515
152
- // - https://github.com/terser/html-minifier-terser/issues/49
153
- try {
154
- return doMinify();
155
- } catch (e) {
156
- if (
157
- e.message &&
158
- e.message.includes("Cannot read property 'replace' of undefined")
159
- ) {
160
- console.error(
161
- chalk.red(
162
- '\nDocusaurus user: you probably have this known error due to using a monorepo/workspace.\nWe have a workaround for you, check https://github.com/facebook/docusaurus/issues/3515\n',
163
- ),
164
- );
100
+ try {
101
+ // Minify html with https://github.com/DanielRuf/html-minifier-terser
102
+ return await minify(renderedHtml, {
103
+ removeComments: false,
104
+ removeRedundantAttributes: true,
105
+ removeEmptyAttributes: true,
106
+ removeScriptTypeAttributes: true,
107
+ removeStyleLinkTypeAttributes: true,
108
+ useShortDoctype: true,
109
+ minifyJS: true,
110
+ });
111
+ }
112
+ catch (err) {
113
+ logger.error `Minification of page path=${locals.path} failed.`;
114
+ throw err;
165
115
  }
166
- throw e;
167
- }
168
116
  }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /// <reference types="@docusaurus/module-type-aliases" />
8
+ /// <reference types="react" />
9
+ import type { Props } from '@theme/Error';
10
+ export default function Error({ error, tryAgain }: Props): JSX.Element;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import Layout from '@theme/Layout';
9
+ import ErrorBoundary from '@docusaurus/ErrorBoundary';
10
+ function ErrorDisplay({ error, tryAgain }) {
11
+ return (<div style={{
12
+ display: 'flex',
13
+ flexDirection: 'column',
14
+ justifyContent: 'center',
15
+ alignItems: 'center',
16
+ height: '50vh',
17
+ width: '100%',
18
+ fontSize: '20px',
19
+ }}>
20
+ <h1>This page crashed.</h1>
21
+ <p>{error.message}</p>
22
+ <button type="button" onClick={tryAgain}>
23
+ Try again
24
+ </button>
25
+ </div>);
26
+ }
27
+ export default function Error({ error, tryAgain }) {
28
+ // We wrap the error in its own error boundary because the layout can actually
29
+ // throw too... Only the ErrorDisplay component is simple enough to be
30
+ // considered safe to never throw
31
+ return (<ErrorBoundary
32
+ // Note: we display the original error here, not the error that we
33
+ // captured in this extra error boundary
34
+ fallback={() => <ErrorDisplay error={error} tryAgain={tryAgain}/>}>
35
+ <Layout title="Page Error">
36
+ <ErrorDisplay error={error} tryAgain={tryAgain}/>
37
+ </Layout>
38
+ </ErrorBoundary>);
39
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /// <reference types="@docusaurus/module-type-aliases" />
8
+ /// <reference types="react" />
9
+ import type { Props } from '@theme/Layout';
10
+ export default function Layout({ children, title, description, }: Props): JSX.Element;
@@ -4,31 +4,22 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
-
8
7
  import React from 'react';
9
8
  import Head from '@docusaurus/Head';
10
9
  import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
11
10
  import useBaseUrl from '@docusaurus/useBaseUrl';
12
-
13
- function Layout(props) {
14
- const context = useDocusaurusContext();
15
- const {siteConfig = {}} = context;
16
- const {favicon, tagline = '', title: defaultTitle} = siteConfig;
17
- const {children, title, description} = props;
18
- const faviconUrl = useBaseUrl(favicon);
19
- return (
20
- <>
11
+ export default function Layout({ children, title, description, }) {
12
+ const context = useDocusaurusContext();
13
+ const { siteConfig } = context;
14
+ const { favicon, tagline, title: defaultTitle } = siteConfig;
15
+ const faviconUrl = useBaseUrl(favicon);
16
+ return (<>
21
17
  <Head defaultTitle={`${defaultTitle}${tagline ? ` · ${tagline}` : ''}`}>
22
18
  {title && <title>{`${title} · ${tagline}`}</title>}
23
- {favicon && <link rel="shortcut icon" href={faviconUrl} />}
24
- {description && <meta name="description" content={description} />}
25
- {description && (
26
- <meta property="og:description" content={description} />
27
- )}
19
+ {favicon && <link rel="icon" href={faviconUrl}/>}
20
+ {description && <meta name="description" content={description}/>}
21
+ {description && (<meta property="og:description" content={description}/>)}
28
22
  </Head>
29
23
  {children}
30
- </>
31
- );
24
+ </>);
32
25
  }
33
-
34
- export default Layout;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /// <reference types="react" />
8
+ import type { LoadingComponentProps } from 'react-loadable';
9
+ export default function Loading({ error, retry, pastDelay, }: LoadingComponentProps): JSX.Element | null;
@@ -4,133 +4,65 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
-
8
7
  import React from 'react';
9
-
10
- export default ({error, retry, pastDelay}) => {
11
- if (error) {
12
- return (
13
- <div
14
- style={{
15
- align: 'center',
16
- color: '#fff',
17
- backgroundColor: '#fa383e',
18
- borderColor: '#fa383e',
19
- borderStyle: 'solid',
20
- borderRadius: '0.25rem',
21
- borderWidth: '1px',
22
- boxSizing: 'border-box',
23
- display: 'block',
24
- padding: '1rem',
25
- flex: '0 0 50%',
26
- marginLeft: '25%',
27
- marginRight: '25%',
28
- marginTop: '5rem',
29
- maxWidth: '50%',
30
- width: '100%',
31
- }}>
8
+ export default function Loading({ error, retry, pastDelay, }) {
9
+ if (error) {
10
+ return (<div style={{
11
+ textAlign: 'center',
12
+ color: '#fff',
13
+ backgroundColor: '#fa383e',
14
+ borderColor: '#fa383e',
15
+ borderStyle: 'solid',
16
+ borderRadius: '0.25rem',
17
+ borderWidth: '1px',
18
+ boxSizing: 'border-box',
19
+ display: 'block',
20
+ padding: '1rem',
21
+ flex: '0 0 50%',
22
+ marginLeft: '25%',
23
+ marginRight: '25%',
24
+ marginTop: '5rem',
25
+ maxWidth: '50%',
26
+ width: '100%',
27
+ }}>
32
28
  <p>{error.message}</p>
33
29
  <div>
34
30
  <button type="button" onClick={retry}>
35
31
  Retry
36
32
  </button>
37
33
  </div>
38
- </div>
39
- );
40
- }
41
-
42
- if (pastDelay) {
43
- return (
44
- <div
45
- style={{
46
- display: 'flex',
47
- justifyContent: 'center',
48
- alignItems: 'center',
49
- height: '100vh',
50
- }}>
51
- <svg
52
- id="loader"
53
- style={{
54
- width: 128,
55
- height: 110,
56
- position: 'absolute',
57
- top: 'calc(100vh - 64%)',
58
- }}
59
- viewBox="0 0 45 45"
60
- xmlns="http://www.w3.org/2000/svg"
61
- stroke="#61dafb">
62
- <g
63
- fill="none"
64
- fillRule="evenodd"
65
- transform="translate(1 1)"
66
- strokeWidth="2">
34
+ </div>);
35
+ }
36
+ if (pastDelay) {
37
+ return (<div style={{
38
+ display: 'flex',
39
+ justifyContent: 'center',
40
+ alignItems: 'center',
41
+ height: '100vh',
42
+ }}>
43
+ <svg id="loader" style={{
44
+ width: 128,
45
+ height: 110,
46
+ position: 'absolute',
47
+ top: 'calc(100vh - 64%)',
48
+ }} viewBox="0 0 45 45" xmlns="http://www.w3.org/2000/svg" stroke="#61dafb">
49
+ <g fill="none" fillRule="evenodd" transform="translate(1 1)" strokeWidth="2">
67
50
  <circle cx="22" cy="22" r="6" strokeOpacity="0">
68
- <animate
69
- attributeName="r"
70
- begin="1.5s"
71
- dur="3s"
72
- values="6;22"
73
- calcMode="linear"
74
- repeatCount="indefinite"
75
- />
76
- <animate
77
- attributeName="stroke-opacity"
78
- begin="1.5s"
79
- dur="3s"
80
- values="1;0"
81
- calcMode="linear"
82
- repeatCount="indefinite"
83
- />
84
- <animate
85
- attributeName="stroke-width"
86
- begin="1.5s"
87
- dur="3s"
88
- values="2;0"
89
- calcMode="linear"
90
- repeatCount="indefinite"
91
- />
51
+ <animate attributeName="r" begin="1.5s" dur="3s" values="6;22" calcMode="linear" repeatCount="indefinite"/>
52
+ <animate attributeName="stroke-opacity" begin="1.5s" dur="3s" values="1;0" calcMode="linear" repeatCount="indefinite"/>
53
+ <animate attributeName="stroke-width" begin="1.5s" dur="3s" values="2;0" calcMode="linear" repeatCount="indefinite"/>
92
54
  </circle>
93
55
  <circle cx="22" cy="22" r="6" strokeOpacity="0">
94
- <animate
95
- attributeName="r"
96
- begin="3s"
97
- dur="3s"
98
- values="6;22"
99
- calcMode="linear"
100
- repeatCount="indefinite"
101
- />
102
- <animate
103
- attributeName="stroke-opacity"
104
- begin="3s"
105
- dur="3s"
106
- values="1;0"
107
- calcMode="linear"
108
- repeatCount="indefinite"
109
- />
110
- <animate
111
- attributeName="stroke-width"
112
- begin="3s"
113
- dur="3s"
114
- values="2;0"
115
- calcMode="linear"
116
- repeatCount="indefinite"
117
- />
56
+ <animate attributeName="r" begin="3s" dur="3s" values="6;22" calcMode="linear" repeatCount="indefinite"/>
57
+ <animate attributeName="stroke-opacity" begin="3s" dur="3s" values="1;0" calcMode="linear" repeatCount="indefinite"/>
58
+ <animate attributeName="stroke-width" begin="3s" dur="3s" values="2;0" calcMode="linear" repeatCount="indefinite"/>
118
59
  </circle>
119
60
  <circle cx="22" cy="22" r="8">
120
- <animate
121
- attributeName="r"
122
- begin="0s"
123
- dur="1.5s"
124
- values="6;1;2;3;4;5;6"
125
- calcMode="linear"
126
- repeatCount="indefinite"
127
- />
61
+ <animate attributeName="r" begin="0s" dur="1.5s" values="6;1;2;3;4;5;6" calcMode="linear" repeatCount="indefinite"/>
128
62
  </circle>
129
63
  </g>
130
64
  </svg>
131
- </div>
132
- );
133
- }
134
-
135
- return null;
136
- };
65
+ </div>);
66
+ }
67
+ return null;
68
+ }
@@ -4,5 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import React from 'react';
8
- export default React.createContext(null);
7
+ /// <reference types="react" />
8
+ export default function NotFound(): JSX.Element;
@@ -4,25 +4,18 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
-
8
7
  import React from 'react';
9
8
  import Layout from '@theme/Layout';
10
-
11
- function NotFound() {
12
- return (
13
- <Layout title="Page Not Found">
14
- <div
15
- style={{
16
- display: 'flex',
17
- justifyContent: 'center',
18
- alignItems: 'center',
19
- height: '50vh',
20
- fontSize: '20px',
9
+ export default function NotFound() {
10
+ return (<Layout title="Page Not Found">
11
+ <div style={{
12
+ display: 'flex',
13
+ justifyContent: 'center',
14
+ alignItems: 'center',
15
+ height: '50vh',
16
+ fontSize: '20px',
21
17
  }}>
22
18
  <h1>Oops, page not found </h1>
23
19
  </div>
24
- </Layout>
25
- );
20
+ </Layout>);
26
21
  }
27
-
28
- export default NotFound;
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- declare const SharedModuleAliases: {
8
- 'react-loadable': string;
9
- };
10
- export default SharedModuleAliases;
7
+ import type { ReactNode } from 'react';
8
+ export default function Root({ children }: {
9
+ children: ReactNode;
10
+ }): ReactNode;
@@ -4,9 +4,6 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
-
8
- import React from 'react';
9
-
10
7
  // Wrapper at the very top of the app, that is applied constantly
11
8
  // and does not depend on current route (unlike the layout)
12
9
  //
@@ -14,8 +11,6 @@ import React from 'react';
14
11
  // and these providers won't reset state when we navigate
15
12
  //
16
13
  // See https://github.com/facebook/docusaurus/issues/3919
17
- function Root({children}) {
18
- return <>{children}</>;
14
+ export default function Root({ children }) {
15
+ return children;
19
16
  }
20
-
21
- export default Root;
@@ -4,5 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import { BuildCLIOptions } from '@docusaurus/types';
7
+ import type { BuildCLIOptions } from '@docusaurus/types';
8
8
  export default function build(siteDir: string, cliOptions?: Partial<BuildCLIOptions>, forceTerminate?: boolean): Promise<string>;