From 8d627d938d83428ffe1e2d995e6c3f849b04e71b Mon Sep 17 00:00:00 2001 From: mAAdhaTTah Date: Wed, 24 Jul 2019 11:05:21 -0400 Subject: [PATCH 1/2] Update sorting algo to include require deps Fixes #19. --- src/getComponents.js | 39 +++++++++++++++++++++-------- test/fixtures/issue-19/expected.js | 12 +++++++++ test/fixtures/issue-19/options.json | 15 +++++++++++ 3 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 test/fixtures/issue-19/expected.js create mode 100644 test/fixtures/issue-19/options.json diff --git a/src/getComponents.js b/src/getComponents.js index 6f141be..5b9c879 100644 --- a/src/getComponents.js +++ b/src/getComponents.js @@ -33,6 +33,28 @@ const getName = (type, name) => { const getRequire = (type, name) => config[type][name].require; const getPeers = (type, name) => config[type][name].peerDependencies; const getNoCSS = (type, name) => config[type][name].noCSS; +const makeArray = element => + // eslint-disable-next-line eqeqeq + element != null && !Array.isArray(element) + ? [element] + : element; +const getAllDeps = (type, name) => { + const requires = makeArray(getRequire(type, name)); + const peers = makeArray(getPeers(type, name)); + if (requires && peers) { + return [...requires, ...peers]; + } + + if (requires) { + return requires; + } + + if (peers) { + return peers; + } + + return []; +}; const getTheme = theme => { if (theme === 'default') { @@ -49,11 +71,7 @@ const getDependencies = (type) => function getDependencies(deps, newDeps) { return deps; } - if (!Array.isArray(newDeps)) { - newDeps = [newDeps]; - } - - deps = newDeps.reduce((deps, dep) => { + deps = makeArray(newDeps).reduce((deps, dep) => { dep = getName(type, dep); deps = getDependencies(deps, getRequire(type, dep)); @@ -65,17 +83,18 @@ const getDependencies = (type) => function getDependencies(deps, newDeps) { }, deps); if (type === 'languages') { - deps.sort((a, b) => { - const aPeers = getPeers(type, a); - const bPeers = getPeers(type, b); + deps.sort((b, a) => { + const aPeers = getAllDeps(type, a); + const bPeers = getAllDeps(type, b); if (aPeers && aPeers.includes(b)) { - return 1; + return -1; } if (bPeers && bPeers.includes(a)) { - return -1; + return 1; } + return 0; }); } diff --git a/test/fixtures/issue-19/expected.js b/test/fixtures/issue-19/expected.js new file mode 100644 index 0000000..24b9036 --- /dev/null +++ b/test/fixtures/issue-19/expected.js @@ -0,0 +1,12 @@ +import Prism from "prismjs/components/prism-core"; +import "prismjs/components/prism-clike"; +import "prismjs/components/prism-swift"; +import "prismjs/components/prism-c"; +import "prismjs/components/prism-cpp"; +import "prismjs/components/prism-go"; +import "prismjs/components/prism-bash"; +import "prismjs/components/prism-javascript"; +import "prismjs/components/prism-json"; +import "prismjs/components/prism-kotlin"; +import "prismjs/components/prism-objectivec"; +import "prismjs/components/prism-java"; diff --git a/test/fixtures/issue-19/options.json b/test/fixtures/issue-19/options.json new file mode 100644 index 0000000..16de3b7 --- /dev/null +++ b/test/fixtures/issue-19/options.json @@ -0,0 +1,15 @@ +{ + "languages": [ + "clike", + "bash", + "cpp", + "go", + "java", + "javascript", + "json", + "kotlin", + "shell", + "objectivec", + "swift" + ] +} From a2deef633c9b4625f18812e660188d5eb61ddfab Mon Sep 17 00:00:00 2001 From: mAAdhaTTah Date: Wed, 24 Jul 2019 12:18:15 -0400 Subject: [PATCH 2/2] Remove stable from build matrix The sorting algo changed in Node 12, so we're going to remove it from the test matrix for now. --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 015e243..5911b74 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,4 +3,3 @@ node_js: - 6 - 8 - 10 - - stable