Skip to content

Commit

Permalink
implement loader file cache
Browse files Browse the repository at this point in the history
  • Loading branch information
guybedford committed Dec 22, 2014
1 parent 5480413 commit 4baa172
Showing 1 changed file with 63 additions and 37 deletions.
100 changes: 63 additions & 37 deletions lib/core.js
Expand Up @@ -176,38 +176,64 @@ exports.checkDlLoader = function() {
});
}

var ghh = 'https://raw.githubusercontent.com';
var ghh = 'https://raw.githubusercontent.com/';
var loaderVersions = ['0.10', '0.10', '0.0.74'];

function doLoaderDownload(files) {

var cacheDir = path.join(config.HOME, '.jspm', 'loader-files');

return Promise.all(Object.keys(files).map(function(url) {
var filename = files[url];
return asp(request)({
method: 'get',
url: ghh + url,
headers: {
'user-agent': 'jspm'
}
var cachePath = path.join(cacheDir, url);

return asp(mkdirp)(path.dirname(cachePath))
.then(function() {
return asp(fs.readFile)(cachePath)
.catch(function(e) {
if (e.code == 'ENOENT')
return false;
throw e;
});
})
.then(function(res) {
if (res.statusCode != 200)
throw 'Request error ' + res.statusCode + ' for ' + ghh + url;

var source = res.body;

if (filename == 'traceur.js') {
source = source.replace('traceur.min.map', 'traceur.js.map');
}
else if (filename == 'traceur.js.map') {
source = source.replace('"traceur.js"', '"traceur.src.js"').replace('"traceur.min.js"', '"traceur.js"');
}
else if (filename == 'traceur-runtime.js') {
source = source.replace('traceur-runtime.min.map', 'traceur-runtime.js.map');
}
else if (filename == 'traceur-runtime.js.map') {
source = source.replace('"traceur-runtime.js"', '"traceur-runtime.src.js"').replace('"traceur-runtime.min.js"', '"traceur-runtime.js"');
}
.then(function(source) {
if (source)
return source;

return asp(request)({
method: 'get',
url: ghh + url,
headers: {
'user-agent': 'jspm'
}
})
.then(function(res) {
if (res.statusCode != 200)
throw 'Request error ' + res.statusCode + ' for ' + ghh + url;

var source = res.body.toString();

if (filename == 'traceur.js') {
source = source.replace('traceur.min.map', 'traceur.js.map');
}
else if (filename == 'traceur.js.map') {
source = source.replace('"traceur.js"', '"traceur.src.js"').replace('"traceur.min.js"', '"traceur.js"');
}
else if (filename == 'traceur-runtime.js') {
source = source.replace('traceur-runtime.min.map', 'traceur-runtime.js.map');
}
else if (filename == 'traceur-runtime.js.map') {
source = source.replace('"traceur-runtime.js"', '"traceur-runtime.src.js"').replace('"traceur-runtime.min.js"', '"traceur-runtime.js"');
}


return asp(fs.writeFile)(cachePath, source)
.then(function() {
return source;
});
});
})
.then(function(source) {
return asp(fs.writeFile)(path.resolve(config.pjson.packages, filename), source);
})
.then(function() {
Expand Down Expand Up @@ -242,10 +268,10 @@ exports.dlLoader = function(unminified, edge) {
.then(function(getVersionMatch) {
var version = getVersionMatch(!edge ? loaderVersions[0] : 'master')
var downloadFiles = {};
downloadFiles['/ModuleLoader/es6-module-loader/' + (edge ? '' : 'v') + version.version + '/dist/es6-module-loader' + min1 + '.js'] = 'es6-module-loader.js';
downloadFiles['ModuleLoader/es6-module-loader/' + (edge ? '' : 'v') + version.version + '/dist/es6-module-loader' + min1 + '.js'] = 'es6-module-loader.js';
if (!unminified) {
downloadFiles['/ModuleLoader/es6-module-loader/' + (edge ? '' : 'v') + version.version + '/dist/es6-module-loader.src.js'] = 'es6-module-loader.src.js';
downloadFiles['/ModuleLoader/es6-module-loader/' + (edge ? '' : 'v') + version.version + '/dist/es6-module-loader.js.map'] = 'es6-module-loader.js.map';
downloadFiles['ModuleLoader/es6-module-loader/' + (edge ? '' : 'v') + version.version + '/dist/es6-module-loader.src.js'] = 'es6-module-loader.src.js';
downloadFiles['ModuleLoader/es6-module-loader/' + (edge ? '' : 'v') + version.version + '/dist/es6-module-loader.js.map'] = 'es6-module-loader.js.map';
}
return doLoaderDownload(downloadFiles);
}),
Expand All @@ -254,10 +280,10 @@ exports.dlLoader = function(unminified, edge) {
.then(function(getVersionMatch) {
var version = getVersionMatch(!edge ? loaderVersions[1] : 'master');
var downloadFiles = {};
downloadFiles['/systemjs/systemjs/' + version.version + '/dist/system' + min1 + '.js'] = 'system.js';
downloadFiles['systemjs/systemjs/' + version.version + '/dist/system' + min1 + '.js'] = 'system.js';
if (!unminified) {
downloadFiles['/systemjs/systemjs/' + version.version + '/dist/system.src.js'] = 'system.src.js';
downloadFiles['/systemjs/systemjs/' + version.version + '/dist/system.js.map'] = 'system.js.map';
downloadFiles['systemjs/systemjs/' + version.version + '/dist/system.src.js'] = 'system.src.js';
downloadFiles['systemjs/systemjs/' + version.version + '/dist/system.js.map'] = 'system.js.map';
}
return doLoaderDownload(downloadFiles);
}),
Expand All @@ -266,13 +292,13 @@ exports.dlLoader = function(unminified, edge) {
.then(function(getVersionMatch) {
var version = getVersionMatch(!edge ? loaderVersions[2] : 'master')
var downloadFiles = {};
downloadFiles['/jmcriffey/bower-traceur/' + version.version + '/traceur' + min2 + '.js'] = 'traceur.js';
downloadFiles['/jmcriffey/bower-traceur-runtime/' + version.version + '/traceur-runtime' + min2 + '.js'] = 'traceur-runtime.js';
downloadFiles['jmcriffey/bower-traceur/' + version.version + '/traceur' + min2 + '.js'] = 'traceur.js';
downloadFiles['jmcriffey/bower-traceur-runtime/' + version.version + '/traceur-runtime' + min2 + '.js'] = 'traceur-runtime.js';
if (!unminified) {
downloadFiles['/jmcriffey/bower-traceur/' + version.version + '/traceur.js'] = 'traceur.src.js';
downloadFiles['/jmcriffey/bower-traceur/' + version.version + '/traceur.min.map'] = 'traceur.js.map';
downloadFiles['/jmcriffey/bower-traceur-runtime/' + version.version + '/traceur-runtime.js'] = 'traceur-runtime.src.js';
downloadFiles['/jmcriffey/bower-traceur-runtime/' + version.version + '/traceur-runtime.min.map'] = 'traceur-runtime.js.map';
downloadFiles['jmcriffey/bower-traceur/' + version.version + '/traceur.js'] = 'traceur.src.js';
downloadFiles['jmcriffey/bower-traceur/' + version.version + '/traceur.min.map'] = 'traceur.js.map';
downloadFiles['jmcriffey/bower-traceur-runtime/' + version.version + '/traceur-runtime.js'] = 'traceur-runtime.src.js';
downloadFiles['jmcriffey/bower-traceur-runtime/' + version.version + '/traceur-runtime.min.map'] = 'traceur-runtime.js.map';
}
return doLoaderDownload(downloadFiles);
})
Expand Down

0 comments on commit 4baa172

Please sign in to comment.