Merge pull request #1430 from NativeScript/gatanasov/lazy-require-fixes

Revisit lazy require routine
This commit is contained in:
Hristo Hristov
2016-02-01 16:54:31 +02:00
63 changed files with 582 additions and 238 deletions

View File

@ -13,6 +13,27 @@ import http = require("http");
var requestIdCounter = 0;
var pendingRequests = {};
var utils: typeof utilsModule;
function ensureUtils() {
if (!utils) {
utils = require("utils/utils");
}
}
var imageSource: typeof imageSourceModule;
function ensureImageSource() {
if (!imageSource) {
imageSource = require("image-source");
}
}
var platform: typeof platformModule;
function ensurePlatform() {
if (!platform) {
platform = require("platform");
}
}
var completeCallback: com.tns.Async.CompleteCallback;
function ensureCompleteCallback() {
if (completeCallback) {
@ -60,12 +81,11 @@ function onRequestComplete(requestId: number, result: com.tns.Async.Http.Request
}
},
toJSON: () => {
var utils: typeof utilsModule = require("utils/utils");
ensureUtils();
return utils.parseJSON(result.responseAsString);
},
toImage: () => {
var imageSource: typeof imageSourceModule = require("image-source");
ensureImageSource();
return new Promise<any>((resolveImage, rejectImage) => {
if (result.responseAsImage != null) {
@ -134,7 +154,7 @@ function buildJavaOptions(options: http.HttpRequestOptions) {
javaOptions.headers = arrayList;
}
var platform: typeof platformModule = require("platform");
ensurePlatform();
// pass the maximum available image size to the request options in case we need a bitmap conversion
var screen = platform.screen.mainScreen;

View File

@ -2,7 +2,7 @@
* iOS specific http request implementation.
*/
import http = require("http");
import * as typesModule from "utils/types";
import * as types from "utils/types";
import * as imageSourceModule from "image-source";
import * as utilsModule from "utils/utils";
import * as fsModule from "file-system";
@ -11,12 +11,24 @@ var GET = "GET";
var USER_AGENT_HEADER = "User-Agent";
var USER_AGENT = "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25";
var utils: typeof utilsModule;
function ensureUtils() {
if (!utils) {
utils = require("utils/utils");
}
}
var imageSource: typeof imageSourceModule;
function ensureImageSource() {
if (!imageSource) {
imageSource = require("image-source");
}
}
export function request(options: http.HttpRequestOptions): Promise<http.HttpResponse> {
return new Promise<http.HttpResponse>((resolve, reject) => {
try {
var types: typeof typesModule = require("utils/types");
var sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration();
var queue = NSOperationQueue.mainQueue();
var session = NSURLSession.sessionWithConfigurationDelegateDelegateQueue(
@ -64,13 +76,11 @@ export function request(options: http.HttpRequestOptions): Promise<http.HttpResp
raw: data,
toString: () => { return NSDataToString(data); },
toJSON: () => {
var utils: typeof utilsModule = require("utils/utils");
ensureUtils();
return utils.parseJSON(NSDataToString(data));
},
toImage: () => {
var imageSource: typeof imageSourceModule = require("image-source");
ensureImageSource();
if (UIImage.imageWithData["async"]) {
return UIImage.imageWithData["async"](UIImage, [data])
.then(image => {