From 9431bc22a6977994964abada077b0fbdc104d26e Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Sat, 8 Feb 2020 16:36:29 -0500 Subject: [PATCH] Re-add package lock fix script m( --- package.json | 1 + scripts/fix-package-lock.js | 47 +++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 scripts/fix-package-lock.js diff --git a/package.json b/package.json index 8392bbd..ceaffcc 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "scripts": { "install-all": "./scripts/every-app.sh \"npm install\"", + "postshrinkwrap": "node scripts/fix-package-lock.js &>/dev/null || true", "build-json": "npm run compile-contracts && node ./scripts/build-json.js", "repl": "truffle exec scripts/repl.js", "seeds": "truffle exec scripts/seeds.js", diff --git a/scripts/fix-package-lock.js b/scripts/fix-package-lock.js new file mode 100644 index 0000000..bc0fd87 --- /dev/null +++ b/scripts/fix-package-lock.js @@ -0,0 +1,47 @@ +#!/usr/bin/env node + +// whatever npm does?! and for whatever this is needed.. +// https://github.com/aragon/aragon-cli/blob/master/packages/aragon-cli/scripts/fix-lockfile +// https://github.com/aragon/aragon-cli/blob/master/docs-internal/Dependencies.md#regenerate-the-lockfiles + +const fs = require('fs') +const path = require('path') + +function replaceAll(string, mapObject) { + const regex = new RegExp(Object.keys(mapObject).join('|'), 'gi') + let occurrences = 0 + const result = string.replace(regex, matched => { + occurrences++ + return mapObject[matched] + }) + console.log(`[fix-lockfile] Replaced ${occurrences} occurrences.`) + return result +} +async function fixLockfile(path, replacementMap) { + const originalJson = require(path) + const originalText = JSON.stringify(originalJson, null, 2) + const fixedText = replaceAll(originalText, replacementMap) + const fixedJson = JSON.parse(fixedText) + console.log('writing file', path); + await fs.writeFileSync(path, JSON.stringify(fixedJson, null, 2)) +} +// + +const LOCKFILE_PATH = path.join(__dirname, '..', 'package-lock.json') + +const replacementMap = { + // + '"version": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c"': + '"version": "0.2.3"', + // + '"from": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c"': + '"resolved": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c"', + // + '"from": "async-eventemitter@github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c"': + '"resolved": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c"', + // + '"async-eventemitter": "async-eventemitter@github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c"': + '"async-eventemitter": "github:ahultgren/async-eventemitter#fa06e39e56786ba541c180061dbf2c0a5bbf951c"', +} + +fixLockfile(LOCKFILE_PATH, replacementMap)