From 42c0e5b4d01ae1a66f9a024f52fe1ba2edcb5922 Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Tue, 3 Jun 2025 15:01:09 +0200 Subject: [PATCH 01/27] feat: add react compiler --- core/next.config.ts | 1 + pnpm-lock.yaml | 51 ++++++++++++++++++++++++++++++++------------- pnpm-workspace.yaml | 3 ++- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/core/next.config.ts b/core/next.config.ts index ede7691156..cceee74dd9 100644 --- a/core/next.config.ts +++ b/core/next.config.ts @@ -54,6 +54,7 @@ const nextConfig: NextConfig = { optimizePackageImports: ["@icons-pack/react-simple-icons", "lucide-react"], webpackBuildWorker: true, parallelServerBuildTraces: true, + reactCompiler: true, }, // open telemetry cries a lot during build, don't think it's serious // https://github.com/open-telemetry/opentelemetry-js/issues/4173 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 660a6c6c23..6d89ec5367 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,7 +61,7 @@ catalogs: specifier: ^0.16.18 version: 0.16.21 next: - specifier: ^15.2.3 + specifier: ^15.3.3 version: 15.2.3 nuqs: specifier: ^2.4.1 @@ -2002,10 +2002,18 @@ packages: resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} @@ -2565,6 +2573,10 @@ packages: resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} + '@babel/types@7.27.3': + resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} + engines: {node: '>=6.9.0'} + '@benrbray/prosemirror-math@1.0.0': resolution: {integrity: sha512-5fPeOKP6SJJ3usXhhf6vnLXGJnfPHPzv0OdsOJlGkCdZvNfCuC6f8fZqgpmnP8vxDKjB8fvSVSmAHTMsaiXc6w==} peerDependencies: @@ -14782,12 +14794,12 @@ snapshots: '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color @@ -14833,14 +14845,14 @@ snapshots: '@babel/helper-member-expression-to-functions@7.24.8': dependencies: '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color @@ -14866,7 +14878,7 @@ snapshots: '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 '@babel/helper-plugin-utils@7.24.8': {} @@ -14891,28 +14903,32 @@ snapshots: '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.24.8': {} '@babel/helper-wrap-function@7.25.0': dependencies: '@babel/template': 7.25.0 '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color @@ -14923,7 +14939,7 @@ snapshots: '@babel/highlight@7.24.7': dependencies: - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-validator-identifier': 7.27.1 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.1 @@ -15380,7 +15396,7 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 transitivePeerDependencies: - supports-color @@ -15556,7 +15572,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 esutils: 2.0.3 '@babel/preset-react@7.24.7(@babel/core@7.25.2)': @@ -15617,6 +15633,11 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.27.3': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@benrbray/prosemirror-math@1.0.0(katex@0.16.21)(prosemirror-commands@1.6.1)(prosemirror-history@1.4.1)(prosemirror-inputrules@1.4.0)(prosemirror-keymap@1.2.2)(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-transform@1.10.2)(prosemirror-view@1.39.2)': dependencies: katex: 0.16.21 @@ -21010,16 +21031,16 @@ snapshots: '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.27.3 '@types/base16@1.0.5': {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5f3d06d230..95be0d6814 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -8,7 +8,7 @@ packages: # A catalog is used to line up the package versions across workspaces catalog: - next: ^15.2.3 + next: ^15.3.3 eslint: ^9.9.0 katex: ^0.16.18 prettier: ^3.4.2 @@ -50,6 +50,7 @@ catalogs: react19: react: ^19.1.0 react-dom: ^19.1.0 + "babel-plugin-react-compiler": "19.1.0-rc.2" "@types/react": ^19.1.0 "@types/react-dom": ^19.1.0 react-reconciler: "0.32.0" From c398df11c5ccf504e0be566d93ec471f4ffa8234 Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Tue, 3 Jun 2025 15:02:25 +0200 Subject: [PATCH 02/27] feat: add react compiler to babel config for ui --- babel.config.js | 7 +++- package.json | 1 + pnpm-lock.yaml | 97 ++++++++++++++++++++++++++++--------------------- 3 files changed, 63 insertions(+), 42 deletions(-) diff --git a/babel.config.js b/babel.config.js index 9419da6638..163edbda8f 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,8 @@ module.exports = { - presets: ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"], + presets: [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-typescript", + "babel-plugin-react-compiler", + ], }; diff --git a/package.json b/package.json index fd2ba3eb6c..b58782d362 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@babel/preset-env": "^7.22.15", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.22.15", + "babel-plugin-react-compiler": "catalog:react19", "@preconstruct/cli": "^2.8.10", "@pubpub/prettier-config": "workspace:*", "@turbo/gen": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d89ec5367..602a9738a5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -109,6 +109,9 @@ catalogs: '@types/react-dom': specifier: ^19.1.0 version: 19.1.5 + babel-plugin-react-compiler: + specifier: 19.1.0-rc.2 + version: 19.1.0-rc.2 react: specifier: ^19.1.0 version: 19.1.0 @@ -154,6 +157,9 @@ importers: '@turbo/gen': specifier: ^2.1.1 version: 2.1.1(@swc/core@1.7.24(@swc/helpers@0.5.15))(@types/node@22.14.0)(typescript@5.7.2) + babel-plugin-react-compiler: + specifier: catalog:react19 + version: 19.1.0-rc.2 concurrently: specifier: ^9.0.1 version: 9.0.1 @@ -286,7 +292,7 @@ importers: version: 9.0.0 '@fortedigital/nextjs-cache-handler': specifier: ^1.2.0 - version: 1.2.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0) + version: 1.2.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0) '@googleapis/drive': specifier: ^8.16.0 version: 8.16.0 @@ -304,10 +310,10 @@ importers: version: 10.2.0(react@19.1.0) '@neshca/cache-handler': specifier: ^1.9.0 - version: 1.9.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0) + version: 1.9.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0) '@nimpl/getters': specifier: ^2.0.0 - version: 2.0.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@node-rs/argon2': specifier: ^1.8.3 version: 1.8.3 @@ -322,7 +328,7 @@ importers: version: 1.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@sentry/nextjs': specifier: 'catalog:' - version: 9.10.1(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(webpack@5.94.0(@swc/core@1.7.24(@swc/helpers@0.5.15))) + version: 9.10.1(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(webpack@5.94.0(@swc/core@1.7.24(@swc/helpers@0.5.15))) '@sinclair/typebox': specifier: 'catalog:' version: 0.34.30 @@ -340,7 +346,7 @@ importers: version: 3.51.0(@types/node@20.17.12)(zod@3.23.8) '@ts-rest/next': specifier: 'catalog:' - version: 3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@3.23.8) + version: 3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@3.23.8) '@ts-rest/open-api': specifier: 'catalog:' version: 3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(zod@3.23.8) @@ -349,7 +355,7 @@ importers: version: 3.51.0(@tanstack/react-query@5.61.0(react@19.1.0))(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(react@19.1.0)(zod@3.23.8) '@ts-rest/serverless': specifier: 'catalog:' - version: 3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(@types/aws-lambda@8.10.145)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@3.23.8) + version: 3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(@types/aws-lambda@8.10.145)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@3.23.8) '@types/hast': specifier: ^3.0.4 version: 3.0.4 @@ -439,7 +445,7 @@ importers: version: 2.1.1 next: specifier: 'catalog:' - version: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-connect: specifier: ^1.0.0 version: 1.0.0 @@ -448,7 +454,7 @@ importers: version: 6.9.15 nuqs: specifier: 'catalog:' - version: 2.4.1(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 2.4.1(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) openapi3-ts: specifier: ^4.1.2 version: 4.4.0 @@ -541,7 +547,7 @@ importers: version: 10.0.3(react@19.1.0) use-next-sse: specifier: ^0.2.3 - version: 0.2.3(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 0.2.3(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) utils: specifier: workspace:* version: link:../packages/utils @@ -704,13 +710,13 @@ importers: dependencies: next: specifier: 'catalog:' - version: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) nextra: specifier: ^4.2.13 - version: 4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2) + version: 4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2) nextra-theme-docs: specifier: ^4.2.13 - version: 4.2.16(@types/react@19.1.4)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(nextra@4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.2.2(react@19.1.0)) + version: 4.2.16(@types/react@19.1.4)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(nextra@4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.2.2(react@19.1.0)) pagefind: specifier: ^1.3.0 version: 1.3.0 @@ -1201,7 +1207,7 @@ importers: version: 19.1.0 react-email: specifier: 3.0.4 - version: 3.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 3.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) tsconfig: specifier: workspace:* version: link:../../config/tsconfig @@ -1435,10 +1441,10 @@ importers: version: 0.469.0(react@19.1.0) next: specifier: 'catalog:' - version: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) nuqs: specifier: 'catalog:' - version: 2.4.1(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 2.4.1(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) react-colorful: specifier: ^5.6.1 version: 5.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -7928,6 +7934,9 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-react-compiler@19.1.0-rc.2: + resolution: {integrity: sha512-kSNA//p5fMO6ypG8EkEVPIqAjwIXm5tMjfD1XRPL/sRjYSbJ6UsvORfaeolNWnZ9n310aM0xJP7peW26BuCVzA==} + bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -16289,12 +16298,12 @@ snapshots: dependencies: tslib: 2.8.1 - '@fortedigital/nextjs-cache-handler@1.2.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0)': + '@fortedigital/nextjs-cache-handler@1.2.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0)': dependencies: - '@neshca/cache-handler': 1.9.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0) + '@neshca/cache-handler': 1.9.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0) cluster-key-slot: 1.1.2 lru-cache: 11.1.0 - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) redis: 4.7.0 optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.40.1 @@ -16889,11 +16898,11 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true - '@neshca/cache-handler@1.9.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0)': + '@neshca/cache-handler@1.9.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(redis@4.7.0)': dependencies: cluster-key-slot: 1.1.2 lru-cache: 10.4.3 - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) redis: 4.7.0 '@next/env@15.0.4': {} @@ -16952,9 +16961,9 @@ snapshots: '@next/swc-win32-x64-msvc@15.2.3': optional: true - '@nimpl/getters@2.0.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@nimpl/getters@2.0.0(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) @@ -19625,7 +19634,7 @@ snapshots: '@sentry/core@9.10.1': {} - '@sentry/nextjs@9.10.1(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(webpack@5.94.0(@swc/core@1.7.24(@swc/helpers@0.5.15)))': + '@sentry/nextjs@9.10.1(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(webpack@5.94.0(@swc/core@1.7.24(@swc/helpers@0.5.15)))': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.30.0 @@ -19638,7 +19647,7 @@ snapshots: '@sentry/vercel-edge': 9.10.1 '@sentry/webpack-plugin': 3.2.4(webpack@5.94.0(@swc/core@1.7.24(@swc/helpers@0.5.15))) chalk: 3.0.0 - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) resolve: 1.22.8 rollup: 4.35.0 stacktrace-parser: 0.1.10 @@ -20926,10 +20935,10 @@ snapshots: '@types/node': 22.14.0 zod: 3.23.8 - '@ts-rest/next@3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@3.23.8)': + '@ts-rest/next@3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@3.23.8)': dependencies: '@ts-rest/core': 3.51.0(@types/node@20.17.12)(zod@3.23.8) - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) optionalDependencies: zod: 3.23.8 @@ -20948,13 +20957,13 @@ snapshots: optionalDependencies: zod: 3.23.8 - '@ts-rest/serverless@3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(@types/aws-lambda@8.10.145)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@3.23.8)': + '@ts-rest/serverless@3.51.0(@ts-rest/core@3.51.0(@types/node@20.17.12)(zod@3.23.8))(@types/aws-lambda@8.10.145)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(zod@3.23.8)': dependencies: '@ts-rest/core': 3.51.0(@types/node@20.17.12)(zod@3.23.8) itty-router: 5.0.18 optionalDependencies: '@types/aws-lambda': 8.10.145 - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) zod: 3.23.8 '@tsconfig/node10@1.0.11': {} @@ -22074,6 +22083,10 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-react-compiler@19.1.0-rc.2: + dependencies: + '@babel/types': 7.27.3 + bail@2.0.2: {} balanced-match@1.0.2: {} @@ -25907,7 +25920,7 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - next@15.0.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.0.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@next/env': 15.0.4 '@swc/counter': 0.1.3 @@ -25929,12 +25942,13 @@ snapshots: '@next/swc-win32-x64-msvc': 15.0.4 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.51.0 + babel-plugin-react-compiler: 19.1.0-rc.2 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@next/env': 15.2.3 '@swc/counter': 0.1.3 @@ -25956,18 +25970,19 @@ snapshots: '@next/swc-win32-x64-msvc': 15.2.3 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.51.0 + babel-plugin-react-compiler: 19.1.0-rc.2 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - nextra-theme-docs@4.2.16(@types/react@19.1.4)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(nextra@4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.2.2(react@19.1.0)): + nextra-theme-docs@4.2.16(@types/react@19.1.4)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(nextra@4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(use-sync-external-store@1.2.2(react@19.1.0)): dependencies: '@headlessui/react': 2.2.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) clsx: 2.1.1 - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-themes: 0.4.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - nextra: 4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2) + nextra: 4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2) react: 19.1.0 react-compiler-runtime: 0.0.0-experimental-22c6e49-20241219(react@19.1.0) react-dom: 19.1.0(react@19.1.0) @@ -25980,7 +25995,7 @@ snapshots: - immer - use-sync-external-store - nextra@4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2): + nextra@4.2.16(acorn@8.14.1)(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.7.2): dependencies: '@formatjs/intl-localematcher': 0.6.0 '@headlessui/react': 2.2.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -26001,7 +26016,7 @@ snapshots: mdast-util-gfm: 3.1.0 mdast-util-to-hast: 13.2.0 negotiator: 1.0.0 - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-compiler-runtime: 0.0.0-experimental-22c6e49-20241219(react@19.1.0) react-dom: 19.1.0(react@19.1.0) @@ -26113,12 +26128,12 @@ snapshots: npm-to-yarn@3.0.1: {} - nuqs@2.4.1(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0): + nuqs@2.4.1(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0): dependencies: mitt: 3.0.1 react: 19.1.0 optionalDependencies: - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) nwsapi@2.2.12: {} @@ -27038,7 +27053,7 @@ snapshots: react: 19.1.0 scheduler: 0.26.0 - react-email@3.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-email@3.0.4(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@babel/core': 7.24.5 '@babel/parser': 7.24.5 @@ -27050,7 +27065,7 @@ snapshots: glob: 10.3.4 log-symbols: 4.1.0 mime-types: 2.1.35 - next: 15.0.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.0.4(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) normalize-path: 3.0.0 ora: 5.4.1 socket.io: 4.8.0 @@ -28808,9 +28823,9 @@ snapshots: dequal: 2.0.3 react: 19.1.0 - use-next-sse@0.2.3(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + use-next-sse@0.2.3(next@15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.2.3(@babel/core@7.25.2)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.0)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) From bde6318a9be447d276fb43e0ff747aafcd35ae0c Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Tue, 3 Jun 2025 15:21:54 +0200 Subject: [PATCH 03/27] feat: add eslint config to context-editor --- packages/context-editor/eslint.config.mjs | 19 +++++++++++++++++++ packages/context-editor/package.json | 5 +++++ pnpm-lock.yaml | 6 ++++++ 3 files changed, 30 insertions(+) create mode 100644 packages/context-editor/eslint.config.mjs diff --git a/packages/context-editor/eslint.config.mjs b/packages/context-editor/eslint.config.mjs new file mode 100644 index 0000000000..7033737f26 --- /dev/null +++ b/packages/context-editor/eslint.config.mjs @@ -0,0 +1,19 @@ +// @ts-check + +import baseConfig from "@pubpub/eslint-config/base"; +import reactConfig from "@pubpub/eslint-config/react"; + +/** @type {import('typescript-eslint').Config} */ +export default [ + { + ignores: ["dist/**", ".storybook/**"], + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + ...baseConfig, + ...reactConfig, +]; diff --git a/packages/context-editor/package.json b/packages/context-editor/package.json index f71d9e477e..6927622597 100644 --- a/packages/context-editor/package.json +++ b/packages/context-editor/package.json @@ -18,6 +18,9 @@ }, "scripts": { "format": "prettier --check . --ignore-path ../../.gitignore", + "format:fix": "prettier --write . --ignore-path ../../.gitignore", + "lint": "eslint .", + "lint:fix": "eslint . --fix", "type-check": "tsc --noEmit", "storybook": "storybook dev -p 6006 --no-open", "build-storybook": "storybook build", @@ -30,6 +33,7 @@ "@aws-sdk/s3-request-presigner": "^3.445.0", "@chromatic-com/storybook": "^1.9.0", "@playwright/test": "catalog:", + "@pubpub/eslint-config": "workspace:*", "@pubpub/prettier-config": "workspace:*", "@storybook/addon-essentials": "^8.4.7", "@storybook/addon-interactions": "^8.4.7", @@ -48,6 +52,7 @@ "@types/uuid": "^9.0.8", "@uiw/react-json-view": "2.0.0-alpha.27", "@vitejs/plugin-react": "^4.2.1", + "eslint": "catalog:", "prosemirror-dev-tools": "^4.1.0", "storybook": "^8.4.7", "tailwindcss": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 602a9738a5..2d4aabf43d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1029,6 +1029,9 @@ importers: '@playwright/test': specifier: 'catalog:' version: 1.51.0 + '@pubpub/eslint-config': + specifier: workspace:* + version: link:../../config/eslint '@pubpub/prettier-config': specifier: workspace:* version: link:../../config/prettier @@ -1083,6 +1086,9 @@ importers: '@vitejs/plugin-react': specifier: ^4.2.1 version: 4.3.1(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0)) + eslint: + specifier: 'catalog:' + version: 9.10.0(jiti@2.4.2) prosemirror-dev-tools: specifier: ^4.1.0 version: 4.1.0(@babel/core@7.25.2)(@babel/template@7.25.0)(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) From b33e4c8504644018e5149debcc90a790cb08b183 Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Tue, 3 Jun 2025 15:32:20 +0200 Subject: [PATCH 04/27] refactor: fix eslint rules in context-editor --- babel.config.js | 8 ++------ packages/context-editor/eslint.config.mjs | 3 +++ packages/context-editor/package.json | 1 + .../context-editor/src/components/menus/LinkMenu.tsx | 10 ++++++---- packages/context-editor/src/plugins/contextSuggest.ts | 1 - packages/context-editor/src/stories/AtomRenderer.tsx | 10 ++++++---- .../context-editor/src/stories/ContextDash.stories.tsx | 1 + .../src/stories/ContextEditor.stories.tsx | 1 + packages/context-editor/src/stories/mockUtils.ts | 1 - packages/context-editor/src/utils/serialize.ts | 7 ++++++- pnpm-lock.yaml | 3 +++ 11 files changed, 29 insertions(+), 17 deletions(-) diff --git a/babel.config.js b/babel.config.js index 163edbda8f..504f376c71 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,8 +1,4 @@ module.exports = { - presets: [ - "@babel/preset-env", - "@babel/preset-react", - "@babel/preset-typescript", - "babel-plugin-react-compiler", - ], + presets: ["@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript"], + plugins: ["babel-plugin-react-compiler"], }; diff --git a/packages/context-editor/eslint.config.mjs b/packages/context-editor/eslint.config.mjs index 7033737f26..1f48d64193 100644 --- a/packages/context-editor/eslint.config.mjs +++ b/packages/context-editor/eslint.config.mjs @@ -7,10 +7,13 @@ import reactConfig from "@pubpub/eslint-config/react"; export default [ { ignores: ["dist/**", ".storybook/**"], + }, + { languageOptions: { parserOptions: { projectService: true, tsconfigRootDir: import.meta.dirname, + projectFolderIgnoreList: ["dist", ".storybook"], }, }, }, diff --git a/packages/context-editor/package.json b/packages/context-editor/package.json index 6927622597..dcd207c06a 100644 --- a/packages/context-editor/package.json +++ b/packages/context-editor/package.json @@ -100,6 +100,7 @@ "fuzzy": "^0.1.3", "install": "^0.13.0", "katex": "catalog:", + "logger": "workspace:*", "lucide-react": "^0.469.0", "prosemirror-autocomplete": "^0.4.3", "prosemirror-commands": "^1.6.0", diff --git a/packages/context-editor/src/components/menus/LinkMenu.tsx b/packages/context-editor/src/components/menus/LinkMenu.tsx index 8217df4460..974ee69bba 100644 --- a/packages/context-editor/src/components/menus/LinkMenu.tsx +++ b/packages/context-editor/src/components/menus/LinkMenu.tsx @@ -34,10 +34,6 @@ type LinkMenuProps = { onChange: (values: Record) => void; }; export const LinkMenu = ({ mark, onChange }: LinkMenuProps) => { - if (!(mark.type.name === "link")) { - return null; - } - const removeLink = useEditorEventCallback((view) => toggleMarkExpandEmpty({ state: view.state, @@ -63,6 +59,10 @@ export const LinkMenu = ({ mark, onChange }: LinkMenuProps) => { onChange(attrs); }; + if (!(mark.type.name === "link")) { + return null; + } + return (
@@ -79,6 +79,8 @@ export const LinkMenu = ({ mark, onChange }: LinkMenuProps) => { {...field} type="url" placeholder="https://example.com" + // FIXME: determine whether this is a good idea + // eslint-disable-next-line jsx-a11y/no-autofocus autoFocus={field.value.length === 0} /> diff --git a/packages/context-editor/src/plugins/contextSuggest.ts b/packages/context-editor/src/plugins/contextSuggest.ts index 58ac2a6a09..166184777e 100644 --- a/packages/context-editor/src/plugins/contextSuggest.ts +++ b/packages/context-editor/src/plugins/contextSuggest.ts @@ -101,7 +101,6 @@ export default ( let isAtom; let pubId; let fieldSlug; - console.log("selectedItem", selectedItem); if (selectedItemIsField) { /* Eventually, we will check that selectedItem.schemaName !== JSONContent or whatever we name that structured type */ isAtom = selectedItem.schemaName !== "String"; diff --git a/packages/context-editor/src/stories/AtomRenderer.tsx b/packages/context-editor/src/stories/AtomRenderer.tsx index ce1019b067..b385f263af 100644 --- a/packages/context-editor/src/stories/AtomRenderer.tsx +++ b/packages/context-editor/src/stories/AtomRenderer.tsx @@ -11,9 +11,6 @@ export const AtomRenderer = forwardRef< const { node } = nodeProps; const [activeData, setActiveData] = useState(""); const activeNode = node; - if (!activeNode) { - return null; - } const isImageUrl = (url: string) => { // Regular expression to match common image file extensions @@ -56,7 +53,10 @@ export const AtomRenderer = forwardRef< } }, [node]); - // console.log(activeNode, activeNode.attrs.data["rd:source"]); + if (!activeNode) { + return null; + } + return (
+ )} {activeNode.attrs.data["rd:source"] && isAudioUrl(activeNode.attrs.data["rd:source"]) && ( )} diff --git a/packages/context-editor/src/stories/ContextDash.stories.tsx b/packages/context-editor/src/stories/ContextDash.stories.tsx index 62d9bfa220..a6a26c4df5 100644 --- a/packages/context-editor/src/stories/ContextDash.stories.tsx +++ b/packages/context-editor/src/stories/ContextDash.stories.tsx @@ -34,6 +34,7 @@ export const Primary: Story = { pubId, pubTypeId: "67704c04-4f04-46e9-b93e-e3988a992a9b", onChange: (state) => { + // eslint-disable-next-line no-console console.log(state); }, getPubs, diff --git a/packages/context-editor/src/stories/ContextEditor.stories.tsx b/packages/context-editor/src/stories/ContextEditor.stories.tsx index e4c8960965..4bd0563da0 100644 --- a/packages/context-editor/src/stories/ContextEditor.stories.tsx +++ b/packages/context-editor/src/stories/ContextEditor.stories.tsx @@ -40,6 +40,7 @@ export const Primary: Story = { pubTypeId: "67704c04-4f04-46e9-b93e-e3988a992a9b", getPubs, onChange: (state) => { + // eslint-disable-next-line no-console console.log(state); }, getPubById: () => undefined, diff --git a/packages/context-editor/src/stories/mockUtils.ts b/packages/context-editor/src/stories/mockUtils.ts index 86ca602adb..5e7706656a 100644 --- a/packages/context-editor/src/stories/mockUtils.ts +++ b/packages/context-editor/src/stories/mockUtils.ts @@ -47,6 +47,5 @@ export const generateSignedAssetUploadUrl = async (key: string) => { }); const url = await getSignedUrl(client, command, { expiresIn: 3600 }); - console.log({ url }); return url; }; diff --git a/packages/context-editor/src/utils/serialize.ts b/packages/context-editor/src/utils/serialize.ts index 9806751268..03bea98195 100644 --- a/packages/context-editor/src/utils/serialize.ts +++ b/packages/context-editor/src/utils/serialize.ts @@ -1,5 +1,7 @@ import { DOMParser, DOMSerializer, Node } from "prosemirror-model"; +import { logger } from "logger"; + import { baseSchema } from "../schemas"; /** @@ -58,7 +60,10 @@ export const htmlToProsemirror = (html: string, document?: Document) => { return node; } catch (e) { - console.error("Something went wrong during the rendering from HTML to ProseMirror", e); + logger.error({ + msg: "Something went wrong during the rendering from HTML to ProseMirror", + err: e, + }); throw e; } finally { if (temp) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d4aabf43d..819da208ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -938,6 +938,9 @@ importers: katex: specifier: 'catalog:' version: 0.16.21 + logger: + specifier: workspace:* + version: link:../logger lucide-react: specifier: ^0.469.0 version: 0.469.0(react@19.1.0) From f9b1fe13311f7ae91a031a72a7878e0b795f9fb4 Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Tue, 3 Jun 2025 15:52:49 +0200 Subject: [PATCH 05/27] feat: add compiler to storybook --- packages/context-editor/.storybook/main.ts | 14 + packages/context-editor/package.json | 3 +- pnpm-lock.yaml | 492 ++++++++++++++++++-- pnpm-workspace.yaml | 1 + storybook/.storybook/main.ts | 15 + storybook/package.json | 4 +- storybook/stories/_CompilerDemo.stories.tsx | 98 ++++ 7 files changed, 595 insertions(+), 32 deletions(-) create mode 100644 storybook/stories/_CompilerDemo.stories.tsx diff --git a/packages/context-editor/.storybook/main.ts b/packages/context-editor/.storybook/main.ts index f7e11e3b5a..3c447376cc 100644 --- a/packages/context-editor/.storybook/main.ts +++ b/packages/context-editor/.storybook/main.ts @@ -22,5 +22,19 @@ const config: StorybookConfig = { options: {}, }, staticDirs: ["../src/stories/assets"], + async viteFinal(config) { + const { mergeConfig } = await import("vite"); + const { default: react } = await import("@vitejs/plugin-react"); + + return mergeConfig(config, { + plugins: [ + react({ + babel: { + plugins: ["babel-plugin-react-compiler"], + }, + }), + ], + }); + }, }; export default config; diff --git a/packages/context-editor/package.json b/packages/context-editor/package.json index dcd207c06a..0e34da3749 100644 --- a/packages/context-editor/package.json +++ b/packages/context-editor/package.json @@ -58,7 +58,8 @@ "tailwindcss": "catalog:", "tsconfig": "workspace:*", "typescript": "catalog:", - "vitest": "catalog:" + "vitest": "catalog:", + "vite": "catalog:" }, "dependencies": { "@benrbray/prosemirror-math": "^1.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 819da208ce..cbd88b5cf5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,6 +96,9 @@ catalogs: typescript: specifier: 5.7.2 version: 5.7.2 + vite: + specifier: ^6.0.0 + version: 6.3.5 vitest: specifier: ^3.0.5 version: 3.0.5 @@ -701,7 +704,7 @@ importers: version: 5.0.1(typescript@5.7.2)(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0)) vitest: specifier: 'catalog:' - version: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0) + version: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(jiti@2.4.2)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) yargs: specifier: ^17.7.2 version: 17.7.2 @@ -1058,7 +1061,7 @@ importers: version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) '@storybook/react-vite': specifier: ^8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0))(webpack-sources@3.2.3) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))(webpack-sources@3.2.3) '@storybook/test': specifier: ^8.4.7 version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) @@ -1088,7 +1091,7 @@ importers: version: 2.0.0-alpha.27(@babel/runtime@7.25.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.3.1(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0)) + version: 4.3.1(vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1)) eslint: specifier: 'catalog:' version: 9.10.0(jiti@2.4.2) @@ -1107,9 +1110,12 @@ importers: typescript: specifier: 'catalog:' version: 5.7.2 + vite: + specifier: 'catalog:' + version: 6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) vitest: specifier: 'catalog:' - version: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0) + version: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(jiti@2.4.2)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) packages/contracts: dependencies: @@ -1288,7 +1294,7 @@ importers: version: 5.7.2 vitest: specifier: 'catalog:' - version: 3.0.5(@types/debug@4.1.12)(@types/node@22.14.0)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0) + version: 3.0.5(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@2.4.2)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1) packages/ui: dependencies: @@ -1561,13 +1567,16 @@ importers: version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) '@storybook/react-vite': specifier: ^8.4.7 - version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0))(webpack-sources@3.2.3) + version: 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))(webpack-sources@3.2.3) '@storybook/test': specifier: ^8.4.7 version: 8.4.7(storybook@8.4.7(prettier@3.4.2)) '@types/react': specifier: catalog:react19 version: 19.1.4 + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.3.1(vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.49) @@ -1589,6 +1598,9 @@ importers: tsconfig: specifier: workspace:* version: link:../config/tsconfig + vite: + specifier: 'catalog:' + version: 6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) packages: @@ -2830,6 +2842,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.19.11': resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} engines: {node: '>=12'} @@ -2848,6 +2866,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.19.11': resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} engines: {node: '>=12'} @@ -2866,6 +2890,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.19.11': resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} engines: {node: '>=12'} @@ -2884,6 +2914,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.19.11': resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} engines: {node: '>=12'} @@ -2902,6 +2938,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.19.11': resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} engines: {node: '>=12'} @@ -2920,6 +2962,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.19.11': resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} engines: {node: '>=12'} @@ -2938,6 +2986,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.19.11': resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} engines: {node: '>=12'} @@ -2956,6 +3010,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.19.11': resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} engines: {node: '>=12'} @@ -2974,6 +3034,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.19.11': resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} engines: {node: '>=12'} @@ -2992,6 +3058,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.19.11': resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} engines: {node: '>=12'} @@ -3010,6 +3082,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.19.11': resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} engines: {node: '>=12'} @@ -3028,6 +3106,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.19.11': resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} engines: {node: '>=12'} @@ -3046,6 +3130,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.19.11': resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} engines: {node: '>=12'} @@ -3064,6 +3154,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.19.11': resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} engines: {node: '>=12'} @@ -3082,6 +3178,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.19.11': resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} engines: {node: '>=12'} @@ -3100,6 +3202,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.19.11': resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} engines: {node: '>=12'} @@ -3118,6 +3226,18 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.19.11': resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} engines: {node: '>=12'} @@ -3136,12 +3256,24 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.23.1': resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.19.11': resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} engines: {node: '>=12'} @@ -3160,6 +3292,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.19.11': resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} engines: {node: '>=12'} @@ -3178,6 +3316,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.19.11': resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} engines: {node: '>=12'} @@ -3196,6 +3340,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.19.11': resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} engines: {node: '>=12'} @@ -3214,6 +3364,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.19.11': resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} engines: {node: '>=12'} @@ -3232,6 +3388,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8971,6 +9133,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -9274,6 +9441,14 @@ packages: picomatch: optional: true + fdir@6.4.5: + resolution: {integrity: sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -11012,6 +11187,11 @@ packages: nanoid@2.1.11: resolution: {integrity: sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -11676,6 +11856,10 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.4: + resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} + engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -12975,6 +13159,10 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + tinygradient@1.1.5: resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} @@ -13510,6 +13698,46 @@ packages: terser: optional: true + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@3.0.5: resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -16026,6 +16254,9 @@ snapshots: '@esbuild/aix-ppc64@0.23.1': optional: true + '@esbuild/aix-ppc64@0.25.5': + optional: true + '@esbuild/android-arm64@0.19.11': optional: true @@ -16035,6 +16266,9 @@ snapshots: '@esbuild/android-arm64@0.23.1': optional: true + '@esbuild/android-arm64@0.25.5': + optional: true + '@esbuild/android-arm@0.19.11': optional: true @@ -16044,6 +16278,9 @@ snapshots: '@esbuild/android-arm@0.23.1': optional: true + '@esbuild/android-arm@0.25.5': + optional: true + '@esbuild/android-x64@0.19.11': optional: true @@ -16053,6 +16290,9 @@ snapshots: '@esbuild/android-x64@0.23.1': optional: true + '@esbuild/android-x64@0.25.5': + optional: true + '@esbuild/darwin-arm64@0.19.11': optional: true @@ -16062,6 +16302,9 @@ snapshots: '@esbuild/darwin-arm64@0.23.1': optional: true + '@esbuild/darwin-arm64@0.25.5': + optional: true + '@esbuild/darwin-x64@0.19.11': optional: true @@ -16071,6 +16314,9 @@ snapshots: '@esbuild/darwin-x64@0.23.1': optional: true + '@esbuild/darwin-x64@0.25.5': + optional: true + '@esbuild/freebsd-arm64@0.19.11': optional: true @@ -16080,6 +16326,9 @@ snapshots: '@esbuild/freebsd-arm64@0.23.1': optional: true + '@esbuild/freebsd-arm64@0.25.5': + optional: true + '@esbuild/freebsd-x64@0.19.11': optional: true @@ -16089,6 +16338,9 @@ snapshots: '@esbuild/freebsd-x64@0.23.1': optional: true + '@esbuild/freebsd-x64@0.25.5': + optional: true + '@esbuild/linux-arm64@0.19.11': optional: true @@ -16098,6 +16350,9 @@ snapshots: '@esbuild/linux-arm64@0.23.1': optional: true + '@esbuild/linux-arm64@0.25.5': + optional: true + '@esbuild/linux-arm@0.19.11': optional: true @@ -16107,6 +16362,9 @@ snapshots: '@esbuild/linux-arm@0.23.1': optional: true + '@esbuild/linux-arm@0.25.5': + optional: true + '@esbuild/linux-ia32@0.19.11': optional: true @@ -16116,6 +16374,9 @@ snapshots: '@esbuild/linux-ia32@0.23.1': optional: true + '@esbuild/linux-ia32@0.25.5': + optional: true + '@esbuild/linux-loong64@0.19.11': optional: true @@ -16125,6 +16386,9 @@ snapshots: '@esbuild/linux-loong64@0.23.1': optional: true + '@esbuild/linux-loong64@0.25.5': + optional: true + '@esbuild/linux-mips64el@0.19.11': optional: true @@ -16134,6 +16398,9 @@ snapshots: '@esbuild/linux-mips64el@0.23.1': optional: true + '@esbuild/linux-mips64el@0.25.5': + optional: true + '@esbuild/linux-ppc64@0.19.11': optional: true @@ -16143,6 +16410,9 @@ snapshots: '@esbuild/linux-ppc64@0.23.1': optional: true + '@esbuild/linux-ppc64@0.25.5': + optional: true + '@esbuild/linux-riscv64@0.19.11': optional: true @@ -16152,6 +16422,9 @@ snapshots: '@esbuild/linux-riscv64@0.23.1': optional: true + '@esbuild/linux-riscv64@0.25.5': + optional: true + '@esbuild/linux-s390x@0.19.11': optional: true @@ -16161,6 +16434,9 @@ snapshots: '@esbuild/linux-s390x@0.23.1': optional: true + '@esbuild/linux-s390x@0.25.5': + optional: true + '@esbuild/linux-x64@0.19.11': optional: true @@ -16170,6 +16446,12 @@ snapshots: '@esbuild/linux-x64@0.23.1': optional: true + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + '@esbuild/netbsd-x64@0.19.11': optional: true @@ -16179,9 +16461,15 @@ snapshots: '@esbuild/netbsd-x64@0.23.1': optional: true + '@esbuild/netbsd-x64@0.25.5': + optional: true + '@esbuild/openbsd-arm64@0.23.1': optional: true + '@esbuild/openbsd-arm64@0.25.5': + optional: true + '@esbuild/openbsd-x64@0.19.11': optional: true @@ -16191,6 +16479,9 @@ snapshots: '@esbuild/openbsd-x64@0.23.1': optional: true + '@esbuild/openbsd-x64@0.25.5': + optional: true + '@esbuild/sunos-x64@0.19.11': optional: true @@ -16200,6 +16491,9 @@ snapshots: '@esbuild/sunos-x64@0.23.1': optional: true + '@esbuild/sunos-x64@0.25.5': + optional: true + '@esbuild/win32-arm64@0.19.11': optional: true @@ -16209,6 +16503,9 @@ snapshots: '@esbuild/win32-arm64@0.23.1': optional: true + '@esbuild/win32-arm64@0.25.5': + optional: true + '@esbuild/win32-ia32@0.19.11': optional: true @@ -16218,6 +16515,9 @@ snapshots: '@esbuild/win32-ia32@0.23.1': optional: true + '@esbuild/win32-ia32@0.25.5': + optional: true + '@esbuild/win32-x64@0.19.11': optional: true @@ -16227,6 +16527,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true + '@esbuild/win32-x64@0.25.5': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0(jiti@2.4.2))': dependencies: eslint: 9.10.0(jiti@2.4.2) @@ -16515,19 +16818,19 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))': dependencies: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.7.2) - vite: 5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0) + vite: 6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) optionalDependencies: typescript: 5.7.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.7.2)(vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))': dependencies: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.7.2) - vite: 5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) optionalDependencies: typescript: 5.7.2 @@ -20514,23 +20817,23 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0))(webpack-sources@3.2.3)': + '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))(webpack-sources@3.2.3)': dependencies: '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.2))(webpack-sources@3.2.3) browser-assert: 1.2.1 storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - vite: 5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0) + vite: 6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) transitivePeerDependencies: - webpack-sources - '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0))(webpack-sources@3.2.3)': + '@storybook/builder-vite@8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))(webpack-sources@3.2.3)': dependencies: '@storybook/csf-plugin': 8.4.7(storybook@8.4.7(prettier@3.4.2))(webpack-sources@3.2.3) browser-assert: 1.2.1 storybook: 8.4.7(prettier@3.4.2) ts-dedent: 2.2.0 - vite: 5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) transitivePeerDependencies: - webpack-sources @@ -20607,11 +20910,11 @@ snapshots: react-dom: 19.1.0(react@19.1.0) storybook: 8.4.7(prettier@3.4.2) - '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0))(webpack-sources@3.2.3)': + '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))(webpack-sources@3.2.3)': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1)) '@rollup/pluginutils': 5.1.0(rollup@4.35.0) - '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0))(webpack-sources@3.2.3) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))(webpack-sources@3.2.3) '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) find-up: 5.0.0 magic-string: 0.30.17 @@ -20621,7 +20924,7 @@ snapshots: resolve: 1.22.8 storybook: 8.4.7(prettier@3.4.2) tsconfig-paths: 4.2.0 - vite: 5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0) + vite: 6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) transitivePeerDependencies: - '@storybook/test' - rollup @@ -20629,11 +20932,11 @@ snapshots: - typescript - webpack-sources - '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0))(webpack-sources@3.2.3)': + '@storybook/react-vite@8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.35.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2)(vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))(webpack-sources@3.2.3)': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.7.2)(vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1)) '@rollup/pluginutils': 5.1.0(rollup@4.35.0) - '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0))(webpack-sources@3.2.3) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7(prettier@3.4.2))(vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))(webpack-sources@3.2.3) '@storybook/react': 8.4.7(@storybook/test@8.4.7(storybook@8.4.7(prettier@3.4.2)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.4.7(prettier@3.4.2))(typescript@5.7.2) find-up: 5.0.0 magic-string: 0.30.17 @@ -20643,7 +20946,7 @@ snapshots: resolve: 1.22.8 storybook: 8.4.7(prettier@3.4.2) tsconfig-paths: 4.2.0 - vite: 5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) transitivePeerDependencies: - '@storybook/test' - rollup @@ -21603,6 +21906,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitejs/plugin-react@4.3.1(vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-react@4.3.1(vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) + transitivePeerDependencies: + - supports-color + '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 @@ -23271,6 +23596,34 @@ snapshots: '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} @@ -23668,6 +24021,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.5(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -25903,6 +26260,8 @@ snapshots: nanoid@2.1.11: {} + nanoid@3.3.11: {} + nanoid@3.3.7: {} nanoid@5.0.9: {} @@ -26680,6 +27039,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.4: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postgres-array@2.0.0: {} postgres-array@3.0.2: {} @@ -28389,6 +28754,11 @@ snapshots: tinyexec@0.3.2: {} + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + tinygradient@1.1.5: dependencies: '@types/tinycolor2': 1.4.6 @@ -28900,15 +29270,16 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.0.5(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0): + vite-node@3.0.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0) + vite: 6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -28917,16 +29288,19 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml - vite-node@3.0.5(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0): + vite-node@3.0.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0) + vite: 6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -28935,6 +29309,8 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml vite-tsconfig-paths@5.0.1(typescript@5.7.2)(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0)): dependencies: @@ -28969,7 +29345,57 @@ snapshots: lightningcss: 1.29.2 terser: 5.39.0 - vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0): + vite@6.3.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.4 + rollup: 4.35.0 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 20.17.12 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + terser: 5.39.0 + tsx: 4.19.0 + yaml: 2.5.1 + + vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.4 + rollup: 4.35.0 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 22.14.0 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + terser: 5.39.0 + tsx: 4.19.0 + yaml: 2.5.1 + + vite@6.3.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1): + dependencies: + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.4 + rollup: 4.35.0 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 22.14.0 + fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.29.2 + terser: 5.39.0 + yaml: 2.5.1 + + vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.12)(jiti@2.4.2)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1): dependencies: '@vitest/expect': 3.0.5 '@vitest/mocker': 3.0.5(vite@5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0)) @@ -28989,13 +29415,14 @@ snapshots: tinypool: 1.0.2 tinyrainbow: 2.0.0 vite: 5.4.3(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0) - vite-node: 3.0.5(@types/node@20.17.12)(lightningcss@1.29.2)(terser@5.39.0) + vite-node: 3.0.5(@types/node@20.17.12)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.0)(yaml@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 20.17.12 jsdom: 25.0.1 transitivePeerDependencies: + - jiti - less - lightningcss - msw @@ -29005,8 +29432,10 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml - vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.14.0)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0): + vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@2.4.2)(jsdom@25.0.1)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1): dependencies: '@vitest/expect': 3.0.5 '@vitest/mocker': 3.0.5(vite@5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0)) @@ -29026,13 +29455,14 @@ snapshots: tinypool: 1.0.2 tinyrainbow: 2.0.0 vite: 5.4.3(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0) - vite-node: 3.0.5(@types/node@22.14.0)(lightningcss@1.29.2)(terser@5.39.0) + vite-node: 3.0.5(@types/node@22.14.0)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(yaml@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 '@types/node': 22.14.0 jsdom: 25.0.1 transitivePeerDependencies: + - jiti - less - lightningcss - msw @@ -29042,6 +29472,8 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml vscode-jsonrpc@8.2.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 95be0d6814..d2878c64c9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,6 +22,7 @@ catalog: tsx: ^4.19.0 typescript: 5.7.2 vitest: ^3.0.5 + vite: ^6.0.0 zod: ^3.23.8 react-hook-form: ^7.54.2 "@hookform/resolvers": ^3.9.1 diff --git a/storybook/.storybook/main.ts b/storybook/.storybook/main.ts index 37455d78c6..7563b9b0bd 100644 --- a/storybook/.storybook/main.ts +++ b/storybook/.storybook/main.ts @@ -2,6 +2,8 @@ import { dirname, join } from "path"; import type { StorybookConfig } from "@storybook/react-vite"; +import react from "@vitejs/plugin-react"; + /** * This function is used to resolve the absolute path of a package. * It is needed in projects that use Yarn PnP or are set up within a monorepo. @@ -25,5 +27,18 @@ const config: StorybookConfig = { name: getAbsolutePath("@storybook/react-vite"), options: {}, }, + async viteFinal(config) { + const { mergeConfig } = await import("vite"); + + return mergeConfig(config, { + plugins: [ + react({ + babel: { + plugins: ["babel-plugin-react-compiler"], + }, + }), + ], + }); + }, }; export default config; diff --git a/storybook/package.json b/storybook/package.json index 4660612297..e7a60f05e2 100644 --- a/storybook/package.json +++ b/storybook/package.json @@ -23,13 +23,15 @@ "@storybook/react-vite": "^8.4.7", "@storybook/test": "^8.4.7", "@types/react": "catalog:react19", + "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10.4.20", "postcss": "^8.4.49", "prop-types": "^15.8.1", "react": "catalog:react19", "storybook": "^8.4.7", "tailwindcss": "catalog:", - "tsconfig": "workspace:*" + "tsconfig": "workspace:*", + "vite": "catalog:" }, "dependencies": { "@hookform/resolvers": "catalog:", diff --git a/storybook/stories/_CompilerDemo.stories.tsx b/storybook/stories/_CompilerDemo.stories.tsx new file mode 100644 index 0000000000..ddc1e17a77 --- /dev/null +++ b/storybook/stories/_CompilerDemo.stories.tsx @@ -0,0 +1,98 @@ +import type { Meta } from "@storybook/react"; + +import React, { useState } from "react"; + +function SlowComponent(props: { unused?: any }) { + const largeArray = Array.from({ length: 10000 }, (_, i) => i); + + return ( +
+ {largeArray.map((value) => ( +
+ ))} +
+ ); +} + +function CounterButton(props: { onClick: () => void }) { + return ( + + ); +} + +function ColorPicker(props: { value: string; onChange: (value: string) => void }) { + return ( + props.onChange(e.target.value)} + className="h-12 w-full cursor-pointer rounded border border-white/20 bg-neutral-700 p-1" + /> + ); +} + +export function DemoComponent() { + const [count, setCount] = useState(0); + const [color, setColor] = useState("#ffffff"); + + return ( +
+
+

Color Picker

+ setColor(e)} /> +
+ Current value:
+ {color} +
+
+
+

Counter

+ setCount((count) => count + 1)} /> +
+ Current value:
+ {count} +
+
+
+

