deadhead-space-freight-tycoon/eslint.config.js

59 lines
1.5 KiB
JavaScript

import js from "@eslint/js";
import prettier from "eslint-config-prettier";
import globals from "globals";
import tseslint from "typescript-eslint";
// packages/sim and packages/content must stay pure: time and randomness are
// always passed in as arguments (implementation plan rule 0.1.4).
const impureMessage = "Not allowed in pure packages; pass time and seeds in as arguments.";
export default tseslint.config(
{
ignores: [
"**/node_modules/**",
"**/dist/**",
"**/dist-*/**",
"**/coverage/**",
".pnpm-store/**",
],
},
js.configs.recommended,
...tseslint.configs.recommended,
{
languageOptions: {
globals: { ...globals.node },
},
rules: {
// Allow deliberately unused names such as placeholder parameters (_url).
"@typescript-eslint/no-unused-vars": [
"error",
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
],
},
},
{
files: ["apps/web/**/*.{ts,tsx}"],
languageOptions: {
globals: { ...globals.browser },
},
},
{
files: ["packages/sim/**/*.ts", "packages/content/**/*.ts"],
rules: {
"no-restricted-properties": [
"error",
{ object: "Math", property: "random", message: impureMessage },
{ object: "Date", property: "now", message: impureMessage },
],
"no-restricted-syntax": [
"error",
{
selector: "NewExpression[callee.name='Date'][arguments.length=0]",
message: impureMessage,
},
],
},
},
prettier,
);