Mobile-BillTracker/nodejs-assets/nodejs-project/prebuilds/x86_64
null 2c29ec45bd feat(mobile): run the TypeScript backend on Node 18 in local mode (batch 7-9)
The web app migrated its server to TypeScript (server.cts) on Express 5 /
openid-client 6 / kysely, none of which ran on the old embedded Node 12.19.
Rebuild the local-mode pipeline for Node 18:

- sync-nodejs-project.sh: sync server.cts + .cts/.mts + setup/ + seed data.
- transpile-node18.js (replaces transpile-node12.js): esbuild TS->CJS in place,
  keeping .cts/.mts filenames (Node 18's CJS loader loads unknown extensions via
  the .js handler, so the explicit-extension require() graph keeps resolving).
- prepare-local-mode-deps.js: bundle ESM-only kysely to CJS, stub openid-client
  (unused on-device), and rewrite path-to-regexp's \p{} regexes to ASCII (the
  no-ICU Node 18 build can't compile unicode-property escapes).
- build-better-sqlite3-node18.sh (replaces the Node-12 build/fix scripts):
  cross-compile for all three ABIs against the Node 18 ABI, injecting libnode.so
  as a NEEDED entry so V8 symbols resolve at dlopen.
- main.js: entry -> server.cts; drop the now-native randomUUID/hkdfSync polyfills
  (keep the Intl shim); add TMPDIR + a startup-error relay to the WebView.
- nodejs-project/package.json: server dep set matched to the web app.

Verified end-to-end on the x86_64 emulator: boot -> migrations -> seed -> login
-> create bill -> force-stop -> relaunch -> data persists. arm64/armv7 prebuilds
are built and link-verified; a physical-device run is still pending.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 09:42:53 -05:00
..
better_sqlite3.node feat(mobile): run the TypeScript backend on Node 18 in local mode (batch 7-9) 2026-07-11 09:42:53 -05:00