Files
orca/mobile/scripts/start-expo.mjs
T
Neil f9e18910ae chore(lint): adopt unicorn/prefer-import-meta-properties (error) (#6847)
Migrate fileURLToPath(import.meta.url) / dirname(...) boilerplate to the
native import.meta.dirname / import.meta.filename, then enable the rule
at error so new code stays on the native form.

The oxlint autofix rewrites the expression but leaves the now-unused
node:url / node:path imports behind (which the already-enabled
no-unused-vars=error would then flag), so this commit also removes those
34 orphaned imports — trimming the named import where other names are
still used, deleting the line where it was the sole import.

Scope is build scripts + Node-env tests only (config/scripts, tools/
benchmarks, *.test.{ts,mjs}, vitest configs); zero shipped runtime code.
The native properties are exact equivalents (Node >= 20.11; repo is on
24), so behavior is unchanged.

Verified: oxlint 0 errors tree-wide (root + mobile), oxfmt clean,
typecheck (node+cli+web) + mobile tsc pass, root vitest 22825 passed /
0 failed, mobile vitest 1018 passed. Exercised the rewritten scripts
directly: build:relay (6 targets), ensure-native-runtime,
verify-macos-entitlements all run correctly with import.meta.dirname.
2026-06-29 23:37:30 -07:00

50 lines
1.2 KiB
JavaScript

#!/usr/bin/env node
import { spawn } from 'node:child_process'
import path from 'node:path'
import process from 'node:process'
import { ensureMobileExpoCli } from './mobile-expo-cli.mjs'
const scriptDir = import.meta.dirname
const mobileDir = path.resolve(scriptDir, '..')
function pnpmCommand(args) {
return {
command: 'pnpm',
args,
shell: process.platform === 'win32'
}
}
function runPnpm(args) {
const pnpm = pnpmCommand(args)
return new Promise((resolve, reject) => {
const child = spawn(pnpm.command, pnpm.args, {
cwd: mobileDir,
env: process.env,
shell: pnpm.shell,
stdio: 'inherit'
})
child.on('error', reject)
child.on('exit', (code, signal) => {
if (signal) {
reject(new Error(`pnpm ${args.join(' ')} was terminated by ${signal}`))
} else if (code === 0) {
resolve()
} else {
reject(new Error(`pnpm ${args.join(' ')} exited with code ${code}`))
}
})
})
}
async function main() {
await ensureMobileExpoCli(mobileDir)
await runPnpm(['exec', 'expo', 'start', ...process.argv.slice(2)])
}
main().catch((error) => {
console.error(`[start] ${error.message}`)
process.exit(1)
})