UNPKG

gatsby-source-smartrecruiters

Version:

Gatsby source plugin for loading job posts from smartrecruiters

45 lines (34 loc) 1.45 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.DepartmentNode = exports.JobPostNode = 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: `SmartRecruiters` }); const createNodeFactory = _createNodeHelpers.createNodeFactory, generateNodeId = _createNodeHelpers.generateNodeId, generateTypeName = _createNodeHelpers.generateTypeName; const JOB_POST_TYPE = `JobPost`; const DEPARTMENT_TYPE = `Department`; const JobPostNode = exports.JobPostNode = createNodeFactory(JOB_POST_TYPE, node => { node.slug = slugify(node.name); 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.label); node.children = node.jobPosts.map(jobPost => { return generateNodeId(JOB_POST_TYPE, jobPost.id); }); return node; });