diff --git a/package.json b/package.json index cd7ce56ee1..519f049274 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,8 @@ "@babel/preset-typescript": "^7.27.1", "@eslint/compat": "^1.2.8", "@jest/globals": "^29.7.0", + "@size-limit/file": "^12.0.0", + "@size-limit/webpack": "^12.0.0", "@swc/core": "^1.15.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", @@ -59,6 +61,7 @@ "react-dom": "18.0.0", "react-on-rails-rsc": "19.0.2", "redux": "^4.2.1", + "size-limit": "^12.0.0", "stylelint": "^16.14.0", "stylelint-config-standard-scss": "^13.1.0", "swc-loader": "^0.2.6", @@ -84,6 +87,8 @@ "eslint": "eslint", "attw": "attw", "publint": "publint", + "size": "pnpm run build && size-limit", + "size:json": "pnpm run build && size-limit --json", "postinstall": "test -f .lefthook.yml && test -d .git && command -v bundle >/dev/null 2>&1 && bundle exec lefthook install || true" }, "repository": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7fa0226d36..bdecb97983 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,6 +36,12 @@ importers: '@jest/globals': specifier: ^29.7.0 version: 29.7.0 + '@size-limit/file': + specifier: ^12.0.0 + version: 12.0.0(size-limit@12.0.0(jiti@2.6.1)) + '@size-limit/webpack': + specifier: ^12.0.0 + version: 12.0.0(@swc/core@1.15.3)(size-limit@12.0.0(jiti@2.6.1)) '@swc/core': specifier: ^1.15.0 version: 1.15.3 @@ -150,6 +156,9 @@ importers: redux: specifier: ^4.2.1 version: 4.2.1 + size-limit: + specifier: ^12.0.0 + version: 12.0.0(jiti@2.6.1) stylelint: specifier: ^16.14.0 version: 16.26.0(typescript@5.9.3) @@ -1409,6 +1418,18 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@size-limit/file@12.0.0': + resolution: {integrity: sha512-OzKYpDzWJ2jo6cAIzVsaPuvzZTmMLDoVCViEvsctmImxpXzwJZcuBEpPohFKKdgVdZuNTU8WstmvywPq55Njdw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + size-limit: 12.0.0 + + '@size-limit/webpack@12.0.0': + resolution: {integrity: sha512-AB8izqxfPsMtB0Jvfqqd8Q+YTGLlgk2ulePFdAwUKAIu4NCSmbzhwyYPPPrycV4Gm8gA3sf5Udu6diXn5CNaHg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + peerDependencies: + size-limit: 12.0.0 + '@swc/core-darwin-arm64@1.15.3': resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} engines: {node: '>=10'} @@ -2146,6 +2167,10 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + bytes-iec@3.1.1: + resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} + engines: {node: '>= 0.8'} + cacheable@2.2.0: resolution: {integrity: sha512-LEJxRqfeomiiRd2t0uON6hxAtgOoWDfY3fugebbz+J3vDLO+SkdfFChQcOHTZhj9SYa9iwE9MGYNX72dKiOE4w==} @@ -3656,6 +3681,10 @@ packages: light-my-request@6.6.0: resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3840,6 +3869,14 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} + engines: {node: ^18 || >=20} + hasBin: true + + nanospinner@1.2.2: + resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} + napi-postinstall@0.3.4: resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -4434,6 +4471,16 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + size-limit@12.0.0: + resolution: {integrity: sha512-JBG8dioIs0m2kHOhs9jD6E/tZKD08vmbf2bfqj/rJyNWqJxk/ZcakixjhYtsqdbi+AKVbfPkt3g2RRZiKaizYA==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + jiti: ^2.0.0 + peerDependenciesMeta: + jiti: + optional: true + skin-tone@2.0.0: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} @@ -6483,6 +6530,21 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 + '@size-limit/file@12.0.0(size-limit@12.0.0(jiti@2.6.1))': + dependencies: + size-limit: 12.0.0(jiti@2.6.1) + + '@size-limit/webpack@12.0.0(@swc/core@1.15.3)(size-limit@12.0.0(jiti@2.6.1))': + dependencies: + nanoid: 5.1.6 + size-limit: 12.0.0(jiti@2.6.1) + webpack: 5.103.0(@swc/core@1.15.3) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + '@swc/core-darwin-arm64@1.15.3': optional: true @@ -7299,6 +7361,8 @@ snapshots: buffer-from@1.1.2: {} + bytes-iec@3.1.1: {} + cacheable@2.2.0: dependencies: '@cacheable/memory': 2.0.5 @@ -9242,6 +9306,8 @@ snapshots: process-warning: 4.0.1 set-cookie-parser: 2.7.2 + lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} loader-runner@4.3.1: {} @@ -9390,6 +9456,12 @@ snapshots: nanoid@3.3.11: {} + nanoid@5.1.6: {} + + nanospinner@1.2.2: + dependencies: + picocolors: 1.1.1 + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -10056,6 +10128,16 @@ snapshots: sisteransi@1.0.5: {} + size-limit@12.0.0(jiti@2.6.1): + dependencies: + bytes-iec: 3.1.1 + lilconfig: 3.1.3 + nanospinner: 1.2.2 + picocolors: 1.1.1 + tinyglobby: 0.2.15 + optionalDependencies: + jiti: 2.6.1 + skin-tone@2.0.0: dependencies: unicode-emoji-modifier-base: 1.0.0