All files cxp-statics.js

100% Statements 25/25
100% Branches 2/2
100% Functions 9/9
100% Lines 19/19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60  1x 1x   1x                 1x 8x 8x 1x         7x     24x   8x           7x       15x   7x       7x     2x 4x 4x   1x   1x                
 
import path from 'path';
import { error } from '@bb-cli/base';
 
const DIR_MAP = {
  container: 'containers',
  contenttype: 'contenttypes',
  feature: 'features',
  page: 'pages',
  template: 'templates',
  widget: 'widgets',
};
 
const typeDir = (type) => {
  const dir = DIR_MAP[type];
  if (!dir) {
    throw error({
      type: 'E_UNKNOWN_ITEM_TYPE',
      message: `Unknown item type ${type}`,
    });
  }
  return dir;
};
 
const cxp5ItemPaths = ({ name, type, files, srcDir }, context) =>
  files.reduce((accum, file) => {
    accum[path.join(srcDir, file)] = path.join( // eslint-disable-line no-param-reassign
      typeDir(type),
      context,
      name,
      file
    );
    return accum;
  }, {});
 
 
const cxp6ItemPaths = ({ name, files, srcDir }) =>
  files.reduce((accum, file) => {
    accum[path.join(srcDir, file)] = path.join( // eslint-disable-line no-param-reassign
      name,
      file
    );
    return accum;
  }, {});
 
const packagePaths = (itemMap) => (items, context) =>
  items.map((item) => itemMap(item, context))
    .reduce((accum, paths) => Object.assign(accum, paths), {});
 
const cxp5Statics = packagePaths(cxp5ItemPaths);
 
const cxp6Statics = packagePaths(cxp6ItemPaths);
 
export {
  cxp5ItemPaths,
  cxp6ItemPaths,
  cxp5Statics,
  cxp6Statics,
};