Skip to content

Commit

Permalink
Fix npm-force-resolutions on npm7 by also patching the packages field…
Browse files Browse the repository at this point in the history
… on the new package-lock version
  • Loading branch information
rogeriochaves committed Feb 26, 2021
1 parent a3a98a9 commit 68cc61f
Show file tree
Hide file tree
Showing 5 changed files with 160 additions and 4 deletions.
59 changes: 59 additions & 0 deletions src/fixtures/npm7/package-lock.after.json
@@ -0,0 +1,59 @@
{
"name": "npm-force-resolutions",
"version": "0.0.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "npm-force-resolutions",
"version": "0.0.1",
"license": "MIT",
"dependencies": {
"boom": "^2.1.0"
}
},
"node_modules/boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).",
"dependencies": {
"hoek": "2.x.x"
},
"engines": {
"node": ">=0.10.40"
}
},
"node_modules/hoek": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
"deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).",
"engines": {
"node": ">=0.10.40"
}
}
},
"dependencies": {
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"requires": {
"hoek": "4.2.1"
},
"dependencies": {
"hoek": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
}
}
},
"hoek": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
}
}
}
52 changes: 52 additions & 0 deletions src/fixtures/npm7/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions src/fixtures/npm7/package.json
@@ -0,0 +1,16 @@
{
"name": "npm-force-resolutions",
"version": "0.0.1",
"description": "",
"main": "index.js",
"scripts": {},
"author": "",
"license": "MIT",
"dependencies": {
"boom": "^2.1.0"
},
"resolutions": {
"hoek": "4.2.1",
"webpack": "5.23.0"
}
}
19 changes: 16 additions & 3 deletions src/npm_force_resolutions/core.cljs
Expand Up @@ -129,10 +129,23 @@
(sort-or-remove-map "requires"))
(fix-existing-dependency resolutions key dependency)))

(defn remove-node-modules-path [key]
(string/replace key #".*node_modules/" ""))

(defn patch-all-dependencies [resolutions package-lock]
(update package-lock "dependencies"
(fn [dependencies]
(map-vals #(patch-dependency resolutions %1 %2) dependencies))))
(let [updated-dependencies
(update package-lock "dependencies"
(fn [dependencies]
(map-vals
#(patch-dependency resolutions %1 %2)
dependencies)))]
(if (get updated-dependencies "packages")
(update updated-dependencies "packages"
(fn [dependencies]
(map-vals
#(patch-dependency resolutions (remove-node-modules-path %1) %2)
dependencies)))
updated-dependencies)))

(defn update-package-lock [folder]
(go
Expand Down
18 changes: 17 additions & 1 deletion src/npm_force_resolutions/core_test.cljs
Expand Up @@ -8,7 +8,8 @@
patch-all-dependencies update-on-requires
add-dependencies update-package-lock
fix-existing-dependency fetch-resolved-resolution
get-registry-url build-dependency-from-dist]]))
get-registry-url build-dependency-from-dist
remove-node-modules-path]]))

(set! js/XMLHttpRequest XMLHttpRequest)

Expand Down Expand Up @@ -201,5 +202,20 @@
(get updated-package-lock "dependencies")))
(done)))))

(deftest test-remove-node-modules-path
(is (= (remove-node-modules-path "node_modules/@oclif/color/node_modules/chalk/node_modules/supports-color")
"supports-color")))

(deftest test-update-package-lock-packages-on-npm7
(async done
(go
(let [expected-package-lock (read-json "./src/fixtures/npm7/package-lock.after.json")
updated-package-lock (<! (update-package-lock "./src/fixtures/npm7"))]
(is (= (get expected-package-lock "dependencies")
(get updated-package-lock "dependencies")))
(is (= (get expected-package-lock "packages")
(get updated-package-lock "packages")))
(done)))))

(enable-console-print!)
(run-tests)

0 comments on commit 68cc61f

Please sign in to comment.