UNPKG

1.55 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _lodash = _interopRequireDefault(require("lodash"));
6
7var _crypto = _interopRequireDefault(require("crypto"));
8
9var _fsExtra = _interopRequireDefault(require("fs-extra"));
10
11var _redux = require("../redux/");
12
13var _gatsbyCoreUtils = require("gatsby-core-utils");
14
15let lastHash = null;
16
17const writeRedirects = async () => {
18 bootstrapFinished = true;
19
20 let {
21 program,
22 redirects
23 } = _redux.store.getState(); // Filter for redirects that are meant for the browser.
24
25
26 const browserRedirects = redirects.filter(r => r.redirectInBrowser);
27
28 const newHash = _crypto.default.createHash(`md5`).update(JSON.stringify(browserRedirects)).digest(`hex`);
29
30 if (newHash === lastHash) {
31 return Promise.resolve();
32 }
33
34 lastHash = newHash;
35 return await _fsExtra.default.writeFile((0, _gatsbyCoreUtils.joinPath)(program.directory, `.cache/redirects.json`), JSON.stringify(browserRedirects, null, 2));
36};
37
38exports.writeRedirects = writeRedirects;
39let bootstrapFinished = false;
40let oldRedirects;
41
42const debouncedWriteRedirects = _lodash.default.debounce(() => {
43 // Don't write redirects again until bootstrap has finished.
44 if (bootstrapFinished && !_lodash.default.isEqual(oldRedirects, _redux.store.getState().redirects)) {
45 writeRedirects();
46 oldRedirects = _redux.store.getState().Redirects;
47 }
48}, 250);
49
50_redux.emitter.on(`CREATE_REDIRECT`, () => {
51 debouncedWriteRedirects();
52});
53//# sourceMappingURL=redirects-writer.js.map
\No newline at end of file