@kepi0809/gatsby-source-greenhouse
Version:
Gatsby source plugin for loading job posts from greenhouse.io
70 lines (57 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DepartmentNode = exports.JobPostNode = exports.OfficeNode = undefined;
var _gatsbyNodeHelpers = require("gatsby-node-helpers");
var _gatsbyNodeHelpers2 = _interopRequireDefault(_gatsbyNodeHelpers);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
var _createNodeHelpers = (0, _gatsbyNodeHelpers2.default)({
typePrefix: `Greenhouse`
});
const createNodeFactory = _createNodeHelpers.createNodeFactory,
generateNodeId = _createNodeHelpers.generateNodeId,
generateTypeName = _createNodeHelpers.generateTypeName;
const JOB_POST_TYPE = `JobPost`;
const OFFICE_TYPE = `Office`;
const DEPARTMENT_TYPE = `Department`;
const JOB_TYPE = `Job`;
const JobPostNode = (exports.JobPostNode = createNodeFactory(
JOB_POST_TYPE,
node => {
node.slug = slugify(node.title);
return node;
}
));
const OfficeNode = (exports.OfficeNode = createNodeFactory(
OFFICE_TYPE,
node => {
node.slug = slugify(node.name);
return node;
}
));
const JobNode = (exports.JobNode = createNodeFactory(JOB_TYPE, node => {
return node;
}));
function slugify(text) {
return text
.toString()
.toLowerCase()
.replace(/\s+/g, "-") // Replace spaces with -
.replace(/[^\w\-]+/g, "") // Remove all non-word chars
.replace(/\-\-+/g, "-") // Replace multiple - with single -
.replace(/^-+/, "") // Trim - from start of text
.replace(/-+$/, ""); // Trim - from end of text
}
const DepartmentNode = (exports.DepartmentNode = createNodeFactory(
DEPARTMENT_TYPE,
node => {
node.slug = slugify(node.name);
node.children = node.jobPosts.map(jobPost => {
return generateNodeId(JOB_POST_TYPE, jobPost.id);
});
return node;
}
));