Helps you write libraries that accept both promises and callbacks.

Overview

Build Status Coverage Status semantic-release

What is it?

promise-breaker makes it easy to write functions that will accept an optional callback, or return a Promise if a callback is not provided. You can use callbacks or Promises in your implementation, and callers can call with either a callback or expect a Promise. It's a library that makes it easy to write libraries for others.

Installation

npm install --save promise-breaker

Requirements

This library assumes that Promise is a defined global variable. If this is not the case on your platform, you can use a polyfill:

npm install --save es6-promise

Then somewhere in your node.js application:

if(!global.Promise) {
    global.Promise = require('es6-promise').Promise;
}

Or in your client-side app:

if(!window.Promise) {
    window.Promise = require('es6-promise').Promise;
}

If you don't want to set the global, you can pass an optional Promise implementation to promise-breaker:

var MyPromise = require('es6-promise').Promise;
promiseBreaker = require('promise-breaker').withPromise(MyPromise);

Summary

With the growing popularity of Promises these days, if you're a library author, it's nice to be able to provide your clients with a library that will take an optional callback, and if the callback isn't provided, return a Promise. If you've ever tried to do this, you know that there's a lot of finicky boilerplate involved in every function you write. Providing callback support is also pretty important if you prefer to write your library using Promises internally.

'promise-breaker' makes this really easy. If you prefer writing in callback style:

export function myFunc(done=null) {
    return pb.addPromise(done, done => // Add this wrapper around your async function
        doThing((err, thing) => {
            if(err) {return done(err);}
            doOtherThing(thing, (err, otherThing) => {
                if(err) {return done(err);}
                done(null, otherThing);
            });
        });
    );
}

or if you prefer Promise style:

export function myFunc(done=null) {
    return pb.addCallback(done, // Add this wrapper around your returned Promise.
        doThing()
        .then(result => doOtherThing(result))
    );
}

If you're using arrow functions or using commonjs exports, it's even easier to use promise-breaker to create functions that generate a Promise or accept a callback:

// Both of these will take an optional `done`, and if not provided return a Promise.
exports.myPromiseFunc = pb.break({args: 0}, () => {
    return Promise.resolve("Hello World");
});

exports.myCbFunc = pb.make({args: 1}, done => {
    done(null, "Hello World");
});

The names make() and break() here come from the idea that you are making a callback into a promise, or breaking a promise down into a callback. Note that make() and break() rely on the .length of the function you pass in. In ES6, default parameters do not count towards the length of the function, so you need to explicitly tell promise-breaker how many parameters are expected in the args parameter. If you're not using default arguments, you can omit the options parameter altogether, but this is a bad habit, as promise-breaker unfortunately has no way to detect if you get it wrong.

The other thing you often want to do when writing a library is call into a function without knowing whether it returns a promise or expects a callback. Again, promise-breaker makes this easy:

export function doStuff(fn) {
    // This works just like `fn.call` except it will add a `done` if `fn.length` is bigger than the parameter count.
    // So here, this will either call `fn("hello world")` and get back a Promise or `fn("hello world", done)` and
    // convert the callback into a Promise for you.
    pb.call(fn, null, "hello world")
    .catch(err => console.log(err));
}

Or, in callback style:

export function doStuff(fn) {
    pb.callWithCb(fn, null, "hello world", err => {
        if(err) return console.log(err);
    });
}

API

pb.make([options,] fn)

  • options.args - In ES6, default parameters do not count towards a functions .length. If your fn uses default parameters, you must specify the total parameter count in args. E.g.: const myFn = pb.make({args: 2}, (x, y=null) => ...); If you do not specify args, then promise-breaker will use fn.length instead.

make() takes a function which accepts a callback(err, result) as its last parameter, and returns a new function which accepts an optional callback as its last parameter. If a callback is provided, this new function will behave exactly like the original function. If the callback is not provided, then the new function will return a Promise.

Since Promises only allow a single value to be returned, if fn passes more than two arguments to callback(...), then (as of v3.0.0) any arguments after the error will be transformed into an array and returned via the Promise as a single combined argument. This does not affect the case where the transformed function is called with a callback.

For example:

var myFunc = pb.make(function(callback) {
    // We're returning multiple values via callback
    callback(null, "a", "b");
})

// Callback style
myFunc(function(err, a, b) {...});

// Promise style
myFunc()
.then(function(results) {
    // Promises only let us return a single value, so we return an array.
    var a = results[0];
    var b = results[1];
    ...
})
.catch(function(err) {...});

pb.break([options,] fn)

  • options.args - In ES6, default parameters do not count towards a functions .length. If your fn uses default parameters, you must specify the total parameter count in args. E.g.: const myFn = pb.break({args: 3}, (x, y=null, done=null) => ...); If you do not specify args, then promise-breaker will use fn.length instead.

break(fn) is the opposite of make(fn). fn here is a function which returns a Promise. break(fn) will generate a new function with an extra parameter, an optional callback(err, result). If no callback is provided, the generated function will behave exactly like the original function. If a callback is provided, then the generated function will return null, and will pass any results that would have been returned via the Promise via the callback instead.

