UNPKG

1.12 kBJavaScriptView Raw
1const path = require('path');
2const Joi = require('joi');
3
4const IMPORTS_SCHEMA = Joi.alternatives().try(
5 Joi.string(),
6 Joi.object().keys({
7 value: Joi.string(),
8 path: Joi.string(),
9 })
10);
11
12const LAYOUT_SCHEMA = Joi.string();
13
14const OPTIONS_SCHEMA = Joi.object()
15 .keys({
16 loaders: Joi.object().keys({
17 js: Joi.func(),
18 mdx: Joi.func(),
19 }),
20 pagesPath: Joi.string(),
21 defaultImports: Joi.alternatives()
22 .try(IMPORTS_SCHEMA, Joi.array().items(IMPORTS_SCHEMA))
23 .optional(),
24 defaultLayout: LAYOUT_SCHEMA.optional(),
25 })
26 .unknown();
27
28module.exports = (pluginOptions = {}) => {
29 const options = Object.assign(
30 { pagesPath: path.resolve(process.cwd(), 'src/pages') },
31 pluginOptions
32 );
33
34 if (options.loaders == null) options.loaders = {};
35 if (options.loaders.js == null) options.loaders.js = () => undefined;
36 if (options.loaders.mdx == null) options.loaders.mdx = () => undefined;
37
38 const { error } = Joi.validate(options, OPTIONS_SCHEMA);
39 if (error) throw new Error(`Invalid gatsby-transformer-mdx options - ${error.toString()}`);
40
41 return options;
42};