Skip to content

Commit 0f7bcb9

Browse files
Merge pull request then#85 from then/domains-etc
Add builds for domains and setImmedaite
2 parents 5f214e1 + b8ac76b commit 0f7bcb9

File tree

8 files changed

+54
-10
lines changed

8 files changed

+54
-10
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ components
22
build
33
node_modules
44
/lib
5+
/domains
6+
/setimmediate

Readme.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Note that the [es5-shim](https://github.com/es-shims/es5-shim) must be loaded be
4343

4444
## Usage
4545

46-
The example below shows how you can load the promise library (in a way that works on both client and server). It then demonstrates creating a promise from scratch. You simply call `new Promise(fn)`. There is a complete specification for what is returned by this method in [Promises/A+](http://promises-aplus.github.com/promises-spec/).
46+
The example below shows how you can load the promise library (in a way that works on both client and server using node or browserify). It then demonstrates creating a promise from scratch. You simply call `new Promise(fn)`. There is a complete specification for what is returned by this method in [Promises/A+](http://promises-aplus.github.com/promises-spec/).
4747

4848
```javascript
4949
var Promise = require('promise');
@@ -56,6 +56,26 @@ var promise = new Promise(function (resolve, reject) {
5656
});
5757
```
5858

59+
If you need [domains](https://iojs.org/api/domain.html) support, you should instead use:
60+
61+
```js
62+
var Promise = require('promise/domains');
63+
```
64+
65+
If you are in an environment that implements `setImmediate` and don't want the optimisations provided by asap, you can use:
66+
67+
```js
68+
var Promise = require('promise/setimmediate');
69+
```
70+
71+
If you only want part of the features, e.g. just a pure ES6 polyfill:
72+
73+
```js
74+
var Promise = require('promise/lib/es6-extensions');
75+
// or require('promise/domains/es6-extensions');
76+
// or require('promise/setimmediate/es6-extensions');
77+
```
78+
5979
## API
6080

6181
Before all examples, you will need:

build.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,22 @@ fs.readdirSync(__dirname + '/src').forEach(function (filename) {
4848
var out = fixup(src);
4949
fs.writeFileSync(__dirname + '/lib/' + filename, out);
5050
});
51+
52+
rimraf.sync(__dirname + '/domains/');
53+
fs.mkdirSync(__dirname + '/domains/');
54+
fs.readdirSync(__dirname + '/src').forEach(function (filename) {
55+
var src = fs.readFileSync(__dirname + '/src/' + filename, 'utf8');
56+
var out = fixup(src);
57+
out = out.replace(/require\(\'asap\/raw\'\)/g, "require('asap')");
58+
fs.writeFileSync(__dirname + '/domains/' + filename, out);
59+
});
60+
61+
rimraf.sync(__dirname + '/setimmediate/');
62+
fs.mkdirSync(__dirname + '/setimmediate/');
63+
fs.readdirSync(__dirname + '/src').forEach(function (filename) {
64+
var src = fs.readFileSync(__dirname + '/src/' + filename, 'utf8');
65+
var out = fixup(src);
66+
out = out.replace(/var asap \= require\(\'([a-z\/]+)\'\)/g, '');
67+
out = out.replace(/asap/g, "setImmediate");
68+
fs.writeFileSync(__dirname + '/setimmediate/' + filename, out);
69+
});

index.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
11
'use strict';
22

3-
module.exports = require('./lib/core.js')
4-
require('./lib/done.js')
5-
require('./lib/finally.js')
6-
require('./lib/es6-extensions.js')
7-
require('./lib/node-extensions.js')
3+
module.exports = require('./lib')

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"description": "Bare bones Promises/A+ implementation",
55
"main": "index.js",
66
"scripts": {
7+
"prepublish": "node build",
78
"pretest": "node build",
89
"pretest-resolve": "node build",
910
"pretest-extensions": "node build",

src/done.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
'use strict';
22

33
var Promise = require('./core.js')
4-
var asap = require('asap')
54

65
module.exports = Promise
76
Promise.prototype.done = function (onFulfilled, onRejected) {
87
var self = arguments.length ? this.then.apply(this, arguments) : this
98
self.then(null, function (err) {
10-
asap(function () {
9+
setTimeout(function () {
1110
throw err
12-
})
11+
}, 0)
1312
})
1413
}

src/es6-extensions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//This file contains the ES6 extensions to the core Promises/A+ API
44

55
var Promise = require('./core.js')
6-
var asap = require('asap')
6+
var asap = require('asap/raw')
77

88
module.exports = Promise
99

src/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
module.exports = require('./core.js')
4+
require('./done.js')
5+
require('./finally.js')
6+
require('./es6-extensions.js')
7+
require('./node-extensions.js')

0 commit comments

Comments
 (0)