2018-09-30 10:37:19 +00:00
|
|
|
const { createChallengeNodes } = require('./create-Challenge-nodes');
|
|
|
|
|
|
|
|
exports.sourceNodes = ({ actions, reporter }, pluginOptions) => {
|
|
|
|
if (typeof pluginOptions.source !== 'function') {
|
|
|
|
reporter.panic(`
|
|
|
|
"source" is a required option for fcc-source-challenges. It must be a function
|
|
|
|
that delivers challenge files to the plugin
|
|
|
|
`);
|
|
|
|
}
|
|
|
|
// TODO: Add live seed updates
|
|
|
|
const { createNode } = actions;
|
|
|
|
|
|
|
|
const { source } = pluginOptions;
|
2018-10-04 13:47:55 +00:00
|
|
|
return source()
|
|
|
|
.then(challenges =>
|
2018-09-30 10:37:19 +00:00
|
|
|
challenges
|
|
|
|
.filter(challenge => challenge.superBlock !== 'Certificates')
|
|
|
|
.map(challenge => createChallengeNodes(challenge, reporter))
|
2018-10-04 13:47:55 +00:00
|
|
|
.map(node => createNode(node))
|
|
|
|
)
|
|
|
|
.catch(e =>
|
2018-10-04 14:15:50 +00:00
|
|
|
reporter.panic(`fcc-source-challenges
|
2018-09-30 10:37:19 +00:00
|
|
|
|
2018-10-04 13:47:55 +00:00
|
|
|
${e.message}
|
2018-09-30 10:37:19 +00:00
|
|
|
|
2018-10-04 13:47:55 +00:00
|
|
|
`)
|
|
|
|
);
|
2018-09-30 10:37:19 +00:00
|
|
|
};
|