Production-ready Next.js boilerplate with: - Runtime env validation (fail-fast on missing vars) - Feature-gated config (S3, Stripe, email, OAuth) - Docker + Coolify deployment pipeline - PostgreSQL + pgvector, MinIO S3, Better Auth - TypeScript strict mode (no ignoreBuildErrors) - i18n (en/es), AI modules, billing, monitoring Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
/**
|
|
* Since the ecosystem hasn't fully migrated to ESLint's new FlatConfig system yet,
|
|
* we "need" to type some of the plugins manually :(
|
|
*/
|
|
|
|
declare module "@eslint/js" {
|
|
// Why the hell doesn't eslint themselves export their types?
|
|
import type { Linter } from "eslint";
|
|
|
|
export const configs: {
|
|
readonly recommended: { readonly rules: Readonly<Linter.RulesRecord> };
|
|
readonly all: { readonly rules: Readonly<Linter.RulesRecord> };
|
|
};
|
|
}
|
|
|
|
declare module "eslint-plugin-import" {
|
|
import type { Linter, Rule } from "eslint";
|
|
|
|
export const configs: {
|
|
recommended: { rules: Linter.RulesRecord };
|
|
};
|
|
export const rules: Record<string, Rule.RuleModule>;
|
|
}
|
|
|
|
declare module "eslint-plugin-react" {
|
|
import type { Linter, Rule } from "eslint";
|
|
|
|
export const configs: {
|
|
recommended: { rules: Linter.RulesRecord };
|
|
all: { rules: Linter.RulesRecord };
|
|
"jsx-runtime": { rules: Linter.RulesRecord };
|
|
};
|
|
export const rules: Record<string, Rule.RuleModule>;
|
|
}
|
|
|
|
declare module "eslint-plugin-react-hooks" {
|
|
import type { Linter, Rule } from "eslint";
|
|
|
|
export const configs: {
|
|
recommended: {
|
|
rules: {
|
|
"rules-of-hooks": Linter.RuleEntry;
|
|
"exhaustive-deps": Linter.RuleEntry;
|
|
};
|
|
};
|
|
};
|
|
export const rules: Record<string, Rule.RuleModule>;
|
|
}
|
|
|
|
declare module "@next/eslint-plugin-next" {
|
|
import type { Linter, Rule } from "eslint";
|
|
|
|
export const configs: {
|
|
recommended: { rules: Linter.RulesRecord };
|
|
"core-web-vitals": { rules: Linter.RulesRecord };
|
|
};
|
|
export const rules: Record<string, Rule.RuleModule>;
|
|
}
|
|
|
|
declare module "eslint-plugin-turbo" {
|
|
import type { Linter, Rule } from "eslint";
|
|
|
|
export const configs: {
|
|
recommended: { rules: Linter.RulesRecord };
|
|
};
|
|
export const rules: Record<string, Rule.RuleModule>;
|
|
}
|
|
|
|
declare module "eslint-plugin-i18next" {
|
|
import type { Linter, Rule } from "eslint";
|
|
|
|
export const configs: {
|
|
"flat/recommended": { rules: Linter.RulesRecord };
|
|
};
|
|
export const rules: Record<string, Rule.RuleModule>;
|
|
}
|