Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async create(filePath) {
const shouldCreate = !this.pages[filePath];
if (shouldCreate) {
this.pages[filePath] = true;
const componentPath = path.join(this.pagesDirectory, filePath);
const content = await readFile(componentPath);
const { data: frontmatter } = grayMatter(content);
this.createPage({
path: createPath(filePath),
component: componentPath,
context: frontmatter,
});
}
}
this.store.getState().pages.forEach(page => {
if (page.component === componentPath) {
this.deletePage({
path: createPath(filePath),
component: componentPath,
});
}
});
this.pages[filePath] = undefined;
module.exports = async ({ store, actions }, pluginOptions) => {
const { pagesPath } = getOptions(pluginOptions);
const { createPage, deletePage } = actions;
const pagesDirectory = path.resolve(process.cwd(), pagesPath);
const pagesGlob = '**/*.mdx';
const pageCreator = new PageCreator({ pagesDirectory, store, createPage, deletePage });
const files = await glob(pagesGlob, { cwd: pagesPath });
await Promise.all(files.map(file => pageCreator.create(file)));
await watchDirectory(
pagesPath,
pagesGlob,
addedPath => pageCreator.create(addedPath),
removedPath => pageCreator.remove(removedPath)
);
};