Skip to content

Commit cc50781

Browse files
committed
Merge branch 'release/v0.17.0' (Pull Request #177)
2 parents 01eb30e + fd8e784 commit cc50781

File tree

405 files changed

+10930
-11488
lines changed

Some content is hidden

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

405 files changed

+10930
-11488
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

.github/workflows/release.yaml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Publish Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
permissions:
9+
id-token: write
10+
contents: read
11+
12+
jobs:
13+
release:
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- uses: actions/checkout@v6
18+
19+
- uses: actions/setup-node@v6
20+
with:
21+
registry-url: "https://registry.npmjs.org"
22+
node-version: "25.x"
23+
24+
- uses: pnpm/action-setup@v4
25+
with:
26+
cache: true
27+
28+
- run: pnpm install --frozen-lockfile
29+
- run: pnpm publish

.github/workflows/test.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Lint & Test
2+
3+
on: [push]
4+
5+
jobs:
6+
lint-and-test:
7+
runs-on: ubuntu-latest
8+
9+
strategy:
10+
matrix:
11+
node-version: ["20.9", "21.x", "22.x", "24.x"]
12+
13+
steps:
14+
- uses: actions/checkout@v6
15+
16+
- uses: actions/setup-node@v6
17+
with:
18+
node-version: ${{ matrix.node-version }}
19+
20+
- uses: pnpm/action-setup@v4
21+
22+
- run: pnpm install --frozen-lockfile
23+
24+
- run: pnpm lint
25+
- run: pnpm test

.gitignore

Lines changed: 147 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,148 @@
1-
node_modules
2-
coverage
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
lerna-debug.log*
8+
9+
# Mac OS
310
.DS_Store
4-
docs/.vitepress/dist
5-
docs/**/__*.md
6-
docs/changelog.md
7-
docs/.vitepress/cache
11+
12+
# Diagnostic reports (https://nodejs.org/api/report.html)
13+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
14+
15+
# Runtime data
16+
pids
17+
*.pid
18+
*.seed
19+
*.pid.lock
20+
21+
# Directory for instrumented libs generated by jscoverage/JSCover
22+
lib-cov
23+
24+
# Coverage directory used by tools like istanbul
25+
coverage
26+
*.lcov
27+
28+
# nyc test coverage
29+
.nyc_output
30+
31+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
32+
.grunt
33+
34+
# Bower dependency directory (https://bower.io/)
35+
bower_components
36+
37+
# node-waf configuration
38+
.lock-wscript
39+
40+
# Compiled binary addons (https://nodejs.org/api/addons.html)
41+
build/Release
42+
43+
# Dependency directories
44+
node_modules/
45+
jspm_packages/
46+
47+
# Snowpack dependency directory (https://snowpack.dev/)
48+
web_modules/
49+
50+
# TypeScript cache
51+
*.tsbuildinfo
52+
53+
# Optional npm cache directory
54+
.npm
55+
56+
# Optional eslint cache
57+
.eslintcache
58+
59+
# Optional stylelint cache
60+
.stylelintcache
61+
62+
# Optional REPL history
63+
.node_repl_history
64+
65+
# Output of 'npm pack'
66+
*.tgz
67+
68+
# Yarn Integrity file
69+
.yarn-integrity
70+
71+
# dotenv environment variable files
72+
.env
73+
.env.*
74+
!.env.example
75+
76+
# parcel-bundler cache (https://parceljs.org/)
77+
.cache
78+
.parcel-cache
79+
80+
# Next.js build output
81+
.next
82+
out
83+
84+
# Nuxt.js build / generate output
85+
.nuxt
86+
dist
87+
.output
88+
89+
# Gatsby files
90+
.cache/
91+
# Comment in the public line in if your project uses Gatsby and not Next.js
92+
# https://nextjs.org/blog/next-9-1#public-directory-support
93+
# public
94+
95+
# vuepress build output
96+
.vuepress/dist
97+
98+
# vuepress v2.x temp and cache directory
99+
.temp
100+
.cache
101+
102+
# Sveltekit cache directory
103+
.svelte-kit/
104+
105+
# vitepress build output
106+
**/.vitepress/dist
107+
108+
# vitepress cache directory
109+
**/.vitepress/cache
110+
111+
# Docusaurus cache and generated files
112+
.docusaurus
113+
114+
# Serverless directories
115+
.serverless/
116+
117+
# FuseBox cache
118+
.fusebox/
119+
120+
# DynamoDB Local files
121+
.dynamodb/
122+
123+
# Firebase cache directory
124+
.firebase/
125+
126+
# TernJS port file
127+
.tern-port
128+
129+
# Stores VSCode versions used for testing VSCode extensions
130+
.vscode-test
131+
132+
# yarn v3
133+
.pnp.*
134+
.yarn/*
135+
!.yarn/patches
136+
!.yarn/plugins
137+
!.yarn/releases
138+
!.yarn/sdks
139+
!.yarn/versions
140+
141+
# Vite files
142+
vite.config.js.timestamp-*
143+
vite.config.ts.timestamp-*
144+
.vite/
145+
146+
# Vitepress
147+
.vitepress/dist
148+
.vitepress/cache

.npmignore

Lines changed: 0 additions & 8 deletions
This file was deleted.

.nvmrc

Lines changed: 0 additions & 1 deletion
This file was deleted.

.prettierrc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"semi": false,
3+
"quoteProps": "consistent",
4+
"singleQuote": false,
5+
"printWidth": 120,
6+
7+
"plugins": ["prettier-plugin-embed"]
8+
}

CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
# Changelog
22

3+
## v0.17.0
4+
5+
### Breaking Changes
6+
7+
- Minimum Node.js version is now `^20.9.0 || >=21.1.0` (matches ESLint requirements)
8+
- Supports ESLint `^8.57.0 || ^9.0.0`
9+
- Codebase rewritten in TypeScript; 19 of 20 existing + 1 new rule (re)implemented using modern `@typescript-eslint` APIs
10+
- Now requires type-aware linting with `@typescript-eslint`
11+
12+
### Core Changes
13+
14+
- Native ESLint v9 flat config support via `flatConfigs` (ESLint v8 `.eslintrc` still supported)
15+
- Public TypeScript type definitions (passes `publint` & `attw`)
16+
17+
### Rule Changes
18+
19+
- `no-forward` promoted from `future` to `recommended` preset
20+
- `no-guard` promoted from `future` to `recommended` preset
21+
- `no-domain-unit-creators` added to `future` preset (new rule)
22+
- `prefer-sample-over-forward-with-mapping` removed in favor of `no-forward`
23+
- `enforce-effect-naming-convention` now handles `combine + fn` correctly
24+
25+
### Internal
26+
27+
- Added bundling via `tsdown`
28+
- Replaced Jest with Vitest v4; switched to `@typescript-eslint/rule-tester`
29+
- Documentation upgraded to VitePress v2 with colocated markdown rule documentation
30+
- Fixed `package.json` dependency declarations
31+
332
## v0.16.0
433

534
- Support typescript-eslint@8 ([PR #180](https://github.com/effector/eslint-plugin/pull/170/files)) by @7rulnik

README.md

Lines changed: 24 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,42 @@
1-
# eslint-plugin-effector
1+
<h1 align="center">eslint-plugin-effector</h1>
22

3-
Enforcing best practices for [Effector](http://effector.dev/). Documentation available at [eslint.effector.dev](https://eslint.effector.dev/).
3+
An ESLint plugin for enforcing best practices for [Effector](https://effector.dev).
44

5-
> This plugin uses TypeScript for more precise results, but JavaScript is supported too.
5+
For comprehensive documentation, including rules and configuration guides, visit official documentation at [eslint.effector.dev](https://eslint.effector.dev).
66

77
## Installation
88

9-
Install [ESLint](http://eslint.org) and `eslint-plugin-effector`:
9+
First, install [ESLint](https://eslint.org) and the plugin:
1010

11-
### pnpm
11+
```bash
12+
# pnpm
13+
pnpm add --save-dev eslint eslint-plugin-effector
1214

13-
```
14-
$ pnpm install --dev eslint
15-
$ pnpm install --dev eslint-plugin-effector
16-
```
17-
18-
### yarn
15+
# yarn
16+
yarn add --dev eslint eslint-plugin-effector
1917

20-
```
21-
$ yarn add --dev eslint
22-
$ yarn add --dev eslint-plugin-effector
18+
# npm
19+
npm install --save-dev eslint eslint-plugin-effector
2320
```
2421

25-
### npm
22+
## Usage
2623

27-
```
28-
$ npm install --dev eslint
29-
$ npm install --dev eslint-plugin-effector
30-
```
24+
This plugin supports the new [flat config format](https://eslint.org/docs/latest/use/configure/configuration-files) for ESLint. Start by adding the `recommended` preset to your `eslint.config.js`:
3125

32-
## Usage
26+
```js
27+
// eslint.config.js
28+
import effector from "eslint-plugin-effector"
3329

34-
Add `effector` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:
30+
export default [
31+
/* ... */
3532

36-
```json
37-
{
38-
"plugins": ["effector"],
39-
"extends": ["plugin:effector/recommended", "plugin:effector/scope"]
40-
}
33+
// Include the recommended preset:
34+
effector.flatConfigs.recommended,
35+
]
4136
```
4237

43-
Read more detailed docs on [eslint.effector.dev](https://eslint.effector.dev/)
44-
45-
## Maintenance
38+
To explore all available presets, refer to the [Rules](https://eslint.effector.dev/rules/) section of the documentation. For more details or legacy config usage, see the [Installation](https://eslint.effector.dev/installation/) section.
4639

47-
### Release flow
40+
### TypeScript Requirement
4841

49-
1. Bump `version` in [package.json](package.json)
50-
2. Fill [CHANGELOG.md](CHANGELOG.md)
51-
3. Commit changes by `git commit -m "Release X.X.X"`
52-
4. Create git tag for release by `git tag -a vX.X.X -m "vX.X.X"`
53-
5. Push changes to remote by `git push --follow-tags`
54-
6. Release package to registry by `pnpm clean-publish`
55-
7. Fill release page with changelog on GitHub
42+
This plugin leverages TypeScript for accurate linting. You must have TypeScript and type-aware linting configured. For setup instructions, please see the [official `typescript-eslint` documentation](https://typescript-eslint.io/getting-started/typed-linting/).

config/future.js

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)