Skip to content

Commit badaf1b

Browse files
committed
refactor(project): restructure codebase and add native AST types 🚧
- Add deno native plugins AST type definitions - Bump version to 0.2.0 for major structural changes - Centralize shared logic into dedicated utils directory - Migrate from shared to interfaces directory structure - Rename rule files from kebab-case to PascalCase convention - Rename test files to match PascalCase naming convention - Update import paths and entry point configuration
1 parent 77b46ad commit badaf1b

140 files changed

Lines changed: 3398 additions & 1198 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

deno.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "@neabyte/deno-lint",
33
"description": "Deno lint plugin collection for identifying and reporting on patterns found in code",
4-
"version": "0.1.0",
4+
"version": "0.2.0",
55
"type": "module",
66
"license": "MIT",
7-
"exports": "./src/mod.ts",
7+
"exports": "./src/index.ts",
88
"compilerOptions": {
99
"allowUnreachableCode": false,
1010
"allowUnusedLabels": false,
@@ -83,8 +83,9 @@
8383
"imports": {
8484
"@std/assert": "jsr:@std/assert@^1.0.15",
8585
"@app/": "./src/",
86-
"@shared/": "./src/shared/",
86+
"@interfaces/": "./src/interfaces/",
8787
"@rules/": "./src/rules/",
88+
"@utils/": "./src/utils/",
8889
"@tests/": "./tests/"
8990
},
9091
"publish": {

src/mod.ts renamed to src/index.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import type { LintPlugin } from '@app/types.ts'
2-
import { asyncFunctionNamingRule } from '@rules/async-function-naming.ts'
3-
import { explicitParameterTypesRule } from '@rules/explicit-parameter-types.ts'
4-
import { explicitReturnTypesRule } from '@rules/explicit-return-types.ts'
5-
import { preferNullishCoalescingRule } from '@rules/prefer-nullish-coalescing.ts'
6-
import { preferOptionalChainRule } from '@rules/prefer-optional-chain.ts'
7-
import { preferPromiseRejectErrorsRule } from '@rules/prefer-promise-reject-errors.ts'
8-
import { requireErrorHandlingRule } from '@rules/require-error-handling.ts'
1+
import type { LintPlugin } from '@interfaces/index.ts'
2+
import { asyncFunctionNamingRule } from '@rules/AsyncFunctionNaming.ts'
3+
import { explicitParameterTypesRule } from '@rules/ExplicitParameterTypes.ts'
4+
import { explicitReturnTypesRule } from '@rules/ExplicitReturnTypes.ts'
5+
import { preferNullishCoalescingRule } from '@rules/PreferNullishCoalescing.ts'
6+
import { preferOptionalChainRule } from '@rules/PreferOptionalChain.ts'
7+
import { preferPromiseRejectErrorsRule } from '@rules/PreferPromiseRejectErrors.ts'
8+
import { requireErrorHandlingRule } from '@rules/RequireErrorHandling.ts'
99

1010
/**
1111
* Deno lint plugin containing custom linting rules.

src/interfaces/ArrayExpression.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { ASTNode } from '@interfaces/index.ts'
2+
3+
/**
4+
* AST node representing an array literal.
5+
*/
6+
export interface ArrayExpressionNode {
7+
/** Type identifier for array expressions */
8+
type: 'ArrayExpression'
9+
/** Array of elements in the array */
10+
elements: Array<ASTNode | null>
11+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import type { ASTNode, ParameterNode } from '@interfaces/index.ts'
2+
3+
/**
4+
* AST node representing an arrow function expression.
5+
*/
6+
export interface ArrowFunctionExpressionNode {
7+
/** Type identifier for arrow function expressions */
8+
type: 'ArrowFunctionExpression'
9+
/** Optional function identifier with name */
10+
id?: { name: string }
11+
/** Whether the function is declared as async */
12+
async?: boolean
13+
/** Array of function parameters */
14+
params: Array<ParameterNode>
15+
/** Function body */
16+
body: ASTNode
17+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import type { ASTNode } from '@interfaces/index.ts'
2+
3+
/**
4+
* AST node representing an assignment expression.
5+
*/
6+
export interface AssignmentExpressionNode {
7+
/** Type identifier for assignment expressions */
8+
type: 'AssignmentExpression'
9+
/** Source code range */
10+
range: [number, number]
11+
/** Assignment operator */
12+
operator:
13+
| '='
14+
| '+='
15+
| '-='
16+
| '*='
17+
| '/='
18+
| '%='
19+
| '**='
20+
| '<<='
21+
| '>>='
22+
| '>>>='
23+
| '&='
24+
| '^='
25+
| '|='
26+
/** Left side of the assignment */
27+
left: ASTNode
28+
/** Right side of the assignment */
29+
right: ASTNode
30+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import type { ASTNode } from '@interfaces/index.ts'
2+
3+
/**
4+
* AST node representing an assignment pattern in destructuring.
5+
*/
6+
export interface AssignmentPatternNode {
7+
/** Type identifier for assignment patterns */
8+
type: 'AssignmentPattern'
9+
/** Source code range */
10+
range: [number, number]
11+
/** Left side of the assignment pattern */
12+
left: ASTNode
13+
/** Right side of the assignment pattern */
14+
right: ASTNode
15+
}

src/interfaces/AwaitExpression.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { ASTNode } from '@interfaces/index.ts'
2+
3+
/**
4+
* AST node representing an await expression.
5+
*/
6+
export interface AwaitExpressionNode {
7+
/** Type identifier for await expressions */
8+
type: 'AwaitExpression'
9+
/** Expression being awaited */
10+
argument: ASTNode
11+
}

src/interfaces/BinaryExpression.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import type { ASTNode } from '@interfaces/index.ts'
2+
3+
/**
4+
* AST node representing a binary expression.
5+
*/
6+
export interface BinaryExpressionNode {
7+
/** Type identifier for binary expressions */
8+
type: 'BinaryExpression'
9+
/** Source code range */
10+
range: [number, number]
11+
/** Binary operator */
12+
operator:
13+
| '+'
14+
| '-'
15+
| '*'
16+
| '/'
17+
| '%'
18+
| '**'
19+
| '=='
20+
| '!='
21+
| '==='
22+
| '!=='
23+
| '<'
24+
| '<='
25+
| '>'
26+
| '>='
27+
| '<<'
28+
| '>>'
29+
| '>>>'
30+
| '&'
31+
| '^'
32+
| '|'
33+
| '&&'
34+
| '||'
35+
| '??'
36+
/** Left side of the expression */
37+
left: ASTNode
38+
/** Right side of the expression */
39+
right: ASTNode
40+
}

src/interfaces/BlockStatement.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { ASTNode } from '@interfaces/index.ts'
2+
3+
/**
4+
* AST node representing a block statement (code block).
5+
*/
6+
export interface BlockStatementNode {
7+
/** Type identifier for block statements */
8+
type: 'BlockStatement'
9+
/** Array of statements in the block */
10+
body: Array<ASTNode>
11+
}

src/interfaces/BreakStatement.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import type { IdentifierNode } from '@interfaces/index.ts'
2+
3+
/**
4+
* AST node representing a break statement.
5+
*/
6+
export interface BreakStatementNode {
7+
/** Type identifier for break statements */
8+
type: 'BreakStatement'
9+
/** Source code range */
10+
range: [number, number]
11+
/** Optional label */
12+
label?: IdentifierNode
13+
}

0 commit comments

Comments
 (0)