Files
electron/spec/fixtures/module/preload-sandbox.js
Samuel Attard 2c94aac330 build: add oxfmt for JS/TS formatting and import sorting (#50692)
* 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.
2026-04-12 02:03:04 -07:00

71 lines
2.6 KiB
JavaScript

(function () {
const { setImmediate } = require('node:timers');
const { ipcRenderer } = require('electron');
window.ipcRenderer = ipcRenderer;
window.setImmediate = setImmediate;
window.require = require;
function invoke(code) {
try {
return code();
} catch {
return null;
}
}
process.once('loaded', () => {
ipcRenderer.send('process-loaded');
});
if (location.protocol === 'file:') {
window.test = 'preload';
window.process = process;
if (process.env.sandboxmain) {
window.test = {
osSandbox: !process.argv.includes('--no-sandbox'),
hasCrash: typeof process.crash === 'function',
hasHang: typeof process.hang === 'function',
creationTime: invoke(() => process.getCreationTime()),
heapStatistics: invoke(() => process.getHeapStatistics()),
blinkMemoryInfo: invoke(() => process.getBlinkMemoryInfo()),
processMemoryInfo: invoke(() => (process.getProcessMemoryInfo() ? {} : null)),
systemMemoryInfo: invoke(() => process.getSystemMemoryInfo()),
systemVersion: invoke(() => process.getSystemVersion()),
cpuUsage: invoke(() => process.getCPUUsage()),
uptime: invoke(() => process.uptime()),
// eslint-disable-next-line unicorn/prefer-node-protocol
nodeEvents: invoke(() => require('events') === require('node:events')),
// eslint-disable-next-line unicorn/prefer-node-protocol
nodeTimers: invoke(() => require('timers') === require('node:timers')),
// eslint-disable-next-line unicorn/prefer-node-protocol
nodeUrl: invoke(() => require('url') === require('node:url')),
env: process.env,
execPath: process.execPath,
pid: process.pid,
arch: process.arch,
platform: process.platform,
sandboxed: process.sandboxed,
contextIsolated: process.contextIsolated,
type: process.type,
version: process.version,
versions: process.versions,
contextId: process.contextId
};
}
} else if (location.href !== 'about:blank') {
addEventListener('DOMContentLoaded', () => {
ipcRenderer.on('touch-the-opener', () => {
let errorMessage = null;
try {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const openerDoc = opener.document;
} catch (error) {
errorMessage = error.message;
}
ipcRenderer.send('answer', errorMessage);
});
ipcRenderer.send('child-loaded', window.opener == null, document.body.innerHTML, location.href);
});
}
})();