Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00131668aa | ||
|
|
0306ad737f | ||
|
|
20dfc34e70 | ||
|
|
b7e8b252d2 | ||
|
|
74f09c332b | ||
|
|
3ce6c23603 | ||
|
|
ad3ee14501 | ||
|
|
1931758fc7 | ||
|
|
fe551af145 | ||
|
|
9fdaaed100 | ||
|
|
c0f8a355e3 | ||
|
|
df95ec4ce8 | ||
|
|
a15cad4d03 | ||
|
|
8904f20eb8 | ||
|
|
0ee81d0739 | ||
|
|
c0bc6f8ccb | ||
|
|
1f1cd1e236 | ||
|
|
dbbd78fb26 | ||
|
|
f6e45842fd | ||
|
|
d25c043046 | ||
|
|
5695ba7c13 | ||
|
|
eeb0322ce1 | ||
|
|
480977c2b5 | ||
|
|
8b2e46a6fa | ||
|
|
842be660b0 | ||
|
|
4f69c0e502 | ||
|
|
be128181e2 | ||
|
|
0aa1628925 | ||
|
|
fd58f669d0 | ||
|
|
51927f82c0 | ||
|
|
0f8a0eaf4a | ||
|
|
b9ac22d4ed | ||
|
|
ebca5c6409 | ||
|
|
6ef35e4dba | ||
|
|
8bb5200dd8 | ||
|
|
4aeb6b7c9b | ||
|
|
ae64d7ba82 | ||
|
|
9dd2dbff19 | ||
|
|
cebbffe230 | ||
|
|
e3e464abfa | ||
|
|
268438b0ff | ||
|
|
355c8de5e7 | ||
|
|
e6056bc4a4 | ||
|
|
f2eebe95bd | ||
|
|
3084013269 | ||
|
|
68568e5a25 | ||
|
|
0eae0bb8fe | ||
|
|
b61820d354 | ||
|
|
1606272850 | ||
|
|
ea04fe1c9b | ||
|
|
4c50b6a8af | ||
|
|
39aa848e9e | ||
|
|
64c56c1b17 | ||
|
|
8e883a6b10 | ||
|
|
9684aa3ad5 | ||
|
|
5fede84bf6 | ||
|
|
a788e07be1 | ||
|
|
68ffd2248b | ||
|
|
4b12d021e4 | ||
|
|
4daf9db9db | ||
|
|
a660b1eb05 | ||
|
|
6f2f098e12 | ||
|
|
6a75ef86b0 | ||
|
|
3d2397879c | ||
|
|
de474089a7 | ||
|
|
8b31b9aa05 | ||
|
|
ad41672958 | ||
|
|
86f2984b30 | ||
|
|
38e62786e4 | ||
|
|
ac3d7c9fae | ||
|
|
98f94ea694 | ||
|
|
8ad80f7ac3 | ||
|
|
296678046c | ||
|
|
fd193e651d | ||
|
|
becad5ee67 | ||
|
|
161dcbdd4c | ||
|
|
7ad6652cb0 | ||
|
|
c467167e91 | ||
|
|
18093824d8 | ||
|
|
8102f3c33c | ||
|
|
902c441248 | ||
|
|
e641bb3d57 | ||
|
|
19d938ed60 | ||
|
|
5561949f9b | ||
|
|
5e98cca062 | ||
|
|
ac858c9bee | ||
|
|
f58f5e4e02 | ||
|
|
ad844f5e51 | ||
|
|
53c1bc45d6 | ||
|
|
0cc93aa87e | ||
|
|
b41b830086 | ||
|
|
c79d0890c0 | ||
|
|
5071e6566f | ||
|
|
ac77fe360d | ||
|
|
711aceba0e | ||
|
|
f010279303 | ||
|
|
0c67f4940a | ||
|
|
7836aeacc6 | ||
|
|
af0cc5c899 | ||
|
|
aa2808d621 | ||
|
|
621067acd8 | ||
|
|
3fcba33b1b | ||
|
|
9a66dae0ba | ||
|
|
e2ef8d2dc8 | ||
|
|
eb089bb207 | ||
|
|
4565c3311c | ||
|
|
e30b41a85a | ||
|
|
7b0321043d | ||
|
|
c4b7062d65 | ||
|
|
eb1c1b9475 | ||
|
|
67725f0cba | ||
|
|
68c4ad2bf9 | ||
|
|
dbafda9822 | ||
|
|
6d5d2a1c4d | ||
|
|
b748b8d077 | ||
|
|
f86c448359 | ||
|
|
d0af4b8ddd | ||
|
|
39103c07c9 | ||
|
|
8382ebc057 | ||
|
|
880ba8f1dd | ||
|
|
f00849b8d1 | ||
|
|
c090f78898 | ||
|
|
46a1713122 | ||
|
|
4a88b33782 | ||
|
|
a1a2a141e4 | ||
|
|
97404455d4 | ||
|
|
be31100bd7 | ||
|
|
4335c9ab92 | ||
|
|
20df7156cf | ||
|
|
9c35425e57 | ||
|
|
65df5ac0e4 | ||
|
|
84fdd03603 | ||
|
|
e6ec8bdf4d | ||
|
|
86c8197104 | ||
|
|
bb13badcf4 | ||
|
|
64b2397fa2 | ||
|
|
90130457e2 | ||
|
|
260521fb28 | ||
|
|
6390d595f5 | ||
|
|
74dc46f8b2 | ||
|
|
67262910cd | ||
|
|
d59e68de6d | ||
|
|
b50318fbca | ||
|
|
1ce7df324d | ||
|
|
e3b7264208 | ||
|
|
5e3f6e6c2c | ||
|
|
5b6c43118e | ||
|
|
beee545568 | ||
|
|
a597defd03 | ||
|
|
e3562cdfb5 | ||
|
|
86a7824ec9 | ||
|
|
7001515a44 | ||
|
|
36044c4ab3 | ||
|
|
4933295810 | ||
|
|
ed0cd30092 | ||
|
|
1132d9d0dc | ||
|
|
9bd3a362a2 | ||
|
|
844076badb | ||
|
|
c0523a31a7 | ||
|
|
1fff642860 | ||
|
|
89fe383c9f | ||
|
|
4a173c48b8 | ||
|
|
a72a3e45e9 | ||
|
|
a8d8c992a4 | ||
|
|
99f9a121cb | ||
|
|
6a0e2392fe | ||
|
|
addec46feb | ||
|
|
a4fe9a51b5 | ||
|
|
78b8bbb5aa | ||
|
|
d7ece4f583 | ||
|
|
8fc9b9ae9d | ||
|
|
d1175bf7de | ||
|
|
3900453482 | ||
|
|
68e7e76b31 | ||
|
|
986d196a37 | ||
|
|
d30fb213d2 | ||
|
|
3f02de8214 | ||
|
|
7421cea0da | ||
|
|
507daa6a0c | ||
|
|
61f68af435 | ||
|
|
b3f4cfab32 | ||
|
|
c3b1de498d | ||
|
|
cdf059361e | ||
|
|
2aada9a7da | ||
|
|
b96786125c | ||
|
|
9451f38cec | ||
|
|
306f53dec7 | ||
|
|
db865a680f | ||
|
|
aca552c9f7 | ||
|
|
b202c4e79f | ||
|
|
972ce6911a | ||
|
|
751530b460 | ||
|
|
3b263e9282 | ||
|
|
2cbf9e1ac8 | ||
|
|
6283535d6a | ||
|
|
a03ae81509 | ||
|
|
a7e05aa016 | ||
|
|
f8cbf8b1c4 | ||
|
|
ccc294e567 | ||
|
|
0be344b1ba | ||
|
|
7a525e476a | ||
|
|
fe62f9c6de | ||
|
|
9608f6518f | ||
|
|
2f8fa20ec6 | ||
|
|
6f097b0a74 | ||
|
|
159bbb53b6 | ||
|
|
622160ea17 | ||
|
|
5d543c864f | ||
|
|
ed745623eb | ||
|
|
29bca76e91 | ||
|
|
33d0fee43e | ||
|
|
bb13de4176 | ||
|
|
c854dd092c | ||
|
|
26d64bd93f | ||
|
|
1025238eee | ||
|
|
eec76ecfe2 | ||
|
|
f5876ae6d6 | ||
|
|
ccc8cdc1ff | ||
|
|
a1840c9362 | ||
|
|
22212e7edb | ||
|
|
6ffe7005dd | ||
|
|
4890d72e30 | ||
|
|
a531541273 | ||
|
|
2bced59b47 | ||
|
|
e9554604e7 | ||
|
|
48c51da853 | ||
|
|
cc2164657c | ||
|
|
a35683667b | ||
|
|
cf403bebf1 | ||
|
|
f3e4bbc753 | ||
|
|
4bfbac6649 | ||
|
|
3d7fd7eb01 | ||
|
|
ec42900e25 | ||
|
|
032b243248 | ||
|
|
b70b5a5449 | ||
|
|
cc5dfb06bd | ||
|
|
937a9a0276 | ||
|
|
7a01e0427d | ||
|
|
3336f8f017 | ||
|
|
724ce9f446 | ||
|
|
55737a0ad3 | ||
|
|
06695f41ee | ||
|
|
32f5f8b670 | ||
|
|
78e7aa860a | ||
|
|
e4a2ebb545 | ||
|
|
244dfd30ff | ||
|
|
d990bacf3b | ||
|
|
5d139a7ba8 | ||
|
|
091d3cdd17 | ||
|
|
a8d95d54e7 | ||
|
|
af8d38e3a6 | ||
|
|
fd91c5da79 | ||
|
|
452ea6a993 | ||
|
|
0223db1f7c | ||
|
|
da7c5ec407 | ||
|
|
d391f35389 | ||
|
|
ef498c6ed6 | ||
|
|
bec1453148 | ||
|
|
a2b83bbb03 | ||
|
|
d84dce0f05 | ||
|
|
9896875006 | ||
|
|
f12a6b27b7 | ||
|
|
f3eeb2a50f | ||
|
|
49017ad4b7 | ||
|
|
09bbb19fe1 | ||
|
|
dd3dd32a3e | ||
|
|
75c3c596c2 | ||
|
|
59d45afc56 | ||
|
|
070548555c | ||
|
|
b520238d33 | ||
|
|
e04a8f0344 | ||
|
|
9acc21d882 | ||
|
|
fbff9a9a3f | ||
|
|
de41f20145 | ||
|
|
81b34420dc | ||
|
|
71c657f9c1 | ||
|
|
eb580e91de | ||
|
|
896ba104fd | ||
|
|
d08c3fdc71 | ||
|
|
74e5f4bf37 | ||
|
|
61a8543e08 | ||
|
|
82c7e595ea | ||
|
|
e19e829ff7 | ||
|
|
0fc79f93de | ||
|
|
0ad82bdf52 | ||
|
|
b4c62b3c43 | ||
|
|
0df68cce3b | ||
|
|
2d90def37b | ||
|
|
602fd6879f | ||
|
|
6ea13b7c9a | ||
|
|
e169d9e8d1 | ||
|
|
0e8fa22b09 | ||
|
|
c50e04e18b | ||
|
|
9bb13a0b47 | ||
|
|
25c0955aa5 | ||
|
+24 |
0a15483c46 | ||
|
|
5aa922559a | ||
|
|
9abf004880 | ||
|
|
253f57bce1 | ||
|
|
a55ffca013 | ||
|
|
86addf3793 | ||
|
|
68599fc189 | ||
|
|
0e29c518d0 | ||
|
|
8edf55f946 | ||
|
|
85425649d4 | ||
|
|
b39cbea82b | ||
|
|
b1d31613d9 | ||
|
|
d6605d6dfd | ||
|
|
0f1f0a29e6 | ||
|
|
e4e1d91068 | ||
|
|
848318a771 | ||
|
|
aaf630ed18 | ||
|
|
ece74cbc49 | ||
|
|
3c5a007125 | ||
|
|
9694aa443f | ||
|
|
7e557889b6 | ||
|
|
9e17042a72 | ||
|
|
4b764436e5 | ||
|
|
c42571df03 | ||
|
|
a30555018f |
No files matched your search
@@ -38,6 +38,7 @@ BASECAMP3_USER_AGENT=
|
|||||||
DAILY_API_KEY=
|
DAILY_API_KEY=
|
||||||
DAILY_SCALE_PLAN=''
|
DAILY_SCALE_PLAN=''
|
||||||
DAILY_WEBHOOK_SECRET=''
|
DAILY_WEBHOOK_SECRET=''
|
||||||
|
DAILY_MEETING_ENDED_WEBHOOK_SECRET=''
|
||||||
|
|
||||||
# - GOOGLE CALENDAR/MEET/LOGIN
|
# - GOOGLE CALENDAR/MEET/LOGIN
|
||||||
# Needed to enable Google Calendar integration and Login with Google
|
# Needed to enable Google Calendar integration and Login with Google
|
||||||
|
|||||||
+21
-5
@@ -26,8 +26,6 @@ DATABASE_URL="postgresql://postgres:@localhost:5450/calendso"
|
|||||||
# Needed to run migrations while using a connection pooler like PgBouncer
|
# Needed to run migrations while using a connection pooler like PgBouncer
|
||||||
# Use the same one as DATABASE_URL if you're not using a connection pooler
|
# Use the same one as DATABASE_URL if you're not using a connection pooler
|
||||||
DATABASE_DIRECT_URL="postgresql://postgres:@localhost:5450/calendso"
|
DATABASE_DIRECT_URL="postgresql://postgres:@localhost:5450/calendso"
|
||||||
UPSTASH_REDIS_REST_URL=
|
|
||||||
UPSTASH_REDIS_REST_TOKEN=
|
|
||||||
INSIGHTS_DATABASE_URL=
|
INSIGHTS_DATABASE_URL=
|
||||||
|
|
||||||
# Uncomment to enable a dedicated connection pool for Prisma using Prisma Data Proxy
|
# Uncomment to enable a dedicated connection pool for Prisma using Prisma Data Proxy
|
||||||
@@ -171,8 +169,7 @@ STRIPE_WEBHOOK_SECRET=
|
|||||||
STRIPE_WEBHOOK_SECRET_APPS=
|
STRIPE_WEBHOOK_SECRET_APPS=
|
||||||
STRIPE_PRIVATE_KEY=
|
STRIPE_PRIVATE_KEY=
|
||||||
STRIPE_CLIENT_ID=
|
STRIPE_CLIENT_ID=
|
||||||
PAYMENT_FEE_FIXED=
|
|
||||||
PAYMENT_FEE_PERCENTAGE=
|
|
||||||
|
|
||||||
# Use for internal Public API Keys and optional
|
# Use for internal Public API Keys and optional
|
||||||
API_KEY_PREFIX=cal_
|
API_KEY_PREFIX=cal_
|
||||||
@@ -215,6 +212,10 @@ E2E_TEST_MAILHOG_ENABLED=
|
|||||||
|
|
||||||
# **********************************************************************************************************
|
# **********************************************************************************************************
|
||||||
|
|
||||||
|
# Cloudflare Turnstile
|
||||||
|
NEXT_PUBLIC_CLOUDFLARE_SITEKEY=
|
||||||
|
CLOUDFLARE_TURNSTILE_SECRET=
|
||||||
|
|
||||||
# Set the following value to true if you wish to enable Team Impersonation
|
# Set the following value to true if you wish to enable Team Impersonation
|
||||||
NEXT_PUBLIC_TEAM_IMPERSONATION=false
|
NEXT_PUBLIC_TEAM_IMPERSONATION=false
|
||||||
|
|
||||||
@@ -239,7 +240,7 @@ CSP_POLICY=
|
|||||||
# Vercel Edge Config
|
# Vercel Edge Config
|
||||||
EDGE_CONFIG=
|
EDGE_CONFIG=
|
||||||
|
|
||||||
NEXT_PUBLIC_MINUTES_TO_BOOK=5 # Minutes
|
NEXT_PUBLIC_MINUTES_TO_BOOK=5 # Minutes
|
||||||
NEXT_PUBLIC_BOOKER_NUMBER_OF_DAYS_TO_LOAD=0 # Override the booker to only load X number of days worth of data
|
NEXT_PUBLIC_BOOKER_NUMBER_OF_DAYS_TO_LOAD=0 # Override the booker to only load X number of days worth of data
|
||||||
|
|
||||||
# Control time intervals on a user's Schedule availability
|
# Control time intervals on a user's Schedule availability
|
||||||
@@ -342,3 +343,18 @@ APP_ROUTER_TEAMS_ENABLED=0
|
|||||||
|
|
||||||
# disable setry server source maps
|
# disable setry server source maps
|
||||||
SENTRY_DISABLE_SERVER_WEBPACK_PLUGIN=1
|
SENTRY_DISABLE_SERVER_WEBPACK_PLUGIN=1
|
||||||
|
|
||||||
|
# api v2
|
||||||
|
NEXT_PUBLIC_API_V2_URL="http://localhost:5555/api/v2"
|
||||||
|
|
||||||
|
# Tasker features
|
||||||
|
TASKER_ENABLE_WEBHOOKS=0
|
||||||
|
TASKER_ENABLE_EMAILS=0
|
||||||
|
|
||||||
|
# Ratelimiting via unkey
|
||||||
|
UNKEY_ROOT_KEY=
|
||||||
|
|
||||||
|
|
||||||
|
# Used for Cal.ai Enterprise Voice AI Agents
|
||||||
|
# https://retellai.com
|
||||||
|
RETELL_AI_KEY=
|
||||||
@@ -4,3 +4,4 @@ node_modules
|
|||||||
**/**/public
|
**/**/public
|
||||||
packages/prisma/zod
|
packages/prisma/zod
|
||||||
apps/web/public/embed
|
apps/web/public/embed
|
||||||
|
packages/ui/components/icon/dynamicIconImports.tsx
|
||||||
@@ -3,7 +3,7 @@ description: "Cache or restore if necessary"
|
|||||||
inputs:
|
inputs:
|
||||||
DATABASE_URL:
|
DATABASE_URL:
|
||||||
required: false
|
required: false
|
||||||
default: "postgresql://postgres:@localhost:5432/calendso"
|
default: "postgresql://postgres:postgres@localhost:5432/calendso"
|
||||||
path:
|
path:
|
||||||
required: false
|
required: false
|
||||||
default: "backups/backup.sql"
|
default: "backups/backup.sql"
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
name: Production Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
|
||||||
|
env:
|
||||||
|
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||||
|
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||||
|
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
|
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
|
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||||
|
E2E_TEST_APPLE_CALENDAR_PASSWORD: ${{ secrets.E2E_TEST_APPLE_CALENDAR_PASSWORD }}
|
||||||
|
E2E_TEST_CALCOM_QA_EMAIL: ${{ secrets.E2E_TEST_CALCOM_QA_EMAIL }}
|
||||||
|
E2E_TEST_CALCOM_QA_PASSWORD: ${{ secrets.E2E_TEST_CALCOM_QA_PASSWORD }}
|
||||||
|
E2E_TEST_CALCOM_QA_GCAL_CREDENTIALS: ${{ secrets.E2E_TEST_CALCOM_QA_GCAL_CREDENTIALS }}
|
||||||
|
E2E_TEST_CALCOM_GCAL_KEYS: ${{ secrets.E2E_TEST_CALCOM_GCAL_KEYS }}
|
||||||
|
GOOGLE_API_CREDENTIALS: ${{ secrets.CI_GOOGLE_API_CREDENTIALS }}
|
||||||
|
GOOGLE_LOGIN_ENABLED: ${{ vars.CI_GOOGLE_LOGIN_ENABLED }}
|
||||||
|
NEXTAUTH_SECRET: ${{ secrets.CI_NEXTAUTH_SECRET }}
|
||||||
|
NEXTAUTH_URL: ${{ secrets.CI_NEXTAUTH_URL }}
|
||||||
|
NEXT_PUBLIC_IS_E2E: ${{ vars.CI_NEXT_PUBLIC_IS_E2E }}
|
||||||
|
NEXT_PUBLIC_STRIPE_PUBLIC_KEY: ${{ secrets.CI_NEXT_PUBLIC_STRIPE_PUBLIC_KEY }}
|
||||||
|
NEXT_PUBLIC_WEBAPP_URL: ${{ vars.CI_NEXT_PUBLIC_WEBAPP_URL }}
|
||||||
|
NEXT_PUBLIC_WEBSITE_URL: ${{ vars.CI_NEXT_PUBLIC_WEBSITE_URL }}
|
||||||
|
PAYMENT_FEE_FIXED: ${{ vars.CI_PAYMENT_FEE_FIXED }}
|
||||||
|
PAYMENT_FEE_PERCENTAGE: ${{ vars.CI_PAYMENT_FEE_PERCENTAGE }}
|
||||||
|
SAML_ADMINS: ${{ secrets.CI_SAML_ADMINS }}
|
||||||
|
SAML_DATABASE_URL: ${{ secrets.CI_SAML_DATABASE_URL }}
|
||||||
|
STRIPE_PRIVATE_KEY: ${{ secrets.CI_STRIPE_PRIVATE_KEY }}
|
||||||
|
STRIPE_CLIENT_ID: ${{ secrets.CI_STRIPE_CLIENT_ID }}
|
||||||
|
STRIPE_WEBHOOK_SECRET: ${{ secrets.CI_STRIPE_WEBHOOK_SECRET }}
|
||||||
|
SENDGRID_API_KEY: ${{ secrets.CI_SENDGRID_API_KEY }}
|
||||||
|
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
||||||
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
NEXT_PUBLIC_API_V2_URL: ${{ secrets.CI_NEXT_PUBLIC_API_V2_URL }}
|
||||||
|
NEXT_PUBLIC_API_V2_ROOT_URL: ${{ secrets.CI_NEXT_PUBLIC_API_V2_ROOT_URL }}
|
||||||
|
NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED: ${{ vars.CI_NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build API V1
|
||||||
|
runs-on: buildjet-4vcpu-ubuntu-2204
|
||||||
|
timeout-minutes: 30
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:13
|
||||||
|
credentials:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
|
POSTGRES_DB: calendso
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: ./.github/actions/dangerous-git-checkout
|
||||||
|
- uses: ./.github/actions/yarn-install
|
||||||
|
- uses: ./.github/actions/cache-db
|
||||||
|
- run: |
|
||||||
|
export NODE_OPTIONS="--max_old_space_size=8192"
|
||||||
|
yarn turbo run build --filter=@calcom/api...
|
||||||
|
shell: bash
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
name: Cron - changeTimeZone
|
||||||
|
|
||||||
|
on:
|
||||||
|
# "Scheduled workflows run on the latest commit on the default or base branch."
|
||||||
|
# — https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#schedule
|
||||||
|
schedule:
|
||||||
|
# Runs "At every full hour." (see https://crontab.guru)
|
||||||
|
- cron: "0 * * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cron-scheduleEmailReminders:
|
||||||
|
env:
|
||||||
|
APP_URL: ${{ secrets.APP_URL }}
|
||||||
|
CRON_API_KEY: ${{ secrets.CRON_API_KEY }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: cURL request
|
||||||
|
if: ${{ env.APP_URL && env.CRON_API_KEY }}
|
||||||
|
run: |
|
||||||
|
curl ${{ secrets.APP_URL }}/api/cron/changeTimeZone \
|
||||||
|
-X POST \
|
||||||
|
-H 'content-type: application/json' \
|
||||||
|
-H 'authorization: ${{ secrets.CRON_API_KEY }}' \
|
||||||
|
-sSf
|
||||||
@@ -10,13 +10,19 @@ jobs:
|
|||||||
runs-on: buildjet-4vcpu-ubuntu-2204
|
runs-on: buildjet-4vcpu-ubuntu-2204
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:12.1
|
image: postgres:13
|
||||||
credentials:
|
credentials:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
POSTGRES_DB: calendso
|
POSTGRES_DB: calendso
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
mailhog:
|
mailhog:
|
||||||
@@ -56,6 +62,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||||
|
DAILY_API_KEY: ${{ secrets.CI_DAILY_API_KEY }}
|
||||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
||||||
@@ -85,6 +92,7 @@ jobs:
|
|||||||
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
||||||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED: ${{ vars.CI_NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED }}
|
||||||
- name: Upload Test Results
|
- name: Upload Test Results
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
@@ -10,13 +10,19 @@ jobs:
|
|||||||
runs-on: buildjet-4vcpu-ubuntu-2204
|
runs-on: buildjet-4vcpu-ubuntu-2204
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:12.1
|
image: postgres:13
|
||||||
credentials:
|
credentials:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
POSTGRES_DB: calendso
|
POSTGRES_DB: calendso
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
strategy:
|
strategy:
|
||||||
@@ -43,6 +49,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||||
|
DAILY_API_KEY: ${{ secrets.CI_DAILY_API_KEY }}
|
||||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
||||||
@@ -67,6 +74,7 @@ jobs:
|
|||||||
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
||||||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED: ${{ vars.CI_NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED }}
|
||||||
- name: Upload Test Results
|
- name: Upload Test Results
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
@@ -10,13 +10,19 @@ jobs:
|
|||||||
runs-on: buildjet-4vcpu-ubuntu-2204
|
runs-on: buildjet-4vcpu-ubuntu-2204
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:12.1
|
image: postgres:13
|
||||||
credentials:
|
credentials:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
POSTGRES_DB: calendso
|
POSTGRES_DB: calendso
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
mailhog:
|
mailhog:
|
||||||
@@ -49,6 +55,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||||
|
DAILY_API_KEY: ${{ secrets.CI_DAILY_API_KEY }}
|
||||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
||||||
@@ -74,6 +81,7 @@ jobs:
|
|||||||
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
||||||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED: ${{ vars.CI_NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED }}
|
||||||
- name: Upload Test Results
|
- name: Upload Test Results
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
@@ -10,13 +10,19 @@ jobs:
|
|||||||
runs-on: buildjet-4vcpu-ubuntu-2204
|
runs-on: buildjet-4vcpu-ubuntu-2204
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:12.1
|
image: postgres:13
|
||||||
credentials:
|
credentials:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
POSTGRES_DB: calendso
|
POSTGRES_DB: calendso
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
mailhog:
|
mailhog:
|
||||||
@@ -47,6 +53,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||||
|
DAILY_API_KEY: ${{ secrets.CI_DAILY_API_KEY }}
|
||||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
DEPLOYSENTINEL_API_KEY: ${{ secrets.DEPLOYSENTINEL_API_KEY }}
|
||||||
@@ -76,6 +83,7 @@ jobs:
|
|||||||
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
||||||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED: ${{ vars.CI_NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED }}
|
||||||
- name: Upload Test Results
|
- name: Upload Test Results
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
|
|||||||
@@ -56,6 +56,13 @@ jobs:
|
|||||||
uses: ./.github/workflows/production-build.yml
|
uses: ./.github/workflows/production-build.yml
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
|
build-api-v1:
|
||||||
|
name: Production build
|
||||||
|
needs: [changes]
|
||||||
|
if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }}
|
||||||
|
uses: ./.github/workflows/api-v1-production-build.yml
|
||||||
|
secrets: inherit
|
||||||
|
|
||||||
build-without-database:
|
build-without-database:
|
||||||
name: Production build (without database)
|
name: Production build (without database)
|
||||||
needs: [changes]
|
needs: [changes]
|
||||||
@@ -99,7 +106,7 @@ jobs:
|
|||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|
||||||
required:
|
required:
|
||||||
needs: [changes, lint, type-check, test, build, e2e, e2e-embed, e2e-embed-react, e2e-app-store]
|
needs: [changes, lint, type-check, test, build, build-api-v1, e2e, e2e-embed, e2e-embed-react, e2e-app-store]
|
||||||
if: always()
|
if: always()
|
||||||
runs-on: buildjet-4vcpu-ubuntu-2204
|
runs-on: buildjet-4vcpu-ubuntu-2204
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ on:
|
|||||||
env:
|
env:
|
||||||
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||||
|
DAILY_API_KEY: ${{ secrets.CI_DAILY_API_KEY }}
|
||||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||||
@@ -29,6 +30,10 @@ env:
|
|||||||
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
||||||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
NEXT_PUBLIC_API_V2_URL: ${{ secrets.CI_NEXT_PUBLIC_API_V2_URL }}
|
||||||
|
NEXT_PUBLIC_API_V2_ROOT_URL: ${{ secrets.CI_NEXT_PUBLIC_API_V2_ROOT_URL }}
|
||||||
|
NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED: ${{ vars.CI_NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED }}
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ on:
|
|||||||
env:
|
env:
|
||||||
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
ALLOWED_HOSTNAMES: ${{ vars.CI_ALLOWED_HOSTNAMES }}
|
||||||
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
CALENDSO_ENCRYPTION_KEY: ${{ secrets.CI_CALENDSO_ENCRYPTION_KEY }}
|
||||||
|
DAILY_API_KEY: ${{ secrets.CI_DAILY_API_KEY }}
|
||||||
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
DATABASE_DIRECT_URL: ${{ secrets.CI_DATABASE_URL }}
|
||||||
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
E2E_TEST_APPLE_CALENDAR_EMAIL: ${{ secrets.E2E_TEST_APPLE_CALENDAR_EMAIL }}
|
||||||
@@ -33,6 +34,10 @@ env:
|
|||||||
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
SENDGRID_EMAIL: ${{ secrets.CI_SENDGRID_EMAIL }}
|
||||||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||||
|
NEXT_PUBLIC_API_V2_URL: ${{ secrets.CI_NEXT_PUBLIC_API_V2_URL }}
|
||||||
|
NEXT_PUBLIC_API_V2_ROOT_URL: ${{ secrets.CI_NEXT_PUBLIC_API_V2_ROOT_URL }}
|
||||||
|
NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED: ${{ vars.CI_NEXT_PUBLIC_ORG_SELF_SERVE_ENABLED }}
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -41,13 +46,19 @@ jobs:
|
|||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:12.1
|
image: postgres:13
|
||||||
credentials:
|
credentials:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: postgres
|
||||||
POSTGRES_DB: calendso
|
POSTGRES_DB: calendso
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -16,3 +16,5 @@ public
|
|||||||
packages/prisma/zod
|
packages/prisma/zod
|
||||||
packages/prisma/enums
|
packages/prisma/enums
|
||||||
apps/web/public/embed
|
apps/web/public/embed
|
||||||
|
apps/api/v2/swagger/documentation.json
|
||||||
|
packages/ui/components/icon/dynamicIconImports.tsx
|
||||||
+13
-2
@@ -13,8 +13,6 @@ Contributions are what makes the open source community such an amazing place to
|
|||||||
- Issues from non-core members automatically receive the `🚨 needs approval` label.
|
- Issues from non-core members automatically receive the `🚨 needs approval` label.
|
||||||
- We greatly value new feature ideas. To ensure consistency in the product's direction, they undergo review and approval.
|
- We greatly value new feature ideas. To ensure consistency in the product's direction, they undergo review and approval.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Priorities
|
## Priorities
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
@@ -178,11 +176,15 @@ If you get errors, be sure to fix them before committing.
|
|||||||
Do not commit your `yarn.lock` unless you've made changes to the `package.json`. If you've already committed `yarn.lock` unintentionally, follow these steps to undo:
|
Do not commit your `yarn.lock` unless you've made changes to the `package.json`. If you've already committed `yarn.lock` unintentionally, follow these steps to undo:
|
||||||
|
|
||||||
If your last commit has the `yarn.lock` file alongside other files and you only wish to uncommit the `yarn.lock`:
|
If your last commit has the `yarn.lock` file alongside other files and you only wish to uncommit the `yarn.lock`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git checkout HEAD~1 yarn.lock
|
git checkout HEAD~1 yarn.lock
|
||||||
git commit -m "Revert yarn.lock changes"
|
git commit -m "Revert yarn.lock changes"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
_NB_: You may have to bypass the pre-commit hook with by appending `--no-verify` to the git commit
|
||||||
If you've pushed the commit with the `yarn.lock`:
|
If you've pushed the commit with the `yarn.lock`:
|
||||||
|
|
||||||
1. Correct the commit locally using the above method.
|
1. Correct the commit locally using the above method.
|
||||||
2. Carefully force push:
|
2. Carefully force push:
|
||||||
|
|
||||||
@@ -194,26 +196,35 @@ If `yarn.lock` was committed a while ago and there have been several commits sin
|
|||||||
|
|
||||||
1. **Checkout a Previous Version**:
|
1. **Checkout a Previous Version**:
|
||||||
- Find the commit hash before the `yarn.lock` was unintentionally committed. You can do this by viewing the Git log:
|
- Find the commit hash before the `yarn.lock` was unintentionally committed. You can do this by viewing the Git log:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git log yarn.lock
|
git log yarn.lock
|
||||||
```
|
```
|
||||||
|
|
||||||
- Once you have identified the commit hash, use it to checkout the previous version of `yarn.lock`:
|
- Once you have identified the commit hash, use it to checkout the previous version of `yarn.lock`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git checkout <commit_hash> yarn.lock
|
git checkout <commit_hash> yarn.lock
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Commit the Reverted Version**:
|
2. **Commit the Reverted Version**:
|
||||||
- After checking out the previous version of the `yarn.lock`, commit this change:
|
- After checking out the previous version of the `yarn.lock`, commit this change:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git commit -m "Revert yarn.lock to its state before unintended changes"
|
git commit -m "Revert yarn.lock to its state before unintended changes"
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Proceed with Caution**:
|
3. **Proceed with Caution**:
|
||||||
- If you need to push this change, first pull the latest changes from your remote branch to ensure you're not overwriting other recent changes:
|
- If you need to push this change, first pull the latest changes from your remote branch to ensure you're not overwriting other recent changes:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git pull origin <your-branch-name>
|
git pull origin <your-branch-name>
|
||||||
```
|
```
|
||||||
|
|
||||||
- Then push the updated branch:
|
- Then push the updated branch:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git push origin <your-branch-name>
|
git push origin <your-branch-name>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Lastly, make sure to keep the branches updated (e.g. click the `Update branch` button on GitHub PR).
|
||||||
@@ -2,7 +2,8 @@ Copyright (c) 2020-present Cal.com, Inc.
|
|||||||
|
|
||||||
Portions of this software are licensed as follows:
|
Portions of this software are licensed as follows:
|
||||||
|
|
||||||
* All content that resides under https://github.com/calcom/cal.com/tree/main/packages/features/ee and https://github.com/calcom/cal.com/tree/main/apps/api/ directory of this repository (Commercial License) is licensed under the license defined in "ee/LICENSE".
|
* All content that resides under https://github.com/calcom/cal.com/tree/main/packages/features/ee and
|
||||||
|
https://github.com/calcom/cal.com/tree/main/apps/api/v2/src/ee directory of this repository (Commercial License) is licensed under the license defined in "ee/LICENSE".
|
||||||
* All third party components incorporated into the Cal.com Software are licensed under the original license provided by the owner of the applicable component.
|
* All third party components incorporated into the Cal.com Software are licensed under the original license provided by the owner of the applicable component.
|
||||||
* Content outside of the above mentioned directories or restrictions above is available under the "AGPLv3" license as defined below.
|
* Content outside of the above mentioned directories or restrictions above is available under the "AGPLv3" license as defined below.
|
||||||
|
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ To get a local copy up and running, please follow these simple steps.
|
|||||||
Here is what you need to be able to run Cal.com.
|
Here is what you need to be able to run Cal.com.
|
||||||
|
|
||||||
- Node.js (Version: >=18.x)
|
- Node.js (Version: >=18.x)
|
||||||
- PostgreSQL
|
- PostgreSQL (Version: >=13.x)
|
||||||
- Yarn _(recommended)_
|
- Yarn _(recommended)_
|
||||||
|
|
||||||
> If you want to enable any of the available integrations, you may want to obtain additional credentials for each one. More details on this can be found below under the [integrations section](#integrations).
|
> If you want to enable any of the available integrations, you may want to obtain additional credentials for each one. More details on this can be found below under the [integrations section](#integrations).
|
||||||
@@ -210,7 +210,7 @@ echo 'NEXT_PUBLIC_DEBUG=1' >> .env
|
|||||||

|

|
||||||
|
|
||||||
5. Now extract all the info and add it to your DATABASE_URL. The url would look something like this
|
5. Now extract all the info and add it to your DATABASE_URL. The url would look something like this
|
||||||
`postgresql://postgres:postgres@localhost:5432/Your-DB-Name`.
|
`postgresql://postgres:postgres@localhost:5432/Your-DB-Name`. The port is configurable and does not have to be 5432.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ test.describe("Org", () => {
|
|||||||
];
|
];
|
||||||
const response = await page.goto(`http://i.cal.com/${users[0].username}+${users[1].username}`);
|
const response = await page.goto(`http://i.cal.com/${users[0].username}+${users[1].username}`);
|
||||||
expect(response?.status()).toBe(200);
|
expect(response?.status()).toBe(200);
|
||||||
expect(await page.locator('[data-testid="event-title"]').textContent()).toBe("Dynamic");
|
expect(await page.locator('[data-testid="event-title"]').textContent()).toBe("Group Meeting");
|
||||||
|
|
||||||
expect(await page.locator('[data-testid="event-meta"]').textContent()).toContain(users[0].name);
|
expect(await page.locator('[data-testid="event-meta"]').textContent()).toContain(users[0].name);
|
||||||
expect(await page.locator('[data-testid="event-meta"]').textContent()).toContain(users[1].name);
|
expect(await page.locator('[data-testid="event-meta"]').textContent()).toContain(users[1].name);
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
const http = require("http");
|
||||||
|
const connect = require("connect");
|
||||||
|
const { createProxyMiddleware } = require("http-proxy-middleware");
|
||||||
|
|
||||||
|
const apiProxyV1 = createProxyMiddleware({
|
||||||
|
target: "http://localhost:3003",
|
||||||
|
});
|
||||||
|
|
||||||
|
const apiProxyV2 = createProxyMiddleware({
|
||||||
|
target: "http://localhost:3004",
|
||||||
|
});
|
||||||
|
|
||||||
|
const app = connect();
|
||||||
|
app.use("/", apiProxyV1);
|
||||||
|
|
||||||
|
app.use("/v2", apiProxyV2);
|
||||||
|
|
||||||
|
http.createServer(app).listen(3002);
|
||||||
+9
-39
@@ -1,46 +1,16 @@
|
|||||||
{
|
{
|
||||||
"name": "@calcom/api",
|
"name": "@calcom/api-proxy",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "Public API for Cal.com",
|
"description": "",
|
||||||
"main": "index.ts",
|
"main": "index.js",
|
||||||
"repository": "git@github.com:calcom/api.git",
|
|
||||||
"author": "Cal.com Inc.",
|
|
||||||
"private": true,
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "next build",
|
"dev": "node ./index.js"
|
||||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next",
|
|
||||||
"dev": "PORT=3002 next dev",
|
|
||||||
"lint": "eslint . --ignore-path .gitignore",
|
|
||||||
"lint:fix": "eslint . --ext .ts,.js,.tsx,.jsx --fix",
|
|
||||||
"start": "PORT=3002 next start",
|
|
||||||
"docker-start-api": "PORT=80 next start",
|
|
||||||
"type-check": "tsc --pretty --noEmit"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@calcom/tsconfig": "*",
|
|
||||||
"@calcom/types": "*",
|
|
||||||
"node-mocks-http": "^1.11.0"
|
|
||||||
},
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@calcom/app-store": "*",
|
"connect": "^3.7.0",
|
||||||
"@calcom/core": "*",
|
"http": "^0.0.1-security",
|
||||||
"@calcom/dayjs": "*",
|
"http-proxy-middleware": "^2.0.6"
|
||||||
"@calcom/emails": "*",
|
|
||||||
"@calcom/features": "*",
|
|
||||||
"@calcom/lib": "*",
|
|
||||||
"@calcom/prisma": "*",
|
|
||||||
"@calcom/trpc": "*",
|
|
||||||
"@sentry/nextjs": "^7.73.0",
|
|
||||||
"bcryptjs": "^2.4.3",
|
|
||||||
"memory-cache": "^0.2.0",
|
|
||||||
"next": "^13.5.4",
|
|
||||||
"next-api-middleware": "^1.0.1",
|
|
||||||
"next-axiom": "^0.17.0",
|
|
||||||
"next-swagger-doc": "^0.3.6",
|
|
||||||
"next-validations": "^0.2.0",
|
|
||||||
"typescript": "^4.9.4",
|
|
||||||
"tzdata": "^1.0.30",
|
|
||||||
"uuid": "^8.3.2",
|
|
||||||
"zod": "^3.22.4"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
import type { NextApiRequest } from "next";
|
|
||||||
|
|
||||||
import { HttpError } from "@calcom/lib/http-error";
|
|
||||||
import prisma from "@calcom/prisma";
|
|
||||||
|
|
||||||
import { schemaQueryIdParseInt } from "~/lib/validations/shared/queryIdTransformParseInt";
|
|
||||||
|
|
||||||
async function authMiddleware(req: NextApiRequest) {
|
|
||||||
const { userId, isAdmin } = req;
|
|
||||||
const { id } = schemaQueryIdParseInt.parse(req.query);
|
|
||||||
if (isAdmin) return;
|
|
||||||
const eventType = await prisma.eventType.findFirst({
|
|
||||||
where: { id, users: { some: { id: userId } } },
|
|
||||||
});
|
|
||||||
if (!eventType) throw new HttpError({ statusCode: 403, message: "Forbidden" });
|
|
||||||
}
|
|
||||||
|
|
||||||
export default authMiddleware;
|
|
||||||
@@ -4,3 +4,4 @@ NEXT_PUBLIC_WEBAPP_URL=http://localhost:3000
|
|||||||
|
|
||||||
# Get it in console.cal.com
|
# Get it in console.cal.com
|
||||||
CALCOM_LICENSE_KEY=""
|
CALCOM_LICENSE_KEY=""
|
||||||
|
NEXT_PUBLIC_API_V2_ROOT_URL=http://localhost:5555
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,23 @@
|
|||||||
|
import { get } from "@vercel/edge-config";
|
||||||
|
import type { NextMiddleware } from "next-api-middleware";
|
||||||
|
|
||||||
|
const safeGet = async <T = unknown>(key: string): Promise<T | undefined> => {
|
||||||
|
try {
|
||||||
|
return get<T>(key);
|
||||||
|
} catch (error) {
|
||||||
|
// Don't crash if EDGE_CONFIG env var is missing
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const config = { matcher: "/:path*" };
|
||||||
|
|
||||||
|
export const checkIsInMaintenanceMode: NextMiddleware = async (req, res, next) => {
|
||||||
|
const isInMaintenanceMode = await safeGet<boolean>("isInMaintenanceMode");
|
||||||
|
if (isInMaintenanceMode) {
|
||||||
|
return res
|
||||||
|
.status(503)
|
||||||
|
.json({ message: "API is currently under maintenance. Please try again at a later time." });
|
||||||
|
}
|
||||||
|
|
||||||
|
await next();
|
||||||
|
};
|
||||||
File renamed without changes.
File renamed without changes.
+1
-2
@@ -1,7 +1,6 @@
|
|||||||
import type { NextMiddleware } from "next-api-middleware";
|
import type { NextMiddleware } from "next-api-middleware";
|
||||||
|
|
||||||
import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError";
|
import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowError";
|
||||||
import { API_KEY_RATE_LIMIT } from "@calcom/lib/rateLimit";
|
|
||||||
|
|
||||||
export const rateLimitApiKey: NextMiddleware = async (req, res, next) => {
|
export const rateLimitApiKey: NextMiddleware = async (req, res, next) => {
|
||||||
if (!req.query.apiKey) return res.status(401).json({ message: "No apiKey provided" });
|
if (!req.query.apiKey) return res.status(401).json({ message: "No apiKey provided" });
|
||||||
@@ -11,7 +10,7 @@ export const rateLimitApiKey: NextMiddleware = async (req, res, next) => {
|
|||||||
identifier: req.query.apiKey as string,
|
identifier: req.query.apiKey as string,
|
||||||
rateLimitingType: "api",
|
rateLimitingType: "api",
|
||||||
onRateLimiterResponse: (response) => {
|
onRateLimiterResponse: (response) => {
|
||||||
res.setHeader("X-RateLimit-Limit", API_KEY_RATE_LIMIT);
|
res.setHeader("X-RateLimit-Limit", response.limit);
|
||||||
res.setHeader("X-RateLimit-Remaining", response.remaining);
|
res.setHeader("X-RateLimit-Remaining", response.remaining);
|
||||||
res.setHeader("X-RateLimit-Reset", response.reset);
|
res.setHeader("X-RateLimit-Reset", response.reset);
|
||||||
},
|
},
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -2,6 +2,7 @@ import { label } from "next-api-middleware";
|
|||||||
|
|
||||||
import { addRequestId } from "./addRequestid";
|
import { addRequestId } from "./addRequestid";
|
||||||
import { captureErrors } from "./captureErrors";
|
import { captureErrors } from "./captureErrors";
|
||||||
|
import { checkIsInMaintenanceMode } from "./checkIsInMaintenanceMode";
|
||||||
import { extendRequest } from "./extendRequest";
|
import { extendRequest } from "./extendRequest";
|
||||||
import {
|
import {
|
||||||
HTTP_POST,
|
HTTP_POST,
|
||||||
@@ -24,6 +25,7 @@ const middleware = {
|
|||||||
HTTP_POST,
|
HTTP_POST,
|
||||||
HTTP_DELETE,
|
HTTP_DELETE,
|
||||||
addRequestId,
|
addRequestId,
|
||||||
|
checkIsInMaintenanceMode,
|
||||||
verifyApiKey,
|
verifyApiKey,
|
||||||
rateLimitApiKey,
|
rateLimitApiKey,
|
||||||
extendRequest,
|
extendRequest,
|
||||||
@@ -36,6 +38,7 @@ type Middleware = keyof typeof middleware;
|
|||||||
|
|
||||||
const middlewareOrder = [
|
const middlewareOrder = [
|
||||||
// The order here, determines the order of execution
|
// The order here, determines the order of execution
|
||||||
|
"checkIsInMaintenanceMode",
|
||||||
"extendRequest",
|
"extendRequest",
|
||||||
"captureErrors",
|
"captureErrors",
|
||||||
"verifyApiKey",
|
"verifyApiKey",
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,18 @@
|
|||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
|
const CalendarSchema = z.object({
|
||||||
|
externalId: z.string(),
|
||||||
|
name: z.string(),
|
||||||
|
primary: z.boolean(),
|
||||||
|
readOnly: z.boolean(),
|
||||||
|
});
|
||||||
|
|
||||||
|
const IntegrationSchema = z.object({
|
||||||
|
name: z.string(),
|
||||||
|
appId: z.string(),
|
||||||
|
userId: z.number(),
|
||||||
|
integration: z.string(),
|
||||||
|
calendars: z.array(CalendarSchema),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const schemaConnectedCalendarsReadPublic = z.array(IntegrationSchema);
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -82,7 +82,6 @@ export const schemaUserBaseBodyParams = User.pick({
|
|||||||
brandColor: true,
|
brandColor: true,
|
||||||
darkBrandColor: true,
|
darkBrandColor: true,
|
||||||
allowDynamicBooking: true,
|
allowDynamicBooking: true,
|
||||||
away: true,
|
|
||||||
role: true,
|
role: true,
|
||||||
// @note: disallowing avatar changes via API for now. We can add it later if needed. User should upload image via UI.
|
// @note: disallowing avatar changes via API for now. We can add it later if needed. User should upload image via UI.
|
||||||
// avatar: true,
|
// avatar: true,
|
||||||
@@ -171,7 +170,6 @@ export const schemaUserReadPublic = User.pick({
|
|||||||
brandColor: true,
|
brandColor: true,
|
||||||
darkBrandColor: true,
|
darkBrandColor: true,
|
||||||
allowDynamicBooking: true,
|
allowDynamicBooking: true,
|
||||||
away: true,
|
|
||||||
createdDate: true,
|
createdDate: true,
|
||||||
verified: true,
|
verified: true,
|
||||||
invitedTo: true,
|
invitedTo: true,
|
||||||
File renamed without changes.
File renamed without changes.
@@ -4,7 +4,7 @@ const i18nConfig = require("@calcom/config/next-i18next.config");
|
|||||||
/** @type {import("next-i18next").UserConfig} */
|
/** @type {import("next-i18next").UserConfig} */
|
||||||
const config = {
|
const config = {
|
||||||
...i18nConfig,
|
...i18nConfig,
|
||||||
localePath: path.resolve("../web/public/static/locales"),
|
localePath: path.resolve("../../web/public/static/locales"),
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = config;
|
module.exports = config;
|
||||||
@@ -47,6 +47,22 @@ const nextConfig = {
|
|||||||
source: "/v:version/:rest*",
|
source: "/v:version/:rest*",
|
||||||
destination: "/api/v:version/:rest*",
|
destination: "/api/v:version/:rest*",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
source: "/api/v2",
|
||||||
|
destination: `${process.env.NEXT_PUBLIC_API_V2_ROOT_URL}/health`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/api/v2/health",
|
||||||
|
destination: `${process.env.NEXT_PUBLIC_API_V2_ROOT_URL}/health`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/api/v2/docs/:path*",
|
||||||
|
destination: `${process.env.NEXT_PUBLIC_API_V2_ROOT_URL}/docs/:path*`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source: "/api/v2/:path*",
|
||||||
|
destination: `${process.env.NEXT_PUBLIC_API_V2_ROOT_URL}/api/v2/:path*`,
|
||||||
|
},
|
||||||
// This redirects requests to api/v*/ to /api/ passing version as a query parameter.
|
// This redirects requests to api/v*/ to /api/ passing version as a query parameter.
|
||||||
{
|
{
|
||||||
source: "/api/v:version/:rest*",
|
source: "/api/v:version/:rest*",
|
||||||
File renamed without changes.
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"name": "@calcom/api",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Public API for Cal.com",
|
||||||
|
"main": "index.ts",
|
||||||
|
"repository": "git@github.com:calcom/api.git",
|
||||||
|
"author": "Cal.com Inc.",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"build": "next build",
|
||||||
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next",
|
||||||
|
"dev": "PORT=3003 next dev",
|
||||||
|
"lint": "eslint . --ignore-path .gitignore",
|
||||||
|
"lint:fix": "eslint . --ext .ts,.js,.tsx,.jsx --fix",
|
||||||
|
"start": "PORT=3003 next start",
|
||||||
|
"docker-start-api": "PORT=80 next start",
|
||||||
|
"type-check": "tsc --pretty --noEmit"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@calcom/tsconfig": "*",
|
||||||
|
"@calcom/types": "*",
|
||||||
|
"node-mocks-http": "^1.11.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@calcom/app-store": "*",
|
||||||
|
"@calcom/core": "*",
|
||||||
|
"@calcom/dayjs": "*",
|
||||||
|
"@calcom/emails": "*",
|
||||||
|
"@calcom/features": "*",
|
||||||
|
"@calcom/lib": "*",
|
||||||
|
"@calcom/prisma": "*",
|
||||||
|
"@calcom/trpc": "*",
|
||||||
|
"@sentry/nextjs": "^7.73.0",
|
||||||
|
"bcryptjs": "^2.4.3",
|
||||||
|
"memory-cache": "^0.2.0",
|
||||||
|
"next": "^13.5.4",
|
||||||
|
"next-api-middleware": "^1.0.1",
|
||||||
|
"next-axiom": "^0.17.0",
|
||||||
|
"next-swagger-doc": "^0.3.6",
|
||||||
|
"next-validations": "^0.2.0",
|
||||||
|
"typescript": "^4.9.4",
|
||||||
|
"tzdata": "^1.0.30",
|
||||||
|
"uuid": "^8.3.2",
|
||||||
|
"zod": "^3.22.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 1442 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user