A Slow Component

+ + (This component renders 10,000 boxes) + + +
+
+ ); +} + +function ParentComponent() { + return ( +
+

+ React Compiler Demo +

+
+ +
+
+ ); +} + +const meta: Meta = { + title: "CompilerDemo", + component: ParentComponent, + tags: ["autodocs"], + argTypes: {}, + args: {}, +}; +export default meta; From 17fe0014ab107c3a0f712f660403fafbab224d18 Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Tue, 3 Jun 2025 17:17:11 +0200 Subject: [PATCH 06/27] dev: add demo for react compiler in next --- core/app/compiler-demo/page.tsx | 93 +++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 core/app/compiler-demo/page.tsx diff --git a/core/app/compiler-demo/page.tsx b/core/app/compiler-demo/page.tsx new file mode 100644 index 0000000000..b56b66e8d2 --- /dev/null +++ b/core/app/compiler-demo/page.tsx @@ -0,0 +1,93 @@ +"use client"; + +import React, { useState } from "react"; + +function SlowComponent(props: { unused?: any }) { + const largeArray = Array.from({ length: 10000 }, (_, i) => i); + + return ( +
+ {largeArray.map((value) => ( +
+ ))} +
+ ); +} + +function CounterButton(props: { onClick: () => void }) { + return ( + + ); +} + +function ColorPicker(props: { value: string; onChange: (value: string) => void }) { + return ( + props.onChange(e.target.value)} + className="h-12 w-full cursor-pointer rounded border border-white/20 bg-neutral-700 p-1" + /> + ); +} + +export function DemoComponent() { + const [count, setCount] = useState(0); + const [color, setColor] = useState("#ffffff"); + + return ( +
+
+

Color Picker

+ setColor(e)} /> +
+ Current value:
+ {color} +
+
+
+

Counter

+ setCount((count) => count + 1)} /> +
+ Current value:
+ {count} +
+
+
+

