forked from web-infra-dev/rslint
-
-
Notifications
You must be signed in to change notification settings - Fork 0
chore: update rule-manifest.json [auto] #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## 🤖 Installing Claude Code GitHub App This PR adds a GitHub Actions workflow that enables Claude Code integration in our repository. ### What is Claude Code? [Claude Code](https://claude.com/claude-code) is an AI coding agent that can help with: - Bug fixes and improvements - Documentation updates - Implementing new features - Code reviews and suggestions - Writing tests - And more! ### How it works Once this PR is merged, we'll be able to interact with Claude by mentioning @claude in a pull request or issue comment. Once the workflow is triggered, Claude will analyze the comment and surrounding context, and execute on the request in a GitHub action. ### Important Notes - **This workflow won't take effect until this PR is merged** - **@claude mentions won't work until after the merge is complete** - The workflow runs automatically whenever Claude is mentioned in PR or issue comments - Claude gets access to the entire PR or issue context including files, diffs, and previous comments ### Security - Our Anthropic API key is securely stored as a GitHub Actions secret - Only users with write access to the repository can trigger the workflow - All Claude runs are stored in the GitHub Actions run history - Claude's default tools are limited to reading/writing files and interacting with our repo by creating comments, branches, and commits. - We can add more allowed tools by adding them to the workflow file like: ``` allowed_tools: Bash(npm install),Bash(npm run build),Bash(npm run lint),Bash(npm run test) ``` There's more information in the [Claude Code action repo](https://github.com/anthropics/claude-code-action). After merging this PR, let's try mentioning @claude in a comment on any PR to get started!
39d4f48 to
47996f2
Compare
47996f2 to
963bcca
Compare
## Summary This PR sets up the foundational infrastructure and build configuration necessary for the TypeScript ESTree port into rslint. **This contains only scaffolding and infrastructure - no actual parser implementation.** ### What's Included - ✅ **Module Structure**: New Go module at `internal/typescript-estree/` with organized packages - ✅ **Build Configuration**: Makefile targets, go.mod, and workspace updates - ✅ **Type Definitions**: ESTree-compliant base types and interfaces - ✅ **Test Infrastructure**: Working tests with parallel execution support - ✅ **CI/CD Integration**: Automatic inclusion in existing CI workflows - ✅ **Documentation**: Comprehensive README and setup guide ### Directory Structure ``` internal/typescript-estree/ ├── parser/ # Parsing logic (placeholder) ├── converter/ # AST conversion (placeholder) ├── types/ # ESTree type definitions ├── utils/ # Utility functions ├── testutils/ # Testing utilities ├── go.mod # Module dependencies └── README.md # Documentation ``` ### Verification All infrastructure is verified to work: ```bash # Tests pass $ go test ./internal/typescript-estree/... ok github.com/web-infra-dev/rslint/internal/typescript-estree/converter (cached) ok github.com/web-infra-dev/rslint/internal/typescript-estree/parser (cached) ok github.com/web-infra-dev/rslint/internal/typescript-estree/types (cached) ok github.com/web-infra-dev/rslint/internal/typescript-estree/utils (cached) # Module dependencies resolve $ cd internal/typescript-estree && go mod tidy # No errors ``` ### New Makefile Targets ```bash make test-typescript-estree # Run tests make test-coverage-typescript-estree # Run with coverage make lint-typescript-estree # Run linters ``` ### What's NOT Included - ❌ Parser implementation (pending) - ❌ Converter implementation (pending) - ❌ Comprehensive test coverage (pending) - ❌ JSX support (pending) This infrastructure must be merged first before any feature implementation work can begin. ## Test plan - [x] All tests pass: `go test ./internal/typescript-estree/...` - [x] Module builds successfully - [x] Dependencies resolve correctly - [x] Linting configuration works - [x] Documentation is complete ## Related Issues Part of the TypeScript ESTree porting effort for rslint. ## References - [TypeScript ESTree](https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/typescript-estree) - [ESTree Specification](https://github.com/estree/estree) - [TypeScript-Go](https://github.com/microsoft/typescript-go) - [Setup Documentation](TYPESCRIPT_ESTREE_SETUP.md) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
963bcca to
c471b7a
Compare
## Summary This PR implements TypeScript version compatibility checking, ported from [@typescript-eslint/typescript-estree](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-estree/src/version-check.ts)'s version-check.ts. ### What's Included - ✅ **Version Package**: New `internal/typescript-estree/version/` package with complete implementation - ✅ **Semantic Versioning**: Integration with Masterminds/semver for robust version parsing and comparison - ✅ **Version Detection**: Automatic TypeScript version detection and validation - ✅ **Compatibility Warnings**: Clear warnings for unsupported TypeScript versions - ✅ **Feature Flags**: `TypeScriptVersionIsAtLeast` map for version-dependent features - ✅ **Comprehensive Tests**: Full test coverage with 9 test suites, all passing - ✅ **Documentation**: Complete README and inline documentation ## Features ### 🔍 Version Detection - Parses TypeScript version strings (stable, RC, and beta releases) - Validates against a list of explicitly supported versions - Thread-safe initialization using `sync.Once` - Graceful handling of invalid version strings ### 📊 Version Comparison - Semantic version constraint checking - Support for pre-release versions (RC, beta) - Both map-based and function-based version checks - Dynamic version comparison for unlisted versions ### ✅ Supported Versions Currently supports TypeScript 4.7 through 5.7: ``` 4.7, 4.8, 4.9 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7 ``` ###⚠️ Warning System - Automatic warnings for unsupported TypeScript versions - One-time warning per program execution - Clear messaging with supported version list - Non-blocking warnings (graceful degradation) ## Implementation Details ### Core API ```go // Initialize version checking version.SetTypeScriptVersion("5.4.0") // Check version compatibility if version.IsVersionAtLeast("5.4") { // Use TypeScript 5.4+ features } // Get current version currentVersion := version.GetCurrentVersion() // Access pre-computed version map if version.TypeScriptVersionIsAtLeast["5.0"] { // TypeScript 5.0 features available } ``` ### Version Comparison Logic For a version check like `IsVersionAtLeast("5.4")`, the following constraint is evaluated: ``` >= 5.4.0 || >= 5.4.1-rc || >= 5.4.0-beta ``` This ensures compatibility with: - Stable releases (e.g., `5.4.0`, `5.4.5`) - Release candidates (e.g., `5.4.1-rc`) - Beta releases (e.g., `5.4.0-beta`) ## Testing All tests pass with excellent coverage: ```bash $ go test ./internal/typescript-estree/version/... -v === RUN TestSetTypeScriptVersion --- PASS: TestSetTypeScriptVersion (0.00s) === RUN TestIsVersionAtLeast --- PASS: TestIsVersionAtLeast (0.00s) === RUN TestTypeScriptVersionIsAtLeast --- PASS: TestTypeScriptVersionIsAtLeast (0.00s) === RUN TestGetCurrentVersion --- PASS: TestGetCurrentVersion (0.00s) === RUN TestGetSupportedVersions --- PASS: TestGetSupportedVersions (0.00s) === RUN TestSemverCheck --- PASS: TestSemverCheck (0.00s) === RUN TestIsVersionSupported --- PASS: TestIsVersionSupported (0.00s) === RUN TestResetVersionCheck --- PASS: TestResetVersionCheck (0.00s) === RUN TestConcurrentVersionCheck --- PASS: TestConcurrentVersionCheck (0.00s) PASS ok github.com/web-infra-dev/rslint/internal/typescript-estree/version ``` ### Test Coverage - ✅ Version string parsing (stable, RC, beta) - ✅ Semantic version comparison logic - ✅ Supported version detection - ✅ Pre-release version handling - ✅ Concurrent access safety - ✅ State reset (for testing) - ✅ Edge cases and error handling ## Files Changed ### New Files - `internal/typescript-estree/version/version.go` (170 lines) - Core version checking implementation - Version detection and comparison logic - Warning system - `internal/typescript-estree/version/version_test.go` (317 lines) - Comprehensive test suite - 9 test functions with multiple sub-tests - Concurrent access testing - `internal/typescript-estree/version/README.md` (283 lines) - Complete package documentation - Usage examples - API reference ### Modified Files - `internal/typescript-estree/README.md` - Updated project structure - Added version package description - `internal/typescript-estree/go.mod` - Added `github.com/Masterminds/semver/v3 v3.3.1` - `internal/typescript-estree/go.sum` - Updated with semver checksums ## Dependencies Added **Masterminds/semver v3.3.1** for semantic versioning: - Industry-standard Go semver library - Full semver 2.0.0 compliance - Constraint checking support - Pre-release version support ## Integration Path This version checking system will be integrated into the parser in future PRs: 1. **Parser Initialization**: Call `SetTypeScriptVersion()` with detected TS version 2. **Feature Detection**: Use `IsVersionAtLeast()` for conditional parsing logic 3. **Error Reporting**: Surface version warnings to users 4. **Testing**: Verify behavior across supported TypeScript versions ## Related Work - **Follows**: PR #3 (TypeScript ESTree infrastructure setup) - **Precedes**: Parser implementation (will use version flags) - **Implements**: Version checking from typescript-eslint/typescript-estree ## References - [Original version-check.ts](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-estree/src/version-check.ts) - [TypeScript Release Notes](https://www.typescriptlang.org/docs/handbook/release-notes/overview.html) - [Semantic Versioning 2.0.0](https://semver.org/) - [Masterminds/semver](https://github.com/Masterminds/semver) ## Test Plan - [x] All tests pass: `go test ./internal/typescript-estree/version/...` - [x] Module builds successfully - [x] Dependencies resolve correctly - [x] Documentation is complete and accurate - [x] Version comparison logic matches original TypeScript implementation - [x] Thread safety verified with concurrent test - [x] Warning system functions correctly ## Next Steps After this PR is merged: 1. Integrate version checking into parser initialization 2. Add version-specific parsing features 3. Create compatibility test suite across TS versions 4. Update parser to use version flags 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
… Go (#5) ## Summary This PR implements the complete type system for ESTree nodes in Go, porting all base ESTree node types and TypeScript-specific extensions (TSESTree types) from typescript-estree. **This builds upon the infrastructure established in #3.** ## Changes ### New Type Files - ✅ **positions.go** - Position, SourceLocation, Range types for source location tracking - ✅ **base.go** - Core Node interface, BaseNode implementation, and fundamental types - ✅ **expressions.go** - All expression node types (40+ types including ES5-ES2022) - ✅ **statements.go** - All statement and declaration types (30+ types) - ✅ **patterns.go** - Destructuring pattern types for ES2015+ - ✅ **typescript.go** - Complete TypeScript-specific node types (60+ types) - ✅ **tokens.go** - Token types, keywords, and punctuators - ✅ **README.md** - Comprehensive documentation for the type system ### Updated Files - ✅ **types_test.go** - Comprehensive unit tests covering: - Node interface implementation - JSON serialization/deserialization - All major node types (base, expressions, statements, patterns, TypeScript) - Token and comment types ### Removed Files - ❌ **types.go** - Replaced by the modular file structure ### Other Changes - 🔧 **go.work** - Removed non-existent typescript-go reference ## Type Coverage ### Base ESTree (ES5-ES2022) ✅ All expression types (literals, operators, functions, classes, etc.) ✅ All statement types (control flow, loops, declarations, modules, etc.) ✅ All pattern types (destructuring for ES2015+) ✅ Position and location types ✅ Token and comment types ### TypeScript Extensions (TSESTree) ✅ All type annotation types (primitives, complex types, etc.) ✅ All TypeScript declarations (interface, type alias, enum, module) ✅ All TypeScript expressions (as, satisfies, non-null assertion) ✅ Type parameters and instantiation ✅ Advanced types (conditional, mapped, indexed access, etc.) ## Technical Implementation - All types implement the `Node` interface - Marker interfaces for categorization (Statement, Expression, Declaration, Pattern, TSType) - Go struct embedding for type hierarchies - JSON struct tags for ESTree-compliant serialization - Comprehensive documentation comments for each type - Zero external dependencies beyond Go standard library ## File Organization The types are logically organized into separate files for maintainability: ``` internal/typescript-estree/types/ ├── positions.go # Source location types ├── base.go # Core interfaces and base types ├── expressions.go # Expression node types ├── statements.go # Statement and declaration types ├── patterns.go # Destructuring patterns ├── typescript.go # TypeScript-specific types ├── tokens.go # Token and keyword definitions ├── README.md # Package documentation └── types_test.go # Comprehensive tests ``` ## Testing All tests pass successfully: ```bash $ go test ./internal/typescript-estree/types/... ok github.com/web-infra-dev/rslint/internal/typescript-estree/types 0.003s ``` Tests cover: - ✅ Node interface implementation - ✅ JSON serialization/deserialization - ✅ Base node types (Program, Identifier, etc.) - ✅ Expression types (BinaryExpression, CallExpression, etc.) - ✅ Statement types (FunctionDeclaration, VariableDeclaration, etc.) - ✅ Pattern types (ArrayPattern, ObjectPattern, etc.) - ✅ TypeScript types (TSInterfaceDeclaration, TSTypeAnnotation, etc.) - ✅ Token and comment types ## Examples ### Creating Expression Nodes ```go // Binary expression: x + 42 left := &types.Identifier{ BaseNode: types.BaseNode{NodeType: "Identifier"}, Name: "x", } right := &types.SimpleLiteral{ BaseNode: types.BaseNode{NodeType: "Literal"}, Value: float64(42), Raw: "42", } binExpr := &types.BinaryExpression{ BaseNode: types.BaseNode{NodeType: "BinaryExpression"}, Operator: "+", Left: left, Right: right, } ``` ### TypeScript Interface Declaration ```go iface := &types.TSInterfaceDeclaration{ BaseNode: types.BaseNode{NodeType: "TSInterfaceDeclaration"}, ID: &types.Identifier{ BaseNode: types.BaseNode{NodeType: "Identifier"}, Name: "MyInterface", }, Body: &types.TSInterfaceBody{ BaseNode: types.BaseNode{NodeType: "TSInterfaceBody"}, Body: []types.Node{}, }, } ``` ## Documentation Each type includes comprehensive documentation comments explaining: - What the node represents - Which ECMAScript/TypeScript version introduced it - Example usage where appropriate - Field descriptions See the [types README](internal/typescript-estree/types/README.md) for complete documentation. ## References - [ESTree Specification](https://github.com/estree/estree) - [TypeScript-ESTree](https://github.com/typescript-eslint/typescript-eslint/tree/main/packages/typescript-estree) - [TypeScript-ESTree AST Spec](https://typescript-eslint.io/packages/typescript-estree/ast-spec/) - [@types/estree](https://www.npmjs.com/package/@types/estree) ## Related - Builds upon #3 (TypeScript ESTree infrastructure setup) - Part of the TypeScript ESTree porting effort for rslint ## Next Steps After this PR is merged, the next steps will be: 1. Implement the parser logic to generate these AST nodes 2. Implement the converter to transform TypeScript AST to ESTree format 3. Add comprehensive integration tests 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
c471b7a to
95ba33a
Compare
95ba33a to
5a09660
Compare
6 tasks
This was referenced Oct 24, 2025
This was referenced Oct 31, 2025
This was referenced Nov 8, 2025
4 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Auto-generated PR to update rule-manifest.json when rules change.