@ttsc/lint 0.10.1 → 0.11.0-dev.20260517
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +172 -33
- package/lib/defineConfig.d.ts +55 -0
- package/lib/defineConfig.js +39 -0
- package/lib/defineConfig.js.map +1 -0
- package/lib/index.d.ts +25 -1
- package/lib/index.js +622 -2
- package/lib/index.js.map +1 -1
- package/lib/structures/ITtscLintPlugin.d.ts +53 -0
- package/lib/structures/ITtscLintPlugin.js +3 -0
- package/lib/structures/ITtscLintPlugin.js.map +1 -0
- package/lib/structures/ITtscLintPluginConfig.d.ts +82 -5
- package/lib/structures/ITtscLintPluginMeta.d.ts +12 -0
- package/lib/structures/ITtscLintPluginMeta.js +3 -0
- package/lib/structures/ITtscLintPluginMeta.js.map +1 -0
- package/lib/structures/PluginRuleNames.d.ts +14 -0
- package/lib/structures/PluginRuleNames.js +3 -0
- package/lib/structures/PluginRuleNames.js.map +1 -0
- package/lib/structures/TtscLintConfig.d.ts +24 -8
- package/lib/structures/TtscLintConfigEntry.d.ts +39 -0
- package/lib/structures/TtscLintConfigEntry.js +3 -0
- package/lib/structures/TtscLintConfigEntry.js.map +1 -0
- package/lib/structures/TtscLintFormatConfig.d.ts +154 -0
- package/lib/structures/TtscLintFormatConfig.js +3 -0
- package/lib/structures/TtscLintFormatConfig.js.map +1 -0
- package/lib/structures/TtscLintPlugins.d.ts +9 -0
- package/lib/structures/TtscLintPlugins.js +3 -0
- package/lib/structures/TtscLintPlugins.js.map +1 -0
- package/lib/structures/TtscLintRule.d.ts +1 -1
- package/lib/structures/TtscLintRuleEntry.d.ts +22 -0
- package/lib/structures/TtscLintRuleEntry.js +3 -0
- package/lib/structures/TtscLintRuleEntry.js.map +1 -0
- package/lib/structures/TtscLintRuleMap.d.ts +44 -0
- package/lib/structures/TtscLintRuleMap.js +3 -0
- package/lib/structures/TtscLintRuleMap.js.map +1 -0
- package/lib/structures/TtscLintRuleOptions.d.ts +149 -0
- package/lib/structures/TtscLintRuleOptions.js +3 -0
- package/lib/structures/TtscLintRuleOptions.js.map +1 -0
- package/lib/structures/defaultFormat.d.ts +31 -0
- package/lib/structures/defaultFormat.js +35 -0
- package/lib/structures/defaultFormat.js.map +1 -0
- package/lib/structures/index.d.ts +10 -0
- package/lib/structures/index.js +10 -0
- package/lib/structures/index.js.map +1 -1
- package/{plugin → linthost}/ast_helpers.go +92 -1
- package/{plugin → linthost}/compile.go +1 -1
- package/{plugin → linthost}/config.go +583 -66
- package/linthost/config_format.go +360 -0
- package/linthost/contrib_adapter.go +134 -0
- package/{plugin → linthost}/directives.go +1 -1
- package/linthost/dispatch.go +62 -0
- package/{plugin → linthost}/engine.go +156 -11
- package/{plugin → linthost}/eslint_runtime.go +76 -2
- package/linthost/fix.go +249 -0
- package/linthost/format.go +107 -0
- package/{plugin → linthost}/host.go +1 -1
- package/linthost/print_dispatch.go +118 -0
- package/linthost/print_doc.go +168 -0
- package/linthost/print_engine.go +343 -0
- package/linthost/print_nodes_array.go +46 -0
- package/linthost/print_nodes_call.go +180 -0
- package/linthost/print_nodes_imports.go +171 -0
- package/linthost/print_nodes_list.go +64 -0
- package/linthost/print_nodes_object.go +51 -0
- package/{plugin → linthost}/rules_arrays.go +1 -1
- package/{plugin → linthost}/rules_console.go +1 -1
- package/{plugin → linthost}/rules_debugger.go +1 -1
- package/{plugin → linthost}/rules_dupes.go +1 -1
- package/{plugin → linthost}/rules_empty.go +1 -1
- package/linthost/rules_escape.go +238 -0
- package/{plugin → linthost}/rules_eval.go +1 -1
- package/{plugin → linthost}/rules_finally.go +1 -1
- package/linthost/rules_format_jsdoc.go +230 -0
- package/linthost/rules_format_print_width.go +332 -0
- package/linthost/rules_format_quotes.go +219 -0
- package/linthost/rules_format_semi.go +190 -0
- package/linthost/rules_format_sort_imports.go +462 -0
- package/linthost/rules_format_trailing_comma.go +460 -0
- package/{plugin → linthost}/rules_gap.go +101 -6
- package/linthost/rules_imports.go +101 -0
- package/{plugin → linthost}/rules_logic.go +55 -3
- package/{plugin → linthost}/rules_loops.go +1 -1
- package/{plugin → linthost}/rules_misc.go +1 -1
- package/linthost/rules_params.go +64 -0
- package/{plugin → linthost}/rules_problems.go +10 -2
- package/linthost/rules_promise.go +111 -0
- package/{plugin → linthost}/rules_protos.go +1 -1
- package/{plugin → linthost}/rules_self.go +1 -1
- package/{plugin → linthost}/rules_strings.go +1 -1
- package/{plugin → linthost}/rules_suggestions.go +51 -9
- package/{plugin → linthost}/rules_throw.go +1 -1
- package/{plugin → linthost}/rules_ts.go +12 -2
- package/{plugin → linthost}/rules_ts_extra.go +90 -4
- package/{plugin → linthost}/rules_var.go +36 -5
- package/package.json +8 -6
- package/plugin/main.go +14 -27
- package/rule/astutil/astutil.go +148 -0
- package/rule/rule.go +291 -0
- package/src/defineConfig.ts +69 -0
- package/src/index.ts +807 -3
- package/src/structures/ITtscLintPlugin.ts +56 -0
- package/src/structures/ITtscLintPluginConfig.ts +86 -5
- package/src/structures/ITtscLintPluginMeta.ts +14 -0
- package/src/structures/PluginRuleNames.ts +19 -0
- package/src/structures/TtscLintConfig.ts +27 -8
- package/src/structures/TtscLintConfigEntry.ts +50 -0
- package/src/structures/TtscLintFormatConfig.ts +169 -0
- package/src/structures/TtscLintPlugins.ts +10 -0
- package/src/structures/TtscLintRule.ts +14 -1
- package/src/structures/TtscLintRuleEntry.ts +28 -0
- package/src/structures/TtscLintRuleMap.ts +52 -0
- package/src/structures/TtscLintRuleOptions.ts +162 -0
- package/src/structures/defaultFormat.ts +33 -0
- package/src/structures/index.ts +10 -0
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0DAA6B;AAI7B,qDAAmC;AAgBnC,0BACE,QAAyD;IAEzD,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;QAC/C,KAAK,EAAE,OAAO;KACf,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ITtscLintPluginMeta } from "./ITtscLintPluginMeta";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin descriptor exported by a `@ttsc/lint` contributor package.
|
|
4
|
+
*
|
|
5
|
+
* The shape intentionally mirrors ESLint's flat-config plugin object so a
|
|
6
|
+
* contributor can read like an ESLint plugin at a glance:
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* // ttsc-lint-plugin-demo/src/index.ts
|
|
10
|
+
* import type { ITtscLintPlugin } from "@ttsc/lint";
|
|
11
|
+
* import path from "node:path";
|
|
12
|
+
*
|
|
13
|
+
* const plugin: ITtscLintPlugin = {
|
|
14
|
+
* meta: {
|
|
15
|
+
* name: "ttsc-lint-plugin-demo",
|
|
16
|
+
* version: "0.1.0",
|
|
17
|
+
* namespace: "demo",
|
|
18
|
+
* },
|
|
19
|
+
* rules: ["no-todo-comment"],
|
|
20
|
+
* source: path.resolve(__dirname, "..", "rules"),
|
|
21
|
+
* };
|
|
22
|
+
*
|
|
23
|
+
* export default plugin;
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* The only field with runtime semantics is `source`: it points at the
|
|
27
|
+
* contributor's Go source directory. `@ttsc/lint`'s factory passes that path to
|
|
28
|
+
* ttsc's plugin builder, which links the contributor into the host binary at
|
|
29
|
+
* build time. `meta.namespace` and `rules` are advisory (used for type
|
|
30
|
+
* inference and diagnostic messages); the authoritative rule registration
|
|
31
|
+
* happens in the Go `init()` of the contributor module.
|
|
32
|
+
*/
|
|
33
|
+
export interface ITtscLintPlugin {
|
|
34
|
+
/**
|
|
35
|
+
* Plugin metadata. Optional, but `meta.namespace` is the conventional source
|
|
36
|
+
* for the rule-name prefix; when absent, the tsconfig `plugins` map key fills
|
|
37
|
+
* that role.
|
|
38
|
+
*/
|
|
39
|
+
meta?: ITtscLintPluginMeta;
|
|
40
|
+
/**
|
|
41
|
+
* Rule names exported by the Go side, used for TypeScript autocomplete in
|
|
42
|
+
* user configs. Purely advisory — the Go `init()` is the registration
|
|
43
|
+
* authority. Missing entries will not be flagged at runtime.
|
|
44
|
+
*/
|
|
45
|
+
rules?: readonly string[];
|
|
46
|
+
/**
|
|
47
|
+
* Absolute path to the contributor's Go source directory.
|
|
48
|
+
*
|
|
49
|
+
* Resolve with `path.resolve(__dirname, ...)` so the path stays valid
|
|
50
|
+
* regardless of where the consumer's `node_modules` lives.
|
|
51
|
+
*/
|
|
52
|
+
source: string;
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintPlugin.js","sourceRoot":"","sources":["../../src/structures/ITtscLintPlugin.ts"],"names":[],"mappings":""}
|
|
@@ -1,18 +1,95 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TtscLintFormatConfig } from "./TtscLintFormatConfig";
|
|
2
|
+
import type { TtscLintRuleMap } from "./TtscLintRuleMap";
|
|
2
3
|
/** `compilerOptions.plugins[]` entry shape consumed by `@ttsc/lint`. */
|
|
3
4
|
export interface ITtscLintPluginConfig {
|
|
4
5
|
/** Set to `false` to keep the entry while disabling this plugin. */
|
|
5
6
|
enabled?: boolean;
|
|
6
7
|
/** Plugin module specifier. */
|
|
7
8
|
transform?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Inline rule severity map applied to the project.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors the `rules` field of an ESLint flat-config entry. When set, the
|
|
13
|
+
* sidecar uses this map directly and does NOT consult any `lint.config.*`
|
|
14
|
+
* file (use `extends` for that). Combine with `plugins` to register
|
|
15
|
+
* contributor rule namespaces in the same entry.
|
|
16
|
+
*
|
|
17
|
+
* ```jsonc
|
|
18
|
+
* {
|
|
19
|
+
* "transform": "@ttsc/lint",
|
|
20
|
+
* "rules": { "no-var": "error", "prefer-const": "warning" }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
rules?: TtscLintRuleMap;
|
|
25
|
+
/**
|
|
26
|
+
* Path to a standalone lint config file whose rules should be applied to this
|
|
27
|
+
* project. Relative paths are resolved from the tsconfig directory. Accepts
|
|
28
|
+
* the usual `lint.config.*` / `ttsc-lint.config.*` / `eslint.config.*`
|
|
29
|
+
* extensions.
|
|
30
|
+
*
|
|
31
|
+
* Mirrors the `extends` field of an ESLint flat-config entry — "inherit this
|
|
32
|
+
* file's configuration".
|
|
33
|
+
*
|
|
34
|
+
* ```jsonc
|
|
35
|
+
* {
|
|
36
|
+
* "transform": "@ttsc/lint",
|
|
37
|
+
* "extends": "./lint.config.ts"
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* `rules` and `extends` are mutually exclusive on a single plugin entry; the
|
|
42
|
+
* sidecar surfaces a loud error when both are set.
|
|
43
|
+
*/
|
|
44
|
+
extends?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Contributor lint plugins to compile into the `@ttsc/lint` binary.
|
|
47
|
+
*
|
|
48
|
+
* Each entry maps a namespace (rule-name prefix) to an npm specifier or
|
|
49
|
+
* relative path. The factory resolves the package, reads its exported
|
|
50
|
+
* `ITtscLintPlugin` descriptor, and forwards the Go source directory to
|
|
51
|
+
* ttsc's plugin builder via the `contributors` field.
|
|
52
|
+
*
|
|
53
|
+
* ```jsonc
|
|
54
|
+
* {
|
|
55
|
+
* "transform": "@ttsc/lint",
|
|
56
|
+
* "plugins": { "demo": "ttsc-lint-plugin-demo" },
|
|
57
|
+
* "rules": { "demo/no-todo-comment": "error" }
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
plugins?: Record<string, string>;
|
|
62
|
+
/**
|
|
63
|
+
* Prettier-style flat configuration for the `format/*` rules. Sibling of
|
|
64
|
+
* `rules`. See {@link TtscLintFormatConfig} for the full surface.
|
|
65
|
+
*
|
|
66
|
+
* ```jsonc
|
|
67
|
+
* {
|
|
68
|
+
* "transform": "@ttsc/lint",
|
|
69
|
+
* "format": { "printWidth": 100, "singleQuote": true }
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* Combines with `rules` (per-rule overrides win on collision). Cannot be
|
|
74
|
+
* combined with `extends` on the same plugin entry — put format options
|
|
75
|
+
* inside the extends-target lint.config.ts instead.
|
|
76
|
+
*/
|
|
77
|
+
format?: TtscLintFormatConfig;
|
|
8
78
|
/**
|
|
9
79
|
* Inline rule map or path to a standalone lint config file.
|
|
10
80
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
81
|
+
* @deprecated Use `rules` for inline severity maps or `extends` for a config
|
|
82
|
+
* file path. The sidecar maps a legacy `config` entry onto the appropriate
|
|
83
|
+
* new field and emits a one-time stderr deprecation notice. Removed in a
|
|
84
|
+
* future minor.
|
|
85
|
+
*
|
|
86
|
+
* The legacy shape is intentionally narrower than `rules`/`extends`: a string
|
|
87
|
+
* (file path) or a flat rule-name → severity map. The Go-side parser only
|
|
88
|
+
* accepts those two shapes; widening the TS type to the new
|
|
89
|
+
* `TtscLintConfig` union would silently let `config: [{ rules: {...} }]`
|
|
90
|
+
* pass type-checking and fail at runtime.
|
|
14
91
|
*/
|
|
15
|
-
config?: string |
|
|
92
|
+
config?: string | TtscLintRuleMap;
|
|
16
93
|
/** Extra plugin-owned fields are passed through unchanged. */
|
|
17
94
|
[key: string]: unknown;
|
|
18
95
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Plugin-level metadata shared with the diagnostic surface. */
|
|
2
|
+
export interface ITtscLintPluginMeta {
|
|
3
|
+
/** Plugin package name as published on npm. */
|
|
4
|
+
name?: string;
|
|
5
|
+
/** Plugin package version. */
|
|
6
|
+
version?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Rule namespace prefix (e.g. "import" → "import/no-cycle"). When omitted,
|
|
9
|
+
* `@ttsc/lint` uses the key from the tsconfig `plugins` map.
|
|
10
|
+
*/
|
|
11
|
+
namespace?: string;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscLintPluginMeta.js","sourceRoot":"","sources":["../../src/structures/ITtscLintPluginMeta.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TtscLintPlugins } from "./TtscLintPlugins";
|
|
2
|
+
/**
|
|
3
|
+
* Builds the union of `${namespace}/${rule}` strings from a plugins map.
|
|
4
|
+
*
|
|
5
|
+
* Each plugin's `rules` tuple is read literally: an `as const` tuple
|
|
6
|
+
* (`["no-cycle", "order"] as const`) provides exact autocomplete, while a plain
|
|
7
|
+
* `string[]` collapses to `${namespace}/${string}` and disables rule-level typo
|
|
8
|
+
* detection for that namespace.
|
|
9
|
+
*/
|
|
10
|
+
export type PluginRuleNames<P extends TtscLintPlugins> = {
|
|
11
|
+
[Ns in keyof P]: P[Ns] extends {
|
|
12
|
+
rules?: infer R;
|
|
13
|
+
} ? R extends readonly (infer N)[] ? N extends string ? `${Ns & string}/${N}` : never : never : never;
|
|
14
|
+
}[keyof P];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginRuleNames.js","sourceRoot":"","sources":["../../src/structures/PluginRuleNames.ts"],"names":[],"mappings":""}
|
|
@@ -1,11 +1,27 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { TtscLintConfigEntry } from "./TtscLintConfigEntry";
|
|
2
|
+
import type { TtscLintPlugins } from "./TtscLintPlugins";
|
|
3
|
+
import type { TtscLintRuleMap } from "./TtscLintRuleMap";
|
|
3
4
|
/**
|
|
4
|
-
*
|
|
5
|
+
* Top-level config accepted by `@ttsc/lint`.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* Three accepted forms, listed in expected order of preference:
|
|
8
|
+
*
|
|
9
|
+
* 1. **Flat-config array** — mirrors ESLint flat config exactly. Each entry can
|
|
10
|
+
* scope by `files` / `ignores`, declare a `plugins` map of contributors,
|
|
11
|
+
* configure `rules`, and configure formatting through the Prettier-style
|
|
12
|
+
* {@link TtscLintFormatConfig | `format`} block. Multiple entries layer in
|
|
13
|
+
* order.
|
|
14
|
+
* 2. **Single config object** — same shape as one flat-config entry. Useful when
|
|
15
|
+
* the project has no per-file scoping. Pass `format: { … }` here for the
|
|
16
|
+
* smallest "describe my style" config.
|
|
17
|
+
* 3. **Rules-only map** — historical shape kept for backward compat with
|
|
18
|
+
* single-file projects. `{"no-var":"error"}` is interpreted as `[{rules:
|
|
19
|
+
* {"no-var":"error"}}]`. The shorthand intentionally has no slot for the
|
|
20
|
+
* `format` block — use form (1) or (2) to enable formatting.
|
|
21
|
+
*
|
|
22
|
+
* The generic parameter `P` lets `defineConfig` capture the literal plugin
|
|
23
|
+
* object types declared in `plugins`. When non-empty, rule-name keys
|
|
24
|
+
* autocomplete as `BuiltInRule | "<ns>/<rule>"` where the namespace-rule
|
|
25
|
+
* combinations come from each plugin's `rules` tuple.
|
|
8
26
|
*/
|
|
9
|
-
export type TtscLintConfig =
|
|
10
|
-
[P in TtscLintRule]?: TtscLintSeverity;
|
|
11
|
-
};
|
|
27
|
+
export type TtscLintConfig<P extends TtscLintPlugins = Record<string, never>> = TtscLintRuleMap<P> | TtscLintConfigEntry<P> | readonly TtscLintConfigEntry<P>[];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { TtscLintFormatConfig } from "./TtscLintFormatConfig";
|
|
2
|
+
import type { TtscLintPlugins } from "./TtscLintPlugins";
|
|
3
|
+
import type { TtscLintRuleMap } from "./TtscLintRuleMap";
|
|
4
|
+
/**
|
|
5
|
+
* One flat-config entry. ESLint-style `files` / `ignores` glob scoping, a
|
|
6
|
+
* `plugins` namespace map of contributor plugin objects, an `extends` list of
|
|
7
|
+
* child entries to fold in first, and a severity-keyed `rules` map applied
|
|
8
|
+
* after the extends chain.
|
|
9
|
+
*
|
|
10
|
+
* Prettier-style formatting opts in through a sibling `format` block — see
|
|
11
|
+
* `TtscLintFormatConfig`. The block can scope per-entry (e.g. wider
|
|
12
|
+
* `printWidth` for `legacy/**`) just like `rules` does.
|
|
13
|
+
*/
|
|
14
|
+
export interface TtscLintConfigEntry<P extends TtscLintPlugins = Record<string, never>> {
|
|
15
|
+
/** Globs that select the files this entry applies to. */
|
|
16
|
+
files?: string | readonly string[];
|
|
17
|
+
/** Globs that exclude files this entry would otherwise match. */
|
|
18
|
+
ignores?: string | readonly string[];
|
|
19
|
+
/**
|
|
20
|
+
* Nested entries (or arrays of entries) folded in before this entry's own
|
|
21
|
+
* rules apply. Mirrors ESLint flat config's `extends`: each child's rules
|
|
22
|
+
* layer first, with `this.rules` taking precedence on key collisions.
|
|
23
|
+
*/
|
|
24
|
+
extends?: TtscLintConfigEntry<P> | readonly TtscLintConfigEntry<P>[] | readonly (TtscLintConfigEntry<P> | readonly TtscLintConfigEntry<P>[])[];
|
|
25
|
+
/**
|
|
26
|
+
* Contributor plugin objects keyed by namespace. Each value is the default
|
|
27
|
+
* export of a `@ttsc/lint` contributor package (an `ITtscLintPlugin`).
|
|
28
|
+
*/
|
|
29
|
+
plugins?: P;
|
|
30
|
+
/** Rule-name → severity map. Supports severity tuples with options. */
|
|
31
|
+
rules?: TtscLintRuleMap<P>;
|
|
32
|
+
/**
|
|
33
|
+
* Prettier-style flat configuration for the `format/*` rules. Presence
|
|
34
|
+
* (even an empty `format: {}`) enables format-class rules at Prettier
|
|
35
|
+
* defaults; absence keeps them all off. Per-rule overrides go through
|
|
36
|
+
* the `rules` map — the `rules` entry wins on conflict.
|
|
37
|
+
*/
|
|
38
|
+
format?: TtscLintFormatConfig;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TtscLintConfigEntry.js","sourceRoot":"","sources":["../../src/structures/TtscLintConfigEntry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import type { TtscLintSeverity } from "./TtscLintSeverity";
|
|
2
|
+
/**
|
|
3
|
+
* Prettier-style flat configuration for the `format/*` rules.
|
|
4
|
+
*
|
|
5
|
+
* The `format` block is the recommended way to enable formatting in
|
|
6
|
+
* `@ttsc/lint`. Each key mirrors a Prettier option of the same name —
|
|
7
|
+
* users coming from a `.prettierrc` can copy their config almost
|
|
8
|
+
* verbatim. The block is opt-in by presence: a `lint.config.ts` with no
|
|
9
|
+
* `format` field keeps every format rule off, exactly as before.
|
|
10
|
+
*
|
|
11
|
+
* Once present, the block enables a curated set of format rules at
|
|
12
|
+
* Prettier-aligned defaults. Individual rules can be overridden or
|
|
13
|
+
* disabled through the `rules` map (the `rules` entry wins on conflict).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import type { TtscLintConfig } from "@ttsc/lint";
|
|
17
|
+
*
|
|
18
|
+
* export default {
|
|
19
|
+
* rules: { "no-var": "error" },
|
|
20
|
+
* format: {
|
|
21
|
+
* printWidth: 100,
|
|
22
|
+
* singleQuote: true,
|
|
23
|
+
* importOrder: ["<THIRD_PARTY_MODULES>", "^[./]"],
|
|
24
|
+
* },
|
|
25
|
+
* } satisfies TtscLintConfig;
|
|
26
|
+
*
|
|
27
|
+
* Deviations from Prettier:
|
|
28
|
+
* - `endOfLine` is restricted to `"lf"` and `"crlf"`. Prettier's
|
|
29
|
+
* `"cr"` and `"auto"` modes are intentionally unsupported — the
|
|
30
|
+
* printer does not auto-detect terminators.
|
|
31
|
+
* - Many Prettier knobs (`bracketSpacing`, `arrowParens`,
|
|
32
|
+
* `quoteProps`, JSX-specific switches) are not yet implemented.
|
|
33
|
+
* See `docs/14-prettier-migration.md` for the full gap list.
|
|
34
|
+
*
|
|
35
|
+
* Rule enablement matrix (when the `format` block is present):
|
|
36
|
+
*
|
|
37
|
+
* - `format/semi` — always on. `semi: false` flips it to `prefer:
|
|
38
|
+
* "never"`.
|
|
39
|
+
* - `format/quotes` — always on. `singleQuote: true` flips to
|
|
40
|
+
* `prefer: "single"`.
|
|
41
|
+
* - `format/trailing-comma` — always on. `trailingComma: "none"`
|
|
42
|
+
* disables the rule's edits without removing the surface.
|
|
43
|
+
* - `format/print-width` — always on, driven by `printWidth`,
|
|
44
|
+
* `tabWidth`, `useTabs`, `endOfLine`.
|
|
45
|
+
* - `format/sort-imports` — opt-in. Setting `importOrder` enables it.
|
|
46
|
+
* - `format/jsdoc` — opt-in. Setting `jsdoc` enables it.
|
|
47
|
+
*
|
|
48
|
+
* For per-rule severity overrides, drop a `rules` entry alongside:
|
|
49
|
+
*
|
|
50
|
+
* format: { semi: true, severity: "warning" },
|
|
51
|
+
* rules: { "format/semi": "error" },
|
|
52
|
+
*/
|
|
53
|
+
export interface TtscLintFormatConfig {
|
|
54
|
+
/**
|
|
55
|
+
* Severity for every format diagnostic emitted by `ttsc check`. The
|
|
56
|
+
* same vocabulary as the `rules` map (`"off" | "warn" | "warning" |
|
|
57
|
+
* "error"` plus numeric 0/1/2). `"off"` disables both the diagnostic
|
|
58
|
+
* and the `ttsc format` / `ttsc fix` rewrite for every format rule.
|
|
59
|
+
*
|
|
60
|
+
* @default "warning"
|
|
61
|
+
*/
|
|
62
|
+
severity?: TtscLintSeverity;
|
|
63
|
+
/**
|
|
64
|
+
* Insert trailing semicolons on ASI-terminated statements. Mirrors
|
|
65
|
+
* Prettier's `semi`. `false` flips the rule to require *no*
|
|
66
|
+
* trailing semicolon (rare; matches prettier's `semi: false`).
|
|
67
|
+
*
|
|
68
|
+
* @default true
|
|
69
|
+
*/
|
|
70
|
+
semi?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Prefer single-quoted strings. Mirrors Prettier's `singleQuote`.
|
|
73
|
+
* `false` means double quotes (Prettier's default).
|
|
74
|
+
*
|
|
75
|
+
* @default false
|
|
76
|
+
*/
|
|
77
|
+
singleQuote?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Trailing-comma policy. Mirrors Prettier's `trailingComma`. The
|
|
80
|
+
* `"none"` mode disables the rule's edits.
|
|
81
|
+
*
|
|
82
|
+
* @default "all"
|
|
83
|
+
*/
|
|
84
|
+
trailingComma?: "all" | "es5" | "none";
|
|
85
|
+
/**
|
|
86
|
+
* Maximum column width before broken-form layout is chosen.
|
|
87
|
+
* Mirrors Prettier's `printWidth`.
|
|
88
|
+
*
|
|
89
|
+
* @default 80
|
|
90
|
+
*/
|
|
91
|
+
printWidth?: number;
|
|
92
|
+
/**
|
|
93
|
+
* Indentation increment in columns. Mirrors Prettier's `tabWidth`.
|
|
94
|
+
*
|
|
95
|
+
* @default 2
|
|
96
|
+
*/
|
|
97
|
+
tabWidth?: number;
|
|
98
|
+
/**
|
|
99
|
+
* Emit indentation as tab characters. Mirrors Prettier's `useTabs`.
|
|
100
|
+
*
|
|
101
|
+
* @default false
|
|
102
|
+
*/
|
|
103
|
+
useTabs?: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Line terminator the printer emits on reflow. `@ttsc/lint`
|
|
106
|
+
* supports `"lf"` and `"crlf"`. Prettier's `"cr"` and `"auto"` are
|
|
107
|
+
* intentionally unsupported because the printer does not
|
|
108
|
+
* auto-detect line endings.
|
|
109
|
+
*
|
|
110
|
+
* @default "lf"
|
|
111
|
+
*/
|
|
112
|
+
endOfLine?: "lf" | "crlf";
|
|
113
|
+
/**
|
|
114
|
+
* Group order for `format/sort-imports`. Setting this enables the
|
|
115
|
+
* rule; mirrors `@trivago/prettier-plugin-sort-imports`'
|
|
116
|
+
* `importOrder`. The `<THIRD_PARTY_MODULES>` literal is the
|
|
117
|
+
* catch-all placeholder for specifiers that match no other group.
|
|
118
|
+
*/
|
|
119
|
+
importOrder?: readonly ("<THIRD_PARTY_MODULES>" | (string & {}))[];
|
|
120
|
+
/**
|
|
121
|
+
* Insert blank line between sort-imports groups.
|
|
122
|
+
*
|
|
123
|
+
* @default true
|
|
124
|
+
*/
|
|
125
|
+
importOrderSeparation?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Sort named import specifiers alphabetically within each
|
|
128
|
+
* declaration.
|
|
129
|
+
*
|
|
130
|
+
* @default true
|
|
131
|
+
*/
|
|
132
|
+
importOrderSortSpecifiers?: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Case-insensitive comparison for sort-imports.
|
|
135
|
+
*
|
|
136
|
+
* @default false
|
|
137
|
+
*/
|
|
138
|
+
importOrderCaseInsensitive?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Enable `format/jsdoc`. Pass `true` to turn it on with built-in
|
|
141
|
+
* defaults, or an object to customize:
|
|
142
|
+
*
|
|
143
|
+
* - `tagSynonyms` — extra `from → to` rewrites layered on the
|
|
144
|
+
* built-in synonym table.
|
|
145
|
+
* - `sortTags` — sort JSDoc tags into canonical order (reserved;
|
|
146
|
+
* today's MVP only rewrites tag names).
|
|
147
|
+
*
|
|
148
|
+
* @default false (off)
|
|
149
|
+
*/
|
|
150
|
+
jsdoc?: boolean | {
|
|
151
|
+
tagSynonyms?: Record<string, string>;
|
|
152
|
+
sortTags?: boolean;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TtscLintFormatConfig.js","sourceRoot":"","sources":["../../src/structures/TtscLintFormatConfig.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ITtscLintPlugin } from "./ITtscLintPlugin";
|
|
2
|
+
/**
|
|
3
|
+
* Map of contributor plugins, keyed by their namespace prefix.
|
|
4
|
+
*
|
|
5
|
+
* The key (e.g. `"import"`) is what `@ttsc/lint`'s rule-name union joins with
|
|
6
|
+
* each plugin's exported `rules` tuple (`"no-cycle"`) to produce the namespaced
|
|
7
|
+
* rule names a user writes in `rules` (`"import/no-cycle"`).
|
|
8
|
+
*/
|
|
9
|
+
export type TtscLintPlugins = Record<string, ITtscLintPlugin>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TtscLintPlugins.js","sourceRoot":"","sources":["../../src/structures/TtscLintPlugins.ts"],"names":[],"mappings":""}
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* names so a `compilerOptions.plugins[]` entry can configure native linting
|
|
6
6
|
* without introducing a separate lint config file.
|
|
7
7
|
*/
|
|
8
|
-
export type TtscLintRule = "adjacent-overload-signatures" | "array-type" | "ban-ts-comment" | "ban-tslint-comment" | "consistent-indexed-object-style" | "consistent-type-assertions" | "consistent-type-definitions" | "consistent-type-imports" | "dot-notation" | "eqeqeq" | "for-direction" | "no-alert" | "no-array-constructor" | "no-array-delete" | "no-async-promise-executor" | "no-bitwise" | "no-caller" | "no-case-declarations" | "no-class-assign" | "no-compare-neg-zero" | "no-cond-assign" | "no-confusing-non-null-assertion" | "no-console" | "no-constant-condition" | "no-continue" | "no-control-regex" | "no-debugger" | "no-delete-var" | "no-dupe-args" | "no-dupe-else-if" | "no-dupe-keys" | "no-duplicate-case" | "no-duplicate-enum-values" | "no-dynamic-delete" | "no-empty" | "no-empty-character-class" | "no-empty-function" | "no-empty-interface" | "no-empty-object-type" | "no-empty-pattern" | "no-empty-static-block" | "no-eq-null" | "no-eval" | "no-ex-assign" | "no-explicit-any" | "no-extra-bind" | "no-extra-boolean-cast" | "no-extra-non-null-assertion" | "no-fallthrough" | "no-func-assign" | "no-inferrable-types" | "no-inner-declarations" | "no-irregular-whitespace" | "no-iterator" | "no-labels" | "no-lone-blocks" | "no-lonely-if" | "no-loss-of-precision" | "no-misleading-character-class" | "no-misused-new" | "no-multi-assign" | "no-multi-str" | "no-namespace" | "no-negated-condition" | "no-nested-ternary" | "no-new" | "no-new-func" | "no-new-wrappers" | "no-non-null-asserted-nullish-coalescing" | "no-non-null-asserted-optional-chain" | "no-non-null-assertion" | "no-obj-calls" | "no-object-constructor" | "no-octal" | "no-octal-escape" | "no-plusplus" | "no-promise-executor-return" | "no-proto" | "no-prototype-builtins" | "no-regex-spaces" | "no-require-imports" | "no-return-assign" | "no-script-url" | "no-self-assign" | "no-self-compare" | "no-sequences" | "no-setter-return" | "no-shadow-restricted-names" | "no-sparse-arrays" | "no-template-curly-in-string" | "no-this-alias" | "no-throw-literal" | "no-undef-init" | "no-undefined" | "no-unnecessary-type-constraint" | "no-unneeded-ternary" | "no-unsafe-declaration-merging" | "no-unsafe-finally" | "no-unsafe-function-type" | "no-unsafe-negation" | "no-unused-expressions" | "no-unused-labels" | "no-useless-call" | "no-useless-catch" | "no-useless-computed-key" | "no-useless-concat" | "no-useless-constructor" | "no-useless-rename" | "no-var" | "no-with" | "no-wrapper-object-types" | "object-shorthand" | "operator-assignment" | "prefer-as-const" | "prefer-const" | "prefer-enum-initializers" | "prefer-exponentiation-operator" | "prefer-for-of" | "prefer-function-type" | "prefer-literal-enum-member" | "prefer-namespace-keyword" | "prefer-spread" | "prefer-template" | "radix" | "require-yield" | "triple-slash-reference" | "use-isnan" | "valid-typeof" | "vars-on-top" | "yoda";
|
|
8
|
+
export type TtscLintRule = "adjacent-overload-signatures" | "array-type" | "await-thenable" | "ban-ts-comment" | "ban-tslint-comment" | "consistent-indexed-object-style" | "consistent-type-assertions" | "consistent-type-definitions" | "consistent-type-imports" | "default-param-last" | "dot-notation" | "eqeqeq" | "for-direction" | "no-alert" | "no-array-constructor" | "no-array-delete" | "no-async-promise-executor" | "no-bitwise" | "no-caller" | "no-case-declarations" | "no-class-assign" | "no-compare-neg-zero" | "no-cond-assign" | "no-confusing-non-null-assertion" | "no-console" | "no-constant-condition" | "no-continue" | "no-control-regex" | "no-debugger" | "no-delete-var" | "no-dupe-args" | "no-dupe-else-if" | "no-dupe-keys" | "no-duplicate-case" | "no-duplicate-enum-values" | "no-dynamic-delete" | "no-empty" | "no-empty-character-class" | "no-empty-function" | "no-empty-interface" | "no-empty-object-type" | "no-empty-pattern" | "no-empty-static-block" | "no-eq-null" | "no-eval" | "no-ex-assign" | "no-explicit-any" | "no-extra-bind" | "no-extra-boolean-cast" | "no-extra-non-null-assertion" | "no-fallthrough" | "no-func-assign" | "no-import-type-side-effects" | "no-inferrable-types" | "no-inner-declarations" | "no-irregular-whitespace" | "no-iterator" | "no-labels" | "no-lone-blocks" | "no-lonely-if" | "no-loss-of-precision" | "no-misleading-character-class" | "no-misused-new" | "no-mixed-enums" | "no-multi-assign" | "no-multi-str" | "no-namespace" | "no-negated-condition" | "no-nested-ternary" | "no-new" | "no-new-func" | "no-new-wrappers" | "no-non-null-asserted-nullish-coalescing" | "no-non-null-asserted-optional-chain" | "no-non-null-assertion" | "no-obj-calls" | "no-object-constructor" | "no-octal" | "no-octal-escape" | "no-plusplus" | "no-promise-executor-return" | "no-proto" | "no-prototype-builtins" | "no-regex-spaces" | "no-require-imports" | "no-return-assign" | "no-script-url" | "no-self-assign" | "no-self-compare" | "no-sequences" | "no-setter-return" | "no-shadow-restricted-names" | "no-sparse-arrays" | "no-template-curly-in-string" | "no-this-alias" | "no-throw-literal" | "no-undef-init" | "no-undefined" | "no-unnecessary-type-constraint" | "no-unneeded-ternary" | "no-unsafe-declaration-merging" | "no-unsafe-finally" | "no-unsafe-function-type" | "no-unsafe-negation" | "no-unused-expressions" | "no-unused-labels" | "no-useless-call" | "no-useless-catch" | "no-useless-computed-key" | "no-useless-concat" | "no-useless-constructor" | "no-useless-escape" | "no-useless-rename" | "no-var" | "no-with" | "no-wrapper-object-types" | "object-shorthand" | "operator-assignment" | "prefer-as-const" | "prefer-const" | "prefer-enum-initializers" | "prefer-exponentiation-operator" | "prefer-for-of" | "prefer-function-type" | "prefer-literal-enum-member" | "prefer-namespace-keyword" | "prefer-spread" | "prefer-template" | "radix" | "require-yield" | "triple-slash-reference" | "use-isnan" | "valid-typeof" | "vars-on-top" | "yoda" | "format/semi" | "format/quotes" | "format/trailing-comma" | "format/sort-imports" | "format/jsdoc" | "format/print-width";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { TtscLintRuleOptionsMap } from "./TtscLintRuleOptions";
|
|
2
|
+
import type { TtscLintSeverity } from "./TtscLintSeverity";
|
|
3
|
+
/**
|
|
4
|
+
* One rule's configuration entry.
|
|
5
|
+
*
|
|
6
|
+
* Accepts either a bare severity literal or a `[severity, options]` tuple. The
|
|
7
|
+
* options slot's type is _picked per rule name_ via `TtscLintRuleOptionsMap` —
|
|
8
|
+
* so a user writing
|
|
9
|
+
*
|
|
10
|
+
* "format/sort-imports": ["error", { importOrder: [...] }]
|
|
11
|
+
*
|
|
12
|
+
* Inside `TtscLintRuleMap` gets exact autocomplete and typo detection on the
|
|
13
|
+
* options object. The rule name is the object key; the `[severity, options]`
|
|
14
|
+
* tuple is the value.
|
|
15
|
+
*
|
|
16
|
+
* Rules that do not appear in `TtscLintRuleOptionsMap` accept only the severity
|
|
17
|
+
* literal (or the bare `[severity]` tuple): the conditional arm collapses to
|
|
18
|
+
* `never`, removing the options-tuple branch from the union for those rules.
|
|
19
|
+
* This keeps `no-var` and friends from silently accepting unrecognized option
|
|
20
|
+
* blobs.
|
|
21
|
+
*/
|
|
22
|
+
export type TtscLintRuleEntry<R extends string = string> = TtscLintSeverity | readonly [TtscLintSeverity] | (R extends keyof TtscLintRuleOptionsMap ? readonly [TtscLintSeverity, TtscLintRuleOptionsMap[R]] : never);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TtscLintRuleEntry.js","sourceRoot":"","sources":["../../src/structures/TtscLintRuleEntry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { PluginRuleNames } from "./PluginRuleNames";
|
|
2
|
+
import type { TtscLintPlugins } from "./TtscLintPlugins";
|
|
3
|
+
import type { TtscLintRule } from "./TtscLintRule";
|
|
4
|
+
import type { TtscLintRuleOptionsMap } from "./TtscLintRuleOptions";
|
|
5
|
+
import type { TtscLintSeverity } from "./TtscLintSeverity";
|
|
6
|
+
/**
|
|
7
|
+
* Rule-name → severity or severity-tuple map.
|
|
8
|
+
*
|
|
9
|
+
* Built from two independent mapped types intersected together:
|
|
10
|
+
*
|
|
11
|
+
* - Rules listed in `TtscLintRuleOptionsMap` accept `severity`, `[severity]`, or
|
|
12
|
+
* `[severity, options]`, with the options type picked per rule key.
|
|
13
|
+
* - Every other built-in rule plus any contributor plugin rule accepts `severity`
|
|
14
|
+
* or `[severity]`.
|
|
15
|
+
*
|
|
16
|
+
* Splitting the two halves (instead of folding them into one mapped type with a
|
|
17
|
+
* conditional value) keeps TypeScript's contextual typing intact inside the
|
|
18
|
+
* options object literal: typing
|
|
19
|
+
*
|
|
20
|
+
* ```ts
|
|
21
|
+
* rules: {
|
|
22
|
+
* "format/sort-imports": ["warning", { importOrder: [...] }],
|
|
23
|
+
* "no-var": "error",
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* Yields exact autocomplete on `importOrder`, `importOrderSeparation`, etc.,
|
|
28
|
+
* while `no-var` rejects any tuple beyond a bare severity.
|
|
29
|
+
*
|
|
30
|
+
* The `(string & {})` widener is intentionally absent: typos in rule names
|
|
31
|
+
* produce a `TS2353` excess-property error when the literal is checked in
|
|
32
|
+
* isolation (e.g. one negative-case-per-const). When the literal also carries
|
|
33
|
+
* other shape-incompatible entries — e.g. `prefre` typo on `format/quotes` next
|
|
34
|
+
* to the rule-name typo — TS sometimes elides the rule-name error after
|
|
35
|
+
* reporting the option-key error first. The test at
|
|
36
|
+
* `tests/test-lint/.../test_lib_index_d_ts_rule_options_autocomplete_per_rule.ts`
|
|
37
|
+
* splits each negative case into its own const to keep every branch
|
|
38
|
+
* load-bearing.
|
|
39
|
+
*/
|
|
40
|
+
export type TtscLintRuleMap<P extends TtscLintPlugins = Record<string, never>> = {
|
|
41
|
+
[K in keyof TtscLintRuleOptionsMap]?: TtscLintSeverity | readonly [TtscLintSeverity] | readonly [TtscLintSeverity, TtscLintRuleOptionsMap[K]];
|
|
42
|
+
} & {
|
|
43
|
+
[K in Exclude<TtscLintRule | PluginRuleNames<P>, keyof TtscLintRuleOptionsMap>]?: TtscLintSeverity | readonly [TtscLintSeverity];
|
|
44
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TtscLintRuleMap.js","sourceRoot":"","sources":["../../src/structures/TtscLintRuleMap.ts"],"names":[],"mappings":""}
|