@docusaurus/plugin-client-redirects 2.0.0-beta.12faed89d → 2.0.0-beta.14
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.
- package/lib/collectRedirects.js +20 -28
- package/lib/createRedirectPageContent.js +3 -5
- package/lib/extensionRedirects.js +4 -5
- package/lib/index.js +8 -8
- package/lib/normalizePluginOptions.js +2 -2
- package/lib/writeRedirectFiles.js +5 -7
- package/package.json +15 -12
- package/src/collectRedirects.ts +21 -33
- package/src/createRedirectPageContent.ts +3 -3
- package/src/extensionRedirects.ts +2 -3
- package/src/normalizePluginOptions.ts +1 -1
- package/src/plugin-client-redirects.d.ts +8 -0
- package/src/writeRedirectFiles.ts +3 -3
- package/lib/.tsbuildinfo +0 -1
- package/src/__tests__/__snapshots__/collectRedirects.test.ts.snap +0 -27
- package/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap +0 -29
- package/src/__tests__/__snapshots__/normalizePluginOptions.test.ts.snap +0 -35
- package/src/__tests__/__snapshots__/redirectValidation.test.ts.snap +0 -11
- package/src/__tests__/__snapshots__/writeRedirectFiles.test.ts.snap +0 -147
- package/src/__tests__/collectRedirects.test.ts +0 -340
- package/src/__tests__/createRedirectPageContent.test.ts +0 -26
- package/src/__tests__/extensionRedirects.test.ts +0 -143
- package/src/__tests__/normalizePluginOptions.test.ts +0 -76
- package/src/__tests__/redirectValidation.test.ts +0 -66
- package/src/__tests__/writeRedirectFiles.test.ts +0 -204
- package/tsconfig.json +0 -10
package/lib/collectRedirects.js
CHANGED
|
@@ -11,7 +11,7 @@ const lodash_1 = require("lodash");
|
|
|
11
11
|
const extensionRedirects_1 = require("./extensionRedirects");
|
|
12
12
|
const redirectValidation_1 = require("./redirectValidation");
|
|
13
13
|
const utils_common_1 = require("@docusaurus/utils-common");
|
|
14
|
-
const
|
|
14
|
+
const logger_1 = (0, tslib_1.__importDefault)(require("@docusaurus/logger"));
|
|
15
15
|
function collectRedirects(pluginContext, trailingSlash) {
|
|
16
16
|
let redirects = doCollectRedirects(pluginContext);
|
|
17
17
|
redirects = applyRedirectsTrailingSlash(redirects, {
|
|
@@ -27,18 +27,16 @@ exports.default = collectRedirects;
|
|
|
27
27
|
// => we want to redirect to=/abc/ without the user having to change all its redirect plugin options
|
|
28
28
|
// It should be easy to toggle siteConfig.trailingSlash option without having to change other configs
|
|
29
29
|
function applyRedirectsTrailingSlash(redirects, params) {
|
|
30
|
-
return redirects.map((redirect) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
};
|
|
35
|
-
});
|
|
30
|
+
return redirects.map((redirect) => ({
|
|
31
|
+
...redirect,
|
|
32
|
+
to: (0, utils_common_1.applyTrailingSlash)(redirect.to, params),
|
|
33
|
+
}));
|
|
36
34
|
}
|
|
37
35
|
function validateCollectedRedirects(redirects, pluginContext) {
|
|
38
36
|
const redirectValidationErrors = redirects
|
|
39
37
|
.map((redirect) => {
|
|
40
38
|
try {
|
|
41
|
-
redirectValidation_1.validateRedirect(redirect);
|
|
39
|
+
(0, redirectValidation_1.validateRedirect)(redirect);
|
|
42
40
|
return undefined;
|
|
43
41
|
}
|
|
44
42
|
catch (e) {
|
|
@@ -53,7 +51,7 @@ function validateCollectedRedirects(redirects, pluginContext) {
|
|
|
53
51
|
}
|
|
54
52
|
const allowedToPaths = pluginContext.relativeRoutesPaths;
|
|
55
53
|
const toPaths = redirects.map((redirect) => redirect.to);
|
|
56
|
-
const illegalToPaths = lodash_1.difference(toPaths, allowedToPaths);
|
|
54
|
+
const illegalToPaths = (0, lodash_1.difference)(toPaths, allowedToPaths);
|
|
57
55
|
if (illegalToPaths.length > 0) {
|
|
58
56
|
throw new Error(`You are trying to create client-side redirections to paths that do not exist:
|
|
59
57
|
- ${illegalToPaths.join('\n- ')}
|
|
@@ -66,29 +64,25 @@ Valid paths you can redirect to:
|
|
|
66
64
|
function filterUnwantedRedirects(redirects, pluginContext) {
|
|
67
65
|
// we don't want to create twice the same redirect
|
|
68
66
|
// that would lead to writing twice the same html redirection file
|
|
69
|
-
Object.entries(lodash_1.groupBy(redirects, (redirect) => redirect.from)).forEach(([from, groupedFromRedirects]) => {
|
|
67
|
+
Object.entries((0, lodash_1.groupBy)(redirects, (redirect) => redirect.from)).forEach(([from, groupedFromRedirects]) => {
|
|
70
68
|
if (groupedFromRedirects.length > 1) {
|
|
71
|
-
|
|
72
|
-
It is not possible to redirect the same pathname to multiple destinations:
|
|
73
|
-
- ${groupedFromRedirects.map((r) => JSON.stringify(r)).join('\n- ')}
|
|
74
|
-
`));
|
|
69
|
+
logger_1.default.error `name=${'@docusaurus/plugin-client-redirects'}: multiple redirects are created with the same "from" pathname: path=${from}
|
|
70
|
+
It is not possible to redirect the same pathname to multiple destinations: ${groupedFromRedirects.map((r) => JSON.stringify(r))}`;
|
|
75
71
|
}
|
|
76
72
|
});
|
|
77
|
-
const collectedRedirects = lodash_1.uniqBy(redirects, (redirect) => redirect.from);
|
|
73
|
+
const collectedRedirects = (0, lodash_1.uniqBy)(redirects, (redirect) => redirect.from);
|
|
78
74
|
// We don't want to override an already existing route with a redirect file!
|
|
79
75
|
const redirectsOverridingExistingPath = collectedRedirects.filter((redirect) => pluginContext.relativeRoutesPaths.includes(redirect.from));
|
|
80
76
|
if (redirectsOverridingExistingPath.length > 0) {
|
|
81
|
-
|
|
82
|
-
- ${redirectsOverridingExistingPath.map((r) => JSON.stringify(r)).join('\n- ')}
|
|
83
|
-
`));
|
|
77
|
+
logger_1.default.error `name=${'@docusaurus/plugin-client-redirects'}: some redirects would override existing paths, and will be ignored: ${redirectsOverridingExistingPath.map((r) => JSON.stringify(r))}`;
|
|
84
78
|
}
|
|
85
79
|
return collectedRedirects.filter((redirect) => !pluginContext.relativeRoutesPaths.includes(redirect.from));
|
|
86
80
|
}
|
|
87
81
|
// For each plugin config option, create the appropriate redirects
|
|
88
82
|
function doCollectRedirects(pluginContext) {
|
|
89
83
|
return [
|
|
90
|
-
...extensionRedirects_1.createFromExtensionsRedirects(pluginContext.relativeRoutesPaths, pluginContext.options.fromExtensions),
|
|
91
|
-
...extensionRedirects_1.createToExtensionsRedirects(pluginContext.relativeRoutesPaths, pluginContext.options.toExtensions),
|
|
84
|
+
...(0, extensionRedirects_1.createFromExtensionsRedirects)(pluginContext.relativeRoutesPaths, pluginContext.options.fromExtensions),
|
|
85
|
+
...(0, extensionRedirects_1.createToExtensionsRedirects)(pluginContext.relativeRoutesPaths, pluginContext.options.toExtensions),
|
|
92
86
|
...createRedirectsOptionRedirects(pluginContext.options.redirects),
|
|
93
87
|
...createCreateRedirectsOptionRedirects(pluginContext.relativeRoutesPaths, pluginContext.options.createRedirects),
|
|
94
88
|
];
|
|
@@ -104,7 +98,7 @@ function createRedirectsOptionRedirects(redirectsOption) {
|
|
|
104
98
|
to: option.to,
|
|
105
99
|
}));
|
|
106
100
|
}
|
|
107
|
-
return
|
|
101
|
+
return redirectsOption.flatMap(optionToRedirects);
|
|
108
102
|
}
|
|
109
103
|
// Create redirects from the "createRedirects" fn provided by the user
|
|
110
104
|
function createCreateRedirectsOptionRedirects(paths, createRedirects) {
|
|
@@ -113,12 +107,10 @@ function createCreateRedirectsOptionRedirects(paths, createRedirects) {
|
|
|
113
107
|
? createRedirects(path) || []
|
|
114
108
|
: [];
|
|
115
109
|
const froms = typeof fromsMixed === 'string' ? [fromsMixed] : fromsMixed;
|
|
116
|
-
return froms.map((from) => {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
};
|
|
121
|
-
});
|
|
110
|
+
return froms.map((from) => ({
|
|
111
|
+
from,
|
|
112
|
+
to: path,
|
|
113
|
+
}));
|
|
122
114
|
}
|
|
123
|
-
return
|
|
115
|
+
return paths.flatMap(createPathRedirects);
|
|
124
116
|
}
|
|
@@ -7,12 +7,10 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
const tslib_1 = require("tslib");
|
|
10
|
-
const eta = tslib_1.__importStar(require("eta"));
|
|
11
|
-
const redirectPage_template_html_1 = tslib_1.__importDefault(require("./templates/redirectPage.template.html"));
|
|
10
|
+
const eta = (0, tslib_1.__importStar)(require("eta"));
|
|
11
|
+
const redirectPage_template_html_1 = (0, tslib_1.__importDefault)(require("./templates/redirectPage.template.html"));
|
|
12
12
|
const lodash_1 = require("lodash");
|
|
13
|
-
const getCompiledRedirectPageTemplate = lodash_1.memoize(() =>
|
|
14
|
-
return eta.compile(redirectPage_template_html_1.default.trim());
|
|
15
|
-
});
|
|
13
|
+
const getCompiledRedirectPageTemplate = (0, lodash_1.memoize)(() => eta.compile(redirectPage_template_html_1.default.trim()));
|
|
16
14
|
function renderRedirectPageTemplate(data) {
|
|
17
15
|
const compiled = getCompiledRedirectPageTemplate();
|
|
18
16
|
return compiled(data, eta.defaultConfig);
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.createFromExtensionsRedirects = exports.createToExtensionsRedirects = void 0;
|
|
10
|
-
const lodash_1 = require("lodash");
|
|
11
10
|
const utils_1 = require("@docusaurus/utils");
|
|
12
11
|
const ExtensionAdditionalMessage = 'If the redirect extension system is not good enough for your usecase, you can create redirects yourself with the "createRedirects" plugin option.';
|
|
13
12
|
const validateExtension = (ext) => {
|
|
@@ -32,7 +31,7 @@ function createToExtensionsRedirects(paths, extensions) {
|
|
|
32
31
|
const createPathRedirects = (path) => {
|
|
33
32
|
const extensionFound = dottedExtensions.find((ext) => path.endsWith(ext));
|
|
34
33
|
if (extensionFound) {
|
|
35
|
-
const routePathWithoutExtension = utils_1.removeSuffix(path, extensionFound);
|
|
34
|
+
const routePathWithoutExtension = (0, utils_1.removeSuffix)(path, extensionFound);
|
|
36
35
|
return [routePathWithoutExtension].map((from) => ({
|
|
37
36
|
from,
|
|
38
37
|
to: path,
|
|
@@ -40,7 +39,7 @@ function createToExtensionsRedirects(paths, extensions) {
|
|
|
40
39
|
}
|
|
41
40
|
return [];
|
|
42
41
|
};
|
|
43
|
-
return
|
|
42
|
+
return paths.flatMap(createPathRedirects);
|
|
44
43
|
}
|
|
45
44
|
exports.createToExtensionsRedirects = createToExtensionsRedirects;
|
|
46
45
|
// Create new /path.html/index.html that redirects to existing an /path
|
|
@@ -57,7 +56,7 @@ function createFromExtensionsRedirects(paths, extensions) {
|
|
|
57
56
|
// /path/ => /path.html/
|
|
58
57
|
function getFrom(ext) {
|
|
59
58
|
if (path.endsWith('/')) {
|
|
60
|
-
return utils_1.addTrailingSlash(`${utils_1.removeTrailingSlash(path)}.${ext}`);
|
|
59
|
+
return (0, utils_1.addTrailingSlash)(`${(0, utils_1.removeTrailingSlash)(path)}.${ext}`);
|
|
61
60
|
}
|
|
62
61
|
else {
|
|
63
62
|
return `${path}.${ext}`;
|
|
@@ -68,6 +67,6 @@ function createFromExtensionsRedirects(paths, extensions) {
|
|
|
68
67
|
to: path,
|
|
69
68
|
}));
|
|
70
69
|
};
|
|
71
|
-
return
|
|
70
|
+
return paths.flatMap(createPathRedirects);
|
|
72
71
|
}
|
|
73
72
|
exports.createFromExtensionsRedirects = createFromExtensionsRedirects;
|
package/lib/index.js
CHANGED
|
@@ -7,26 +7,26 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
const tslib_1 = require("tslib");
|
|
10
|
-
const normalizePluginOptions_1 = tslib_1.__importDefault(require("./normalizePluginOptions"));
|
|
11
|
-
const collectRedirects_1 = tslib_1.__importDefault(require("./collectRedirects"));
|
|
12
|
-
const writeRedirectFiles_1 = tslib_1.__importStar(require("./writeRedirectFiles"));
|
|
10
|
+
const normalizePluginOptions_1 = (0, tslib_1.__importDefault)(require("./normalizePluginOptions"));
|
|
11
|
+
const collectRedirects_1 = (0, tslib_1.__importDefault)(require("./collectRedirects"));
|
|
12
|
+
const writeRedirectFiles_1 = (0, tslib_1.__importStar)(require("./writeRedirectFiles"));
|
|
13
13
|
const utils_1 = require("@docusaurus/utils");
|
|
14
14
|
function pluginClientRedirectsPages(context, opts) {
|
|
15
15
|
const { trailingSlash } = context.siteConfig;
|
|
16
|
-
const options = normalizePluginOptions_1.default(opts);
|
|
16
|
+
const options = (0, normalizePluginOptions_1.default)(opts);
|
|
17
17
|
return {
|
|
18
18
|
name: 'docusaurus-plugin-client-redirects',
|
|
19
19
|
async postBuild(props) {
|
|
20
20
|
const pluginContext = {
|
|
21
|
-
relativeRoutesPaths: props.routesPaths.map((path) => `${utils_1.addLeadingSlash(utils_1.removePrefix(path, props.baseUrl))}`),
|
|
21
|
+
relativeRoutesPaths: props.routesPaths.map((path) => `${(0, utils_1.addLeadingSlash)((0, utils_1.removePrefix)(path, props.baseUrl))}`),
|
|
22
22
|
baseUrl: props.baseUrl,
|
|
23
23
|
outDir: props.outDir,
|
|
24
24
|
options,
|
|
25
25
|
};
|
|
26
|
-
const redirects = collectRedirects_1.default(pluginContext, trailingSlash);
|
|
27
|
-
const redirectFiles = writeRedirectFiles_1.toRedirectFilesMetadata(redirects, pluginContext, trailingSlash);
|
|
26
|
+
const redirects = (0, collectRedirects_1.default)(pluginContext, trailingSlash);
|
|
27
|
+
const redirectFiles = (0, writeRedirectFiles_1.toRedirectFilesMetadata)(redirects, pluginContext, trailingSlash);
|
|
28
28
|
// Write files only at the end: make code more easy to test without IO
|
|
29
|
-
await writeRedirectFiles_1.default(redirectFiles);
|
|
29
|
+
await (0, writeRedirectFiles_1.default)(redirectFiles);
|
|
30
30
|
},
|
|
31
31
|
};
|
|
32
32
|
}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.DefaultPluginOptions = void 0;
|
|
10
10
|
const utils_validation_1 = require("@docusaurus/utils-validation");
|
|
11
|
-
const
|
|
11
|
+
const utils_1 = require("@docusaurus/utils");
|
|
12
12
|
exports.DefaultPluginOptions = {
|
|
13
|
-
id:
|
|
13
|
+
id: utils_1.DEFAULT_PLUGIN_ID,
|
|
14
14
|
fromExtensions: [],
|
|
15
15
|
toExtensions: [],
|
|
16
16
|
redirects: [],
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.writeRedirectFile = exports.toRedirectFilesMetadata = exports.createToUrl = void 0;
|
|
10
10
|
const tslib_1 = require("tslib");
|
|
11
|
-
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
12
|
-
const path_1 = tslib_1.__importDefault(require("path"));
|
|
11
|
+
const fs_extra_1 = (0, tslib_1.__importDefault)(require("fs-extra"));
|
|
12
|
+
const path_1 = (0, tslib_1.__importDefault)(require("path"));
|
|
13
13
|
const lodash_1 = require("lodash");
|
|
14
|
-
const createRedirectPageContent_1 = tslib_1.__importDefault(require("./createRedirectPageContent"));
|
|
14
|
+
const createRedirectPageContent_1 = (0, tslib_1.__importDefault)(require("./createRedirectPageContent"));
|
|
15
15
|
const utils_1 = require("@docusaurus/utils");
|
|
16
16
|
function createToUrl(baseUrl, to) {
|
|
17
|
-
return utils_1.normalizeUrl([baseUrl, to]);
|
|
17
|
+
return (0, utils_1.normalizeUrl)([baseUrl, to]);
|
|
18
18
|
}
|
|
19
19
|
exports.createToUrl = createToUrl;
|
|
20
20
|
// Create redirect file path
|
|
@@ -45,9 +45,7 @@ function toRedirectFilesMetadata(redirects, pluginContext, trailingSlash) {
|
|
|
45
45
|
// Perf: avoid rendering the template twice with the exact same "props"
|
|
46
46
|
// We might create multiple redirect pages for the same destination url
|
|
47
47
|
// note: the first fn arg is the cache key!
|
|
48
|
-
const createPageContentMemoized = lodash_1.memoize((toUrl) => {
|
|
49
|
-
return createRedirectPageContent_1.default({ toUrl });
|
|
50
|
-
});
|
|
48
|
+
const createPageContentMemoized = (0, lodash_1.memoize)((toUrl) => (0, createRedirectPageContent_1.default)({ toUrl }));
|
|
51
49
|
const createFileMetadata = (redirect) => {
|
|
52
50
|
const fileRelativePath = getRedirectFilePath(redirect.from, trailingSlash);
|
|
53
51
|
const fileAbsolutePath = path_1.default.join(pluginContext.outDir, fileRelativePath);
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/plugin-client-redirects",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.14",
|
|
4
4
|
"description": "Client redirects plugin for Docusaurus.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
|
+
"types": "src/plugin-client-redirects.d.ts",
|
|
6
7
|
"scripts": {
|
|
7
8
|
"build": "tsc",
|
|
8
9
|
"watch": "tsc --watch"
|
|
@@ -17,24 +18,26 @@
|
|
|
17
18
|
},
|
|
18
19
|
"license": "MIT",
|
|
19
20
|
"dependencies": {
|
|
20
|
-
"@docusaurus/core": "2.0.0-beta.
|
|
21
|
-
"@docusaurus/
|
|
22
|
-
"@docusaurus/utils": "2.0.0-beta.
|
|
23
|
-
"@docusaurus/utils-common": "2.0.0-beta.
|
|
24
|
-
"@docusaurus/utils-validation": "2.0.0-beta.
|
|
25
|
-
"chalk": "^4.1.
|
|
26
|
-
"eta": "^1.
|
|
21
|
+
"@docusaurus/core": "2.0.0-beta.14",
|
|
22
|
+
"@docusaurus/logger": "2.0.0-beta.14",
|
|
23
|
+
"@docusaurus/utils": "2.0.0-beta.14",
|
|
24
|
+
"@docusaurus/utils-common": "2.0.0-beta.14",
|
|
25
|
+
"@docusaurus/utils-validation": "2.0.0-beta.14",
|
|
26
|
+
"chalk": "^4.1.2",
|
|
27
|
+
"eta": "^1.12.3",
|
|
27
28
|
"fs-extra": "^10.0.0",
|
|
28
|
-
"globby": "^11.0.2",
|
|
29
29
|
"lodash": "^4.17.20",
|
|
30
|
-
"tslib": "^2.
|
|
30
|
+
"tslib": "^2.3.1"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@docusaurus/types": "2.0.0-beta.14"
|
|
31
34
|
},
|
|
32
35
|
"peerDependencies": {
|
|
33
36
|
"react": "^16.8.4 || ^17.0.0",
|
|
34
37
|
"react-dom": "^16.8.4 || ^17.0.0"
|
|
35
38
|
},
|
|
36
39
|
"engines": {
|
|
37
|
-
"node": ">=
|
|
40
|
+
"node": ">=14"
|
|
38
41
|
},
|
|
39
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "c4824a8937d8f1aa0806667749cbc74058e2b294"
|
|
40
43
|
}
|
package/src/collectRedirects.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import {uniqBy, difference, groupBy} from 'lodash';
|
|
9
9
|
import {
|
|
10
10
|
PluginContext,
|
|
11
11
|
RedirectMetadata,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
ApplyTrailingSlashParams,
|
|
23
23
|
} from '@docusaurus/utils-common';
|
|
24
24
|
|
|
25
|
-
import
|
|
25
|
+
import logger from '@docusaurus/logger';
|
|
26
26
|
|
|
27
27
|
export default function collectRedirects(
|
|
28
28
|
pluginContext: PluginContext,
|
|
@@ -47,25 +47,23 @@ function applyRedirectsTrailingSlash(
|
|
|
47
47
|
redirects: RedirectMetadata[],
|
|
48
48
|
params: ApplyTrailingSlashParams,
|
|
49
49
|
) {
|
|
50
|
-
return redirects.map((redirect) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
};
|
|
55
|
-
});
|
|
50
|
+
return redirects.map((redirect) => ({
|
|
51
|
+
...redirect,
|
|
52
|
+
to: applyTrailingSlash(redirect.to, params),
|
|
53
|
+
}));
|
|
56
54
|
}
|
|
57
55
|
|
|
58
56
|
function validateCollectedRedirects(
|
|
59
57
|
redirects: RedirectMetadata[],
|
|
60
58
|
pluginContext: PluginContext,
|
|
61
59
|
) {
|
|
62
|
-
const redirectValidationErrors
|
|
60
|
+
const redirectValidationErrors = redirects
|
|
63
61
|
.map((redirect) => {
|
|
64
62
|
try {
|
|
65
63
|
validateRedirect(redirect);
|
|
66
64
|
return undefined;
|
|
67
65
|
} catch (e) {
|
|
68
|
-
return e.message;
|
|
66
|
+
return (e as Error).message;
|
|
69
67
|
}
|
|
70
68
|
})
|
|
71
69
|
.filter(Boolean);
|
|
@@ -101,14 +99,10 @@ function filterUnwantedRedirects(
|
|
|
101
99
|
Object.entries(groupBy(redirects, (redirect) => redirect.from)).forEach(
|
|
102
100
|
([from, groupedFromRedirects]) => {
|
|
103
101
|
if (groupedFromRedirects.length > 1) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
- ${groupedFromRedirects.map((r) => JSON.stringify(r)).join('\n- ')}
|
|
109
|
-
`,
|
|
110
|
-
),
|
|
111
|
-
);
|
|
102
|
+
logger.error`name=${'@docusaurus/plugin-client-redirects'}: multiple redirects are created with the same "from" pathname: path=${from}
|
|
103
|
+
It is not possible to redirect the same pathname to multiple destinations: ${groupedFromRedirects.map(
|
|
104
|
+
(r) => JSON.stringify(r),
|
|
105
|
+
)}`;
|
|
112
106
|
}
|
|
113
107
|
},
|
|
114
108
|
);
|
|
@@ -119,13 +113,9 @@ It is not possible to redirect the same pathname to multiple destinations:
|
|
|
119
113
|
(redirect) => pluginContext.relativeRoutesPaths.includes(redirect.from),
|
|
120
114
|
);
|
|
121
115
|
if (redirectsOverridingExistingPath.length > 0) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
- ${redirectsOverridingExistingPath.map((r) => JSON.stringify(r)).join('\n- ')}
|
|
126
|
-
`,
|
|
127
|
-
),
|
|
128
|
-
);
|
|
116
|
+
logger.error`name=${'@docusaurus/plugin-client-redirects'}: some redirects would override existing paths, and will be ignored: ${redirectsOverridingExistingPath.map(
|
|
117
|
+
(r) => JSON.stringify(r),
|
|
118
|
+
)}`;
|
|
129
119
|
}
|
|
130
120
|
return collectedRedirects.filter(
|
|
131
121
|
(redirect) => !pluginContext.relativeRoutesPaths.includes(redirect.from),
|
|
@@ -165,7 +155,7 @@ function createRedirectsOptionRedirects(
|
|
|
165
155
|
}));
|
|
166
156
|
}
|
|
167
157
|
|
|
168
|
-
return
|
|
158
|
+
return redirectsOption.flatMap(optionToRedirects);
|
|
169
159
|
}
|
|
170
160
|
|
|
171
161
|
// Create redirects from the "createRedirects" fn provided by the user
|
|
@@ -181,13 +171,11 @@ function createCreateRedirectsOptionRedirects(
|
|
|
181
171
|
const froms: string[] =
|
|
182
172
|
typeof fromsMixed === 'string' ? [fromsMixed] : fromsMixed;
|
|
183
173
|
|
|
184
|
-
return froms.map((from) => {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
};
|
|
189
|
-
});
|
|
174
|
+
return froms.map((from) => ({
|
|
175
|
+
from,
|
|
176
|
+
to: path,
|
|
177
|
+
}));
|
|
190
178
|
}
|
|
191
179
|
|
|
192
|
-
return
|
|
180
|
+
return paths.flatMap(createPathRedirects);
|
|
193
181
|
}
|
|
@@ -13,9 +13,9 @@ type CreateRedirectPageOptions = {
|
|
|
13
13
|
toUrl: string;
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
const getCompiledRedirectPageTemplate = memoize(() =>
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const getCompiledRedirectPageTemplate = memoize(() =>
|
|
17
|
+
eta.compile(redirectPageTemplate.trim()),
|
|
18
|
+
);
|
|
19
19
|
|
|
20
20
|
function renderRedirectPageTemplate(data: Record<string, unknown>) {
|
|
21
21
|
const compiled = getCompiledRedirectPageTemplate();
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {flatten} from 'lodash';
|
|
9
8
|
import {
|
|
10
9
|
addTrailingSlash,
|
|
11
10
|
removeSuffix,
|
|
@@ -62,7 +61,7 @@ export function createToExtensionsRedirects(
|
|
|
62
61
|
return [];
|
|
63
62
|
};
|
|
64
63
|
|
|
65
|
-
return
|
|
64
|
+
return paths.flatMap(createPathRedirects);
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
// Create new /path.html/index.html that redirects to existing an /path
|
|
@@ -99,5 +98,5 @@ export function createFromExtensionsRedirects(
|
|
|
99
98
|
}));
|
|
100
99
|
};
|
|
101
100
|
|
|
102
|
-
return
|
|
101
|
+
return paths.flatMap(createPathRedirects);
|
|
103
102
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import {PluginOptions, RedirectOption, UserPluginOptions} from './types';
|
|
9
9
|
import {Joi, PathnameSchema} from '@docusaurus/utils-validation';
|
|
10
|
-
import {DEFAULT_PLUGIN_ID} from '@docusaurus/
|
|
10
|
+
import {DEFAULT_PLUGIN_ID} from '@docusaurus/utils';
|
|
11
11
|
|
|
12
12
|
export const DefaultPluginOptions: PluginOptions = {
|
|
13
13
|
id: DEFAULT_PLUGIN_ID, // TODO temporary
|
|
@@ -60,9 +60,9 @@ export function toRedirectFilesMetadata(
|
|
|
60
60
|
// Perf: avoid rendering the template twice with the exact same "props"
|
|
61
61
|
// We might create multiple redirect pages for the same destination url
|
|
62
62
|
// note: the first fn arg is the cache key!
|
|
63
|
-
const createPageContentMemoized = memoize((toUrl: string) =>
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
const createPageContentMemoized = memoize((toUrl: string) =>
|
|
64
|
+
createRedirectPageContent({toUrl}),
|
|
65
|
+
);
|
|
66
66
|
|
|
67
67
|
const createFileMetadata = (redirect: RedirectMetadata) => {
|
|
68
68
|
const fileRelativePath = getRedirectFilePath(redirect.from, trailingSlash);
|
package/lib/.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/webpack/node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/ajv/lib/ajv.d.ts","../../../node_modules/schema-utils/declarations/ValidationError.d.ts","../../../node_modules/schema-utils/declarations/validate.d.ts","../../../node_modules/schema-utils/declarations/index.d.ts","../../../node_modules/tapable/tapable.d.ts","../../../node_modules/webpack/types.d.ts","../../docusaurus-types/node_modules/commander/typings/index.d.ts","../../../node_modules/joi/lib/index.d.ts","../../docusaurus-types/src/index.d.ts","../src/types.ts","../../docusaurus-utils/lib/posixPath.d.ts","../../docusaurus-utils/lib/codeTranslationsUtils.d.ts","../../docusaurus-utils/lib/markdownParser.d.ts","../../docusaurus-utils/lib/markdownLinks.d.ts","../../docusaurus-utils/lib/escapePath.d.ts","../../docusaurus-utils/lib/hashUtils.d.ts","../../docusaurus-utils/lib/index.d.ts","../src/extensionRedirects.ts","../../docusaurus-utils-validation/lib/Joi.d.ts","../../docusaurus-utils-validation/lib/validationUtils.d.ts","../../docusaurus-utils-validation/lib/validationSchemas.d.ts","../../docusaurus-utils-validation/lib/index.d.ts","../src/redirectValidation.ts","../../docusaurus-utils-common/lib/applyTrailingSlash.d.ts","../../docusaurus-utils-common/lib/uniq.d.ts","../../docusaurus-utils-common/lib/index.d.ts","../../../node_modules/chalk/index.d.ts","../src/collectRedirects.ts","../../../node_modules/eta/dist/types/compile.d.ts","../../../node_modules/eta/dist/types/storage.d.ts","../../../node_modules/eta/dist/types/config.d.ts","../../../node_modules/eta/dist/types/file-handlers.d.ts","../../../node_modules/eta/dist/types/compile-string.d.ts","../../../node_modules/eta/dist/types/parse.d.ts","../../../node_modules/eta/dist/types/render.d.ts","../../../node_modules/eta/dist/types/containers.d.ts","../../../node_modules/eta/dist/types/index.d.ts","../src/templates/redirectPage.template.html.ts","../src/createRedirectPageContent.ts","../../docusaurus/lib/constants.d.ts","../src/normalizePluginOptions.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/globals.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/console.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/constants.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/diagnostic_channel.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/dns.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/domain.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/events.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/fs.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/http.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/http2.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/https.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/module.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/net.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/os.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/path.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/process.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/readline.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/repl.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/stream.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/timers.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/tls.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/tty.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/url.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/util.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/v8.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/vm.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/ts3.6/base.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/assert.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/base.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/index.d.ts","../../../node_modules/@types/fs-extra/index.d.ts","../src/writeRedirectFiles.ts","../src/index.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","eb75e89d63b3b72dd9ca8b0cac801cecae5be352307c004adeaa60bc9d6df51f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"cd6efb9467a8b6338ece2e2855e37765700f2cd061ca54b01b33878cf5c7677e","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},"ea7abf23498b7c214c67fc14f22f41983fbb7bf7c4826c7fcdef542b2022545f","3594c022901a1c8993b0f78a3f534cfb81e7b619ed215348f7f6882f3db02abc","438284c7c455a29b9c0e2d1e72abc62ee93d9a163029ffe918a34c5db3b92da2","0c75b204aed9cf6ff1c7b4bed87a3ece0d9d6fc857a6350c0c95ed0c38c814e8","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","782abf371043fc65a987f835a3acfd80602a30c3e2122f6d5756a86bf6913352","509235563ea2b939e1bbe92aae17e71e6a82ceab8f568b45fb4fce7d72523a32","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","82251920b05f30981c9a4109cb5f3169dce4b477effc845c6d781044a30e7672","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","4908e4c00832b26ce77a629de8501b0e23a903c094f9e79a7fec313a15da796a","2630a7cbb597e85d713b7ef47f2946d4280d3d4c02733282770741d40672b1a5",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"f1e8ecd1d960d12e57316fd2889b0a57635f38f8c4c976d8deafa29650bbf320","3a1e165b22a1cb8df82c44c9a09502fd2b33f160cd277de2cd3a055d8e5c6b27","67f129ed8b372622ff36b8b10e39d03e09e363a5ff7821105f92f085b8d1ccba","327f42ab31ff4539ba868d0374f8825af328b104b5f78d26b2e3ce9cc17b43a0","62a05210201c793349ec28254f06a01814c5b4f5591f6d1921941286db78ea2a","8f877178233f74095130e129ce86128a6a15afcfc6171d714e154863b6a65fe8","b395ec0779c66de885f97974534e95ee2c8bbf9acaf5857a6782ddc32972b6d8","572b4d4c4e2cd3026db925ca5cb721f5c3f4f52938da404de1148a126348f29b","c72b982add26c5ddf410899bcafe3f47253a5d274d4b93d2ef67850d4af4545b","332bc92a89da24ef3a645208f2b3159292460a52fbe63c40eef64c2a63bb1e40","3d9253169f4640145bd53a57bb05120be714a3f6c181f5442f5cfc6fc29c1e89","57dc389181eeb619a8b10299e3447cd6d9b216453af993abda5afedd6b39b455","0daf3165e72cc1ed5263a3374b98cb065f78922c76602477973ee0654b99df17","98249526332851a623664fd515a293f50d680d4a86d633585ecb9168e67cd872","3fedee34f24b13af4a97c4184a9e215a6f6b2dfb655dafc24970c76791b06c43","4fae0cbdbb492b0fc847ec76d0a4af44eb04028200cec088d97fca05438213f1","c7642b1c7345e546c81831fe5fa9233e15a12fa2743f6685b0d700af8292cdd0","857d6d4a53c4372a2799e733ab122d28f7b2b580fe58b80a5fe1321a733c20f7","2c20d6df034f99432a23cfd95b2e48784fe4224cc9c0bc4094881c99bce1ef66","f69977513b0d68b014b1a9f0442d5a426981da391870d15626b595206be9ae62","889859c907d8388cfe92d4bdfe5b5ff0885a41e6e4568691230e21757f7673c9","d62aae9510ec58d3533a76b9915dae85dea65aa39c915613dc9f47918f596b1e","57e1940021e5e3ff12963f4218195c786a0d2a475a400fffb7cdd4352823854d","01c67feaa6d785a1f958c92f0e1eabdd69bd5e44cbd8a233b89a247ad9bb1dc3","700c2f83a83482242336bf0033edbd961105577f16b9cf549333159fc719add2","63c9b50b55f320e8da81290acd27de8e1dab92e13b3ec7f24b80fde9dd80b795","efc0cf69f54f6d4fbdcc205cc938f1f6f6f1d63fbcb7b3f912a4755805b05b31","20da58cecd1ad8c239745c7ebb8ae0729c182223650702ec816d3bdec566e3bb","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","b12f0a6baceceb49f0f3db81a91b21ba490993ff6aff649cdb7393822cbcc301","a3cf09a8ce34726b0557b3e51135a6768b464e86b7190355e42f10ba368e9786","dcd04eabb6c23406dc589f688c7a83d25a8aa0c93ee34c0be1114113c32792d6","0a21f90e2ffaf26b305183fd2029a7dd512bb3189a9d6842ba764782e609429e","5560fae6a4c210279d4c913e62dfa82f6ebbc283800e430c4ec54e20216e4b2f","bd868c7a5868f2680d332b85283be6be45edb766a95c4b8034aff7c741ab1aad","5ec0c5db09dfb4f1cd140417dc86fed025bd757d63c11fe2c4148ec12fd20111","2737dcbf71e062619538a0d3075795be33900ccf377d5dae1e90197f95787566","2db6353e2fdcbd2842b5b0a36d11e11ffbff703552e19481a55a63155e14c6be","74175ef96c3d3cb5e7bcaf0387ca4cc3de9f1bf68b42a082d8be5e79178c2c7e","37723b12b6a526579c9a467ab70a9414fc30994e24bd4b9dae41148ed3e112a1","63a254a5a16ee3457a0dd00dedacc0d76cc7897b976ec64d59d149d43c4859b7","4977865ec3570795ce920e30b51b6c345ad782bd804202e80d95fc1a09299a7d","c8c407861245162fcf6c4a65125331964efa6f75972dd908ea0e2ba13ca77b33","c7bdc99177a2a94d25fb13722adaaf5b3291bf70b4d1b27584ba189dd3889ba3",{"version":"7c4064a324cd755a9b281d5795fc6ebd9dd713b1c356220185c61eb1b2d0f1af","affectsGlobalScope":true},"e23424b97418eca3226fd24de079f1203eb70360622e4e093af2aff14d4be6ec","ff16181fe134bb123283eb6777c624f6f3ee3f5c17d70b8447fa68af0935d312","54868134aa26f98b6fbc8d28040d8a0f5e64a1cb0dfac7f059b35cac99d626f2","04eaa93bd75f937f9184dcb95a7983800c5770cf8ddd8ac0f3734dc02f5b20ef",{"version":"7ddd5487c03df04c01a8618e06d875e167524902ed3dd9a2a9345a0ef5202d6f","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","dfc747ab8dd5f623055a4c26fd35e8cceca869fd3f1cf09701c941ca3679665a","c9f5f2920ff61d7158417b8440d5181ddc34a3dfef811a5677dd8a9fb91471e9","5cc0a492da3602510b8f5ed1852b1e0390002780d8758fbc8c0cd023ca7085f8","ec7dafafe751a5121f8f1c80201ebe7e7238c47e6329280a73c4d1ca4bb7fa28","64debeb10e4b7ae4ec9e89bfb4e04c6101ab98c3cc806d14e5488607cfec2753",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"a5782d6cea81fe43d2db7ed41e789458c933ab3ab60602f7b5b14c4da3370496","affectsGlobalScope":true},"b86b7ff709a82ef3cba2184136c025989958bad483ffb13e4ca35d720245adf4","05b1c856de9c8f2c09c86a89455e25965342496ebe6d089760a9646c51295c76","c0d983dfc997b446ec8e456dea90e8c0c97ba896d55d7e34dfc351f32c405eb9","b447e123210c68f205f67b20c996c04a1eb64b0e591c5e06e164cd3d3a869b28","13257840c0850d4ebd7c2b17604a9e006f752de76c2400ebc752bc465c330452","42176966283d3835c34278b9b5c0f470d484c0c0c6a55c20a2c916a1ce69b6e8","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","6ea59cf5479f3fad5db2caa4513d8d06d6cfee8d8df69e7a040c9b5b7f25f39c","e2236264a811ed1d09a2487a433e8f5216ae62378cf233954ae220cf886f6717","3ec1e108d587a5661ec790db607f482605ba9f3830e118ce578e3ffa3c42e22b","100b3bb9d39d2b1b5340f1bf45a52e94ef1692b45232b4ba00fac5c3cc56d331",{"version":"ec1a29ddaecb683aa360df0bd98ab5d4171d2d549554f7c5ab2a5c183a3dcb67","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","992c6f6be16c0a1d2eec13ece33adeea2c747ba27fcd078353a8f4bb5b4fea58","2597718d91e306949d89e285bf34c44192014ef541c3bd7cbb825c022749e974","a6b0abdb67d63ebe964ba5fee31bc3daf10c12eecd46b24d778426010c04c67e","ac4801ebc2355ba32329070123b1cd15891bf71b41dcaf9e75b4744832126a59","fd2298fba0640e7295e7bd545e2dfbfcccbb00c27019e501c87965a02bbdebf6","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","71ddd49185b68f27bfac127ef5d22cb2672c278e53e5370d9020ef50ca9c377d","b1ea7a6eaa7608e0e0529aebd323b526a79c6c05a4e519ae5c779675004dcdf1","9fcb033a6208485d8f3fadde31eb5cbcaf99149cff3e40c0dc53ebc6d0dff4e9","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","dcc6910d95a3625fd2b0487fda055988e46ab46c357a1b3618c27b4a8dd739c9","f4149f1aa299474c7040a35fe8f8ac2ad078cc1b190415adc1fff3ed52d490ea","3730099ed008776216268a97771de31753ef71e0a7d0ec650f588cba2a06ce44","8d649dbc429d7139a1d9a14ea2bf8af1dc089e0a879447539587463d4b6c248c","60c9e27816ec8ac8df7240598bb086e95b47edfb454c5cbf4003c812e0ed6e39","e361aecf17fc4034b4c122a1564471cdcd22ef3a51407803cb5a5fc020c04d02","4926467de88a92a4fc9971d8c6f21b91eca1c0e7fc2a46cc4638ab9440c73875",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"fc0ae4a8ad3c762b96f9d2c3700cb879a373458cb0bf3175478e3b4f85f7ef2f","fabbec378e1ddd86fcf2662e716c2b8318acedb664ee3a4cba6f9e8ee8269cf1","b3593bd345ebea5e4d0a894c03251a3774b34df3d6db57075c18e089a599ba76","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","13c7832f048b08604b7e88b69247aecf955bb7b27a0881c2f7f23bb645435479","8d01c38ccb9af3a4035a68818799e5ef32ccc8cf70bdb83e181e1921d7ad32f6","e416db84fd295bcdc144cdbbac861045b0d08608bdb5eaa8ac326864d87114af","c16e15a7bbbb323cdf9df7a6b05a96b474831768886e0c85f5e0df3275249923"],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":false,"esModuleInterop":true,"importHelpers":true,"jsx":2,"module":1,"noEmitHelpers":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":6,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[117,153],[151],[150,151],[105,110],[116,117,124,133],[106,116,124],[142],[110,117,125],[133,138],[113,116,124],[114],[113],[116],[116,118,133,141],[116,117],[124,133,141],[116,117,119,124,133,138,141],[119,138,141],[152],[141],[113,116,133],[126],[104],[140],[131,142,145],[116,134],[133],[136],[110,124],[102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149],[124],[130],[143],[105,110,116,118,127,133,141,145],[46,48,49,50,51,52,53,54,55,56,57,58],[46,47,49,50,51,52,53,54,55,56,57,58],[47,48,49,50,51,52,53,54,55,56,57,58],[46,47,48,50,51,52,53,54,55,56,57,58],[46,47,48,49,51,52,53,54,55,56,57,58],[46,47,48,49,50,52,53,54,55,56,57,58],[46,47,48,49,50,51,53,54,55,56,57,58],[46,47,48,49,50,51,52,54,55,56,57,58],[46,47,48,49,50,51,52,53,55,56,57,58],[46,47,48,49,50,51,52,53,54,56,57,58],[46,47,48,49,50,51,52,53,54,55,57,58],[46,47,48,49,50,51,52,53,54,55,56,58],[46,47,48,49,50,51,52,53,54,55,56,57],[91],[91,92],[89,90],[89,91],[89,91,92,93,94,95,96],[89,91,92],[60,61,63],[62,63],[60,61,62],[59,63,64,65],[45,58,70,78,83,86,87],[45,58,97,98],[45,58,70,77],[45,69,70,77,88,101,155],[45,70,82,100],[45,70,82],[45],[45,69],[45,58,70,77,99,126,154],[66,67,68,130],[69],[84,85],[68],[79,80,81],[79],[69,71,72,73,74,75,76]],"referencedMap":[[154,1],[102,2],[152,3],[105,4],[106,5],[107,6],[108,7],[109,8],[110,9],[111,10],[113,11],[114,12],[115,13],[116,13],[117,14],[118,15],[119,16],[120,17],[121,18],[153,19],[122,13],[123,20],[124,21],[126,22],[127,23],[128,24],[131,13],[132,25],[133,26],[134,27],[136,13],[137,28],[138,29],[150,30],[140,31],[141,32],[142,33],[144,27],[146,34],[147,27],[47,35],[48,36],[46,37],[49,38],[50,39],[51,40],[52,41],[53,42],[54,43],[55,44],[56,45],[57,46],[58,47],[93,48],[89,49],[91,50],[96,50],[92,51],[97,52],[94,48],[95,53],[62,54],[64,55],[63,56],[66,57],[88,58],[99,59],[78,60],[156,61],[101,62],[83,63],[98,64],[70,65],[155,66],[69,67],[84,68],[86,69],[79,70],[82,71],[81,72],[80,72],[77,73]],"exportedModulesMap":[[154,1],[102,2],[152,3],[105,4],[106,5],[107,6],[108,7],[109,8],[110,9],[111,10],[113,11],[114,12],[115,13],[116,13],[117,14],[118,15],[119,16],[120,17],[121,18],[153,19],[122,13],[123,20],[124,21],[126,22],[127,23],[128,24],[131,13],[132,25],[133,26],[134,27],[136,13],[137,28],[138,29],[150,30],[140,31],[141,32],[142,33],[144,27],[146,34],[147,27],[47,35],[48,36],[46,37],[49,38],[50,39],[51,40],[52,41],[53,42],[54,43],[55,44],[56,45],[57,46],[58,47],[93,48],[89,49],[91,50],[96,50],[92,51],[97,52],[94,48],[95,53],[62,54],[64,55],[63,56],[66,57],[88,58],[99,59],[78,60],[156,61],[101,62],[83,63],[98,64],[70,65],[155,66],[69,67],[84,68],[86,69],[79,70],[82,71],[81,72],[80,72],[77,73]],"semanticDiagnosticsPerFile":[154,151,102,104,152,105,106,107,108,109,110,111,112,113,114,115,116,117,118,103,148,119,120,121,153,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,150,140,141,142,143,144,145,149,146,147,60,47,48,46,49,50,51,52,53,54,55,56,57,58,61,87,93,89,91,96,92,97,94,95,90,68,62,64,63,65,45,10,12,11,2,13,14,15,16,17,18,19,20,3,4,24,21,22,23,25,26,27,5,28,29,30,31,6,32,33,34,35,7,40,36,37,38,39,8,41,42,43,1,9,44,59,66,88,99,78,156,101,83,98,70,155,67,69,84,86,85,79,82,81,80,72,75,76,77,74,73,71,100]},"version":"4.3.2"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`collectRedirects should throw if plugin option redirects contain invalid to paths 1`] = `
|
|
4
|
-
"You are trying to create client-side redirections to paths that do not exist:
|
|
5
|
-
- /this/path/does/not/exist2
|
|
6
|
-
- /this/path/does/not/exist2
|
|
7
|
-
|
|
8
|
-
Valid paths you can redirect to:
|
|
9
|
-
- /
|
|
10
|
-
- /someExistingPath
|
|
11
|
-
- /anotherExistingPath
|
|
12
|
-
"
|
|
13
|
-
`;
|
|
14
|
-
|
|
15
|
-
exports[`collectRedirects should throw if redirect creator creates array of array redirect 1`] = `
|
|
16
|
-
"Some created redirects are invalid:
|
|
17
|
-
- {\\"from\\":[\\"/fromPath\\"],\\"to\\":\\"/\\"} => Validation error: \\"from\\" must be a string
|
|
18
|
-
"
|
|
19
|
-
`;
|
|
20
|
-
|
|
21
|
-
exports[`collectRedirects should throw if redirect creator creates invalid redirects 1`] = `
|
|
22
|
-
"Some created redirects are invalid:
|
|
23
|
-
- {\\"from\\":\\"https://google.com/\\",\\"to\\":\\"/\\"} => Validation error: \\"from\\" is not a valid pathname. Pathname should start with slash and not contain any domain or query string.
|
|
24
|
-
- {\\"from\\":\\"//abc\\",\\"to\\":\\"/\\"} => Validation error: \\"from\\" is not a valid pathname. Pathname should start with slash and not contain any domain or query string.
|
|
25
|
-
- {\\"from\\":\\"/def?queryString=toto\\",\\"to\\":\\"/\\"} => Validation error: \\"from\\" is not a valid pathname. Pathname should start with slash and not contain any domain or query string.
|
|
26
|
-
"
|
|
27
|
-
`;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`createRedirectPageContent should encode uri special chars 1`] = `
|
|
4
|
-
"<!DOCTYPE html>
|
|
5
|
-
<html>
|
|
6
|
-
<head>
|
|
7
|
-
<meta charset=\\"UTF-8\\">
|
|
8
|
-
<meta http-equiv=\\"refresh\\" content=\\"0; url=https://docusaurus.io/gr/%CF%83%CE%B5%CE%BB%CE%B9%CE%B4%CE%B1%CF%82/\\">
|
|
9
|
-
<link rel=\\"canonical\\" href=\\"https://docusaurus.io/gr/%CF%83%CE%B5%CE%BB%CE%B9%CE%B4%CE%B1%CF%82/\\" />
|
|
10
|
-
</head>
|
|
11
|
-
<script>
|
|
12
|
-
window.location.href = 'https://docusaurus.io/gr/%CF%83%CE%B5%CE%BB%CE%B9%CE%B4%CE%B1%CF%82/';
|
|
13
|
-
</script>
|
|
14
|
-
</html>"
|
|
15
|
-
`;
|
|
16
|
-
|
|
17
|
-
exports[`createRedirectPageContent should match snapshot 1`] = `
|
|
18
|
-
"<!DOCTYPE html>
|
|
19
|
-
<html>
|
|
20
|
-
<head>
|
|
21
|
-
<meta charset=\\"UTF-8\\">
|
|
22
|
-
<meta http-equiv=\\"refresh\\" content=\\"0; url=https://docusaurus.io/\\">
|
|
23
|
-
<link rel=\\"canonical\\" href=\\"https://docusaurus.io/\\" />
|
|
24
|
-
</head>
|
|
25
|
-
<script>
|
|
26
|
-
window.location.href = 'https://docusaurus.io/';
|
|
27
|
-
</script>
|
|
28
|
-
</html>"
|
|
29
|
-
`;
|