mirror of
https://github.com/wasp-lang/open-saas.git
synced 2025-04-09 20:39:02 +02:00
Updates for Wasp 0.15.0 (#255)
* Bumps Prisma to v5 Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> * Update Prisma to 5.19.1 * Update for React Router v6 * Update types dep * Update Prisma version * Update package-lock.json * update docs * Update main.wasp.diff * Add type: module * Updated app_diff with type:module change from package.json. * Updated version of Wasp in CI to 0.15.0-rc2. * Removed type:module from e2e-tests/package.json. --------- Signed-off-by: Mihovil Ilakovac <mihovil@ilakovac.com> Co-authored-by: vincanger <70215737+vincanger@users.noreply.github.com> Co-authored-by: Filip Sodić <filip.sodic@fer.hr> Co-authored-by: Martin Sosic <sosic.martin@gmail.com>
This commit is contained in:
parent
e7cf1ee582
commit
8a368532b4
12
.github/workflows/e2e-tests.yml
vendored
12
.github/workflows/e2e-tests.yml
vendored
@ -10,7 +10,7 @@ on:
|
||||
|
||||
env:
|
||||
WASP_TELEMETRY_DISABLE: 1
|
||||
WASP_VERSION: 0.14.0
|
||||
WASP_VERSION: 0.15.0-rc2
|
||||
|
||||
jobs:
|
||||
test:
|
||||
@ -56,7 +56,7 @@ jobs:
|
||||
run: |
|
||||
./tools/patch.sh
|
||||
|
||||
- name: "[e2e-tests] Install Node.js dependencies for Playwright tests"
|
||||
- name: '[e2e-tests] Install Node.js dependencies for Playwright tests'
|
||||
if: steps.cache-e2e-tests.outputs.cache-hit != 'true'
|
||||
working-directory: ./template
|
||||
run: |
|
||||
@ -78,14 +78,14 @@ jobs:
|
||||
path: ~/.cache/ms-playwright
|
||||
key: playwright-browsers-${{ env.PLAYWRIGHT_VERSION }}-${{ runner.os }}
|
||||
|
||||
- name: "[e2e-tests] Set up Playwright"
|
||||
- name: '[e2e-tests] Set up Playwright'
|
||||
if: steps.cache-playwright-browsers.outputs.cache-hit != 'true'
|
||||
working-directory: ./template
|
||||
run: |
|
||||
cd e2e-tests
|
||||
npx playwright install --with-deps
|
||||
|
||||
- name: "[e2e-tests] Install Stripe CLI"
|
||||
- name: '[e2e-tests] Install Stripe CLI'
|
||||
run: |
|
||||
curl -s https://packages.stripe.dev/api/security/keypair/stripe-cli-gpg/public | gpg --dearmor | sudo tee /usr/share/keyrings/stripe.gpg
|
||||
echo "deb [signed-by=/usr/share/keyrings/stripe.gpg] https://packages.stripe.dev/stripe-cli-debian-local stable main" | sudo tee -a /etc/apt/sources.list.d/stripe.list
|
||||
@ -95,13 +95,13 @@ jobs:
|
||||
# For Stripe webhooks to work in development, we need to run the Stripe CLI to listen for webhook events.
|
||||
# The Stripe CLI will receive the webhook events from Stripe test payments and
|
||||
# forward them to our local server so that we can test the payment flow in our e2e tests.
|
||||
- name: "[e2e-tests] Run Stripe CLI to listen for webhooks"
|
||||
- name: '[e2e-tests] Run Stripe CLI to listen for webhooks'
|
||||
env:
|
||||
STRIPE_DEVICE_NAME: ${{ secrets.STRIPE_DEVICE_NAME }}
|
||||
run: |
|
||||
stripe listen --api-key ${{ secrets.STRIPE_KEY }} --forward-to localhost:3001/payments-webhook &
|
||||
|
||||
- name: "[e2e-tests] Run Playwright tests"
|
||||
- name: '[e2e-tests] Run Playwright tests'
|
||||
env:
|
||||
# The e2e tests are testing parts of the app that need certain env vars, so we need to access them here.
|
||||
# These secretes can be set in your GitHub repo settings, e.g. https://github.com/<account>/<repo>/settings/secrets/actions
|
||||
|
@ -14,8 +14,8 @@ Since the demo app is just the open saas template with some small tweaks, and we
|
||||
|
||||
So because we don't version the actual demo app (`app/`) but its diffs instead (`app_diff`), the typical workflow is as follows:
|
||||
1. Run `./tools/patch.sh` to generate `app/` from `../template/` and `app_diff/`.
|
||||
2. If there are any conflicts (normally due to updates to the template), modify `app_diff/` till you resolve them.
|
||||
3. Make any changes in the `app/` if you wish, and then generate new `app_diff/` by running `./tools/diff.sh`.
|
||||
2. If there are any conflicts (normally due to updates to the template), modify `app/` till you resolve them. Do any additional changes also if you wish.
|
||||
3. Generate new `app_diff/`, based on the current updated `app/`, by running `./tools/diff.sh`.
|
||||
|
||||
> [!WARNING]
|
||||
> If you're running the `patch.sh` or `diff.sh` scripts on Mac, you need to have `grealpath` (packaged within `coreutils`) and `gpatch` installed. You should also create aliases for `realpath` and `patch`:
|
||||
|
@ -11,16 +11,16 @@
|
||||
+DOTENV_VAULT_DEVELOPMENT_VERSION=12
|
||||
+
|
||||
+# ci
|
||||
+DOTENV_VAULT_CI="2d/o/GNlLDr4CLqJdyEeusuZxMCIJw7lfqOmnC8TWMpqS+GMGHEUAQqssLTseFlEXWs9OIzxBaZosMter6cUOTcPri0yyGeIbrjqVjZHasmZ6f2fE6DtA6f/tzxuNOGwX186i9qQFRyE3oVUbzs1NLvbdSH5uGADJRZTaFD03BUbkWL01SoySWRWXQpZ88ZOENdfg4reaFTVsdb3auDW7pn19xUt+PnuZkupaXOVWScrM2kDdCC6njuovPRWBt5jgYcOEXSCwEhvRBcfd4kjEVT2Q5CJAvY3CGi9oVlw5164Y7jpShG8Yw+7FtwuIJYcQjXmMNG71j1JE+up8dPGi/vjP6EUFzbPguxzu7QtSMPoDgIcmA+OcrJA1zRhWEGTZvBsgc3i4lbPUHXYKtLtIRhRTX2KVp2z3Px+3dmaMycOkwmnKJ1yvRwaDCntpxlDtw11NuVSaDAoVxqbQe+BNxYMdnZAidGQN+Uhz6s94EMwcIaS2eH/lJc5OMTIJKHfT6lyvjVfQGmmKWmV+7A+iM0Yq+T3EWUY7/qCTdYexFBe+VmhD48pQJc/UBnf2RZknFLzKjXbXwtXLlbqCw0qnphDu/TaQOwPUNOLoDPEx4Ou9Iq4hDMeLIhY0lcQgBOP5fZl1IWMnT6itnyWGQgpFwhO5id4+nosytcOStsCe8ewBvTosxPqWNydXucJAgV5K1hlDfmZvtWHaLcLJJwcvx7B2k4qwWwQc/mmPJOisSgf1+MWW0OX/JcJkRF+Pw7n87CM015kJ7Vm3KPHxc2vRNWM0dlMgSqneHBlrgRbJK9qpce9+7fk93Er32squIG581Uv9aMArrO2uqeFeLR7senuYhWhl5Q1/ahrQVWz1b7jeGHd9tMOTVrs6jAyui70GacorztbRkS9r1EohxoMP5XismHgS7okvEPy16b3q/UBvNOTMm63+Jx5V0/RTa7eHe4lqNX98r8Nb3r87VHiZ9T9MwZ3FAwG4/RY3vuN52dMuzHmiBs30XE4fboLiQirUI8waCh/GhsrGeGUZT6S7zzqF06ahUm4th1kw++V0iIvzwTQYURMpMYhSQK5A5lN0xFDo31QqQr9eNZFtr6cKFW2fhbUrbRKLPLV/2A1CJBRXm54D+KMmeGD/x6DXDDeQmbu1UVO89/AIyBBnYZZ/egDF/lOoMC13VPsoXkOfGJ9OQVQwu8asa3CNurl+dn3WYoOk+TsIlj9uD+CY2d94jVyZ81MP+uSYfgkiXSmXy7i9YEVFBRZ2Ip+K1PEXdDCmbHZOkC5R5JCMKvYsQLXiRmUDPpbZmx9Ne3IC/eCTfHpz2lO+nvB7amsjXtOrXkIAGw26/2v3y/tpsC28wnlaHnO3Eo/TFkSAXxf7ihWYRnbNnWKeCUnDm/lrQ=="
|
||||
+DOTENV_VAULT_CI_VERSION=7
|
||||
+DOTENV_VAULT_CI="pveNDc605iqf5ZOh9mvYpFOc925852DGrvz7y+vs82ub3bZvTiLhJMuJKZEDtyjn7yBUdfMRsAP6wAL8/73te+4y7K56lT48MuvFlpvwM9ERkCzJY1yZ6ib3eBzTax/jon2H5kfEHBM9TRIa5B8JrCHbYqhcrnxj0VyLEa4x1I4pMTdesRZ+907FTdExaRSFFujdkUaScytOV93DTr2lQZpUGBga5CbKr3KyeSS1+ONGSWc+BQiAkdhmnvPsyKHnWRKHSFVhInne2W00LFZLBZ56I4+G7D+x+ze3/WNb5GSq7eNlVwnTJgj5AXJBjtAV/uD7cmOnJ3h+lOkvz3Wry10BaICTAx5SVfOuD5Pr/FLgR2zJau+pgqhRdcp7gG4y2thWN5ZtlLGnJlL7xgnRaD+oIYBn6fg8CCZsnsX2XZHAzJcgntph2pUd0At4UawSijDVZuylcneNdF3CJ68/fcqqpR94LYU61w4WasrAWj1hFiRV1MTpLkdQWTMT6K5k5TDouuljI3nt+Upf9mDK7efjy7OTiiArNxKpUxUy31Kl0TgWTsttDFbcOGwbsxq1t/Tu9Ph0eEhwHc2dTUuSuhV+PHxE8GwUvGiIDBbAZZq7ZyeLc5btdP++8zdXBtYM7bIa9qubaCWakruk31w6Gm5ySjGY+R1HGURldXJmypsAEcu5kK3IX4Z8IubF79T8ZvutLdoXJPSaH9x8ij7EcamTVfZPmekj6FpI3sqy7rmaUup73MBld9a3r9AQTzXbEmR+2xbK488D1il8PUqu9J3QkUeF2rpB97Uy2mgl1zF8VXiGkdP1Hpqeck8FpS89GWFF4FA3oBE/Keqvqvvs/f+KzDn2AvHHwrT6fnVBdeuSp4hK+sSkig1rh+1P69zYjIDqpph0kT+Ri7uNMkbrXX7iT5he9J1LrXtiM/DLxXqi8M3FfeN7aaSxQ2nzac1mlN+vwsIqJbzOSm+ABGHNJNjPjBZpMbeBZsFwogaCbFd2oorp02h6yC6741qwH7gFEr1EJVcu+TJspHyKpq4TFIk+srRMhuCqwUAkdzY4skjEGVhxxYMiKAtRg5IKYICqbfNsestMipAcf22teriGnmqBe9Yuzq9IXZXRcl/etagr0/B3SQhNlVj2u9VMBfhj5ZY+QcQDfSjqOcW/DyphyBU4T1/rHn1x5RznCvtbOPZ+XXFApZaeoKzj/s8JxHzM8aegITx3jVRwXnr0/0FnHTnC34b124K6HM3oKxdPdrtACgW8gH+mgXCaStBqwBdk1aV62+YQxWdHXjy9FAvTF8BktcxwE0TXC5Qu0JsoS8uYbbQmaQCNWIJWF/KptW+g9gkKDBV2Iq5mXwMLHzCtzxGarj5jqznVEX4OdbYbgSOZ5mB5JEU2OwSn2QtzqUVquAN+DygbDVrh1+KA9bk4HMt38rMKHV/i9VBHkuApYT7OUIexCu4jxUDBnid/Hnm3OfMvXrUesoqFv2cYEHX8R/jvhLx36jEWeaTYL+e9XFpSLlWJTGc7wAg0Zj+XJlNtLhFlB6pw"
|
||||
+DOTENV_VAULT_CI_VERSION=8
|
||||
+
|
||||
+# staging
|
||||
+DOTENV_VAULT_STAGING="GSG9LIe/+1lHgCvXcwD2kCP70mEVLrzT3/8sOvSpylcf3q4wn4j5G0RoeEVbShGqJNXDpvhA4v+zW5kDw+zIrWN2cnesoaZ83CjqbpwNIDYyX7T7EgeNB7EySvIs+2HI9gdSM5IU1c9zC/q/5BIgIaMrwaTT7+FWudeKhmQvCBaxgctFSc/b+Ft5y9jhkjC9mHnfmtkBqNKJiqzEJVkd6Rg64qmjE87SDQL87QH8YgU5xje7Rgcie07F9kLxXy8YRgADvWJjHdRrBlXg8wZkDXTcBCVQZNdtxWiYVArIDFxUc2obCBevL+wKTGzyBuvjQDoh1Dl0eMaAovIhejWKwfEK3g5Go6+YT8rK2ol61ONBAJ8sbzu425MZ3aGYAJ97kgdpIUjGVdh/j6x2GFhNgHX3AwRdXRVdhoAAlzbQG7rGaZXUKLaYKkpshDmo8f0dgNvp2waoq5fM9+sMwoUaZKr/rmPmOTmIOzpqztIboYYE9MXRsOGMXcCxAqLMHNzvD/JSFdz2DiOqzq1EnPspsyIQfMniF+QOQKABTX7ttGB7Lr5cy1DFjcg3e8jC/9d2Ip47RrRF50AabuoefkjMEMQamuxWD1sdZ2WodakObyFO0t+JC+GxL3UDLtxLjdGLztLAjKomxGE1Lkbjr65ptxyuOJIiG7WfmgyxNsZXnFW40M+Jk0CbW2xytuoVrtc1Eys23NcWRqvs6HR/oN+F2765dkrsgmb03gEMl9ePwzZMtU2H5SUhCDqkr19pKHNFul5k2BxwehSPqOlek5lIcULlY7I/TxutwfHsfunUx+KmkrAHhRboETinG0SP3HR2OqH/wo4wYKwmED/AwGsboLmGjXI24sLRyxwiJ3kEzyXgkk+8a/1KYggCKmsG914bWYu0qdvr2xAN/xrt5ouLk9TdJwNoAjBk4H5cx25WAIVWijjHsOHAaYVpfmHd6QZlskQZsHje/6AmA65nRKd94ARPe7+Qr6teuXpbA/2nV9ZmguOg0BWIEsBW3qPIZqyBxfspYsqCGWR5NdBwddN6wKQDeJZKQOg3BOoU0zfPT4asEQ13UDuWy3kBEj9idbz1K2UjHSePX/ahB2Ox9wodlFf0JMOLG+xL8H2Ji4J/pxEAarxXe3I3LngWz5nQUZ21XRUcS58eEH+X/9RKwQ/Twoec/q8YNGvtmB0cc/D/pgA0wigWiF9PabzyjReg3mNYr6j1IeYAZt+LVks5JpDNGH8LyanH77q2X9D6IyJNYJ3JMhERTW9KCl06PqWZThUBxXhXveo92+AeM9681L5TJVW6Pv47vh1M1dR2Vzu9LlRkgewnzojae9eZ2bLz3ODjm3+01nJQlCSLUt5W3KrbjaqLbfD4cx3s+YIRbIhFRSFNSSTqnBW9pCHEEA=="
|
||||
+DOTENV_VAULT_STAGING_VERSION=7
|
||||
+DOTENV_VAULT_STAGING="nAXVAHQaoF1R6J23PDrfp6kH0L+nXmZaI0OUfcCBU7QSfP+K3mbkdO92cbKVUN6ycc1wxRue6BFLEUgBLuCJQwUdKYevK81fs/ACrHYxuW6Px85FG3NJVLGvgF/3qiqu0RRfcpeB6lYJCAPFsYcoA9Cx8QDkYmvSlWAGmLJQ7cqzHUNlveOqtrXsLFV2OjlWjlYD1l7VQkaXnsY+Mij60DbRIadusoDuAB3z5m7N8/ogMOGENlUl9HRJJ4ppcJiHoBm7pxrLpK0oubx3KEDTSkPVlpNb1YYMeU2VKiGYCOMyXX8IguISrrgU4hHEvbLM8F3gnKHyx59qbwU/32yX7ofIIPsTLLTwD+mHWElPoLs9WWq249RYEmRT7w5iuCdjl9Qlr36EJKPYc7UG+P0DZROb7pXcbtYg8/gfaCXOQG5Ue2FMon4bEphkmY1CKaJKtPTXNuecDVTa8O4hEM65xrEClieVUgexEaM0g7fEUo8wOljZx96gG8Mf4RqHX3xy4M0d4/2UluE053kavUaTULhRPG/oTHIGiKFRnG0BfgQFcGRXkFgLG9zerVAoWEGAcBGHn5NECIUWqaD2Z7sdEZd9R0SZmtwUXoPV1jqHNeKEvt7fUN8xcPsV1MFAUi2cAyGLkrl541KbWpU0IpHK1pIkbfUVyDOL4htSD/SajhtlyJ79q7Xd5sKsb273ZQsmtk3ZREBjQUFA2NP+fPH7ifttVeWi3EFUi8+8cWwgNHM6Cn7LaFitah6+DcCQ6+l7SneFTEbzMlprzazBBL/Gu4kr6pNXGX0RZnR8uhs6aZZgV2h9V14s0uZx3EcAFqC3g+I5X08Fi+2ERpcfWUvFdjx5akmDQllSB+oqy6SxiJvqFnfWvVPQNhx1xh2x8OplZbzykEJ+Tfl0mlc5UHHoLQqje0jagBRSHWQbxC0jIGGyqdhnz3uG672krM/zTTc2wKWMk4EZFDG7Yc7oz3DcJXjFBgxEagd9jYxqLIN0RAH9pq+0aUP7daz0CbX+xhTd988dl+LblcnEN59XEsBOhWCd5bm51KJZcKQ1UpsVVPGHnTT7MPE2+6BheEr1dgu/LDUPDW8NT0QwBUwXwxH1ROuTOu2+LWNdFrV11sEpKGfW2bjqrkpbx/xovahbFyCSq12T0EBInAFF5bq2pB0Ik2vfEH8gNL0Z+FoqH0/aDrSuw6j8xqmd2rKL3XwL5bYVZDCc1isAWXESA9CHHTSx1NGoa1kpunJkGJY//2rn5srK9RlOOHxxUrtqVBMfEGsj7qIv/Ebsgr3dvFpdVXiRZ5s3KZZs6YlSXyukklehkjtYoMM2TaZ478ioFOtD8yx12PjI3Pfoapo2La2boM48RFcipmVNpWNsLjGXaYyhYVV3RBsZAMvkOnYRVFUiZ50+ETdfizX0H23+mmkBt8FjNqHhvg9BIRaYnKTar1FPAd840lo4w2e7n2mKufHwykI5ILrJV0ozhPy7Yr8kltPiQYjpy1ua2scUdnKCngdX0KjqNQz072e6uYlhRpOib6CEwZXqMbr/"
|
||||
+DOTENV_VAULT_STAGING_VERSION=8
|
||||
+
|
||||
+# production
|
||||
+DOTENV_VAULT_PRODUCTION="tnCGeONjuw95xeIn1a/07iux4KekBaVVjCZ6Rf9CKWnV/jRojO1rbF2zJLpSdAY1FoSgiZhUntnyJNGJBdx3QlCD2o5MSkNKtBre0W6rHj825ZgoICRuz2cwfWq5WVEPiPA16uZhHdujbnWfR646tTnkMb6LN+1wPpwuetwsHBEXabMG/7H2UT20XUChtzzm+qFmFPTg2dcS62xyXnJM1NvU5vL8D1By9Jc4uYezrIgFvPKENky6mg3S1uQhqRyzcSxLG1+amC18q1c0bOzgGJoJ5j06tbGvSES7aY09gKlNjduPstAWABoCBFQScPqgi/DttxjW2GDdOS0csOaWDAsgT9wHzrzdFTAEXKFHBUxebIlNvwOvX1ME+hPlHeBcicHHfDLbcFbj3L/2Su19KzmD4LOAcApZrkoQwrWIZE7KkluetQXIRHiDKAA4cd+UXHQe6PURT7ObiX7zHNXPM6shSSAPa6iWMOMZndM4CAUZJrzYYMnlZ1D9MCkMZTN608+f2A8JsbmbceUbLeiHpXtpmLkvkKb1pJ9uKQP38VGBQtqylcfStpEVOPX67VV/U88+BZu8E8+am072mb+fvrT+yNqmcNm6byo1+48Y96QN8i1J3qerrv3kcVWDbNKQEgyOG7UJEe2JXEFnLXYdnph10X7KAlsmfVacY8quXB8tIWdx2LbBTAB6zokifoLq5rikbXjFUKw0q0vREIspy5vtoKNDyttbc6Emsy+J/sHlS8c1TKdu1bQRPlMyoANCBVZpNuV9FRSSKJR0jRzNq4hBid28MSR8G0r059UH2nNekge9Yig35OifaLmDv6kBLmUMMKyLO/dCSH0MsOWl1TD86XZZBWCUrYayt/Ev6WbQQcDA7OOww+1OzhX712BxPZWB7iSKqaQl9wImn/cKLHa8vBvQWuq9MK9NAMNHzu8bytoaUiixgPRHsGuR8OPyvCH0EG1NnilcRSHwSDP1n+11WFsjeCYORMSdXpFzmWsuHCVMQ9T7Z/oLmAbVcAjUvGQUce9ABOeOwp2R4+p8YOFX8sAP8EkORXgKZCk+o7siusHj9nd5xNojQxDGfREQhx76Mdn6Gtg0fAT8iEGfS7+RQwu5wwr/wlxaBC8TXuunOzcgi6CO/Q+i56JBiyGKOt8Sg5MZVE9QXiEBT9rd3Emnqeu9gTJ0RuU18FwLuyM9f1VNx+JJmRBACsn1nc6JFtpd+3+yihoxyIKf/PTpyO2SMKybo8q1fVrXTlTOfNkHRTROUVpwBzAVzjWqajuY70Bz8TM6+tFKXCF7/RS94RmQCp/grc6c1DrIeAjOl1YUYPeOjVCyyY9EcMS8z+lmoIftz4ul0EH8AMPSZTw9bpJ3Waeo/V6zra5vuVPxaO0Mc66B8j4VsMUuVg=="
|
||||
+DOTENV_VAULT_PRODUCTION_VERSION=7
|
||||
+DOTENV_VAULT_PRODUCTION="zGpYx7O6vRv3vYt0aW1H6UF3TSi6DUFgqjeKzkNcJukFWQWvTgX5HYtLKQnBAGCDpuWY+KWfiFGNu/zVouo5LTlQb6apzBLzj0dr+PxxDpjXe8s+q7OSPH7Ist4UiVurC2nAMjgFsUpDA2LUkfPOuWPRvg1UGYjTaxEADTYCI/vk0Uegv4R11K1/HcCGXlliJk2QAVaT5ZYSo0VKvcRu5HYHSX4aAwJgnucm3xvNmPn9Cjkxx1jZL5jYfzLS1etDEPn6slDj88NzZ8BvXHeSJUftpR352azOJpL0GbSKrwoPNYU9F2JCthilLqPZPC6LJzg0/4p5vUKA83gqnDnUxEHR+ZlNK0MRTQPEwrZitruOaP1ggWIsEJA/DZFMLA5oQrq4kp+p2E99YbsPNmV0LfvsA6LtqKv393jsuzSdJ94zeLhQlRRECiTQRVEee3ug5tJ0f34N7acRSv4EdgriKp8poIsE4miVK2xXwrek9jRxeXLHzu7Oo8yBkYaX2DqtXyxf+8Qq2WgvdRm9QgfGdiwftYsjXO52jhHI7z7bJ3R/W5BR+Z0QbR83LR3ZWdI+AYY9F2CkYF62nW5TVxiWU0M4DZ5KUgVo+iNgm+AV0nefgFvud6Ln3VtNcb2bT0RFAw4MJK0LyYlNewZBJQhlfRiN+3xJKqLbDKMlhGmSHF8RRNYN9MfKwOfF62jNFlwPjgyGCjuQL96L97z50Q63TMbpEciR0uNcMavIADPs1qDhCSkYO4rQO1IgOUF34trra9KKRfoP2UdDJhiqvlTQ2Ygu2uc164Vho0E003jlBBZBI+UUJhPz4cYTtFJjpinRCp/Q0mUeiTLbo1V7T32IQ+ZkUqO7FRuwxR282OzKQVRZiUxuOAa7WxdQzrcXbCOcCvJWX8hTVrSim9z+NAFxNyTCwVBhek9EfwCfxJSCuFuI9axlb6xA1sZ/61G5+wuKeEpUvlTbQC/ZT1QJqpKMmujEePAfW++dzJJgW/nX9o0CIt3KTzwVzImAe+/oNhzKn0TbzsvMqeOaTgymo2re0Rdw3P/Fk5SUQTM7+2GIFC+iRC5a3LN7UOFP+UdQ21J+WGkkl+yvJyyjY3IRSoFWqSCU7BAjULmJmtkl1Y/60vIj+GET5hu7VGaTlIgaWiVZc4eGAu6UAeGzasTjYWNQh50p44VxQlYBijJC+JUhzPkFOLjaLx6rRZzTQVl9NUxIxdkaOn+BImJQadaC2Ad3YOMpsLVJF/p25fi2L2e2MtsDdcx2ZNlpV1GIrYGqMIiujPdpoMzibj4VmObVMB6dazpyqgAf/QXdGguyv/4JJBcNUNPbqHqMl0yY+DzGzxPCKx6WViR63HZJeC5hJE39wNEgeYGJcXrL5K2siwrFENns8Os93aoE/8xgiPdj3vLQmcL0Z30XEqPl6/V4mTgc2Oa1SAi1NGLXnVsYJ/h1Rr4a9T11zkKhRCIvT4Jd5WpvGjG3f9t7YUigb6BqlMc0BTJ6ufQP/xBBOHqzoUs3gVk4HTMDfpYwO9k9SJNkfWBn1iV102BJ"
|
||||
+DOTENV_VAULT_PRODUCTION_VERSION=8
|
||||
+
|
||||
+#/----------------settings/metadata-----------------/
|
||||
+DOTENV_VAULT="vlt_47e3eeb0730e831e688049600e59f8975260a1f00302ae08684ed87ba67872d0"
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- template/app/main.wasp
|
||||
+++ opensaas-sh/app/main.wasp
|
||||
@@ -3,24 +3,24 @@
|
||||
version: "^0.14.0"
|
||||
version: "^0.15.0"
|
||||
},
|
||||
|
||||
- title: "My Open SaaS App",
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,9 @@
|
||||
--- template/app/package.json
|
||||
+++ opensaas-sh/app/package.json
|
||||
@@ -1,12 +1,16 @@
|
||||
@@ -1,13 +1,17 @@
|
||||
{
|
||||
"name": "opensaas",
|
||||
"type": "module",
|
||||
+ "scripts": {
|
||||
+ "env:pull": "npx dotenv-vault@latest pull development .env.server",
|
||||
+ "env:push": "npx dotenv-vault@latest push development .env.server",
|
||||
|
@ -3,7 +3,7 @@
|
||||
@@ -1,8 +1,14 @@
|
||||
-import { Link } from 'react-router-dom';
|
||||
-import { LoginForm } from 'wasp/client/auth';
|
||||
+import { Redirect, Link } from 'react-router-dom';
|
||||
+import { Navigate, Link } from 'react-router-dom';
|
||||
+import { LoginForm, useAuth } from 'wasp/client/auth';
|
||||
import { AuthPageLayout } from './AuthPageLayout';
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
+ const { data: user } = useAuth();
|
||||
+
|
||||
+ if (user) {
|
||||
+ return <Redirect to='/demo-app' />;
|
||||
+ return <Navigate to='/demo-app' />;
|
||||
+ }
|
||||
+
|
||||
return (
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Admin Dashboard
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
This is a reference on how the Admin dashboard is set up and works.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: User Overview
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
This reference will help you understand how the User entity works in this template.
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Analytics
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
This guide will show you how to integrate analytics for your app. You can choose between [Google Analytics](#google-analytics) and [Plausible](#plausible).
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Authentication
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
Setting up your app's authentication is easy with Wasp. In fact, it's already set up for you in the `main.wasp` file:
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Authorization
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will help you get started with authorization in your SaaS app.
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Cookie Consent Modal
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
<img src="/cookie-consent/cookiebanner.png" alt="cookie banner" width="400px" />
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Deploying
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
Because this SaaS app is a React/NodeJS/Postgres app built on top of [Wasp](https://wasp-lang.dev), we will direct you to the [Wasp Deployment Guide](https://wasp-lang.dev/docs/advanced/deployment/overview/) for more detailed instructions, except for where the instructions are specific to this template.
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Email Sending
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
import { Tabs, TabItem } from '@astrojs/starlight/components';
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: File Uploading
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will show you how to set up file uploading in your SaaS app.
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Payments Integration
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will show you how to set up Payments for testing and local development with the following payment processors:
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: SEO
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guides explains how to improve SEO for of your app
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Tests
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will show you how to use the included end-to-end (e2e) tests for your Open SaaS application.
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Introduction
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
## Welcome to your new SaaS App!
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Getting Started
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
This guide will help you get your new SaaS app up and running.
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Guided Tour
|
||||
banner:
|
||||
content: |
|
||||
Open SaaS is now running on <a href='https://wasp-lang.dev'>Wasp v0.14</a>! <br/>🐝🚀<br/>If you're running an older version, please follow the <a href="https://wasp-lang.dev/docs/migrate-from-0-13-to-0-14">migration instructions.</a>
|
||||
🆕 Open SaaS is now running on <b><a href='https://wasp-lang.dev'>Wasp v0.15</a></b>! <br/>⚙️<br/>If you're running an older version and would like to upgrade, please follow the <a href="https://wasp-lang.dev/docs/migration-guides/migrate-from-0-14-to-0-15">migration instructions.</a>
|
||||
---
|
||||
|
||||
Awesome, you now have your very own SaaS app up and running! But, first, here are some important things you need to know about your app in its current state:
|
||||
|
@ -1,6 +1,6 @@
|
||||
app OpenSaaS {
|
||||
wasp: {
|
||||
version: "^0.14.0"
|
||||
version: "^0.15.0"
|
||||
},
|
||||
|
||||
title: "My Open SaaS App",
|
||||
|
@ -1,5 +1,6 @@
|
||||
{
|
||||
"name": "opensaas",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.523.0",
|
||||
"@aws-sdk/s3-request-presigner": "^3.523.0",
|
||||
@ -29,8 +30,7 @@
|
||||
"devDependencies": {
|
||||
"@types/express": "^4.17.13",
|
||||
"@types/react": "^18.0.37",
|
||||
"@types/react-router-dom": "^5.3.3",
|
||||
"prisma": "4.16.2",
|
||||
"prisma": "5.19.1",
|
||||
"typescript": "^5.1.0",
|
||||
"vite": "^4.3.9"
|
||||
}
|
||||
|
@ -103,8 +103,8 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
{/* <!-- Menu Item Dashboard --> */}
|
||||
<NavLink
|
||||
to='/admin'
|
||||
isActive={(_match, location) => location.pathname === '/admin'}
|
||||
className={(isActive) =>
|
||||
end
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
@ -147,7 +147,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<li>
|
||||
<NavLink
|
||||
to='/admin/users'
|
||||
className={(isActive) =>
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
@ -185,7 +185,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<li>
|
||||
<NavLink
|
||||
to='/admin/settings'
|
||||
className={(isActive) =>
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
@ -234,7 +234,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<li>
|
||||
<NavLink
|
||||
to='/admin/chart'
|
||||
className={(isActive) =>
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
@ -279,15 +279,12 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<React.Fragment>
|
||||
<NavLink
|
||||
to='#'
|
||||
isActive={(_match, location) => location.pathname.includes('forms')}
|
||||
className={(isActive) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
'bg-gray-700 dark:bg-meta-4': isActive,
|
||||
}
|
||||
)
|
||||
}
|
||||
className={cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
'bg-gray-700 dark:bg-meta-4': pathname.includes('forms'),
|
||||
}
|
||||
)}
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
sidebarExpanded ? handleClick() : setSidebarExpanded(true);
|
||||
@ -347,7 +344,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<li>
|
||||
<NavLink
|
||||
to='/admin/forms/form-elements'
|
||||
className={(isActive) =>
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-md px-4 font-medium text-bodydark2 duration-300 ease-in-out hover:text-white',
|
||||
{ '!text-white': isActive }
|
||||
@ -360,7 +357,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<li>
|
||||
<NavLink
|
||||
to='/admin/forms/form-layouts'
|
||||
className={(isActive) =>
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-md px-4 font-medium text-bodydark2 duration-300 ease-in-out hover:text-white',
|
||||
{ '!text-white': isActive }
|
||||
@ -383,7 +380,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<li>
|
||||
<NavLink
|
||||
to='/admin/calendar'
|
||||
className={(isActive) =>
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
@ -417,15 +414,12 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<React.Fragment>
|
||||
<NavLink
|
||||
to='#'
|
||||
isActive={(_match, location) => location.pathname.includes('ui')}
|
||||
className={(isActive) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
'bg-gray-700 dark:bg-meta-4': isActive,
|
||||
}
|
||||
)
|
||||
}
|
||||
className={cn(
|
||||
'group relative flex items-center gap-2.5 rounded-sm py-2 px-4 font-medium text-bodydark1 duration-300 ease-in-out hover:bg-gray-700 dark:hover:bg-meta-4',
|
||||
{
|
||||
'bg-gray-700 dark:bg-meta-4': pathname.includes('ui'),
|
||||
}
|
||||
)}
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
sidebarExpanded ? handleClick() : setSidebarExpanded(true);
|
||||
@ -484,7 +478,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<li>
|
||||
<NavLink
|
||||
to='/admin/ui/alerts'
|
||||
className={(isActive) =>
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-md px-4 font-medium text-bodydark2 duration-300 ease-in-out hover:text-white',
|
||||
{ '!text-white': isActive }
|
||||
@ -497,7 +491,7 @@ const Sidebar = ({ sidebarOpen, setSidebarOpen }: SidebarProps) => {
|
||||
<li>
|
||||
<NavLink
|
||||
to='/admin/ui/buttons'
|
||||
className={(isActive) =>
|
||||
className={({ isActive }) =>
|
||||
cn(
|
||||
'group relative flex items-center gap-2.5 rounded-md px-4 font-medium text-bodydark2 duration-300 ease-in-out hover:text-white',
|
||||
{ '!text-white': isActive }
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { type AuthUser } from 'wasp/auth';
|
||||
import { useEffect } from 'react';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
|
||||
export function useRedirectHomeUnlessUserIsAdmin({ user }: { user: AuthUser }) {
|
||||
const history = useHistory();
|
||||
const navigate = useNavigate();
|
||||
|
||||
useEffect(() => {
|
||||
if (!user.isAdmin) {
|
||||
history.push('/');
|
||||
navigate('/');
|
||||
}
|
||||
}, [user, history]);
|
||||
}
|
||||
|
@ -4,13 +4,13 @@ import './Main.css';
|
||||
import AppNavBar from './components/AppNavBar';
|
||||
import CookieConsentBanner from './components/cookie-consent/Banner';
|
||||
import { useMemo, useEffect, ReactNode } from 'react';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import { Outlet, useLocation } from 'react-router-dom';
|
||||
|
||||
/**
|
||||
* use this component to wrap all child components
|
||||
* this is useful for templates, themes, and context
|
||||
*/
|
||||
export default function App({ children }: { children: ReactNode }) {
|
||||
export default function App() {
|
||||
const location = useLocation();
|
||||
const { data: user } = useAuth();
|
||||
|
||||
@ -46,11 +46,13 @@ export default function App({ children }: { children: ReactNode }) {
|
||||
<>
|
||||
<div className='min-h-screen dark:text-white dark:bg-boxdark-2'>
|
||||
{isAdminDashboard ? (
|
||||
<>{children}</>
|
||||
<Outlet />
|
||||
) : (
|
||||
<>
|
||||
{shouldDisplayAppNavBar && <AppNavBar />}
|
||||
<div className='mx-auto max-w-7xl sm:px-6 lg:px-8'>{children}</div>
|
||||
<div className='mx-auto max-w-7xl sm:px-6 lg:px-8'>
|
||||
<Outlet />
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
@ -1,16 +1,16 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useHistory, useLocation } from 'react-router-dom';
|
||||
import { useNavigate, useLocation } from 'react-router-dom';
|
||||
|
||||
export default function CheckoutPage() {
|
||||
const [paymentStatus, setPaymentStatus] = useState('loading');
|
||||
|
||||
const history = useHistory();
|
||||
const navigate = useNavigate();
|
||||
const location = useLocation();
|
||||
|
||||
useEffect(() => {
|
||||
function delayedRedirect() {
|
||||
return setTimeout(() => {
|
||||
history.push('/account');
|
||||
navigate('/account');
|
||||
}, 4000);
|
||||
}
|
||||
|
||||
@ -23,7 +23,7 @@ export default function CheckoutPage() {
|
||||
} else if (isSuccess) {
|
||||
setPaymentStatus('paid');
|
||||
} else {
|
||||
history.push('/account');
|
||||
navigate('/account');
|
||||
}
|
||||
delayedRedirect();
|
||||
return () => {
|
||||
|
@ -3,7 +3,7 @@ import { generateCheckoutSession, getCustomerPortalUrl, useQuery } from 'wasp/cl
|
||||
import { PaymentPlanId, paymentPlans, prettyPaymentPlanName } from './plans';
|
||||
import { AiFillCheckCircle } from 'react-icons/ai';
|
||||
import { useState } from 'react';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { cn } from '../client/cn';
|
||||
|
||||
const bestDealPaymentPlanId: PaymentPlanId = PaymentPlanId.Pro;
|
||||
@ -48,11 +48,11 @@ const PricingPage = () => {
|
||||
error: customerPortalUrlError,
|
||||
} = useQuery(getCustomerPortalUrl, { enabled: isUserSubscribed });
|
||||
|
||||
const history = useHistory();
|
||||
const navigate = useNavigate();
|
||||
|
||||
async function handleBuyNowClick(paymentPlanId: PaymentPlanId) {
|
||||
if (!user) {
|
||||
history.push('/login');
|
||||
navigate('/login');
|
||||
return;
|
||||
}
|
||||
try {
|
||||
@ -73,7 +73,7 @@ const PricingPage = () => {
|
||||
|
||||
const handleCustomerPortalClick = () => {
|
||||
if (!user) {
|
||||
history.push('/login');
|
||||
navigate('/login');
|
||||
return;
|
||||
}
|
||||
|
||||
|
95
template/e2e-tests/package-lock.json
generated
95
template/e2e-tests/package-lock.json
generated
@ -10,9 +10,9 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@playwright/test": "^1.42.1",
|
||||
"@prisma/client": "^4.16.2",
|
||||
"@prisma/client": "5.19.1",
|
||||
"linebyline": "^1.3.0",
|
||||
"prisma": "^4.16.2"
|
||||
"prisma": "5.19.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.0.0"
|
||||
@ -33,15 +33,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/client": {
|
||||
"version": "4.16.2",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.16.2.tgz",
|
||||
"integrity": "sha512-qCoEyxv1ZrQ4bKy39GnylE8Zq31IRmm8bNhNbZx7bF2cU5aiCCnSa93J2imF88MBjn7J9eUQneNxUQVJdl/rPQ==",
|
||||
"version": "5.19.1",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.19.1.tgz",
|
||||
"integrity": "sha512-x30GFguInsgt+4z5I4WbkZP2CGpotJMUXy+Gl/aaUjHn2o1DnLYNTA+q9XdYmAQZM8fIIkvUiA2NpgosM3fneg==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@prisma/engines-version": "4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=14.17"
|
||||
"node": ">=16.13"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"prisma": "*"
|
||||
@ -52,16 +50,50 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/debug": {
|
||||
"version": "5.19.1",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.19.1.tgz",
|
||||
"integrity": "sha512-lAG6A6QnG2AskAukIEucYJZxxcSqKsMK74ZFVfCTOM/7UiyJQi48v6TQ47d6qKG3LbMslqOvnTX25dj/qvclGg==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@prisma/engines": {
|
||||
"version": "4.16.2",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.16.2.tgz",
|
||||
"integrity": "sha512-vx1nxVvN4QeT/cepQce68deh/Turxy5Mr+4L4zClFuK1GlxN3+ivxfuv+ej/gvidWn1cE1uAhW7ALLNlYbRUAw==",
|
||||
"hasInstallScript": true
|
||||
"version": "5.19.1",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.19.1.tgz",
|
||||
"integrity": "sha512-kR/PoxZDrfUmbbXqqb8SlBBgCjvGaJYMCOe189PEYzq9rKqitQ2fvT/VJ8PDSe8tTNxhc2KzsCfCAL+Iwm/7Cg==",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@prisma/debug": "5.19.1",
|
||||
"@prisma/engines-version": "5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3",
|
||||
"@prisma/fetch-engine": "5.19.1",
|
||||
"@prisma/get-platform": "5.19.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/engines-version": {
|
||||
"version": "4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.16.1-1.4bc8b6e1b66cb932731fb1bdbbc550d1e010de81.tgz",
|
||||
"integrity": "sha512-q617EUWfRIDTriWADZ4YiWRZXCa/WuhNgLTVd+HqWLffjMSPzyM5uOWoauX91wvQClSKZU4pzI4JJLQ9Kl62Qg=="
|
||||
"version": "5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3.tgz",
|
||||
"integrity": "sha512-xR6rt+z5LnNqTP5BBc+8+ySgf4WNMimOKXRn6xfNRDSpHvbOEmd7+qAOmzCrddEc4Cp8nFC0txU14dstjH7FXA==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/@prisma/fetch-engine": {
|
||||
"version": "5.19.1",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.19.1.tgz",
|
||||
"integrity": "sha512-pCq74rtlOVJfn4pLmdJj+eI4P7w2dugOnnTXpRilP/6n5b2aZiA4ulJlE0ddCbTPkfHmOL9BfaRgA8o+1rfdHw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@prisma/debug": "5.19.1",
|
||||
"@prisma/engines-version": "5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3",
|
||||
"@prisma/get-platform": "5.19.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@prisma/get-platform": {
|
||||
"version": "5.19.1",
|
||||
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.19.1.tgz",
|
||||
"integrity": "sha512-sCeoJ+7yt0UjnR+AXZL7vXlg5eNxaFOwC23h0KvW1YIXUoa7+W2ZcAUhoEQBmJTW4GrFqCuZ8YSP0mkDa4k3Zg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@prisma/debug": "5.19.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.19.24",
|
||||
@ -119,19 +151,36 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prisma": {
|
||||
"version": "4.16.2",
|
||||
"resolved": "https://registry.npmjs.org/prisma/-/prisma-4.16.2.tgz",
|
||||
"integrity": "sha512-SYCsBvDf0/7XSJyf2cHTLjLeTLVXYfqp7pG5eEVafFLeT0u/hLFz/9W196nDRGUOo1JfPatAEb+uEnTQImQC1g==",
|
||||
"version": "5.19.1",
|
||||
"resolved": "https://registry.npmjs.org/prisma/-/prisma-5.19.1.tgz",
|
||||
"integrity": "sha512-c5K9MiDaa+VAAyh1OiYk76PXOme9s3E992D7kvvIOhCrNsBQfy2mP2QAQtX0WNj140IgG++12kwZpYB9iIydNQ==",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@prisma/engines": "4.16.2"
|
||||
"@prisma/engines": "5.19.1"
|
||||
},
|
||||
"bin": {
|
||||
"prisma": "build/index.js",
|
||||
"prisma2": "build/index.js"
|
||||
"prisma": "build/index.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.17"
|
||||
"node": ">=16.13"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "2.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/prisma/node_modules/fsevents": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
|
||||
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
|
@ -24,9 +24,9 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@playwright/test": "^1.42.1",
|
||||
"@prisma/client": "^4.16.2",
|
||||
"@prisma/client": "5.19.1",
|
||||
"linebyline": "^1.3.0",
|
||||
"prisma": "^4.16.2"
|
||||
"prisma": "5.19.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.0.0"
|
||||
|
Loading…
x
Reference in New Issue
Block a user