A Slow Component

+ + (This component renders 10,000 boxes) + + +
+
+ ); +} +export default function Demo() { + return ( +
+

React Compiler Demo

+

+ Turn off the compiler in next.config.ts to see the difference. +

+

+ Picking a color should be really slow with the compiler turned off +

+ +
+ +
+
+ ); +} From 9f3313ce5c5235bd2ac1a95a81a8be34251c2a80 Mon Sep 17 00:00:00 2001 From: "Thomas F. K. Jorna" Date: Tue, 3 Jun 2025 18:51:41 +0200 Subject: [PATCH 07/27] dev: actually uprgade next, add react scan, add turbo build option --- core/.env.development | 4 +- core/app/compiler-demo/page.tsx | 2 + core/app/layout.tsx | 8 + core/lib/env/env.ts | 14 +- core/package.json | 1 + pnpm-lock.yaml | 411 ++++++++++++++++++++++++++------ pnpm-workspace.yaml | 2 +- 7 files changed, 357 insertions(+), 85 deletions(-) diff --git a/core/.env.development b/core/.env.development index c30d247cc9..a060deda86 100644 --- a/core/.env.development +++ b/core/.env.development @@ -25,4 +25,6 @@ DATACITE_PASSWORD="" DATACITE_API_URL="https://api.test.datacite.org" GCLOUD_KEY_FILE='xxx' -VALKEY_HOST='localhost' \ No newline at end of file +VALKEY_HOST='localhost' + +REACT_SCAN_ENABLED=true \ No newline at end of file diff --git a/core/app/compiler-demo/page.tsx b/core/app/compiler-demo/page.tsx index b56b66e8d2..dad23de301 100644 --- a/core/app/compiler-demo/page.tsx +++ b/core/app/compiler-demo/page.tsx @@ -75,6 +75,7 @@ export function DemoComponent() { ); } export default function Demo() { + const [color, setColor] = useState("#ffffff"); return (

React Compiler Demo

@@ -87,6 +88,7 @@ export default function Demo() {
+ setColor(e)} />
); diff --git a/core/app/layout.tsx b/core/app/layout.tsx index 640cfa9f93..7af863de50 100644 --- a/core/app/layout.tsx +++ b/core/app/layout.tsx @@ -3,11 +3,13 @@ import { NuqsAdapter } from "nuqs/adapters/next/app"; import "ui/styles.css"; import { Suspense } from "react"; +import Script from "next/script"; // import "./globals.css"; import { TooltipProvider } from "ui/tooltip"; +import { env } from "~/lib/env/env"; import { ReactQueryProvider } from "./components/providers/QueryProvider"; import { RootToaster } from "./RootToaster"; @@ -20,6 +22,12 @@ export default function RootLayout({ children }: { children: React.ReactNode }) return ( + {env.NODE_ENV === "development" && env.REACT_SCAN_ENABLED && ( +