addPromise(done, fn)

Used to add Promise support to a callback-based function.

Calls fn(cb). If done is provided, it is passed directly as cb and addPromise returns undefined. If done is not provided, addPromise will generate an appropriate callback and return a Promise. If fn is called with more than two arguments (with multiple results, in other words) then the Promise will resolve to an array of results.

Use it like this:

export function addAsync(x, y, done=null) {
    return pb.addPromise(done, done => done(null, x + y));
}

addCallback(done, promise)

Used to add callback support to a promise-based function.

If done is not provided, returns the promise passed in. If done is provided, this will wait for promise to resolve or reject and then call done(err, result) appropriately. Note that promise can also be a function that takes no arguments and returns a Promise.

Use it like this:

export function addAsync(x, y, done=null) {
    return pb.addCallback(done, Promise.resolve(x + y));
}

pb.apply(fn, thisArg, args[, cb])

Much like Function.prototype.apply(), this calls a function, but this lets you call into a function when you don't know whether the function is expecting a callback or is going to return a Promise. fn is the function you wish to call. Under the hood, if fn.length is equal to args.length, this will call fn with the parameters provided, and then return the Promise (or wrap a returned value in a Promise). If fn.length is args.length + 1, then a callback will be added.

If cb is provided, apply will call into cb with a result, otherwise apply will itself return a Promise.

pb.call(fn, thisArg[, arg1[, arg2[, ...]]))

This is the Function.prototype.call() equivalent of apply(). Note that this always returns a Promise. If you need a callback, use callWithCb() instead.

Note that this is handy shortcut for promisifying a callback-based API:

pb.call(done => fs.readFile(filename, {encoding: 'utf8'}, done))
.then(fileContents => ...);

pb.callWithCb(fn, argumentCount, thisArg[, arg1[, arg2[, ...[, cb]]]])

Similar to pb.call(), but instead of returning a Promise this will call the provided callback.

pb.withPromise(promiseImpl)

Returns a new {make, break, addPromise, addCallback, apply, call, callWithCb} object which uses the specified promiseImpl constructor to create new Promises.

Comments
  • Promise then() only supports a single argument

    Promise then() only supports a single argument

    Hello there! This is an awesome module, and is exactly what I am looking for. I just have one question. When using the callback syntax, I can pass multiple variables after the 1st error argument, and they all show up in the callback function, like this:

    var pb = require('promise-breaker');
    
    var myFunc = pb.make( function(done) {
        done(null, "Hello", "World");
    } );
    
    myFunc( function(err, val1, val2) {
        console.log("Got here, in classic callback: ", val1, val2 );
    } );
    

    In the above example, val1 is Hello, and val2 is World. This is exactly what I expect. Console output:

    Got here, in classic callback:  Hello World
    

    But when I use the same exact setup but call myFunc using a promise pattern, I get an undefined for the 2nd argument:

    myFunc().then( function(val1, val2) {
            console.log("Got here, in promise then: ", val1, val2);
    } );
    

    Console output:

    Got here, in promise then:  Hello undefined
    

    Am I doing something wrong here?

    Thanks!

    opened by jhuckaby 8
  • Bump eslint from 5.9.0 to 5.16.0

    Bump eslint from 5.9.0 to 5.16.0

    Bumps eslint from 5.9.0 to 5.16.0.

    Release notes

    Sourced from eslint's releases.

    v5.16.0

    • dfef227 Build: gensite passes rulesMeta to formatter rendering (#11567) (Kevin Partington)
    • c06d38c Fix: Allow HTML formatter to handle no meta data (#11566) (Ilya Volodin)
    • 87a5c03 Docs: func-style: clarify when allowArrowFunctions is used (#11548) (Oliver Joseph Ash)
    • bc3e427 Update: pass rule meta to formatters RFC 10 (#11551) (Chris Meyer)
    • b452f27 Chore: Update README to pull in reviewer data (#11506) (Nicholas C. Zakas)
    • afe3d25 Upgrade: Bump js-yaml dependency to fix Denial of Service vulnerability (#11550) (Vernon de Goede)
    • 4fe7eb7 Chore: use nyc instead of istanbul (#11532) (Toru Nagashima)
    • f16af43 Chore: fix formatters/table test (#11534) (Toru Nagashima)
    • 78358a8 Docs: fix duplicate punctuation in CLI docs (#11528) (Teddy Katz)

    v5.15.3

    • 71adc66 Fix: avoid moving comments in implicit-arrow-linebreak (fixes #11521) (#11522) (Teddy Katz)
    • 1f715a2 Chore: make test-case-property-ordering reasonable (#11511) (Toru Nagashima)

    v5.15.2

    • 29dbca7 Fix: implicit-arrow-linebreak adds extra characters (fixes #11268) (#11407) (Mark de Dios)
    • 5d2083f Upgrade: [email protected] (#11513) (Teddy Katz)
    • a5dae7c Fix: Empty glob pattern incorrectly expands to "/**" (#11476) (Ben Chauvette)
    • 448e8da Chore: improve crash reporting (fixes #11304) (#11463) (Alex Zherdev)
    • 0f56dc6 Chore: make config validator params more consistent (#11435) (薛定谔的猫)
    • d6c1122 Docs: Add working groups to maintainer guide (#11400) (Nicholas C. Zakas)
    • 5fdb4d3 Build: compile deps to ES5 when generating browser file (fixes #11504) (#11505) (Teddy Katz)
    • 06fa165 Build: update CI testing configuration (#11500) (Reece Dunham)
    • 956e883 Docs: Fix example in no-restricted-modules docs (#11454) (Paul O’Shannessy)
    • 2c7431d Docs: fix json schema example dead link (#11498) (kazuya kawaguchi)
    • e7266c2 Docs: Fix invalid JSON in "Specifying Parser Options" (#11492) (Mihira Jayasekera)
    • 6693161 Sponsors: Sync README with website (ESLint Jenkins)
    • 62fee4a Chore: eslint-config-eslint enable comma-dangle functions: "never" (#11434) (薛定谔的猫)
    • 34a5382 Build: copy bundled espree to website directory (#11478) (Pig Fang)
    • f078f9a Chore: use "file:" dependencies for internal rules/config (#11465) (Teddy Katz)
    • 0756128 Docs: Add visualstudio to formatter list (#11480) (Patrick Eriksson)
    • 44de9d7 Docs: Fix typo in func-name-matching rule docs (#11484) (Iulian Onofrei)

    v5.15.1

    • fe1a892 Build: bundle espree (fixes eslint/eslint.github.io#546) (#11467) (薛定谔的猫)
    • 458053b Fix: avoid creating invalid regex in no-warning-comments (fixes #11471) (#11472) (Teddy Katz)

    v5.15.0

    • 4088c6c Build: Remove path.resolve in webpack build (#11462) (Kevin Partington)
    • ec59ec0 New: add rule "prefer-named-capture-group" (fixes #11381) (#11392) (Pig Fang)
    • a44f750 Upgrade: [email protected] (#11461) (Teddy Katz)
    • d3ce611 Sponsors: Sync README with website (ESLint Jenkins)
    • ee88475 Chore: add utils for rule tests (#11453) (薛定谔的猫)
    • d4824e4 Sponsors: Sync README with website (ESLint Jenkins)
    • 6489518 Fix: no-extra-parens crash when code is "((let))" (#11444) (Teddy Katz)
    • 9d20de2 Sponsors: Sync README with website (ESLint Jenkins)
    • 3f14de4 Sponsors: Sync README with website (ESLint Jenkins)
    • 3d6c770 Sponsors: Sync README with website (ESLint Jenkins)
    • de5cbc5 Update: remove invalid defaults from core rules (fixes #11415) (#11427) (Teddy Katz)
    ... (truncated)
    Changelog

    Sourced from eslint's changelog.

    v5.16.0 - March 29, 2019

    • dfef227 Build: gensite passes rulesMeta to formatter rendering (#11567) (Kevin Partington)
    • c06d38c Fix: Allow HTML formatter to handle no meta data (#11566) (Ilya Volodin)
    • 87a5c03 Docs: func-style: clarify when allowArrowFunctions is used (#11548) (Oliver Joseph Ash)
    • bc3e427 Update: pass rule meta to formatters RFC 10 (#11551) (Chris Meyer)
    • b452f27 Chore: Update README to pull in reviewer data (#11506) (Nicholas C. Zakas)
    • afe3d25 Upgrade: Bump js-yaml dependency to fix Denial of Service vulnerability (#11550) (Vernon de Goede)
    • 4fe7eb7 Chore: use nyc instead of istanbul (#11532) (Toru Nagashima)
    • f16af43 Chore: fix formatters/table test (#11534) (Toru Nagashima)
    • 78358a8 Docs: fix duplicate punctuation in CLI docs (#11528) (Teddy Katz)

    v5.15.3 - March 18, 2019

    • 71adc66 Fix: avoid moving comments in implicit-arrow-linebreak (fixes #11521) (#11522) (Teddy Katz)
    • 1f715a2 Chore: make test-case-property-ordering reasonable (#11511) (Toru Nagashima)

    v5.15.2 - March 15, 2019

    • 29dbca7 Fix: implicit-arrow-linebreak adds extra characters (fixes #11268) (#11407) (Mark de Dios)
    • 5d2083f Upgrade: [email protected] (#11513) (Teddy Katz)
    • a5dae7c Fix: Empty glob pattern incorrectly expands to "/**" (#11476) (Ben Chauvette)
    • 448e8da Chore: improve crash reporting (fixes #11304) (#11463) (Alex Zherdev)
    • 0f56dc6 Chore: make config validator params more consistent (#11435) (薛定谔的猫)
    • d6c1122 Docs: Add working groups to maintainer guide (#11400) (Nicholas C. Zakas)
    • 5fdb4d3 Build: compile deps to ES5 when generating browser file (fixes #11504) (#11505) (Teddy Katz)
    • 06fa165 Build: update CI testing configuration (#11500) (Reece Dunham)
    • 956e883 Docs: Fix example in no-restricted-modules docs (#11454) (Paul O’Shannessy)
    • 2c7431d Docs: fix json schema example dead link (#11498) (kazuya kawaguchi)
    • e7266c2 Docs: Fix invalid JSON in "Specifying Parser Options" (#11492) (Mihira Jayasekera)
    • 6693161 Sponsors: Sync README with website (ESLint Jenkins)
    • 62fee4a Chore: eslint-config-eslint enable comma-dangle functions: "never" (#11434) (薛定谔的猫)
    • 34a5382 Build: copy bundled espree to website directory (#11478) (Pig Fang)
    • f078f9a Chore: use "file:" dependencies for internal rules/config (#11465) (Teddy Katz)
    • 0756128 Docs: Add visualstudio to formatter list (#11480) (Patrick Eriksson)
    • 44de9d7 Docs: Fix typo in func-name-matching rule docs (#11484) (Iulian Onofrei)

    v5.15.1 - March 4, 2019

    • fe1a892 Build: bundle espree (fixes eslint/eslint.github.io#546) (#11467) (薛定谔的猫)
    • 458053b Fix: avoid creating invalid regex in no-warning-comments (fixes #11471) (#11472) (Teddy Katz)

    v5.15.0 - March 1, 2019

    ... (truncated)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

    You can always request more updates by clicking Bump now in your Dependabot dashboard.

    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    released dependencies 
    opened by dependabot-preview[bot] 5
  • Add Greenkeeper badge 🌴

    Add Greenkeeper badge 🌴

    Let’s get started with automated dependency management for node-promise-breaker :muscle:

    ⚠️ Greenkeeper has found a package-lock.json file in this repository. Please use greenkeeper-lockfile to make sure this gets updated as well.

    All of your dependencies are already up-to-date, so this repository was enabled right away. Good job :thumbsup:


    🏷 How to check the status of this repository

    Greenkeeper adds a badge to your README which indicates the status of this repository.

    This is what your badge looks like right now :point_right: Greenkeeper badge

    🙈 How to ignore certain dependencies

    You may have good reasons for not wanting to update to a certain dependency right now. In this case, you can change the dependency’s version string in the package.json file back to whatever you prefer.

    To make sure Greenkeeper doesn’t nag you again on the next update, add a greenkeeper.ignore field to your package.json, containing a list of dependencies you don’t want to update.

    // package.json
    {
      …
      "greenkeeper": {
        "ignore": [
          "package-names",
          "you-want-me-to-ignore"
        ]
      }
    }
    
    👩‍💻 How to update this pull request
      # Change into your repository’s directory
      git fetch
      git checkout greenkeeper/initial
      npm install-test
      # Adapt your code until everything works again
      git commit -m 'chore: adapt code to updated dependencies'
      git push origin greenkeeper/initial
    
    ✨ How do dependency updates work with Greenkeeper?

    After you merge this pull request, Greenkeeper will create a new branch whenever a dependency is updated, with the new version applied. The branch creation should trigger your testing services and check whether your code still works with the new dependency version. Depending on the the results of these tests Greenkeeper will try to open meaningful and helpful pull requests and issues, so your dependencies remain working and up-to-date.

    -  "underscore": "^1.6.0"
    +  "underscore": "^1.7.0"
    

    The above example shows an in-range update. 1.7.0 is included in the old ^1.6.0 range, because of the caret ^ character. When the test services report success Greenkeeper will silently delete the branch again, because no action needs to be taken – everything is fine.

    However, should the tests fail, Greenkeeper will create an issue to inform you about the problem immediately.

    This way, you’ll never be surprised by a dependency breaking your code. As long as everything still works, Greenkeeper will stay out of your way, and as soon as something goes wrong, you’ll be the first to know.

    -  "lodash": "^3.0.0"
    +  "lodash": "^4.0.0"
    

    In this example, the new version 4.0.0 is not included in the old ^3.0.0 range. For version updates like these – let’s call them “out of range” updates – you’ll receive a pull request.

    This means that you no longer need to check for new versions manually – Greenkeeper will keep you up to date automatically.

    These pull requests not only serve as reminders to update: If you have solid tests and good coverage, and the pull requests passes those tests, you can very likely just merge it and release a new version of your software straight away :shipit:

    To get a better idea of which ranges apply to which releases, check out the extremely useful semver calculator provided by npm.

    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Good luck with your project and see you soon :sparkles:

    Your Greenkeeper bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 5
  • Bump @semantic-release/changelog from 3.0.1 to 3.0.2

    Bump @semantic-release/changelog from 3.0.1 to 3.0.2

    Bumps @semantic-release/changelog from 3.0.1 to 3.0.2.

    Release notes

    Sourced from [@​semantic-release/changelog's releases](https://github.com/semantic-release/changelog/releases).

    v3.0.2

    3.0.2 (2018-12-26)

    Bug Fixes

    • package: update aggregate-error to version 2.0.0 (4007c72)
    Commits
    • 4007c72 fix(package): update aggregate-error to version 2.0.0
    • c06530a build: remove unnecessary docker service in Travis
    • f7ba85b chore(package): update nyc and sinon
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

    You can always request more updates by clicking Bump now in your Dependabot dashboard.

    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    released dependencies 
    opened by dependabot-preview[bot] 4
  • build(deps-dev): bump husky from 4.3.8 to 6.0.0

    build(deps-dev): bump husky from 4.3.8 to 6.0.0

    Bumps husky from 4.3.8 to 6.0.0.

    Release notes

    Sourced from husky's releases.

    v6.0.0

    After being in early access for Open Source projects and Sponsors for a limited time, I'm happy to announce that husky 6 is MIT again and can be freely used in commercial projects! 🎉

    Many thanks to the Open Source projects and Companies which have switched to/sponsored the new husky during this period!

    OSS is my full-time job, please consider sponsoring the development of husky on GitHub sponsors or Open Collective. Thank you!

    Breaking change

    • husky init has been moved to its own package (npx husky-init)

    Added

    • Programmatically use husky: require('husky')
    • TypeScript definitions

    Migrating from husky 4

    Husky 6 contains breaking changes. If you're coming from v4, npm install husky@6 won't be enough.

    Recommended: see husky-4-to-6 CLI to automatically migrate your config. There's also a dedicated section in the docs.

    If you're curious why config has changed, you may be interested in reading: https://blog.typicode.com/husky-git-hooks-javascript-config/

    Also Husky 6 follows official npm and Yarn best practices regarding autoinstall. It's recommended to use prepare script instead (see usage in docs).

    v5.2.0

    • Add set command to replace hooks (husky set .husky/pre-commit cmd)
    • Update add command to append command (husky add .husky/pre-commit cmd)
    • Improve error messages

    v5.1.3

    • docs: add specific Yarn v2 install/uninstall instructions
    • cli: husky init will detect Yarn v2 and initialize accordingly

    v5.1.2

    • docs: recommend prepare script instead of postinstall (#890)
    • cli: husky init use prepare script (#890)

    v5.1.1

    • style(shell): add trailing newlines (#870)
    • fix(init): update package.json postinstall

    v5.1.0

    • Add husky init

    v5.0.9

    • fix(install): do not fail if not inside a Git directory (closes #851)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 3
  • build(deps-dev): bump mocha from 7.2.0 to 8.1.0

    build(deps-dev): bump mocha from 7.2.0 to 8.1.0

    Bumps mocha from 7.2.0 to 8.1.0.

    Release notes

    Sourced from mocha's releases.

    v8.1.0

    8.1.0 / 2020-07-30

    In this release, Mocha now builds its browser bundle with Rollup and Babel, which will provide the project's codebase more flexibility and consistency.

    While we've been diligent about backwards compatibility, it's possible consumers of the browser bundle will encounter differences (other than an increase in the bundle size). If you do encounter an issue with the build, please report it here.

    This release does not drop support for IE11.

    Other community contributions came from @Devjeel, @Harsha509 and @sharath2106. Thank you to everyone who contributed to this release!

    Do you read Korean? See this guide to running parallel tests in Mocha, translated by our maintainer, @outsideris.

    :tada: Enhancements

    • #4287: Use background colors with inline diffs for better visual distinction (@michael-brade)

    :bug: Fixes

    :lock: Security Fixes

    :book: Documentation & Website

    :nut_and_bolt: Other

    • #4293: Use Rollup and Babel in build pipeline; add source map to published files (@Munter)

    v8.0.1

    8.0.1 / 2020-06-10

    The obligatory patch after a major.

    :bug: Fixes

    Changelog

    Sourced from mocha's changelog.

    8.1.0 / 2020-07-30

    In this release, Mocha now builds its browser bundle with Rollup and Babel, which will provide the project's codebase more flexibility and consistency.

    While we've been diligent about backwards compatibility, it's possible consumers of the browser bundle will encounter differences (other than an increase in the bundle size). If you do encounter an issue with the build, please report it here.

    This release does not drop support for IE11.

    Other community contributions came from @Devjeel, @Harsha509 and @sharath2106. Thank you to everyone who contributed to this release!

    Do you read Korean? See this guide to running parallel tests in Mocha, translated by our maintainer, @outsideris.

    :tada: Enhancements

    • #4287: Use background colors with inline diffs for better visual distinction (@michael-brade)

    :bug: Fixes

    :lock: Security Fixes

    :book: Documentation & Website

    :nut_and_bolt: Other

    • #4293: Use Rollup and Babel in build pipeline; add source map to published files (@Munter)

    8.0.1 / 2020-06-10

    The obligatory patch after a major.

    :bug: Fixes

    8.0.0 / 2020-06-10

    In this major release, Mocha adds the ability to run tests in parallel. Better late than never! Please note the breaking changes detailed below.

    Commits
    • 7e250ef Release v8.1.0
    • a6203c6 add git tag message to .npmrc
    • 60858dc devDependency updates for v8.1.0
    • cf736fe handle errors in supporter images during 11ty build
    • f966c94 Fixing typos
    • 8970429 update CHANGELOG for v8.1.0
    • edc09bf Ensure root level hooks are called when running in watch mode
    • 29012aa Update javascript-serialize 3.1.0 to 4.0.0; closes #4375 (#4378)
    • 7884893 ensure hook titles are consistent; closes #4348 (PR #4383)
    • ad03d29 build UMD bundle and polyfill language features (#4366)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 3
  • build(deps-dev): bump mocha from 7.2.0 to 8.0.1

    build(deps-dev): bump mocha from 7.2.0 to 8.0.1

    Bumps mocha from 7.2.0 to 8.0.1.

    Release notes

    Sourced from mocha's releases.

    v8.0.1

    8.0.1 / 2020-06-10

    The obligatory patch after a major.

    :bug: Fixes

    v8.0.0

    8.0.0 / 2020-06-10

    In this major release, Mocha adds the ability to run tests in parallel. Better late than never! Please note the breaking changes detailed below.

    Let's welcome @giltayar and @nicojs to the maintenance team!

    :boom: Breaking Changes

    • #4164: Mocha v8.0.0 now requires Node.js v10.0.0 or newer. Mocha no longer supports the Node.js v8.x line ("Carbon"), which entered End-of-Life at the end of 2019 (@UlisesGascon)

    • #4175: Having been deprecated with a warning since v7.0.0, mocha.opts is no longer supported (@juergba)

      :sparkles: WORKAROUND: Replace mocha.opts with a configuration file.

    • #4260: Remove enableTimeout() (this.enableTimeout()) from the context object (@craigtaub)

      :sparkles: WORKAROUND: Replace usage of this.enableTimeout(false) in your tests with this.timeout(0).

    • #4315: The spec option no longer supports a comma-delimited list of files (@juergba)

      :sparkles: WORKAROUND: Use an array instead (e.g., "spec": "foo.js,bar.js" becomes "spec": ["foo.js", "bar.js"]).

    • #4309: Drop support for Node.js v13.x line, which is now End-of-Life (@juergba)

    • #4282: --forbid-only will throw an error even if exclusive tests are avoided via --grep or other means (@arvidOtt)

    • #4223: The context object's skip() (this.skip()) in a "before all" (before()) hook will no longer execute subsequent sibling hooks, in addition to hooks in child suites (@juergba)

    • #4178: Remove previously soft-deprecated APIs (@wnghdcjfe):

      • Mocha.prototype.ignoreLeaks()
      • Mocha.prototype.useColors()
      • Mocha.prototype.useInlineDiffs()
      • Mocha.prototype.hideDiff()

    :tada: Enhancements

    ... (truncated)
    Changelog

    Sourced from mocha's changelog.

    8.0.1 / 2020-06-10

    The obligatory patch after a major.

    :bug: Fixes

    8.0.0 / 2020-06-10

    In this major release, Mocha adds the ability to run tests in parallel. Better late than never! Please note the breaking changes detailed below.

    Let's welcome @giltayar and @nicojs to the maintenance team!

    :boom: Breaking Changes

    • #4164: Mocha v8.0.0 now requires Node.js v10.0.0 or newer. Mocha no longer supports the Node.js v8.x line ("Carbon"), which entered End-of-Life at the end of 2019 (@UlisesGascon)

    • #4175: Having been deprecated with a warning since v7.0.0, mocha.opts is no longer supported (@juergba)

      :sparkles: WORKAROUND: Replace mocha.opts with a configuration file.

    • #4260: Remove enableTimeout() (this.enableTimeout()) from the context object (@craigtaub)

      :sparkles: WORKAROUND: Replace usage of this.enableTimeout(false) in your tests with this.timeout(0).

    • #4315: The spec option no longer supports a comma-delimited list of files (@juergba)

      :sparkles: WORKAROUND: Use an array instead (e.g., "spec": "foo.js,bar.js" becomes "spec": ["foo.js", "bar.js"]).

    • #4309: Drop support for Node.js v13.x line, which is now End-of-Life (@juergba)

    • #4282: --forbid-only will throw an error even if exclusive tests are avoided via --grep or other means (@arvidOtt)

    • #4223: The context object's skip() (this.skip()) in a "before all" (before()) hook will no longer execute subsequent sibling hooks, in addition to hooks in child suites (@juergba)

    • #4178: Remove previously soft-deprecated APIs (@wnghdcjfe):

      • Mocha.prototype.ignoreLeaks()
      • Mocha.prototype.useColors()
      • Mocha.prototype.useInlineDiffs()
      • Mocha.prototype.hideDiff()

    :tada: Enhancements

    ... (truncated)
    Commits
    • 9b203fa Release v8.0.1
    • ad8d83d update CHANGELOG for v8.0.1 [ci skip]
    • 66ce143 fix --parallel --watch; closes #4327
    • e0e6568 update release process in MAINTAINERS.md
    • fc618a1 Switch opencollective images to self-hosted spritesheet (#4318)
    • 612fa31 Release v8.0.0
    • 57fbbee update changelog for v8.0.0
    • 26c6cae options 'spec' and 'ignore': no splitting by comma
    • 2da50aa add a section regarding 3p reporters & parallel mode
    • dc26e90 disable parallel mode by default
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 3
  • build(deps-dev): bump husky from 3.1.0 to 4.0.0

    build(deps-dev): bump husky from 3.1.0 to 4.0.0

    Bumps husky from 3.1.0 to 4.0.0.

    Release notes

    Sourced from husky's releases.

    v4.0.0

    • Support Yarn v2 new Plug'n'Play feature (thanks to @arcanis)
    • Improve path handling on Windows (in particular with Cygwin and Cmdr)
    • Remove dependencies and simplify code
    • Breaking requires Node 10+

    Thanks to all contributors and everyone who is supporting Husky on Open Collective, GitHub sponsors and Patreon!

    v4.0.0-beta.5

    • Fixes a bug in v4.0.0-beta.4

    v4.0.0-beta.4

    • Rely on INIT_CWD env rather than node_modules path
    • Reduce dependencies: run-node, read-pkg
    • Target ES2017 environments
    • Support Cygwin and Cmdr on Windows

    v4.0.0-beta.3

    v4.0.0-beta.2

    Merge bug fixes from v3 since v4.0.0-beta.1 was released.

    v4.0.0-beta.1

    Fix: yarn run error (typicode/husky#562)

    v4.0.0-beta.0

    This is an experimental release with Yarn PnP support. Huge thanks to @arcanis for the help.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    released dependencies 
    opened by dependabot-preview[bot] 3
  • Bump @semantic-release/changelog from 3.0.2 to 3.0.4

    Bump @semantic-release/changelog from 3.0.2 to 3.0.4

    Bumps @semantic-release/changelog from 3.0.2 to 3.0.4.

    Release notes

    Sourced from [@​semantic-release/changelog's releases](https://github.com/semantic-release/changelog/releases).

    v3.0.4

    3.0.4 (2019-05-14)

    Bug Fixes

    • package: update fs-extra to version 8.0.0 (50ed752)

    v3.0.3

    3.0.3 (2019-04-14)

    Bug Fixes

    • package: update aggregate-error to version 3.0.0 (50789ef)
    Commits
    • 50ed752 fix(package): update fs-extra to version 8.0.0
    • dd0d91f chore(package): update tempy to version 0.3.0
    • 00204d2 chore(package): update nyc to version 14.0.0
    • 50789ef fix(package): update aggregate-error to version 3.0.0
    • cb9c5eb chore(package): update xo to version 0.24.0
    • 7474f2c chore(package): update ava to version 1.0.1
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    released dependencies 
    opened by dependabot-preview[bot] 3
  • Bump es6-promise from 4.2.5 to 4.2.6

    Bump es6-promise from 4.2.5 to 4.2.6

    Bumps es6-promise from 4.2.5 to 4.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

    You can always request more updates by clicking Bump now in your Dependabot dashboard.

    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependencies 
    opened by dependabot-preview[bot] 3
  • Bump handlebars from 4.0.12 to 4.1.2

    Bump handlebars from 4.0.12 to 4.1.2

    Bumps handlebars from 4.0.12 to 4.1.2.

    Changelog

    Sourced from handlebars's changelog.

    v4.1.2 - April 13th, 2019

    Chore/Test:

    • #1515 - Port over linting and test for typings (@​zimmi88)
    • chore: add missing typescript dependency, add package-lock.json - 594f1e3
    • test: remove safari from saucelabs - 871accc

    Bugfixes:

    • fix: prevent RCE through the "lookup"-helper - cd38583

    Compatibility notes:

    Access to the constructor of a class thought {{lookup obj "constructor" }} is now prohibited. This closes a leak that only half closed in versions 4.0.13 and 4.1.0, but it is a slight incompatibility.

    This kind of access is not the intended use of Handlebars and leads to the vulnerability described in #1495. We will not increase the major version, because such use is not intended or documented, and because of the potential impact of the issue (we fear that most people won't use a new major version and the issue may not be resolved on many systems).

    Commits

    v4.1.1 - March 16th, 2019

    Bugfixes:

    • fix: add "runtime.d.ts" to allow "require('handlebars/runtime')" in TypeScript - 5cedd62

    Refactorings:

    • replace "async" with "neo-async" - 048f2ce
    • use "substring"-function instead of "substr" - 445ae12

    Compatibility notes:

    • This is a bugfix release. There are no breaking change and no new features.

    Commits

    v4.1.0 - February 7th, 2019

    New Features

    • import TypeScript typings - 27ac1ee

    Security fixes:

    • disallow access to the constructor in templates to prevent RCE - 42841c4, #1495

    Housekeeping

    • chore: fix components/handlebars package.json and auto-update on release - bacd473
    • chore: Use node 10 to build handlebars - 78dd89c
    • chore/doc: Add more release docs - 6b87c21
    ... (truncated)
    Commits
    • 10b5fcf v4.1.2
    • dd0144c Update release notes
    • 594f1e3 chore: add missing typescript dependency, add package-lock.json
    • 871accc test: remove safari from saucelabs
    • cd38583 fix: prevent RCE through the "lookup"-helper
    • c454d94 Merge pull request #1515 from zimmi88/4.x-typings-lint
    • 9cfb5dd Merge pull request #1516 from phil-davis/revert-double-release-notes
    • be44246 Remove triplicate of v4.0.12 release notes
    • 002561b Revert "Update release notes"
    • 3fb6687 Port over linting and test for typings
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    released dependencies 
    opened by dependabot[bot] 3
Releases(v6.0.0)
Owner
Jason Walton
Jason Walton
The ultimate generator based flow-control goodness for nodejs (supports thunks, promises, etc)

co Generator based control flow goodness for nodejs and the browser, using promises, letting you write non-blocking code in a nice-ish way. Co v4 co@4

TJ Holowaychuk 11.8k Jan 2, 2023
Map over promises concurrently

p-map Map over promises concurrently Useful when you need to run promise-returning & async functions multiple times with different inputs concurrently

Sindre Sorhus 929 Dec 31, 2022
P - Toolkit for managing multiple promises

@antfu/p Toolkit for managing multiple promises. Without const items = [1, 2, 3, 4, 5] (await Promise.all(items .map(async i => { const v = awa

Anthony Fu 284 Nov 24, 2022
Async utilities for node and the browser

Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript. Although originally designed f

Caolan McMahon 27.8k Dec 31, 2022
Flow control and error handling for Node.js

NOTE: This project is deprecated and no longer being actively developed or maintained. See Issue #50 for details. StrongLoop zone library Overview The

StrongLoop and IBM API Connect 280 Feb 18, 2022
Memoize promise-returning functions. Includes cache expire and prefetch.

promise-memoize Memoize promise-returning functions. Includes cache expire and prefetch. When data expire mode enabled, new values are fetched in adva

Nodeca 56 Nov 1, 2022
A jQuery plugin that lets you attach callbacks to useful image loading events.

waitForImages Copyright (c) 2011-2018 Alexander Dickson @alexdickson Licensed under the MIT licenses. http://alexanderdickson.com Donate! Overview Pro

Alexander Dickson 1.3k Dec 28, 2022
Write JSX-driven components with functions, promises and generators.

Crank.js Write JSX-driven components with functions, promises and generators. Documentation is available at crank.js.org. Crank.js is in a beta phase,

null 2.5k Jan 1, 2023
💶 The package allows you accept payment using Lazerpay in your react native mobile app ⚡️

Lazerpay Official react-native sdk Lazerpay SDK allows you accept payments easily in your react-native application Installation npm install lazerpay-r

LazerPay 28 Dec 24, 2022
Lazerpay SDK allows you accept payments easily in your react application

Lazerpay Official react sdk Lazerpay SDK allows you accept payments easily in your react application Installation npm install lazerpay-react Usage imp

LazerPay 18 Nov 20, 2022
MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers

Derby The Derby MVC framework makes it easy to write realtime, collaborative applications that run in both Node.js and browsers. Derby includes a powe

DerbyJS 4.7k Dec 31, 2022
MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers

Derby The Derby MVC framework makes it easy to write realtime, collaborative applications that run in both Node.js and browsers. Derby includes a powe

DerbyJS 4.7k Dec 23, 2022
Whatsapp bot using Bailey multi device module, using nodejs and open source, I accept ideas from public

Allen Bot-Wa Keep copyright, Created by lolhuman | Please read carefully Content Description Example Highlights TODO Installation FAQ Contributing Con

Pais 35 Dec 3, 2022
null 8 Nov 11, 2022
The friendly way to accept tips in ETH.

?? cryptip.me The friendly way to accept tips in ETH. It's free, and no setup required. cryptip.me/your-ens-or-wallet-address Getting Started Project

spidΞy 11 Sep 23, 2022
A simple easy to use vanilla JavaScript library for creating input fields that accept multiple email addresses

MeiMei - Multiple Email Input MeiMei: A simple easy to use vanilla JavaScript library for creating input fields that accept multiple email addresses.

Lars Straathof 1 Apr 13, 2022
A beginner friendly hacktoberfest2022 repo made lately to accept valid open source contribution.

Hacktoberfest2022 A hacktoberfest2022 repo made lately to accept valid open source contribution. What is Hacktoberfest? Hacktoberfest is digitalocean’

One Teacher One 5 Oct 20, 2022
Proofie is an experimental proof-reader for VSCode that helps you write better.

Proofie Proofie is an experimental proof-reader for VSCode that helps you write better. Install You can install proofie from the VSCode Marketplace. O

Matt Mueller 7 Jul 25, 2022
A library that helps you write a static dropdown menu that follows the digital accessibility recommendations.

JSPanel A library that helps you write a static dropdown menu, a panel, that follows the digital accessibility recommendations. Get started First of a

CodoPixel 1 Apr 29, 2021