mirror of
https://github.com/tiennm99/miti99bot.git
synced 2026-04-17 15:20:58 +00:00
- flat config, JSDoc-only rules (no stylistic — Biome owns those) - src/types.js defines Env, Module, Command, Cron, ModuleContext, Trade - lint script now runs biome check + eslint src
58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
import jsdoc from "eslint-plugin-jsdoc";
|
|
|
|
// Cloudflare Workers globals + custom codebase types that no-undefined-types
|
|
// must treat as defined (no tsc/jsconfig — plain ESM JS).
|
|
const DEFINED_TYPES = [
|
|
// Cloudflare Workers runtime globals
|
|
"KVNamespace",
|
|
"D1Database",
|
|
"D1PreparedStatement",
|
|
// Web globals not always in eslint's scope
|
|
"Request",
|
|
"Response",
|
|
"URL",
|
|
// KV interface types (src/db/kv-store-interface.js)
|
|
"KVStore",
|
|
"KVStorePutOptions",
|
|
"KVStoreListOptions",
|
|
"KVStoreListResult",
|
|
// SQL interface types (src/db/sql-store-interface.js)
|
|
"SqlStore",
|
|
"SqlRunResult",
|
|
// Central typedefs (src/types.js)
|
|
"Env",
|
|
"Module",
|
|
"Command",
|
|
"Cron",
|
|
"ModuleContext",
|
|
"Trade",
|
|
"Portfolio",
|
|
"PortfolioMeta",
|
|
// Module sub-types (registry, validate-*)
|
|
"BotModule",
|
|
"RegistryEntry",
|
|
"Registry",
|
|
"ModuleCommand",
|
|
"ModuleCron",
|
|
"CronEntry",
|
|
// Trading sub-types
|
|
"ResolvedSymbol",
|
|
];
|
|
|
|
export default [
|
|
{
|
|
files: ["src/**/*.js"],
|
|
plugins: { jsdoc },
|
|
rules: {
|
|
"jsdoc/check-alignment": "warn",
|
|
"jsdoc/check-param-names": "error",
|
|
"jsdoc/check-tag-names": "error",
|
|
"jsdoc/check-types": "error",
|
|
"jsdoc/no-undefined-types": ["error", { definedTypes: DEFINED_TYPES }],
|
|
"jsdoc/require-param-type": "error",
|
|
"jsdoc/require-returns-type": "error",
|
|
"jsdoc/valid-types": "error",
|
|
},
|
|
},
|
|
];
|