You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
4.9 KiB
216 lines
4.9 KiB
1 month ago
|
/**
|
||
|
* @fileoverview Defines environment settings and globals.
|
||
|
* @author Elan Shanker
|
||
|
*/
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// Requirements
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
import globals from "globals";
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// Helpers
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Get the object that has difference.
|
||
|
* @param {Record<string,boolean>} current The newer object.
|
||
|
* @param {Record<string,boolean>} prev The older object.
|
||
|
* @returns {Record<string,boolean>} The difference object.
|
||
|
*/
|
||
|
function getDiff(current, prev) {
|
||
|
const retv = {};
|
||
|
|
||
|
for (const [key, value] of Object.entries(current)) {
|
||
|
if (!Object.hasOwnProperty.call(prev, key)) {
|
||
|
retv[key] = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return retv;
|
||
|
}
|
||
|
|
||
|
const newGlobals2015 = getDiff(globals.es2015, globals.es5); // 19 variables such as Promise, Map, ...
|
||
|
const newGlobals2017 = {
|
||
|
Atomics: false,
|
||
|
SharedArrayBuffer: false
|
||
|
};
|
||
|
const newGlobals2020 = {
|
||
|
BigInt: false,
|
||
|
BigInt64Array: false,
|
||
|
BigUint64Array: false,
|
||
|
globalThis: false
|
||
|
};
|
||
|
|
||
|
const newGlobals2021 = {
|
||
|
AggregateError: false,
|
||
|
FinalizationRegistry: false,
|
||
|
WeakRef: false
|
||
|
};
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// Public Interface
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
/** @type {Map<string, import("../lib/shared/types").Environment>} */
|
||
|
export default new Map(Object.entries({
|
||
|
|
||
|
// Language
|
||
|
builtin: {
|
||
|
globals: globals.es5
|
||
|
},
|
||
|
es6: {
|
||
|
globals: newGlobals2015,
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 6
|
||
|
}
|
||
|
},
|
||
|
es2015: {
|
||
|
globals: newGlobals2015,
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 6
|
||
|
}
|
||
|
},
|
||
|
es2016: {
|
||
|
globals: newGlobals2015,
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 7
|
||
|
}
|
||
|
},
|
||
|
es2017: {
|
||
|
globals: { ...newGlobals2015, ...newGlobals2017 },
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 8
|
||
|
}
|
||
|
},
|
||
|
es2018: {
|
||
|
globals: { ...newGlobals2015, ...newGlobals2017 },
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 9
|
||
|
}
|
||
|
},
|
||
|
es2019: {
|
||
|
globals: { ...newGlobals2015, ...newGlobals2017 },
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 10
|
||
|
}
|
||
|
},
|
||
|
es2020: {
|
||
|
globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 },
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 11
|
||
|
}
|
||
|
},
|
||
|
es2021: {
|
||
|
globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 12
|
||
|
}
|
||
|
},
|
||
|
es2022: {
|
||
|
globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 13
|
||
|
}
|
||
|
},
|
||
|
es2023: {
|
||
|
globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 14
|
||
|
}
|
||
|
},
|
||
|
es2024: {
|
||
|
globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020, ...newGlobals2021 },
|
||
|
parserOptions: {
|
||
|
ecmaVersion: 15
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// Platforms
|
||
|
browser: {
|
||
|
globals: globals.browser
|
||
|
},
|
||
|
node: {
|
||
|
globals: globals.node,
|
||
|
parserOptions: {
|
||
|
ecmaFeatures: {
|
||
|
globalReturn: true
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
"shared-node-browser": {
|
||
|
globals: globals["shared-node-browser"]
|
||
|
},
|
||
|
worker: {
|
||
|
globals: globals.worker
|
||
|
},
|
||
|
serviceworker: {
|
||
|
globals: globals.serviceworker
|
||
|
},
|
||
|
|
||
|
// Frameworks
|
||
|
commonjs: {
|
||
|
globals: globals.commonjs,
|
||
|
parserOptions: {
|
||
|
ecmaFeatures: {
|
||
|
globalReturn: true
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
amd: {
|
||
|
globals: globals.amd
|
||
|
},
|
||
|
mocha: {
|
||
|
globals: globals.mocha
|
||
|
},
|
||
|
jasmine: {
|
||
|
globals: globals.jasmine
|
||
|
},
|
||
|
jest: {
|
||
|
globals: globals.jest
|
||
|
},
|
||
|
phantomjs: {
|
||
|
globals: globals.phantomjs
|
||
|
},
|
||
|
jquery: {
|
||
|
globals: globals.jquery
|
||
|
},
|
||
|
qunit: {
|
||
|
globals: globals.qunit
|
||
|
},
|
||
|
prototypejs: {
|
||
|
globals: globals.prototypejs
|
||
|
},
|
||
|
shelljs: {
|
||
|
globals: globals.shelljs
|
||
|
},
|
||
|
meteor: {
|
||
|
globals: globals.meteor
|
||
|
},
|
||
|
mongo: {
|
||
|
globals: globals.mongo
|
||
|
},
|
||
|
protractor: {
|
||
|
globals: globals.protractor
|
||
|
},
|
||
|
applescript: {
|
||
|
globals: globals.applescript
|
||
|
},
|
||
|
nashorn: {
|
||
|
globals: globals.nashorn
|
||
|
},
|
||
|
atomtest: {
|
||
|
globals: globals.atomtest
|
||
|
},
|
||
|
embertest: {
|
||
|
globals: globals.embertest
|
||
|
},
|
||
|
webextensions: {
|
||
|
globals: globals.webextensions
|
||
|
},
|
||
|
greasemonkey: {
|
||
|
globals: globals.greasemonkey
|
||
|
}
|
||
|
}));
|