index.mjs 1.4 KB

123
  1. function addPreset(preset,presetOptions,{api,root}){let j=api.jscodeshift,moduleExports=[];root.find(j.AssignmentExpression).filter(assignment=>assignment.node.left.type==="MemberExpression"&&assignment.node.left.object.name==="module"&&assignment.node.left.property.name==="exports").forEach(exp=>moduleExports.push(exp));let exportArray=null;switch(moduleExports.length){case 0:{exportArray=j.arrayExpression([]);let exportStatement=j.assignmentStatement("=",j.memberExpression(j.identifier("module"),j.identifier("exports")),exportArray);root.get().node.program.body.push(exportStatement);break}case 1:exportArray=moduleExports[0].node.right;break;default:throw new Error("Multiple module export statements")}let presetConfig=j.literal(preset);if(presetOptions){let optionsJson=`const x = ${JSON.stringify(presetOptions)}`,optionsNode=j(optionsJson).find(j.VariableDeclarator).get().node.init;presetConfig=j.objectExpression([j.property("init",j.identifier("name"),j.literal(preset)),j.property("init",j.identifier("options"),optionsNode)]);}exportArray.elements.push(presetConfig);}var FRAMEWORKS=["angular","ember","html","preact","react","react-native","svelte","vue","web-components"],getFrameworks=({dependencies,devDependencies})=>{let allDeps={};return Object.assign(allDeps,dependencies||{}),Object.assign(allDeps,devDependencies||{}),FRAMEWORKS.filter(f=>!!allDeps[`@storybook/${f}`])};
  2. export { getFrameworks, addPreset as presetsAddPreset };