///<reference path=".d.ts"/>
"use strict";
var Promise = require("bluebird");
var fiberBootstrap = require("./fiber-bootstrap");
function exported(moduleName) {
return function (target, propertyKey, descriptor) {
$injector.publicApi.__modules__[moduleName] = $injector.publicApi.__modules__[moduleName] || {};
$injector.publicApi.__modules__[moduleName][propertyKey] = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
return new Promise(function (onFulfilled, onRejected) {
var originalModule = $injector.resolve(moduleName);
var originalMethod = originalModule[propertyKey];
var result;
try {
result = originalMethod.apply(originalModule, args);
}
catch (err) {
onRejected(err);
return;
}
if (result && typeof result.wait === "function") {
fiberBootstrap.run(function () {
try {
var realResult = result.wait();
onFulfilled(realResult);
}
catch (err) {
onRejected(err);
}
});
}
else {
onFulfilled(result);
}
});
};
return descriptor;
};
}
exports.exported = exported;
|