ubiquitous-invention/apps/web/eslint.config.mjs

20 lines
474 B
JavaScript
Raw Normal View History

chore(lint+types): green pnpm lint && pnpm type-check from a clean clone Path-A first task: get the repo's two repo-wide quality gates passing. Both were failing from a clean clone in ways that were silently hiding each other. Headline fixes: * apps/web: add an eslint 9 flat config (eslint.config.mjs) using FlatCompat against next/core-web-vitals + next/typescript, and switch the `lint` script from `next lint` to `eslint .`. Previously `next lint` fell into its interactive setup prompt because there was no config at all in apps/web, which made `pnpm lint` permanently fail before any rule ever ran. * packages/shared/src/utils/id.ts: replace `randomUUID` from `node:crypto` with `globalThis.crypto.randomUUID`. `@tasks/shared` is forbidden from using Node-only APIs (per AGENTS.md / repo-overview.mdc) because it has to be importable from the browser bundle. Adjacent fixes pulled in to make the gates actually green: * apps/mcp-server/tsconfig.json: drop vestigial rootDir / declaration* / outDir / sourceMap (build is via tsup, not tsc emit) and add allowImportingTsExtensions. The MCP server uses `.ts`-extension re-export shims (db.ts / schema.ts / shared-types.ts) so tsup can inline workspace .ts sources into the bundle. * apps/collab-server/tsconfig.json: same simplification. * apps/mcp-server/package.json: add @types/node so `process.env` in packages/database/src/client.ts (transitively pulled into the MCP server's type-check) resolves. * apps/web/components/ui/input.tsx: empty `interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {}` -> `type` alias. * apps/web/server/lib/workspace-guard.ts: `from(args.table as any)` -> `as unknown as PgTable` with a comment. Standard drizzle escape hatch for structural generic tables. * apps/web/components/whiteboard/shapes/{document,project,task}-card.tsx: `BaseBoxShapeUtil<any>` -> `BaseBoxShapeUtil<{Shape}>` plus inline `declare module "@tldraw/tlschema"` augmentation of TLGlobalShapePropsMap. Required adding @tldraw/tlschema as a direct devDep of apps/web so the augmentation target resolves; previously it was only present transitively under tldraw's own deps. Result: `pnpm lint && pnpm type-check` exits 0 across all 6 packages. 16 unused-import / exhaustive-deps warnings remain; they're pre-existing housekeeping and out of scope for this task. Closes plans/Plan-daily-driver-finish/Epic-shipping-the-shell/ Task-fix-lint-and-shared-types.md (status: done). Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 01:11:52 -04:00
import { dirname } from "node:path";
import { fileURLToPath } from "node:url";
import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
});
const config = [
{
ignores: [".next/**", "node_modules/**", "dist/**", "next-env.d.ts"],
},
...compat.extends("next/core-web-vitals", "next/typescript"),
];
export default config;