@4mbl/lint 0.0.0-beta.00cfefd

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/CHANGELOG.md ADDED
@@ -0,0 +1,45 @@
1
+ # @4mbl/lint
2
+
3
+ ## 0.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - df1c48b: Re-export eslint Config type from react template
8
+
9
+ ## 0.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - d17fc69: Fix react template export
14
+
15
+ ## 0.3.0
16
+
17
+ ### Minor Changes
18
+
19
+ - 6d969e6: Add react template
20
+ - 6d969e6: Upgrade eslint and config dependencies
21
+
22
+ ## 0.2.1
23
+
24
+ ### Patch Changes
25
+
26
+ - 3a223fe: Use flat config version of eslint-plugin-react-hooks
27
+
28
+ ## 0.2.0
29
+
30
+ ### Minor Changes
31
+
32
+ - c4e49f3: Add eslint-plugin-react-hooks
33
+ - c4e49f3: Add eslint-config-prettier
34
+
35
+ ## 0.1.1
36
+
37
+ ### Patch Changes
38
+
39
+ - 2c91355: Move dependencies not to be dev-only
40
+
41
+ ## 0.1.0
42
+
43
+ ### Minor Changes
44
+
45
+ - 66bbf26: Initial release
package/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # @4mbl/lint
2
+
3
+ > Linting configuration for various environments.
4
+
5
+ * [Usage](#usage)
6
+ * [Available templates](#available-templates)
7
+ * [Versioning](#versioning)
8
+
9
+ ---
10
+
11
+ ## Usage
12
+
13
+ Install the [`@4mbl/lint`](https://www.npmjs.com/package/@4mbl/lint) package.
14
+
15
+ ```shell
16
+ npm install -D @4mbl/lint
17
+ ```
18
+
19
+ Create a `eslint.config.ts` file in the root of your project with the desired configuration. This package currently uses eslint. That might change in a future major release.
20
+
21
+ ```js
22
+ import defaultConfig, { type Config } from '@4mbl/lint/next'; // <-- change `next` to the desired template
23
+
24
+ export default [...defaultConfig] satisfies Config[];
25
+ ```
26
+
27
+ Set a script that uses the linting package.
28
+
29
+ ```shell
30
+ npm pkg set scripts.lint="eslint src"
31
+ ```
32
+
33
+ You may need to explicitly allow the underlying linting packages to be used by your scripts.
34
+
35
+ For example, when using pnpm, you need to set `publicHoistPattern` in your `pnpm-workspace.yaml` for ESLint.
36
+
37
+ ```yaml
38
+ publicHoistPattern:
39
+ - eslint
40
+ ```
41
+
42
+ ## Available templates
43
+
44
+ There is currently one config template.
45
+
46
+ - **Next** - Extending the Next.js linting config.
47
+ - **Node** - Linting configuration for Node.js.
48
+ - **React** - Extending the Vite-React linting config.
49
+
50
+ ## Versioning
51
+
52
+ _Until v1.0.0 is released, breaking changes may be introduced in minor releases without prior warnings._
53
+
54
+ The package follows the following versioning scheme: `X.Y.Z`.
55
+
56
+ - `X` - Reserved for linting provider changes as those might cause wider backwards compatibility issues.
57
+ - `Y` - New linting rules. New rules are first added as warnings, and if error is preferred, the rule is promoted to produce errors in the next minor release.
58
+ - `Z` - Minor fixes that make the previous release unusable.
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@4mbl/lint",
3
+ "version": "0.0.0-beta.00cfefd",
4
+ "description": "Linting configuration for various environments.",
5
+ "type": "module",
6
+ "author": "4mbl",
7
+ "license": "MIT",
8
+ "homepage": "https://github.com/4mbl/config/tree/main/packages/lint#readme",
9
+ "exports": {
10
+ "./next": "./src/next.ts",
11
+ "./node": "./src/node.ts",
12
+ "./react": "./src/react.ts"
13
+ },
14
+ "files": [
15
+ "src",
16
+ "package.json",
17
+ "README.md",
18
+ "CHANGELOG.md"
19
+ ],
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/4mbl/config.git",
23
+ "directory": "packages/lint"
24
+ },
25
+ "keywords": [
26
+ "lint"
27
+ ],
28
+ "dependencies": {
29
+ "@eslint/js": "^9.39.1",
30
+ "eslint": "^9.39.1",
31
+ "eslint-config-next": "^16.0.3",
32
+ "eslint-config-prettier": "^10.1.8",
33
+ "eslint-plugin-react-compiler": "19.1.0-rc.2",
34
+ "eslint-plugin-react-hooks": "^7.0.1",
35
+ "eslint-plugin-react-refresh": "^0.4.24",
36
+ "globals": "^16.5.0",
37
+ "jiti": "^2.6.1",
38
+ "typescript-eslint": "^8.47.0"
39
+ },
40
+ "scripts": {}
41
+ }
package/src/next.ts ADDED
@@ -0,0 +1,34 @@
1
+ // @ts-nocheck
2
+ import js from '@eslint/js';
3
+ import nextVitals from 'eslint-config-next/core-web-vitals';
4
+ import nextTs from 'eslint-config-next/typescript';
5
+ import prettier from 'eslint-config-prettier/flat';
6
+ import * as reactCompiler from 'eslint-plugin-react-compiler';
7
+ import reactHooks from 'eslint-plugin-react-hooks';
8
+ import { Config, defineConfig, globalIgnores } from 'eslint/config';
9
+ import tseslint from 'typescript-eslint';
10
+
11
+ export { Config };
12
+
13
+ export default defineConfig([
14
+ js.configs.recommended,
15
+ ...tseslint.configs.recommended,
16
+ {
17
+ languageOptions: {
18
+ parserOptions: {
19
+ tsconfigRootDir: (import.meta as any).dirname,
20
+ },
21
+ },
22
+ },
23
+ ...nextVitals,
24
+ ...nextTs,
25
+ reactHooks.configs.flat.recommended,
26
+ reactCompiler.configs.recommended,
27
+ {
28
+ rules: {
29
+ 'react-compiler/react-compiler': 'error',
30
+ },
31
+ },
32
+ prettier,
33
+ globalIgnores(['.next/**', 'out/**', 'build/**', 'next-env.d.ts']),
34
+ ]) satisfies Config[];
package/src/node.ts ADDED
@@ -0,0 +1,14 @@
1
+ import js from '@eslint/js';
2
+ import { defineConfig, globalIgnores, type Config } from 'eslint/config';
3
+ import globals from 'globals';
4
+ import tseslint from 'typescript-eslint';
5
+
6
+ export { Config };
7
+
8
+ export default defineConfig([
9
+ globalIgnores(['dist/**']),
10
+ { files: ['**/*.{js,mjs,cjs,ts}'] },
11
+ { languageOptions: { globals: globals.node } },
12
+ js.configs.recommended,
13
+ ...tseslint.configs.recommended,
14
+ ]);
package/src/react.ts ADDED
@@ -0,0 +1,34 @@
1
+ import js from '@eslint/js';
2
+ import prettier from 'eslint-config-prettier/flat';
3
+ import reactHooks from 'eslint-plugin-react-hooks';
4
+ import reactRefresh from 'eslint-plugin-react-refresh';
5
+ import { defineConfig, globalIgnores, type Config } from 'eslint/config';
6
+ import globals from 'globals';
7
+ import tseslint from 'typescript-eslint';
8
+
9
+ export { Config };
10
+
11
+ export default defineConfig([
12
+ js.configs.recommended,
13
+ tseslint.configs.recommended,
14
+
15
+ reactHooks.configs.flat.recommended,
16
+ reactRefresh.configs.recommended,
17
+
18
+ globalIgnores(['dist']),
19
+ {
20
+ files: ['**/*.{ts,tsx}'],
21
+ languageOptions: {
22
+ ecmaVersion: 2020,
23
+ globals: globals.browser,
24
+ },
25
+ rules: {
26
+ 'react-refresh/only-export-components': [
27
+ 'warn',
28
+ { allowConstantExport: true },
29
+ ],
30
+ },
31
+ },
32
+
33
+ prettier,
34
+ ]);