@adbayb/stack 2.32.1 → 2.33.0-next-40f7a45

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.
Files changed (28) hide show
  1. package/configs/eslint/constants.js +2 -0
  2. package/configs/eslint/index.js +14 -14
  3. package/configs/eslint/presets/dependencies.js +14 -0
  4. package/configs/eslint/presets/eslint.js +3 -4
  5. package/configs/eslint/presets/import.js +9 -21
  6. package/configs/eslint/presets/jsdoc.js +1 -1
  7. package/configs/eslint/presets/node.js +6 -4
  8. package/configs/eslint/presets/react.js +64 -65
  9. package/configs/eslint/presets/sonar.js +1 -3
  10. package/configs/eslint/presets/stylistic.js +74 -71
  11. package/configs/eslint/presets/test.js +30 -5
  12. package/configs/eslint/presets/typescript.js +1 -2
  13. package/configs/eslint/presets/unicorn.js +13 -1
  14. package/dist/index.js +403 -409
  15. package/package.json +26 -28
  16. package/templates/multi-projects/.github/renovate.json +0 -3
  17. package/templates/multi-projects/.github/workflows/continuous_delivery.yml +6 -13
  18. package/templates/multi-projects/.github/workflows/conventional_commit.yml +2 -3
  19. package/templates/multi-projects/.github/workflows/dependency_changelog.yml +2 -2
  20. package/templates/multi-projects/.github/workflows/workflow.yml +3 -13
  21. package/templates/multi-projects/package.json.tmpl +11 -3
  22. package/templates/single-project/.github/renovate.json +0 -3
  23. package/templates/single-project/.github/workflows/continuous_delivery.yml +6 -13
  24. package/templates/single-project/.github/workflows/conventional_commit.yml +2 -3
  25. package/templates/single-project/.github/workflows/dependency_changelog.yml +2 -2
  26. package/templates/single-project/.github/workflows/workflow.yml +3 -13
  27. package/templates/single-project/package.json.tmpl +11 -3
  28. package/configs/eslint/presets/uncategorized.js +0 -42
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adbayb/stack",
3
- "version": "2.32.1",
3
+ "version": "2.33.0-next-40f7a45",
4
4
  "description": "My opinionated JavaScript-based toolchain",
5
5
  "keywords": [
6
6
  "stack",
@@ -39,39 +39,37 @@
39
39
  "templates"
40
40
  ],
41
41
  "dependencies": {
42
- "@changesets/changelog-github": "^0.5.1",
43
- "@changesets/cli": "^2.29.7",
44
- "@commitlint/cli": "^20.1.0",
45
- "@commitlint/config-conventional": "^20.0.0",
46
- "@eslint-react/eslint-plugin": "^2.3.5",
47
- "@eslint/compat": "^2.0.0",
48
- "@stylistic/eslint-plugin": "^5.6.1",
49
- "@vitest/eslint-plugin": "^1.4.3",
50
- "eslint": "^9.39.1",
42
+ "@changesets/changelog-github": "^0.7.0",
43
+ "@changesets/cli": "^2.31.0",
44
+ "@commitlint/cli": "^21.0.1",
45
+ "@commitlint/config-conventional": "^21.0.1",
46
+ "@eslint-react/eslint-plugin": "^5.7.8",
47
+ "@eslint/compat": "^2.1.0",
48
+ "@stylistic/eslint-plugin": "^5.10.0",
49
+ "@vitest/eslint-plugin": "^1.6.17",
50
+ "eslint": "^10.3.0",
51
51
  "eslint-config-prettier": "^10.1.8",
52
52
  "eslint-import-resolver-typescript": "^4.4.4",
53
- "eslint-plugin-depend": "^1.4.0",
54
- "eslint-plugin-import-x": "^4.16.1",
55
- "eslint-plugin-jest-formatting": "^3.1.0",
56
- "eslint-plugin-jsdoc": "^61.3.0",
57
- "eslint-plugin-mdx": "^3.6.2",
58
- "eslint-plugin-n": "^17.23.1",
59
- "eslint-plugin-prettier": "^5.5.4",
60
- "eslint-plugin-react-hooks": "^7.0.1",
61
- "eslint-plugin-sonarjs": "^3.0.5",
62
- "eslint-plugin-sort-keys-custom-order": "^2.2.1",
63
- "eslint-plugin-unicorn": "^62.0.0",
53
+ "eslint-plugin-depend": "^1.5.0",
54
+ "eslint-plugin-import-x": "^4.16.2",
55
+ "eslint-plugin-jsdoc": "^62.9.0",
56
+ "eslint-plugin-mdx": "^3.7.0",
57
+ "eslint-plugin-n": "^18.0.1",
58
+ "eslint-plugin-perfectionist": "^5.9.0",
59
+ "eslint-plugin-prettier": "^5.5.5",
60
+ "eslint-plugin-sonarjs": "^4.0.3",
61
+ "eslint-plugin-unicorn": "^64.0.0",
64
62
  "fdir": "^6.5.0",
65
- "globals": "^16.5.0",
66
- "prettier": "^3.6.2",
67
- "prettier-plugin-packagejson": "^2.5.19",
63
+ "globals": "^17.6.0",
64
+ "prettier": "^3.8.3",
65
+ "prettier-plugin-packagejson": "^3.0.2",
68
66
  "termost": "^1.9.0",
69
- "turbo": "^2.6.1",
70
- "typescript": "^5.9.3",
71
- "typescript-eslint": "^8.47.0"
67
+ "turbo": "^2.9.12",
68
+ "typescript": "^6.0.3",
69
+ "typescript-eslint": "^8.59.3"
72
70
  },
