forked from olcxjas-softworks/LarpixClient
update electron to v43
This commit is contained in:
parent
68ac0beedf
commit
fb6c8b6ee9
5385 changed files with 513060 additions and 123058 deletions
21
electron/node_modules/@electron/rebuild/LICENSE
generated
vendored
Normal file
21
electron/node_modules/@electron/rebuild/LICENSE
generated
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) Contributors to the Electron project
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
202
electron/node_modules/@electron/rebuild/README.md
generated
vendored
Normal file
202
electron/node_modules/@electron/rebuild/README.md
generated
vendored
Normal file
|
|
@ -0,0 +1,202 @@
|
|||
# @electron/rebuild
|
||||
|
||||
[](https://github.com/electron/rebuild/actions/workflows/test.yml)
|
||||
[](https://npm.im/@electron/rebuild)
|
||||
[](https://codecov.io/gh/electron/rebuild)
|
||||
[](https://packages.electronjs.org/rebuild)
|
||||
|
||||
This executable rebuilds native Node.js modules against the version of Node.js
|
||||
that your Electron project is using. This allows you to use native Node.js
|
||||
modules in Electron apps without your system version of Node.js matching exactly
|
||||
(which is often not the case, and sometimes not even possible).
|
||||
|
||||
### How does it work?
|
||||
|
||||
Install the package with `--save-dev`:
|
||||
|
||||
```sh
|
||||
npm install --save-dev @electron/rebuild
|
||||
```
|
||||
|
||||
Then, whenever you install a new npm package, rerun electron-rebuild:
|
||||
|
||||
```sh
|
||||
$(npm bin)/electron-rebuild
|
||||
```
|
||||
|
||||
Or if you're on Windows:
|
||||
|
||||
```sh
|
||||
.\node_modules\.bin\electron-rebuild.cmd
|
||||
```
|
||||
|
||||
If you have a good node-gyp config but you see an error about a missing element on Windows like `Could not load the Visual C++ component "VCBuild.exe"`, try to launch `electron-rebuild` in an npm script:
|
||||
|
||||
```json
|
||||
"scripts": {
|
||||
"rebuild": "electron-rebuild -f -w yourmodule"
|
||||
}
|
||||
```
|
||||
|
||||
and then
|
||||
|
||||
```sh
|
||||
npm run rebuild
|
||||
```
|
||||
|
||||
### What are the requirements?
|
||||
|
||||
Node v22.12.0 or higher is required. Building native modules from source uses
|
||||
[`node-gyp`](https://github.com/nodejs/node-gyp#installation). Refer to the link for its
|
||||
installation/runtime requirements.
|
||||
|
||||
### CLI arguments
|
||||
|
||||
```
|
||||
Usage: electron-rebuild --version [version] --module-dir [path]
|
||||
|
||||
Options:
|
||||
-v, --version The version of Electron to build against [string]
|
||||
-f, --force Force rebuilding modules, even if we would skip
|
||||
it otherwise [boolean]
|
||||
-a, --arch Override the target architecture to something
|
||||
other than your system's [string]
|
||||
-m, --module-dir The path to the node_modules directory to rebuild
|
||||
[string]
|
||||
-w, --which-module A specific module to build, or comma separated
|
||||
list of modules. Modules will only be rebuilt if
|
||||
they also match the types of dependencies being
|
||||
rebuilt (see --types). [string]
|
||||
-o, --only Only build specified module, or comma separated
|
||||
list of modules. All others are ignored. [string]
|
||||
-e, --electron-prebuilt-dir The path to the prebuilt electron module [string]
|
||||
-d, --dist-url Custom header tarball URL [string]
|
||||
-t, --types The types of dependencies to rebuild. Comma
|
||||
separated list of "prod", "dev" and "optional".
|
||||
Default is "prod,optional" [string]
|
||||
-p, --parallel Rebuild in parallel, this is enabled by default
|
||||
on macOS and Linux [boolean]
|
||||
-s, --sequential Rebuild modules sequentially, this is enabled by
|
||||
default on Windows [boolean]
|
||||
-b, --debug Build debug version of modules [boolean]
|
||||
-j, --jobs Number of parallel compile jobs node-gyp should
|
||||
run (passed as node-gyp --jobs). Defaults to
|
||||
node-gyp's own default. [number]
|
||||
--prebuild-tag-prefix GitHub tag prefix passed to prebuild-install.
|
||||
Default is "v" [string]
|
||||
--force-abi Override the ABI version for the version of
|
||||
Electron you are targeting. Only use when
|
||||
targeting Nightly releases. [number]
|
||||
--use-electron-clang Use the clang executable that Electron used when
|
||||
building its binary. This will guarantee compiler
|
||||
compatibility [boolean]
|
||||
--disable-pre-gyp-copy Disables the pre-gyp copy step [boolean]
|
||||
--build-from-source Skips prebuild download and rebuilds module from
|
||||
source. [boolean]
|
||||
-h, --help Show help [boolean]
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> The `--dist-url` value can also be provided via the `ELECTRON_REBUILD_DIST_URL`
|
||||
> environment variable. The `--dist-url` flag takes precedence when both are set.
|
||||
|
||||
> [!NOTE]
|
||||
> By default, only your `prod` and `optional` dependencies are rebuilt —
|
||||
> `devDependencies` are **not** rebuilt. This is because the default value of
|
||||
> `types` is `['prod', 'optional']`. If you have a native module in your
|
||||
> `devDependencies` that you need rebuilt, you must explicitly include `dev` in
|
||||
> the list of types:
|
||||
>
|
||||
> - CLI: `electron-rebuild --types prod,optional,dev` (or `-t prod,optional,dev`)
|
||||
> - API: `rebuild({ ..., types: ['prod', 'optional', 'dev'] })`
|
||||
|
||||
### How can I use this with [Electron Forge](https://github.com/electron/forge)?
|
||||
|
||||
This package is automatically used with Electron Forge when packaging an Electron app.
|
||||
|
||||
### How can I integrate this into [Electron Packager](https://github.com/electron/packager)?
|
||||
|
||||
electron-rebuild provides a function compatible with the [`afterCopy` hook](https://packages.electronjs.org/packager/v19.0.5/interfaces/Options.html#aftercopy)
|
||||
for Electron Packager. For example:
|
||||
|
||||
```javascript
|
||||
import { packager } from "@electron/packager";
|
||||
import { rebuild } from "@electron/rebuild";
|
||||
|
||||
packager({
|
||||
// … other options
|
||||
afterCopy: [
|
||||
async ({ buildPath, electronVersion, arch }) => {
|
||||
await rebuild({ buildPath, electronVersion, arch });
|
||||
},
|
||||
],
|
||||
// … other options
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
### How can I integrate this with [prebuild](https://github.com/prebuild/prebuild)?
|
||||
|
||||
If your module uses [prebuild](https://github.com/prebuild/prebuild) for creating prebuilt binaries,
|
||||
it also uses [prebuild-install](https://github.com/prebuild/prebuild-install) to download them. If
|
||||
this is the case, then `electron-rebuild` will run `prebuild-install` to download the correct
|
||||
binaries from the project's GitHub Releases instead of rebuilding them.
|
||||
|
||||
### How can I integrate this into my build pipeline?
|
||||
|
||||
electron-rebuild is also a library that you can require into your app or
|
||||
build process. It has a very simple API:
|
||||
|
||||
```javascript
|
||||
import { rebuild } from '@electron/rebuild';
|
||||
|
||||
// Public: Rebuilds a node_modules directory with the given Electron version.
|
||||
//
|
||||
// options: Object with the following properties
|
||||
// buildPath - An absolute path to your app's directory. (The directory that contains your node_modules)
|
||||
// electronVersion - The version of Electron to rebuild for
|
||||
// arch (optional) - Default: process.arch - The arch to rebuild for
|
||||
// extraModules (optional) - Default: [] - An array of modules to rebuild as well as the detected modules
|
||||
// onlyModules (optional) - Default: null - An array of modules to rebuild, ONLY these module names will be rebuilt.
|
||||
// The "types" property will be ignored if this option is set.
|
||||
// force (optional) - Default: false - Force a rebuild of modules regardless of their current build state
|
||||
// headerURL (optional) - Default: https://www.electronjs.org/headers - The URL to download Electron header files from
|
||||
// types (optional) - Default: ['prod', 'optional'] - The types of modules to rebuild
|
||||
// mode (optional) - The rebuild mode, either 'sequential' or 'parallel' - Default varies per platform (probably shouldn't mess with this one)
|
||||
// useElectronClang (optional) - Whether to use the clang executable that Electron used when building its binary. This will guarantee compiler compatibility
|
||||
|
||||
// Returns a Promise indicating whether the operation succeeded or not
|
||||
```
|
||||
|
||||
For full API usage, see the [API documentation](https://packages.electronjs.org/rebuild).
|
||||
|
||||
A full build process might look something like:
|
||||
|
||||
```javascript
|
||||
// ESM
|
||||
import { rebuild } from "@electron/rebuild";
|
||||
|
||||
rebuild({
|
||||
buildPath: import.meta.dirname,
|
||||
electronVersion: "35.1.5",
|
||||
})
|
||||
.then(() => console.info("Rebuild Successful"))
|
||||
.catch((e) => {
|
||||
console.error("Building modules didn't work!");
|
||||
console.error(e);
|
||||
});
|
||||
|
||||
// CommonJS
|
||||
const { rebuild } = require("@electron/rebuild");
|
||||
|
||||
rebuild({
|
||||
buildPath: __dirname,
|
||||
electronVersion: "35.1.5",
|
||||
})
|
||||
.then(() => console.info("Rebuild Successful"))
|
||||
.catch((e) => {
|
||||
console.error("Building modules didn't work!");
|
||||
console.error(e);
|
||||
});
|
||||
|
||||
```
|
||||
16
electron/node_modules/@electron/rebuild/lib/arch.d.ts
generated
vendored
Normal file
16
electron/node_modules/@electron/rebuild/lib/arch.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/**
|
||||
* Runs the `uname` command and returns the trimmed output.
|
||||
*
|
||||
* Copied from `@electron/get`.
|
||||
*/
|
||||
export declare function uname(): string;
|
||||
export type ConfigVariables = {
|
||||
arm_version?: string;
|
||||
};
|
||||
/**
|
||||
* Generates an architecture name that would be used in an Electron or Node.js
|
||||
* download file name.
|
||||
*
|
||||
* Copied from `@electron/get`.
|
||||
*/
|
||||
export declare function getNodeArch(arch: string, configVariables: ConfigVariables): string;
|
||||
29
electron/node_modules/@electron/rebuild/lib/arch.js
generated
vendored
Normal file
29
electron/node_modules/@electron/rebuild/lib/arch.js
generated
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import { execSync } from 'node:child_process';
|
||||
/**
|
||||
* Runs the `uname` command and returns the trimmed output.
|
||||
*
|
||||
* Copied from `@electron/get`.
|
||||
*/
|
||||
export function uname() {
|
||||
return execSync('uname -m').toString().trim();
|
||||
}
|
||||
/**
|
||||
* Generates an architecture name that would be used in an Electron or Node.js
|
||||
* download file name.
|
||||
*
|
||||
* Copied from `@electron/get`.
|
||||
*/
|
||||
export function getNodeArch(arch, configVariables) {
|
||||
if (arch === 'arm') {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
switch (configVariables.arm_version) {
|
||||
case '6':
|
||||
return uname();
|
||||
case '7':
|
||||
default:
|
||||
return 'armv7l';
|
||||
}
|
||||
}
|
||||
return arch;
|
||||
}
|
||||
//# sourceMappingURL=arch.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/arch.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/arch.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"arch.js","sourceRoot":"","sources":["../src/arch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAMD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,eAAgC;IACxE,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,8DAA8D;QAC9D,QAAQ,eAAe,CAAC,WAAW,EAAE,CAAC;YACpC,KAAK,GAAG;gBACN,OAAO,KAAK,EAAE,CAAC;YACjB,KAAK,GAAG,CAAC;YACT;gBACE,OAAO,QAAQ,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
||||
14
electron/node_modules/@electron/rebuild/lib/cache.d.ts
generated
vendored
Normal file
14
electron/node_modules/@electron/rebuild/lib/cache.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
type CacheOptions = {
|
||||
ABI: string;
|
||||
arch: string;
|
||||
platform: string;
|
||||
debug: boolean;
|
||||
electronVersion: string;
|
||||
headerURL: string;
|
||||
modulePath: string;
|
||||
};
|
||||
export declare const cacheModuleState: (dir: string, cachePath: string, key: string) => Promise<void>;
|
||||
type ApplyDiffFunction = (dir: string) => Promise<void>;
|
||||
export declare const lookupModuleState: (cachePath: string, key: string) => Promise<ApplyDiffFunction | boolean>;
|
||||
export declare function generateCacheKey(opts: CacheOptions): Promise<string>;
|
||||
export {};
|
||||
153
electron/node_modules/@electron/rebuild/lib/cache.js
generated
vendored
Normal file
153
electron/node_modules/@electron/rebuild/lib/cache.js
generated
vendored
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
import crypto from 'node:crypto';
|
||||
import debug from 'debug';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import zlib from 'node:zlib';
|
||||
const d = debug('electron-rebuild');
|
||||
// Update this number if you change the caching logic to ensure no bad cache hits
|
||||
const ELECTRON_REBUILD_CACHE_ID = 1;
|
||||
class Snap {
|
||||
hash;
|
||||
data;
|
||||
constructor(hash, data) {
|
||||
this.hash = hash;
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
const takeSnapshot = async (dir, relativeTo = dir) => {
|
||||
const snap = {};
|
||||
await Promise.all((await fs.promises.readdir(dir)).map(async (child) => {
|
||||
if (child === 'node_modules')
|
||||
return;
|
||||
const childPath = path.resolve(dir, child);
|
||||
const relative = path.relative(relativeTo, childPath);
|
||||
if ((await fs.promises.stat(childPath)).isDirectory()) {
|
||||
snap[relative] = await takeSnapshot(childPath, relativeTo);
|
||||
}
|
||||
else {
|
||||
const data = await fs.promises.readFile(childPath);
|
||||
snap[relative] = new Snap(crypto.createHash('SHA256').update(data).digest('hex'), data);
|
||||
}
|
||||
}));
|
||||
return snap;
|
||||
};
|
||||
const writeSnapshot = async (diff, dir) => {
|
||||
for (const key in diff) {
|
||||
if (diff[key] instanceof Snap) {
|
||||
await fs.promises.mkdir(path.dirname(path.resolve(dir, key)), { recursive: true });
|
||||
await fs.promises.writeFile(path.resolve(dir, key), diff[key].data);
|
||||
}
|
||||
else {
|
||||
await fs.promises.mkdir(path.resolve(dir, key), { recursive: true });
|
||||
await writeSnapshot(diff[key], dir);
|
||||
}
|
||||
}
|
||||
};
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const serialize = (snap) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const jsonReady = {};
|
||||
for (const key in snap) {
|
||||
if (snap[key] instanceof Snap) {
|
||||
const s = snap[key];
|
||||
jsonReady[key] = {
|
||||
__isSnap: true,
|
||||
hash: s.hash,
|
||||
data: s.data.toString('base64'),
|
||||
};
|
||||
}
|
||||
else {
|
||||
jsonReady[key] = serialize(snap[key]);
|
||||
}
|
||||
}
|
||||
return jsonReady;
|
||||
};
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const unserialize = (jsonReady) => {
|
||||
const snap = {};
|
||||
for (const key in jsonReady) {
|
||||
if (jsonReady[key].__isSnap) {
|
||||
snap[key] = new Snap(jsonReady[key].hash, Buffer.from(jsonReady[key].data, 'base64'));
|
||||
}
|
||||
else {
|
||||
snap[key] = unserialize(jsonReady[key]);
|
||||
}
|
||||
}
|
||||
return snap;
|
||||
};
|
||||
export const cacheModuleState = async (dir, cachePath, key) => {
|
||||
const snap = await takeSnapshot(dir);
|
||||
const moduleBuffer = Buffer.from(JSON.stringify(serialize(snap)));
|
||||
const zipped = await new Promise((resolve) => zlib.gzip(moduleBuffer, (_, result) => resolve(result)));
|
||||
await fs.promises.mkdir(cachePath, { recursive: true });
|
||||
await fs.promises.writeFile(path.resolve(cachePath, key), zipped);
|
||||
};
|
||||
export const lookupModuleState = async (cachePath, key) => {
|
||||
if (fs.existsSync(path.resolve(cachePath, key))) {
|
||||
return async function applyDiff(dir) {
|
||||
const zipped = await fs.promises.readFile(path.resolve(cachePath, key));
|
||||
const unzipped = await new Promise((resolve) => {
|
||||
zlib.gunzip(zipped, (_, result) => resolve(result));
|
||||
});
|
||||
const diff = unserialize(JSON.parse(unzipped.toString()));
|
||||
await writeSnapshot(diff, dir);
|
||||
};
|
||||
}
|
||||
return false;
|
||||
};
|
||||
function dHashTree(tree, hash) {
|
||||
for (const key of Object.keys(tree).sort()) {
|
||||
hash.update(key);
|
||||
if (typeof tree[key] === 'string') {
|
||||
hash.update(tree[key]);
|
||||
}
|
||||
else {
|
||||
dHashTree(tree[key], hash);
|
||||
}
|
||||
}
|
||||
}
|
||||
async function hashDirectory(dir, relativeTo) {
|
||||
relativeTo ??= dir;
|
||||
d('hashing dir', dir);
|
||||
const dirTree = {};
|
||||
await Promise.all((await fs.promises.readdir(dir)).map(async (child) => {
|
||||
d('found child', child, 'in dir', dir);
|
||||
// Ignore output directories
|
||||
if (dir === relativeTo && (child === 'build' || child === 'bin'))
|
||||
return;
|
||||
// Don't hash nested node_modules
|
||||
if (child === 'node_modules')
|
||||
return;
|
||||
const childPath = path.resolve(dir, child);
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const relative = path.relative(relativeTo, childPath);
|
||||
if ((await fs.promises.stat(childPath)).isDirectory()) {
|
||||
dirTree[relative] = await hashDirectory(childPath, relativeTo);
|
||||
}
|
||||
else {
|
||||
dirTree[relative] = crypto
|
||||
.createHash('SHA256')
|
||||
.update(await fs.promises.readFile(childPath))
|
||||
.digest('hex');
|
||||
}
|
||||
}));
|
||||
return dirTree;
|
||||
}
|
||||
export async function generateCacheKey(opts) {
|
||||
const tree = await hashDirectory(opts.modulePath);
|
||||
const hasher = crypto
|
||||
.createHash('SHA256')
|
||||
.update(`${ELECTRON_REBUILD_CACHE_ID}`)
|
||||
.update(path.basename(opts.modulePath))
|
||||
.update(opts.ABI)
|
||||
.update(opts.arch)
|
||||
.update(opts.platform)
|
||||
.update(opts.debug ? 'debug' : 'not debug')
|
||||
.update(opts.headerURL)
|
||||
.update(opts.electronVersion);
|
||||
dHashTree(tree, hasher);
|
||||
const hash = hasher.digest('hex');
|
||||
d('calculated hash of', opts.modulePath, 'to be', hash);
|
||||
return hash;
|
||||
}
|
||||
//# sourceMappingURL=cache.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/cache.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/cache.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
4
electron/node_modules/@electron/rebuild/lib/clang-fetcher.d.ts
generated
vendored
Normal file
4
electron/node_modules/@electron/rebuild/lib/clang-fetcher.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
export declare function getClangEnvironmentVars(electronVersion: string, targetArch: string): Promise<{
|
||||
env: Record<string, string>;
|
||||
args: string[];
|
||||
}>;
|
||||
105
electron/node_modules/@electron/rebuild/lib/clang-fetcher.js
generated
vendored
Normal file
105
electron/node_modules/@electron/rebuild/lib/clang-fetcher.js
generated
vendored
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
import cp from 'node:child_process';
|
||||
import debug from 'debug';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { ELECTRON_GYP_DIR } from './constants.js';
|
||||
import { fetchUrl } from './fetcher.js';
|
||||
import { downloadLinuxSysroot } from './sysroot-fetcher.js';
|
||||
import { spawn } from '@malept/cross-spawn-promise';
|
||||
const d = debug('electron-rebuild');
|
||||
const CDS_URL = 'https://commondatastorage.googleapis.com/chromium-browser-clang';
|
||||
function getPlatformUrlPrefix(hostOS, hostArch) {
|
||||
const prefixMap = {
|
||||
linux: 'Linux_x64',
|
||||
darwin: 'Mac',
|
||||
win32: 'Win',
|
||||
};
|
||||
let prefix = prefixMap[hostOS];
|
||||
if (prefix === 'Mac' && hostArch === 'arm64') {
|
||||
prefix = 'Mac_arm64';
|
||||
}
|
||||
return CDS_URL + '/' + prefix + '/';
|
||||
}
|
||||
function getClangDownloadURL(packageFile, packageVersion, hostOS, hostArch) {
|
||||
const cdsFile = `${packageFile}-${packageVersion}.tgz`;
|
||||
return getPlatformUrlPrefix(hostOS, hostArch) + cdsFile;
|
||||
}
|
||||
function getSDKRoot() {
|
||||
if (process.env.SDKROOT)
|
||||
return process.env.SDKROOT;
|
||||
const output = cp.execFileSync('xcrun', ['--sdk', 'macosx', '--show-sdk-path']);
|
||||
return output.toString().trim();
|
||||
}
|
||||
export async function getClangEnvironmentVars(electronVersion, targetArch) {
|
||||
const clangDownloadDir = await downloadClangVersion(electronVersion);
|
||||
const clangDir = path.resolve(clangDownloadDir, 'bin');
|
||||
const clangArgs = [];
|
||||
if (process.platform === 'darwin') {
|
||||
clangArgs.push('-isysroot', getSDKRoot());
|
||||
}
|
||||
const gypArgs = [];
|
||||
if (process.platform === 'win32') {
|
||||
console.log(await fs.promises.readdir(clangDir));
|
||||
gypArgs.push(`/p:CLToolExe=clang-cl.exe`, `/p:CLToolPath=${clangDir}`);
|
||||
}
|
||||
if (process.platform === 'linux') {
|
||||
const sysrootPath = await downloadLinuxSysroot(electronVersion, targetArch);
|
||||
clangArgs.push('--sysroot', sysrootPath);
|
||||
}
|
||||
return {
|
||||
env: {
|
||||
CC: `"${path.resolve(clangDir, 'clang')}" ${clangArgs.join(' ')}`,
|
||||
CXX: `"${path.resolve(clangDir, 'clang++')}" ${clangArgs.join(' ')}`,
|
||||
},
|
||||
args: gypArgs,
|
||||
};
|
||||
}
|
||||
function clangVersionFromRevision(update) {
|
||||
const regex = /CLANG_REVISION = '([^']+)'\nCLANG_SUB_REVISION = (\d+)\n/g;
|
||||
const clangVersionMatch = regex.exec(update);
|
||||
if (!clangVersionMatch)
|
||||
return null;
|
||||
const [, clangVersion, clangSubRevision] = clangVersionMatch;
|
||||
return `${clangVersion}-${clangSubRevision}`;
|
||||
}
|
||||
function clangVersionFromSVN(update) {
|
||||
const regex = /CLANG_REVISION = '([^']+)'\nCLANG_SVN_REVISION = '([^']+)'\nCLANG_SUB_REVISION = (\d+)\n/g;
|
||||
const clangVersionMatch = regex.exec(update);
|
||||
if (!clangVersionMatch)
|
||||
return null;
|
||||
const [, clangVersion, clangSvn, clangSubRevision] = clangVersionMatch;
|
||||
return `${clangSvn}-${clangVersion.substr(0, 8)}-${clangSubRevision}`;
|
||||
}
|
||||
async function downloadClangVersion(electronVersion) {
|
||||
d('fetching clang for Electron:', electronVersion);
|
||||
const clangDirPath = path.resolve(ELECTRON_GYP_DIR, `${electronVersion}-clang`);
|
||||
if (fs.existsSync(path.resolve(clangDirPath, 'bin', 'clang')))
|
||||
return clangDirPath;
|
||||
await fs.promises.mkdir(ELECTRON_GYP_DIR, { recursive: true });
|
||||
const electronDeps = await fetchUrl(`https://raw.githubusercontent.com/electron/electron/v${electronVersion}/DEPS`, 'text');
|
||||
const chromiumRevisionExtractor = /'chromium_version':\n\s+'([^']+)/g;
|
||||
const chromiumRevisionMatch = chromiumRevisionExtractor.exec(electronDeps);
|
||||
if (!chromiumRevisionMatch)
|
||||
throw new Error('Failed to determine Chromium revision for given Electron version');
|
||||
const chromiumRevision = chromiumRevisionMatch[1];
|
||||
d('fetching clang for Chromium:', chromiumRevision);
|
||||
const base64ClangUpdate = await fetchUrl(`https://chromium.googlesource.com/chromium/src.git/+/${chromiumRevision}/tools/clang/scripts/update.py?format=TEXT`, 'text');
|
||||
const clangUpdate = Buffer.from(base64ClangUpdate, 'base64').toString('utf8');
|
||||
const clangVersionString = clangVersionFromRevision(clangUpdate) || clangVersionFromSVN(clangUpdate);
|
||||
if (!clangVersionString)
|
||||
throw new Error('Failed to determine Clang revision from Electron version');
|
||||
d('fetching clang:', clangVersionString);
|
||||
const clangDownloadURL = getClangDownloadURL('clang', clangVersionString, process.platform, process.arch);
|
||||
const contents = await fetchUrl(clangDownloadURL, 'buffer');
|
||||
const tarPath = path.resolve(ELECTRON_GYP_DIR, `${electronVersion}-clang.tgz`);
|
||||
if (fs.existsSync(tarPath))
|
||||
await fs.promises.rm(tarPath, { recursive: true, force: true });
|
||||
await fs.promises.writeFile(tarPath, contents);
|
||||
await fs.promises.mkdir(clangDirPath, { recursive: true });
|
||||
d('extracting clang');
|
||||
await spawn('tar', ['-xf', tarPath, '-C', clangDirPath], { stdio: 'ignore' });
|
||||
await fs.promises.rm(tarPath, { recursive: true, force: true });
|
||||
d('cleaning up clang tar file');
|
||||
return clangDirPath;
|
||||
}
|
||||
//# sourceMappingURL=clang-fetcher.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/clang-fetcher.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/clang-fetcher.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"clang-fetcher.js","sourceRoot":"","sources":["../src/clang-fetcher.ts"],"names":[],"mappings":"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"}
|
||||
2
electron/node_modules/@electron/rebuild/lib/cli.d.ts
generated
vendored
Normal file
2
electron/node_modules/@electron/rebuild/lib/cli.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/env node
|
||||
export {};
|
||||
198
electron/node_modules/@electron/rebuild/lib/cli.js
generated
vendored
Executable file
198
electron/node_modules/@electron/rebuild/lib/cli.js
generated
vendored
Executable file
|
|
@ -0,0 +1,198 @@
|
|||
#!/usr/bin/env node
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { parseArgs, styleText } from 'node:util';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
import { getProjectRootPath } from './search-module.js';
|
||||
import { locateElectronModule } from './electron-locator.js';
|
||||
import { rebuild } from './rebuild.js';
|
||||
const options = {
|
||||
version: { short: 'v', type: 'string', description: 'The version of Electron to build against' },
|
||||
force: {
|
||||
short: 'f',
|
||||
type: 'boolean',
|
||||
description: 'Force rebuilding modules, even if we would skip it otherwise',
|
||||
},
|
||||
arch: {
|
||||
short: 'a',
|
||||
type: 'string',
|
||||
description: "Override the target architecture to something other than your system's",
|
||||
},
|
||||
platform: {
|
||||
type: 'string',
|
||||
description: "Override the target platform to something other than your system's",
|
||||
},
|
||||
'module-dir': {
|
||||
short: 'm',
|
||||
type: 'string',
|
||||
description: 'The path to the node_modules directory to rebuild',
|
||||
},
|
||||
'which-module': {
|
||||
short: 'w',
|
||||
type: 'string',
|
||||
description: 'A specific module to build, or comma separated list of modules. Modules will only be rebuilt if they also match the types of dependencies being rebuilt (see --types).',
|
||||
},
|
||||
only: {
|
||||
short: 'o',
|
||||
type: 'string',
|
||||
description: 'Only build specified module, or comma separated list of modules. All others are ignored.',
|
||||
},
|
||||
'electron-prebuilt-dir': {
|
||||
short: 'e',
|
||||
type: 'string',
|
||||
description: 'The path to the prebuilt electron module',
|
||||
},
|
||||
'dist-url': {
|
||||
short: 'd',
|
||||
type: 'string',
|
||||
description: 'Custom header tarball URL. Can also be set via the ELECTRON_REBUILD_DIST_URL environment variable.',
|
||||
},
|
||||
types: {
|
||||
short: 't',
|
||||
type: 'string',
|
||||
description: 'The types of dependencies to rebuild. Comma separated list of "prod", "dev" and "optional". Default is "prod,optional"',
|
||||
},
|
||||
parallel: {
|
||||
short: 'p',
|
||||
type: 'boolean',
|
||||
description: 'Rebuild in parallel, this is enabled by default on macOS and Linux',
|
||||
},
|
||||
sequential: {
|
||||
short: 's',
|
||||
type: 'boolean',
|
||||
description: 'Rebuild modules sequentially, this is enabled by default on Windows',
|
||||
},
|
||||
debug: { short: 'b', type: 'boolean', description: 'Build debug version of modules' },
|
||||
jobs: {
|
||||
short: 'j',
|
||||
type: 'string',
|
||||
description: "Number of parallel compile jobs node-gyp should run (passed as node-gyp --jobs). Defaults to node-gyp's own default.",
|
||||
},
|
||||
'prebuild-tag-prefix': {
|
||||
type: 'string',
|
||||
description: 'GitHub tag prefix passed to prebuild-install. Default is "v"',
|
||||
},
|
||||
'force-abi': {
|
||||
type: 'string',
|
||||
description: 'Override the ABI version for the version of Electron you are targeting. Only use when targeting Nightly releases.',
|
||||
},
|
||||
'use-electron-clang': {
|
||||
type: 'boolean',
|
||||
description: 'Use the clang executable that Electron used when building its binary. This will guarantee compiler compatibility',
|
||||
},
|
||||
'disable-pre-gyp-copy': { type: 'boolean', description: 'Disables the pre-gyp copy step' },
|
||||
'build-from-source': {
|
||||
type: 'boolean',
|
||||
description: 'Skips prebuild download and rebuilds module from source.',
|
||||
},
|
||||
help: { short: 'h', type: 'boolean', description: 'Show help' },
|
||||
};
|
||||
const { values: argv } = parseArgs({ options, allowPositionals: true });
|
||||
if (argv.help) {
|
||||
console.log('Usage: electron-rebuild --version [version] --module-dir [path]\n\nOptions:');
|
||||
for (const [name, opt] of Object.entries(options)) {
|
||||
const short = 'short' in opt ? `-${opt.short}, ` : ' ';
|
||||
console.log(` ${short}--${name.padEnd(22)} ${opt.description}`);
|
||||
}
|
||||
process.exit(0);
|
||||
}
|
||||
if (process.argv.length === 3 && process.argv[2] === '--version') {
|
||||
try {
|
||||
console.log('Electron Rebuild Version:', (await import(pathToFileURL(path.resolve(import.meta.dirname, '../../package.json')).toString(), { with: { type: 'json' } })).default.version);
|
||||
}
|
||||
catch {
|
||||
console.log('Electron Rebuild Version:', (await import(pathToFileURL(path.resolve(import.meta.dirname, '../package.json')).toString(), { with: { type: 'json' } })).default.version);
|
||||
}
|
||||
process.exit(0);
|
||||
}
|
||||
const handler = (err) => {
|
||||
console.error(styleText('red', '\nAn unhandled error occurred inside electron-rebuild'));
|
||||
console.error(styleText('red', `${err.message}\n\n${err.stack}`));
|
||||
process.exit(-1);
|
||||
};
|
||||
process.on('uncaughtException', handler);
|
||||
process.on('unhandledRejection', handler);
|
||||
void (async () => {
|
||||
const projectRootPath = await getProjectRootPath(process.cwd());
|
||||
const electronModulePath = argv['electron-prebuilt-dir']
|
||||
? path.resolve(process.cwd(), argv['electron-prebuilt-dir'])
|
||||
: await locateElectronModule(projectRootPath);
|
||||
let electronModuleVersion = argv.version;
|
||||
if (!electronModuleVersion) {
|
||||
try {
|
||||
if (!electronModulePath)
|
||||
throw new Error('Prebuilt electron module not found');
|
||||
const pkgJson = await import(pathToFileURL(path.join(electronModulePath, 'package.json')).toString(), { with: { type: 'json' } });
|
||||
electronModuleVersion = pkgJson.default.version;
|
||||
}
|
||||
catch {
|
||||
throw new Error(`Unable to find electron's version number, either install it or specify an explicit version`);
|
||||
}
|
||||
}
|
||||
let rootDirectory = argv['module-dir'];
|
||||
if (!rootDirectory) {
|
||||
// NB: We assume here that we're going to rebuild the immediate parent's
|
||||
// node modules, which might not always be the case but it's at least a
|
||||
// good guess
|
||||
rootDirectory = path.resolve(import.meta.dirname, '../../..');
|
||||
if (!fs.existsSync(rootDirectory) ||
|
||||
!fs.existsSync(path.resolve(rootDirectory, 'package.json'))) {
|
||||
// Then we try the CWD
|
||||
rootDirectory = process.cwd();
|
||||
if (!fs.existsSync(rootDirectory) ||
|
||||
!fs.existsSync(path.resolve(rootDirectory, 'package.json'))) {
|
||||
throw new Error('Unable to find parent node_modules directory, specify it via --module-dir, E.g. "--module-dir ." for the current directory');
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
rootDirectory = path.resolve(process.cwd(), rootDirectory);
|
||||
}
|
||||
const forceAbi = argv['force-abi'] ? Number(argv['force-abi']) : undefined;
|
||||
if (argv['force-abi'] && Number.isNaN(forceAbi)) {
|
||||
throw new Error('force-abi must be a number');
|
||||
}
|
||||
const jobs = argv.jobs ? Number(argv.jobs) : undefined;
|
||||
if (argv.jobs && Number.isNaN(jobs)) {
|
||||
throw new Error('jobs must be a number');
|
||||
}
|
||||
console.error('Searching dependency tree');
|
||||
const rebuilder = rebuild({
|
||||
buildPath: rootDirectory,
|
||||
electronVersion: electronModuleVersion,
|
||||
arch: argv.arch || process.arch,
|
||||
platform: argv.platform || process.platform,
|
||||
extraModules: argv['which-module'] ? argv['which-module'].split(',') : [],
|
||||
onlyModules: argv.only ? argv.only.split(',') : null,
|
||||
force: argv.force,
|
||||
headerURL: argv['dist-url'] || process.env.ELECTRON_REBUILD_DIST_URL,
|
||||
types: argv.types ? argv.types.split(',') : ['prod', 'optional'],
|
||||
mode: argv.parallel ? 'parallel' : argv.sequential ? 'sequential' : undefined,
|
||||
debug: argv.debug,
|
||||
prebuildTagPrefix: argv['prebuild-tag-prefix'] ?? 'v',
|
||||
forceABI: forceAbi,
|
||||
useElectronClang: !!argv['use-electron-clang'],
|
||||
disablePreGypCopy: !!argv['disable-pre-gyp-copy'],
|
||||
projectRootPath,
|
||||
buildFromSource: !!argv['build-from-source'],
|
||||
jobs,
|
||||
});
|
||||
const lifecycle = rebuilder.lifecycle;
|
||||
lifecycle.on('modules-found', (moduleNames) => {
|
||||
if (moduleNames.length > 0) {
|
||||
console.error(`Building modules: ${moduleNames.join(', ')}`);
|
||||
}
|
||||
else {
|
||||
console.error('No native modules found');
|
||||
}
|
||||
});
|
||||
try {
|
||||
await rebuilder;
|
||||
}
|
||||
catch (err) {
|
||||
console.error(styleText('red', '✖ Rebuild Failed'));
|
||||
throw err;
|
||||
}
|
||||
console.error(styleText('green', '✔ Rebuild Complete'));
|
||||
})();
|
||||
//# sourceMappingURL=cli.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/cli.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/cli.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
electron/node_modules/@electron/rebuild/lib/constants.d.ts
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/constants.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export declare const ELECTRON_GYP_DIR: string;
|
||||
4
electron/node_modules/@electron/rebuild/lib/constants.js
generated
vendored
Normal file
4
electron/node_modules/@electron/rebuild/lib/constants.js
generated
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
export const ELECTRON_GYP_DIR = path.resolve(os.homedir(), '.electron-gyp');
|
||||
//# sourceMappingURL=constants.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/constants.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/constants.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC"}
|
||||
8
electron/node_modules/@electron/rebuild/lib/detect-libc.d.ts
generated
vendored
Normal file
8
electron/node_modules/@electron/rebuild/lib/detect-libc.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
/**
|
||||
* Detects the libc family on the current Linux host via `process.report`.
|
||||
*
|
||||
* Used to resolve the `{libc}` token in prebuilt binary path templates.
|
||||
*
|
||||
* @returns `'glibc'` | `'musl'` | `null` (non-Linux or unable to detect)
|
||||
*/
|
||||
export declare function detectLibcFamily(): string | null;
|
||||
24
electron/node_modules/@electron/rebuild/lib/detect-libc.js
generated
vendored
Normal file
24
electron/node_modules/@electron/rebuild/lib/detect-libc.js
generated
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
let cached;
|
||||
/**
|
||||
* Detects the libc family on the current Linux host via `process.report`.
|
||||
*
|
||||
* Used to resolve the `{libc}` token in prebuilt binary path templates.
|
||||
*
|
||||
* @returns `'glibc'` | `'musl'` | `null` (non-Linux or unable to detect)
|
||||
*/
|
||||
export function detectLibcFamily() {
|
||||
if (cached !== undefined)
|
||||
return cached;
|
||||
if (process.platform !== 'linux')
|
||||
return (cached = null);
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const report = process.report?.getReport();
|
||||
if (report?.header?.glibcVersionRuntime)
|
||||
return (cached = 'glibc');
|
||||
if (Array.isArray(report?.sharedObjects) &&
|
||||
report.sharedObjects.some((s) => s.includes('libc.musl') || s.includes('ld-musl'))) {
|
||||
return (cached = 'musl');
|
||||
}
|
||||
return (cached = null);
|
||||
}
|
||||
//# sourceMappingURL=detect-libc.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/detect-libc.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/detect-libc.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"detect-libc.js","sourceRoot":"","sources":["../src/detect-libc.ts"],"names":[],"mappings":"AAAA,IAAI,MAAiC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEzD,8DAA8D;IAC9D,MAAM,MAAM,GAAQ,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAChD,IAAI,MAAM,EAAE,MAAM,EAAE,mBAAmB;QAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IACnE,IACE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAC1F,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AACzB,CAAC"}
|
||||
1
electron/node_modules/@electron/rebuild/lib/electron-locator.d.ts
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/electron-locator.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export declare function locateElectronModule(projectRootPath?: string | undefined, startDir?: string | undefined): Promise<string | null>;
|
||||
31
electron/node_modules/@electron/rebuild/lib/electron-locator.js
generated
vendored
Normal file
31
electron/node_modules/@electron/rebuild/lib/electron-locator.js
generated
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { searchForModule } from './search-module.js';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
const electronModuleNames = ['electron', 'electron-prebuilt-compile'];
|
||||
async function locateModuleByImport() {
|
||||
for (const moduleName of electronModuleNames) {
|
||||
try {
|
||||
const modulePath = path.resolve(fileURLToPath(import.meta.resolve(`${moduleName}/package.json`)), '..');
|
||||
if (fs.existsSync(path.join(modulePath, 'package.json'))) {
|
||||
return modulePath;
|
||||
}
|
||||
}
|
||||
catch {
|
||||
// eslint-disable-line no-empty
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
export async function locateElectronModule(projectRootPath, startDir) {
|
||||
startDir ??= process.cwd();
|
||||
for (const moduleName of electronModuleNames) {
|
||||
const electronPaths = await searchForModule(startDir, moduleName, projectRootPath);
|
||||
const electronPath = electronPaths.find((ePath) => fs.existsSync(path.join(ePath, 'package.json')));
|
||||
if (electronPath) {
|
||||
return electronPath;
|
||||
}
|
||||
}
|
||||
return locateModuleByImport();
|
||||
}
|
||||
//# sourceMappingURL=electron-locator.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/electron-locator.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/electron-locator.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"electron-locator.js","sourceRoot":"","sources":["../src/electron-locator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;AAEtE,KAAK,UAAU,oBAAoB;IACjC,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAC7B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,UAAU,eAAe,CAAC,CAAC,EAChE,IAAI,CACL,CAAC;YACF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBACzD,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,eAAoC,EACpC,QAA6B;IAE7B,QAAQ,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;IAE3B,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QACnF,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE,CACxD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAChD,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC"}
|
||||
1
electron/node_modules/@electron/rebuild/lib/fetcher.d.ts
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/fetcher.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export declare function fetchUrl<T extends 'buffer' | 'text', RT = T extends 'buffer' ? Buffer : string>(url: string, responseType: T, retries?: number): Promise<RT>;
|
||||
27
electron/node_modules/@electron/rebuild/lib/fetcher.js
generated
vendored
Normal file
27
electron/node_modules/@electron/rebuild/lib/fetcher.js
generated
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
import debug from 'debug';
|
||||
import { setTimeout as sleep } from 'node:timers/promises';
|
||||
const d = debug('electron-rebuild');
|
||||
export async function fetchUrl(url, responseType, retries = 3) {
|
||||
if (retries === 0)
|
||||
throw new Error('Failed to fetch a clang resource, run with DEBUG=electron-rebuild for more information');
|
||||
d('downloading:', url);
|
||||
try {
|
||||
const response = await globalThis.fetch(url);
|
||||
if (!response.ok) {
|
||||
d('got bad status code:', response.status);
|
||||
await sleep(2000);
|
||||
return fetchUrl(url, responseType, retries - 1);
|
||||
}
|
||||
d('response came back OK');
|
||||
if (responseType === 'buffer') {
|
||||
return Buffer.from(await response.arrayBuffer());
|
||||
}
|
||||
return (await response.text());
|
||||
}
|
||||
catch (err) {
|
||||
d('request failed for some reason', err);
|
||||
await sleep(2000);
|
||||
return fetchUrl(url, responseType, retries - 1);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=fetcher.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/fetcher.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/fetcher.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAG5B,GAAW,EAAE,YAAe,EAAE,OAAO,GAAG,CAAC;IACzC,IAAI,OAAO,KAAK,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,CAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,CAAC,CAAC,uBAAuB,CAAC,CAAC;QAC3B,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAO,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAO,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,CAAC,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
||||
2
electron/node_modules/@electron/rebuild/lib/main.d.ts
generated
vendored
Normal file
2
electron/node_modules/@electron/rebuild/lib/main.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
import { rebuild, RebuildOptions } from './rebuild.js';
|
||||
export { rebuild, RebuildOptions };
|
||||
3
electron/node_modules/@electron/rebuild/lib/main.js
generated
vendored
Normal file
3
electron/node_modules/@electron/rebuild/lib/main.js
generated
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
import { rebuild } from './rebuild.js';
|
||||
export { rebuild };
|
||||
//# sourceMappingURL=main.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/main.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/main.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAkB,CAAC"}
|
||||
29
electron/node_modules/@electron/rebuild/lib/module-rebuilder.d.ts
generated
vendored
Normal file
29
electron/node_modules/@electron/rebuild/lib/module-rebuilder.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import { IRebuilder } from './types.js';
|
||||
export declare class ModuleRebuilder {
|
||||
private modulePath;
|
||||
private nodeGyp;
|
||||
private rebuilder;
|
||||
private prebuildify;
|
||||
private prebuildInstall;
|
||||
private nodePreGyp;
|
||||
constructor(rebuilder: IRebuilder, modulePath: string);
|
||||
get metaPath(): string;
|
||||
get metaData(): string;
|
||||
alreadyBuiltByRebuild(): Promise<boolean>;
|
||||
cacheModuleState(cacheKey: string): Promise<void>;
|
||||
/**
|
||||
* Whether a prebuild-install-generated native module exists.
|
||||
*/
|
||||
prebuildInstallNativeModuleExists(): Promise<boolean>;
|
||||
/**
|
||||
* If the native module uses prebuildify, check to see if it comes with a prebuilt module for
|
||||
* the given platform and arch.
|
||||
*/
|
||||
findPrebuildifyModule(cacheKey: string): Promise<boolean>;
|
||||
findPrebuildInstallModule(cacheKey: string): Promise<boolean>;
|
||||
findNodePreGypInstallModule(cacheKey: string): Promise<boolean>;
|
||||
rebuildNodeGypModule(cacheKey: string): Promise<boolean>;
|
||||
replaceExistingNativeModule(): Promise<void>;
|
||||
writeMetadata(): Promise<void>;
|
||||
rebuild(cacheKey: string): Promise<boolean>;
|
||||
}
|
||||
127
electron/node_modules/@electron/rebuild/lib/module-rebuilder.js
generated
vendored
Normal file
127
electron/node_modules/@electron/rebuild/lib/module-rebuilder.js
generated
vendored
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
import debug from 'debug';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { cacheModuleState } from './cache.js';
|
||||
import { NodeGyp } from './module-type/node-gyp/node-gyp.js';
|
||||
import { Prebuildify } from './module-type/prebuildify.js';
|
||||
import { PrebuildInstall } from './module-type/prebuild-install.js';
|
||||
import { NodePreGyp } from './module-type/node-pre-gyp.js';
|
||||
const d = debug('electron-rebuild');
|
||||
export class ModuleRebuilder {
|
||||
modulePath;
|
||||
nodeGyp;
|
||||
rebuilder;
|
||||
prebuildify;
|
||||
prebuildInstall;
|
||||
nodePreGyp;
|
||||
constructor(rebuilder, modulePath) {
|
||||
this.modulePath = modulePath;
|
||||
this.rebuilder = rebuilder;
|
||||
this.nodeGyp = new NodeGyp(rebuilder, modulePath);
|
||||
this.prebuildify = new Prebuildify(rebuilder, modulePath);
|
||||
this.prebuildInstall = new PrebuildInstall(rebuilder, modulePath);
|
||||
this.nodePreGyp = new NodePreGyp(rebuilder, modulePath);
|
||||
}
|
||||
get metaPath() {
|
||||
return path.resolve(this.modulePath, 'build', this.rebuilder.buildType, '.forge-meta');
|
||||
}
|
||||
get metaData() {
|
||||
return `${this.rebuilder.arch}--${this.rebuilder.ABI}`;
|
||||
}
|
||||
async alreadyBuiltByRebuild() {
|
||||
if (fs.existsSync(this.metaPath)) {
|
||||
const meta = await fs.promises.readFile(this.metaPath, 'utf8');
|
||||
return meta === this.metaData;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
async cacheModuleState(cacheKey) {
|
||||
if (this.rebuilder.useCache) {
|
||||
await cacheModuleState(this.modulePath, this.rebuilder.cachePath, cacheKey);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Whether a prebuild-install-generated native module exists.
|
||||
*/
|
||||
async prebuildInstallNativeModuleExists() {
|
||||
return this.prebuildInstall.prebuiltModuleExists();
|
||||
}
|
||||
/**
|
||||
* If the native module uses prebuildify, check to see if it comes with a prebuilt module for
|
||||
* the given platform and arch.
|
||||
*/
|
||||
async findPrebuildifyModule(cacheKey) {
|
||||
if (await this.prebuildify.usesTool()) {
|
||||
d(`assuming is prebuildify powered: ${this.prebuildify.moduleName}`);
|
||||
if (await this.prebuildify.findPrebuiltModule()) {
|
||||
await this.writeMetadata();
|
||||
await this.cacheModuleState(cacheKey);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
async findPrebuildInstallModule(cacheKey) {
|
||||
if (await this.prebuildInstall.usesTool()) {
|
||||
d(`assuming is prebuild-install powered: ${this.prebuildInstall.moduleName}`);
|
||||
if (await this.prebuildInstall.findPrebuiltModule()) {
|
||||
d('installed prebuilt module:', this.prebuildInstall.moduleName);
|
||||
await this.writeMetadata();
|
||||
await this.cacheModuleState(cacheKey);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
async findNodePreGypInstallModule(cacheKey) {
|
||||
if (await this.nodePreGyp.usesTool()) {
|
||||
d(`assuming is node-pre-gyp powered: ${this.nodePreGyp.moduleName}`);
|
||||
if (await this.nodePreGyp.findPrebuiltModule()) {
|
||||
d('installed prebuilt module:', this.nodePreGyp.moduleName);
|
||||
await this.writeMetadata();
|
||||
await this.cacheModuleState(cacheKey);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
async rebuildNodeGypModule(cacheKey) {
|
||||
await this.nodeGyp.rebuildModule();
|
||||
d('built via node-gyp:', this.nodeGyp.moduleName);
|
||||
await this.writeMetadata();
|
||||
await this.replaceExistingNativeModule();
|
||||
await this.cacheModuleState(cacheKey);
|
||||
return true;
|
||||
}
|
||||
async replaceExistingNativeModule() {
|
||||
const buildLocation = path.resolve(this.modulePath, 'build', this.rebuilder.buildType);
|
||||
d('searching for .node file', buildLocation);
|
||||
const buildLocationFiles = await fs.promises.readdir(buildLocation);
|
||||
d('testing files', buildLocationFiles);
|
||||
const nodeFile = buildLocationFiles.find((file) => file !== '.node' && file.endsWith('.node'));
|
||||
const nodePath = nodeFile ? path.resolve(buildLocation, nodeFile) : undefined;
|
||||
if (nodePath && fs.existsSync(nodePath)) {
|
||||
d('found .node file', nodePath);
|
||||
if (!this.rebuilder.disablePreGypCopy) {
|
||||
const abiPath = path.resolve(this.modulePath, `bin/${this.rebuilder.platform}-${this.rebuilder.arch}-${this.rebuilder.ABI}`);
|
||||
d('copying to prebuilt place:', abiPath);
|
||||
await fs.promises.mkdir(abiPath, { recursive: true });
|
||||
await fs.promises.copyFile(nodePath, path.join(abiPath, `${this.nodeGyp.moduleName}.node`));
|
||||
}
|
||||
}
|
||||
}
|
||||
async writeMetadata() {
|
||||
await fs.promises.mkdir(path.dirname(this.metaPath), { recursive: true });
|
||||
await fs.promises.writeFile(this.metaPath, this.metaData);
|
||||
}
|
||||
async rebuild(cacheKey) {
|
||||
if (!this.rebuilder.buildFromSource &&
|
||||
((await this.findPrebuildifyModule(cacheKey)) ||
|
||||
(await this.findPrebuildInstallModule(cacheKey)) ||
|
||||
(await this.findNodePreGypInstallModule(cacheKey)))) {
|
||||
return true;
|
||||
}
|
||||
return await this.rebuildNodeGypModule(cacheKey);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=module-rebuilder.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/module-rebuilder.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-rebuilder.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
22
electron/node_modules/@electron/rebuild/lib/module-type/index.d.ts
generated
vendored
Normal file
22
electron/node_modules/@electron/rebuild/lib/module-type/index.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import { NodeAPI } from '../node-api.js';
|
||||
import { IRebuilder } from '../types.js';
|
||||
type PackageJSONValue = string | Record<string, unknown>;
|
||||
export declare class NativeModule {
|
||||
protected rebuilder: IRebuilder;
|
||||
private _moduleName;
|
||||
protected modulePath: string;
|
||||
nodeAPI: NodeAPI;
|
||||
private packageJSON;
|
||||
constructor(rebuilder: IRebuilder, modulePath: string);
|
||||
get moduleName(): string;
|
||||
packageJSONFieldWithDefault(key: string, defaultValue: PackageJSONValue): Promise<PackageJSONValue>;
|
||||
packageJSONField(key: string): Promise<PackageJSONValue | undefined>;
|
||||
getSupportedNapiVersions(): Promise<number[] | undefined>;
|
||||
/**
|
||||
* Search dependencies for package using either `packageName` or
|
||||
* `@namespace/packageName` in the case of forks.
|
||||
*/
|
||||
findPackageInDependencies(packageName: string, packageProperty?: string): Promise<string | null>;
|
||||
}
|
||||
export declare function locateBinary(basePath: string, suffix: string): Promise<string | null>;
|
||||
export {};
|
||||
68
electron/node_modules/@electron/rebuild/lib/module-type/index.js
generated
vendored
Normal file
68
electron/node_modules/@electron/rebuild/lib/module-type/index.js
generated
vendored
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { NodeAPI } from '../node-api.js';
|
||||
import { readPackageJson } from '../read-package-json.js';
|
||||
export class NativeModule {
|
||||
rebuilder;
|
||||
_moduleName;
|
||||
modulePath;
|
||||
nodeAPI;
|
||||
packageJSON;
|
||||
constructor(rebuilder, modulePath) {
|
||||
this.rebuilder = rebuilder;
|
||||
this.modulePath = modulePath;
|
||||
this.nodeAPI = new NodeAPI(this.moduleName, this.rebuilder.electronVersion);
|
||||
}
|
||||
get moduleName() {
|
||||
if (!this._moduleName) {
|
||||
const basename = path.basename(this.modulePath);
|
||||
const parentDir = path.basename(path.dirname(this.modulePath));
|
||||
if (parentDir.startsWith('@')) {
|
||||
this._moduleName = `${parentDir}/${basename}`;
|
||||
}
|
||||
this._moduleName = basename;
|
||||
}
|
||||
return this._moduleName;
|
||||
}
|
||||
async packageJSONFieldWithDefault(key, defaultValue) {
|
||||
const result = await this.packageJSONField(key);
|
||||
return result === undefined ? defaultValue : result;
|
||||
}
|
||||
async packageJSONField(key) {
|
||||
this.packageJSON ||= await readPackageJson(this.modulePath);
|
||||
return this.packageJSON[key];
|
||||
}
|
||||
async getSupportedNapiVersions() {
|
||||
const binary = (await this.packageJSONFieldWithDefault('binary', {}));
|
||||
return binary?.napi_versions;
|
||||
}
|
||||
/**
|
||||
* Search dependencies for package using either `packageName` or
|
||||
* `@namespace/packageName` in the case of forks.
|
||||
*/
|
||||
async findPackageInDependencies(packageName, packageProperty = 'dependencies') {
|
||||
const dependencies = await this.packageJSONFieldWithDefault(packageProperty, {});
|
||||
if (typeof dependencies !== 'object')
|
||||
return null;
|
||||
// Look for direct dependency match
|
||||
// eslint-disable-next-line no-prototype-builtins
|
||||
if (dependencies.hasOwnProperty(packageName))
|
||||
return packageName;
|
||||
const forkedPackage = Object.keys(dependencies).find((dependency) => dependency.startsWith('@') && dependency.endsWith(`/${packageName}`));
|
||||
return forkedPackage || null;
|
||||
}
|
||||
}
|
||||
export async function locateBinary(basePath, suffix) {
|
||||
let parentPath = basePath;
|
||||
let testPath;
|
||||
while (testPath !== parentPath) {
|
||||
testPath = parentPath;
|
||||
const checkPath = path.resolve(testPath, suffix);
|
||||
if (fs.existsSync(checkPath)) {
|
||||
return checkPath;
|
||||
}
|
||||
parentPath = path.resolve(testPath, '..');
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/module-type/index.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-type/index.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/module-type/index.ts"],"names":[],"mappings":"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"}
|
||||
6
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/node-gyp.d.ts
generated
vendored
Normal file
6
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/node-gyp.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
import { NativeModule } from '../index.js';
|
||||
export declare class NodeGyp extends NativeModule {
|
||||
buildArgs(prefixedArgs: string[]): Promise<string[]>;
|
||||
buildArgsFromBinaryField(): Promise<string[]>;
|
||||
rebuildModule(): Promise<void>;
|
||||
}
|
||||
125
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/node-gyp.js
generated
vendored
Normal file
125
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/node-gyp.js
generated
vendored
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
import { fork } from 'node:child_process';
|
||||
import debug from 'debug';
|
||||
import path from 'node:path';
|
||||
import { ELECTRON_GYP_DIR } from '../../constants.js';
|
||||
import { getClangEnvironmentVars } from '../../clang-fetcher.js';
|
||||
import { NativeModule } from '../index.js';
|
||||
import { detectLibcFamily } from '../../detect-libc.js';
|
||||
const d = debug('electron-rebuild');
|
||||
export class NodeGyp extends NativeModule {
|
||||
async buildArgs(prefixedArgs) {
|
||||
const args = [
|
||||
'node',
|
||||
'node-gyp',
|
||||
'rebuild',
|
||||
...prefixedArgs,
|
||||
`--runtime=electron`,
|
||||
`--target=${this.rebuilder.electronVersion}`,
|
||||
`--arch=${this.rebuilder.arch}`,
|
||||
`--dist-url=${this.rebuilder.headerURL}`,
|
||||
'--build-from-source',
|
||||
];
|
||||
args.push(d.enabled ? '--verbose' : '--silent');
|
||||
if (this.rebuilder.debug) {
|
||||
args.push('--debug');
|
||||
}
|
||||
args.push(...(await this.buildArgsFromBinaryField()));
|
||||
if (this.rebuilder.msvsVersion) {
|
||||
args.push(`--msvs_version=${this.rebuilder.msvsVersion}`);
|
||||
}
|
||||
if (this.rebuilder.jobs) {
|
||||
args.push(`--jobs=${this.rebuilder.jobs}`);
|
||||
}
|
||||
// Headers of old Electron versions do not have a valid config.gypi file
|
||||
// and --force-process-config must be passed to node-gyp >= 8.4.0 to
|
||||
// correctly build modules for them.
|
||||
// See also https://github.com/nodejs/node-gyp/pull/2497
|
||||
const [maj, min] = this.rebuilder.electronVersion.split('.').map(Number);
|
||||
if (maj < 14 || (maj === 14 && min < 2) || (maj === 15 && min < 3)) {
|
||||
args.push('--force-process-config');
|
||||
}
|
||||
return args;
|
||||
}
|
||||
async buildArgsFromBinaryField() {
|
||||
const binary = (await this.packageJSONFieldWithDefault('binary', {}));
|
||||
let napiBuildVersion = undefined;
|
||||
if (Array.isArray(binary.napi_versions)) {
|
||||
napiBuildVersion = this.nodeAPI.getNapiVersion(binary.napi_versions.map((str) => Number(str)));
|
||||
}
|
||||
const flags = await Promise.all(Object.entries(binary).map(async ([binaryKey, binaryValue]) => {
|
||||
if (binaryKey === 'napi_versions') {
|
||||
return;
|
||||
}
|
||||
let value = binaryValue;
|
||||
if (binaryKey === 'module_path') {
|
||||
value = path.resolve(this.modulePath, value);
|
||||
}
|
||||
value = value
|
||||
.replace('{configuration}', this.rebuilder.buildType)
|
||||
.replace('{node_abi}', `electron-v${this.rebuilder.electronVersion.split('.').slice(0, 2).join('.')}`)
|
||||
.replace('{platform}', this.rebuilder.platform)
|
||||
.replace('{arch}', this.rebuilder.arch)
|
||||
.replace('{version}', (await this.packageJSONField('version')))
|
||||
.replace('{libc}', detectLibcFamily() || 'unknown');
|
||||
if (napiBuildVersion !== undefined) {
|
||||
value = value.replace('{napi_build_version}', napiBuildVersion.toString());
|
||||
}
|
||||
for (const [replaceKey, replaceValue] of Object.entries(binary)) {
|
||||
value = value.replace(`{${replaceKey}}`, replaceValue);
|
||||
}
|
||||
return `--${binaryKey}=${value}`;
|
||||
}));
|
||||
return flags.filter((value) => value);
|
||||
}
|
||||
async rebuildModule() {
|
||||
if (this.rebuilder.platform !== process.platform) {
|
||||
throw new Error('node-gyp does not support cross-compiling native modules from source.');
|
||||
}
|
||||
if (this.modulePath.includes(' ')) {
|
||||
console.error('Attempting to build a module with a space in the path');
|
||||
console.error('See https://github.com/nodejs/node-gyp/issues/65#issuecomment-368820565 for reasons why this may not work');
|
||||
// FIXME: Re-enable the throw when more research has been done
|
||||
// throw new Error(`node-gyp does not support building modules with spaces in their path, tried to build: ${modulePath}`);
|
||||
}
|
||||
const env = {
|
||||
...process.env,
|
||||
};
|
||||
const extraNodeGypArgs = [];
|
||||
if (this.rebuilder.useElectronClang) {
|
||||
const { env: clangEnv, args: clangArgs } = await getClangEnvironmentVars(this.rebuilder.electronVersion, this.rebuilder.arch);
|
||||
Object.assign(env, clangEnv);
|
||||
extraNodeGypArgs.push(...clangArgs);
|
||||
}
|
||||
const nodeGypArgs = await this.buildArgs(extraNodeGypArgs);
|
||||
d('rebuilding', this.moduleName, 'with args', nodeGypArgs);
|
||||
const forkedChild = fork(path.resolve(import.meta.dirname, 'worker.js'), {
|
||||
env,
|
||||
cwd: this.modulePath,
|
||||
stdio: 'pipe',
|
||||
});
|
||||
const outputBuffers = [];
|
||||
forkedChild.stdout?.on('data', (chunk) => {
|
||||
outputBuffers.push(chunk);
|
||||
});
|
||||
forkedChild.stderr?.on('data', (chunk) => {
|
||||
outputBuffers.push(chunk);
|
||||
});
|
||||
forkedChild.send({
|
||||
moduleName: this.moduleName,
|
||||
nodeGypArgs,
|
||||
extraNodeGypArgs,
|
||||
devDir: this.rebuilder.mode === 'sequential'
|
||||
? ELECTRON_GYP_DIR
|
||||
: path.resolve(ELECTRON_GYP_DIR, '_p', this.moduleName),
|
||||
});
|
||||
await new Promise((resolve, reject) => {
|
||||
forkedChild.on('exit', (code) => {
|
||||
if (code === 0)
|
||||
return resolve();
|
||||
console.error(Buffer.concat(outputBuffers).toString());
|
||||
reject(new Error(`node-gyp failed to rebuild '${this.modulePath}'`));
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=node-gyp.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/node-gyp.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/node-gyp.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
1
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/worker.d.ts
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/worker.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export {};
|
||||
32
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/worker.js
generated
vendored
Normal file
32
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/worker.js
generated
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import NodeGypRunner from 'node-gyp';
|
||||
process.on('message', async ({ nodeGypArgs, devDir, extraNodeGypArgs }) => {
|
||||
const nodeGyp = NodeGypRunner();
|
||||
nodeGyp.parseArgv(nodeGypArgs);
|
||||
nodeGyp.devDir = devDir;
|
||||
let command = nodeGyp.todo.shift();
|
||||
try {
|
||||
while (command) {
|
||||
if (command.name === 'configure') {
|
||||
command.args = command.args.filter((arg) => !extraNodeGypArgs.includes(arg));
|
||||
}
|
||||
else if (command.name === 'build' && process.platform === 'win32') {
|
||||
// This is disgusting but it prevents node-gyp from destroying our MSBuild arguments
|
||||
command.args.map = (fn) => {
|
||||
return Array.prototype.map.call(command.args, (arg) => {
|
||||
if (arg.startsWith('/p:'))
|
||||
return arg;
|
||||
return fn(arg);
|
||||
});
|
||||
};
|
||||
}
|
||||
await nodeGyp.commands[command.name](command.args);
|
||||
command = nodeGyp.todo.shift();
|
||||
}
|
||||
process.exit(0);
|
||||
}
|
||||
catch (err) {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=worker.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/worker.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-type/node-gyp/worker.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/module-type/node-gyp/worker.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,UAAU,CAAC;AAErC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE;IACxE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACpE,oFAAoF;gBACpF,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAA2B,EAAE,EAAE;oBACjD,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;wBAC5D,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;4BAAE,OAAO,GAAG,CAAC;wBACtC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;oBACjB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
||||
10
electron/node_modules/@electron/rebuild/lib/module-type/node-pre-gyp.d.ts
generated
vendored
Normal file
10
electron/node_modules/@electron/rebuild/lib/module-type/node-pre-gyp.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
import { NativeModule } from './index.js';
|
||||
export declare class NodePreGyp extends NativeModule {
|
||||
usesTool(): Promise<boolean>;
|
||||
locateBinary(): Promise<string | null>;
|
||||
run(nodePreGypPath: string): Promise<void>;
|
||||
findPrebuiltModule(): Promise<boolean>;
|
||||
getNodePreGypRuntimeArgs(): Promise<string[]>;
|
||||
private shouldUpdateBinary;
|
||||
private getModulePaths;
|
||||
}
|
||||
110
electron/node_modules/@electron/rebuild/lib/module-type/node-pre-gyp.js
generated
vendored
Normal file
110
electron/node_modules/@electron/rebuild/lib/module-type/node-pre-gyp.js
generated
vendored
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
import debug from 'debug';
|
||||
import { readBinaryFileArch } from 'read-binary-file-arch';
|
||||
import { locateBinary, NativeModule } from './index.js';
|
||||
import { spawn } from '@malept/cross-spawn-promise';
|
||||
const d = debug('electron-rebuild');
|
||||
export class NodePreGyp extends NativeModule {
|
||||
async usesTool() {
|
||||
const packageName = await this.findPackageInDependencies('node-pre-gyp');
|
||||
return !!packageName;
|
||||
}
|
||||
async locateBinary() {
|
||||
const packageName = await this.findPackageInDependencies('node-pre-gyp');
|
||||
if (!packageName)
|
||||
return null;
|
||||
return locateBinary(this.modulePath, `node_modules/${packageName}/bin/node-pre-gyp`);
|
||||
}
|
||||
async run(nodePreGypPath) {
|
||||
const redownloadBinary = await this.shouldUpdateBinary(nodePreGypPath);
|
||||
await spawn(process.execPath, [
|
||||
nodePreGypPath,
|
||||
'reinstall',
|
||||
'--fallback-to-build',
|
||||
...(redownloadBinary ? ['--update-binary'] : []),
|
||||
`--arch=${this.rebuilder.arch}`, // fallback build arch
|
||||
`--target_arch=${this.rebuilder.arch}`, // prebuild arch
|
||||
`--target_platform=${this.rebuilder.platform}`,
|
||||
...(await this.getNodePreGypRuntimeArgs()),
|
||||
], {
|
||||
cwd: this.modulePath,
|
||||
});
|
||||
}
|
||||
async findPrebuiltModule() {
|
||||
const nodePreGypPath = await this.locateBinary();
|
||||
if (nodePreGypPath) {
|
||||
d(`triggering prebuild download step: ${this.moduleName}`);
|
||||
try {
|
||||
await this.run(nodePreGypPath);
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
d('failed to use node-pre-gyp:', err);
|
||||
if (err?.message?.includes('requires Node-API but Electron')) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
d(`could not find node-pre-gyp relative to: ${this.modulePath}`);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
async getNodePreGypRuntimeArgs() {
|
||||
const moduleNapiVersions = await this.getSupportedNapiVersions();
|
||||
if (moduleNapiVersions) {
|
||||
return [];
|
||||
}
|
||||
else {
|
||||
return [
|
||||
'--runtime=electron',
|
||||
`--target=${this.rebuilder.electronVersion}`,
|
||||
`--dist-url=${this.rebuilder.headerURL}`,
|
||||
];
|
||||
}
|
||||
}
|
||||
async shouldUpdateBinary(nodePreGypPath) {
|
||||
let shouldUpdate = false;
|
||||
// Redownload binary only if the existing module arch differs from the
|
||||
// target arch.
|
||||
try {
|
||||
const modulePaths = await this.getModulePaths(nodePreGypPath);
|
||||
d('module paths:', modulePaths);
|
||||
for (const modulePath of modulePaths) {
|
||||
let moduleArch;
|
||||
try {
|
||||
moduleArch = await readBinaryFileArch(modulePath);
|
||||
d('module arch:', moduleArch);
|
||||
}
|
||||
catch (error) {
|
||||
d('failed to read module arch:', error.message);
|
||||
continue;
|
||||
}
|
||||
if (moduleArch && moduleArch !== this.rebuilder.arch) {
|
||||
shouldUpdate = true;
|
||||
d('module architecture differs:', `${moduleArch} !== ${this.rebuilder.arch}`);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
d('failed to get existing binary arch:', error.message);
|
||||
// Assume architecture differs
|
||||
shouldUpdate = true;
|
||||
}
|
||||
return shouldUpdate;
|
||||
}
|
||||
async getModulePaths(nodePreGypPath) {
|
||||
const results = await spawn(process.execPath, [
|
||||
nodePreGypPath,
|
||||
'reveal',
|
||||
'module', // pick property with module path
|
||||
`--target_arch=${this.rebuilder.arch}`,
|
||||
`--target_platform=${this.rebuilder.platform}`,
|
||||
], {
|
||||
cwd: this.modulePath,
|
||||
});
|
||||
// Packages with multiple binaries will output one per line
|
||||
return results.split('\n').filter(Boolean);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=node-pre-gyp.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/module-type/node-pre-gyp.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-type/node-pre-gyp.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"node-pre-gyp.js","sourceRoot":"","sources":["../../src/module-type/node-pre-gyp.ts"],"names":[],"mappings":"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"}
|
||||
12
electron/node_modules/@electron/rebuild/lib/module-type/prebuild-install.d.ts
generated
vendored
Normal file
12
electron/node_modules/@electron/rebuild/lib/module-type/prebuild-install.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import { NativeModule } from './index.js';
|
||||
export declare class PrebuildInstall extends NativeModule {
|
||||
usesTool(): Promise<boolean>;
|
||||
locateBinary(): Promise<string | null>;
|
||||
run(prebuildInstallPath: string): Promise<void>;
|
||||
findPrebuiltModule(): Promise<boolean>;
|
||||
/**
|
||||
* Whether a prebuild-install-based native module exists.
|
||||
*/
|
||||
prebuiltModuleExists(): Promise<boolean>;
|
||||
getPrebuildInstallRuntimeArgs(): Promise<string[]>;
|
||||
}
|
||||
67
electron/node_modules/@electron/rebuild/lib/module-type/prebuild-install.js
generated
vendored
Normal file
67
electron/node_modules/@electron/rebuild/lib/module-type/prebuild-install.js
generated
vendored
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
import debug from 'debug';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { locateBinary, NativeModule } from './index.js';
|
||||
import { spawn } from '@malept/cross-spawn-promise';
|
||||
const d = debug('electron-rebuild');
|
||||
export class PrebuildInstall extends NativeModule {
|
||||
async usesTool() {
|
||||
const packageName = await this.findPackageInDependencies('prebuild-install');
|
||||
return !!packageName;
|
||||
}
|
||||
async locateBinary() {
|
||||
const packageName = await this.findPackageInDependencies('prebuild-install');
|
||||
if (!packageName)
|
||||
return null;
|
||||
return locateBinary(this.modulePath, `node_modules/${packageName}/bin.js`);
|
||||
}
|
||||
async run(prebuildInstallPath) {
|
||||
await spawn(process.execPath, [
|
||||
path.resolve(import.meta.dirname, '..', `prebuild-shim.js`),
|
||||
prebuildInstallPath,
|
||||
`--arch=${this.rebuilder.arch}`,
|
||||
`--platform=${this.rebuilder.platform}`,
|
||||
`--tag-prefix=${this.rebuilder.prebuildTagPrefix}`,
|
||||
...(await this.getPrebuildInstallRuntimeArgs()),
|
||||
], {
|
||||
cwd: this.modulePath,
|
||||
});
|
||||
}
|
||||
async findPrebuiltModule() {
|
||||
const prebuildInstallPath = await this.locateBinary();
|
||||
if (prebuildInstallPath) {
|
||||
d(`triggering prebuild download step: ${this.moduleName}`);
|
||||
try {
|
||||
await this.run(prebuildInstallPath);
|
||||
return true;
|
||||
}
|
||||
catch (err) {
|
||||
d('failed to use prebuild-install:', err);
|
||||
if (err?.message?.includes('requires Node-API but Electron')) {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
d(`could not find prebuild-install relative to: ${this.modulePath}`);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Whether a prebuild-install-based native module exists.
|
||||
*/
|
||||
async prebuiltModuleExists() {
|
||||
return fs.existsSync(path.resolve(this.modulePath, 'prebuilds', `${this.rebuilder.platform}-${this.rebuilder.arch}`, `electron-${this.rebuilder.ABI}.node`));
|
||||
}
|
||||
async getPrebuildInstallRuntimeArgs() {
|
||||
const moduleNapiVersions = await this.getSupportedNapiVersions();
|
||||
if (moduleNapiVersions) {
|
||||
const napiVersion = this.nodeAPI.getNapiVersion(moduleNapiVersions);
|
||||
return ['--runtime=napi', `--target=${napiVersion}`];
|
||||
}
|
||||
else {
|
||||
return ['--runtime=electron', `--target=${this.rebuilder.electronVersion}`];
|
||||
}
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=prebuild-install.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/module-type/prebuild-install.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-type/prebuild-install.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"prebuild-install.js","sourceRoot":"","sources":["../../src/module-type/prebuild-install.ts"],"names":[],"mappings":"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"}
|
||||
11
electron/node_modules/@electron/rebuild/lib/module-type/prebuildify.d.ts
generated
vendored
Normal file
11
electron/node_modules/@electron/rebuild/lib/module-type/prebuildify.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import { NativeModule } from './index.js';
|
||||
export declare function determineNativePrebuildArch(arch: string): string;
|
||||
/**
|
||||
* The extension of `prebuildify`-generated native modules, after the last `.`. This value differs
|
||||
* based on whether the target arch is ARM-based.
|
||||
*/
|
||||
export declare function determineNativePrebuildExtension(arch: string): string;
|
||||
export declare class Prebuildify extends NativeModule {
|
||||
usesTool(): Promise<boolean>;
|
||||
findPrebuiltModule(): Promise<boolean>;
|
||||
}
|
||||
58
electron/node_modules/@electron/rebuild/lib/module-type/prebuildify.js
generated
vendored
Normal file
58
electron/node_modules/@electron/rebuild/lib/module-type/prebuildify.js
generated
vendored
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
import debug from 'debug';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { getNodeArch } from '../arch.js';
|
||||
import { NativeModule } from './index.js';
|
||||
const d = debug('electron-rebuild');
|
||||
export function determineNativePrebuildArch(arch) {
|
||||
if (arch === 'armv7l') {
|
||||
return 'arm';
|
||||
}
|
||||
return arch;
|
||||
}
|
||||
/**
|
||||
* The extension of `prebuildify`-generated native modules, after the last `.`. This value differs
|
||||
* based on whether the target arch is ARM-based.
|
||||
*/
|
||||
export function determineNativePrebuildExtension(arch) {
|
||||
switch (arch) {
|
||||
case 'arm64':
|
||||
return 'armv8.node';
|
||||
case 'armv7l':
|
||||
return 'armv7.node';
|
||||
}
|
||||
return 'node';
|
||||
}
|
||||
export class Prebuildify extends NativeModule {
|
||||
async usesTool() {
|
||||
const packageName = await this.findPackageInDependencies('prebuildify', 'devDependencies');
|
||||
return !!packageName;
|
||||
}
|
||||
async findPrebuiltModule() {
|
||||
d(`Checking for prebuilds for "${this.moduleName}"`);
|
||||
const prebuildsDir = path.join(this.modulePath, 'prebuilds');
|
||||
if (!fs.existsSync(prebuildsDir)) {
|
||||
d(`Could not find the prebuilds directory at "${prebuildsDir}"`);
|
||||
return false;
|
||||
}
|
||||
const nodeArch = getNodeArch(this.rebuilder.arch, process.config.variables);
|
||||
const prebuiltModuleDir = path.join(prebuildsDir, `${this.rebuilder.platform}-${determineNativePrebuildArch(nodeArch)}`);
|
||||
const nativeExt = determineNativePrebuildExtension(nodeArch);
|
||||
const electronNapiModuleFilename = path.join(prebuiltModuleDir, `electron.napi.${nativeExt}`);
|
||||
const nodejsNapiModuleFilename = path.join(prebuiltModuleDir, `node.napi.${nativeExt}`);
|
||||
const abiModuleFilename = path.join(prebuiltModuleDir, `electron.abi${this.rebuilder.ABI}.${nativeExt}`);
|
||||
if (fs.existsSync(electronNapiModuleFilename) || fs.existsSync(nodejsNapiModuleFilename)) {
|
||||
this.nodeAPI.ensureElectronSupport();
|
||||
d(`Found prebuilt Node-API module in ${prebuiltModuleDir}"`);
|
||||
}
|
||||
else if (fs.existsSync(abiModuleFilename)) {
|
||||
d(`Found prebuilt module: "${abiModuleFilename}"`);
|
||||
}
|
||||
else {
|
||||
d(`Could not locate "${electronNapiModuleFilename}", "${nodejsNapiModuleFilename}", or "${abiModuleFilename}"`);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=prebuildify.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/module-type/prebuildify.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-type/prebuildify.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"prebuildify.js","sourceRoot":"","sources":["../../src/module-type/prebuildify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAmB,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAEpC,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAC,IAAY;IAC3D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,YAAY;IAC3C,KAAK,CAAC,QAAQ;QACZ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAC3F,OAAO,CAAC,CAAC,WAAW,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,CAAC,CAAC,+BAA+B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAErD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,CAAC,CAAC,8CAA8C,YAAY,GAAG,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,SAA4B,CAAC,CAAC;QAC/F,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CACjC,YAAY,EACZ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,2BAA2B,CAAC,QAAQ,CAAC,EAAE,CACtE,CAAC;QACF,MAAM,SAAS,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,0BAA0B,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,SAAS,EAAE,CAAC,CAAC;QAC9F,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,SAAS,EAAE,CAAC,CAAC;QACxF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CACjC,iBAAiB,EACjB,eAAe,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS,EAAE,CACjD,CAAC;QAEF,IAAI,EAAE,CAAC,UAAU,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACzF,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACrC,CAAC,CAAC,qCAAqC,iBAAiB,GAAG,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC5C,CAAC,CAAC,2BAA2B,iBAAiB,GAAG,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,CAAC,CACC,qBAAqB,0BAA0B,OAAO,wBAAwB,UAAU,iBAAiB,GAAG,CAC7G,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
||||
17
electron/node_modules/@electron/rebuild/lib/module-walker.d.ts
generated
vendored
Normal file
17
electron/node_modules/@electron/rebuild/lib/module-walker.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
export type ModuleType = 'prod' | 'dev' | 'optional';
|
||||
export declare class ModuleWalker {
|
||||
buildPath: string;
|
||||
modulesToRebuild: string[];
|
||||
onlyModules: string[] | null;
|
||||
prodDeps: Set<string>;
|
||||
projectRootPath?: string;
|
||||
realModulePaths: Set<string>;
|
||||
realNodeModulesPaths: Set<string>;
|
||||
types: ModuleType[];
|
||||
constructor(buildPath: string, projectRootPath: string | undefined, types: ModuleType[], prodDeps: Set<string>, onlyModules: string[] | null);
|
||||
get nodeModulesPaths(): Promise<string[]>;
|
||||
walkModules(): Promise<void>;
|
||||
findModule(moduleName: string, fromDir: string, foundFn: (p: string) => Promise<void>): Promise<void[]>;
|
||||
markChildrenAsProdDeps(modulePath: string): Promise<void>;
|
||||
findAllModulesIn(nodeModulesPath: string, prefix?: string): Promise<void>;
|
||||
}
|
||||
129
electron/node_modules/@electron/rebuild/lib/module-walker.js
generated
vendored
Normal file
129
electron/node_modules/@electron/rebuild/lib/module-walker.js
generated
vendored
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
import debug from 'debug';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { readPackageJson } from './read-package-json.js';
|
||||
import { searchForModule, searchForNodeModules } from './search-module.js';
|
||||
const d = debug('electron-rebuild');
|
||||
export class ModuleWalker {
|
||||
buildPath;
|
||||
modulesToRebuild;
|
||||
onlyModules;
|
||||
prodDeps;
|
||||
projectRootPath;
|
||||
realModulePaths;
|
||||
realNodeModulesPaths;
|
||||
types;
|
||||
constructor(buildPath, projectRootPath, types, prodDeps, onlyModules) {
|
||||
this.buildPath = buildPath;
|
||||
this.modulesToRebuild = [];
|
||||
this.projectRootPath = projectRootPath;
|
||||
this.types = types;
|
||||
this.prodDeps = prodDeps;
|
||||
this.onlyModules = onlyModules;
|
||||
this.realModulePaths = new Set();
|
||||
this.realNodeModulesPaths = new Set();
|
||||
}
|
||||
get nodeModulesPaths() {
|
||||
return searchForNodeModules(this.buildPath, this.projectRootPath);
|
||||
}
|
||||
async walkModules() {
|
||||
const rootPackageJson = await readPackageJson(this.buildPath);
|
||||
const markWaiters = [];
|
||||
const depKeys = [];
|
||||
if (this.types.includes('prod') || this.onlyModules) {
|
||||
depKeys.push(...Object.keys(rootPackageJson.dependencies || {}));
|
||||
}
|
||||
if (this.types.includes('optional') || this.onlyModules) {
|
||||
depKeys.push(...Object.keys(rootPackageJson.optionalDependencies || {}));
|
||||
}
|
||||
if (this.types.includes('dev') || this.onlyModules) {
|
||||
depKeys.push(...Object.keys(rootPackageJson.devDependencies || {}));
|
||||
}
|
||||
for (const key of depKeys) {
|
||||
this.prodDeps.add(key);
|
||||
const modulePaths = await searchForModule(this.buildPath, key, this.projectRootPath);
|
||||
for (const modulePath of modulePaths) {
|
||||
markWaiters.push(this.markChildrenAsProdDeps(modulePath));
|
||||
}
|
||||
}
|
||||
await Promise.all(markWaiters);
|
||||
d('identified prod deps:', this.prodDeps);
|
||||
}
|
||||
async findModule(moduleName, fromDir, foundFn) {
|
||||
const testPaths = await searchForModule(fromDir, moduleName, this.projectRootPath);
|
||||
const foundFns = testPaths.map((testPath) => foundFn(testPath));
|
||||
return Promise.all(foundFns);
|
||||
}
|
||||
async markChildrenAsProdDeps(modulePath) {
|
||||
if (!fs.existsSync(modulePath)) {
|
||||
return;
|
||||
}
|
||||
d('exploring', modulePath);
|
||||
let childPackageJson;
|
||||
try {
|
||||
childPackageJson = await readPackageJson(modulePath, true);
|
||||
}
|
||||
catch {
|
||||
return;
|
||||
}
|
||||
const moduleWait = [];
|
||||
const callback = this.markChildrenAsProdDeps.bind(this);
|
||||
for (const key of Object.keys(childPackageJson.dependencies || {}).concat(Object.keys(childPackageJson.optionalDependencies || {}))) {
|
||||
if (this.prodDeps.has(key)) {
|
||||
continue;
|
||||
}
|
||||
this.prodDeps.add(key);
|
||||
moduleWait.push(this.findModule(key, modulePath, callback));
|
||||
}
|
||||
await Promise.all(moduleWait);
|
||||
}
|
||||
async findAllModulesIn(nodeModulesPath, prefix = '') {
|
||||
// Some package managers use symbolic links when installing node modules
|
||||
// we need to be sure we've never tested the a package before by resolving
|
||||
// all symlinks in the path and testing against a set
|
||||
const realNodeModulesPath = await fs.promises.realpath(nodeModulesPath);
|
||||
if (this.realNodeModulesPaths.has(realNodeModulesPath)) {
|
||||
return;
|
||||
}
|
||||
this.realNodeModulesPaths.add(realNodeModulesPath);
|
||||
d('scanning:', realNodeModulesPath);
|
||||
for (const modulePath of await fs.promises.readdir(realNodeModulesPath)) {
|
||||
// Ignore the magical .bin directory
|
||||
if (modulePath === '.bin')
|
||||
continue;
|
||||
const subPath = path.resolve(nodeModulesPath, modulePath);
|
||||
// Ensure that we don't mark modules as needing to be rebuilt more than once
|
||||
// by ignoring / resolving symlinks
|
||||
let realPath;
|
||||
try {
|
||||
realPath = await fs.promises.realpath(subPath);
|
||||
}
|
||||
catch (error) {
|
||||
// pnpm leaves dangling symlinks when modules are removed
|
||||
if (error.code === 'ENOENT') {
|
||||
const stat = await fs.promises.lstat(subPath);
|
||||
if (stat.isSymbolicLink()) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
if (this.realModulePaths.has(realPath)) {
|
||||
continue;
|
||||
}
|
||||
this.realModulePaths.add(realPath);
|
||||
const moduleName = `${prefix}${modulePath}`;
|
||||
if (this.prodDeps.has(moduleName) &&
|
||||
(!this.onlyModules || this.onlyModules.includes(moduleName))) {
|
||||
this.modulesToRebuild.push(realPath);
|
||||
}
|
||||
if (modulePath.startsWith('@')) {
|
||||
await this.findAllModulesIn(realPath, `${modulePath}/`);
|
||||
}
|
||||
if (fs.existsSync(path.resolve(nodeModulesPath, modulePath, 'node_modules'))) {
|
||||
await this.findAllModulesIn(path.resolve(realPath, 'node_modules'));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=module-walker.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/module-walker.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/module-walker.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"module-walker.js","sourceRoot":"","sources":["../src/module-walker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,MAAM,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAIpC,MAAM,OAAO,YAAY;IACvB,SAAS,CAAS;IAClB,gBAAgB,CAAW;IAC3B,WAAW,CAAkB;IAC7B,QAAQ,CAAc;IACtB,eAAe,CAAU;IACzB,eAAe,CAAc;IAC7B,oBAAoB,CAAc;IAClC,KAAK,CAAe;IAEpB,YACE,SAAiB,EACjB,eAAmC,EACnC,KAAmB,EACnB,QAAqB,EACrB,WAA4B;QAE5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAoB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,WAAW,GAAa,MAAM,eAAe,CACjD,IAAI,CAAC,SAAS,EACd,GAAG,EACH,IAAI,CAAC,eAAe,CACrB,CAAC;YACF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE/B,CAAC,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CACd,UAAkB,EAClB,OAAe,EACf,OAAqC;QAErC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEhE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,UAAkB;QAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC3B,IAAI,gBAAgB,CAAC;QACrB,IAAI,CAAC;YACH,gBAAgB,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAsB,EAAE,CAAC;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CACvE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,IAAI,EAAE,CAAC,CACzD,EAAE,CAAC;YACF,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEvB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,eAAuB,EAAE,MAAM,GAAG,EAAE;QACzD,wEAAwE;QACxE,0EAA0E;QAC1E,qDAAqD;QACrD,MAAM,mBAAmB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAEnD,CAAC,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAEpC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACxE,oCAAoC;YACpC,IAAI,UAAU,KAAK,MAAM;gBAAE,SAAS;YAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAE1D,4EAA4E;YAC5E,mCAAmC;YACnC,IAAI,QAAgB,CAAC;YACrB,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,yDAAyD;gBACzD,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACvD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC9C,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC1B,SAAS;oBACX,CAAC;gBACH,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnC,MAAM,UAAU,GAAG,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5C,IACE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAC5D,CAAC;gBACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;YAED,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
||||
8
electron/node_modules/@electron/rebuild/lib/node-api.d.ts
generated
vendored
Normal file
8
electron/node_modules/@electron/rebuild/lib/node-api.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
export declare class NodeAPI {
|
||||
private moduleName;
|
||||
private electronVersion;
|
||||
constructor(moduleName: string, electronVersion: string);
|
||||
ensureElectronSupport(): void;
|
||||
getVersionForElectron(): number;
|
||||
getNapiVersion(moduleNapiVersions: number[]): number;
|
||||
}
|
||||
29
electron/node_modules/@electron/rebuild/lib/node-api.js
generated
vendored
Normal file
29
electron/node_modules/@electron/rebuild/lib/node-api.js
generated
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import { fromElectronVersion as napiVersionFromElectronVersion } from 'node-api-version';
|
||||
export class NodeAPI {
|
||||
moduleName;
|
||||
electronVersion;
|
||||
constructor(moduleName, electronVersion) {
|
||||
this.moduleName = moduleName;
|
||||
this.electronVersion = electronVersion;
|
||||
}
|
||||
ensureElectronSupport() {
|
||||
this.getVersionForElectron();
|
||||
}
|
||||
getVersionForElectron() {
|
||||
const electronNapiVersion = napiVersionFromElectronVersion(this.electronVersion);
|
||||
if (!electronNapiVersion) {
|
||||
throw new Error(`Native module '${this.moduleName}' requires Node-API but Electron v${this.electronVersion} does not support Node-API`);
|
||||
}
|
||||
return electronNapiVersion;
|
||||
}
|
||||
getNapiVersion(moduleNapiVersions) {
|
||||
const electronNapiVersion = this.getVersionForElectron();
|
||||
// Filter out Node-API versions that are too high
|
||||
const filteredVersions = moduleNapiVersions.filter((v) => v <= electronNapiVersion);
|
||||
if (filteredVersions.length === 0) {
|
||||
throw new Error(`Native module '${this.moduleName}' supports Node-API versions ${moduleNapiVersions.join(', ')} but Electron v${this.electronVersion} only supports Node-API v${electronNapiVersion}`);
|
||||
}
|
||||
return Math.max(...filteredVersions);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=node-api.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/node-api.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/node-api.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"node-api.js","sourceRoot":"","sources":["../src/node-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,IAAI,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAEzF,MAAM,OAAO,OAAO;IACV,UAAU,CAAS;IACnB,eAAe,CAAS;IAEhC,YAAY,UAAkB,EAAE,eAAuB;QACrD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,qBAAqB;QACnB,MAAM,mBAAmB,GAAG,8BAA8B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEjF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,UAAU,qCAAqC,IAAI,CAAC,eAAe,4BAA4B,CACvH,CAAC;QACJ,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,cAAc,CAAC,kBAA4B;QACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEzD,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC;QAEpF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,UAAU,gCAAgC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,eAAe,4BAA4B,mBAAmB,EAAE,CACtL,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACvC,CAAC;CACF"}
|
||||
1
electron/node_modules/@electron/rebuild/lib/prebuild-shim.d.ts
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/prebuild-shim.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export {};
|
||||
7
electron/node_modules/@electron/rebuild/lib/prebuild-shim.js
generated
vendored
Normal file
7
electron/node_modules/@electron/rebuild/lib/prebuild-shim.js
generated
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import { pathToFileURL } from 'node:url';
|
||||
process.argv.splice(1, 1);
|
||||
// This tricks prebuild-install into not validating on the
|
||||
// 1.8.x and 8.x ABI collision
|
||||
Object.defineProperty(process.versions, 'modules', { value: '-1', writable: false });
|
||||
void import(pathToFileURL(process.argv[1]).toString());
|
||||
//# sourceMappingURL=prebuild-shim.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/prebuild-shim.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/prebuild-shim.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"prebuild-shim.js","sourceRoot":"","sources":["../src/prebuild-shim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE1B,0DAA0D;AAC1D,8BAA8B;AAC9B,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAErF,KAAK,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC"}
|
||||
1
electron/node_modules/@electron/rebuild/lib/read-package-json.d.ts
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/read-package-json.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export declare function readPackageJson(dir: string, safe?: boolean): Promise<any>;
|
||||
19
electron/node_modules/@electron/rebuild/lib/read-package-json.js
generated
vendored
Normal file
19
electron/node_modules/@electron/rebuild/lib/read-package-json.js
generated
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import fs from 'node:fs/promises';
|
||||
import path from 'node:path';
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
export async function readPackageJson(dir, safe = false) {
|
||||
try {
|
||||
return JSON.parse(await fs.readFile(path.resolve(dir, 'package.json'), {
|
||||
encoding: 'utf-8',
|
||||
}));
|
||||
}
|
||||
catch (err) {
|
||||
if (safe) {
|
||||
return {};
|
||||
}
|
||||
else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=read-package-json.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/read-package-json.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/read-package-json.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"read-package-json.js","sourceRoot":"","sources":["../src/read-package-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,IAAI,GAAG,KAAK;IAC7D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE;YACnD,QAAQ,EAAE,OAAO;SAClB,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC"}
|
||||
155
electron/node_modules/@electron/rebuild/lib/rebuild.d.ts
generated
vendored
Normal file
155
electron/node_modules/@electron/rebuild/lib/rebuild.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
import { EventEmitter } from 'node:events';
|
||||
import { BuildType, IRebuilder, RebuildMode } from './types.js';
|
||||
import { ModuleType } from './module-walker.js';
|
||||
export interface RebuildOptions {
|
||||
/**
|
||||
* The path to the `node_modules` directory to rebuild.
|
||||
*/
|
||||
buildPath: string;
|
||||
/**
|
||||
* The version of Electron to build against.
|
||||
*/
|
||||
electronVersion: string;
|
||||
/**
|
||||
* Override the target platform to something other than the host system platform.
|
||||
* Note: This only applies to downloading prebuilt binaries. **It is not possible to cross-compile native modules.**
|
||||
*
|
||||
* @defaultValue The system {@link https://nodejs.org/api/process.html#processplatform | `process.platform`} value
|
||||
*/
|
||||
platform?: NodeJS.Platform;
|
||||
/**
|
||||
* Override the target rebuild architecture to something other than the host system architecture.
|
||||
*
|
||||
* @defaultValue The system {@link https://nodejs.org/api/process.html#processarch | `process.arch`} value
|
||||
*/
|
||||
arch?: string;
|
||||
/**
|
||||
* An array of module names to rebuild in addition to detected modules
|
||||
* @default []
|
||||
*/
|
||||
extraModules?: string[];
|
||||
/**
|
||||
* An array of module names to rebuild. **Only** these modules will be rebuilt.
|
||||
*/
|
||||
onlyModules?: string[] | null;
|
||||
/**
|
||||
* Force a rebuild of modules regardless of their current build state.
|
||||
*/
|
||||
force?: boolean;
|
||||
/**
|
||||
* URL to download Electron header files from.
|
||||
* @defaultValue `https://www.electronjs.org/headers`
|
||||
*/
|
||||
headerURL?: string;
|
||||
/**
|
||||
* Array of types of dependencies to rebuild. Possible values are `prod`, `dev`, and `optional`.
|
||||
*
|
||||
* @defaultValue `['prod', 'optional']`
|
||||
*/
|
||||
types?: ModuleType[];
|
||||
/**
|
||||
* Whether to rebuild modules sequentially or in parallel.
|
||||
*
|
||||
* @defaultValue `sequential`
|
||||
*/
|
||||
mode?: RebuildMode;
|
||||
/**
|
||||
* Rebuilds a Debug build of target modules. If this is `false`, a Release build will be generated instead.
|
||||
*
|
||||
* @defaultValue false
|
||||
*/
|
||||
debug?: boolean;
|
||||
/**
|
||||
* Enables hash-based caching to speed up local rebuilds.
|
||||
*
|
||||
* @experimental
|
||||
* @defaultValue false
|
||||
*/
|
||||
useCache?: boolean;
|
||||
/**
|
||||
* Whether to use the `clang` executable that Electron uses when building.
|
||||
* This will guarantee compiler compatibility.
|
||||
*
|
||||
* @defaultValue false
|
||||
*/
|
||||
useElectronClang?: boolean;
|
||||
/**
|
||||
* Sets a custom cache path for the {@link useCache} option.
|
||||
* @experimental
|
||||
* @defaultValue a `.electron-rebuild-cache` folder in the `os.homedir()` directory
|
||||
*/
|
||||
cachePath?: string;
|
||||
/**
|
||||
* GitHub tag prefix passed to {@link https://www.npmjs.com/package/prebuild-install | `prebuild-install`}.
|
||||
* @defaultValue `v`
|
||||
*/
|
||||
prebuildTagPrefix?: string;
|
||||
/**
|
||||
* Path to the root of the project if using npm or yarn workspaces.
|
||||
*/
|
||||
projectRootPath?: string;
|
||||
/**
|
||||
* Override the Application Binary Interface (ABI) version for the version of Electron you are targeting.
|
||||
* Only use when targeting nightly releases.
|
||||
*
|
||||
* @see the {@link https://github.com/electron/node-abi | electron/node-abi} repository for a list of Electron and Node.js ABIs
|
||||
*/
|
||||
forceABI?: number;
|
||||
/**
|
||||
* Disables the copying of `.node` files if not needed.
|
||||
* @defaultValue false
|
||||
*/
|
||||
disablePreGypCopy?: boolean;
|
||||
/**
|
||||
* Skip prebuild download and rebuild module from source.
|
||||
*
|
||||
* @defaultValue false
|
||||
*/
|
||||
buildFromSource?: boolean;
|
||||
/**
|
||||
* Array of module names to ignore during the rebuild process.
|
||||
*/
|
||||
ignoreModules?: string[];
|
||||
/**
|
||||
* Number of parallel compile jobs `node-gyp` should run, passed through as node-gyp's `--jobs` flag.
|
||||
*
|
||||
* @defaultValue node-gyp's own default when unset
|
||||
*/
|
||||
jobs?: number;
|
||||
}
|
||||
export interface RebuilderOptions extends RebuildOptions {
|
||||
lifecycle: EventEmitter;
|
||||
}
|
||||
export declare class Rebuilder implements IRebuilder {
|
||||
private ABIVersion;
|
||||
private moduleWalker;
|
||||
rebuilds: (() => Promise<void>)[];
|
||||
lifecycle: EventEmitter;
|
||||
buildPath: string;
|
||||
electronVersion: string;
|
||||
platform: NodeJS.Platform;
|
||||
arch: string;
|
||||
force: boolean;
|
||||
headerURL: string;
|
||||
mode: RebuildMode;
|
||||
debug: boolean;
|
||||
useCache: boolean;
|
||||
cachePath: string;
|
||||
prebuildTagPrefix: string;
|
||||
msvsVersion?: string;
|
||||
useElectronClang: boolean;
|
||||
disablePreGypCopy: boolean;
|
||||
buildFromSource: boolean;
|
||||
ignoreModules: string[];
|
||||
jobs?: number;
|
||||
constructor(options: RebuilderOptions);
|
||||
get ABI(): string;
|
||||
get buildType(): BuildType;
|
||||
rebuild(): Promise<void>;
|
||||
modulesToRebuild(): Promise<string[]>;
|
||||
rebuildModuleAt(modulePath: string): Promise<void>;
|
||||
}
|
||||
export type RebuildResult = Promise<void> & {
|
||||
lifecycle: EventEmitter;
|
||||
};
|
||||
export declare function rebuild(options: RebuildOptions): RebuildResult;
|
||||
181
electron/node_modules/@electron/rebuild/lib/rebuild.js
generated
vendored
Normal file
181
electron/node_modules/@electron/rebuild/lib/rebuild.js
generated
vendored
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
import debug from 'debug';
|
||||
import { EventEmitter } from 'node:events';
|
||||
import fs from 'node:fs';
|
||||
import { getAbi } from 'node-abi';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import { generateCacheKey, lookupModuleState } from './cache.js';
|
||||
import { BuildType } from './types.js';
|
||||
import { ModuleRebuilder } from './module-rebuilder.js';
|
||||
import { ModuleWalker } from './module-walker.js';
|
||||
const d = debug('electron-rebuild');
|
||||
const defaultMode = 'sequential';
|
||||
const defaultTypes = ['prod', 'optional'];
|
||||
export class Rebuilder {
|
||||
ABIVersion;
|
||||
moduleWalker;
|
||||
rebuilds;
|
||||
lifecycle;
|
||||
buildPath;
|
||||
electronVersion;
|
||||
platform;
|
||||
arch;
|
||||
force;
|
||||
headerURL;
|
||||
mode;
|
||||
debug;
|
||||
useCache;
|
||||
cachePath;
|
||||
prebuildTagPrefix;
|
||||
msvsVersion;
|
||||
useElectronClang;
|
||||
disablePreGypCopy;
|
||||
buildFromSource;
|
||||
ignoreModules;
|
||||
jobs;
|
||||
constructor(options) {
|
||||
this.lifecycle = options.lifecycle;
|
||||
this.buildPath = options.buildPath;
|
||||
this.electronVersion = options.electronVersion;
|
||||
this.platform = options.platform || process.platform;
|
||||
this.arch = options.arch || process.arch;
|
||||
this.force = options.force || false;
|
||||
this.headerURL = options.headerURL || 'https://www.electronjs.org/headers';
|
||||
this.mode = options.mode || defaultMode;
|
||||
this.debug = options.debug || false;
|
||||
this.useCache = options.useCache || false;
|
||||
this.useElectronClang = options.useElectronClang || false;
|
||||
this.cachePath = options.cachePath || path.resolve(os.homedir(), '.electron-rebuild-cache');
|
||||
this.prebuildTagPrefix = options.prebuildTagPrefix ?? 'v';
|
||||
this.msvsVersion = process.env.GYP_MSVS_VERSION;
|
||||
this.disablePreGypCopy = options.disablePreGypCopy || false;
|
||||
this.buildFromSource = options.buildFromSource || false;
|
||||
this.ignoreModules = options.ignoreModules || [];
|
||||
this.jobs = options.jobs;
|
||||
d('ignoreModules', this.ignoreModules);
|
||||
if (this.useCache && this.force) {
|
||||
console.warn('[WARNING]: Electron Rebuild has force enabled and cache enabled, force take precedence and the cache will not be used.');
|
||||
this.useCache = false;
|
||||
}
|
||||
// FIXME: this entire guard is unreachable according to the types
|
||||
/* oxlint-disable typescript-eslint(restrict-template-expressions) */
|
||||
if (typeof this.electronVersion === 'number') {
|
||||
if (`${this.electronVersion}`.split('.').length === 1) {
|
||||
this.electronVersion = `${this.electronVersion}.0.0`;
|
||||
}
|
||||
else {
|
||||
this.electronVersion = `${this.electronVersion}.0`;
|
||||
}
|
||||
}
|
||||
/* oxlint-enable typescript-eslint(restrict-template-expressions) */
|
||||
if (typeof this.electronVersion !== 'string') {
|
||||
throw new Error(`Expected a string version for electron version, got a "${typeof this.electronVersion}"`);
|
||||
}
|
||||
this.ABIVersion = options.forceABI?.toString();
|
||||
const onlyModules = options.onlyModules || null;
|
||||
const extraModules = new Set(options.extraModules);
|
||||
const types = options.types || defaultTypes;
|
||||
this.moduleWalker = new ModuleWalker(this.buildPath, options.projectRootPath, types, extraModules, onlyModules);
|
||||
this.rebuilds = [];
|
||||
d('rebuilding with args:', this.buildPath, this.electronVersion, this.platform, this.arch, extraModules, this.force, this.headerURL, types, this.debug);
|
||||
}
|
||||
get ABI() {
|
||||
if (this.ABIVersion === undefined) {
|
||||
this.ABIVersion = getAbi(this.electronVersion, 'electron');
|
||||
}
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
return this.ABIVersion;
|
||||
}
|
||||
get buildType() {
|
||||
return this.debug ? BuildType.Debug : BuildType.Release;
|
||||
}
|
||||
async rebuild() {
|
||||
if (!path.isAbsolute(this.buildPath)) {
|
||||
throw new Error('Expected buildPath to be an absolute path');
|
||||
}
|
||||
this.lifecycle.emit('start');
|
||||
const candidatePaths = [...(await this.modulesToRebuild()), this.buildPath];
|
||||
const nativeModulePaths = candidatePaths.filter((p) => fs.existsSync(path.resolve(p, 'binding.gyp')));
|
||||
this.lifecycle.emit('modules-found', nativeModulePaths.map((p) => {
|
||||
const name = path.basename(p);
|
||||
const parent = path.basename(path.dirname(p));
|
||||
return parent !== 'node_modules' ? `${parent}/${name}` : name;
|
||||
}));
|
||||
for (const modulePath of nativeModulePaths) {
|
||||
this.rebuilds.push(() => this.rebuildModuleAt(modulePath));
|
||||
}
|
||||
if (this.mode !== 'sequential') {
|
||||
await Promise.all(this.rebuilds.map((fn) => fn()));
|
||||
}
|
||||
else {
|
||||
for (const rebuildFn of this.rebuilds) {
|
||||
await rebuildFn();
|
||||
}
|
||||
}
|
||||
}
|
||||
async modulesToRebuild() {
|
||||
await this.moduleWalker.walkModules();
|
||||
for (const nodeModulesPath of await this.moduleWalker.nodeModulesPaths) {
|
||||
await this.moduleWalker.findAllModulesIn(nodeModulesPath);
|
||||
}
|
||||
return this.moduleWalker.modulesToRebuild;
|
||||
}
|
||||
async rebuildModuleAt(modulePath) {
|
||||
const moduleRebuilder = new ModuleRebuilder(this, modulePath);
|
||||
let moduleName = path.basename(modulePath);
|
||||
const parentName = path.basename(path.dirname(modulePath));
|
||||
if (parentName !== 'node_modules') {
|
||||
moduleName = `${parentName}/${moduleName}`;
|
||||
}
|
||||
this.lifecycle.emit('module-found', moduleName);
|
||||
if (!this.force && (await moduleRebuilder.alreadyBuiltByRebuild())) {
|
||||
d(`skipping: ${moduleName} as it is already built`);
|
||||
this.lifecycle.emit('module-done', moduleName);
|
||||
this.lifecycle.emit('module-skip', moduleName);
|
||||
return;
|
||||
}
|
||||
d('checking', moduleName, 'against', this.ignoreModules);
|
||||
if (this.ignoreModules.includes(moduleName)) {
|
||||
d(`skipping: ${moduleName} as it is in the ignoreModules array`);
|
||||
this.lifecycle.emit('module-done', moduleName);
|
||||
this.lifecycle.emit('module-skip', moduleName);
|
||||
return;
|
||||
}
|
||||
if (await moduleRebuilder.prebuildInstallNativeModuleExists()) {
|
||||
d(`skipping: ${moduleName} as it was prebuilt`);
|
||||
return;
|
||||
}
|
||||
let cacheKey;
|
||||
if (this.useCache) {
|
||||
cacheKey = await generateCacheKey({
|
||||
ABI: this.ABI,
|
||||
arch: this.arch,
|
||||
platform: this.platform,
|
||||
debug: this.debug,
|
||||
electronVersion: this.electronVersion,
|
||||
headerURL: this.headerURL,
|
||||
modulePath,
|
||||
});
|
||||
const applyDiffFn = await lookupModuleState(this.cachePath, cacheKey);
|
||||
if (typeof applyDiffFn === 'function') {
|
||||
await applyDiffFn(modulePath);
|
||||
this.lifecycle.emit('module-done', moduleName);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (await moduleRebuilder.rebuild(cacheKey)) {
|
||||
this.lifecycle.emit('module-done', moduleName);
|
||||
}
|
||||
}
|
||||
}
|
||||
export function rebuild(options) {
|
||||
// eslint-disable-next-line prefer-rest-params
|
||||
d('rebuilding with args:', arguments);
|
||||
const lifecycle = new EventEmitter();
|
||||
const rebuilderOptions = { ...options, lifecycle };
|
||||
const rebuilder = new Rebuilder(rebuilderOptions);
|
||||
const ret = rebuilder.rebuild();
|
||||
ret.lifecycle = lifecycle;
|
||||
return ret;
|
||||
}
|
||||
//# sourceMappingURL=rebuild.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/rebuild.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/rebuild.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
23
electron/node_modules/@electron/rebuild/lib/search-module.d.ts
generated
vendored
Normal file
23
electron/node_modules/@electron/rebuild/lib/search-module.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* Find all instances of a given module in node_modules subdirectories while traversing up
|
||||
* ancestor directories.
|
||||
*
|
||||
* @param cwd the initial directory to traverse
|
||||
* @param moduleName the Node module name (should work for scoped modules as well)
|
||||
* @param rootPath the project's root path. If provided, the traversal will stop at this path.
|
||||
*/
|
||||
export declare function searchForModule(cwd: string, moduleName: string, rootPath?: string): Promise<string[]>;
|
||||
/**
|
||||
* Find all instances of node_modules subdirectories while traversing up ancestor directories.
|
||||
*
|
||||
* @param cwd the initial directory to traverse
|
||||
* @param rootPath the project's root path. If provided, the traversal will stop at this path.
|
||||
*/
|
||||
export declare function searchForNodeModules(cwd: string, rootPath?: string): Promise<string[]>;
|
||||
/**
|
||||
* Determine the root directory of a given project, by looking for a directory with an
|
||||
* NPM or yarn lockfile or pnpm lockfile.
|
||||
*
|
||||
* @param cwd the initial directory to traverse
|
||||
*/
|
||||
export declare function getProjectRootPath(cwd: string): Promise<string>;
|
||||
68
electron/node_modules/@electron/rebuild/lib/search-module.js
generated
vendored
Normal file
68
electron/node_modules/@electron/rebuild/lib/search-module.js
generated
vendored
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
async function shouldContinueSearch(traversedPath, rootPath, stopAtPackageJSON) {
|
||||
if (rootPath) {
|
||||
return Promise.resolve(traversedPath !== path.dirname(rootPath));
|
||||
}
|
||||
else if (stopAtPackageJSON) {
|
||||
return fs.existsSync(path.join(traversedPath, 'package.json'));
|
||||
}
|
||||
else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
async function traverseAncestorDirectories(cwd, pathGenerator, rootPath, maxItems, stopAtPackageJSON) {
|
||||
const paths = [];
|
||||
let traversedPath = path.resolve(cwd);
|
||||
while (await shouldContinueSearch(traversedPath, rootPath, stopAtPackageJSON)) {
|
||||
const generatedPath = pathGenerator(traversedPath);
|
||||
if (fs.existsSync(generatedPath)) {
|
||||
paths.push(generatedPath);
|
||||
}
|
||||
const parentPath = path.dirname(traversedPath);
|
||||
if (parentPath === traversedPath || (maxItems && paths.length >= maxItems)) {
|
||||
break;
|
||||
}
|
||||
traversedPath = parentPath;
|
||||
}
|
||||
return paths;
|
||||
}
|
||||
/**
|
||||
* Find all instances of a given module in node_modules subdirectories while traversing up
|
||||
* ancestor directories.
|
||||
*
|
||||
* @param cwd the initial directory to traverse
|
||||
* @param moduleName the Node module name (should work for scoped modules as well)
|
||||
* @param rootPath the project's root path. If provided, the traversal will stop at this path.
|
||||
*/
|
||||
export async function searchForModule(cwd, moduleName, rootPath) {
|
||||
const pathGenerator = (traversedPath) => path.join(traversedPath, 'node_modules', moduleName);
|
||||
return traverseAncestorDirectories(cwd, pathGenerator, rootPath, undefined, true);
|
||||
}
|
||||
/**
|
||||
* Find all instances of node_modules subdirectories while traversing up ancestor directories.
|
||||
*
|
||||
* @param cwd the initial directory to traverse
|
||||
* @param rootPath the project's root path. If provided, the traversal will stop at this path.
|
||||
*/
|
||||
export async function searchForNodeModules(cwd, rootPath) {
|
||||
const pathGenerator = (traversedPath) => path.join(traversedPath, 'node_modules');
|
||||
return traverseAncestorDirectories(cwd, pathGenerator, rootPath, undefined, true);
|
||||
}
|
||||
/**
|
||||
* Determine the root directory of a given project, by looking for a directory with an
|
||||
* NPM or yarn lockfile or pnpm lockfile.
|
||||
*
|
||||
* @param cwd the initial directory to traverse
|
||||
*/
|
||||
export async function getProjectRootPath(cwd) {
|
||||
for (const lockFilename of ['yarn.lock', 'package-lock.json', 'pnpm-lock.yaml']) {
|
||||
const pathGenerator = (traversedPath) => path.join(traversedPath, lockFilename);
|
||||
const lockPaths = await traverseAncestorDirectories(cwd, pathGenerator, undefined, 1);
|
||||
if (lockPaths.length > 0) {
|
||||
return path.dirname(lockPaths[0]);
|
||||
}
|
||||
}
|
||||
return cwd;
|
||||
}
|
||||
//# sourceMappingURL=search-module.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/search-module.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/search-module.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"search-module.js","sourceRoot":"","sources":["../src/search-module.ts"],"names":[],"mappings":"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"}
|
||||
1
electron/node_modules/@electron/rebuild/lib/sysroot-fetcher.d.ts
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/sysroot-fetcher.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
export declare function downloadLinuxSysroot(electronVersion: string, targetArch: string): Promise<string>;
|
||||
39
electron/node_modules/@electron/rebuild/lib/sysroot-fetcher.js
generated
vendored
Normal file
39
electron/node_modules/@electron/rebuild/lib/sysroot-fetcher.js
generated
vendored
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
import crypto from 'node:crypto';
|
||||
import debug from 'debug';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { ELECTRON_GYP_DIR } from './constants.js';
|
||||
import { fetchUrl } from './fetcher.js';
|
||||
import { spawn } from '@malept/cross-spawn-promise';
|
||||
const d = debug('electron-rebuild');
|
||||
const sysrootArchAliases = {
|
||||
x64: 'amd64',
|
||||
ia32: 'i386',
|
||||
};
|
||||
const SYSROOT_BASE_URL = 'https://dev-cdn.electronjs.org/linux-sysroots';
|
||||
export async function downloadLinuxSysroot(electronVersion, targetArch) {
|
||||
d('fetching sysroot for Electron:', electronVersion);
|
||||
const sysrootDir = path.resolve(ELECTRON_GYP_DIR, `${electronVersion}-sysroot`);
|
||||
if (fs.existsSync(path.resolve(sysrootDir, 'lib')))
|
||||
return sysrootDir;
|
||||
await fs.promises.mkdir(sysrootDir, { recursive: true });
|
||||
const linuxArch = sysrootArchAliases[targetArch] || targetArch;
|
||||
const electronSysroots = JSON.parse(await fetchUrl(`https://raw.githubusercontent.com/electron/electron/v${electronVersion}/script/sysroots.json`, 'text'));
|
||||
const { Sha1Sum: sha, Tarball: fileName } = electronSysroots[`sid_${linuxArch}`] || electronSysroots[`bullseye_${linuxArch}`];
|
||||
const sysrootURL = `${SYSROOT_BASE_URL}/${sha}/${fileName}`;
|
||||
const sysrootBuffer = await fetchUrl(sysrootURL, 'buffer');
|
||||
const actualSha = crypto.createHash('SHA1').update(sysrootBuffer).digest('hex');
|
||||
d('expected sha:', sha);
|
||||
d('actual sha:', actualSha);
|
||||
if (sha !== actualSha)
|
||||
throw new Error(`Attempted to download the linux sysroot for ${electronVersion} but the SHA checksum did not match`);
|
||||
d('writing sysroot to disk');
|
||||
const tmpTarFile = path.resolve(ELECTRON_GYP_DIR, `${electronVersion}-${fileName}`);
|
||||
if (fs.existsSync(tmpTarFile))
|
||||
await fs.promises.rm(tmpTarFile, { recursive: true, force: true });
|
||||
await fs.promises.writeFile(tmpTarFile, sysrootBuffer);
|
||||
d('decompressing sysroot');
|
||||
await spawn('tar', ['-xf', tmpTarFile, '-C', sysrootDir], { stdio: 'ignore' });
|
||||
return sysrootDir;
|
||||
}
|
||||
//# sourceMappingURL=sysroot-fetcher.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/sysroot-fetcher.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/sysroot-fetcher.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"sysroot-fetcher.js","sourceRoot":"","sources":["../src/sysroot-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,MAAM,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAEpC,MAAM,kBAAkB,GAA2B;IACjD,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,gBAAgB,GAAG,+CAA+C,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,eAAuB,EACvB,UAAkB;IAElB,CAAC,CAAC,gCAAgC,EAAE,eAAe,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,eAAe,UAAU,CAAC,CAAC;IAChF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACtE,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzD,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,MAAM,QAAQ,CACZ,wDAAwD,eAAe,uBAAuB,EAC9F,MAAM,CACP,CACF,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GACvC,gBAAgB,CAAC,OAAO,SAAS,EAAE,CAAC,IAAI,gBAAgB,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,GAAG,gBAAgB,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5D,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE3D,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QACnB,MAAM,IAAI,KAAK,CACb,+CAA+C,eAAe,qCAAqC,CACpG,CAAC;IAEJ,CAAC,CAAC,yBAAyB,CAAC,CAAC;IAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,eAAe,IAAI,QAAQ,EAAE,CAAC,CAAC;IACpF,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAEvD,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC3B,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE/E,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
||||
27
electron/node_modules/@electron/rebuild/lib/types.d.ts
generated
vendored
Normal file
27
electron/node_modules/@electron/rebuild/lib/types.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
import { EventEmitter } from 'node:events';
|
||||
export declare enum BuildType {
|
||||
Debug = "Debug",
|
||||
Release = "Release"
|
||||
}
|
||||
export type RebuildMode = 'sequential' | 'parallel';
|
||||
export interface IRebuilder {
|
||||
ABI: string;
|
||||
arch: string;
|
||||
buildPath: string;
|
||||
buildType: BuildType;
|
||||
cachePath: string;
|
||||
debug: boolean;
|
||||
disablePreGypCopy: boolean;
|
||||
electronVersion: string;
|
||||
force: boolean;
|
||||
headerURL: string;
|
||||
jobs?: number;
|
||||
lifecycle: EventEmitter;
|
||||
mode: RebuildMode;
|
||||
msvsVersion?: string;
|
||||
platform: NodeJS.Platform;
|
||||
prebuildTagPrefix: string;
|
||||
buildFromSource: boolean;
|
||||
useCache: boolean;
|
||||
useElectronClang: boolean;
|
||||
}
|
||||
6
electron/node_modules/@electron/rebuild/lib/types.js
generated
vendored
Normal file
6
electron/node_modules/@electron/rebuild/lib/types.js
generated
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
export var BuildType;
|
||||
(function (BuildType) {
|
||||
BuildType["Debug"] = "Debug";
|
||||
BuildType["Release"] = "Release";
|
||||
})(BuildType || (BuildType = {}));
|
||||
//# sourceMappingURL=types.js.map
|
||||
1
electron/node_modules/@electron/rebuild/lib/types.js.map
generated
vendored
Normal file
1
electron/node_modules/@electron/rebuild/lib/types.js.map
generated
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB"}
|
||||
86
electron/node_modules/@electron/rebuild/package.json
generated
vendored
Normal file
86
electron/node_modules/@electron/rebuild/package.json
generated
vendored
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
{
|
||||
"name": "@electron/rebuild",
|
||||
"version": "4.2.0",
|
||||
"description": "Electron supporting package to rebuild native node modules against the currently installed electron",
|
||||
"type": "module",
|
||||
"exports": "./lib/main.js",
|
||||
"typings": "lib/main.d.ts",
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"build:docs": "typedoc src/main.ts",
|
||||
"coverage": "yarn prewarm-headers && yarn spec --coverage",
|
||||
"watch": "tsc -w",
|
||||
"prepare": "husky && yarn build",
|
||||
"lint": "oxlint && oxfmt --check",
|
||||
"spec": "tsc && vitest run",
|
||||
"test": "yarn prewarm-headers && yarn lint && yarn spec",
|
||||
"prewarm-headers": "node-gyp install --ensure"
|
||||
},
|
||||
"bin": {
|
||||
"electron-rebuild": "lib/cli.js"
|
||||
},
|
||||
"files": [
|
||||
"lib"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/electron/rebuild.git"
|
||||
},
|
||||
"keywords": [
|
||||
"electron"
|
||||
],
|
||||
"authors": [
|
||||
"Ani Betts <anais@anaisbetts.org>",
|
||||
"Electron Community"
|
||||
],
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/electron/rebuild/issues"
|
||||
},
|
||||
"homepage": "https://github.com/electron/rebuild",
|
||||
"engines": {
|
||||
"node": ">=22.12.0"
|
||||
},
|
||||
"publishConfig": {
|
||||
"provenance": true
|
||||
},
|
||||
"dependencies": {
|
||||
"@malept/cross-spawn-promise": "^2.0.0",
|
||||
"debug": "^4.1.1",
|
||||
"node-abi": "^4.2.0",
|
||||
"node-api-version": "^0.2.1",
|
||||
"node-gyp": "^12.2.0",
|
||||
"read-binary-file-arch": "^1.0.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tsconfig/node22": "^22.0.0",
|
||||
"@types/debug": "^4.1.5",
|
||||
"@types/node": "~22.10.7",
|
||||
"@types/node-abi": "^3.0.0",
|
||||
"@vitest/coverage-v8": "^4.1.2",
|
||||
"electron": "^39.8.5",
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^16.4.0",
|
||||
"oxfmt": "^0.42.0",
|
||||
"oxlint": "^1.57.0",
|
||||
"oxlint-tsgolint": "^0.18.1",
|
||||
"typedoc": "~0.28.0",
|
||||
"typescript": "^6.0.2",
|
||||
"vitest": "^4.1.2"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.ts": [
|
||||
"oxlint --fix",
|
||||
"oxfmt --write"
|
||||
]
|
||||
},
|
||||
"resolutions": {
|
||||
"@typescript-eslint/typescript-estree/minimatch": "^9.0.7"
|
||||
},
|
||||
"packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f",
|
||||
"dependenciesMeta": {
|
||||
"electron": {
|
||||
"built": true
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue