| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | /** * @fileoverview Provides utilities for setting up environments. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */"use strict";var path = require("path");var helpers = require("../helpers");var globals = require("../globals");/** * Obtains the globals for a list of files. * * @param {Array.<String>} files *   The array of files to get globals for. The paths are relative to the topsrcdir. * @returns {Object} *   Returns an object with keys of the global names and values of if they are *   writable or not. */function getGlobalsForScripts(environmentName, files, extraDefinitions) {  let fileGlobals = extraDefinitions;  const root = helpers.rootDir;  for (const file of files) {    const fileName = path.join(root, file);    try {      fileGlobals = fileGlobals.concat(globals.getGlobalsForFile(fileName));    } catch (e) {      console.error(`Could not load globals from file ${fileName}: ${e}`);      console.error(        `You may need to update the mappings for the ${environmentName} environment`      );      throw new Error(`Could not load globals from file ${fileName}: ${e}`);    }  }  var globalObjects = {};  for (let global of fileGlobals) {    globalObjects[global.name] = global.writable;  }  return globalObjects;}module.exports = {  getScriptGlobals(    environmentName,    files,    extraDefinitions = [],    extraEnv = {}  ) {    if (helpers.isMozillaCentralBased()) {      return {        globals: getGlobalsForScripts(environmentName, files, extraDefinitions),        ...extraEnv,      };    }    return helpers.getSavedEnvironmentItems(environmentName);  },};
 |