1 | "use strict";
|
2 |
|
3 | const _ = require(`lodash`);
|
4 | const report = require(`gatsby-cli/lib/reporter`);
|
5 | const {
|
6 | captureEvent
|
7 | } = require(`gatsby-telemetry`);
|
8 | const redux = require(`./`);
|
9 | let saveInProgress = false;
|
10 | async function saveState() {
|
11 | if (saveInProgress) return;
|
12 | saveInProgress = true;
|
13 | const startTime = Date.now();
|
14 | try {
|
15 | await redux.saveState();
|
16 | } catch (err) {
|
17 | report.warn(`Error persisting state: ${err && err.message || err}`);
|
18 | }
|
19 | try {
|
20 | const duration = (Date.now() - startTime) / 1000;
|
21 | captureEvent(`INTERNAL_STATE_PERSISTENCE_DURATION`, {
|
22 | name: `Save Internal State`,
|
23 | duration: Math.round(duration)
|
24 | });
|
25 | } catch (err) {
|
26 | console.error(err);
|
27 | }
|
28 | saveInProgress = false;
|
29 | }
|
30 | module.exports = {
|
31 | saveState
|
32 | };
|
33 |
|
\ | No newline at end of file |