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.
		
		
		
		
		
			
		
			
				
					
					
						
							167 lines
						
					
					
						
							3.7 KiB
						
					
					
				
			
		
		
	
	
							167 lines
						
					
					
						
							3.7 KiB
						
					
					
				/** | 
						|
 * @fileoverview Defines environment settings and globals. | 
						|
 * @author Elan Shanker | 
						|
 */ | 
						|
"use strict"; | 
						|
 | 
						|
//------------------------------------------------------------------------------ | 
						|
// Requirements | 
						|
//------------------------------------------------------------------------------ | 
						|
 | 
						|
const globals = require("globals"); | 
						|
 | 
						|
//------------------------------------------------------------------------------ | 
						|
// Helpers | 
						|
//------------------------------------------------------------------------------ | 
						|
 | 
						|
/** | 
						|
 * Get the object that has differentce. | 
						|
 * @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 | 
						|
}; | 
						|
 | 
						|
//------------------------------------------------------------------------------ | 
						|
// Public Interface | 
						|
//------------------------------------------------------------------------------ | 
						|
 | 
						|
/** @type {Map<string, import("../lib/shared/types").Environment>} */ | 
						|
module.exports = new Map(Object.entries({ | 
						|
 | 
						|
    // Language | 
						|
    builtin: { | 
						|
        globals: globals.es5 | 
						|
    }, | 
						|
    es6: { | 
						|
        globals: newGlobals2015, | 
						|
        parserOptions: { | 
						|
            ecmaVersion: 6 | 
						|
        } | 
						|
    }, | 
						|
    es2015: { | 
						|
        globals: newGlobals2015, | 
						|
        parserOptions: { | 
						|
            ecmaVersion: 6 | 
						|
        } | 
						|
    }, | 
						|
    es2017: { | 
						|
        globals: { ...newGlobals2015, ...newGlobals2017 }, | 
						|
        parserOptions: { | 
						|
            ecmaVersion: 8 | 
						|
        } | 
						|
    }, | 
						|
    es2020: { | 
						|
        globals: { ...newGlobals2015, ...newGlobals2017, ...newGlobals2020 }, | 
						|
        parserOptions: { | 
						|
            ecmaVersion: 11 | 
						|
        } | 
						|
    }, | 
						|
 | 
						|
    // 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 | 
						|
    } | 
						|
}));
 | 
						|
 |