mirror of
https://github.com/electron/electron.git
synced 2026-05-02 03:00:22 -04:00
* build: add oxfmt for code formatting and import sorting
Adds oxfmt as a devDependency alongside oxlint and wires it into the
lint pipeline. The .oxfmtrc.json config matches Electron's current JS
style (single quotes, semicolons, 2-space indent, trailing commas off,
printWidth 100) and configures sortImports with custom groups that
mirror the import/order pathGroups previously enforced by ESLint:
@electron/internal, @electron/*, and {electron,electron/**} each get
their own ordered group ahead of external modules.
- `yarn lint:fmt` runs `oxfmt --check` over JS/TS sources and is
chained into `yarn lint` so CI enforces it automatically.
- `yarn format` runs `oxfmt --write` for local fix-up.
- lint-staged invokes `oxfmt --write` on staged .js/.ts/.mjs/.cjs
files before oxlint, so formatting is applied at commit time.
The next commit applies the formatter to the existing codebase so the
check actually passes.
* chore: apply oxfmt formatting to JS and TS sources
Runs `yarn format` across lib/, spec/, script/, build/, default_app/,
and npm/ to bring the codebase in line with the .oxfmtrc.json settings
added in the previous commit. This is a pure formatting pass: import
statements are sorted into the groups defined by the config, method
chains longer than printWidth are broken, single-quoted strings
containing apostrophes are switched to double quotes, and a handful of
single-statement `if` bodies are re-wrapped and get braces added by
`oxlint --fix` to satisfy the `curly: multi-line` rule.
No behavior changes.
64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
/* eslint-disable import/newline-after-import */
|
|
/* eslint-disable import/order */
|
|
// Initialize ASAR support in fs module.
|
|
import { wrapFsWithAsar } from './asar-fs-wrapper';
|
|
wrapFsWithAsar(require('fs'));
|
|
|
|
// See ElectronRendererClient::DidCreateScriptContext.
|
|
if ((globalThis as any).blinkfetch) {
|
|
const keys = ['fetch', 'Response', 'FormData', 'Request', 'Headers', 'EventSource'];
|
|
for (const key of keys) {
|
|
(globalThis as any)[key] = (globalThis as any)[`blink${key}`];
|
|
delete (globalThis as any)[`blink${key}`];
|
|
}
|
|
}
|
|
|
|
// Hook child_process.fork.
|
|
import cp = require('child_process'); // eslint-disable-line import/first
|
|
const originalFork = cp.fork;
|
|
cp.fork = (modulePath, args?, options?: cp.ForkOptions) => {
|
|
// Parse optional args.
|
|
if (args == null) {
|
|
args = [];
|
|
} else if (typeof args === 'object' && !Array.isArray(args)) {
|
|
options = args as cp.ForkOptions;
|
|
args = [];
|
|
}
|
|
// Fallback to original fork to report arg type errors.
|
|
if (
|
|
typeof modulePath !== 'string' ||
|
|
!Array.isArray(args) ||
|
|
(typeof options !== 'object' && typeof options !== 'undefined')
|
|
) {
|
|
return originalFork(modulePath, args, options);
|
|
}
|
|
// When forking a child script, we setup a special environment to make
|
|
// the electron binary run like upstream Node.js.
|
|
options = options ?? {};
|
|
options.env = Object.create(options.env || process.env);
|
|
options.env!.ELECTRON_RUN_AS_NODE = '1';
|
|
// On mac the child script runs in helper executable.
|
|
if (!options.execPath && process.platform === 'darwin') {
|
|
options.execPath = process.helperExecPath;
|
|
}
|
|
return originalFork(modulePath, args, options);
|
|
};
|
|
|
|
// Prevent Node from adding paths outside this app to search paths.
|
|
import path = require('path'); // eslint-disable-line import/first
|
|
const Module = require('module') as NodeJS.ModuleInternal;
|
|
const resourcesPathWithTrailingSlash = process.resourcesPath + path.sep;
|
|
const originalNodeModulePaths = Module._nodeModulePaths;
|
|
Module._nodeModulePaths = function (from) {
|
|
const paths: string[] = originalNodeModulePaths(from);
|
|
const fromPath = path.resolve(from) + path.sep;
|
|
// If "from" is outside the app then we do nothing.
|
|
if (fromPath.startsWith(resourcesPathWithTrailingSlash)) {
|
|
return paths.filter(function (candidate) {
|
|
return candidate.startsWith(resourcesPathWithTrailingSlash);
|
|
});
|
|
} else {
|
|
return paths;
|
|
}
|
|
};
|