{"id":13615387,"url":"https://github.com/doodlewind/nativebird","last_synced_at":"2026-03-11T10:04:57.220Z","repository":{"id":41366377,"uuid":"509138453","full_name":"doodlewind/nativebird","owner":"doodlewind","description":"🐦 Bluebird alternative within ~200 loc","archived":false,"fork":false,"pushed_at":"2024-07-16T22:13:15.000Z","size":75,"stargazers_count":77,"open_issues_count":2,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-09T20:08:48.850Z","etag":null,"topics":["async","bluebird","bluebird-promise","javascript","promise","promise-library","promises-aplus"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/doodlewind.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-30T15:39:48.000Z","updated_at":"2025-02-11T15:51:43.000Z","dependencies_parsed_at":"2024-01-17T00:18:22.967Z","dependency_job_id":"2b334912-383b-454a-9047-e98c1b5cdd39","html_url":"https://github.com/doodlewind/nativebird","commit_stats":{"total_commits":42,"total_committers":5,"mean_commits":8.4,"dds":0.5238095238095238,"last_synced_commit":"af24e6316345a9a73a7dff31053fdfbea74bce6f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doodlewind%2Fnativebird","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doodlewind%2Fnativebird/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doodlewind%2Fnativebird/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doodlewind%2Fnativebird/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doodlewind","download_url":"https://codeload.github.com/doodlewind/nativebird/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103872,"owners_count":21048245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","bluebird","bluebird-promise","javascript","promise","promise-library","promises-aplus"],"created_at":"2024-08-01T20:01:12.834Z","updated_at":"2026-03-11T10:04:47.206Z","avatar_url":"https://github.com/doodlewind.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# NativeBird\n\nUltralight promise extension compatible with Bluebird\n\n\u003ca href=\"./package.json\"\u003e\n  \u003cimg src=\"https://img.shields.io/npm/v/nativebird.svg?maxAge=300\u0026color=f4e335\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"./package.json\"\u003e\n  \u003cimg src=\"https://img.shields.io/bundlephobia/min/nativebird\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"./package.json\"\u003e\n  \u003c!-- NOTE after \"npm run coverage\", check whether next line of code formatted correctly --\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Coverage-100%25-83A603.svg?prefix=![](https://img.shields.io/badge/Coverage-100%25-83A603.svg?prefix=$coverage$)\"\u003e\n\u003c/a\u003e\n\n![logo](./logo.png)\n\n## Introduction\n\n[中文介绍](https://zhuanlan.zhihu.com/p/536154525)\n\nAs a pioneer in JavaScript async ecosystem, [Bluebird](http://bluebirdjs.com/) is a great userland promise library with handy utility methods included. However the way it works leads to larger bundle size and more verbose stack trace.\n\nNativeBird is compatible with a core Bluebird subset by extending native promise, and all of its extended APIs (implemented within ~200 lines) are fully tested with the corresponding test cases in Bluebird.\n\nNativeBird can be used in several scenarios:\n\n- To reuse promise utility methods like `Promise.map` and `Promise.each` without copying snippets from a gist.\n- To perform migration in existing Bluebird projects.\n- To simply learn JavaScript async operation skills 🐶.\n\n## Installation\n\n```sh\nnpm install nativebird\n```\n\n```js\nimport Promise from \"nativebird\";\n```\n\nIt's also fine to copy `promise.mjs` and its type definition directly into your project directory.\n\n## API\n\n- Static methods:\n  - [`Promise.delay`](http://bluebirdjs.com/docs/api/promise.delay.html)\n  - [`Promise.try`](http://bluebirdjs.com/docs/api/promise.try.html)\n  - [`Promise.each`](http://bluebirdjs.com/docs/api/promise.each.html)\n  - [`Promise.mapSeries`](http://bluebirdjs.com/docs/api/promise.mapseries.html)\n  - [`Promise.map`](http://bluebirdjs.com/docs/api/promise.map.html)\n  - [`Promise.reduce`](http://bluebirdjs.com/docs/api/promise.reduce.html)\n  - `Promise.defer` (deprecated)\n- Instance methods:\n  - [`promise.delay`](http://bluebirdjs.com/docs/api/delay.html)\n  - [`promise.map`](http://bluebirdjs.com/docs/api/map.html)\n  - [`promise.reduce`](http://bluebirdjs.com/docs/api/reduce.html)\n  - [`promise.mapSeries`](http://bluebirdjs.com/docs/api/mapseries.html)\n  - [`promise.each`](http://bluebirdjs.com/docs/api/each.html)\n  - [`promise.timeout`](http://bluebirdjs.com/docs/api/timeout.html)\n  - [`promise.tap`](http://bluebirdjs.com/docs/api/tap.html)\n  - [`promise.all`](http://bluebirdjs.com/docs/api/all.html)\n  - [`promise.spread`](http://bluebirdjs.com/docs/api/spread.html)\n  - [`promise.asCallback`](http://bluebirdjs.com/docs/api/ascallback.html)\n\nSince NativeBird inherits from native promise, all promise APIs defined in ECMAScript standard (say [`Promise.allSettled`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled) and [`Promise.any`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any)) are naturally supported.\n\n## Caveats\n\n- `Promise.cancel` is not supported.\n- Synchronous inspection (e.g. `Promise.isFulfilled`) is not supported.\n\n## Contribution\n\nTo implement a new API in Bluebird, please also port the corresponding test cases under `test/mocha` in Bluebird repo and test it with `npm test`.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoodlewind%2Fnativebird","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoodlewind%2Fnativebird","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoodlewind%2Fnativebird/lists"}