Files
30-seconds-of-code/node_modules/gatsby/dist/utils/page-data.js
2019-08-20 15:52:05 +02:00

61 lines
1.3 KiB
JavaScript

"use strict";
const fs = require(`fs-extra`);
const path = require(`path`);
const Promise = require(`bluebird`);
const {
chunk
} = require(`lodash`);
const getFilePath = ({
publicDir
}, pagePath) => {
const fixedPagePath = pagePath === `/` ? `index` : pagePath;
return path.join(publicDir, `page-data`, fixedPagePath, `page-data.json`);
};
const read = async ({
publicDir
}, pagePath) => {
const filePath = getFilePath({
publicDir
}, pagePath);
const rawPageData = await fs.readFile(filePath, `utf-8`);
return JSON.parse(rawPageData);
};
const write = async ({
publicDir
}, page, result, webpackCompilationHash) => {
const filePath = getFilePath({
publicDir
}, page.path);
const body = {
componentChunkName: page.componentChunkName,
path: page.path,
matchPath: page.matchPath,
webpackCompilationHash,
result
};
await fs.outputFile(filePath, JSON.stringify(body));
};
const updateCompilationHashes = ({
publicDir,
workerPool
}, pagePaths, webpackCompilationHash) => {
const segments = chunk(pagePaths, 50);
return Promise.map(segments, segment => workerPool.updateCompilationHashes({
publicDir
}, segment, webpackCompilationHash));
};
module.exports = {
read,
write,
updateCompilationHashes
};
//# sourceMappingURL=page-data.js.map