-
Notifications
You must be signed in to change notification settings - Fork 0
/
type-helper.js
81 lines (61 loc) · 2.04 KB
/
type-helper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/// <reference path="/intellisenseOnly.js" />
var define = define || (function (x) { module.exports = x(require, module.exports, module) || module.exports });
define(function (require, exports, module) {
var Promise = require('any-promise');
var intellisenseOnly = require("./intellisenseOnly.js")
Promise.prototype.assume = function (assumedResult, assumedError) {
var obj = this;
if (intellisenseOnly) obj.res = assumedResult;
obj.then(function (result) {
obj.res = result;
});
if (intellisenseOnly) obj.err = assumedError;
obj.error(function (error) {
obj.err = error;
})
return obj;
};
Promise.prototype.assumeType = function (assumedResult, assumedError) {
var obj = this;
if (intellisenseOnly) obj.res = new assumedResult();
obj.then(function (result) {
obj.res = result;
});
if (intellisenseOnly) obj.err = new assumedError();
obj.error(function (error) {
obj.err = error;
})
return obj;
};
{
var old = Promise.all;
Promise.all = function (allPromises) {
allPromises.forEach(function (item) {
if (!(item.res || item.err)) {
item.assume();
}
});
return old.call(this, allPromises);
};
}
var typeInfo = {};
typeInfo.requireNew = function (typedObject, moduleName) {
if (intellisenseOnly) {
return new (require(moduleName))();
}
return typedObject;
}
typeInfo.new = function (typedObject, type) {
if (intellisenseOnly) {
return new type();
}
return typedObject;
}
typeInfo.assume = function (typedObject, type) {
if (intellisenseOnly) {
return type;
}
return typedObject;
}
return typeInfo;
});