1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | var _lodash = _interopRequireDefault(require("lodash"));
|
6 |
|
7 | var _crypto = _interopRequireDefault(require("crypto"));
|
8 |
|
9 | var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
10 |
|
11 | var _redux = require("../redux/");
|
12 |
|
13 | var _gatsbyCoreUtils = require("gatsby-core-utils");
|
14 |
|
15 | let lastHash = null;
|
16 |
|
17 | const writeRedirects = async () => {
|
18 | bootstrapFinished = true;
|
19 |
|
20 | let {
|
21 | program,
|
22 | redirects
|
23 | } = _redux.store.getState();
|
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 |
|
38 | exports.writeRedirects = writeRedirects;
|
39 | let bootstrapFinished = false;
|
40 | let oldRedirects;
|
41 |
|
42 | const debouncedWriteRedirects = _lodash.default.debounce(() => {
|
43 |
|
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 |
|
\ | No newline at end of file |