UNPKG

eslint-plugin-roblox-ts

Version:

A collection of ESLint rules specifically targeted for roblox-ts.

274 lines (273 loc) 16.2 kB
import { TSESLint } from "@typescript-eslint/utils"; import "@typescript-eslint/utils/eslint-utils"; import { Linter } from "eslint"; //#region src/util.d.ts interface PluginDocumentation { description: string; recommended?: boolean; requiresTypeChecking: boolean; } //#endregion //#region src/index.d.ts declare const PLUGIN_NAME: string; declare const plugin: { meta: { name: string; version: string; }; rules: { "lua-truthiness": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "misleading-lua-tuple-checks": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-any": TSESLint.RuleModule<"any-violation" | "suggest-unknown", [{ fixToUnknown: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "no-array-pairs": TSESLint.RuleModule<"array-ipairs-violation" | "array-pairs-violation", [], PluginDocumentation, TSESLint.RuleListener>; "no-enum-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-export-assignment-let": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-for-in": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-function-expression-name": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-get-set": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-implicit-self": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-invalid-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-namespace-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-null": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-object-math": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-post-fix-new": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-preceding-spread-element": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-private-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-unsupported-syntax": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-user-defined-lua-tuple": TSESLint.RuleModule<"lua-tuple-violation" | "tuple-macro-violation", [({ allowTupleMacro?: boolean; shouldFix?: boolean; } | undefined)?], PluginDocumentation, TSESLint.RuleListener>; "no-value-typeof": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "prefer-get-players": TSESLint.RuleModule<"get-players-children-violation", [{ validateType: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "prefer-task-library": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "size-method": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; }; }; declare const configs: { /** * Recommended configuration for ESLint v9+ (flat config). Enables all * plugin rules. * * @example * * ```ts * // eslint.config.js * import roblox from "eslint-plugin-roblox-ts"; * * export default [roblox.configs.recommended]; * ``` */ recommended: { plugins: { [PLUGIN_NAME]: { meta: { name: string; version: string; }; rules: { "lua-truthiness": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "misleading-lua-tuple-checks": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-any": TSESLint.RuleModule<"any-violation" | "suggest-unknown", [{ fixToUnknown: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "no-array-pairs": TSESLint.RuleModule<"array-ipairs-violation" | "array-pairs-violation", [], PluginDocumentation, TSESLint.RuleListener>; "no-enum-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-export-assignment-let": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-for-in": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-function-expression-name": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-get-set": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-implicit-self": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-invalid-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-namespace-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-null": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-object-math": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-post-fix-new": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-preceding-spread-element": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-private-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-unsupported-syntax": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-user-defined-lua-tuple": TSESLint.RuleModule<"lua-tuple-violation" | "tuple-macro-violation", [({ allowTupleMacro?: boolean; shouldFix?: boolean; } | undefined)?], PluginDocumentation, TSESLint.RuleListener>; "no-value-typeof": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "prefer-get-players": TSESLint.RuleModule<"get-players-children-violation", [{ validateType: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "prefer-task-library": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "size-method": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; }; }; }; rules: Linter.RulesRecord; }; /** * Recommended configuration for legacy ESLint v8. Enables all plugin rules. * * @example * * ```ts * // .eslintrc.js * module.exports = { * extends: ["plugin:roblox-ts/recommended-legacy"], * }; * ``` */ "recommended-legacy": { plugins: string[]; rules: Linter.RulesRecord; }; }; declare const _default: { configs: { /** * Recommended configuration for ESLint v9+ (flat config). Enables all * plugin rules. * * @example * * ```ts * // eslint.config.js * import roblox from "eslint-plugin-roblox-ts"; * * export default [roblox.configs.recommended]; * ``` */ recommended: { plugins: { [PLUGIN_NAME]: { meta: { name: string; version: string; }; rules: { "lua-truthiness": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "misleading-lua-tuple-checks": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-any": TSESLint.RuleModule<"any-violation" | "suggest-unknown", [{ fixToUnknown: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "no-array-pairs": TSESLint.RuleModule<"array-ipairs-violation" | "array-pairs-violation", [], PluginDocumentation, TSESLint.RuleListener>; "no-enum-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-export-assignment-let": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-for-in": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-function-expression-name": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-get-set": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-implicit-self": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-invalid-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-namespace-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-null": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-object-math": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-post-fix-new": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-preceding-spread-element": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-private-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-unsupported-syntax": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-user-defined-lua-tuple": TSESLint.RuleModule<"lua-tuple-violation" | "tuple-macro-violation", [({ allowTupleMacro?: boolean; shouldFix?: boolean; } | undefined)?], PluginDocumentation, TSESLint.RuleListener>; "no-value-typeof": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "prefer-get-players": TSESLint.RuleModule<"get-players-children-violation", [{ validateType: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "prefer-task-library": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "size-method": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; }; }; }; rules: Linter.RulesRecord; }; /** * Recommended configuration for legacy ESLint v8. Enables all plugin rules. * * @example * * ```ts * // .eslintrc.js * module.exports = { * extends: ["plugin:roblox-ts/recommended-legacy"], * }; * ``` */ "recommended-legacy": { plugins: string[]; rules: Linter.RulesRecord; }; }; meta: { name: string; version: string; }; rules: { "lua-truthiness": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "misleading-lua-tuple-checks": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-any": TSESLint.RuleModule<"any-violation" | "suggest-unknown", [{ fixToUnknown: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "no-array-pairs": TSESLint.RuleModule<"array-ipairs-violation" | "array-pairs-violation", [], PluginDocumentation, TSESLint.RuleListener>; "no-enum-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-export-assignment-let": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-for-in": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-function-expression-name": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-get-set": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-implicit-self": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-invalid-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-namespace-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-null": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-object-math": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-post-fix-new": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-preceding-spread-element": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-private-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-unsupported-syntax": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-user-defined-lua-tuple": TSESLint.RuleModule<"lua-tuple-violation" | "tuple-macro-violation", [({ allowTupleMacro?: boolean; shouldFix?: boolean; } | undefined)?], PluginDocumentation, TSESLint.RuleListener>; "no-value-typeof": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "prefer-get-players": TSESLint.RuleModule<"get-players-children-violation", [{ validateType: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "prefer-task-library": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "size-method": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; }; }; declare const rules: { "lua-truthiness": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "misleading-lua-tuple-checks": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-any": TSESLint.RuleModule<"any-violation" | "suggest-unknown", [{ fixToUnknown: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "no-array-pairs": TSESLint.RuleModule<"array-ipairs-violation" | "array-pairs-violation", [], PluginDocumentation, TSESLint.RuleListener>; "no-enum-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-export-assignment-let": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-for-in": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-function-expression-name": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-get-set": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-implicit-self": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-invalid-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-namespace-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-null": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-object-math": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-post-fix-new": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-preceding-spread-element": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-private-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-unsupported-syntax": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "no-user-defined-lua-tuple": TSESLint.RuleModule<"lua-tuple-violation" | "tuple-macro-violation", [({ allowTupleMacro?: boolean; shouldFix?: boolean; } | undefined)?], PluginDocumentation, TSESLint.RuleListener>; "no-value-typeof": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "prefer-get-players": TSESLint.RuleModule<"get-players-children-violation", [{ validateType: boolean; }], PluginDocumentation, TSESLint.RuleListener>; "prefer-task-library": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; "size-method": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>; }; type RuleOptions = { [K in keyof RuleDefinitions]: RuleDefinitions[K]["defaultOptions"] }; type Rules = { [K in keyof RuleOptions]: Linter.RuleEntry<RuleOptions[K]> }; type RuleDefinitions = typeof plugin.rules; //#endregion export { RuleOptions, Rules, configs, _default as default, rules };