@docusaurus/plugin-client-redirects 2.0.0-beta.0f144213d → 2.0.0-beta.11
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/.tsbuildinfo +1 -1
- package/lib/collectRedirects.js +17 -21
- 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 +28 -20
- package/package.json +14 -12
- package/src/__tests__/__snapshots__/writeRedirectFiles.test.ts.snap +5 -5
- package/src/__tests__/collectRedirects.test.ts +5 -7
- package/src/__tests__/normalizePluginOptions.test.ts +4 -9
- package/src/__tests__/redirectValidation.test.ts +2 -2
- package/src/__tests__/writeRedirectFiles.test.ts +8 -6
- package/src/collectRedirects.ts +13 -17
- 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 +28 -21
package/lib/.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
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","aefb89303293b92387354bd8464557e02efa728bfd0d7f9316579092e9e47856","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","cb22a427119152656d8a304faf1b698e173bad1f7f95ecf5eb0c2849d7804ba1","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
|
+
{"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.es2021.intl.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/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/schema-utils/declarations/validationerror.d.ts","../../../node_modules/ajv/lib/ajv.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","../../../node_modules/utility-types/dist/aliases-and-guards.d.ts","../../../node_modules/utility-types/dist/mapped-types.d.ts","../../../node_modules/utility-types/dist/utility-types.d.ts","../../../node_modules/utility-types/dist/functional-helpers.d.ts","../../../node_modules/utility-types/dist/index.d.ts","../../docusaurus-types/src/index.d.ts","../src/types.ts","../../docusaurus-utils/lib/posixpath.d.ts","../../docusaurus-utils/lib/constants.d.ts","../../docusaurus-utils/lib/mdxutils.d.ts","../../docusaurus-utils/lib/normalizeurl.d.ts","../../docusaurus-utils/lib/tags.d.ts","../../docusaurus-utils/lib/markdownparser.d.ts","../../docusaurus-utils/lib/markdownlinks.d.ts","../../docusaurus-utils/lib/escapepath.d.ts","../../docusaurus-utils/lib/slugger.d.ts","../../docusaurus-utils/lib/hashutils.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@nodelib/fs.stat/out/types/index.d.ts","../../../node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts","../../../node_modules/@nodelib/fs.stat/out/settings.d.ts","../../../node_modules/@nodelib/fs.stat/out/providers/async.d.ts","../../../node_modules/@nodelib/fs.stat/out/index.d.ts","../../../node_modules/@nodelib/fs.scandir/out/types/index.d.ts","../../../node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts","../../../node_modules/@nodelib/fs.scandir/out/settings.d.ts","../../../node_modules/@nodelib/fs.scandir/out/providers/async.d.ts","../../../node_modules/@nodelib/fs.scandir/out/index.d.ts","../../../node_modules/@nodelib/fs.walk/out/types/index.d.ts","../../../node_modules/@nodelib/fs.walk/out/settings.d.ts","../../../node_modules/@nodelib/fs.walk/out/readers/reader.d.ts","../../../node_modules/@nodelib/fs.walk/out/readers/async.d.ts","../../../node_modules/@nodelib/fs.walk/out/providers/async.d.ts","../../../node_modules/@nodelib/fs.walk/out/index.d.ts","../../../node_modules/fast-glob/out/types/index.d.ts","../../../node_modules/fast-glob/out/settings.d.ts","../../../node_modules/fast-glob/out/managers/tasks.d.ts","../../../node_modules/fast-glob/out/index.d.ts","../../../node_modules/globby/index.d.ts","../../docusaurus-utils/lib/globutils.d.ts","../../docusaurus-utils/lib/webpackutils.d.ts","../../docusaurus-utils/lib/index.d.ts","../src/extensionredirects.ts","../../docusaurus-utils-validation/lib/joi.d.ts","../../docusaurus-utils-validation/lib/joifrontmatter.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/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","../src/normalizepluginoptions.ts","../../../node_modules/@types/fs-extra/index.d.ts","../src/writeredirectfiles.ts","../src/index.ts","../src/plugin-client-redirects.d.ts","../../../node_modules/@types/fs-extra/node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"6adbf5efd0e374ff5f427a4f26a5a413e9734eee5067a0e86da69aea41910b52","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"abba1071bfd89e55e88a054b0c851ea3e8a494c340d0f3fab19eb18f6afb0c9e","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"4378fc8122ec9d1a685b01eb66c46f62aba6b239ca7228bb6483bcf8259ee493","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","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":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"d071129cba6a5f2700be09c86c07ad2791ab67d4e5ed1eb301d6746c62745ea4","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"e8c9f4e445a489991ca1a4232667de3ac36b07ba75ea335971fbeacf2d26fe67","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"12f4cfe2fe60b810c3174537bc2ddb20c1067b7768643d12cb1266fd183afb75","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","378df8bbbb9e3f6fca05d58f644aab538e1062eab5e778fb0b83d41125df246d","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","6ac6f24aff52e62c3950461aa17eab26e3a156927858e6b654baef0058b4cd1e",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"7d7c8ef7d48a035142c07dae60545ecc0e4af4c337742760cb09726f2f8e31db","0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","dee5d387e2e6f3015cbf91fc0c13ed6f016f9c5c1f2ad9c62602f4fd398fa83a","67f129ed8b372622ff36b8b10e39d03e09e363a5ff7821105f92f085b8d1ccba","721124f5db1f4a42da2308dfa1414d2e99055d2dfc59de7bf2e0b6ac64356c0e","0d7569149194d622212c21d5d162b0715d5a6ca764cebae7145fdbaff1e07311","cd74c8275483d3fe0d07a9b4bba28845a8a611f0aa399e961dbd40e5d46dd9ad","1bb77ef90f80a26d5db0b56e51a629bf43a67806b229aa255a4f5863483978c6","c72b982add26c5ddf410899bcafe3f47253a5d274d4b93d2ef67850d4af4545b","79468f5936bec0f62d7866f43bdc90969d996f2919b0c09618fcf8779534dced","bd0d80db12ef1aceefc4f9d3eb88517b9634fa747ae8475981da8655292feab8","55e68fb1618e3f55f7866b8c8415152159309a14b716370081ab0b7af96d876e","bf0491af2455f92282b61807be2be6e7ad7d532e47fac7b698019d3617c28ff7","5d874fb879ab8601c02549817dceb2d0a30729cb7e161625dd6f819bbff1ec0b","ee551a880882770c4f56a0964a9767c9feafe497a5be52652527d098c88d85cb","53900b299c790f5adc0d12e81a5762419d96de7c161dcec830d26617b30c085a","57dc389181eeb619a8b10299e3447cd6d9b216453af993abda5afedd6b39b455","0daf3165e72cc1ed5263a3374b98cb065f78922c76602477973ee0654b99df17","25dbbc5588c7f9a9ef359adf2ae275deef8250d919ec93db1a3a2f2e2c7ab4dd","d63db4fd77b831eb1247f1f5db90fcbfa661499bb5facfbc86944a1db149d72c","aa7611487df30b0a4265c5d473b12fd472d7585253b94e811d07727e612f1cd5","eba3847a08cea18bd0b914fa1000f5bd6b412c6c19862e442051de8d969c202d","3fedee34f24b13af4a97c4184a9e215a6f6b2dfb655dafc24970c76791b06c43","4fae0cbdbb492b0fc847ec76d0a4af44eb04028200cec088d97fca05438213f1","c7642b1c7345e546c81831fe5fa9233e15a12fa2743f6685b0d700af8292cdd0","bbe264e2fd81c101552dd353d85ac1eb8b8dbf59389fe4a4efe96ccee48d0aaf","857d6d4a53c4372a2799e733ab122d28f7b2b580fe58b80a5fe1321a733c20f7","d555cd63a3fc837840db192596273fdf52fb28092b0a33bec98e89a0334b3a4c",{"version":"dc5f6951bbf5b544349cbdef895c08dee6929818abd27d7d53c38cf1209091b3","affectsGlobalScope":true},"85d545d430795d54a8b2896f67f9aeb7bf19fd74a1469ae0627311eb72f0dfa2","a473cf45c3d9809518f8af913312139d9f4db6887dc554e0d06d0f4e52722e6b","d5afcd002167b6b03d595fb8b9630a00456b6fb9d2c5e8b6aaa30cb31bc44e2b","3d68ecf05475492f041c88395372c3a01b30351619bebcd38287ab185be7f7e4",{"version":"a97ac401f6b334e9b1f6c8ee9319d6e21cc39d2f400e909805dfb8ab5eab0576","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","7674b65ac0a3b160232d84464b3486d727415581e5b99ff4aec324500adc98a4","87f16999a5832968485f6e20dd70529399143c3cf35003485020a037f338b75f","508e1e25ca40ea6cde332d3232c826fcd82f456f45ae535d817754684f048f9e",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"8f8f6ee2a0c94077f79439f51640a625ac7e2f5dd6866bd3b5a41705c836adfc","affectsGlobalScope":true},"ad908b2432dc4143f3439d3c625255f1050447a0232a1e9c2bffa20f37ec0097","e8d2d40a15313520a510409c8f3aeed28b79aab61af41ae65084570f9843b306","9700d148ccc0784923f66a3a7162e523172b530e8b3aa9834f53a6e893127c80","88587b5c94b0c4f5d78026e4beeb93383b3933c860d9840b55d6bf47d7b632bb","a473ecd14d9bafbd6a33105524b033237bbf1d6ce2cd81eb71cc54bec2d83d55","4e9f66d07d1687983ef1903654f4a4977563a0318046e893c5ecdb4dac25d376","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","7a2a3ff87ffd4313a6a2f3b012e801dd249ee58152cedf90c8718dcd2c811fe3","69640cc2e76dad52daeb9914e6b70c5c9a5591a3a65190a2d3ea432cf0015e16","a39a4c527b7a2dc7a2661b711a534c10c76852c5ad6ae320767d3f7d2621b67d","1bb5c9857b2ee32c199dd85bc0f4c0299112485d6e5dc91428eabfdee0dbd68c",{"version":"5daba568741c8ed283d67bf370c626a91e09fdfbc6d4abe22a7f93e2cf5138b9","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","662661bbf9ccd869f3bca82d34234b2abdc95c657e2187c35352d42dddb24c2d","bec890dbc489a627439ad67330f9418d7f03aed29d1f874e5219a121da040cfa","4c4334eb5d8fae83416a361d787b55a5743916aed8af812a909898bc7333e709","6feb6f75a3e4e017f8e6e12740cf06f18eefcf829284fa310da6c7f4d44fb2eb","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","0953427f9c2498f71dd912fdd8a81b19cf6925de3e1ad67ab9a77b9a0f79bf0b","b709ff1f6d6235f5e9c8dcbce3e683ff24ec35046b232d5a281af083026018d1","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","ee6a154ecccde26b413e89c97a0b824f25b253c4c50a3c392bcb2b4c6ba9c314","d9a653f75614c4d3f63e88b7aae66390bf71a8cea02f5f7db8ca6c1a8e8c3f1a","a364b4a8a015ae377052fa4fac94204d79a69d879567f444c7ceff1b7a18482d","c5ec3b97d9db756c689cd11f4a11eaa9e6077b2768e3e9b54ff727a93c03a909","c14e9e86f18189c7d32b5dd03b4cf3f40bed68f0509dec06d75d41b82c065fe2","bdb07038733b2d74a75ba9c381dcb92774cd6f161ee125bfa921eae7d883ccc9","ad93e960a3a07dff7394bf0c8a558006a9ff2d0725ab28fc33dec227d4cb251e",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"4362a776026a354985d9f2acc54b92630d8a084948ff9592ccd8f167276c5117","46324183533e34fad2461b51174132e8e0e4b3ac1ceb5032e4952992739d1eab","d3fa0530dfb1df408f0abd76486de39def69ca47683d4a3529b2d22fce27c693","d9be977c415df16e4defe4995caeca96e637eeef9d216d0d90cdba6fc617e97e","98e0c2b48d855a844099123e8ec20fe383ecd1c5877f3895b048656befe268d0","ff53802a97b7d11ab3c4395aa052baa14cd12d2b1ed236b520a833fdd2a15003","fce9262f840a74118112caf685b725e1cc86cd2b0927311511113d90d87cc61e","d7a7cac49af2a3bfc208fe68831fbfa569864f74a7f31cc3a607f641e6c583fd","9a80e3322d08274f0e41b77923c91fe67b2c8a5134a5278c2cb60a330441554e","2460af41191009298d931c592fb6d4151beea320f1f25b73605e2211e53e4e88","2f87ea988d84d1c617afdeba9d151435473ab24cd5fc456510c8db26d8bd1581","b7336c1c536e3deaedbda956739c6250ac2d0dd171730c42cb57b10368f38a14","6fb67d664aaab2f1d1ad4613b58548aecb4b4703b9e4c5dba6b865b31bd14722","4414644199b1a047b4234965e07d189781a92b578707c79c3933918d67cd9d85","04a4b38c6a1682059eac00e7d0948d99c46642b57003d61d0fe9ccc9df442887","f12ea658b060da1752c65ae4f1e4c248587f6cd4cb4acabbf79a110b6b02ff75","011b2857871a878d5eae463bedc4b3dd14755dc3a67d5d10f8fbb7823d119294","e175549fe57dbff5cd68c1a5ccf33717584d7db9afb8ec216fd2c0daa3b06931","ea68c312e1eb9b48f7064a8dda348594769ba8f9c8596315827c559734a60205","6ddb5fb4476ca702ecff9e5ff0295cde6ce138d71f817da65e118a2a3c534106","6dfff2e65f10158f5a868e642a2e74d2d1bd76f15291552f389f2b8c829a9a86","41c78f187749098f9b8e8982839a010b6bf00dacc654d759b9c169127bcda034","4b72b4c3e5b21e06453e213fca18d0b2464199ccd5091da9eb2ba78fcdb91057","832962980c7b16acad0eab132faa982f8d241218b6ecd4a1443bfbafb5da18dd","f2ad082ce6503d45f4f703e6853d7e3ca2e6b158dcd7be78bf452c39203d49bb","49de8feed534ff6ab66fbfc2bf1ea0a0449338a2dce2ed51bf9f29fb4da239a3","889859c907d8388cfe92d4bdfe5b5ff0885a41e6e4568691230e21757f7673c9","df8e0b622962e734e62c8e98423622900d62abd0a9fadc9a9c2bd095bf34952a","587d29bdf3f945aef9e94f92cdb8fa90b0ecbce7e6dc76411875ed5b436cd1be","faf6642e20b9b95375af851dee261aa115bc1204a41dcca7740cbdde4b9af52e","8387c74026355f5df1eec752beaf0f88c87a3a23f8945e3728984a08fa40d106","700c2f83a83482242336bf0033edbd961105577f16b9cf549333159fc719add2","63c9b50b55f320e8da81290acd27de8e1dab92e13b3ec7f24b80fde9dd80b795","e2d8df8b27288ae207cbdcef0c6a698824b974f53035ed729ddef26cd7692e75","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","0b981c80a204cb415e8c1ef198e13b09c6a44cbbd8a9ba097f708c150f42bcd5","a3cf09a8ce34726b0557b3e51135a6768b464e86b7190355e42f10ba368e9786","dcd04eabb6c23406dc589f688c7a83d25a8aa0c93ee34c0be1114113c32792d6","0a21f90e2ffaf26b305183fd2029a7dd512bb3189a9d6842ba764782e609429e","7738be042bbc5acbe24a3d06b11c0e7656b43e5185c3af58690419946c6248d7","bd868c7a5868f2680d332b85283be6be45edb766a95c4b8034aff7c741ab1aad","5ec0c5db09dfb4f1cd140417dc86fed025bd757d63c11fe2c4148ec12fd20111","810c09c0ee1daf5a4472e28419ccb3f3f1c837c2b8c663b488c8c56a2af40c39","2db6353e2fdcbd2842b5b0a36d11e11ffbff703552e19481a55a63155e14c6be","74175ef96c3d3cb5e7bcaf0387ca4cc3de9f1bf68b42a082d8be5e79178c2c7e","37723b12b6a526579c9a467ab70a9414fc30994e24bd4b9dae41148ed3e112a1","cb36f4facbc37ab565c40bb163b9dc44b7e315684edf2db624aecfda10a3081f","df9c209354a3ee3a46d611009393d3db30509d662c352ac7391f5d450d00edd6","ed19da84b7dbf00952ad0b98ce5c194f1903bcf7c94d8103e8e0d63b271543ae","44188647280474d7f2f1c06f1f5a32be7e682f1e29b857983eb76550009051ba","c16e15a7bbbb323cdf9df7a6b05a96b474831768886e0c85f5e0df3275249923","09ed869dd64962b7b5e4dc8dee93f14a92868fddcde0bba29ab2c021e9cce227"],"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,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":6,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[135,136],[136,137,138,139],[130,136,138],[135,137],[100,130],[100,130,131],[131,132,133,134],[131,133],[132],[116,130,140,141,142,145],[141,142,144],[99,130,140,141,142,143],[142],[140,141],[130,140],[100,182],[47,49,50,51,52,53,54,55,56,57,58,59],[47,48,50,51,52,53,54,55,56,57,58,59],[48,49,50,51,52,53,54,55,56,57,58,59],[47,48,49,51,52,53,54,55,56,57,58,59],[47,48,49,50,52,53,54,55,56,57,58,59],[47,48,49,50,51,53,54,55,56,57,58,59],[47,48,49,50,51,52,54,55,56,57,58,59],[47,48,49,50,51,52,53,55,56,57,58,59],[47,48,49,50,51,52,53,54,56,57,58,59],[47,48,49,50,51,52,53,54,55,57,58,59],[47,48,49,50,51,52,53,54,55,56,58,59],[47,48,49,50,51,52,53,54,55,56,57,59],[47,48,49,50,51,52,53,54,55,56,57,58],[99,100,107,116],[91,99,107],[123],[95,100,108],[116],[97,99,107],[99],[99,101,116,122],[100],[107,116,122],[99,100,102,107,116,119,122],[102,116,119,122],[87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,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],[122],[97,99,116],[89],[121],[114,123,125],[107],[113],[99,101,116,122,125],[168],[168,169],[166,167],[166,168],[166,168,169,170,171,172,173],[166,168,169],[130,147,148,149],[147,148],[147],[130,146],[150],[64],[61,62,63],[61,64],[70,71,72,73],[70],[71],[60,62,64,65,66,102,107,119],[46,59,76,155,161,163,164],[46,59,174,175],[46,76,154],[46,75,76,154,165,177,179],[46,76,154,160],[76],[46,76,160],[46],[46,75],[46,59,76,109,154,176,178],[67,68,69,74,113],[75],[162],[156,157,158,159],[69],[156],[151],[75,77,78,79,80,81,82,83,84,85,86,152,153],[67]],"referencedMap":[[137,1],[140,2],[139,3],[138,4],[136,5],[132,6],[135,7],[134,8],[133,9],[131,5],[146,10],[145,11],[144,12],[143,13],[142,14],[141,15],[178,16],[48,17],[49,18],[47,19],[50,20],[51,21],[52,22],[53,23],[54,24],[55,25],[56,26],[57,27],[58,28],[59,29],[91,30],[92,31],[93,32],[94,33],[95,34],[96,35],[98,36],[99,36],[100,37],[101,38],[102,39],[103,40],[104,41],[130,42],[105,36],[106,43],[107,44],[110,45],[111,46],[114,36],[115,47],[116,36],[119,48],[121,48],[122,49],[124,34],[127,50],[128,34],[170,51],[166,52],[168,53],[173,53],[169,54],[174,55],[171,51],[172,56],[150,57],[149,58],[148,59],[147,60],[151,61],[65,62],[64,63],[62,64],[74,65],[71,66],[72,67],[67,68],[165,69],[176,70],[155,71],[180,72],[177,73],[181,74],[161,75],[175,76],[76,77],[179,78],[75,79],[162,80],[163,81],[160,82],[156,83],[157,84],[159,84],[158,84],[152,85],[154,86],[153,87]],"exportedModulesMap":[[137,1],[140,2],[139,3],[138,4],[136,5],[132,6],[135,7],[134,8],[133,9],[131,5],[146,10],[145,11],[144,12],[143,13],[142,14],[141,15],[178,16],[48,17],[49,18],[47,19],[50,20],[51,21],[52,22],[53,23],[54,24],[55,25],[56,26],[57,27],[58,28],[59,29],[91,30],[92,31],[93,32],[94,33],[95,34],[96,35],[98,36],[99,36],[100,37],[101,38],[102,39],[103,40],[104,41],[130,42],[105,36],[106,43],[107,44],[110,45],[111,46],[114,36],[115,47],[116,36],[119,48],[121,48],[122,49],[124,34],[127,50],[128,34],[170,51],[166,52],[168,53],[173,53],[169,54],[174,55],[171,51],[172,56],[150,57],[149,58],[148,59],[147,60],[151,61],[65,62],[64,63],[62,64],[74,65],[71,66],[72,67],[67,68],[165,69],[176,70],[155,71],[180,72],[177,73],[181,74],[161,75],[175,76],[76,77],[179,78],[75,79],[162,80],[163,81],[160,82],[156,83],[157,84],[159,84],[158,84],[152,85],[154,86],[153,87]],"semanticDiagnosticsPerFile":[137,140,139,138,136,132,135,134,133,131,146,145,144,143,142,141,60,178,61,48,49,47,50,51,52,53,54,55,56,57,58,59,87,89,90,91,92,93,94,95,96,97,98,99,100,101,88,129,102,103,104,130,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,63,164,170,166,168,173,169,174,171,172,167,150,149,148,147,151,69,65,64,62,66,46,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,44,41,42,43,1,9,45,70,73,74,71,72,67,165,176,155,180,177,181,161,175,76,179,68,75,162,163,160,156,157,159,158,78,84,152,86,154,83,82,79,80,77,85,81,153]},"version":"4.5.2"}
|
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 chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
14
|
+
const chalk_1 = (0, tslib_1.__importDefault)(require("chalk"));
|
|
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,7 +64,7 @@ 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
69
|
console.error(chalk_1.default.red(`@docusaurus/plugin-client-redirects: multiple redirects are created with the same "from" pathname=${from}
|
|
72
70
|
It is not possible to redirect the same pathname to multiple destinations:
|
|
@@ -74,7 +72,7 @@ It is not possible to redirect the same pathname to multiple destinations:
|
|
|
74
72
|
`));
|
|
75
73
|
}
|
|
76
74
|
});
|
|
77
|
-
const collectedRedirects = lodash_1.uniqBy(redirects, (redirect) => redirect.from);
|
|
75
|
+
const collectedRedirects = (0, lodash_1.uniqBy)(redirects, (redirect) => redirect.from);
|
|
78
76
|
// We don't want to override an already existing route with a redirect file!
|
|
79
77
|
const redirectsOverridingExistingPath = collectedRedirects.filter((redirect) => pluginContext.relativeRoutesPaths.includes(redirect.from));
|
|
80
78
|
if (redirectsOverridingExistingPath.length > 0) {
|
|
@@ -87,8 +85,8 @@ It is not possible to redirect the same pathname to multiple destinations:
|
|
|
87
85
|
// For each plugin config option, create the appropriate redirects
|
|
88
86
|
function doCollectRedirects(pluginContext) {
|
|
89
87
|
return [
|
|
90
|
-
...extensionRedirects_1.createFromExtensionsRedirects(pluginContext.relativeRoutesPaths, pluginContext.options.fromExtensions),
|
|
91
|
-
...extensionRedirects_1.createToExtensionsRedirects(pluginContext.relativeRoutesPaths, pluginContext.options.toExtensions),
|
|
88
|
+
...(0, extensionRedirects_1.createFromExtensionsRedirects)(pluginContext.relativeRoutesPaths, pluginContext.options.fromExtensions),
|
|
89
|
+
...(0, extensionRedirects_1.createToExtensionsRedirects)(pluginContext.relativeRoutesPaths, pluginContext.options.toExtensions),
|
|
92
90
|
...createRedirectsOptionRedirects(pluginContext.options.redirects),
|
|
93
91
|
...createCreateRedirectsOptionRedirects(pluginContext.relativeRoutesPaths, pluginContext.options.createRedirects),
|
|
94
92
|
];
|
|
@@ -104,7 +102,7 @@ function createRedirectsOptionRedirects(redirectsOption) {
|
|
|
104
102
|
to: option.to,
|
|
105
103
|
}));
|
|
106
104
|
}
|
|
107
|
-
return
|
|
105
|
+
return redirectsOption.flatMap(optionToRedirects);
|
|
108
106
|
}
|
|
109
107
|
// Create redirects from the "createRedirects" fn provided by the user
|
|
110
108
|
function createCreateRedirectsOptionRedirects(paths, createRedirects) {
|
|
@@ -113,12 +111,10 @@ function createCreateRedirectsOptionRedirects(paths, createRedirects) {
|
|
|
113
111
|
? createRedirects(path) || []
|
|
114
112
|
: [];
|
|
115
113
|
const froms = typeof fromsMixed === 'string' ? [fromsMixed] : fromsMixed;
|
|
116
|
-
return froms.map((from) => {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
};
|
|
121
|
-
});
|
|
114
|
+
return froms.map((from) => ({
|
|
115
|
+
from,
|
|
116
|
+
to: path,
|
|
117
|
+
}));
|
|
122
118
|
}
|
|
123
|
-
return
|
|
119
|
+
return paths.flatMap(createPathRedirects);
|
|
124
120
|
}
|
|
@@ -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,38 +8,46 @@
|
|
|
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
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
// This can potentially create an infinite loop (depends on host, like Netlify)
|
|
20
|
+
// Create redirect file path
|
|
21
|
+
// Make sure this path has lower precedence over the original file path when served by host providers!
|
|
22
|
+
// Otherwise it can produce infinite redirect loops!
|
|
24
23
|
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
// See
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
// See https://github.com/facebook/docusaurus/issues/5055
|
|
25
|
+
// See https://github.com/facebook/docusaurus/pull/5085
|
|
26
|
+
// See https://github.com/facebook/docusaurus/pull/5102
|
|
27
|
+
function getRedirectFilePath(fromPath, trailingSlash) {
|
|
28
|
+
const fileName = path_1.default.basename(fromPath);
|
|
29
|
+
const filePath = path_1.default.dirname(fromPath);
|
|
30
|
+
// Edge case for https://github.com/facebook/docusaurus/pull/5102
|
|
31
|
+
// If the redirect source path is /xyz, with file /xyz.html
|
|
32
|
+
// We can't write the redirect file at /xyz.html/index.html because for Unix FS, a file/folder can't have the same name "xyz.html"
|
|
33
|
+
// The only possible solution for a redirect file is thus /xyz.html.html (I know, looks suspicious)
|
|
34
|
+
if (trailingSlash === false && fileName.endsWith('.html')) {
|
|
35
|
+
return path_1.default.join(filePath, `${fileName}.html`);
|
|
36
|
+
}
|
|
37
|
+
// If the target path is /xyz, with file /xyz/index.html, we don't want the redirect file to be /xyz.html
|
|
38
|
+
// otherwise it would be picked in priority and the redirect file would redirect to itself
|
|
39
|
+
// We prefer the redirect file to be /xyz.html/index.html, served with lower priority for most static hosting tools
|
|
40
|
+
else {
|
|
41
|
+
return path_1.default.join(filePath, `${fileName}/index.html`);
|
|
42
|
+
}
|
|
33
43
|
}
|
|
34
44
|
function toRedirectFilesMetadata(redirects, pluginContext, trailingSlash) {
|
|
35
45
|
// Perf: avoid rendering the template twice with the exact same "props"
|
|
36
46
|
// We might create multiple redirect pages for the same destination url
|
|
37
47
|
// note: the first fn arg is the cache key!
|
|
38
|
-
const createPageContentMemoized = lodash_1.memoize((toUrl) => {
|
|
39
|
-
return createRedirectPageContent_1.default({ toUrl });
|
|
40
|
-
});
|
|
48
|
+
const createPageContentMemoized = (0, lodash_1.memoize)((toUrl) => (0, createRedirectPageContent_1.default)({ toUrl }));
|
|
41
49
|
const createFileMetadata = (redirect) => {
|
|
42
|
-
const fileRelativePath =
|
|
50
|
+
const fileRelativePath = getRedirectFilePath(redirect.from, trailingSlash);
|
|
43
51
|
const fileAbsolutePath = path_1.default.join(pluginContext.outDir, fileRelativePath);
|
|
44
52
|
const toUrl = createToUrl(pluginContext.baseUrl, redirect.to);
|
|
45
53
|
const fileContent = createPageContentMemoized(toUrl);
|
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.11",
|
|
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,25 @@
|
|
|
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-
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"eta": "^1.11.0",
|
|
21
|
+
"@docusaurus/core": "2.0.0-beta.11",
|
|
22
|
+
"@docusaurus/utils": "2.0.0-beta.11",
|
|
23
|
+
"@docusaurus/utils-common": "2.0.0-beta.11",
|
|
24
|
+
"@docusaurus/utils-validation": "2.0.0-beta.11",
|
|
25
|
+
"chalk": "^4.1.2",
|
|
26
|
+
"eta": "^1.12.3",
|
|
27
27
|
"fs-extra": "^10.0.0",
|
|
28
|
-
"globby": "^11.0.2",
|
|
29
28
|
"lodash": "^4.17.20",
|
|
30
|
-
"tslib": "^2.
|
|
29
|
+
"tslib": "^2.3.1"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@docusaurus/types": "2.0.0-beta.11"
|
|
31
33
|
},
|
|
32
34
|
"peerDependencies": {
|
|
33
35
|
"react": "^16.8.4 || ^17.0.0",
|
|
34
36
|
"react-dom": "^16.8.4 || ^17.0.0"
|
|
35
37
|
},
|
|
36
38
|
"engines": {
|
|
37
|
-
"node": ">=
|
|
39
|
+
"node": ">=14"
|
|
38
40
|
},
|
|
39
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "1cb6cdfb78c0bfc681bce9a9339270abb9a06215"
|
|
40
42
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`toRedirectFilesMetadata should create appropriate
|
|
3
|
+
exports[`toRedirectFilesMetadata should create appropriate metadata for empty baseUrl: fileContent baseUrl=empty 1`] = `
|
|
4
4
|
Array [
|
|
5
5
|
"<!DOCTYPE html>
|
|
6
6
|
<html>
|
|
@@ -16,7 +16,7 @@ Array [
|
|
|
16
16
|
]
|
|
17
17
|
`;
|
|
18
18
|
|
|
19
|
-
exports[`toRedirectFilesMetadata should create appropriate
|
|
19
|
+
exports[`toRedirectFilesMetadata should create appropriate metadata for root baseUrl: fileContent baseUrl=/ 1`] = `
|
|
20
20
|
Array [
|
|
21
21
|
"<!DOCTYPE html>
|
|
22
22
|
<html>
|
|
@@ -32,7 +32,7 @@ Array [
|
|
|
32
32
|
]
|
|
33
33
|
`;
|
|
34
34
|
|
|
35
|
-
exports[`toRedirectFilesMetadata should create appropriate
|
|
35
|
+
exports[`toRedirectFilesMetadata should create appropriate metadata trailingSlash=false: fileContent 1`] = `
|
|
36
36
|
Array [
|
|
37
37
|
"<!DOCTYPE html>
|
|
38
38
|
<html>
|
|
@@ -70,7 +70,7 @@ Array [
|
|
|
70
70
|
]
|
|
71
71
|
`;
|
|
72
72
|
|
|
73
|
-
exports[`toRedirectFilesMetadata should create appropriate
|
|
73
|
+
exports[`toRedirectFilesMetadata should create appropriate metadata trailingSlash=true: fileContent 1`] = `
|
|
74
74
|
Array [
|
|
75
75
|
"<!DOCTYPE html>
|
|
76
76
|
<html>
|
|
@@ -108,7 +108,7 @@ Array [
|
|
|
108
108
|
]
|
|
109
109
|
`;
|
|
110
110
|
|
|
111
|
-
exports[`toRedirectFilesMetadata should create appropriate
|
|
111
|
+
exports[`toRedirectFilesMetadata should create appropriate metadata trailingSlash=undefined: fileContent 1`] = `
|
|
112
112
|
Array [
|
|
113
113
|
"<!DOCTYPE html>
|
|
114
114
|
<html>
|
|
@@ -220,12 +220,10 @@ describe('collectRedirects', () => {
|
|
|
220
220
|
collectRedirects(
|
|
221
221
|
createTestPluginContext(
|
|
222
222
|
{
|
|
223
|
-
createRedirects: (routePath) =>
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
];
|
|
228
|
-
},
|
|
223
|
+
createRedirects: (routePath) => [
|
|
224
|
+
`${removeTrailingSlash(routePath)}/some/path/suffix1`,
|
|
225
|
+
`${removeTrailingSlash(routePath)}/some/other/path/suffix2`,
|
|
226
|
+
],
|
|
229
227
|
},
|
|
230
228
|
['/', '/testpath', '/otherPath.html'],
|
|
231
229
|
),
|
|
@@ -291,7 +289,7 @@ describe('collectRedirects', () => {
|
|
|
291
289
|
{
|
|
292
290
|
createRedirects: (routePath) => {
|
|
293
291
|
if (routePath === '/') {
|
|
294
|
-
return
|
|
292
|
+
return [[`/fromPath`]] as unknown as string;
|
|
295
293
|
}
|
|
296
294
|
return undefined;
|
|
297
295
|
},
|
|
@@ -28,9 +28,7 @@ describe('normalizePluginOptions', () => {
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
test('should override all default options with valid user options', () => {
|
|
31
|
-
const createRedirects: CreateRedirectsFnOption = (_routePath: string) =>
|
|
32
|
-
return [];
|
|
33
|
-
};
|
|
31
|
+
const createRedirects: CreateRedirectsFnOption = (_routePath: string) => [];
|
|
34
32
|
expect(
|
|
35
33
|
normalizePluginOptions({
|
|
36
34
|
fromExtensions: ['exe', 'zip'],
|
|
@@ -50,7 +48,7 @@ describe('normalizePluginOptions', () => {
|
|
|
50
48
|
test('should reject bad fromExtensions user inputs', () => {
|
|
51
49
|
expect(() =>
|
|
52
50
|
normalizePluginOptions({
|
|
53
|
-
fromExtensions:
|
|
51
|
+
fromExtensions: [null, undefined, 123, true] as unknown as string[],
|
|
54
52
|
}),
|
|
55
53
|
).toThrowErrorMatchingSnapshot();
|
|
56
54
|
});
|
|
@@ -58,7 +56,7 @@ describe('normalizePluginOptions', () => {
|
|
|
58
56
|
test('should reject bad toExtensions user inputs', () => {
|
|
59
57
|
expect(() =>
|
|
60
58
|
normalizePluginOptions({
|
|
61
|
-
toExtensions:
|
|
59
|
+
toExtensions: [null, undefined, 123, true] as unknown as string[],
|
|
62
60
|
}),
|
|
63
61
|
).toThrowErrorMatchingSnapshot();
|
|
64
62
|
});
|
|
@@ -66,10 +64,7 @@ describe('normalizePluginOptions', () => {
|
|
|
66
64
|
test('should reject bad createRedirects user inputs', () => {
|
|
67
65
|
expect(() =>
|
|
68
66
|
normalizePluginOptions({
|
|
69
|
-
createRedirects:
|
|
70
|
-
'bad',
|
|
71
|
-
'value',
|
|
72
|
-
] as unknown) as CreateRedirectsFnOption,
|
|
67
|
+
createRedirects: ['bad', 'value'] as unknown as CreateRedirectsFnOption,
|
|
73
68
|
}),
|
|
74
69
|
).toThrowErrorMatchingSnapshot();
|
|
75
70
|
});
|
|
@@ -51,14 +51,14 @@ describe('validateRedirect', () => {
|
|
|
51
51
|
|
|
52
52
|
expect(() =>
|
|
53
53
|
validateRedirect({
|
|
54
|
-
from:
|
|
54
|
+
from: null as unknown as string,
|
|
55
55
|
to: '/toSomePath?queryString=xyz',
|
|
56
56
|
}),
|
|
57
57
|
).toThrowErrorMatchingSnapshot();
|
|
58
58
|
|
|
59
59
|
expect(() =>
|
|
60
60
|
validateRedirect({
|
|
61
|
-
from:
|
|
61
|
+
from: ['heyho'] as unknown as string,
|
|
62
62
|
to: '/toSomePath?queryString=xyz',
|
|
63
63
|
}),
|
|
64
64
|
).toThrowErrorMatchingSnapshot();
|
|
@@ -4,6 +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
|
+
|
|
7
8
|
import fs from 'fs-extra';
|
|
8
9
|
import path from 'path';
|
|
9
10
|
|
|
@@ -42,7 +43,7 @@ describe('createToUrl', () => {
|
|
|
42
43
|
});
|
|
43
44
|
|
|
44
45
|
describe('toRedirectFilesMetadata', () => {
|
|
45
|
-
test('should create appropriate
|
|
46
|
+
test('should create appropriate metadata trailingSlash=undefined', async () => {
|
|
46
47
|
const pluginContext = {
|
|
47
48
|
outDir: '/tmp/someFixedOutDir',
|
|
48
49
|
baseUrl: 'https://docusaurus.io',
|
|
@@ -69,7 +70,7 @@ describe('toRedirectFilesMetadata', () => {
|
|
|
69
70
|
);
|
|
70
71
|
});
|
|
71
72
|
|
|
72
|
-
test('should create appropriate
|
|
73
|
+
test('should create appropriate metadata trailingSlash=true', async () => {
|
|
73
74
|
const pluginContext = {
|
|
74
75
|
outDir: '/tmp/someFixedOutDir',
|
|
75
76
|
baseUrl: 'https://docusaurus.io',
|
|
@@ -96,7 +97,7 @@ describe('toRedirectFilesMetadata', () => {
|
|
|
96
97
|
);
|
|
97
98
|
});
|
|
98
99
|
|
|
99
|
-
test('should create appropriate
|
|
100
|
+
test('should create appropriate metadata trailingSlash=false', async () => {
|
|
100
101
|
const pluginContext = {
|
|
101
102
|
outDir: '/tmp/someFixedOutDir',
|
|
102
103
|
baseUrl: 'https://docusaurus.io',
|
|
@@ -113,7 +114,8 @@ describe('toRedirectFilesMetadata', () => {
|
|
|
113
114
|
);
|
|
114
115
|
|
|
115
116
|
expect(redirectFiles.map((f) => f.fileAbsolutePath)).toEqual([
|
|
116
|
-
path.join(pluginContext.outDir, '/abc.html/index.html'),
|
|
117
|
+
// path.join(pluginContext.outDir, '/abc.html/index.html'), // Can't be used because /abc.html already exists, and file/folder can't share same name on Unix!
|
|
118
|
+
path.join(pluginContext.outDir, '/abc.html.html'), // Weird but on purpose!
|
|
117
119
|
path.join(pluginContext.outDir, '/def/index.html'),
|
|
118
120
|
path.join(pluginContext.outDir, '/xyz/index.html'),
|
|
119
121
|
]);
|
|
@@ -123,7 +125,7 @@ describe('toRedirectFilesMetadata', () => {
|
|
|
123
125
|
);
|
|
124
126
|
});
|
|
125
127
|
|
|
126
|
-
test('should create appropriate
|
|
128
|
+
test('should create appropriate metadata for root baseUrl', async () => {
|
|
127
129
|
const pluginContext = {
|
|
128
130
|
outDir: '/tmp/someFixedOutDir',
|
|
129
131
|
baseUrl: '/',
|
|
@@ -138,7 +140,7 @@ describe('toRedirectFilesMetadata', () => {
|
|
|
138
140
|
);
|
|
139
141
|
});
|
|
140
142
|
|
|
141
|
-
test('should create appropriate
|
|
143
|
+
test('should create appropriate metadata for empty baseUrl', async () => {
|
|
142
144
|
const pluginContext = {
|
|
143
145
|
outDir: '/tmp/someFixedOutDir',
|
|
144
146
|
baseUrl: '',
|
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,
|
|
@@ -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);
|
|
@@ -165,7 +163,7 @@ function createRedirectsOptionRedirects(
|
|
|
165
163
|
}));
|
|
166
164
|
}
|
|
167
165
|
|
|
168
|
-
return
|
|
166
|
+
return redirectsOption.flatMap(optionToRedirects);
|
|
169
167
|
}
|
|
170
168
|
|
|
171
169
|
// Create redirects from the "createRedirects" fn provided by the user
|
|
@@ -181,13 +179,11 @@ function createCreateRedirectsOptionRedirects(
|
|
|
181
179
|
const froms: string[] =
|
|
182
180
|
typeof fromsMixed === 'string' ? [fromsMixed] : fromsMixed;
|
|
183
181
|
|
|
184
|
-
return froms.map((from) => {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
};
|
|
189
|
-
});
|
|
182
|
+
return froms.map((from) => ({
|
|
183
|
+
from,
|
|
184
|
+
to: path,
|
|
185
|
+
}));
|
|
190
186
|
}
|
|
191
187
|
|
|
192
|
-
return
|
|
188
|
+
return paths.flatMap(createPathRedirects);
|
|
193
189
|
}
|
|
@@ -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
|
|
@@ -24,22 +24,32 @@ export function createToUrl(baseUrl: string, to: string): string {
|
|
|
24
24
|
return normalizeUrl([baseUrl, to]);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
// This can potentially create an infinite loop (depends on host, like Netlify)
|
|
27
|
+
// Create redirect file path
|
|
28
|
+
// Make sure this path has lower precedence over the original file path when served by host providers!
|
|
29
|
+
// Otherwise it can produce infinite redirect loops!
|
|
31
30
|
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
// See
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
_trailingSlash: boolean | undefined, // Now unused, on purpose
|
|
31
|
+
// See https://github.com/facebook/docusaurus/issues/5055
|
|
32
|
+
// See https://github.com/facebook/docusaurus/pull/5085
|
|
33
|
+
// See https://github.com/facebook/docusaurus/pull/5102
|
|
34
|
+
function getRedirectFilePath(
|
|
35
|
+
fromPath: string,
|
|
36
|
+
trailingSlash: boolean | undefined, // Now unused, on purpose
|
|
39
37
|
): string {
|
|
40
|
-
const fileName = path.basename(
|
|
41
|
-
const filePath = path.dirname(
|
|
42
|
-
|
|
38
|
+
const fileName = path.basename(fromPath);
|
|
39
|
+
const filePath = path.dirname(fromPath);
|
|
40
|
+
// Edge case for https://github.com/facebook/docusaurus/pull/5102
|
|
41
|
+
// If the redirect source path is /xyz, with file /xyz.html
|
|
42
|
+
// We can't write the redirect file at /xyz.html/index.html because for Unix FS, a file/folder can't have the same name "xyz.html"
|
|
43
|
+
// The only possible solution for a redirect file is thus /xyz.html.html (I know, looks suspicious)
|
|
44
|
+
if (trailingSlash === false && fileName.endsWith('.html')) {
|
|
45
|
+
return path.join(filePath, `${fileName}.html`);
|
|
46
|
+
}
|
|
47
|
+
// If the target path is /xyz, with file /xyz/index.html, we don't want the redirect file to be /xyz.html
|
|
48
|
+
// otherwise it would be picked in priority and the redirect file would redirect to itself
|
|
49
|
+
// We prefer the redirect file to be /xyz.html/index.html, served with lower priority for most static hosting tools
|
|
50
|
+
else {
|
|
51
|
+
return path.join(filePath, `${fileName}/index.html`);
|
|
52
|
+
}
|
|
43
53
|
}
|
|
44
54
|
|
|
45
55
|
export function toRedirectFilesMetadata(
|
|
@@ -50,15 +60,12 @@ export function toRedirectFilesMetadata(
|
|
|
50
60
|
// Perf: avoid rendering the template twice with the exact same "props"
|
|
51
61
|
// We might create multiple redirect pages for the same destination url
|
|
52
62
|
// note: the first fn arg is the cache key!
|
|
53
|
-
const createPageContentMemoized = memoize((toUrl: string) =>
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
const createPageContentMemoized = memoize((toUrl: string) =>
|
|
64
|
+
createRedirectPageContent({toUrl}),
|
|
65
|
+
);
|
|
56
66
|
|
|
57
67
|
const createFileMetadata = (redirect: RedirectMetadata) => {
|
|
58
|
-
const fileRelativePath =
|
|
59
|
-
redirect.from,
|
|
60
|
-
trailingSlash,
|
|
61
|
-
);
|
|
68
|
+
const fileRelativePath = getRedirectFilePath(redirect.from, trailingSlash);
|
|
62
69
|
const fileAbsolutePath = path.join(pluginContext.outDir, fileRelativePath);
|
|
63
70
|
const toUrl = createToUrl(pluginContext.baseUrl, redirect.to);
|
|
64
71
|
const fileContent = createPageContentMemoized(toUrl);
|