Skip to content

Commit

Permalink
0.18.9
Browse files Browse the repository at this point in the history
  • Loading branch information
guybedford committed Aug 9, 2015
1 parent e7ac0cc commit b622cc1
Show file tree
Hide file tree
Showing 9 changed files with 215 additions and 180 deletions.
6 changes: 3 additions & 3 deletions dist/system-csp-production.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/system-csp-production.js.map

Large diffs are not rendered by default.

183 changes: 102 additions & 81 deletions dist/system-csp-production.src.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* SystemJS v0.18.8
* SystemJS v0.18.9
*/
(function() {
function bootstrap() {(function(__global) {
Expand Down Expand Up @@ -1188,6 +1188,7 @@ hook('import', function(systemImport) {
For easy normalization canonicalization with latest URL support.
*/
var packageProperties = ['main', 'format', 'defaultExtension', 'meta', 'map'];
SystemJSLoader.prototype.config = function(cfg) {

// always configure baseURL first
Expand Down Expand Up @@ -1255,8 +1256,11 @@ SystemJSLoader.prototype.config = function(cfg) {
prop = prop.substr(0, prop.length - 3);

this.packages[prop]= this.packages[prop] || {};
for (var q in cfg.packages[p])
for (var q in cfg.packages[p]) {
if (indexOf.call(packageProperties, q) == -1 && typeof console != 'undefined' && console.warn)
console.warn('"' + q + '" is not a valid package configuration option in package ' + p);
this.packages[prop][q] = cfg.packages[p][q];
}
}
}

Expand Down Expand Up @@ -2427,6 +2431,10 @@ hook('normalize', function(normalize) {
if (this.has(normalized))
return normalized;

// percent encode just '#' in urls
if (isBrowser)
normalized = normalized.replace(/#/g, '%23');

if (normalized.match(absURLRegEx)) {
// defaultJSExtensions backwards compatibility
if (this.defaultJSExtensions && normalized.substr(normalized.length - 3, 3) != '.js')
Expand Down Expand Up @@ -2473,11 +2481,11 @@ hook('normalize', function(normalize) {
* './vendor/another.js': './another/index.js',
* // test.js / test -> lib/test.js
* './test.js': './lib/test.js',
* },
* env: {
* 'browser': {
* main: 'browser.js'
* }
*
* // environment-specific map configurations
* './index.js': {
* '~browser': './index-node.js'
* }
* }
* }
* };
Expand All @@ -2495,6 +2503,7 @@ hook('normalize', function(normalize) {
* - defaultJSExtensions applies after map when defaultExtension is not set
* - if a meta value is available for a module, map and defaultExtension are skipped
* - like global map, package map also applies to subpaths (sizzle/x, ./vendor/another/sub)
* - condition module map is '@env' module in package or '@system-env' globally
*
* In addition, the following meta properties will be allowed to be package
* -relative as well in the package meta config:
Expand All @@ -2519,43 +2528,6 @@ hook('normalize', function(normalize) {
}
}

function getPackageConfig(loader, pkgName) {
var pkgConfig = loader.packages[pkgName];

if (!pkgConfig.env)
return Promise.resolve(pkgConfig);

// check environment conditions
// default environment condition is '@env' in package or '@system-env' globally
return loader['import'](pkgConfig.map['@env'] || '@system-env', pkgName)
.then(function(env) {
// derived config object
var pkg = {};
for (var p in pkgConfig)
if (p !== 'map' & p !== 'env')
pkg[p] = pkgConfig[p];

pkg.map = {};
for (var p in pkgConfig.map)
pkg.map[p] = pkgConfig.map[p];

for (var e in pkgConfig.env) {
if (env[e]) {
var envConfig = pkgConfig.env[e];
if (envConfig.main)
pkg.main = envConfig.main;
for (var m in envConfig.map)
pkg.map[m] = envConfig.map[m];
}
}

// store the derived environment config so we have this cached for next time
loader.packages[pkgName] = pkg;

return pkg;
});
}

function applyMap(map, name) {
var bestMatch, bestMatchLength = 0;

Expand All @@ -2568,13 +2540,38 @@ hook('normalize', function(normalize) {
bestMatchLength = curMatchLength;
}
}
if (bestMatch)
return map[bestMatch] + name.substr(bestMatch.length);

return bestMatch;
}

SystemJSLoader.prototype.normalizeSync = SystemJSLoader.prototype.normalize;
function envMap(loader, pkgName, pkgMap, name) {
var map = applyMap(pkgMap, name);
var mapped = pkgMap[map];

hook('normalize', function(normalize) {
// conditional package map
if (mapped) {
if (typeof mapped == 'object') {
return loader['import'](pkgMap['@env'] || '@system-env', pkgName)
.then(function(env) {
// first map condition to match is used
for (var e in mapped) {
var negate = e[0] == '~';

var value = readMemberExpression(negate ? e.substr(1) : e, env);

if (!negate && value || negate && !value)
return mapped[e] + name.substr(map.length);
}
});
}
// normal map
else {
return mapped + name.substr(map.length);
}
}
}

function createPackageNormalize(normalize, sync) {
return function(name, parentName) {
// apply contextual package map first
if (parentName) {
Expand All @@ -2586,11 +2583,15 @@ hook('normalize', function(normalize) {
if (parentPackage && name[0] !== '.') {
var parentMap = this.packages[parentPackage].map;
if (parentMap) {
name = applyMap(parentMap, name) || name;
var map = applyMap(parentMap, name);

// relative maps are package-relative
if (name[0] === '.')
parentName = parentPackage + '/';
if (map) {
name = parentMap[map] + name.substr(map.length);

// relative maps are package-relative
if (name[0] === '.')
parentName = parentPackage + '/';
}
}
}

Expand All @@ -2611,40 +2612,50 @@ hook('normalize', function(normalize) {
var loader = this;

if (pkgName) {
return getPackageConfig(this, pkgName)
.then(function(pkg) {
// main
if (pkgName === normalized && pkg.main)
normalized += '/' + (pkg.main.substr(0, 2) == './' ? pkg.main.substr(2) : pkg.main);

if (normalized.substr(pkgName.length) == '/')
return normalized;

// defaultExtension & defaultJSExtension
// if we have meta for this package, don't do defaultExtensions
var defaultExtension = '';
if (!pkg.meta || !pkg.meta[normalized.substr(pkgName.length + 1)]) {
// apply defaultExtension

if ('defaultExtension' in pkg) {
if (pkg.defaultExtension !== false && normalized.split('/').pop().lastIndexOf('.') == -1)
defaultExtension = '.' + pkg.defaultExtension;
}
// apply defaultJSExtensions if defaultExtension not set
else if (defaultJSExtension) {
defaultExtension = '.js';
}
var pkg = loader.packages[pkgName];
// main
if (pkgName === normalized && pkg.main)
normalized += '/' + (pkg.main.substr(0, 2) == './' ? pkg.main.substr(2) : pkg.main);

if (normalized.substr(pkgName.length) == '/')
return normalized;

// defaultExtension & defaultJSExtension
// if we have meta for this package, don't do defaultExtensions
var defaultExtension = '';
if (!pkg.meta || !pkg.meta[normalized.substr(pkgName.length + 1)]) {
// apply defaultExtension

if ('defaultExtension' in pkg) {
if (pkg.defaultExtension !== false && normalized.split('/').pop().lastIndexOf('.') == -1)
defaultExtension = '.' + pkg.defaultExtension;
}
// apply defaultJSExtensions if defaultExtension not set
else if (defaultJSExtension) {
defaultExtension = '.js';
}
}

// sync normalize does not apply package map
if (sync || !pkg.map)
return normalized + defaultExtension;

var subPath = '.' + normalized.substr(pkgName.length);

// apply submap checking without then with defaultExtension
var subPath = '.' + normalized.substr(pkgName.length);
var mapped = applyMap(pkg.map, subPath) || defaultExtension && applyMap(pkg.map, subPath + defaultExtension);
// apply submap checking without then with defaultExtension
return Promise.resolve(envMap(loader, pkgName, pkg.map, subPath))
.then(function(mapped) {
if (mapped)
return mapped;

if (defaultExtension)
return envMap(loader, pkgName, pkg.map, subPath + defaultExtension);
})
.then(function(mapped) {
if (mapped)
normalized = mapped.substr(0, 2) == './' ? pkgName + mapped.substr(1) : normalize.call(loader, mapped);
else
normalized += defaultExtension;


return normalized;
});
}
Expand All @@ -2655,6 +2666,16 @@ hook('normalize', function(normalize) {

return normalized;
};
}

SystemJSLoader.prototype.normalizeSync = SystemJSLoader.prototype.normalize;

hook('normalizeSync', function(normalize) {
return createPackageNormalize(normalize, true);
});

hook('normalize', function(normalize) {
return createPackageNormalize(normalize, false);
});

hook('locate', function(locate) {
Expand Down Expand Up @@ -2989,7 +3010,7 @@ hook('normalize', function(normalize) {
var bestDepth = 0;
var wildcardIndex;
for (var module in meta) {
wildcardIndex = indexOf.call(module, '*');
wildcardIndex = module.indexOf('*');
if (wildcardIndex === -1)
continue;
if (module.substr(0, wildcardIndex) === name.substr(0, wildcardIndex)
Expand Down
2 changes: 1 addition & 1 deletion dist/system-register-only.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/system-register-only.src.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* SystemJS v0.18.8
* SystemJS v0.18.9
*/
(function(__global) {

Expand Down
6 changes: 3 additions & 3 deletions dist/system.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/system.js.map

Large diffs are not rendered by default.

0 comments on commit b622cc1

Please sign in to comment.