@applitools/eyes-storybook
Version:
100 lines (91 loc) • 2.73 kB
JavaScript
const thirdPartyFrameworks = ['storybook-solidjs-vite', 'storybook-framework-qwik'];
const storybookFrameworks = [
'@storybook/angular',
'@storybook/ember',
'@storybook/html-vite',
'@storybook/nextjs-vite',
'@storybook/nextjs',
'@storybook/preact-vite',
'@storybook/react-native-web-vite',
'@storybook/react-vite',
'@storybook/react-webpack5',
'@storybook/server-webpack5',
'@storybook/svelte-vite',
'@storybook/sveltekit',
'@storybook/vue3-vite',
'@storybook/web-components-vite',
];
const storybookRenderers = [
'@storybook/html',
'@storybook/preact',
'@storybook/react',
'@storybook/server',
'@storybook/svelte',
'@storybook/vue3',
'@storybook/web-components',
];
// Superset list of frameworks (ignoring vite, webpack, kit, etc.)
const frameworksSuperset = [
'angular',
'ember',
'html',
'nextjs',
'preact',
'react',
'react-native-web',
'server',
'svelte',
'sveltekit',
'vue3',
'web-components',
'solidjs',
'qwik',
];
const mapFrameworksToSuperset = {
'@storybook/angular': 'angular',
'@storybook/ember': 'ember',
'@storybook/html-vite': 'html',
'@storybook/nextjs-vite': 'nextjs',
'@storybook/nextjs': 'nextjs',
'@storybook/preact-vite': 'preact',
'@storybook/react-native-web-vite': 'react-native-web',
'@storybook/react-vite': 'react',
'@storybook/react-webpack5': 'react',
'@storybook/server-webpack5': 'server',
'@storybook/svelte-vite': 'svelte',
'@storybook/sveltekit': 'sveltekit',
'@storybook/vue3-vite': 'vue3',
'@storybook/web-components-vite': 'web-components',
'@storybook/html': 'html',
'@storybook/preact': 'preact',
'@storybook/react': 'react',
'@storybook/server': 'server',
'@storybook/svelte': 'svelte',
'@storybook/vue3': 'vue3',
'@storybook/web-components': 'web-components',
'storybook-solidjs-vite': 'solidjs',
'storybook-framework-qwik': 'qwik',
};
const reduceFrameworks = fw => {
const reducedSet = new Set();
fw.forEach(element => {
const mapped = mapFrameworksToSuperset[element];
if (mapped) reducedSet.add(mapped);
});
return Array.from(reducedSet);
};
const frameworksSet = new Set([
...thirdPartyFrameworks,
...storybookFrameworks,
...storybookRenderers,
]);
function getStorybookFrameworks(dependencies = {}, devDependencies = {}, peerDependencies = {}) {
const allDeps = Object.assign({}, dependencies, devDependencies, peerDependencies);
const dependencyFrameworks = Object.keys(allDeps).filter(dep => frameworksSet.has(dep));
const superSet = reduceFrameworks(dependencyFrameworks);
return {frameworksCommaSeparated: superSet.join(','), dependencyFrameworks};
}
module.exports = {
frameworksSuperset,
getStorybookFrameworks,
};