es6_promise_polyfill_rails 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/app/assets/javascripts/es6_promise_polyfill_rails.js +199 -198
- data/lib/es6_promise_polyfill_rails/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e625b83fd4805120089c9832bef53ae8cb10295
|
4
|
+
data.tar.gz: eb0a00f7a1c875758f43d13a0ba6c0e91d84b097
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad4677ea51521d2e6d9b544368981fffc5535bed892c2c5d34fd3b13406887380d20d25210134f73737236fa7de0ecaa71fc986daa58b415ba15b9ccf352e72e
|
7
|
+
data.tar.gz: 0de03d428c4a58771b4e50a4d4348ca4b85bb523b98aa8b0ceff360917380940068b119376319463c719c2acb10093fc04af67f83a73318ed9b950bd6568a500
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
es6_promise_polyfill_rails (0.1.
|
4
|
+
es6_promise_polyfill_rails (0.1.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -14,9 +14,9 @@ PLATFORMS
|
|
14
14
|
|
15
15
|
DEPENDENCIES
|
16
16
|
bundler (~> 1.11)
|
17
|
+
es6_promise_polyfill_rails!
|
17
18
|
minitest (~> 5.0)
|
18
19
|
rake (~> 10.0)
|
19
|
-
es6_promise_polyfill_rails!
|
20
20
|
|
21
21
|
BUNDLED WITH
|
22
22
|
1.11.2
|
@@ -1,230 +1,231 @@
|
|
1
|
-
(function
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
// Use polyfill for setImmediate for performance gains
|
11
|
-
var asap = (typeof setImmediate === 'function' && setImmediate) ||
|
12
|
-
function (fn) {
|
13
|
-
setTimeoutFunc(fn, 1);
|
14
|
-
};
|
1
|
+
if(typeof Promise != 'function'){
|
2
|
+
(function (root) {
|
3
|
+
// Store setTimeout reference so promise-polyfill will be unaffected by
|
4
|
+
// other code modifying setTimeout (like sinon.useFakeTimers())
|
5
|
+
var setTimeoutFunc = setTimeout;
|
6
|
+
|
7
|
+
function noop() {
|
8
|
+
}
|
15
9
|
|
16
|
-
|
17
|
-
|
18
|
-
|
10
|
+
// Use polyfill for setImmediate for performance gains
|
11
|
+
var asap = (typeof setImmediate === 'function' && setImmediate) ||
|
12
|
+
function (fn) {
|
13
|
+
setTimeoutFunc(fn, 1);
|
14
|
+
};
|
19
15
|
|
20
|
-
|
21
|
-
|
22
|
-
return function () {
|
23
|
-
fn.apply(thisArg, arguments);
|
16
|
+
var onUnhandledRejection = function onUnhandledRejection(err) {
|
17
|
+
console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
|
24
18
|
};
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
function Promise(fn) {
|
32
|
-
if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
|
33
|
-
if (typeof fn !== 'function') throw new TypeError('not a function');
|
34
|
-
this._state = 0;
|
35
|
-
this._handled = false;
|
36
|
-
this._value = undefined;
|
37
|
-
this._deferreds = [];
|
38
|
-
|
39
|
-
doResolve(fn, this);
|
40
|
-
}
|
41
|
-
|
42
|
-
function handle(self, deferred) {
|
43
|
-
while (self._state === 3) {
|
44
|
-
self = self._value;
|
19
|
+
|
20
|
+
// Polyfill for Function.prototype.bind
|
21
|
+
function bind(fn, thisArg) {
|
22
|
+
return function () {
|
23
|
+
fn.apply(thisArg, arguments);
|
24
|
+
};
|
45
25
|
}
|
46
|
-
|
47
|
-
|
48
|
-
return;
|
26
|
+
|
27
|
+
var isArray = Array.isArray || function (value) {
|
28
|
+
return Object.prototype.toString.call(value) === '[object Array]';
|
29
|
+
};
|
30
|
+
|
31
|
+
function Promise(fn) {
|
32
|
+
if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
|
33
|
+
if (typeof fn !== 'function') throw new TypeError('not a function');
|
34
|
+
this._state = 0;
|
35
|
+
this._handled = false;
|
36
|
+
this._value = undefined;
|
37
|
+
this._deferreds = [];
|
38
|
+
|
39
|
+
doResolve(fn, this);
|
49
40
|
}
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
(self._state === 1 ? resolve : reject)(deferred.promise, self._value);
|
55
|
-
return;
|
41
|
+
|
42
|
+
function handle(self, deferred) {
|
43
|
+
while (self._state === 3) {
|
44
|
+
self = self._value;
|
56
45
|
}
|
57
|
-
|
58
|
-
|
59
|
-
ret = cb(self._value);
|
60
|
-
} catch (e) {
|
61
|
-
reject(deferred.promise, e);
|
46
|
+
if (self._state === 0) {
|
47
|
+
self._deferreds.push(deferred);
|
62
48
|
return;
|
63
49
|
}
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
try {
|
70
|
-
// Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
|
71
|
-
if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
|
72
|
-
if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
|
73
|
-
var then = newValue.then;
|
74
|
-
if (newValue instanceof Promise) {
|
75
|
-
self._state = 3;
|
76
|
-
self._value = newValue;
|
77
|
-
finale(self);
|
50
|
+
self._handled = true;
|
51
|
+
asap(function () {
|
52
|
+
var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
|
53
|
+
if (cb === null) {
|
54
|
+
(self._state === 1 ? resolve : reject)(deferred.promise, self._value);
|
78
55
|
return;
|
79
|
-
}
|
80
|
-
|
56
|
+
}
|
57
|
+
var ret;
|
58
|
+
try {
|
59
|
+
ret = cb(self._value);
|
60
|
+
} catch (e) {
|
61
|
+
reject(deferred.promise, e);
|
81
62
|
return;
|
82
63
|
}
|
64
|
+
resolve(deferred.promise, ret);
|
65
|
+
});
|
66
|
+
}
|
67
|
+
|
68
|
+
function resolve(self, newValue) {
|
69
|
+
try {
|
70
|
+
// Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
|
71
|
+
if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
|
72
|
+
if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
|
73
|
+
var then = newValue.then;
|
74
|
+
if (newValue instanceof Promise) {
|
75
|
+
self._state = 3;
|
76
|
+
self._value = newValue;
|
77
|
+
finale(self);
|
78
|
+
return;
|
79
|
+
} else if (typeof then === 'function') {
|
80
|
+
doResolve(bind(then, newValue), self);
|
81
|
+
return;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
self._state = 1;
|
85
|
+
self._value = newValue;
|
86
|
+
finale(self);
|
87
|
+
} catch (e) {
|
88
|
+
reject(self, e);
|
83
89
|
}
|
84
|
-
|
90
|
+
}
|
91
|
+
|
92
|
+
function reject(self, newValue) {
|
93
|
+
self._state = 2;
|
85
94
|
self._value = newValue;
|
86
95
|
finale(self);
|
87
|
-
} catch (e) {
|
88
|
-
reject(self, e);
|
89
96
|
}
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
}, 1);
|
97
|
+
|
98
|
+
function finale(self) {
|
99
|
+
if (self._state === 2 && self._deferreds.length === 0) {
|
100
|
+
setTimeout(function() {
|
101
|
+
if (!self._handled) {
|
102
|
+
onUnhandledRejection(self._value);
|
103
|
+
}
|
104
|
+
}, 1);
|
105
|
+
}
|
106
|
+
|
107
|
+
for (var i = 0, len = self._deferreds.length; i < len; i++) {
|
108
|
+
handle(self, self._deferreds[i]);
|
109
|
+
}
|
110
|
+
self._deferreds = null;
|
105
111
|
}
|
106
112
|
|
107
|
-
|
108
|
-
|
113
|
+
function Handler(onFulfilled, onRejected, promise) {
|
114
|
+
this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
|
115
|
+
this.onRejected = typeof onRejected === 'function' ? onRejected : null;
|
116
|
+
this.promise = promise;
|
109
117
|
}
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
done = true;
|
131
|
-
resolve(self, value);
|
132
|
-
}, function (reason) {
|
118
|
+
|
119
|
+
/**
|
120
|
+
* Take a potentially misbehaving resolver function and make sure
|
121
|
+
* onFulfilled and onRejected are only called once.
|
122
|
+
*
|
123
|
+
* Makes no guarantees about asynchrony.
|
124
|
+
*/
|
125
|
+
function doResolve(fn, self) {
|
126
|
+
var done = false;
|
127
|
+
try {
|
128
|
+
fn(function (value) {
|
129
|
+
if (done) return;
|
130
|
+
done = true;
|
131
|
+
resolve(self, value);
|
132
|
+
}, function (reason) {
|
133
|
+
if (done) return;
|
134
|
+
done = true;
|
135
|
+
reject(self, reason);
|
136
|
+
});
|
137
|
+
} catch (ex) {
|
133
138
|
if (done) return;
|
134
139
|
done = true;
|
135
|
-
reject(self,
|
136
|
-
}
|
137
|
-
} catch (ex) {
|
138
|
-
if (done) return;
|
139
|
-
done = true;
|
140
|
-
reject(self, ex);
|
140
|
+
reject(self, ex);
|
141
|
+
}
|
141
142
|
}
|
142
|
-
}
|
143
143
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
Promise.prototype.then = function (onFulfilled, onRejected) {
|
149
|
-
var prom = new Promise(noop);
|
150
|
-
handle(this, new Handler(onFulfilled, onRejected, prom));
|
151
|
-
return prom;
|
152
|
-
};
|
153
|
-
|
154
|
-
Promise.all = function () {
|
155
|
-
var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);
|
144
|
+
Promise.prototype['catch'] = function (onRejected) {
|
145
|
+
return this.then(null, onRejected);
|
146
|
+
};
|
156
147
|
|
157
|
-
|
158
|
-
|
159
|
-
|
148
|
+
Promise.prototype.then = function (onFulfilled, onRejected) {
|
149
|
+
var prom = new Promise(noop);
|
150
|
+
handle(this, new Handler(onFulfilled, onRejected, prom));
|
151
|
+
return prom;
|
152
|
+
};
|
160
153
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
154
|
+
Promise.all = function () {
|
155
|
+
var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);
|
156
|
+
|
157
|
+
return new Promise(function (resolve, reject) {
|
158
|
+
if (args.length === 0) return resolve([]);
|
159
|
+
var remaining = args.length;
|
160
|
+
|
161
|
+
function res(i, val) {
|
162
|
+
try {
|
163
|
+
if (val && (typeof val === 'object' || typeof val === 'function')) {
|
164
|
+
var then = val.then;
|
165
|
+
if (typeof then === 'function') {
|
166
|
+
then.call(val, function (val) {
|
167
|
+
res(i, val);
|
168
|
+
}, reject);
|
169
|
+
return;
|
170
|
+
}
|
170
171
|
}
|
172
|
+
args[i] = val;
|
173
|
+
if (--remaining === 0) {
|
174
|
+
resolve(args);
|
175
|
+
}
|
176
|
+
} catch (ex) {
|
177
|
+
reject(ex);
|
171
178
|
}
|
172
|
-
args[i] = val;
|
173
|
-
if (--remaining === 0) {
|
174
|
-
resolve(args);
|
175
|
-
}
|
176
|
-
} catch (ex) {
|
177
|
-
reject(ex);
|
178
179
|
}
|
179
|
-
}
|
180
180
|
|
181
|
-
|
182
|
-
|
181
|
+
for (var i = 0; i < args.length; i++) {
|
182
|
+
res(i, args[i]);
|
183
|
+
}
|
184
|
+
});
|
185
|
+
};
|
186
|
+
|
187
|
+
Promise.resolve = function (value) {
|
188
|
+
if (value && typeof value === 'object' && value.constructor === Promise) {
|
189
|
+
return value;
|
183
190
|
}
|
184
|
-
});
|
185
|
-
};
|
186
191
|
|
187
|
-
|
188
|
-
|
189
|
-
|
192
|
+
return new Promise(function (resolve) {
|
193
|
+
resolve(value);
|
194
|
+
});
|
195
|
+
};
|
196
|
+
|
197
|
+
Promise.reject = function (value) {
|
198
|
+
return new Promise(function (resolve, reject) {
|
199
|
+
reject(value);
|
200
|
+
});
|
201
|
+
};
|
202
|
+
|
203
|
+
Promise.race = function (values) {
|
204
|
+
return new Promise(function (resolve, reject) {
|
205
|
+
for (var i = 0, len = values.length; i < len; i++) {
|
206
|
+
values[i].then(resolve, reject);
|
207
|
+
}
|
208
|
+
});
|
209
|
+
};
|
210
|
+
|
211
|
+
/**
|
212
|
+
* Set the immediate function to execute callbacks
|
213
|
+
* @param fn {function} Function to execute
|
214
|
+
* @private
|
215
|
+
*/
|
216
|
+
Promise._setImmediateFn = function _setImmediateFn(fn) {
|
217
|
+
asap = fn;
|
218
|
+
};
|
219
|
+
|
220
|
+
Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
|
221
|
+
onUnhandledRejection = fn;
|
222
|
+
};
|
223
|
+
|
224
|
+
if (typeof module !== 'undefined' && module.exports) {
|
225
|
+
module.exports = Promise;
|
226
|
+
} else if (!root.Promise) {
|
227
|
+
root.Promise = Promise;
|
190
228
|
}
|
191
229
|
|
192
|
-
|
193
|
-
|
194
|
-
});
|
195
|
-
};
|
196
|
-
|
197
|
-
Promise.reject = function (value) {
|
198
|
-
return new Promise(function (resolve, reject) {
|
199
|
-
reject(value);
|
200
|
-
});
|
201
|
-
};
|
202
|
-
|
203
|
-
Promise.race = function (values) {
|
204
|
-
return new Promise(function (resolve, reject) {
|
205
|
-
for (var i = 0, len = values.length; i < len; i++) {
|
206
|
-
values[i].then(resolve, reject);
|
207
|
-
}
|
208
|
-
});
|
209
|
-
};
|
210
|
-
|
211
|
-
/**
|
212
|
-
* Set the immediate function to execute callbacks
|
213
|
-
* @param fn {function} Function to execute
|
214
|
-
* @private
|
215
|
-
*/
|
216
|
-
Promise._setImmediateFn = function _setImmediateFn(fn) {
|
217
|
-
asap = fn;
|
218
|
-
};
|
219
|
-
|
220
|
-
Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
|
221
|
-
onUnhandledRejection = fn;
|
222
|
-
};
|
223
|
-
|
224
|
-
if (typeof module !== 'undefined' && module.exports) {
|
225
|
-
module.exports = Promise;
|
226
|
-
} else if (!root.Promise) {
|
227
|
-
root.Promise = Promise;
|
228
|
-
}
|
229
|
-
|
230
|
-
})(this);
|
230
|
+
})(this);
|
231
|
+
}
|