Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removing const / let in favor of var, for Chrome 45. See #2098. #2162

Merged
merged 4 commits into from
Apr 7, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
62 changes: 31 additions & 31 deletions src/common.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
import { errMsg } from './err-msg.js';

export const hasSymbol = typeof Symbol !== 'undefined';
export const hasSelf = typeof self !== 'undefined';
export const hasDocument = typeof document !== 'undefined';
export var hasSymbol = typeof Symbol !== 'undefined';
export var hasSelf = typeof self !== 'undefined';
export var hasDocument = typeof document !== 'undefined';

const envGlobal = hasSelf ? self : global;
var envGlobal = hasSelf ? self : global;
export { envGlobal as global };

// Loader-scoped baseUrl supported in Node.js only
export const BASE_URL = hasSymbol ? Symbol() : '_';
export var BASE_URL = hasSymbol ? Symbol() : '_';

export let baseUrl;
export var baseUrl;

if (hasDocument) {
const baseEl = document.querySelector('base[href]');
var baseEl = document.querySelector('base[href]');
if (baseEl)
baseUrl = baseEl.href;
}

if (!baseUrl && typeof location !== 'undefined') {
baseUrl = location.href.split('#')[0].split('?')[0];
const lastSepIndex = baseUrl.lastIndexOf('/');
var lastSepIndex = baseUrl.lastIndexOf('/');
if (lastSepIndex !== -1)
baseUrl = baseUrl.slice(0, lastSepIndex + 1);
}

if (!process.env.SYSTEM_BROWSER && !baseUrl && typeof process !== 'undefined') {
const cwd = process.cwd();
var cwd = process.cwd();
// TODO: encoding edge cases
baseUrl = 'file://' + (cwd[0] === '/' ? '' : '/') + cwd.replace(/\\/g, '/') + '/';
}

