Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
87d878f
Restore canonical abbreviation replacement semantics
samchon Jul 14, 2026
b054128
Prevent replacement renames from capturing existing names
samchon Jul 14, 2026
72cb2f6
Prevent canonical renames from changing lexical or external meaning
samchon Jul 14, 2026
8f142f7
Keep canonical renames inside their true semantic scope
samchon Jul 14, 2026
21821fa
Preserve rename semantics across non-lexical syntax boundaries
samchon Jul 14, 2026
6675cfe
Prevent destructured var renames from merging bindings
samchon Jul 14, 2026
2d03921
Keep generated names valid across lexical boundaries
samchon Jul 14, 2026
c722ab4
Prevent generated renames from capturing deeper reads
samchon Jul 14, 2026
4bc4bc4
Keep physical filename checks faithful
samchon Jul 14, 2026
47705e8
Document export-safe rename boundaries precisely
samchon Jul 14, 2026
5f06d6e
Honor the canonical static require boundary
samchon Jul 14, 2026
45f42d6
Reject misspelled option keys exactly
samchon Jul 14, 2026
1af36fb
Enforce unique ignore patterns
samchon Jul 14, 2026
6ec22f1
Keep JSDoc parameters safe through TS wrappers
samchon Jul 14, 2026
e20cf41
Keep virtual filename tests platform neutral
samchon Jul 14, 2026
64f6f5d
Prevent invalid fixes for every JavaScript keyword
samchon Jul 14, 2026
6b92be0
Preserve canonical casing for uncased identifier prefixes
samchon Jul 14, 2026
6c48af8
Keep astral first-rune casing compatible with upstream
samchon Jul 14, 2026
72217cd
Match JavaScript full Unicode case conversion
samchon Jul 14, 2026
6919c1e
Lock class self-reference renames as one binding
samchon Jul 14, 2026
cc16816
Protect explicit export aliases during binding renames
samchon Jul 14, 2026
6a36296
Protect imported spellings in explicit aliases
samchon Jul 14, 2026
900fcae
Lock cross-file merged bindings against partial fixes
samchon Jul 14, 2026
9ef6215
Keep the lint module contract readable
samchon Jul 14, 2026
55c7907
Fail closed when declaration ownership is unknown
samchon Jul 14, 2026
d169dc3
Isolate Unicode casing from ambient global collisions
samchon Jul 14, 2026
a074b12
Lock astral upper-first classification
samchon Jul 14, 2026
26bcbb4
Preserve exported names during local abbreviation fixes
samchon Jul 14, 2026
883bc84
Keep custom renames inside strict binding grammar
samchon Jul 14, 2026
ea24b40
Lock negative option patches against regression
samchon Jul 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/lint/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -804,7 +804,7 @@ Source: [`eslint-plugin-promise`](https://github.com/eslint-community/eslint-plu

### Unicorn

Modernization and style rules spanning array iteration, string and regex idioms, Node.js APIs, error handling, module syntax, DOM APIs, and code shape. Rewrite legacy patterns into their modern counterparts (`for...of` over `forEach`, `Array#flatMap` over `map().flat()`, `String#replaceAll` over a global-regex `replace`, `Math.trunc` over `| 0`), forbid known anti-patterns (`null` literals, abusive `eslint-disable`, `new Buffer`, `process.exit`, `instanceof Array`), and pin a consistent style for things [ESLint core](#eslint-core) and [TypeScript](#typescript) leave underspecified (filename case, numeric separators, catch-binding names, expiring TODOs, escape-sequence case, switch-case braces). Pure-AST; no checker dependencies.
Modernization and style rules spanning array iteration, string and regex idioms, Node.js APIs, error handling, module syntax, DOM APIs, and code shape. Rewrite legacy patterns into their modern counterparts (`for...of` over `forEach`, `Array#flatMap` over `map().flat()`, `String#replaceAll` over a global-regex `replace`, `Math.trunc` over `| 0`), forbid known anti-patterns (`null` literals, abusive `eslint-disable`, `new Buffer`, `process.exit`, `instanceof Array`), and pin a consistent style for things [ESLint core](#eslint-core) and [TypeScript](#typescript) leave underspecified (filename case, numeric separators, catch-binding names, expiring TODOs, escape-sequence case, switch-case braces). Most rules are pure AST checks; binding-aware rules use the TypeScript checker when lexical identity is part of the contract.

Source: [`eslint-plugin-unicorn`](https://github.com/sindresorhus/eslint-plugin-unicorn).

Expand Down Expand Up @@ -941,7 +941,7 @@ Source: [`eslint-plugin-unicorn`](https://github.com/sindresorhus/eslint-plugin-
- [`unicorn/prefer-ternary`](https://github.com/samchon/ttsc/blob/master/tests/test-lint/src/cases/unicorn-prefer-ternary.ts): prefer a ternary over `if` / `else` whose two branches differ only in the right-hand side of a common assignment, `return`, or `throw`.
- [`unicorn/prefer-top-level-await`](https://github.com/samchon/ttsc/blob/master/tests/test-lint/src/cases/unicorn-prefer-top-level-await.ts): prefer top-level `await` over `.then` / IIFE wrappers in ES modules.
- [`unicorn/prefer-type-error`](https://github.com/samchon/ttsc/blob/master/tests/test-lint/src/cases/unicorn-prefer-type-error.ts): require throwing `TypeError` (not a bare `Error`) when the surrounding `if` is a runtime type check.
- [`unicorn/prevent-abbreviations`](https://github.com/samchon/ttsc/blob/master/tests/test-lint/src/cases/unicorn-prevent-abbreviations.ts): reject common identifier abbreviations (`btn`, `arr`, `idx`) and replace them with their long forms.
- [`unicorn/prevent-abbreviations`](https://github.com/samchon/ttsc/blob/master/tests/test-lint/src/cases/unicorn-prevent-abbreviations.ts): apply the canonical word-replacement table to bindings, compound names, opt-in property checks, and filenames. This compatibility ID retains the final upstream behavior from before the rule was renamed to `name-replacements`.
- [`unicorn/relative-url-style`](https://github.com/samchon/ttsc/blob/master/tests/test-lint/src/cases/unicorn-relative-url-style.ts): enforce a single style (always leading `./` vs. never) for relative URLs passed to `new URL`.
- [`unicorn/require-array-join-separator`](https://github.com/samchon/ttsc/blob/master/tests/test-lint/src/cases/unicorn-require-array-join-separator.ts): require an explicit separator argument to `Array#join` instead of relying on the default `","`.
- [`unicorn/require-module-attributes`](https://github.com/samchon/ttsc/blob/master/tests/test-lint/src/cases/unicorn-require-module-attributes.ts): require non-empty `with` / `assert` options on `import` / `export` statements that use them at all.
Expand Down
9 changes: 5 additions & 4 deletions packages/lint/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ module github.com/samchon/ttsc/packages/lint

go 1.26

// The plugin depends only on the `microsoft/typescript-go/shim/*`
// modules so that `go mod tidy` works against the public proxy. The
// bootstrap glue (Program creation, diagnostic rendering, emit) is
// The plugin's TypeScript integration depends only on the
// `microsoft/typescript-go/shim/*` modules so that `go mod tidy` works against
// the public proxy. The bootstrap glue (Program creation, diagnostic
// rendering, emit) is
// inlined under ./plugin/host.go to avoid a transitive dependency on the
// in-tree `github.com/samchon/ttsc/packages/ttsc` module — that module
// has no public version tag and would only resolve through ttsc's
Expand All @@ -25,6 +26,7 @@ require (
github.com/microsoft/typescript-go/shim/vfs v0.0.0
github.com/microsoft/typescript-go/shim/vfs/cachedvfs v0.0.0
github.com/microsoft/typescript-go/shim/vfs/osvfs v0.0.0
golang.org/x/text v0.35.0
)

require (
Expand All @@ -34,5 +36,4 @@ require (
github.com/zeebo/xxh3 v1.1.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/sys v0.42.0 // indirect
golang.org/x/text v0.35.0 // indirect
)
Loading
Loading