Replaces the four nested package.json scopes with "type": "module" at
the root. The three CommonJS config files become .cjs. Webpack would
otherwise treat src/web as strict ESM, which forbids the require() calls
used for locale files and image assets and demands extensions on every
import, so the Vue config keeps the js rule in webpack's mixed mode.
Build, tests, lint, and the built site were verified, including the
dialogs, a language switch, and the screenshots page.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
ESLint moves to a flat config (eslint.config.mjs) with the same rules,
run directly by npm run lint; @vue/cli-plugin-eslint is dropped since the
Vue build does not need it. With a parser that understands import
attributes, the bundled data files (brands, skills, gear, finalFest,
shiftyStations) are imported with `with { type: 'json' }`, which Node and
the Workers bundler both support, instead of being read through node:fs.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>