const backslashRegEx = /\\/g;
var backslashRegEx = /\\/g;
export function resolveIfNotPlainOrUrl (relUrl, parentUrl) {
if (relUrl.indexOf('\\') !== -1)
relUrl = relUrl.replace(backslashRegEx, '/');
Expand All @@ -43,13 +43,13 @@ export function resolveIfNotPlainOrUrl (relUrl, parentUrl) {
else if (relUrl[0] === '.' && (relUrl[1] === '/' || relUrl[1] === '.' && (relUrl[2] === '/' || relUrl.length === 2 && (relUrl += '/')) ||
relUrl.length === 1 && (relUrl += '/')) ||
relUrl[0] === '/') {
const parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1);
var parentProtocol = parentUrl.slice(0, parentUrl.indexOf(':') + 1);
// Disabled, but these cases will give inconsistent results for deep backtracking
//if (parentUrl[parentProtocol.length] !== '/')
// throw Error('Cannot resolve');
// read pathname from parent URL
// pathname taken to be part after leading "/"
let pathname;
var pathname;
if (parentUrl[parentProtocol.length + 1] === '/') {
// resolving to a :// so we need to read out the auth and host
if (parentProtocol !== 'file:') {
Expand All @@ -71,11 +71,11 @@ export function resolveIfNotPlainOrUrl (relUrl, parentUrl) {
// join together and split for removal of .. and . segments
// looping the string instead of anything fancy for perf reasons
// '../../../../../z' resolved to 'x/y' is just 'z'
const segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl;
var segmented = pathname.slice(0, pathname.lastIndexOf('/') + 1) + relUrl;

const output = [];
let segmentIndex = -1;
for (let i = 0; i < segmented.length; i++) {
var output = [];
var segmentIndex = -1;
for (var i = 0; i < segmented.length; i++) {
// busy reading a segment - only terminate on '/'
if (segmentIndex !== -1) {
if (segmented[i] === '/') {
Expand Down Expand Up @@ -125,19 +125,19 @@ export function resolveUrl (relUrl, parentUrl) {
}

function objectAssign (to, from) {
for (let p in from)
for (var p in from)
to[p] = from[p];
return to;
}

function resolveAndComposePackages (packages, outPackages, baseUrl, parentMap, parentUrl) {
for (let p in packages) {
const resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;
const rhs = packages[p];
for (var p in packages) {
var resolvedLhs = resolveIfNotPlainOrUrl(p, baseUrl) || p;
var rhs = packages[p];
// package fallbacks not currently supported
if (typeof rhs !== 'string')
continue;
const mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(rhs, baseUrl) || rhs, parentUrl);
var mapped = resolveImportMap(parentMap, resolveIfNotPlainOrUrl(rhs, baseUrl) || rhs, parentUrl);
if (!mapped) {
if (process.env.SYSTEM_PRODUCTION)
targetWarning(2, p, rhs);
Expand All @@ -150,14 +150,14 @@ function resolveAndComposePackages (packages, outPackages, baseUrl, parentMap, p
}

export function resolveAndComposeImportMap (json, baseUrl, parentMap) {
const outMap = { imports: objectAssign({}, parentMap.imports), scopes: objectAssign({}, parentMap.scopes) };
var outMap = { imports: objectAssign({}, parentMap.imports), scopes: objectAssign({}, parentMap.scopes) };

if (json.imports)
resolveAndComposePackages(json.imports, outMap.imports, baseUrl, parentMap, null);

if (json.scopes)
for (let s in json.scopes) {
const resolvedScope = resolveUrl(s, baseUrl);
for (var s in json.scopes) {
var resolvedScope = resolveUrl(s, baseUrl);
resolveAndComposePackages(json.scopes[s], outMap.scopes[resolvedScope] || (outMap.scopes[resolvedScope] = {}), baseUrl, parentMap, resolvedScope);
}

Expand All @@ -167,18 +167,18 @@ export function resolveAndComposeImportMap (json, baseUrl, parentMap) {
function getMatch (path, matchObj) {
if (matchObj[path])
return path;
let sepIndex = path.length;
var sepIndex = path.length;
do {
const segment = path.slice(0, sepIndex + 1);
var segment = path.slice(0, sepIndex + 1);
if (segment in matchObj)
return segment;
} while ((sepIndex = path.lastIndexOf('/', sepIndex - 1)) !== -1)
}

function applyPackages (id, packages) {
const pkgName = getMatch(id, packages);
var pkgName = getMatch(id, packages);
if (pkgName) {
const pkg = packages[pkgName];
var pkg = packages[pkgName];
if (pkg === null) return;
if (id.length > pkgName.length && pkg[pkg.length - 1] !== '/') {
if (process.env.SYSTEM_PRODUCTION)
Expand All @@ -196,10 +196,10 @@ function targetWarning (code, match, target, msg) {
}

export function resolveImportMap (importMap, resolvedOrPlain, parentUrl) {
const scopes = importMap.scopes;
let scopeUrl = parentUrl && getMatch(parentUrl, scopes);
var scopes = importMap.scopes;
var scopeUrl = parentUrl && getMatch(parentUrl, scopes);
while (scopeUrl) {
const packageResolution = applyPackages(resolvedOrPlain, scopes[scopeUrl]);
var packageResolution = applyPackages(resolvedOrPlain, scopes[scopeUrl]);
if (packageResolution)
return packageResolution;
scopeUrl = getMatch(scopeUrl.slice(0, scopeUrl.lastIndexOf('/')), scopes);
Expand Down
50 changes: 25 additions & 25 deletions src/extras/amd.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,29 @@ import { errMsg } from '../err-msg.js';
* Support for AMD loading
*/
(function (global) {
const systemPrototype = global.System.constructor.prototype;
var systemPrototype = global.System.constructor.prototype;

const emptyInstantiation = [[], function () { return {} }];
var emptyInstantiation = [[], function () { return {} }];

function unsupportedRequire () {
throw Error(process.env.SYSTEM_PRODUCTION ? errMsg(7) : errMsg(7, 'AMD require not supported.'));
}

let tmpRegister, firstNamedDefine;
var tmpRegister, firstNamedDefine;

function emptyFn () {}

const requireExportsModule = ['require', 'exports', 'module'];
var requireExportsModule = ['require', 'exports', 'module'];

function createAMDRegister (amdDefineDeps, amdDefineExec) {
const exports = {};
const module = { exports: exports };
const depModules = [];
const setters = [];
let splice = 0;
for (let i = 0; i < amdDefineDeps.length; i++) {
const id = amdDefineDeps[i];
const index = setters.length;
var exports = {};
var module = { exports: exports };
var depModules = [];
var setters = [];
var splice = 0;
for (var i = 0; i < amdDefineDeps.length; i++) {
var id = amdDefineDeps[i];
var index = setters.length;
if (id === 'require') {
depModules[i] = unsupportedRequire;
splice++;
Expand All @@ -41,7 +41,7 @@ import { errMsg } from '../err-msg.js';
}
else {
// needed for ie11 lack of iteration scope
const idx = i;
var idx = i;
setters.push(function (ns) {
depModules[idx] = ns.__useDefault ? ns.default : ns;
});
Expand All @@ -51,13 +51,13 @@ import { errMsg } from '../err-msg.js';
}
if (splice)
amdDefineDeps.length -= splice;
const amdExec = amdDefineExec;
var amdExec = amdDefineExec;
return [amdDefineDeps, function (_export) {
_export({ default: exports, __useDefault: true });
return {
setters: setters,
execute: function () {
const amdResult = amdExec.apply(exports, depModules);
var amdResult = amdExec.apply(exports, depModules);
if (amdResult !== undefined)
module.exports = amdResult;
if (exports !== module.exports)
Expand All @@ -68,34 +68,34 @@ import { errMsg } from '../err-msg.js';
}

// hook System.register to know the last declaration binding
let lastRegisterDeclare;
const systemRegister = systemPrototype.register;
var lastRegisterDeclare;
var systemRegister = systemPrototype.register;
systemPrototype.register = function (name, deps, declare) {
lastRegisterDeclare = typeof name === 'string' ? declare : deps;
systemRegister.apply(this, arguments);
};

const instantiate = systemPrototype.instantiate;
var instantiate = systemPrototype.instantiate;
systemPrototype.instantiate = function() {
// Reset "currently executing script"
amdDefineDeps = null;
return instantiate.apply(this, arguments);
};

const getRegister = systemPrototype.getRegister;
var getRegister = systemPrototype.getRegister;
systemPrototype.getRegister = function () {
if (tmpRegister)
return tmpRegister;

const _firstNamedDefine = firstNamedDefine;
var _firstNamedDefine = firstNamedDefine;
firstNamedDefine = null;

const register = getRegister.call(this);
var register = getRegister.call(this);
// if its an actual System.register leave it
if (register && register[1] === lastRegisterDeclare)
return register;

const _amdDefineDeps = amdDefineDeps;
var _amdDefineDeps = amdDefineDeps;
amdDefineDeps = null;

// If the script registered a named module, return that module instead of re-instantiating it.
Expand All @@ -109,11 +109,11 @@ import { errMsg } from '../err-msg.js';

return createAMDRegister(_amdDefineDeps, amdDefineExec);
};
let amdDefineDeps, amdDefineExec;
var amdDefineDeps, amdDefineExec;
global.define = function (name, deps, execute) {
// define('', [], function () {})
if (typeof name === 'string') {
const depsAndExec = getDepsAndExec(deps, execute);
var depsAndExec = getDepsAndExec(deps, execute);
if (amdDefineDeps) {
if (!System.registerRegistry) {
throw Error(process.env.SYSTEM_PRODUCTION ? errMsg(8) : errMsg(8, 'Include the named register extension for SystemJS named AMD support.'));
Expand All @@ -130,7 +130,7 @@ import { errMsg } from '../err-msg.js';
deps = execute;
}
}
const depsAndExec = getDepsAndExec(name, deps);
var depsAndExec = getDepsAndExec(name, deps);
amdDefineDeps = depsAndExec[0];
amdDefineExec = depsAndExec[1];
};
Expand Down
26 changes: 13 additions & 13 deletions src/extras/global.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
* (Included by default in system.js build)
*/
(function (global) {
const systemJSPrototype = System.constructor.prototype;
var systemJSPrototype = System.constructor.prototype;

// safari unpredictably lists some new globals first or second in object order
let firstGlobalProp, secondGlobalProp, lastGlobalProp;
var firstGlobalProp, secondGlobalProp, lastGlobalProp;
function getGlobalProp () {
let cnt = 0;
let lastProp;
for (let p in global) {
var cnt = 0;
var lastProp;
for (var p in global) {
// do not check frames cause it could be removed during import
if (shouldSkipProperty(p))
continue;
Expand All @@ -28,7 +28,7 @@
// alternatively Object.keys(global).pop()
// but this may be faster (pending benchmarks)
firstGlobalProp = secondGlobalProp = undefined;
for (let p in global) {
for (var p in global) {
// do not check frames cause it could be removed during import
if (shouldSkipProperty(p))
continue;
Expand All @@ -41,29 +41,29 @@
return lastGlobalProp;
}

const impt = systemJSPrototype.import;
var impt = systemJSPrototype.import;
systemJSPrototype.import = function (id, parentUrl) {
noteGlobalProps();
return impt.call(this, id, parentUrl);
};

const emptyInstantiation = [[], function () { return {} }];
var emptyInstantiation = [[], function () { return {} }];

const getRegister = systemJSPrototype.getRegister;
var getRegister = systemJSPrototype.getRegister;
systemJSPrototype.getRegister = function () {
const lastRegister = getRegister.call(this);
var lastRegister = getRegister.call(this);
if (lastRegister)
return lastRegister;

// no registration -> attempt a global detection as difference from snapshot
// when multiple globals, we take the global value to be the last defined new global object property
// for performance, this will not support multi-version / global collisions as previous SystemJS versions did
// note in Edge, deleting and re-adding a global does not change its ordering
const globalProp = getGlobalProp();
var globalProp = getGlobalProp();
if (!globalProp)
return emptyInstantiation;

let globalExport;
var globalExport;
try {
globalExport = global[globalProp];
}
Expand All @@ -80,7 +80,7 @@
}];
};

const isIE11 = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Trident') !== -1;
var isIE11 = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Trident') !== -1;

function shouldSkipProperty(p) {
return !global.hasOwnProperty(p)
Expand Down