From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- devtools/client/shared/build/build.js | 78 +++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 devtools/client/shared/build/build.js (limited to 'devtools/client/shared/build/build.js') diff --git a/devtools/client/shared/build/build.js b/devtools/client/shared/build/build.js new file mode 100644 index 0000000000..c64c854811 --- /dev/null +++ b/devtools/client/shared/build/build.js @@ -0,0 +1,78 @@ +/* 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 . */ +/* globals process, __filename, __dirname */ + +/* Usage: node build.js [LIST_OF_SOURCE_FILES...] OUTPUT_DIR + * Compiles all source files and places the results of the compilation in + * OUTPUT_DIR. + */ + +"use strict"; + +const Babel = require("./babel"); +const fs = require("fs"); +const _path = require("path"); + +const defaultPlugins = ["proposal-class-properties", "transform-react-jsx"]; + +function transform(filePath) { + // Use the extra plugins only for the debugger + const plugins = filePath.includes("devtools/client/debugger") + ? require("./build-debugger")(filePath) + : defaultPlugins; + + const doc = fs.readFileSync(filePath, "utf8"); + + let out; + try { + out = Babel.transform(doc, { plugins }); + } catch (err) { + throw new Error(` +======================== +NODE COMPILATION ERROR! + +File: ${filePath} +Stack: + +${err.stack} + +======================== +`); + } + + return out.code; +} + +// fs.mkdirSync's "recursive" option appears not to work, so I'm writing a +// simple version of the function myself. +function mkdirs(filePath) { + if (fs.existsSync(filePath)) { + return; + } + mkdirs(_path.dirname(filePath)); + try { + fs.mkdirSync(filePath); + } catch (err) { + // Ignore any errors resulting from the directory already existing. + if (err.code != "EEXIST") { + throw err; + } + } +} + +const deps = [__filename, _path.resolve(__dirname, "babel.js")]; +const outputDir = process.argv[process.argv.length - 1]; +mkdirs(outputDir); + +for (let i = 2; i < process.argv.length - 1; i++) { + const srcPath = process.argv[i]; + const code = transform(srcPath); + const fullPath = _path.join(outputDir, _path.basename(srcPath)); + fs.writeFileSync(fullPath, code); + deps.push(srcPath); +} + +// Print all dependencies prefixed with 'dep:' in order to help node.py, the script that +// calls this module, to report back the precise list of all dependencies. +console.log(deps.map(file => "dep:" + file).join("\n")); -- cgit v1.2.3