diff --git a/package.components.json b/package.components.json index 29abe59a2..ae9cbe751 100644 --- a/package.components.json +++ b/package.components.json @@ -1,6 +1,6 @@ { "name": "@umami/components", - "version": "0.103.0", + "version": "0.101.0", "description": "Umami React components.", "author": "Mike Cao ", "license": "MIT", diff --git a/package.json b/package.json index 2dc733dd3..014c6854e 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "@react-spring/web": "^10.0.1", "@svgr/cli": "^8.1.0", "@tanstack/react-query": "^5.85.5", - "@umami/react-zen": "^0.175.0", + "@umami/react-zen": "^0.174.0", "@umami/redis-client": "^0.27.0", "bcryptjs": "^3.0.2", "chalk": "^5.6.0", @@ -156,7 +156,6 @@ "@typescript-eslint/eslint-plugin": "^8.41.0", "@typescript-eslint/parser": "^8.41.0", "@umami/esbuild-plugin-css-modules": "^0.4.0", - "@umami/prisma-client": "^0.19.0", "babel-plugin-react-compiler": "19.1.0-rc.2", "cross-env": "^10.0.0", "cypress": "^13.6.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c78d6868f..a49082bc3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: ^5.85.5 version: 5.85.5(react@19.1.1) '@umami/react-zen': - specifier: ^0.175.0 - version: 0.175.0(@babel/core@7.28.3)(@types/react@19.1.12)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.1.1)(use-sync-external-store@1.5.0(react@19.1.1)) + specifier: ^0.174.0 + version: 0.174.0(@babel/core@7.28.3)(@types/react@19.1.12)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.1.1)(use-sync-external-store@1.5.0(react@19.1.1)) '@umami/redis-client': specifier: ^0.27.0 version: 0.27.0 @@ -252,9 +252,6 @@ importers: '@umami/esbuild-plugin-css-modules': specifier: ^0.4.0 version: 0.4.0 - '@umami/prisma-client': - specifier: ^0.19.0 - version: 0.19.0(@prisma/adapter-pg@6.15.0)(@prisma/client@6.15.0(prisma@6.15.0(typescript@5.9.2))(typescript@5.9.2))(@prisma/extension-read-replicas@0.4.1(@prisma/client@6.15.0(prisma@6.15.0(typescript@5.9.2))(typescript@5.9.2))) babel-plugin-react-compiler: specifier: 19.1.0-rc.2 version: 19.1.0-rc.2 @@ -376,42 +373,6 @@ importers: specifier: ^5.9.2 version: 5.9.2 - dist: - dependencies: - '@tanstack/react-query': - specifier: ^4.33.0 - version: 4.40.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - classnames: - specifier: ^2.3.1 - version: 2.5.1 - colord: - specifier: ^2.9.2 - version: 2.9.3 - date-fns-tz: - specifier: ^1.1.4 - version: 1.3.8(date-fns@2.30.0) - immer: - specifier: ^9.0.12 - version: 9.0.21 - next: - specifier: ^13.4.0 - version: 13.5.11(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - next-basics: - specifier: ^0.36.0 - version: 0.36.0(next@13.5.11(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) - react-intl: - specifier: ^5.24.7 - version: 5.25.1(react@18.3.1)(typescript@4.9.5) - zustand: - specifier: ^4.3.8 - version: 4.5.7(@types/react@18.3.24)(immer@9.0.21)(react@18.3.1) - packages: '@ampproject/remapping@2.3.0': @@ -1123,9 +1084,6 @@ packages: '@formatjs/ecma402-abstract@2.3.4': resolution: {integrity: sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==} - '@formatjs/fast-memoize@1.2.1': - resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==} - '@formatjs/fast-memoize@2.2.7': resolution: {integrity: sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==} @@ -1141,12 +1099,6 @@ packages: '@formatjs/icu-skeleton-parser@1.8.14': resolution: {integrity: sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==} - '@formatjs/intl-displaynames@5.4.3': - resolution: {integrity: sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==} - - '@formatjs/intl-listformat@6.5.3': - resolution: {integrity: sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==} - '@formatjs/intl-localematcher@0.2.25': resolution: {integrity: sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==} @@ -1156,14 +1108,6 @@ packages: '@formatjs/intl-numberformat@5.7.6': resolution: {integrity: sha512-ZlZfYtvbVHYZY5OG3RXizoCwxKxEKOrzEe2YOw9wbzoxF3PmFn0SAgojCFGLyNXkkR6xVxlylhbuOPf1dkIVNg==} - '@formatjs/intl@2.2.1': - resolution: {integrity: sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==} - peerDependencies: - typescript: ^4.5 - peerDependenciesMeta: - typescript: - optional: true - '@formatjs/intl@3.1.6': resolution: {integrity: sha512-tDkXnA4qpIFcDWac8CyVJq6oW8DR7W44QDUBsfXWIIJD/FYYen0QoH46W7XsVMFfPOVKkvbufjboZrrWbEfmww==} peerDependencies: @@ -1490,111 +1434,54 @@ packages: resolution: {integrity: sha512-b2Ic9NkNnnh0lKC/YWDZ2+HdLd/uYdBzLvLKYOkPyFt8KEszoC+Je3GRcwBeOLxaNtK8lji7YPIjtGz8K2sLVQ==} engines: {node: '>=18.0.0'} - '@next/env@13.5.11': - resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==} - '@next/env@15.5.2': resolution: {integrity: sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==} '@next/eslint-plugin-next@14.2.32': resolution: {integrity: sha512-tyZMX8g4cWg/uPW4NxiJK13t62Pab47SKGJGVZJa6YtFwtfrXovH4j1n9tdpRdXW03PGQBugYEVGM7OhWfytdA==} - '@next/swc-darwin-arm64@13.5.9': - resolution: {integrity: sha512-pVyd8/1y1l5atQRvOaLOvfbmRwefxLhqQOzYo/M7FQ5eaRwA1+wuCn7t39VwEgDd7Aw1+AIWwd+MURXUeXhwDw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - '@next/swc-darwin-arm64@15.5.2': resolution: {integrity: sha512-8bGt577BXGSd4iqFygmzIfTYizHb0LGWqH+qgIF/2EDxS5JsSdERJKA8WgwDyNBZgTIIA4D8qUtoQHmxIIquoQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@13.5.9': - resolution: {integrity: sha512-DwdeJqP7v8wmoyTWPbPVodTwCybBZa02xjSJ6YQFIFZFZ7dFgrieKW4Eo0GoIcOJq5+JxkQyejmI+8zwDp3pwA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - '@next/swc-darwin-x64@15.5.2': resolution: {integrity: sha512-2DjnmR6JHK4X+dgTXt5/sOCu/7yPtqpYt8s8hLkHFK3MGkka2snTv3yRMdHvuRtJVkPwCGsvBSwmoQCHatauFQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@13.5.9': - resolution: {integrity: sha512-wdQsKsIsGSNdFojvjW3Ozrh8Q00+GqL3wTaMjDkQxVtRbAqfFBtrLPO0IuWChVUP2UeuQcHpVeUvu0YgOP00+g==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@next/swc-linux-arm64-gnu@15.5.2': resolution: {integrity: sha512-3j7SWDBS2Wov/L9q0mFJtEvQ5miIqfO4l7d2m9Mo06ddsgUK8gWfHGgbjdFlCp2Ek7MmMQZSxpGFqcC8zGh2AA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@13.5.9': - resolution: {integrity: sha512-6VpS+bodQqzOeCwGxoimlRoosiWlSc0C224I7SQWJZoyJuT1ChNCo+45QQH+/GtbR/s7nhaUqmiHdzZC9TXnXA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - '@next/swc-linux-arm64-musl@15.5.2': resolution: {integrity: sha512-s6N8k8dF9YGc5T01UPQ08yxsK6fUow5gG1/axWc1HVVBYQBgOjca4oUZF7s4p+kwhkB1bDSGR8QznWrFZ/Rt5g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@13.5.9': - resolution: {integrity: sha512-XxG3yj61WDd28NA8gFASIR+2viQaYZEFQagEodhI/R49gXWnYhiflTeeEmCn7Vgnxa/OfK81h1gvhUZ66lozpw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@next/swc-linux-x64-gnu@15.5.2': resolution: {integrity: sha512-o1RV/KOODQh6dM6ZRJGZbc+MOAHww33Vbs5JC9Mp1gDk8cpEO+cYC/l7rweiEalkSm5/1WGa4zY7xrNwObN4+Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@13.5.9': - resolution: {integrity: sha512-/dnscWqfO3+U8asd+Fc6dwL2l9AZDl7eKtPNKW8mKLh4Y4wOpjJiamhe8Dx+D+Oq0GYVjuW0WwjIxYWVozt2bA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - '@next/swc-linux-x64-musl@15.5.2': resolution: {integrity: sha512-/VUnh7w8RElYZ0IV83nUcP/J4KJ6LLYliiBIri3p3aW2giF+PAVgZb6mk8jbQSB3WlTai8gEmCAr7kptFa1H6g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@13.5.9': - resolution: {integrity: sha512-T/iPnyurOK5a4HRUcxAlss8uzoEf5h9tkd+W2dSWAfzxv8WLKlUgbfk+DH43JY3Gc2xK5URLuXrxDZ2mGfk/jw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - '@next/swc-win32-arm64-msvc@15.5.2': resolution: {integrity: sha512-sMPyTvRcNKXseNQ/7qRfVRLa0VhR0esmQ29DD6pqvG71+JdVnESJaHPA8t7bc67KD5spP3+DOCNLhqlEI2ZgQg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@13.5.9': - resolution: {integrity: sha512-BLiPKJomaPrTAb7ykjA0LPcuuNMLDVK177Z1xe0nAem33+9FIayU4k/OWrtSn9SAJW/U60+1hoey5z+KCHdRLQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@13.5.9': - resolution: {integrity: sha512-/72/dZfjXXNY/u+n8gqZDjI6rxKMpYsgBBYNZKWOQw0BpBF7WCnPflRy3ZtvQ2+IYI3ZH2bPyj7K+6a6wNk90Q==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@next/swc-win32-x64-msvc@15.5.2': resolution: {integrity: sha512-W5VvyZHnxG/2ukhZF/9Ikdra5fdNftxI6ybeVKYvBPDtyx7x4jPPSNduUkfH5fo3zG0JQ0bPxgy41af2JX5D4Q==} engines: {node: '>= 10'} @@ -2627,27 +2514,9 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@swc/helpers@0.5.2': - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - - '@tanstack/query-core@4.40.0': - resolution: {integrity: sha512-7MJTtZkCSuehMC7IxMOCGsLvHS3jHx4WjveSrGsG1Nc1UQLjaFwwkpLA2LmPfvOAxnH4mszMOBFD6LlZE+aB+Q==} - '@tanstack/query-core@5.85.5': resolution: {integrity: sha512-KO0WTob4JEApv69iYp1eGvfMSUkgw//IpMnq+//cORBzXf0smyRwPLrUvEe5qtAEGjwZTXrjxg+oJNP/C00t6w==} - '@tanstack/react-query@4.40.1': - resolution: {integrity: sha512-mgD07S5N8e5v81CArKDWrHE4LM7HxZ9k/KLeD3+NUD9WimGZgKIqojUZf/rXkfAMYZU9p0Chzj2jOXm7xpgHHQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - '@tanstack/react-query@5.85.5': resolution: {integrity: sha512-/X4EFNcnPiSs8wM2v+b6DqS5mmGeuJQvxBglmDxl6ZQb5V26ouD2SJYAcC3VjbNwqhY2zjxVD15rDA5nGbMn3A==} peerDependencies: @@ -2745,9 +2614,6 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/react-dom@19.1.8': resolution: {integrity: sha512-xG7xaBMJCpcK0RpN8jDbAACQo54ycO6h4dSSmgv8+fu6ZIAdANkx/WsawASUjVXYfy+J9AbUpRMNNEsXCDfDBQ==} peerDependencies: @@ -2756,9 +2622,6 @@ packages: '@types/react-window@1.8.8': resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} - '@types/react@18.3.24': - resolution: {integrity: sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==} - '@types/react@19.1.12': resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} @@ -2882,15 +2745,8 @@ packages: '@umami/esbuild-plugin-css-modules@0.4.0': resolution: {integrity: sha512-OcFbipBJZCmMnJ52/eHkZxpXGQT8Q5bAePgkhpxlreT4zP98grZ6iLzaIkDPFqURQwM/llDhPyNEFRzkSfVYFw==} - '@umami/prisma-client@0.19.0': - resolution: {integrity: sha512-Vnys7MMAPexxmxrC+0q68B/iYmM1LFaP9RjKjffHbLfgZJ3moklJ2ea91cr8+m0CA3+3mqN38WEJI/o/ohOxYQ==} - peerDependencies: - '@prisma/adapter-pg': ^6.1.0 - '@prisma/client': ^6.1.0 - '@prisma/extension-read-replicas': ^0.4.1 - - '@umami/react-zen@0.175.0': - resolution: {integrity: sha512-iOUCZwmr09RnqIm01wnjcSTTJ5iJdXRmFlmja2Qf42di/SOOTSBJmu1fKiYESp4dLrXXcmMeDfDqtJli0PPSRw==} + '@umami/react-zen@0.174.0': + resolution: {integrity: sha512-16+ePYWJsnu67kZupCsb2ZhSeKlYKSC+xARdVFWxUY1BOxi5My+z7BfT+JFEStZ5d8yDZEQLoeoeNYr2OWcqHw==} '@umami/redis-client@0.27.0': resolution: {integrity: sha512-SbHTpxhgeZyTBUSp2zdZM+XUtpsaSL4Tad8QXIEhEtjWhvvfoornyT5kLuyYCVtzSAT4daALeGmOO1z6EE1KcA==} @@ -3251,9 +3107,6 @@ packages: bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - bcryptjs@2.4.3: - resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - bcryptjs@3.0.2: resolution: {integrity: sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==} hasBin: true @@ -3307,10 +3160,6 @@ packages: peerDependencies: esbuild: '>=0.18' - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - c12@3.1.0: resolution: {integrity: sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==} peerDependencies: @@ -3368,9 +3217,6 @@ packages: caniuse-lite@1.0.30001737: resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==} - caniuse-lite@1.0.30001739: - resolution: {integrity: sha512-y+j60d6ulelrNSwpPyrHdl+9mJnQzHBr08xm48Qno0nSk4h3Qojh+ziv2qE6rXf4k3tadF4o1J/1tAbVm1NtnA==} - caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -4497,9 +4343,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} @@ -4672,9 +4515,6 @@ packages: immer@10.1.1: resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} - immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} - import-cwd@3.0.0: resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} engines: {node: '>=8'} @@ -4740,9 +4580,6 @@ packages: intl-messageformat@10.7.16: resolution: {integrity: sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==} - intl-messageformat@9.13.0: - resolution: {integrity: sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==} - ipaddr.js@2.2.0: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} @@ -5609,28 +5446,6 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next-basics@0.36.0: - resolution: {integrity: sha512-Nwou8pCjFuoD/ZxUw9iKC7hhZeWbo/ng0ze74yck3W89MNc/CepwCDziflAHY5XcmIVNmpXOCu9OfmzTdVRPWQ==} - peerDependencies: - next: ^13.4.0 - react: ^18.2.0 - react-dom: ^18.2.0 - - next@13.5.11: - resolution: {integrity: sha512-WUPJ6WbAX9tdC86kGTu92qkrRdgRqVrY++nwM+shmWQwmyxt4zhZfR59moXSI4N8GDYCBY3lIAqhzjDd4rTC8Q==} - engines: {node: '>=16.14.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - sass: - optional: true - next@15.5.2: resolution: {integrity: sha512-H8Otr7abj1glFhbGnvUt3gz++0AF1+QoCXEBmd/6aKbfdFwrn0LpA836Ed5+00va/7HQSDD+mOoVhn3tNy3e/Q==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -6529,11 +6344,6 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - react-dom@19.1.1: resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} peerDependencies: @@ -6555,15 +6365,6 @@ packages: peerDependencies: react: '*' - react-intl@5.25.1: - resolution: {integrity: sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==} - peerDependencies: - react: ^16.3.0 || 17 || 18 - typescript: ^4.5 - peerDependenciesMeta: - typescript: - optional: true - react-intl@7.1.11: resolution: {integrity: sha512-tnVoRCWvW5Ie2ikYSdPF7z3+880yCe/9xPmitFeRPw3RYDcCfR4m8ZYa4MBq19W4adt9Z+PQA4FaMBCJ7E+HCQ==} peerDependencies: @@ -6619,10 +6420,6 @@ packages: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - react@19.1.1: resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} @@ -6824,9 +6621,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} @@ -7014,10 +6808,6 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -7109,19 +6899,6 @@ packages: style-search@0.1.0: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -7561,10 +7338,6 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -7694,21 +7467,6 @@ packages: zod@4.1.5: resolution: {integrity: sha512-rcUUZqlLJgBC33IT3PNMgsCq6TzLQEG/Ei/KTCU0PedSWRMAXoOUN+4t/0H+Q8bdnLPdqUYnvboJT0bn/229qg==} - zustand@4.5.7: - resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - zustand@5.0.8: resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} engines: {node: '>=12.20.0'} @@ -8383,10 +8141,6 @@ snapshots: decimal.js: 10.6.0 tslib: 2.8.1 - '@formatjs/fast-memoize@1.2.1': - dependencies: - tslib: 2.8.1 - '@formatjs/fast-memoize@2.2.7': dependencies: tslib: 2.8.1 @@ -8413,18 +8167,6 @@ snapshots: '@formatjs/ecma402-abstract': 2.3.4 tslib: 2.8.1 - '@formatjs/intl-displaynames@5.4.3': - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/intl-localematcher': 0.2.25 - tslib: 2.8.1 - - '@formatjs/intl-listformat@6.5.3': - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/intl-localematcher': 0.2.25 - tslib: 2.8.1 - '@formatjs/intl-localematcher@0.2.25': dependencies: tslib: 2.8.1 @@ -8438,18 +8180,6 @@ snapshots: '@formatjs/ecma402-abstract': 1.4.0 tslib: 2.8.1 - '@formatjs/intl@2.2.1(typescript@4.9.5)': - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/fast-memoize': 1.2.1 - '@formatjs/icu-messageformat-parser': 2.1.0 - '@formatjs/intl-displaynames': 5.4.3 - '@formatjs/intl-listformat': 6.5.3 - intl-messageformat: 9.13.0 - tslib: 2.8.1 - optionalDependencies: - typescript: 4.9.5 - '@formatjs/intl@3.1.6(typescript@5.9.2)': dependencies: '@formatjs/ecma402-abstract': 2.3.4 @@ -8862,62 +8592,33 @@ snapshots: '@netlify/plugin-nextjs@5.12.1': {} - '@next/env@13.5.11': {} - '@next/env@15.5.2': {} '@next/eslint-plugin-next@14.2.32': dependencies: glob: 10.3.10 - '@next/swc-darwin-arm64@13.5.9': - optional: true - '@next/swc-darwin-arm64@15.5.2': optional: true - '@next/swc-darwin-x64@13.5.9': - optional: true - '@next/swc-darwin-x64@15.5.2': optional: true - '@next/swc-linux-arm64-gnu@13.5.9': - optional: true - '@next/swc-linux-arm64-gnu@15.5.2': optional: true - '@next/swc-linux-arm64-musl@13.5.9': - optional: true - '@next/swc-linux-arm64-musl@15.5.2': optional: true - '@next/swc-linux-x64-gnu@13.5.9': - optional: true - '@next/swc-linux-x64-gnu@15.5.2': optional: true - '@next/swc-linux-x64-musl@13.5.9': - optional: true - '@next/swc-linux-x64-musl@15.5.2': optional: true - '@next/swc-win32-arm64-msvc@13.5.9': - optional: true - '@next/swc-win32-arm64-msvc@15.5.2': optional: true - '@next/swc-win32-ia32-msvc@13.5.9': - optional: true - - '@next/swc-win32-x64-msvc@13.5.9': - optional: true - '@next/swc-win32-x64-msvc@15.5.2': optional: true @@ -10375,22 +10076,8 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/helpers@0.5.2': - dependencies: - tslib: 2.8.1 - - '@tanstack/query-core@4.40.0': {} - '@tanstack/query-core@5.85.5': {} - '@tanstack/react-query@4.40.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@tanstack/query-core': 4.40.0 - react: 18.3.1 - use-sync-external-store: 1.5.0(react@18.3.1) - optionalDependencies: - react-dom: 18.3.1(react@18.3.1) - '@tanstack/react-query@5.85.5(react@19.1.1)': dependencies: '@tanstack/query-core': 5.85.5 @@ -10453,11 +10140,6 @@ snapshots: dependencies: '@types/node': 24.3.0 - '@types/hoist-non-react-statics@3.3.7(@types/react@18.3.24)': - dependencies: - '@types/react': 18.3.24 - hoist-non-react-statics: 3.3.2 - '@types/hoist-non-react-statics@3.3.7(@types/react@19.1.12)': dependencies: '@types/react': 19.1.12 @@ -10500,8 +10182,6 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@types/prop-types@15.7.15': {} - '@types/react-dom@19.1.8(@types/react@19.1.12)': dependencies: '@types/react': 19.1.12 @@ -10510,11 +10190,6 @@ snapshots: dependencies: '@types/react': 19.1.12 - '@types/react@18.3.24': - dependencies: - '@types/prop-types': 15.7.15 - csstype: 3.1.3 - '@types/react@19.1.12': dependencies: csstype: 3.1.3 @@ -10685,17 +10360,7 @@ snapshots: postcss: 8.5.6 postcss-modules: 6.0.1(postcss@8.5.6) - '@umami/prisma-client@0.19.0(@prisma/adapter-pg@6.15.0)(@prisma/client@6.15.0(prisma@6.15.0(typescript@5.9.2))(typescript@5.9.2))(@prisma/extension-read-replicas@0.4.1(@prisma/client@6.15.0(prisma@6.15.0(typescript@5.9.2))(typescript@5.9.2)))': - dependencies: - '@prisma/adapter-pg': 6.15.0 - '@prisma/client': 6.15.0(prisma@6.15.0(typescript@5.9.2))(typescript@5.9.2) - '@prisma/extension-read-replicas': 0.4.1(@prisma/client@6.15.0(prisma@6.15.0(typescript@5.9.2))(typescript@5.9.2)) - chalk: 4.1.2 - debug: 4.4.1(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - '@umami/react-zen@0.175.0(@babel/core@7.28.3)(@types/react@19.1.12)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.1.1)(use-sync-external-store@1.5.0(react@19.1.1))': + '@umami/react-zen@0.174.0(@babel/core@7.28.3)(@types/react@19.1.12)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.1.1)(use-sync-external-store@1.5.0(react@19.1.1))': dependencies: '@fontsource/jetbrains-mono': 5.2.6 '@internationalized/date': 3.9.0 @@ -11122,8 +10787,6 @@ snapshots: dependencies: tweetnacl: 0.14.5 - bcryptjs@2.4.3: {} - bcryptjs@3.0.2: {} blob-util@2.0.2: {} @@ -11176,10 +10839,6 @@ snapshots: esbuild: 0.25.9 load-tsconfig: 0.2.5 - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - c12@3.1.0: dependencies: chokidar: 4.0.3 @@ -11238,7 +10897,7 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.25.2 - caniuse-lite: 1.0.30001739 + caniuse-lite: 1.0.30001737 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -11246,8 +10905,6 @@ snapshots: caniuse-lite@1.0.30001737: {} - caniuse-lite@1.0.30001739: {} - caseless@0.12.0: {} chalk@2.4.2: @@ -12619,8 +12276,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} - glob@10.3.10: dependencies: foreground-child: 3.3.1 @@ -12798,8 +12453,6 @@ snapshots: immer@10.1.1: {} - immer@9.0.21: {} - import-cwd@3.0.0: dependencies: import-from: 3.0.0 @@ -12861,13 +12514,6 @@ snapshots: '@formatjs/icu-messageformat-parser': 2.11.2 tslib: 2.8.1 - intl-messageformat@9.13.0: - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/fast-memoize': 1.2.1 - '@formatjs/icu-messageformat-parser': 2.1.0 - tslib: 2.8.1 - ipaddr.js@2.2.0: {} is-array-buffer@3.0.5: @@ -13930,40 +13576,6 @@ snapshots: neo-async@2.6.2: {} - next-basics@0.36.0(next@13.5.11(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - bcryptjs: 2.4.3 - jsonwebtoken: 9.0.2 - next: 13.5.11(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - pure-rand: 6.1.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - next@13.5.11(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@next/env': 13.5.11 - '@swc/helpers': 0.5.2 - busboy: 1.6.0 - caniuse-lite: 1.0.30001739 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.28.3)(react@18.3.1) - watchpack: 2.4.0 - optionalDependencies: - '@next/swc-darwin-arm64': 13.5.9 - '@next/swc-darwin-x64': 13.5.9 - '@next/swc-linux-arm64-gnu': 13.5.9 - '@next/swc-linux-arm64-musl': 13.5.9 - '@next/swc-linux-x64-gnu': 13.5.9 - '@next/swc-linux-x64-musl': 13.5.9 - '@next/swc-win32-arm64-msvc': 13.5.9 - '@next/swc-win32-ia32-msvc': 13.5.9 - '@next/swc-win32-x64-msvc': 13.5.9 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - next@15.5.2(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@next/env': 15.5.2 @@ -14907,12 +14519,6 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - react-dom@19.1.1(react@19.1.1): dependencies: react: 19.1.1 @@ -14931,22 +14537,6 @@ snapshots: dependencies: react: 19.1.1 - react-intl@5.25.1(react@18.3.1)(typescript@4.9.5): - dependencies: - '@formatjs/ecma402-abstract': 1.11.4 - '@formatjs/icu-messageformat-parser': 2.1.0 - '@formatjs/intl': 2.2.1(typescript@4.9.5) - '@formatjs/intl-displaynames': 5.4.3 - '@formatjs/intl-listformat': 6.5.3 - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.24) - '@types/react': 18.3.24 - hoist-non-react-statics: 3.3.2 - intl-messageformat: 9.13.0 - react: 18.3.1 - tslib: 2.8.1 - optionalDependencies: - typescript: 4.9.5 - react-intl@7.1.11(react@19.1.1)(typescript@5.9.2): dependencies: '@formatjs/ecma402-abstract': 2.3.4 @@ -15027,10 +14617,6 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - react@19.1.1: {} read-babelrc-up@1.1.0: @@ -15303,10 +14889,6 @@ snapshots: safer-buffer@2.1.2: {} - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - scheduler@0.26.0: {} schema-utils@2.7.1: @@ -15534,8 +15116,6 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - streamsearch@1.1.0: {} - string-argv@0.3.2: {} string-hash@1.1.3: {} @@ -15652,13 +15232,6 @@ snapshots: style-search@0.1.0: {} - styled-jsx@5.1.1(@babel/core@7.28.3)(react@18.3.1): - dependencies: - client-only: 0.0.1 - react: 18.3.1 - optionalDependencies: - '@babel/core': 7.28.3 - styled-jsx@5.1.6(@babel/core@7.28.3)(react@19.1.1): dependencies: client-only: 0.0.1 @@ -16114,10 +15687,6 @@ snapshots: dependencies: react: 19.1.1 - use-sync-external-store@1.5.0(react@18.3.1): - dependencies: - react: 18.3.1 - use-sync-external-store@1.5.0(react@19.1.1): dependencies: react: 19.1.1 @@ -16163,11 +15732,6 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.4.0: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - web-streams-polyfill@3.3.3: {} webidl-conversions@4.0.2: {} @@ -16325,14 +15889,6 @@ snapshots: zod@4.1.5: {} - zustand@4.5.7(@types/react@18.3.24)(immer@9.0.21)(react@18.3.1): - dependencies: - use-sync-external-store: 1.5.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.24 - immer: 9.0.21 - react: 18.3.1 - zustand@5.0.8(@types/react@19.1.12)(immer@10.1.1)(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1)): optionalDependencies: '@types/react': 19.1.12 diff --git a/src/app/(main)/websites/[websiteId]/(reports)/funnels/FunnelEditForm.tsx b/src/app/(main)/websites/[websiteId]/(reports)/funnels/FunnelEditForm.tsx index 1cf2bca22..7d563b551 100644 --- a/src/app/(main)/websites/[websiteId]/(reports)/funnels/FunnelEditForm.tsx +++ b/src/app/(main)/websites/[websiteId]/(reports)/funnels/FunnelEditForm.tsx @@ -4,19 +4,19 @@ import { FormFieldArray, TextField, Grid, + FormController, FormButtons, FormSubmitButton, Button, + RadioGroup, + Radio, Text, Icon, Row, Loading, - Column, } from '@umami/react-zen'; import { useMessages, useReportQuery, useUpdateQuery } from '@/components/hooks'; -import { Close, Plus } from '@/components/icons'; -import { ActionSelect } from '@/components/input/ActionSelect'; -import { LookupField } from '@/components/input/LookupField'; +import { File, Lightning, Close, Plus } from '@/components/icons'; const FUNNEL_STEPS_MAX = 8; @@ -41,7 +41,6 @@ export function FunnelEditForm({ { onSuccess: async () => { touch('reports:funnel'); - touch(`report:${id}`); onSave?.(); onClose?.(); }, @@ -76,38 +75,57 @@ export function FunnelEditForm({ - {({ fields, append, remove, getValues }) => { + {({ fields, append, remove, control }) => { return ( - {fields.map(({ id }: { id: string }, index: number) => { - const type = getValues(`steps.${index}.type`); - + {fields.map((field: { id: string; type: string; value: string }, index: number) => { return ( - - - - - - - - - {({ field }) => { - return ; - }} - - - - + ); })} diff --git a/src/lib/prisma.ts b/src/lib/prisma.ts index fdba769c9..4ab4225e1 100644 --- a/src/lib/prisma.ts +++ b/src/lib/prisma.ts @@ -1,6 +1,7 @@ import debug from 'debug'; import { PrismaClient } from '@/generated/prisma/client'; -import { UmamiPrismaClient } from '@umami/prisma-client'; +import { PrismaPg } from '@prisma/adapter-pg'; +import { readReplicas } from '@prisma/extension-read-replicas'; import { SESSION_COLUMNS, OPERATORS, DEFAULT_PAGE_SIZE, FILTER_COLUMNS } from './constants'; import { QueryOptions, QueryFilters, Operator } from './types'; import { filtersObjectToArray } from './params'; @@ -8,6 +9,14 @@ import { filtersObjectToArray } from './params'; const log = debug('umami:prisma'); const PRISMA = 'prisma'; +const PRISMA_LOG_OPTIONS = { + log: [ + { + emit: 'event', + level: 'query', + }, + ], +}; const DATE_FORMATS = { minute: 'YYYY-MM-DD HH24:MI:00', @@ -209,7 +218,7 @@ async function pagedQuery(model: string, criteria: T, filters?: QueryFilters) return { data, count, page: +page, pageSize: size, orderBy, search }; } -async function pagedRawQuery( +async function rawPagedQuery( query: string, filters: QueryFilters, queryParams: Record, @@ -265,18 +274,52 @@ function transaction(input: any, options?: any) { return client.$transaction(input, options); } -function getClient() { - const prisma = new UmamiPrismaClient({ - url: process.env.DATABASE_URL, - prismaClient: PrismaClient, - logQuery: !!process.env.LOG_QUERY, +function getClient(params?: { + logQuery?: boolean; + queryLogger?: () => void; + replicaUrl?: string; + options?: any; +}): PrismaClient { + const { + logQuery = !!process.env.LOG_QUERY, + queryLogger, + replicaUrl = process.env.DATABASE_REPLICA_URL, + options, + } = params || {}; + + const url = new URL(process.env.DATABASE_URL); + + const adapter = new PrismaPg( + { connectionString: url.toString() }, + { schema: url.searchParams.get('schema') }, + ); + + const prisma = new PrismaClient({ + adapter, + errorFormat: 'pretty', + ...(logQuery && PRISMA_LOG_OPTIONS), + ...options, }); - if (process.env.NODE_ENV !== 'production') { - globalThis[PRISMA] = prisma.client; + if (replicaUrl) { + prisma.$extends( + readReplicas({ + url: replicaUrl, + }), + ); } - return prisma.client; + if (logQuery) { + prisma.$on('query' as never, queryLogger || log); + } + + if (process.env.NODE_ENV !== 'production') { + globalThis[PRISMA] = prisma; + } + + log('Prisma initialized'); + + return prisma; } const client = globalThis[PRISMA] || getClient(); @@ -294,7 +337,7 @@ export default { getTimestampDiffSQL, getSearchSQL, pagedQuery, - pagedRawQuery, + pagedRawQuery: rawPagedQuery, parseFilters, rawQuery, };