73
71
  "devDependencies": {
74
- "@types/node": "24.10.1",
72
+ "@types/node": "24.12.4",
75
73
  "quickbundle": "2.16.0"
76
74
  },
77
75
  "publishConfig": {
@@ -1,9 +1,6 @@
1
1
  {
2
2
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
3
  "extends": [
4
- ":automergeAll",
5
- ":automergePr",
6
- ":automergeRequireAllStatusChecks",
7
4
  ":enableVulnerabilityAlerts",
8
5
  ":label(dependencies)",
9
6
  ":maintainLockFilesMonthly",
@@ -16,28 +16,22 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  permissions:
18
18
  contents: write
19
+ id-token: write
19
20
  pull-requests: write
20
21
  steps:
21
- - uses: actions/checkout@v5
22
- - uses: pnpm/action-setup@v4
22
+ - uses: actions/checkout@v6
23
+ - uses: pnpm/action-setup@v6
23
24
  - uses: actions/setup-node@v6
24
25
  with:
25
- node-version-file: ".nvmrc"
26
26
  cache: pnpm
27
- - name: Setup .npmrc
28
- run: |
29
- cat << EOF > "$HOME/.npmrc"
30
- //registry.npmjs.org/:_authToken=$NPM_TOKEN
31
- EOF
32
- env:
33
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
27
+ node-version-file: ".nvmrc"
34
28
  - name: Install dependencies
35
29
  run: pnpm install --frozen-lockfile
36
30
  - name: Publish pre-release version(s)
37
31
  if: "!contains(github.event.head_commit.message, 'chore: release package(s)')"
38
32
  run: |
39
- pnpm --filter="!./(applications|examples|tools)/*" --recursive exec pnpm version "$(pnpm show ./ version)-next-${GITHUB_SHA::7}"
40
- pnpm --filter="!./(applications|examples|tools)/*" --recursive exec pnpm publish --tag next --no-git-checks
33
+ pnpm --filter="!." --filter="!./(applications|examples|tools)/*" --recursive exec pnpm version "$(pnpm show ./ version)-next-${GITHUB_SHA::7}" --no-git-tag-version
34
+ pnpm --filter="!." --filter="!./(applications|examples|tools)/*" --recursive exec pnpm publish --tag next --no-git-checks
41
35
  - name: Create release pull request
42
36
  if: "!contains(github.event.head_commit.message, 'chore: release package(s)')"
43
37
  uses: changesets/action@v1
@@ -54,4 +48,3 @@ jobs:
54
48
  publish: pnpm release:publish
55
49
  env:
56
50
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -29,8 +29,7 @@ jobs:
29
29
  requireScope: false
30
30
  subjectPattern: ^(?![A-Z]).+$
31
31
  subjectPatternError: The subject must start with a lowercase character
32
- # Create a sticky comment to display the detailed error
33
- - uses: marocchino/sticky-pull-request-comment@v2
32
+ - uses: marocchino/sticky-pull-request-comment@v3
34
33
  if: always() && (steps.check_pr_rule.outputs.error_message != null)
35
34
  with:
36
35
  header: check_pr_comment
@@ -42,7 +41,7 @@ jobs:
42
41
  ```
43
42
  # Delete a previous comment when the issue has been resolved
44
43
  - if: ${{ steps.check_pr_rule.outputs.error_message == null }}
45
- uses: marocchino/sticky-pull-request-comment@v2
44
+ uses: marocchino/sticky-pull-request-comment@v3
46
45
  with:
47
46
  header: check_pr_comment
48
47
  delete: true
@@ -12,7 +12,7 @@ jobs:
12
12
  if: github.actor == 'renovate[bot]'
13
13
  steps:
14
14
  - name: Checkout
15
- uses: actions/checkout@v5
15
+ uses: actions/checkout@v6
16
16
  with:
17
17
  fetch-depth: 2
18
18
  ref: ${{ github.head_ref }}
@@ -21,7 +21,7 @@ jobs:
21
21
  git config --global user.email adbayb@gmail.com
22
22
  git config --global user.name 'Ayoub Adib'
23
23
  - name: Create changelog entry
24
- uses: actions/github-script@v8
24
+ uses: actions/github-script@v9
25
25
  # Credits to https://github.com/backstage/backstage/blob/bcc11651add5a2589898dfb9d665ebb9d412201b/.github/workflows/sync_renovate-changesets.yml
26
26
  with:
27
27
  script: |
@@ -9,22 +9,12 @@ jobs:
9
9
  runs-on: ubuntu-latest
10
10
  steps:
11
11
  - name: Checkout the code
12
- uses: actions/checkout@v5
13
- - uses: pnpm/action-setup@v4
12
+ uses: actions/checkout@v6
13
+ - uses: pnpm/action-setup@v6
14
14
  - uses: actions/setup-node@v6
15
15
  with:
16
- node-version-file: ".nvmrc"
17
16
  cache: pnpm
18
- - name: Setup cache
19
- id: cache
20
- uses: actions/cache@v4
21
- with:
22
- path: |
23
- ./node_modules
24
- ./turbo
25
- key: ${{ runner.os }}-cache-${{ github.sha }}
26
- restore-keys: |
27
- ${{ runner.os }}-cache-
17
+ node-version-file: ".nvmrc"
28
18
  - name: Install dependencies
29
19
  run: pnpm install --frozen-lockfile
30
20
  - name: Build
@@ -18,8 +18,16 @@
18
18
  },
19
19
  "prettier": "@adbayb/stack/prettier",
20
20
  "packageManager": "pnpm@{{npmVersion}}",
21
- "engines": {
22
- "node": ">=24.0.0",
23
- "pnpm": ">=10.0.0"
21
+ "devEngines": {
22
+ "packageManager": {
23
+ "name": "pnpm",
24
+ "version": "{{npmVersion}}",
25
+ "onFail": "download"
26
+ },
27
+ "runtime": {
28
+ "name": "node",
29
+ "version": ">=24.0.0",
30
+ "onFail": "error"
31
+ }
24
32
  }
25
33
  }
@@ -1,9 +1,6 @@
1
1
  {
2
2
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
3
  "extends": [
4
- ":automergeAll",
5
- ":automergePr",
6
- ":automergeRequireAllStatusChecks",
7
4
  ":enableVulnerabilityAlerts",
8
5
  ":label(dependencies)",
9
6
  ":maintainLockFilesMonthly",
@@ -16,28 +16,22 @@ jobs:
16
16
  runs-on: ubuntu-latest
17
17
  permissions:
18
18
  contents: write
19
+ id-token: write
19
20
  pull-requests: write
20
21
  steps:
21
- - uses: actions/checkout@v5
22
- - uses: pnpm/action-setup@v4
22
+ - uses: actions/checkout@v6
23
+ - uses: pnpm/action-setup@v6
23
24
  - uses: actions/setup-node@v6
24
25
  with:
25
- node-version-file: ".nvmrc"
26
26
  cache: pnpm
27
- - name: Setup .npmrc
28
- run: |
29
- cat << EOF > "$HOME/.npmrc"
30
- //registry.npmjs.org/:_authToken=$NPM_TOKEN
31
- EOF
32
- env:
33
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
27
+ node-version-file: ".nvmrc"
34
28
  - name: Install dependencies
35
29
  run: pnpm install --frozen-lockfile
36
30
  - name: Publish pre-release version(s)
37
31
  if: "!contains(github.event.head_commit.message, 'chore: release package(s)')"
38
32
  run: |
39
- pnpm --filter="!./(applications|examples|tools)/*" --recursive exec pnpm version "$(pnpm show ./ version)-next-${GITHUB_SHA::7}"
40
- pnpm --filter="!./(applications|examples|tools)/*" --recursive exec pnpm publish --tag next --no-git-checks
33
+ pnpm --filter="!." --filter="!./(applications|examples|tools)/*" --recursive exec pnpm version "$(pnpm show ./ version)-next-${GITHUB_SHA::7}" --no-git-tag-version
34
+ pnpm --filter="!." --filter="!./(applications|examples|tools)/*" --recursive exec pnpm publish --tag next --no-git-checks
41
35
  - name: Create release pull request
42
36
  if: "!contains(github.event.head_commit.message, 'chore: release package(s)')"
43
37
  uses: changesets/action@v1
@@ -54,4 +48,3 @@ jobs:
54
48
  publish: pnpm release:publish
55
49
  env:
56
50
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -29,8 +29,7 @@ jobs:
29
29
  requireScope: false
30
30
  subjectPattern: ^(?![A-Z]).+$
31
31
  subjectPatternError: The subject must start with a lowercase character
32
- # Create a sticky comment to display the detailed error
33
- - uses: marocchino/sticky-pull-request-comment@v2
32
+ - uses: marocchino/sticky-pull-request-comment@v3
34
33
  if: always() && (steps.check_pr_rule.outputs.error_message != null)
35
34
  with:
36
35
  header: check_pr_comment
@@ -42,7 +41,7 @@ jobs:
42
41
  ```
43
42
  # Delete a previous comment when the issue has been resolved
44
43
  - if: ${{ steps.check_pr_rule.outputs.error_message == null }}
45
- uses: marocchino/sticky-pull-request-comment@v2
44
+ uses: marocchino/sticky-pull-request-comment@v3
46
45
  with:
47
46
  header: check_pr_comment
48
47
  delete: true
@@ -12,7 +12,7 @@ jobs:
12
12
  if: github.actor == 'renovate[bot]'
13
13
  steps:
14
14
  - name: Checkout
15
- uses: actions/checkout@v5
15
+ uses: actions/checkout@v6
16
16
  with:
17
17
  fetch-depth: 2
18
18
  ref: ${{ github.head_ref }}
@@ -21,7 +21,7 @@ jobs:
21
21
  git config --global user.email adbayb@gmail.com
22
22
  git config --global user.name 'Ayoub Adib'
23
23
  - name: Create changelog entry
24
- uses: actions/github-script@v8
24
+ uses: actions/github-script@v9
25
25
  # Credits to https://github.com/backstage/backstage/blob/bcc11651add5a2589898dfb9d665ebb9d412201b/.github/workflows/sync_renovate-changesets.yml
26
26
  with:
27
27
  script: |
@@ -9,22 +9,12 @@ jobs:
9
9
  runs-on: ubuntu-latest
10
10
  steps:
11
11
  - name: Checkout the code
12
- uses: actions/checkout@v5
13
- - uses: pnpm/action-setup@v4
12
+ uses: actions/checkout@v6
13
+ - uses: pnpm/action-setup@v6
14
14
  - uses: actions/setup-node@v6
15
15
  with:
16
- node-version-file: ".nvmrc"
17
16
  cache: pnpm
18
- - name: Setup cache
19
- id: cache
20
- uses: actions/cache@v4
21
- with:
22
- path: |
23
- ./node_modules
24
- ./turbo
25
- key: ${{ runner.os }}-cache-${{ github.sha }}
26
- restore-keys: |
27
- ${{ runner.os }}-cache-
17
+ node-version-file: ".nvmrc"
28
18
  - name: Install dependencies
29
19
  run: pnpm install --frozen-lockfile
30
20
  - name: Build
@@ -18,8 +18,16 @@
18
18
  },
19
19
  "prettier": "@adbayb/stack/prettier",
20
20
  "packageManager": "pnpm@{{npmVersion}}",
21
- "engines": {
22
- "node": ">=24.0.0",
23
- "pnpm": ">=10.0.0"
21
+ "devEngines": {
22
+ "packageManager": {
23
+ "name": "pnpm",
24
+ "version": "{{npmVersion}}",
25
+ "onFail": "download"
26
+ },
27
+ "runtime": {
28
+ "name": "node",
29
+ "version": ">=24.0.0",
30
+ "onFail": "error"
31
+ }
24
32
  }
25
33
  }
@@ -1,42 +0,0 @@
1
- import sortKeysCustomOrderPlugin from "eslint-plugin-sort-keys-custom-order";
2
- import dependPlugin from "eslint-plugin-depend";
3
-
4
- import { createConfig } from "../helpers.js";
5
- import { JAVASCRIPT_LIKE_FILES } from "../constants.js";
6
-
7
- export const config = createConfig({
8
- files: JAVASCRIPT_LIKE_FILES,
9
- plugins: {
10
- "depend": dependPlugin,
11
- "sort-keys-custom-order": sortKeysCustomOrderPlugin,
12
- },
13
- rules: {
14
- "depend/ban-dependencies": "error",
15
- "sort-keys-custom-order/object-keys": [
16
- "error",
17
- {
18
- orderedKeys: [
19
- "id",
20
- "key",
21
- "name",
22
- "title",
23
- "label",
24
- "description",
25
- ],
26
- },
27
- ],
28
- "sort-keys-custom-order/type-keys": [
29
- "error",
30
- {
31
- orderedKeys: [
32
- "id",
33
- "key",
34
- "name",
35
- "title",
36
- "label",
37
- "description",
38
- ],
39
- },
40
- ],
41
- },
42
- });