Skip to content

Commit

Permalink
Merge pull request #20 from mAAdhaTTah/fix-peer-dep-order
Browse files Browse the repository at this point in the history
Fix ordering when rearranging
  • Loading branch information
mAAdhaTTah committed Jul 24, 2019
2 parents 5532bd5 + a2deef6 commit 199af33
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 11 deletions.
1 change: 0 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@ node_js:
- 6
- 8
- 10
- stable
39 changes: 29 additions & 10 deletions src/getComponents.js
Original file line number Diff line number Diff line change
Expand Up @@ -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') {
Expand All @@ -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));

Expand All @@ -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;
});
}
Expand Down
12 changes: 12 additions & 0 deletions test/fixtures/issue-19/expected.js
Original file line number Diff line number Diff line change
@@ -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";
15 changes: 15 additions & 0 deletions test/fixtures/issue-19/options.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"languages": [
"clike",
"bash",
"cpp",
"go",
"java",
"javascript",
"json",
"kotlin",
"shell",
"objectivec",
"swift"
]
}

0 comments on commit 199af33

Please sign in to comment.