Socket
Socket
Sign inDemoInstall

release-assist

Package Overview
Dependencies
39
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.1 to 1.0.2

LICENSE

10

bin.js
#!/usr/bin/env node
const program = require('commander');
const api = require('./index.js');
const program = require("commander");
const api = require("./index.js");
program
.version(require('./package.json').version)
.option('-s, --start', 'start release process')
.option('-f, --finish', 'finish release process')
.version(require("./package.json").version)
.option("-s, --start", "start release process")
.option("-f, --finish", "finish release process")
.parse(process.argv);

@@ -11,0 +11,0 @@

@@ -0,5 +1,11 @@

# 1.0.2 (2018-06-14)
- Fix for newer versions of git
# 1.0.1 (2016-12-19)
- Minor improvements in messaging
# 1.0.0 (2016-12-17)
- Initial release

@@ -1,7 +0,7 @@

const releaseStart = require('./lib/release_start');
const releaseFinish = require('./lib/release_finish');
const releaseStart = require("./lib/release_start");
const releaseFinish = require("./lib/release_finish");
module.exports = {
start: releaseStart,
finish: releaseFinish,
finish: releaseFinish
};

@@ -1,6 +0,6 @@

const jetpack = require('fs-jetpack');
const jetpack = require("fs-jetpack");
const changelogFilename = 'CHANGELOG.md';
const changelogFilename = "CHANGELOG.md";
const formatDate = (date) => {
const formatDate = date => {
const year = date.getFullYear().toString();

@@ -22,3 +22,3 @@ let month = (date.getMonth() + 1).toString();

if (typeof changelog !== 'string') {
if (typeof changelog !== "string") {
return newEntryStr;

@@ -30,3 +30,3 @@ }

const insertNewRelease = (newEntry) => {
const insertNewRelease = newEntry => {
const txt = jetpack.read(changelogFilename);

@@ -37,22 +37,24 @@ const newTxt = insert(txt, newEntry);

const parseChangelog = (changelog) => {
const lines = changelog.split('\n');
const parseChangelog = changelog => {
const lines = changelog.split("\n");
const entries = [];
const isHeading = (line) => {
const isHeading = line => {
return /^#/.test(line);
};
const parseHeading = (headingText) => {
const parseHeading = headingText => {
const version = /\d+\.\d+\.\d+/.exec(headingText)[0];
const dateStr = /\d+-\d+-\d+/.exec(headingText)[0];
const dateParts = dateStr.split('-').map(date => parseInt(date, 10));
const dateParts = dateStr.split("-").map(part => {
return parseInt(part);
});
const date = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);
return {
version,
date,
date
};
};
const getPositionOfNextHeading = (position) => {
const getPositionOfNextHeading = position => {
const line = lines[position];

@@ -68,10 +70,10 @@ if (line === undefined) {

const collectTextOfRelease = (position) => {
const collectTextOfRelease = position => {
const start = position;
const end = getPositionOfNextHeading(position);
const textLines = lines.slice(start, end);
return textLines.join('\n').trim();
return textLines.join("\n").trim();
};
const readNextEntry = (position) => {
const readNextEntry = position => {
const headingPosition = getPositionOfNextHeading(position);

@@ -93,3 +95,5 @@ if (headingPosition !== undefined) {

const changelogEntries = parseChangelog(changelog);
const release = changelogEntries.find(entry => entry.version === version);
const release = changelogEntries.find(entry => {
return entry.version === version;
});

@@ -103,3 +107,3 @@ if (!release) {

const extractRelease = (version) => {
const extractRelease = version => {
const txt = jetpack.read(changelogFilename);

@@ -114,3 +118,3 @@ return extract(txt, version);

extract,
extractRelease,
extractRelease
};

@@ -1,5 +0,5 @@

const childProcess = require('child_process');
const log = require('./log');
const childProcess = require("child_process");
const log = require("./log");
const execute = (cmd) => {
const execute = cmd => {
return new Promise((resolve, reject) => {

@@ -17,7 +17,7 @@ childProcess.exec(cmd, (error, stdout) => {

const getCurrentBranch = () => {
return execute('git rev-parse --abbrev-ref HEAD');
return execute("git rev-parse --abbrev-ref HEAD");
};
const ensureCurrentBranchIs = (name) => {
return getCurrentBranch().then((currentBranch) => {
const ensureCurrentBranchIs = name => {
return getCurrentBranch().then(currentBranch => {
if (currentBranch !== name) {

@@ -30,5 +30,7 @@ throw new Error(`You're not on the "${name}" branch`);

const ensureNoUncommitedChanges = () => {
return execute('git status').then((stdout) => {
if (!stdout.includes('nothing to commit')) {
throw new Error('You have uncommited changes, commit them before we can proceed');
return execute("git status").then(stdout => {
if (!stdout.includes("nothing to commit")) {
throw new Error(
"You have uncommited changes, commit them before we can proceed"
);
}

@@ -39,5 +41,5 @@ });

const ensureThereIsSomethingToCommit = () => {
return execute('git status').then((stdout) => {
if (stdout.includes('nothing to commit')) {
throw new Error('There are no file changes to be commited as a release');
return execute("git status").then(stdout => {
if (stdout.includes("nothing to commit")) {
throw new Error("There are no file changes to be commited as a release");
}

@@ -48,21 +50,27 @@ });

const ensureRepoInSyncWithOrigin = () => {
const task = log.taskStart('Ensuring your local repo is in sync with origin');
return execute('git fetch').then(() => {
return execute('git status');
}).then((stdout) => {
if (!stdout.includes('Your branch is up-to-date')) {
task.fail();
throw new Error('Your local branch is not in sync with origin. Do "git pull" and/or "git push" first.');
}
task.done();
});
const task = log.taskStart("Ensuring your local repo is in sync with origin");
return execute("git fetch")
.then(() => {
return execute("git status");
})
.then(stdout => {
if (/Your branch is up.to.date/.test(stdout) === false) {
task.fail();
throw new Error(
'Your local branch is not in sync with origin. Do "git pull" and/or "git push" first.'
);
}
task.done();
});
};
const getRecentCommitMessages = () => {
return execute('git log --since=12.months --pretty=format:"%s"').then((stdout) => {
return stdout.split('\n');
});
return execute('git log --since=12.months --pretty=format:"%s"').then(
stdout => {
return stdout.split("\n");
}
);
};
const isReleaseCommit = (commitMessage) => {
const isReleaseCommit = commitMessage => {
return /^\d+\.\d+\.\d+$/.test(commitMessage);

@@ -72,3 +80,3 @@ };

const getCommitMessagesSinceLastRelease = () => {
return getRecentCommitMessages().then((commits) => {
return getRecentCommitMessages().then(commits => {
const indexOfLastReleaseCommit = commits.findIndex(isReleaseCommit);

@@ -79,21 +87,21 @@ return commits.slice(0, indexOfLastReleaseCommit);

const commitRelease = (version) => {
const task = log.taskStart('Commiting and pushing release to origin');
return execute('git add .')
.then(() => {
return execute(`git commit -m "${version}"`);
})
.then(() => {
return execute('git push origin master');
})
.then(task.done);
const commitRelease = version => {
const task = log.taskStart("Commiting and pushing release to origin");
return execute("git add .")
.then(() => {
return execute(`git commit -m "${version}"`);
})
.then(() => {
return execute("git push origin master");
})
.then(task.done);
};
const tagRelease = (version, changes) => {
const task = log.taskStart('Tagging the release');
const task = log.taskStart("Tagging the release");
return execute(`git tag -a ${version} -m "${changes}"`)
.then(() => {
return execute(`git push origin ${version}`);
})
.then(task.done);
.then(() => {
return execute(`git push origin ${version}`);
})
.then(task.done);
};

@@ -109,3 +117,3 @@

commitRelease,
tagRelease,
tagRelease
};

@@ -1,12 +0,24 @@

const chalk = require('chalk');
const chalk = require("chalk");
const taskStart = (str) => {
const log = str => {
console.log(str);
};
const logSuccess = str => {
log(chalk.green(str));
};
const logFailure = str => {
log(chalk.red(str));
};
const taskStart = str => {
process.stdout.write(`${str} `);
return {
done() {
console.log(chalk.green('(done)'));
logSuccess("(done)");
},
fail() {
console.log(chalk.red('(failed)'));
},
logFailure("(failed)");
}
};

@@ -16,3 +28,6 @@ };

module.exports = {
taskStart,
normal: log,
success: logSuccess,
failure: logFailure,
taskStart
};

@@ -1,9 +0,9 @@

const jetpack = require('fs-jetpack');
const jetpack = require("fs-jetpack");
const getPackage = () => {
return jetpack.read('package.json', 'json');
return jetpack.read("package.json", "json");
};
const writePackage = (newContent) => {
jetpack.write('package.json', newContent);
const writePackage = newContent => {
jetpack.write("package.json", newContent);
};

@@ -15,3 +15,3 @@

const setVersion = (newVersion) => {
const setVersion = newVersion => {
const pkg = getPackage();

@@ -27,6 +27,6 @@ pkg.version = newVersion;

}
return Object.keys(scripts).map((key) => {
return Object.keys(scripts).map(key => {
return {
name: key,
value: scripts[key],
value: scripts[key]
};

@@ -39,3 +39,3 @@ });

setVersion,
getScripts,
getScripts
};

@@ -1,5 +0,5 @@

const chalk = require('chalk');
const git = require('./git');
const packageJson = require('./package_json');
const changelog = require('./changelog');
const git = require("./git");
const log = require("./log");
const packageJson = require("./package_json");
const changelog = require("./changelog");

@@ -9,17 +9,18 @@ module.exports = () => {

git.ensureCurrentBranchIs('master')
.then(git.ensureThereIsSomethingToCommit)
.then(() => {
return git.commitRelease(versionOfRelease);
})
.then(() => {
const releaseChanges = changelog.extractRelease(versionOfRelease);
return git.tagRelease(versionOfRelease, releaseChanges.text);
})
.then(() => {
console.log(chalk.green(`Release ${versionOfRelease} done!`));
})
.catch((err) => {
console.log(chalk.red(err.message));
});
git
.ensureCurrentBranchIs("master")
.then(git.ensureThereIsSomethingToCommit)
.then(() => {
return git.commitRelease(versionOfRelease);
})
.then(() => {
const releaseChanges = changelog.extractRelease(versionOfRelease);
return git.tagRelease(versionOfRelease, releaseChanges.text);
})
.then(() => {
log.success(`Release ${versionOfRelease} done!`);
})
.catch(err => {
log.failure(err.message);
});
};

@@ -1,11 +0,11 @@

const chalk = require('chalk');
const git = require('./git');
const version = require('./version');
const changelog = require('./changelog');
const packageJson = require('./package_json');
const git = require("./git");
const log = require("./log");
const version = require("./version");
const changelog = require("./changelog");
const packageJson = require("./package_json");
const finishCommand = () => {
// Check if release-assist is integrated into the repository or used via global installation.
let cmd = 'release-assist --finish';
packageJson.getScripts().forEach((script) => {
let cmd = "release-assist --finish";
packageJson.getScripts().forEach(script => {
if (/^release-assist.*-f/.test(script.value)) {

@@ -19,25 +19,35 @@ cmd = `npm run ${script.name}`;

module.exports = () => {
git.ensureCurrentBranchIs('master')
.then(git.ensureNoUncommitedChanges)
.then(git.ensureRepoInSyncWithOrigin)
.then(version.askForNewVersion)
.then((newVersion) => {
return git.getCommitMessagesSinceLastRelease()
.then((commits) => {
const commitsAsBullets = commits.map(commit => `- ${commit}`).join('\n');
const now = new Date();
changelog.insertNewRelease({
version: newVersion,
date: now,
text: commitsAsBullets,
git
.ensureCurrentBranchIs("master")
.then(git.ensureNoUncommitedChanges)
.then(git.ensureRepoInSyncWithOrigin)
.then(version.askForNewVersion)
.then(newVersion => {
return git.getCommitMessagesSinceLastRelease().then(commits => {
const commitsAsBullets = commits
.map(commit => {
return `- ${commit}`;
})
.join("\n");
const now = new Date();
changelog.insertNewRelease({
version: newVersion,
date: now,
text: commitsAsBullets
});
});
})
.then(() => {
log.success(
`Release draft ready! Check out new entry in ${
changelog.changelogFilename
} and give it a final touch.`
);
log.success(
`When you're done, don't commit the changes on your own. Run command "${finishCommand()}" and we'll do it for you.`
);
})
.catch(err => {
log.failure(err.message);
});
})
.then(() => {
console.log(chalk.green(`Release draft ready! Check out new entry in ${changelog.changelogFilename} and give it a final touch.`));
console.log(chalk.green(`When you're done, don't commit the changes on your own. Run command "${finishCommand()}" and we'll do it for you.`));
})
.catch((err) => {
console.log(chalk.red(err.message));
});
};

@@ -1,42 +0,46 @@

const inquirer = require('inquirer');
const semver = require('semver');
const git = require('./git');
const packageJson = require('./package_json');
const inquirer = require("inquirer");
const semver = require("semver");
const git = require("./git");
const log = require("./log");
const packageJson = require("./package_json");
const askForNewVersion = () => {
return git.getCommitMessagesSinceLastRelease()
.then((commits) => {
console.log('');
console.log('Commits since last release:');
console.log('');
commits.forEach((commit) => {
console.log(`- ${commit}`);
return git.getCommitMessagesSinceLastRelease().then(commits => {
log.normal("");
log.normal("Commits since last release:");
log.normal("");
commits.forEach(commit => {
log.normal(`- ${commit}`);
});
console.log('');
log.normal("");
const currentVersion = packageJson.getVersion();
return inquirer.prompt([{
type: 'list',
name: 'releaseType',
message: 'Choose new version for the package, above you see all commit messages since last release to help you decide.',
choices: [
return inquirer
.prompt([
{
name: `${semver.inc(currentVersion, 'patch')} (patch)`,
value: 'patch',
},
{
name: `${semver.inc(currentVersion, 'minor')} (minor)`,
value: 'minor',
},
{
name: `${semver.inc(currentVersion, 'major')} (major)`,
value: 'major',
},
],
}])
.then((answer) => {
const newVersion = semver.inc(currentVersion, answer.releaseType);
packageJson.setVersion(newVersion);
return newVersion;
});
type: "list",
name: "releaseType",
message:
"Choose new version for the package, above you see all commit messages since last release to help you decide.",
choices: [
{
name: `${semver.inc(currentVersion, "patch")} (patch)`,
value: "patch"
},
{
name: `${semver.inc(currentVersion, "minor")} (minor)`,
value: "minor"
},
{
name: `${semver.inc(currentVersion, "major")} (major)`,
value: "major"
}
]
}
])
.then(answer => {
const newVersion = semver.inc(currentVersion, answer.releaseType);
packageJson.setVersion(newVersion);
return newVersion;
});
});

@@ -46,3 +50,3 @@ };

module.exports = {
askForNewVersion,
askForNewVersion
};
{
"name": "release-assist",
"version": "1.0.1",
"version": "1.0.2",
"description": "Helps you releasing new versions of your node.js and frontend projects",
"main": "index.js",
"bin": "bin.js",
"scripts": {
"test": "mocha --recursive \"spec/**/*.spec.js\"",
"lint": "eslint ."
},
"pre-commit": [
"test",
"lint"
],
"dependencies": {
"chalk": "^1.1.3",
"chalk": "^2.4.1",
"commander": "^2.9.0",
"fs-jetpack": "^0.10.5",
"inquirer": "^2.0.0",
"fs-jetpack": "^1.3.0",
"inquirer": "^6.0.0",
"semver": "^5.3.0"
},
"devDependencies": {
"chai": "^3.5.0",
"eslint": "^3.12.0",
"eslint-config-airbnb-base": "^9.0.0",
"eslint-plugin-import": "^2.2.0",
"mocha": "^3.2.0",
"pre-commit": "^1.2.0"
"chai": "^4.1.2",
"lint-staged": "^7.2.0",
"mocha": "^5.2.0",
"pre-commit": "^1.2.2",
"prettier": "^1.13.5"
},
"scripts": {
"test": "mocha --recursive \"spec/**/*.spec.js\"",
"prettier": "prettier --write \"./**/*.{js,json,md}\"",
"lint-staged": "lint-staged"
},
"lint-staged": {
"*.{js,json,md}": [
"prettier --write",
"git add"
]
},
"pre-commit": [
"lint-staged",
"test"
],
"repository": {

@@ -44,2 +50,2 @@ "type": "git",

"homepage": "https://github.com/szwacz/release-assist#readme"
}
}

@@ -6,2 +6,3 @@ # release-assist

You may consider using it if...
- You're maintaining any node.js or frontend project.

@@ -16,2 +17,3 @@ - That project uses git.

Install it globally:
```

@@ -22,6 +24,9 @@ npm install -g release-assist

Or if you're like me and doesn't like any globally installed crap, add it directly to the project:
```
npm install --save-dev release-assist
```
And expose the scripts via `package.json` file:
```json

@@ -46,5 +51,5 @@ {

1. Do checks that your local repository is on correct branch and in sync with origin repository, so you know no mistake happened and you didn't miss any commits done by your teammates.
2. Will ask you for new version number.
3. Will prepare new release entry in `CHANGELOG.md` with commit messages since the last release.
1. Do checks that your local repository is on correct branch and in sync with origin repository, so you know no mistake happened and you didn't miss any commits done by your teammates.
2. Will ask you for new version number.
3. Will prepare new release entry in `CHANGELOG.md` with commit messages since the last release.

@@ -58,7 +63,8 @@ The changelog state release-assist left you with is most probably not final, but now your job of manually editing the changelog to give it the final form is much simpler.

```
This will:
1. Commit the changes as a release (with new version as commit message).
2. Create git tag for the new release.
3. Push release and newly created tag to origin repository.
1. Commit the changes as a release (with new version as commit message).
2. Create git tag for the new release.
3. Push release and newly created tag to origin repository.

@@ -69,12 +75,8 @@ Done! The release is ready. It took 60 seconds instead of 5 minutes, and you're sure that freakin' version tag has been pushed to origin and remembering about pushing it didn't slip your mind 4th time this month.

1. This tool expects the changelog file to be named `CHANGELOG.md`, if your is called differently you need to change the name (or subit a github issue to see what we can do).
2. This tool expects that `CHANGELOG.md` have very specific structure (after all the script must be able to parse this file). See changelog of this project as an example. Parsing script expects release header to be in format `# version (YYYY-MM-DD)` below the header everything is treated as release description until next header is spotted.
3. The release commit need to have commit message `x.x.x` (just the version number) if you have given those commits different messages in the past then release-assist won't be able to find previous release and fill changelog with all commits of your project, but this will happen only once (for the first release done with release-assist), after that everything will be working as intended.
1. This tool expects the changelog file to be named `CHANGELOG.md`, if your is called differently you need to change the name (or subit a github issue to see what we can do).
2. This tool expects that `CHANGELOG.md` have very specific structure (after all the script must be able to parse this file). See changelog of this project as an example. Parsing script expects release header to be in format `# version (YYYY-MM-DD)` below the header everything is treated as release description until next header is spotted.
3. The release commit need to have commit message `x.x.x` (just the version number) if you have given those commits different messages in the past then release-assist won't be able to find previous release and fill changelog with all commits of your project, but this will happen only once (for the first release done with release-assist), after that everything will be working as intended.
# License (ISC)
# License
Copyright (c) 2016, Jakub Szwacz
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Released under the ISC license.

@@ -1,57 +0,56 @@

/* eslint-env mocha */
const expect = require("chai").expect;
const changelog = require("../lib/changelog");
const expect = require('chai').expect;
const changelog = require('../lib/changelog');
describe('changelog utils', () => {
it('can start new changelog', () => {
describe("changelog utils", () => {
it("can start new changelog", () => {
const txt = changelog.insert(undefined, {
version: '1.0.0',
version: "1.0.0",
date: new Date(2016, 4, 3),
text: 'foo',
text: "foo"
});
expect(txt).to.eql('# 1.0.0 (2016-05-03)\nfoo\n');
expect(txt).to.eql("# 1.0.0 (2016-05-03)\nfoo\n");
});
it('can insert releases into changelog', () => {
it("can insert releases into changelog", () => {
let changelogText = changelog.insert(undefined, {
version: '1.0.0',
version: "1.0.0",
date: new Date(2016, 4, 3),
text: 'foo',
text: "foo"
});
changelogText = changelog.insert(changelogText, {
version: '1.0.1',
version: "1.0.1",
date: new Date(2016, 4, 4),
text: 'bar',
text: "bar"
});
expect(changelogText).to.eql('# 1.0.1 (2016-05-04)\nbar\n\n# 1.0.0 (2016-05-03)\nfoo\n');
expect(changelogText).to.eql(
"# 1.0.1 (2016-05-04)\nbar\n\n# 1.0.0 (2016-05-03)\nfoo\n"
);
});
it('can extract release data from changelog', () => {
const txt = '# 1.1.1 (2016-03-04)\n'
+ '-foo\n'
+ '-bar\n'
+ '\n'
+ '# 1.0.1 (2015-02-03)\n'
+ '-123\n'
+ '\n'
+ '# 1.0.0 (2014-01-02)\n'
+ '-qwe\n'
+ '-rty\n';
expect(changelog.extract(txt, '1.1.1')).to.eql({
version: '1.1.1',
it("can extract release data from changelog", () => {
const txt =
"# 1.1.1 (2016-03-04)\n" +
"-foo\n" +
"-bar\n" +
"\n" +
"# 1.0.1 (2015-02-03)\n" +
"-123\n" +
"\n" +
"# 1.0.0 (2014-01-02)\n" +
"-qwe\n" +
"-rty\n";
expect(changelog.extract(txt, "1.1.1")).to.eql({
version: "1.1.1",
date: new Date(2016, 2, 4),
text: '-foo\n'
+ '-bar',
text: "-foo\n" + "-bar"
});
expect(changelog.extract(txt, '1.0.1')).to.eql({
version: '1.0.1',
expect(changelog.extract(txt, "1.0.1")).to.eql({
version: "1.0.1",
date: new Date(2015, 1, 3),
text: '-123',
text: "-123"
});
expect(changelog.extract(txt, '1.0.0')).to.eql({
version: '1.0.0',
expect(changelog.extract(txt, "1.0.0")).to.eql({
version: "1.0.0",
date: new Date(2014, 0, 2),
text: '-qwe\n'
+ '-rty',
text: "-qwe\n" + "-rty"
});

@@ -61,10 +60,7 @@ });

it("throws if can't find given version in changelog", () => {
const txt = '# 1.1.1 (2016-03-04)\n'
+ '\n'
+ '-foo\n'
+ '-bar\n';
const txt = "# 1.1.1 (2016-03-04)\n" + "\n" + "-foo\n" + "-bar\n";
expect(() => {
changelog.extract(txt, '1.1.0');
changelog.extract(txt, "1.1.0");
}).to.throw("Can't find release version 1.1.0 in the changelog");
});
});

@@ -1,19 +0,17 @@

/* eslint-env mocha */
const expect = require("chai").expect;
const jetpack = require("fs-jetpack");
const packageJson = require("../lib/package_json");
const expect = require('chai').expect;
const jetpack = require('fs-jetpack');
const packageJson = require('../lib/package_json');
describe('package.json utils', () => {
it('can give version', () => {
const version = jetpack.read('package.json', 'json').version;
describe("package.json utils", () => {
it("can give version", () => {
const version = jetpack.read("package.json", "json").version;
expect(packageJson.getVersion()).to.eql(version);
});
it('can list scripts', () => {
const scripts = jetpack.read('package.json', 'json').scripts;
const parsedScripts = Object.keys(scripts).map((key) => {
it("can list scripts", () => {
const scripts = jetpack.read("package.json", "json").scripts;
const parsedScripts = Object.keys(scripts).map(key => {
return {
name: key,
value: scripts[key],
value: scripts[key]
};

@@ -20,0 +18,0 @@ });

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc