docs: 📚️ add docs to all files
Added documentation to all files, configs and presets. Following the new strict documentation rules.
This commit is contained in:
8
configs/js/src/@types/eslint-plugin-i.d.ts
vendored
8
configs/js/src/@types/eslint-plugin-i.d.ts
vendored
@@ -1,3 +1,11 @@
|
||||
/**
|
||||
* @file
|
||||
* Type declaration for the `eslint-plugin-i` package in a attempt to make it
|
||||
* compatible with the new flat config.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
// eslint-disable-next-line unicorn/prevent-abbreviations
|
||||
import type { ESLint, Linter } from 'eslint';
|
||||
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
/**
|
||||
* @file
|
||||
* Type declaration for the `eslint-plugin-jsdoc` package in a attempt to make it
|
||||
* compatible with the new flat config.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
import type { ESLint } from 'eslint';
|
||||
|
||||
/**
|
||||
|
||||
8
configs/js/src/@types/globals.d.ts
vendored
8
configs/js/src/@types/globals.d.ts
vendored
@@ -1,3 +1,11 @@
|
||||
/**
|
||||
* @file
|
||||
* Type declaration for the `globals` package in a attempt to make it
|
||||
* compatible with the new flat config.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
declare module 'globals' {
|
||||
const globals: {
|
||||
browser: { [rule: string]: boolean, },
|
||||
|
||||
9
configs/js/src/@types/typescript-eslint.d.ts
vendored
9
configs/js/src/@types/typescript-eslint.d.ts
vendored
@@ -1,3 +1,12 @@
|
||||
/**
|
||||
* @file
|
||||
* Type declaration for the `@typescript-eslint/eslint-plugin` and
|
||||
* `@typescript-eslint/parser` packages in a attempt to make it
|
||||
* compatible with the new flat config.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
import type { ESLint, Linter } from 'eslint';
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,18 +1,22 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration object that adds necessary plugins for the other objects.
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
import tsESLint from '@typescript-eslint/eslint-plugin';
|
||||
// eslint-disable-next-line import/no-relative-parent-imports
|
||||
import { jsFiles, tsFiles } from '../constants.js';
|
||||
import unicornPlugin from 'eslint-plugin-unicorn';
|
||||
// @ts-expect-error because the package doesn't export correct types
|
||||
import tsParser from '@typescript-eslint/parser';
|
||||
import jsdocPlugin from 'eslint-plugin-jsdoc';
|
||||
import importPlugin from 'eslint-plugin-i';
|
||||
import process from 'node:process';
|
||||
|
||||
/**
|
||||
* This config adds necessary plugins and configuration for ESLint
|
||||
* to use in the other configs **This should always be in the top
|
||||
* of the configuration array**.
|
||||
* @type {import('eslint').Linter.FlatConfig}
|
||||
*/
|
||||
/** @type {import('eslint').Linter.FlatConfig} */
|
||||
const config = {
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
languageOptions: {
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration objects that helps document your code.
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import { createVariations } from '../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../constants.js';
|
||||
|
||||
/** @type {import('./index.d.ts').ConfigVariations} */
|
||||
const recommended = createVariations({
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
rules: {
|
||||
@@ -17,7 +24,6 @@ const recommended = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/** @type {import('./index.d.ts').ConfigVariations} */
|
||||
const strict = createVariations({
|
||||
...recommended.error,
|
||||
rules: {
|
||||
@@ -25,7 +31,24 @@ const strict = createVariations({
|
||||
|
||||
...{}, // Plugin: eslint-plugin-jsdoc
|
||||
'jsdoc/require-description': 'error',
|
||||
'jsdoc/require-file-overview': 'error',
|
||||
'jsdoc/require-file-overview': ['error', { tags: {
|
||||
author: {
|
||||
mustExist: true,
|
||||
},
|
||||
copyright: {
|
||||
initialCommentsOnly: true,
|
||||
},
|
||||
file: {
|
||||
initialCommentsOnly: true,
|
||||
mustExist: true,
|
||||
preventDuplicates: true,
|
||||
},
|
||||
license: {
|
||||
initialCommentsOnly: true,
|
||||
mustExist: true,
|
||||
preventDuplicates: true,
|
||||
},
|
||||
} }],
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration objects for the browser environment.
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import { createVariations } from '../../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../../constants.js';
|
||||
|
||||
/** @type {import('../index.d.ts').ConfigVariations} */
|
||||
const recommended = createVariations({
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
rules: {
|
||||
@@ -19,7 +26,6 @@ const recommended = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/** @type {import('../index.d.ts').ConfigVariations} */
|
||||
const strict = createVariations({
|
||||
...recommended.error,
|
||||
rules: {
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration object for the all the environment.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
import browser from './browser.js';
|
||||
import node from './node.js';
|
||||
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration objects for the NodeJS environment.
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import { createVariations } from '../../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../../constants.js';
|
||||
|
||||
/** @type {import('../index.d.ts').ConfigVariations} */
|
||||
const commonjs = createVariations({
|
||||
files: ['**/*.cts', '**/*.cjs'],
|
||||
rules: {
|
||||
@@ -19,7 +26,6 @@ const commonjs = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/** @type {import('../index.d.ts').ConfigVariations} */
|
||||
const recommended = createVariations({
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
rules: {
|
||||
@@ -31,7 +37,6 @@ const recommended = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/** @type {import('../index.d.ts').ConfigVariations} */
|
||||
const strict = createVariations({
|
||||
...recommended.error,
|
||||
rules: {
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration objects for code formatting and style in JavaScript and TypeScript.
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import perfectionistPlugin from 'eslint-plugin-perfectionist';
|
||||
import { createVariations } from '../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../constants.js';
|
||||
|
||||
/**
|
||||
* This config relates to code formatting and style in JavaScript and TypeScript
|
||||
* Recommended alternative, better for projects in prototyping phases.
|
||||
* @type {import('./index.d.ts').ConfigVariations}
|
||||
*/
|
||||
const recommended = createVariations({
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
plugins: {
|
||||
@@ -155,11 +158,6 @@ const recommended = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* This config relates to code formatting and style in JavaScript and TypeScript
|
||||
* Strict alternative, better for projects in refactoring and/or production phases.
|
||||
* @type {import('./index.d.ts').ConfigVariations}
|
||||
*/
|
||||
const strict = createVariations({
|
||||
...recommended.error,
|
||||
rules: {
|
||||
|
||||
229
configs/js/src/configs/index.d.ts
vendored
229
configs/js/src/configs/index.d.ts
vendored
@@ -1,55 +1,280 @@
|
||||
/**
|
||||
* @file
|
||||
* Type declarations and documentations for all configs objects.
|
||||
* All these types are public to the user.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
import type { Linter } from 'eslint';
|
||||
|
||||
interface ConfigVariations {
|
||||
/**
|
||||
* @description
|
||||
* Enable all rules with `error` level.
|
||||
*/
|
||||
error: Linter.FlatConfig,
|
||||
/**
|
||||
* @description
|
||||
* Disable all rules in this config.
|
||||
*/
|
||||
off: Linter.FlatConfig,
|
||||
/**
|
||||
* @description
|
||||
* Enable all rules with `warn` level.
|
||||
*/
|
||||
warn: Linter.FlatConfig,
|
||||
}
|
||||
|
||||
const configs: Readonly<{
|
||||
/**
|
||||
* @summary
|
||||
* **Add this configuration at the start of your array**.
|
||||
* @description
|
||||
* This config adds necessary plugins and configuration for ESLint
|
||||
* to use in the other configs **This should always be in the top
|
||||
* of the configuration array**.
|
||||
*/
|
||||
core: Linter.FlatConfig,
|
||||
/**
|
||||
* @description
|
||||
* This configuration helps you document your code with JSDoc.
|
||||
*/
|
||||
documentation: {
|
||||
/**
|
||||
* @summary
|
||||
* Recommended rules from the original plugins.
|
||||
* @description
|
||||
* Less strict rules, that nots enforces documentation on
|
||||
* every aspect/function of your code. Recommended rules for
|
||||
* projects in prototyping or starting phases, or apps that
|
||||
* doesn't needs massive documentations.
|
||||
*/
|
||||
recommended: ConfigVariations,
|
||||
/**
|
||||
* @summary
|
||||
* More opinionated configuration, created for ESLegant and Lored's projects.
|
||||
* @borrows Builds on top of the recommended configuration
|
||||
* @description
|
||||
* Enforces some documentation of every function and file.
|
||||
* Better for libraries (in more production-ready phases),
|
||||
* large codebase's and/or projects with multiple teams/people.
|
||||
*/
|
||||
strict: ConfigVariations,
|
||||
},
|
||||
/**
|
||||
* @summary
|
||||
* Configurations related to specific JavaScript/TypeScript environments,
|
||||
* such as Node, Deno and the Browser.
|
||||
* @description
|
||||
* Adds global variables and rules related to code on said environments.
|
||||
* **They can and should be combined** depending on the codebase you're
|
||||
* working with.
|
||||
*/
|
||||
environments: {
|
||||
/**
|
||||
* @description
|
||||
* Browser environment configuration, use this if you are working
|
||||
* on a pure client-side or mixed codebase environment.
|
||||
*/
|
||||
browser: {
|
||||
/**
|
||||
* @description
|
||||
* Recommends end enforces the use of newer web APIs
|
||||
* on your codebase.
|
||||
*/
|
||||
recommended: ConfigVariations,
|
||||
/**
|
||||
* @borrows Builds on top of the recommended configuration
|
||||
* @todo
|
||||
* For now, the strict rules is a alias of the recommended,
|
||||
* as it not currently adds any new rules.
|
||||
*/
|
||||
strict: ConfigVariations,
|
||||
},
|
||||
node: {
|
||||
/**
|
||||
* @summary
|
||||
* Configuration overrides for CommonJS files.
|
||||
* @description
|
||||
* ESLegant recommends the use of ESModules and newer syntax
|
||||
* for javascript files. This configuration should mostly be
|
||||
* used for exceptions, like config files that don't support
|
||||
* ESM.
|
||||
*
|
||||
* This configuration just affects files ending in `*.cjs`
|
||||
* and `*.cts` extensions. If you want to use in other files
|
||||
* consider creating a config object.
|
||||
* @example <caption>Example of using the config for specific CommonJS files</caption>
|
||||
* import { configs } from '@eslegant/js';
|
||||
*
|
||||
* export default [
|
||||
* {
|
||||
* ...configs.environments.node.commonjs.error
|
||||
* files: ['*.config.js'],
|
||||
* }
|
||||
* ]
|
||||
*/
|
||||
commonjs: ConfigVariations,
|
||||
/**
|
||||
* @description
|
||||
* Recommends newer and best practices on NodeJS projects.
|
||||
*/
|
||||
recommended: ConfigVariations,
|
||||
/**
|
||||
* @borrows Builds on top of the recommended configuration
|
||||
* @todo
|
||||
* For now, the strict rules is a alias of the recommended,
|
||||
* as it not currently adds any new rules.
|
||||
*/
|
||||
strict: ConfigVariations,
|
||||
},
|
||||
},
|
||||
/**
|
||||
* @summary
|
||||
* This config relates to code formatting and style in JavaScript and TypeScript.
|
||||
* @description
|
||||
* This configuration enforces a specific code formatting and style in JavaScript
|
||||
* and TypeScript. The purpose of it can sometimes overlap with the `suggestions`
|
||||
* config, so to separate better, this tries to mostly enforces just rules for
|
||||
* how the code looks and is organized than coding style/way of handling something.
|
||||
*/
|
||||
formatting: {
|
||||
/**
|
||||
* @summary
|
||||
* ESLegant / Lored's code style configuration.
|
||||
* @description
|
||||
* This configuration recommends a opinionated code and formatting style, which
|
||||
* is mostly similar to other styles in the JavaScript environment.
|
||||
* It is based on the work and config of Anthony's ESLint config (`antfu/eslint-config`),
|
||||
* with the most notable changes being the use of `tabs` instead of 2 space indentation
|
||||
* and the use of semicolons.
|
||||
* @see {@link https://github.com/antfu/eslint-config Anthony's config}
|
||||
*/
|
||||
recommended: ConfigVariations,
|
||||
/**
|
||||
* @borrows Builds on top of the recommended configuration
|
||||
* @todo
|
||||
* For now, the strict rules is a alias of the recommended,
|
||||
* as it not currently adds any new rules.
|
||||
*/
|
||||
strict: ConfigVariations,
|
||||
},
|
||||
/**
|
||||
* @description
|
||||
* This configuration enforces a specific naming convention for the codebase.
|
||||
* With the object of making the code more readable and understandable.
|
||||
*/
|
||||
naming: {
|
||||
/**
|
||||
* @summary
|
||||
* Prevents bad naming conventions and behavior.
|
||||
* @description
|
||||
* This configuration prevents bad names and behaviors such as abbreviations.
|
||||
* It does not enforces specific names or naming structure/strategies.
|
||||
* **With the exception of** file names being enforces to be `kebab-case`.
|
||||
*/
|
||||
recommended: ConfigVariations,
|
||||
/**
|
||||
* @summary
|
||||
* Enforces specific naming structure/strategies.
|
||||
* @borrows Builds on top of the recommended configuration
|
||||
* @description
|
||||
* This configuration enforces specific names or naming structure/strategies for your
|
||||
* code. Enforcing things such using verbs and nouns in specif orders and
|
||||
* when abbreviations are accepted or not.
|
||||
*/
|
||||
strict: ConfigVariations,
|
||||
},
|
||||
overrides: {
|
||||
'inferrable-types': ConfigVariations,
|
||||
performance: ConfigVariations,
|
||||
},
|
||||
suggestions: {
|
||||
/**
|
||||
* @summary
|
||||
* Prevents possible syntax errors in your code.
|
||||
* @description
|
||||
* This configuration object prevents possible syntax and code logic
|
||||
* errors on your file. Mostly not opinionated.
|
||||
*/
|
||||
problems: {
|
||||
/**
|
||||
* @description
|
||||
* Rules which prevents most errors in your code. Based
|
||||
* mostly on ESLint's recommended configuration.
|
||||
*/
|
||||
recommended: ConfigVariations,
|
||||
/**
|
||||
* @borrows Builds on top of the recommended configuration
|
||||
* @description
|
||||
* Extra-safety rules, reporting possible forgettable errors
|
||||
* or errors in typing.
|
||||
*/
|
||||
strict: ConfigVariations,
|
||||
},
|
||||
'suggestions-typescript': {
|
||||
/**
|
||||
* @summary
|
||||
* Enforces different ways of coding in JavaScript and TypeScript.
|
||||
* @description
|
||||
* This configuration enforces different ways doing things, coding style and/or
|
||||
* code logic patterns. Preferring over explicit and declarative code than
|
||||
* implicit.
|
||||
*/
|
||||
suggestions: {
|
||||
/**
|
||||
* @summary
|
||||
* Recommended for projects in prototyping/starting phases.
|
||||
* @description
|
||||
* This configuration enforces mostly best practices,
|
||||
* based on the `recommended` options of the plugins.
|
||||
*/
|
||||
recommended: ConfigVariations,
|
||||
/**
|
||||
* @summary
|
||||
* Strict rules that takes "guarding rails" for your code.
|
||||
* @borrows Builds on top of the recommended configuration
|
||||
* @description
|
||||
* **This will get in the way of your programming**. This configuration
|
||||
* tries prevent possible bad code smells and practices that could built
|
||||
* up when your project grows. Enforcing you to refactor more the code
|
||||
* and separating and or reorganizing functions and code logic.
|
||||
* @see {@link https://youtu.be/CFRhGnuXG-4 Example: Why You Shouldn't Nest Your Code - by: CodeAesthetic}
|
||||
* - The maximum depth allowed is 4. (`max-depth: [error, 4]`)
|
||||
* @see {@link https://youtu.be/J1f5b4vcxCQ Example: Dependency Injection, The Best Pattern - by: CodeAesthetic}
|
||||
* - Files should be organized in a tree-like structure, and shouldn't import modules
|
||||
* in parent directories. This helps you organize your code and suggests using
|
||||
* dependency injection more.
|
||||
*/
|
||||
strict: ConfigVariations,
|
||||
},
|
||||
/**
|
||||
* @summary
|
||||
* Rules for TypeScript files specifically. **Use this if
|
||||
* you have Typescript files in your project**.
|
||||
* Affects `*.ts`, `*.tsx`, `*.mts` and `*.cts` files.
|
||||
* @description
|
||||
* Most of TypeScript rules can be applied to type-checked JavaScript
|
||||
* files also. But some can just be fixed in TypeScript syntax, so they
|
||||
* where disabled and moved to this specific configuration.
|
||||
*
|
||||
* It also disable things that aren't useful when using TypeScript, such
|
||||
* as types in JSDoc comments.
|
||||
*
|
||||
* **This should be placed after the `suggestion` config.**.
|
||||
*
|
||||
*/
|
||||
'suggestions-typescript': {
|
||||
/**
|
||||
* @summary
|
||||
* Rules similar to {@link configs.suggestions.recommended `suggestions#recommended`},
|
||||
* but for TypeScript.
|
||||
*/
|
||||
recommended: ConfigVariations,
|
||||
/**
|
||||
* @summary
|
||||
* Rules similar to {@link configs.suggestions.strict `suggestions#strict`},
|
||||
* but for TypeScript.
|
||||
*/
|
||||
strict: ConfigVariations,
|
||||
},
|
||||
}>;
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
/**
|
||||
* @file
|
||||
* Main export files for all the configs objects, merging then in one `configs` object.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
import typescript from './suggestions-typescript.js';
|
||||
import environments from './environments/index.js';
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration objects which enforces a specific naming convention for the codebase.
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import { createVariations } from '../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../constants.js';
|
||||
|
||||
/**
|
||||
* This config suggest alternate ways of doing things in JavaScript and TypeScript
|
||||
* Recommended alternative, better for projects in prototyping phases.
|
||||
* @type {import('./index.d.ts').ConfigVariations}
|
||||
*/
|
||||
const recommended = createVariations({
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
rules: {
|
||||
@@ -17,11 +20,6 @@ const recommended = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* This config suggest alternate ways of doing things in JavaScript and TypeScript
|
||||
* Strict alternative, better for projects in refactoring and/or production phases.
|
||||
* @type {import('./index.d.ts').ConfigVariations}
|
||||
*/
|
||||
const strict = createVariations({
|
||||
...recommended.error,
|
||||
rules: {
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
/**
|
||||
* @file
|
||||
* Overrides for specific scenarios or preferences of users. The objects
|
||||
* are supposed to be placed on the end of the arrays and can
|
||||
* change configs of multiple other categories.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
* @todo This file is not completed fully.
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import { createVariations } from '../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../constants.js';
|
||||
|
||||
// TODO [>=1.0.0]: Create a separate config for performance related practices
|
||||
/** @type {import('./index.d.ts').ConfigVariations} */
|
||||
const performance = createVariations({
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
rules: {
|
||||
@@ -13,7 +22,6 @@ const performance = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/** @type {import('./index.d.ts').ConfigVariations} */
|
||||
const inferrableTypes = createVariations({
|
||||
files: [...tsFiles],
|
||||
rules: {
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration objects for preventing possible syntax errors.
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import { createVariations } from '../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../constants.js';
|
||||
|
||||
/**
|
||||
* This config relates to possible logic and syntax errors JavaScript and TypeScript
|
||||
* Recommended alternative, better for projects in prototyping phases.
|
||||
* @type {import('./index.d.ts').ConfigVariations}
|
||||
*/
|
||||
const recommended = createVariations({
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
rules: {
|
||||
@@ -78,11 +81,6 @@ const recommended = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* This config relates to possible logic and syntax errors JavaScript and TypeScript
|
||||
* Strict alternative, better for projects in refactoring and/or production phases.
|
||||
* @type {import('./index.d.ts').ConfigVariations}
|
||||
*/
|
||||
const strict = createVariations({
|
||||
...recommended.error,
|
||||
rules: {
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration objects that enforces different ways of coding in TypeScript specifically.
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import { createVariations } from '../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../constants.js';
|
||||
import { tsFiles } from '../constants.js';
|
||||
|
||||
/** @type {import('./index.d.ts').ConfigVariations} */
|
||||
const recommended = createVariations({
|
||||
files: [...tsFiles],
|
||||
rules: {
|
||||
@@ -19,7 +26,6 @@ const recommended = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/** @type {import('./index.d.ts').ConfigVariations} */
|
||||
const strict = createVariations({
|
||||
...recommended.error,
|
||||
rules: {
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
/**
|
||||
* @file
|
||||
* Configuration objects that enforces different ways of coding in JavaScript and TypeScript..
|
||||
* See more info on the configs type declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/* eslint-disable import/no-relative-parent-imports */
|
||||
/* eslint-disable unicorn/no-useless-spread */
|
||||
import { createVariations } from '../lib/rule-variations.js';
|
||||
import { jsFiles, tsFiles } from '../constants.js';
|
||||
|
||||
|
||||
/**
|
||||
* This config suggest alternate ways of doing things in JavaScript and TypeScript
|
||||
* Recommended alternative, better for projects in prototyping phases.
|
||||
* @type {import('./index.d.ts').ConfigVariations}
|
||||
*/
|
||||
const recommended = createVariations({
|
||||
files: [...tsFiles, ...jsFiles],
|
||||
rules: {
|
||||
@@ -249,11 +251,6 @@ const recommended = createVariations({
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* This config suggest alternate ways of doing things in JavaScript and TypeScript
|
||||
* Strict alternative, better for projects in refactoring and/or production phases.
|
||||
* @type {import('./index.d.ts').ConfigVariations}
|
||||
*/
|
||||
const strict = createVariations({
|
||||
...recommended.error,
|
||||
rules: {
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
/**
|
||||
* @file
|
||||
* Constant values used around the package.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
const jsFiles = ['**/*.js', '**/*.mjs', '**/*.cjs', '**/*.jsx'];
|
||||
const tsFiles = ['**/*.ts', '**/*.mts', '**/*.cts', '**/*.tsx'];
|
||||
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
/**
|
||||
* @file Utility functions used in the package to manipulate rules records.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {import('../configs/index').ConfigVariations} ConfigVariations
|
||||
* @typedef {import('eslint').Linter.RuleEntry} RuleEntry
|
||||
* @typedef {import('eslint').Linter.RuleLevel} RuleLevel
|
||||
* @typedef {import('eslint').Linter.FlatConfig} FlatConfig
|
||||
*/
|
||||
|
||||
/**
|
||||
* Changes the level of a rule entry. Checking if it
|
||||
* is a Array or a simple RuleLevel entry.
|
||||
*
|
||||
* Useful in conjunction with {@link iterateRules `iterateRules()`} function.
|
||||
*
|
||||
* @param {Readonly<RuleEntry>} ruleEntry
|
||||
* - The rule entry to be modified.
|
||||
* @param {RuleLevel} level
|
||||
@@ -27,6 +38,12 @@ function changeLevel(ruleEntry, level) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Iterates through a rule entry record, using the handler
|
||||
* on each entry and returns the resulting object.
|
||||
*
|
||||
* Useful for applying plugin prefixes or changing the rule
|
||||
* level of the entries.
|
||||
*
|
||||
* @param {Readonly<{[name: string]: RuleEntry}>} rules
|
||||
* - The object to be iterated through.
|
||||
* @param {([name, entry]: [string, RuleEntry]) => [string, RuleEntry]} handler
|
||||
@@ -40,9 +57,14 @@ function iterateRules(rules, handler) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates {@link ConfigVariations variations} for the given configuration object.
|
||||
* With `error`, `warn` and `off` rule levels.
|
||||
*
|
||||
* Used in the configuration objects of this package.
|
||||
*
|
||||
* @param {Readonly<FlatConfig>} config
|
||||
* - The configuration object to create `error`, `warn`, and `off` variations.
|
||||
* @returns {{error: FlatConfig, warn: FlatConfig, off: FlatConfig}}
|
||||
* @returns {ConfigVariations}
|
||||
*/
|
||||
function createVariations(config) {
|
||||
const configError = {
|
||||
|
||||
43
configs/js/src/presets/index.d.ts
vendored
43
configs/js/src/presets/index.d.ts
vendored
@@ -1,7 +1,50 @@
|
||||
/**
|
||||
* @file
|
||||
* Types declarations and documentation for the presets object.
|
||||
* All these types are public to the user.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
import type { Linter } from 'eslint';
|
||||
|
||||
const presets: Readonly<{
|
||||
/**
|
||||
* @summary
|
||||
* Preset recommended for projects in a prototyping or starting phase.
|
||||
* @description
|
||||
* This preset is mostly recommended for projects in the start of
|
||||
* their development, being more flexible and less opinionated.
|
||||
* Useful for preventing errors.
|
||||
*
|
||||
* Configs used:
|
||||
* - `problems#recommended`;
|
||||
* - `suggestions#recommended`;
|
||||
* - `suggestions-typescript#recommended`;
|
||||
* - `formatting#recommended`;
|
||||
* - `naming#recommended`;
|
||||
* - `documentation#recommended`;
|
||||
*
|
||||
* All configs are set on level `error`.
|
||||
*/
|
||||
recommended: Linter.FlatConfig[],
|
||||
/**
|
||||
* @summary
|
||||
* Preset recommended for projects in a production or large scale.
|
||||
* @description
|
||||
* This preset is more strict and opinionated, focusing on making
|
||||
* your code follow a specific structure and pattern.
|
||||
*
|
||||
* Configs used:
|
||||
* - `problems#strict`;
|
||||
* - `suggestions#strict`;
|
||||
* - `suggestions-typescript#strict`;
|
||||
* - `formatting#strict`;
|
||||
* - `naming#strict`;
|
||||
* - `documentation#recommended`;
|
||||
*
|
||||
* All configs are set on level `error`.
|
||||
*/
|
||||
strict: Linter.FlatConfig[],
|
||||
}>;
|
||||
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
/**
|
||||
* @file
|
||||
* Presets object export.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
import recommended from './recommended.js';
|
||||
import strict from './strict.js';
|
||||
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
/**
|
||||
* @file
|
||||
* Recommended preset object. More info and docs on the type
|
||||
* declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
// eslint-disable-next-line import/no-relative-parent-imports
|
||||
import configs from '../configs/index.js';
|
||||
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
/**
|
||||
* @file
|
||||
* Strict preset object. More info and docs on the type
|
||||
* declaration file.
|
||||
* @license MIT
|
||||
* @author Guz013 <contact.guz013@gmail.com> (https://guz.one)
|
||||
*/
|
||||
|
||||
// eslint-disable-next-line import/no-relative-parent-imports
|
||||
import configs from '../configs/index.js';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user