Skip to content

Commit 4112b22

Browse files
authored
Remove malicious postcss payload; Node 26, pnpm 12, deps (#2023)
* pin Node to 26.12.1 * bump pnpm to 12.15.0 * bump GitHub Actions to latest majors * update deps within existing semver ranges * apply prettier 3.9 formatting * update SVG snapshots for vite-plugin-magical-svg 1.10 * bump @types/node 26, chromatic 18, dotenv 18; drop stub types * bump vitest 5, jsdom 30, jest-dom 7 * bump @sentry/nextjs to 11 * bump ESLint plugin majors (eslint-react 5, unicorn 78, etc) * remove unused @eslint-react/purity disable directive * bump pinned Radix and lint-staged; drop stub airtable types * override webpack-dev-middleware to patch path traversal * remove malicious payload; lint root config files * lint the whole repo in CI, not just src
1 parent 5f7fa86 commit 4112b22

32 files changed

Lines changed: 5977 additions & 6771 deletions

File tree

‎.github/workflows/chromatic.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ jobs:
88

99
steps:
1010
- name: Checkout
11-
uses: actions/checkout@v5
11+
uses: actions/checkout@v7
1212
with:
1313
fetch-depth: 0
1414

1515
- name: Install pnpm
16-
uses: pnpm/action-setup@v4
16+
uses: pnpm/action-setup@v6
1717

1818
- name: Setup Node
19-
uses: actions/setup-node@v5
19+
uses: actions/setup-node@v7
2020
with:
2121
node-version-file: ".nvmrc"
2222
cache: "pnpm"

‎.github/workflows/ci.yml‎

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- name: Checkout
14-
uses: actions/checkout@v5
14+
uses: actions/checkout@v7
1515

1616
- name: Install pnpm
17-
uses: pnpm/action-setup@v4
17+
uses: pnpm/action-setup@v6
1818
with:
1919
run_install: false
2020

2121
- name: Install Node.js
22-
uses: actions/setup-node@v4
22+
uses: actions/setup-node@v7
2323
with:
2424
node-version-file: ".nvmrc"
2525
cache: "pnpm"
@@ -34,15 +34,15 @@ jobs:
3434
runs-on: ubuntu-latest
3535
steps:
3636
- name: Checkout
37-
uses: actions/checkout@v5
37+
uses: actions/checkout@v7
3838

3939
- name: Install pnpm
40-
uses: pnpm/action-setup@v4
40+
uses: pnpm/action-setup@v6
4141
with:
4242
run_install: false
4343

4444
- name: Install Node.js
45-
uses: actions/setup-node@v4
45+
uses: actions/setup-node@v7
4646
with:
4747
node-version-file: ".nvmrc"
4848
cache: "pnpm"
@@ -55,7 +55,7 @@ jobs:
5555

5656
- name: Upload coverage artifact
5757
if: github.event_name == 'pull_request'
58-
uses: actions/upload-artifact@v4
58+
uses: actions/upload-artifact@v7
5959
with:
6060
name: vitest-coverage
6161
path: vitest-coverage
@@ -68,15 +68,15 @@ jobs:
6868
pull-requests: write
6969
steps:
7070
- name: Checkout
71-
uses: actions/checkout@v5
71+
uses: actions/checkout@v7
7272

7373
- name: Install pnpm
74-
uses: pnpm/action-setup@v4
74+
uses: pnpm/action-setup@v6
7575
with:
7676
run_install: false
7777

7878
- name: Install Node.js
79-
uses: actions/setup-node@v4
79+
uses: actions/setup-node@v7
8080
with:
8181
node-version-file: ".nvmrc"
8282
cache: "pnpm"
@@ -94,15 +94,15 @@ jobs:
9494

9595
- name: Upload Playwright report
9696
if: failure()
97-
uses: actions/upload-artifact@v4
97+
uses: actions/upload-artifact@v7
9898
with:
9999
name: playwright-report
100100
path: playwright-report/
101101
retention-days: 30
102102

103103
- name: Comment PR with Playwright artifact link
104104
if: always() && github.event_name == 'pull_request'
105-
uses: actions/github-script@v7
105+
uses: actions/github-script@v9
106106
with:
107107
script: |
108108
const runId = context.runId;
@@ -171,10 +171,10 @@ jobs:
171171
permissions:
172172
pull-requests: write
173173
steps:
174-
- uses: actions/checkout@v4
174+
- uses: actions/checkout@v7
175175

176176
- name: Download Coverage Artifact
177-
uses: actions/download-artifact@v4
177+
uses: actions/download-artifact@v8
178178
with:
179179
name: vitest-coverage
180180
path: vitest-coverage

‎.nvmrc‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
24
1+
26.12.1

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Our entire UI library is documented via [![Storybook](https://github.com/storybo
2525
Required versions of tools used within the repo:
2626

2727
- Node: See [.nvmrc](https://github.com/OperationCode/front-end/blob/main/.nvmrc)
28-
- `pnpm@10`
28+
- `pnpm@12`
2929
- `git@2.17.1` or greater
3030

3131
```sh

‎eslint.config.mjs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,16 @@ import eslintPluginReactHooks from 'eslint-plugin-react-hooks';
1616
import reactYouMightNotNeedAnEffect from 'eslint-plugin-react-you-might-not-need-an-effect';
1717
import eslintPluginStorybook from 'eslint-plugin-storybook';
1818

19-
2019
const compat = new FlatCompat({
2120
baseDirectory: import.meta.dirname,
2221
});
2322

2423
/** @type {import("eslint").Linter.Config['languageOptions']} */
2524
const languageOptions = {
2625
parserOptions: {
27-
projectService: true,
26+
projectService: {
27+
allowDefaultProject: ['*.config.js', '*.config.mjs'],
28+
},
2829
tsconfigRootDir: import.meta.dirname,
2930
},
3031
ecmaVersion: 'latest',
@@ -46,7 +47,6 @@ export default defineConfig(
4647
'public/**',
4748
'src/.storybook/**',
4849
'*.svg',
49-
'prettier.config.js',
5050
]),
5151

5252
// ── Base configs ──
@@ -197,7 +197,7 @@ export default defineConfig(
197197
},
198198

199199
// ── No Barrel Files ──
200-
noBarrelFiles.flat,
200+
...noBarrelFiles.configs['flat/recommended'],
201201

202202
// ── CommonJS files ──
203203
{

‎next.config.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { NextConfig } from 'next';
2-
import { withSentryConfig } from '@sentry/nextjs';
2+
import { withSentryConfig } from '@sentry/nextjs/config';
33
import bundleAnalyzer from '@next/bundle-analyzer';
44
import createMDX from '@next/mdx';
55
import { svgoConfig } from './src/lib/config/svgo';

‎package.json‎

Lines changed: 63 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"format": "prettier --write \"**/*\"",
1111
"format:md": "prettier --write \"**/*.md\"",
1212
"lint": "pnpm lint:scripts && pnpm format:md",
13-
"lint:ci": "eslint src",
13+
"lint:ci": "eslint .",
1414
"lint:scripts": "eslint --fix src",
1515
"postbuild": "next-sitemap --config next-sitemap.config.ts",
1616
"prepare": "husky",
@@ -34,99 +34,97 @@
3434
"vitest": "cross-env vitest --config ./vitest.config.mts"
3535
},
3636
"dependencies": {
37-
"@base-ui/react": "^1.6.0",
38-
"@hookform/resolvers": "^5.4.3",
37+
"@base-ui/react": "^1.9.0",
38+
"@hookform/resolvers": "^5.9.2",
3939
"@mdx-js/loader": "^3.1.1",
4040
"@mdx-js/react": "^3.1.1",
41-
"@next/bundle-analyzer": "^16.2.11",
42-
"@next/mdx": "^16.2.11",
43-
"@radix-ui/react-dialog": "1.1.23",
44-
"@radix-ui/react-tabs": "1.1.21",
45-
"@sentry/nextjs": "^10.68.0",
46-
"@types/airtable": "^0.10.5",
41+
"@next/bundle-analyzer": "^16.4.2",
42+
"@next/mdx": "^16.4.2",
43+
"@radix-ui/react-dialog": "1.3.1",
44+
"@radix-ui/react-tabs": "1.2.1",
45+
"@sentry/nextjs": "^11.8.0",
4746
"@types/mdx": "^2.0.14",
4847
"airtable": "^0.12.2",
49-
"axios": "^1.18.1",
48+
"axios": "^1.20.0",
5049
"cva": "1.0.0-beta.8",
51-
"fast-xml-parser": "^5.10.1",
50+
"fast-xml-parser": "^5.11.2",
5251
"fingerprintjs2": "^2.1.4",
5352
"fontfaceobserver": "^2.3.0",
5453
"lodash": "^4.18.1",
55-
"logrocket": "^12.1.1",
54+
"logrocket": "^12.4.0",
5655
"logrocket-react": "^7.0.1",
57-
"lucide-react": "^1.26.0",
58-
"next": "^16.3.3",
56+
"lucide-react": "^1.59.0",
57+
"next": "^16.4.2",
5958
"next-sitemap": "^4.2.3",
6059
"object-hash": "^3.0.0",
61-
"react": "^19.2.8",
62-
"react-dom": "^19.2.8",
63-
"react-hook-form": "^7.83.0",
60+
"react": "^19.3.1",
61+
"react-dom": "^19.3.1",
62+
"react-hook-form": "^7.90.0",
6463
"react-player": "^3.4.0",
6564
"react-select": "^5.10.2",
6665
"remark-gfm": "^4.0.1",
67-
"tailwind-merge": "^3.6.0",
66+
"tailwind-merge": "^3.7.0",
6867
"tw-animate-css": "^1.4.0",
69-
"zod": "^4.4.3"
68+
"zod": "^4.6.7"
7069
},
7170
"devDependencies": {
72-
"@eslint-react/eslint-plugin": "^4.2.3",
73-
"@eslint/eslintrc": "^3.3.5",
71+
"@eslint-react/eslint-plugin": "^5.28.1",
72+
"@eslint/eslintrc": "^3.3.7",
7473
"@eslint/js": "^10.0.1",
75-
"@faker-js/faker": "^10.4.0",
76-
"@next/eslint-plugin-next": "^16.2.6",
77-
"@playwright/test": "^1.59.1",
78-
"@storybook/addon-docs": "^10.3.6",
79-
"@storybook/nextjs": "^10.3.6",
74+
"@faker-js/faker": "^10.6.0",
75+
"@next/eslint-plugin-next": "^16.4.2",
76+
"@playwright/test": "^1.64.1",
77+
"@storybook/addon-docs": "^10.6.2",
78+
"@storybook/nextjs": "^10.6.2",
8079
"@svgr/webpack": "^8.1.0",
81-
"@tailwindcss/postcss": "^4.3.0",
82-
"@testing-library/jest-dom": "^6.9.1",
83-
"@testing-library/react": "^16.3.2",
84-
"@types/fingerprintjs2": "2",
80+
"@tailwindcss/postcss": "^4.3.3",
81+
"@testing-library/jest-dom": "^7.0.1",
82+
"@testing-library/react": "^16.3.3",
83+
"@types/fingerprintjs2": "^2.0.0",
8584
"@types/fontfaceobserver": "^2.1.3",
86-
"@types/lodash": "^4.17.24",
87-
"@types/logrocket-react": "^3.0.3",
88-
"@types/node": "^24.9.1",
89-
"@types/object-hash": "^3.0.0",
90-
"@types/react": "^19.2.14",
91-
"@types/react-dom": "^19.2.3",
92-
"@vitejs/plugin-react": "^6.0.1",
93-
"@vitest/coverage-v8": "^4.1.5",
94-
"@vitest/eslint-plugin": "^1.6.17",
95-
"@vitest/ui": "^4.1.5",
85+
"@types/lodash": "^4.17.26",
86+
"@types/node": "^26.6.5",
87+
"@types/object-hash": "^3.0.6",
88+
"@types/react": "^19.3.0",
89+
"@types/react-dom": "^19.3.0",
90+
"@vitejs/plugin-react": "^6.1.2",
91+
"@vitest/coverage-v8": "^5.0.5",
92+
"@vitest/eslint-plugin": "^1.6.27",
93+
"@vitest/ui": "^5.0.5",
9694
"axios-mock-adapter": "^2.1.0",
9795
"babel-plugin-react-compiler": "^1.0.0",
98-
"chromatic": "^16.9.1",
96+
"chromatic": "^18.13.0",
9997
"cross-env": "^10.1.0",
100-
"dotenv": "^17.4.2",
101-
"eslint": "^10.3.0",
98+
"dotenv": "^18.0.8",
99+
"eslint": "^10.13.0",
102100
"eslint-config-prettier": "^10.1.8",
103-
"eslint-import-resolver-typescript": "^4.4.4",
104-
"eslint-plugin-better-tailwindcss": "^4.5.0",
105-
"eslint-plugin-import-x": "^4.16.2",
106-
"eslint-plugin-lodash": "^8.0.0",
107-
"eslint-plugin-no-barrel-files": "^1.3.1",
108-
"eslint-plugin-playwright": "^2.10.2",
109-
"eslint-plugin-prettier": "^5.5.5",
101+
"eslint-import-resolver-typescript": "^4.4.5",
102+
"eslint-plugin-better-tailwindcss": "^4.9.1",
103+
"eslint-plugin-import-x": "^4.17.1",
104+
"eslint-plugin-lodash": "^8.1.0",
105+
"eslint-plugin-no-barrel-files": "^2.2.0",
106+
"eslint-plugin-playwright": "^2.12.1",
107+
"eslint-plugin-prettier": "^5.5.7",
110108
"eslint-plugin-react-hooks": "^7.1.1",
111-
"eslint-plugin-react-you-might-not-need-an-effect": "^0.10.1",
112-
"eslint-plugin-storybook": "^10.3.6",
113-
"eslint-plugin-unicorn": "^64.0.0",
109+
"eslint-plugin-react-you-might-not-need-an-effect": "^1.0.2",
110+
"eslint-plugin-storybook": "^10.6.2",
111+
"eslint-plugin-unicorn": "^78.0.0",
114112
"husky": "^9.1.7",
115-
"jsdom": "^29.1.1",
116-
"lint-staged": "17.0.4",
113+
"jsdom": "^30.1.3",
114+
"lint-staged": "17.6.0",
117115
"postcss": "^8.5.14",
118-
"prettier": "^3.8.3",
119-
"prettier-plugin-tailwindcss": "^0.8.0",
120-
"shadcn": "^4.7.0",
121-
"storybook": "^10.3.6",
122-
"tailwindcss": "^4.3.0",
116+
"prettier": "^3.9.10",
117+
"prettier-plugin-tailwindcss": "^0.8.1",
118+
"shadcn": "^4.22.1",
119+
"storybook": "^10.6.2",
120+
"tailwindcss": "^4.3.3",
123121
"typescript": "^6.0.3",
124-
"typescript-eslint": "^8.59.2",
122+
"typescript-eslint": "^8.71.2",
125123
"vite": "^8.0.12",
126-
"vite-plugin-magical-svg": "^1.9.0",
124+
"vite-plugin-magical-svg": "^1.10.3",
127125
"vite-tsconfig-paths": "^6.1.1",
128-
"vitest": "^4.1.5",
129-
"webpack": "^5.106.2"
126+
"vitest": "^5.0.5",
127+
"webpack": "^5.112.0"
130128
},
131-
"packageManager": "pnpm@11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f"
129+
"packageManager": "pnpm@12.15.0+sha512.b3951d6d6ff4a9f13dc7cf56cd28d2b8eb37dbcc9c68e52e1e1191873ea9f82a017287ab50baadc5ccc494f036c67c0e47eb13608c2fa36f47711b61ea128e61"
132130
}

0 commit comments

Comments
 (0)