From 012ec019516885e1206021bf9ac3ddb72f84f28b Mon Sep 17 00:00:00 2001 From: nael Date: Fri, 13 Sep 2024 20:28:43 +0200 Subject: [PATCH] :sparkles: Rag + salesforce --- .env.example | 51 +- apps/webapp/public/rag/chroma.png | Bin 0 -> 33047 bytes apps/webapp/public/rag/chroma.webp | Bin 0 -> 1532 bytes apps/webapp/public/rag/cohere.jpeg | Bin 0 -> 3666 bytes apps/webapp/public/rag/cohere.webp | Bin 0 -> 6728 bytes apps/webapp/public/rag/openai.jpg | Bin 0 -> 27006 bytes apps/webapp/public/rag/openai.png | Bin 0 -> 82835 bytes apps/webapp/public/rag/pinecone.png | Bin 0 -> 2166 bytes apps/webapp/public/rag/qdrant.png | Bin 0 -> 4566 bytes apps/webapp/public/rag/turbopuffer.png | Bin 0 -> 9538 bytes apps/webapp/public/rag/turbopuffer.svg | 1 + apps/webapp/public/rag/weaviate.jpg | Bin 0 -> 20737 bytes apps/webapp/public/rag/weaviate.webp | Bin 0 -> 19630 bytes .../app/(Dashboard)/configuration/page.tsx | 11 +- .../RAGSettings/RAGSettingsPage.tsx | 555 + .../src/hooks/create/useCreateLogin.tsx | 11 +- apps/webapp/src/hooks/get/useRagSettings.tsx | 15 + .../src/hooks/update/useUpdateRagSettings.tsx | 35 + docker-compose.dev.yml | 43 +- docker-compose.source.yml | 17 + docker-compose.yml | 17 + packages/api/package.json | 32 +- packages/api/scripts/init.sql | 1 + packages/api/scripts/seed.sql | 8 +- .../environment/environment.service.ts | 69 +- .../api/src/@core/@core-services/module.ts | 20 +- .../@core-services/queues/queue.module.ts | 3 + .../@core-services/queues/shared.service.ts | 5 + .../src/@core/@core-services/queues/types.ts | 1 + .../unification/ingest-data.service.ts | 34 +- .../@token-refresh/refresh.service.ts | 2 +- .../google_drive/google_drive.service.ts | 34 +- packages/api/src/@core/core.module.ts | 3 + .../@core/rag/chunking/chunking.service.ts | 80 + .../api/src/@core/rag/document.processor.ts | 68 + .../embedding.credentials.service.ts | 57 + .../@core/rag/embedding/embedding.service.ts | 107 + .../src/@core/rag/loader/loader.service.ts | 104 + packages/api/src/@core/rag/rag.controller.ts | 59 + packages/api/src/@core/rag/rag.module.ts | 63 + packages/api/src/@core/rag/rag.service.ts | 46 + packages/api/src/@core/rag/types/index.ts | 11 + .../rag/vecdb/chromadb/chromadb.service.ts | 52 + .../@core/rag/vecdb/milvus/milvus.service.ts | 100 + .../rag/vecdb/pinecone/pinecone.service.ts | 69 + .../@core/rag/vecdb/qdrant/qdrant.service.ts | 56 + .../vecdb/turbopuffer/turbopuffer.service.ts | 48 + .../rag/vecdb/vecdb.credentials.service.ts | 81 + .../api/src/@core/rag/vecdb/vecdb.service.ts | 113 + .../rag/vecdb/weaviate/weaviate.service.ts | 49 + packages/api/src/@core/s3/constants.ts | 1 + packages/api/src/@core/s3/s3.service.ts | 72 + packages/api/src/@core/sync/sync.module.ts | 4 +- packages/api/src/@core/sync/sync.service.ts | 38 +- packages/api/src/@core/utils/types/index.ts | 17 + .../utils/types/original/original.crm.ts | 32 +- .../types/original/original.file-storage.ts | 36 +- .../api/src/crm/company/company.module.ts | 18 +- .../crm/company/services/salesforce/index.ts | 116 + .../company/services/salesforce/mappers.ts | 149 + .../crm/company/services/salesforce/types.ts | 81 + .../api/src/crm/contact/contact.module.ts | 9 +- .../crm/contact/services/salesforce/index.ts | 112 + .../contact/services/salesforce/mappers.ts | 129 + .../crm/contact/services/salesforce/types.ts | 43 + packages/api/src/crm/deal/deal.module.ts | 9 +- .../src/crm/deal/services/salesforce/index.ts | 118 + .../crm/deal/services/salesforce/mappers.ts | 132 + .../src/crm/deal/services/salesforce/types.ts | 38 + packages/api/src/crm/note/note.module.ts | 13 +- .../src/crm/note/services/salesforce/index.ts | 130 + .../crm/note/services/salesforce/mappers.ts | 132 + .../src/crm/note/services/salesforce/types.ts | 27 + .../src/crm/task/services/salesforce/index.ts | 130 + .../crm/task/services/salesforce/mappers.ts | 158 + .../src/crm/task/services/salesforce/types.ts | 35 + packages/api/src/crm/task/task.module.ts | 12 +- .../api/src/crm/task/types/model.unified.ts | 2 +- .../src/crm/user/services/salesforce/index.ts | 75 + .../crm/user/services/salesforce/mappers.ts | 75 + .../src/crm/user/services/salesforce/types.ts | 38 + packages/api/src/crm/user/user.module.ts | 6 +- .../api/src/filestorage/drive/drive.module.ts | 13 +- .../drive/services/googledrive/index.ts | 111 + .../drive/services/googledrive/mappers.ts | 87 + .../drive/services/googledrive/types.ts | 48 + .../api/src/filestorage/file/file.module.ts | 14 +- .../filestorage/file/services/box/mappers.ts | 3 +- .../file/services/googledrive/index.ts | 319 + .../file/services/googledrive/mappers.ts | 101 + .../file/services/googledrive/types.ts | 112 + .../src/filestorage/file/sync/sync.service.ts | 7 +- .../api/src/filestorage/file/types/index.ts | 14 +- .../src/filestorage/folder/folder.module.ts | 13 +- .../folder/services/googledrive/index.ts | 142 + .../folder/services/googledrive/mappers.ts | 101 + .../folder/services/googledrive/types.ts | 37 + .../api/src/ticketing/@lib/@utils/index.ts | 16 +- packages/api/swagger/swagger-spec.yaml | 1246 +- packages/shared/src/connectors/metadata.ts | 2 +- pnpm-lock.yaml | 11339 +++++++++++----- 101 files changed, 13392 insertions(+), 4451 deletions(-) create mode 100644 apps/webapp/public/rag/chroma.png create mode 100644 apps/webapp/public/rag/chroma.webp create mode 100644 apps/webapp/public/rag/cohere.jpeg create mode 100644 apps/webapp/public/rag/cohere.webp create mode 100644 apps/webapp/public/rag/openai.jpg create mode 100644 apps/webapp/public/rag/openai.png create mode 100644 apps/webapp/public/rag/pinecone.png create mode 100644 apps/webapp/public/rag/qdrant.png create mode 100644 apps/webapp/public/rag/turbopuffer.png create mode 100644 apps/webapp/public/rag/turbopuffer.svg create mode 100644 apps/webapp/public/rag/weaviate.jpg create mode 100644 apps/webapp/public/rag/weaviate.webp create mode 100644 apps/webapp/src/components/Configuration/RAGSettings/RAGSettingsPage.tsx create mode 100644 apps/webapp/src/hooks/get/useRagSettings.tsx create mode 100644 apps/webapp/src/hooks/update/useUpdateRagSettings.tsx create mode 100644 packages/api/src/@core/rag/chunking/chunking.service.ts create mode 100644 packages/api/src/@core/rag/document.processor.ts create mode 100644 packages/api/src/@core/rag/embedding/embedding.credentials.service.ts create mode 100644 packages/api/src/@core/rag/embedding/embedding.service.ts create mode 100644 packages/api/src/@core/rag/loader/loader.service.ts create mode 100644 packages/api/src/@core/rag/rag.controller.ts create mode 100644 packages/api/src/@core/rag/rag.module.ts create mode 100644 packages/api/src/@core/rag/rag.service.ts create mode 100644 packages/api/src/@core/rag/types/index.ts create mode 100644 packages/api/src/@core/rag/vecdb/chromadb/chromadb.service.ts create mode 100644 packages/api/src/@core/rag/vecdb/milvus/milvus.service.ts create mode 100644 packages/api/src/@core/rag/vecdb/pinecone/pinecone.service.ts create mode 100644 packages/api/src/@core/rag/vecdb/qdrant/qdrant.service.ts create mode 100644 packages/api/src/@core/rag/vecdb/turbopuffer/turbopuffer.service.ts create mode 100644 packages/api/src/@core/rag/vecdb/vecdb.credentials.service.ts create mode 100644 packages/api/src/@core/rag/vecdb/vecdb.service.ts create mode 100644 packages/api/src/@core/rag/vecdb/weaviate/weaviate.service.ts create mode 100644 packages/api/src/@core/s3/constants.ts create mode 100644 packages/api/src/@core/s3/s3.service.ts create mode 100644 packages/api/src/crm/company/services/salesforce/index.ts create mode 100644 packages/api/src/crm/company/services/salesforce/mappers.ts create mode 100644 packages/api/src/crm/company/services/salesforce/types.ts create mode 100644 packages/api/src/crm/contact/services/salesforce/index.ts create mode 100644 packages/api/src/crm/contact/services/salesforce/mappers.ts create mode 100644 packages/api/src/crm/contact/services/salesforce/types.ts create mode 100644 packages/api/src/crm/deal/services/salesforce/index.ts create mode 100644 packages/api/src/crm/deal/services/salesforce/mappers.ts create mode 100644 packages/api/src/crm/deal/services/salesforce/types.ts create mode 100644 packages/api/src/crm/note/services/salesforce/index.ts create mode 100644 packages/api/src/crm/note/services/salesforce/mappers.ts create mode 100644 packages/api/src/crm/note/services/salesforce/types.ts create mode 100644 packages/api/src/crm/task/services/salesforce/index.ts create mode 100644 packages/api/src/crm/task/services/salesforce/mappers.ts create mode 100644 packages/api/src/crm/task/services/salesforce/types.ts create mode 100644 packages/api/src/crm/user/services/salesforce/index.ts create mode 100644 packages/api/src/crm/user/services/salesforce/mappers.ts create mode 100644 packages/api/src/crm/user/services/salesforce/types.ts create mode 100644 packages/api/src/filestorage/drive/services/googledrive/index.ts create mode 100644 packages/api/src/filestorage/drive/services/googledrive/mappers.ts create mode 100644 packages/api/src/filestorage/drive/services/googledrive/types.ts create mode 100644 packages/api/src/filestorage/file/services/googledrive/index.ts create mode 100644 packages/api/src/filestorage/file/services/googledrive/mappers.ts create mode 100644 packages/api/src/filestorage/file/services/googledrive/types.ts create mode 100644 packages/api/src/filestorage/folder/services/googledrive/index.ts create mode 100644 packages/api/src/filestorage/folder/services/googledrive/mappers.ts create mode 100644 packages/api/src/filestorage/folder/services/googledrive/types.ts diff --git a/.env.example b/.env.example index 2773d6133..5ed292fe6 100644 --- a/.env.example +++ b/.env.example @@ -113,6 +113,17 @@ BOX_FILESTORAGE_CLOUD_CLIENT_SECRET= ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID= ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET= +# Google Drive +GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID= +GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET= + +# Google Drive +SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_ID= +SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_SECRET= + +# Google Drive +DROPBOX_FILESTORAGE_CLOUD_CLIENT_ID= +DROPBOX_FILESTORAGE_CLOUD_CLIENT_SECRET= # ================================================ # HRIS @@ -153,8 +164,42 @@ SQUARESPACE_ECOMMERCE_CLOUD_CLIENT_SECRET= # Webapp settings # Must be set in the perspective of the end user browser -NEXT_PUBLIC_BACKEND_DOMAIN=http://localhost:3000 # https://api.panora.dev/ +NEXT_PUBLIC_BACKEND_DOMAIN=http://localhost:3000 NEXT_PUBLIC_MAGIC_LINK_DOMAIN=http://localhost:81 -NEXT_PUBLIC_WEBAPP_DOMAIN="http://localhost" -NEXT_PUBLIC_DISTRIBUTION="selfhost" # selfhost or managed +NEXT_PUBLIC_WEBAPP_DOMAIN=http://localhost +NEXT_PUBLIC_DISTRIBUTION=selfhost # selfhost or managed + + + +# VEC DBs +## pinecone +PINECONE_API_KEY= +PINECONE_INDEX_NAME= + +## qdrant +QDRANT_BASE_URL= +QDRANT_API_KEY= +## chroma +CHROMADB_URL= +## weaviate +WEAVIATE_URL= +WEAVIATE_API_KEY= +# turbopuffer +TURBOPUFFER_API_KEY= +# milvus +MILVUS_ADDRESS= + +# EMBEDDINGS +JINA_API_KEY= +COHERE_API_KEY= +OPENAI_API_KEY= + +# ================================================ +# Minio (s3 file storage for documents) +# ================================================ +MINIO_ROOT_USER=myaccesskey13 +MINIO_ROOT_PASSWORD=mysecretkey12 + +UNSTRUCTURED_API_KEY= +UNSTRUCTURED_API_URL= diff --git a/apps/webapp/public/rag/chroma.png b/apps/webapp/public/rag/chroma.png new file mode 100644 index 0000000000000000000000000000000000000000..136dfe2e48717efdee1f796529889cb59265ad35 GIT binary patch literal 33047 zcmeFXby!v3)-S&4E@`Auk=S&{rdvXqt;D7~H!0l+Qc}`LcZ;-?prmw2i%55ecWuAt zJ?DF#_x_&yoZoZrf3L`5?YZU}V~)>=ImVbfN<&Qn51R@b1OnkHDavYsKq&Me5Yj0o zIxx~FspJI$;RN|;>%%o+p7hSHPL?+I7W8m$XA61@FB?k`$ZNhb%`W9(D_-btH&O#+ zWBP%O!!WnH5OxVVXnJk`x$16)BCl;}Yad3L#?zepYg>dYk2U3TJC=-hCBvAgH~jBaz;_)@6oi|CbOZpSkD^bAgZ zhu&BK#V_&aN2IlFUP~x%E+ij!aui&EP8us`YW8<7@9)`gZ!rQ`u4C?m2jX(d zAG9-NvI{RKD*tFqx`s*~{eJNE6sPUy`|oL9YL3S<`tz?IqyEryx%R~+_`unCe_X^_ z;@fe9ROyL2J5OLeb=y&ROZem5`*!0h{>My-Sl(~PpYswn#~Z%WAC1_q8Lsc0JX*wG zS(4WaNG~pBT+gnZ#NJR8Tu+MEG>|0+z%c!?L#(V$9!{!#ANuGep@~ka!k@+Ww(y49 zbDq8S=R+R-jZ9CD(J%NOOb2V1Iss1xq4L6oAv^wEM#r1bao)X1QL%b=OGwlUH`AJ4 zz57eb`%@gtY-|>9_Dwe33N|YOfkEdVx5*2VkLE;6j!`eyuhx59!1PaPEz}db#&-C7 z6HisKzM{Za{-XyYG@()F>Da_PF{I=UPewyJM3=j z3ZtY@(Dq8|tJ9?Vq)_=ax2&r$Q9te{*AlGWDTctYIqqojsdO6Qes=sH)ryu0YiU_O zB7;oYS)vOGcBTCpwg>LiKcZC{I}ZksH?NG{F}O;spR-NIMj!eUzOu-};3un#du6$Q zn@}l1*JEsWIkEoRCD;3F78>SAjq8D`--ReK>BmVei)w6VtFPTQr_IdYtC**zH0E7& zwM5Z*rBxJk8*80LcG#yXa9+Qz*eWwo!XvE~d|_8-MQcO|-9S@aA(7TB{6Qtp=J)hK zMEF&KaSF7!Qqf%4jht)7!{tSEX3-c$WtfCE1buIODN%W>(zB9(*tmLqKZO?}n z8=kbuq}49%C1iP9Zg%M;DAsTAc?yyj9y>S7YH7lWJ^a}^bI7#Ru7yzR%Yxg7q37my zFM0-gE0aH+KJ$C4<+Np`u;90CxLNf)s`lK^DFLGSv3QU7$$Kh(2UZJy@WpqgSD!W} z*S_v*)3;@tHEqQ&U2wQsyx!6mi8v>Hjmraqa_;?noa7u^q;$cqyXntU5Av(}?DNIs zTi-Q0GB^4Bw@NQ8yff+to0?f}su@XOom@FpE$BNBW=!_X@o#9azj%x5s8hY6b(CQyep-yvRe*U zk~wC~lNOfzc&X#b_`BziPb4!RyHvJ4kM4jPm)BY?px(!DRqq7DXH`Kp4=#}Do2A&} z---&l!kV|{5;3{m?H@2wj8I3;+The};WaIg&=h=X{$fr=I--9})$Dz-g z7y}AMAIpE0eq*0G_{NdAMuk}RSNcKCx}2Ho^{(8O{Z4sgI%lG^ z;8>wqoVNgb}@c!pZB?V5+HCggAQdAlulo?hnh?!id;m^q9b9DJ-wNKd=Jz z$8YbY&AuO1a$UI^dA`^kRAGF8e?fPO$+P-RyrjMI>dBY)%`Q0i9A4^AM&~-kiWW4U z741J|3M-ZAYI7lYDj_7-Dl16+28}@{DTR=#!6{1eOopb6Sd+7X&-lBX3^*cjZvkC$ zccXjSII~SO>6^r*a6ExdUfjpl!@Osi8ZJq&c9bRYQX;0%aMzXNuyI^D{{zeh+^QUs zK(S|BTyVLL{GhaE3FM)63un~^|MvLEBwfb67NQPp4F2K|IHA`Y@aE-H)GztZ>Maurq4Kc#8d~W(8ut$)k z?wk><=CC`O_j~X;hI>^?NAa5cj|#bOjNq-wmD=Fb?;Y>zo{c|0Xv2FcK5qSxG0xiT zhAVPKJkF-B4*ALF_?RO`Jn{zL<6*$O;l9MTv8B>PfaQ)o3~h@!|_a3f{k7@_S|f4v%=P ze3P_P>!>J)=U9PD^y@iJQV-70dtYQGA3Vd4W@qQ6o&urH8aQ8mZZ8j76=*6l%rjm} zW@V8PFv~pNPO?bs^%b7Oo9$*Xp|mz$`%KdOykM0gi%XC+mGHG}Mv~{Qee1C0MP-+j zNR?H-_nOgDoR2}uj%&OR>-*HqSM}W%q~{-)+Ao`8oUC9oM@ zF_5A+^vJ)$2mOdwmq>)Txa6zWybX=VMW#r^YsthU`1tKAlNzFN4*JYv((< zNQ6hR%p&@u;S4F6AS49<(uYI6v<` z(2dt+pFnr=tFJe4QeT4MJ<5jV4m`+Y^Jc(_nu~UfK>zx|343$n4b2qc!-wr=`m+)kKp(_k=7#M{x)qsYsdg1f2|v@k564r1g(8=|W5lRyYlrB#Teqx#sH&vj}x$ zv&kC9_^|+vV3Iy1oy9}?#HT8+_b*|D-M`dw(L2JGM2W8YuWB4VM$WzeR5#gf(v;a_ zn)rMr=y`!&dbE54@yJP$Y(U0WJQ>1gUO1xBRVis8&d~Qdy9%xkQEAxlG1?i)KrQ4q z{hA=ntY0k{V$+9dW-rD36mFb9?}%C*we}xQp#A)mzs~!_;#kt`TKI@A?O~tj1Lt|l zFz*2|fx&>*xwo+pNi$#X#AmULL-4*|Kh)(is$N$!X{41=xtu|dsv1a^?z}`+;--D} ztk17o`G4#6A9{9PHlb_sir%~3b|QTUGJoK1=}iV?<{>sRG8#%UGXIr~11Wf>UxK(| zk0f=Uu~wlbE6px_AA^j0UG!_AX;zXv=@L??J6H25PC7**3AsX7S!@#Gpd!Ot6fQVnI)f)Sye8XWW72jmsh?% zelTMbOCN&9E**@ChBv7Z@#ayb2n(5OL(ch8zhS2=N7ze#F4rM56e{x>f_se4*2b@I ziH$TL;hlC0jr2byoJX5i?Z1L}WS(OY`l45zRt4mv4f!T6?b=2$(YN5eeCf$=LGbZA zQg{yTT#_M+qSn*YpbOsXB1SGaPN-h{lE{saALw{e=Nw%~2=y~-Qv1)7{h+0#d+~{_ z1B`G?*DAv0MFyZ|^05JGBYo9pB4$nw958byQwt6+2WOym0)fONyqsZXb{24YQwu8_ zM{&l3)=oxx8*_0+J$_X#Rc9FsYa2x$R|_p4HElB=J2PQ(MhOVEn3o7Zz`+6zqxW*K zcXSi+5@-BFR|L3640AHl|Cs`}6KB*{)u5MgaXc`4L7))2SDT>3;N%_;ie6gn4FpxZcgs5W)^ZD7LIVHzmrfJ5xGcdiAzooHpBWz) zSjbes3~UNBf%$kW z&B4Olyn!p!K^wf^-) z+s45{3l2k|#w{Q$#K*%WARxpe#3#VV_peF17Orl9#UY4tb8+zg^~BsvL>?ds11!hJ z0cK^v>Fj9r=M{urL;z_3WMK$H1t|X+2ZRxkakYTKom{n@ob1IJ5sRfqko@OkRluLj zVQ`o%3~m8%$b3o)U8AjbI*i8&EbeHr|Hr!iufc`=uY$_L5lDkPfpW=~?@SaZwa`sf6l6ia5kI-@#czQT zEN4XnH{k4w81ah)O3$PK1~K4Ds&W{c*bfQlFuPYG`9L6gkdmyFw%7dbqRrdy(~Z?v z7?NuIbwVmhvTr_Aw>l{V{2p~ShUffp+cQ(iG&o7q5k{G9HMW0LE;|URt9&+nc*{s= zVE+6)V;J(`Xyc5LK@2yeQsN^emG~PnMc^+_;J>bkNV34lKd!j+i2J`^%|Qvk$Y0k- zD3QSZzg;OM5hH(Hzkm=-{(e-u-5f8GE8W&L-i|DE-}G5znX|BdNivj2a{ z`@fO;KVbcTPu{;^|2ylygZ$V1ze)WcvF*-^v;Ti z-Tj(#H#c*o@VhFmV_FrD>V&weST`o2lwA+5VO`uaxS7T~xbZT|8e=7di z<>?omr>@pbxjK?;5$`Xr+)TI$NWDc~|J-@6xIB0=7*M72vcuo^M>E5Z&*5<`p|0pt zr<>IqxZA8WI?2e&i`04d-pbj{p$kf`D>7y$^@^5EQOcZ_@Ad6w(0jj)#>Eyf5%8}D&Q3=` z<0hPe=o~#+e_g4o%TJ%`J`y_{bzOe+IeOm5D33{+q?Hy669}Js>L*T9n4j5gKaTpA zQrkiV68iQ@y!J*iarUX_=BE%2-%g}Hs?&MBdztFcxQe?I=cCmf4`RM~$&++XhMkvJ zMknsNzS;~|AAMX4HIG+E5s_is!RtOBi-b4rB^E(Fj}CWP(Q9sFOC7YQ8P44A3JH0# zy9?|)vb#P$gPG~_SDzdbY0{S>YjfZE(88skO~n}DOhap?gN%ru{v^1Us}C(pHV%*X z&|%wri}qtyh)%462JHuIa$VtH&Dpsq+Tl2;nHy8P4G> z)=*0)r=$sgEdw0GZo_00ExBM1}Vg(P6d_CPMZ^c}kuf`>ZT*P_wD0y~oi-a2T8bmibZgC$Ntp+&G3B zIYv#_QN{U6<|paf*`$k=Iz3blW29}|Fb`bKA~yHxn+9uxLtLWr}G!v~V;^&eisb&h4{}Eai%oW5HtbeyBbLVt?K^9*rbB=l(5$`1R z0qg2>GJTx~rR?z(n@TfOqB_OAQoHo3hI)vQ5s+bv7>gTRP8GZAo7OEC;A}9LHZ<vAqlP=Pt0WYLHbEsn%u}{tPPXEOJ^{L8ISsFwS58haI+=HnX;Q3i_rPYf zQ&luD4mz89Qd3c&tW=$mVn^!P(IsBw%uUl%QfiBP!_}r3WGZ%b1??mdr|u~#HuEY> z%{Nfi8C9{x!K54fZ4EM&XrE@n>{pdDNBbpUe3AaiWn<P z$AE~UWS42=83c(E`%{ryA>Y3}3X5IG5fZYCbrYg4h}eIQwSJvnsQFS?7~Bsu3ZPNePQ5@xK{&q-1O?Ih}djkCI81J^oQj&Ey(R^Wr-wu9t-Ig<>moS zRx=M@A%_ndy>3xvHeTEn&`B;0c5%VoRM-*{4ZY{i%<1Z*=f_bk8+3qIbHu$~-DLJ@ z3nQ3v!Hr=UaXL6LY&vG^%s%+oh;(H(kRy47`8pzgIbw~LB!eZ1?d;$HkNU!$!0vy1`Fjw*!&(^)SKIS6*jFG z7?`@J-0zwvUUO`-k-q7?_`Na>;hmvtzYn=!pe-y@5(;rfJ)5$4v7?G+-eF(9#lli` zo_MM_ybGiS!2ix;1E&tdy(y`H34=0c>a*1ql5;g!CqZ$~WGlC$M_#&sN@)>8dkT77 zfN(`7zskh9LTOyV)KCSRtG-Rw9jR9vew-k14(#<2=|T`zUm6czNKH;?yOI>?+z%m= zQB?1vQ|l<&=FTXPbZNmT#sE+bzemIUY*VT;WgqZjL{nXkU&YDXp8t18Dwv}3!0d1ij6~6 zVMoH%KJ+B3(I;z==0lYQW)uV7bw;cSPxw}Wuq795anaE|Qs!RI7UVQ8Hy}MlZ^{5V zapAIZW^iE~)wva^Wioc#c@-9)C=qh_ICPX=EPNY6assM5|26_`XB*xNbE*YGEPO_$ z|D}PUKq6gs*Af=>`KoVb>?$As8{?sLnsQ|d?T(0?uO;E_M7S!mbf4ylDjHyoC>i1( zJ5ziVXct2;GMod%!`>QQP^nsXw)i>ntEm3ClM%AJ78+5T=ok)p4)x%t>^6^2?=Q~R z_GoQs`1+}~E&hRehGmUeiGZfgqYS}Pr^5S$X(ns&z%`_X^!tRi4CH4&e{%ua-%`U` zb$x20Q&`PhKe^!Ig9IFzT@x;4b&r5zpV%0X&W^em4oR0m{9XpJ@_3Dhjn1r|s9vr? z#1@sM%a z+nsLpfhb;H1@Ji88wc&OkQmF{kxu4F9Z_t1Gu_zMPfRBxMb7z#MitS| zY9kY3u_w;f`~4XWXFh3MM%glZ!U9bZB~vBt^!%YYUPlXou~^_J-KX_R64_~p^`S#6OFiF>iO*O+!!lX!p=OWpfVwXS16~z<}_|ZliwU-X70uxmXK^@3+24e+U)dh zG~)}D;-z;M3ht6C^QUfC8LU)`8$XybxTasEDR;c49I#-z5sN{tC|XM33LT5sCj1&v z$~r#Z#$#nJjwe5~(2#`9Xuh->36XI z+6C_b-B}#m{j;Il2DiBV6@jn2}@-n48!Gu}K`0p+gs zUC{Y*cb7nBcGsM*<`u|teG*4=?wLPxu##A)4>GK}6!_{D3PES!$mZBJ^?aNr1?(|+ zINfPuCyD`x#D<-R&u2>YJcZP{%*0f6;ug)kYB8!~SNDW>W3&{%E#lIzUvCcY5R9zO z3Hu5Mc0J1CjYD@1K$+H?(Cuhfvwi8*bgzbq!y13 zQs~V0<=)O14R`zZCBc0oVb6}>Yatyu=%&U+#$tVy8SP=qKxtv(g^qJqG6I#I*9N>|L2e1d7Kisu;BKdgN5^ZJN&F+Fiy zao+D4b%h&uM9&{fw^z7+N-{F4g()l%+{MY4tg=cmkVh@qj<*rg;HJByBr+eDAz3$# zN<^oH@G148D$b^ftfBGa>vm$VW*koZl|7quQWqnmbF|sbyiVabQ*4I22TS;QsXZZ< zY|EPjD;eJ`a) zY1=ENi65aMD>0^&{#jiQdOOBGQ?_E77_JFv!62Aky_a8E+D;la9k||2S~^TyyG2z~ zU%3RuF7+I}`Y04(5NZ+-algPDKUnEoOlY|^;{rOvN>a}~BYYiEN;U33%l>VFqilF%_|V@&i5_u$MU2VItkLdWKh5AExJ zUQLH?UPO@WnYHwI!qtrm^MWG!$0Q=YU~W@Rdh-%@ujB=s2kS|D;jChA(@l_dT-96R zELUqO+DJGQl^a)v3yo<2jIW17G4ow)329>|#y;iyr*9k`gO)P8cciW-q1T=|L|>_p zZDh*xUF4`^XWN9BjWQ?pbH>5=)^C>HX0->u-AjrrX3!DErM_-@>7b9{g|XT|2^UgU znBpsM+UH-msNz?t$7MjcUMKi-L(Kh00@3~&H&jvPnwf}vhD?DInoRwwWo2{{Sy#qA z{S%?sD_@UZtBDISD*F?YfSfnG@s8flAi^Q8iJCa!1mJCHulb=U;fQTND%;t6Ry=I03F`+;wEBYzb zyOXS3hU!~Jt)}pEbU3fte0$n`GLo+&$+YNB8Xl=`$$N$%7aQ5_3`hfTp}k%%Jo z+Tx_FAD+?;r1eWQpK_MEb1qCgvcamAP*B zmRy++bx!e6L_NQGZyNQFC$z5p_PmfnURWmT)b zpaX(&`mQF08n=`(S}QGz=GJ6?8A>3{idGcVweMva?GX-mx_orE%iK}1bkqPbXUZIp zB`0x_R|{eqa`z*4$J&+lPPmpWvm9Kyw)^FeCx)a;WAcTO=Is^gNJLFQqNUI6 zM;uP|mA$YK)U$^Y`3Vp~jzCBDX1abc0;Z1A8(#yuBe|>e;tgXj{Z0$E%<(s7KeHGh zHCsLzPKyf>KAbvoYb96h*xf=73oq;?Ymp5W7{UR|ZF#X>G_&rD`KtfWmfVQurLH)B zKUc$c-m?C*Y*ey-EvW)P`J~@AMejQck$TB;qmL;yJbQ5t#Y(`XAJ6&-4sYn0@m?4Bj()KEMtPZyo;1$8}wj!%BA$yK=^G3&%ZB&}i*7>O6C!&`9uTnUB=! zsEWO+nqR-MP2HRlh}&`auzgYS*$nEUd=6_)&cWR&D%T=}#Y67ik=i&a`XTRGjrn8m zDa1PzH6u!+@k(z{OzE7ju5WK zxcYD#b?{Zt_qjtoZLD=47G=WFi$KRhMu(XfarE}Zwu*NslPHl$0}~tu0wsWIBI@Sbpqx?5f0Fjec7cthZrsKfDo9(av25<>L2o$7sgM)n57sH3oFwqBluudAxq%8)d5J z`6IG8Af-s?hjlu zmPd__49>zUuW8CxL)9|lMKv^RsV0@!8Z7xk-AX#b_M67;*&U`bE;7jxfb6h^P9AWB zVO-CKe+GCH{N5pL6A6JOUyI|?T~~%Es1+!fh^L6*%X9#M=gn_;)|2~c-8+5QZi26+ z=~kqVy57m^DN9J2MYaytRXAY!aqL97Z{u7MO5ZjkFmcDGBeEpL?ROrJ$YSzpCkR*y zA_ovZ5+671?)R;`@}W3kKfRK1AD}BU?BG~FF*ti&c`e@VEUhO0Gm&kJiJvaTypKUU z>+~r}F`+!6MCZ%I4c&HxlL`<7af6%FFJ84Rh5YtK378MLW5`VHP=LlzTN44%(wFku z_eIAh!N!Yw{f;#Nkz{AtXd+=SPpYBP?>E@pqEGt?)iOYuMXO=v8b5TUfk=P4HO2qT z(wRHB$1-{`$3yG#^0(Sc$3nC$&w}lKR{o2gw9VBRiKNzBjgFr?$B)&^XY3~rSSSQj z-RaT_jL+VZ-VAfE_29eIDl6O&k?h2KI!CYrLDBC4caeYGJ?LD0Ws2i=#=}-%nU(_5 zAY|ZH+d)?(RvmYl=QBz-D0s{Dsw*F%wzSMEves~dt(?wJ7kT$=&-!grE4aeB!bYsd zT9!i*m9kA#ms!W~{v7@ArB`cCcmMBt6iy6;>>v`^{l3=5&MCB79A zesu&dcCT3~Ppc`VywHva(+**2uoS@;CsoDSgq{Nkm)4|3W{P>@?33-$;?syBu~+!D z|9zF+QqQjLU|t-{6W#)JK_ z&FH%AN_aT>{ViGI8}?;tw-d1qr(eO>YvxR64jI7b@?1fOWM$Zx!~6R6r&{Ta^at0ph)TBU`HX7M zm7J|mKw}0godj)<9UC2V(t9Q}?o9vaY3yYOWHsVgd^wf#^8Izx%^8G^F2!&ooWN$a z$VL(-{(G|2z%9dleAL+PZ~9(+vDL>w*|ov|Uc~Ii*DlEEWOpiKFqXXGCP60zV7tRHZOc4yfjmo&6TGo$ zDwm+?ZcR8yAcOBGe3)O148m~v+H}SO5IkAjtrjacI?i2!@t4KH`_+r)zW06|SIO9D9(`dtQQriePLKV0?f zl8%<^iB)*~>WgM`g8;Tx%v&AGClPJH%OI}n_>B#~Kj4^wOWL6D(8W2CmF{;V-tXFs z6hqMN-uuUVhHcVC|DP^rj+p0zWEG zSrK9~F?^~Bj%J|F>>d=qbP>d(Y*>AXBYKcNL(8858`4{iS=JN1joZc>EhiT%X)?eo zHs=%F*T0IdiW0$N!#&8gWu-SLw~-&s(|7XdKeo~Z#OyRNx}u0#`GsqA&=t@T)JfeP zyDEc|f^xAI!`Y3soV?&`-0`FJm^7~ZqN3M-!rAdMzG@TCe0&J2G~+&wgD~%ovH^z; zkrrRSU?{3w#4r;Q3-iP%Jy=)AI85z0h$A~48kc?TSTPsLn;pUHZ@hm5P#Yc86DwN= zcFlnjT)OebY5Q*vEj23nkRI8km^S9=+og{iLRf%uQgb7}%tS~nIWD#J(D-1rA7$3F zi4Dwi$+LW9+g*R1bWkRKKYGj$*qfJjyT#*7fmNCD;g5N^x&EG%e8-N^M7d{!wLB=1 z!10=52zo!UkV8@CZ;OZbGooG+p$3O{-%QOV)y%;uVmK)NB^N-n>J!{h7h^N7qr$Jk zrA&gmNe|FYhCB(Z5E!gJK8@7*;W!HD6ux;t3{(?poSLKk#!Efw5r>v0mt)AItxtSO zYR!3ZuRcIl15ysIs(in!Z-d#6(lWVi^k{(erG66drvsA@-)^Z#twMjOsifl4w+u=v z-Uat?@8)y^`Efv7geOYV{M4GeS)V2Kk&e)6t8FUX*CtIGe)35@8R5`&GWjrd8qmwf)C&TV0w94*?}(du zb-3wyxQ2PnyG#z|Iu+>3SNH+TJhJc`x!4fxcy|{SF{RRyr>>?JzVo|a!H+vlayHz6 z*^si1mgJ$TM5LcF;5SWbks2vn6kRTKOLX1p7^T7B-5g0 zJAU34q0z29c%iah^IzWusHt;ICrb33Xd~PV82~XZ-X1=mvKd_L(YmxDzZY9}ojJ^t z%kmty6V96Q{!svp1#x@>$%5UvZNIyQW$k0ph z1n@z}s=DAKRJBpqrqJ-s<){qBWQQQs9`q&Zd-P-DDIj~?JF;jTeruar=`70@n{fyO zCF~cmgz8D6O`$xc<0p-OFN{l%$QUmk7#D#(jrY3C{bnH%{u?*%`^qwGHVFVbpJu+T z^&KRivYYOK5kqV_o5pE6l|h8~xjs1cuWXnr+Hm?_x0(Xcba8g@RhCD)&npn3P^lv* zc5E(3Q%)xMMK~L&1tCD`D9697^6gsRew;PyM9WGo@DwXI_!>O)`V>>wUg}$DLdB;- zeZ*om7`TcG_41YGT|I9o{KW!O{nBPH^3bp)qX&ApHp;JKs>{W*bw$NWJoRyI8rIrG zd({OVOHpZl#Bj%&B18S8uGrEgaqZU4p8JFM+^FrNF$wj&H zfxhNoqABBj;$dAkKK^;nb)kL~v_^5X$c9sCCn?E~03 zsLq2*BkjWX6<~x_`By`6ogEQ$o?7e84c0bVivxFD>lrPh1XC{{)kb4D5vpP?gFq@B z^Bh28r=av#<;~ca-1pZ>dOyzXYABf}!sGVtx#qg|rb?J^9 z<}J(p6$J6CZ&{SC8_822bPH&sk;LU*V?!^-FX}$LIQa@krc-eZjoB=#>03iTFb z9*#EZ=QW!+ex@{@><0?UlbR(5hS&bm;`}F3bPKOIz2pZDZ-WDwL86fz0}Kb z79g*WLc!$9kot{`Kf00|AbcVNJ#9`U_986y)uKCU^BL~h2A9)W`YVoizTZNN@+%?8 zn-8CZ&L;{U2tP!?DI$gzTU_Ib%jvngc(gG@U{f21nZP(L7E9bwt$tPIGn(&{p++6w ze5yR&>5xt}K4@vTG_AXhkr%B)2!t*5k}?>Va;woDkXecZB}@^31x_>xw|diGxpcqf zS{b|!1=>;<-4L*HPej48B%TX-S-eNLZ2;0LODOFR2boB~PV2%j-SP6VGVx4);~D`+ zBC|G|P&JS@1+!SSx;K=@wG(2V4=H-cG0+yHd_Bw|gc501k|XJkI%R{+1e`hpN@?f? zJadiNM$qlnJ1*3*w;w&W(06KYaszZbaCX-C7?uX-)*vvi2+AY1H^&%8xtA1#*#o zB~5v47*|vz7xc#N0tg9srjSM=4n64n=R?|q01P%*KqUsz6HfxEkGvaue1x9Fo%<_7 zCkr>Jw*@uMbG<;Typb8h&j_nU0oRD`#8*fg(LCtSkh!duiNLo#s%1i%N7d~~QhW@*=2_#jh4ym&)igm5x2NVN-06(z)CpHH-${peDzYXI z2p{|LNZ*1jJk+PCw&@fmtNsgk*gePBkw=4ln%+ zZ;hN9+E^QIrnsvVB$3~;63Uk;bRd#7+=Lp zfRu4=7wOv>4n0!1*{pE59!8BPk`~)A^m8*tgW1YoiOl91?apds<~yKUT}(O(?0s|S z4LOCDaKXNKfaRM%6>&`fdUYHu0JBh~y1_&^0jMEdhIA>8xlZTG;tZnvj(;7qDdmU+ z;?lQ;Tua%?6PRJvPsV3A=gJB0WwROby5qeyu!Sr)2lkY<(?JjYXsn55v59Fzc?EXN zre$)bgbHY^hNoK-Pg&liTb>e^jE?hE_)N0*9a9x%^kGLYgpnMmI0?g6Z1kw1(TkCjOo~b0!ZX~Lww>Kh4Lc{1>KcqcHi@dUQ>LPDH$2(VV7V+ zU`~#rh7%2Tzn| zEoWz0wyxhvXG+g1wZf))w9&pS#Cs1T3bUzIpo-Eh0=YuMh=CnT6J(IL_Wa|DzhAGi z-!oBs7Uvf#N;8X3htW%KG>j#eg4(zOe#zHh$mW~_naxt%5g)jdO3g(3y2IKV$y{95 zmu$pa`=I^-KFiwJV1B_vXCfTJa2wI3ZQSkJc0_vCIb9KYf&_HqS3}SV!9BihL-G}u z>@N=sAm-vgrr>fyBO#vz&*JBm+FrL5WWSk4I8idi#NQI88M=MpL>4c~s@4J{x6p_ri!h4XYRdeB34LEk?C?(SFhN&i*i+)Ym6G7ZPG!89C?%r~@~MEjTY>&zSnR40ptWI>-5+k? zbqF2_(S8_ZT(|JUGwv)eHTf_nlSkvTsR-375gR0{Q#AJnne&XC&U zyp7N}P(vh;na6G8>`yT_^vDrQwmnjAi6U=O0<7Br8cupAs}6|fRGmyDe*$vNMver# zLBpx6kuqx6U=%f!YFnRicx*F&Gi+I=7exI!!GnBpe5IPashne=@N}lO4pR zPf)d`4d;Hb8skVE-)C|e59jUU?tN=X8%c^tGmP=+RS5>>K(Xk~+$ZAS5=X>yRRKG+ z@8f=Wl&MCYU=Z>aZl+34Eh%K1K33i^DGAu1UT?$A)D>o|g7b4I(zi7W;7~40zn03% zz8A|5rpT<84l+fP9an8DP9cnApcX_b=&kf}&ua9=IgL8Tus|b!OCpJ`8{Jp{8qX_w z$XwBj#Rik+RI{E7u=TZ0jurgLN)qcI@ zJ=c7?m9l8f4AeH>ye%kL?s(0pDk?e{X(QvPr{72{Ioij0_WOtJB0kAy))Aq@d(aFr zotq_95*=HPl|k=5(p2NpKaeymMhe}O`AE?-X_ucuAvw=oN2DUK7Vk){(OU{^BH#yA zsPVO=goZDwM8`CB=+NTd-O)i!L0g0dal8WE@kSK!>mVwnCZ(+K2jM|T2#fD2D982hu_!B?Odn~U z61y>8s!1;6u9HYYv?YPBA365)aquA(1X$4L0lftpJ&d#=poM9g{$Vwl%%NkvnwV*) z){-gK088ezK9%^R#iCaBUK~uTR8m4@*o`N@5xo>U8a4JwJv`uwmeQ( zKU=ezj}_ES?PNAAe^u8oiJE8`^o*54SA$Bj0TnF>pL9=uJoa&={&S6lWGS#iJ77gZwi z8_!7V6UzoHc&RlnQ(V0z7FjrgKpJc{2z*_BljO*YZd8Vy3*Ad&rJsxFGf0F- zA9T>An9QLdP|3YI?5YcHIX|%ibKY7?(oU%9qv^~e?eu7(A`rIiz^i_7_!Vf_QAtYI zqonXko??;6Lb)}1)4vyDChmXEYBKPd+Kqe+bgX82*%%69Il9J=IpJ~>IEh5x(Nx9_ zn@^19f@gNJ0dUP`K2dOnL_Bn{e%G`dGZ~pp`~{CLaX)D+l(700Pv9>O2&O<6Qz(gS zfrareS4Qt=q=XV!NpR+F1$*Sk88Jg%@G>%ZPm^MN6@wf40eHWR-k=SNc4R*JepC!1 zGV}dXQstPzmqHTJ)N98FI-%Qa)#JysC}wU24_$8OP~H=SLZu0#ws24FCtUxM|9DR@ zgfWCMqU{O_g@P=XV&6TtK(m-G%AN5YefvCmkj6azd4g7AAFgQ&t+EOha3}&un(EXo zho6OiDl+C!NXQ803^boK7-6^L9%;d?Pp*x$VD_>zSyFnR*l`A2^DzL26~AI3cNTLN zgb68IuDd4Z(Y3PB0q;}`)Z-^!mxLu28F~;z!5}7D*k={Lt9;h8lUva0vcY67yxNoU zziRu+s3^O)UqI=UMu8zjK#-7>4iS(J>5`J}W?&Ey5Rjooh7_cwM39z}k{YCAq`QY4 z2F^XtbI!Z|?>gtxS?7GYx!0^=_TE?iuGo8zSX|f5pFjhAFVi-1E6I6SOeXCTd86ka z`KbD@meDyrX88nT+SJRAQu4kC{07Kd+)@F<3vtm@r!J_QX&OUJBD=BYe&LbDd}~)uXQ9qd3bZ!93LRI64mpETlI0Pe~jg`m6oHm z@_-(dbbCUBNj$Sq7C_^yF8WkE3b-;Cs==lY7tXMfzc43CMEt#zm(JH-5&GjU#)eK% z=&l-;u~^`9EF8yK{C=vCL-iD}bW)!#&K$;K*B!pF^I+18n{ERe%~mw~ksMoRF#JS` zjR9T?M@Mb|PYsy-AWpAb5XyIdo9@T`TbJgC`A;XR5aNU0WH)atZe4=+eC=?!d(+oJ zW(pq6FAZA|tEyGa;=1^}E+=IgkyCBp3luJ|IF2`3?Pe1S+oa-R*^ygx43F8!11MY0 zX@<8)Tj9TCfj?_O&ap7bn5^ic=wK(>=6G3aPo^?i^N-2BI2DM{q>>YraC{W=aG@=Z zNxKkBfrs*B^CUODVj>c%c{NLgv3oOAe9@W@CYyi_5%q8K3g^mVM#)CWY#U829k)3D zrm1ck$ocFo*8u4gIB$o^UZ>Lo6U?Z(#`pS~e6O&Y2of0->biTI$w@aguxkFXkuzAy z#T-UFOq<`$!#TESV-xM}nY?W=)$?I9)>*-#c*2ja6dA0V{n$l-v6Q zmMM8v8&0h810_dIJ|&&9Dd`kxFF&P!qAvs%XvUw3T~frO;C2=bztqOw5>M2IKcN<4 zN%ns{%cFOkCb!7PO8jx_xyc_Jb3gK9<;1ElL@^sMfL=Q?ydB#`6c`}4_nUA!XM!Vr5^wjnp0$E(aGTFk2~qBQlfe5IC~Y&t9+gjP7D-jV z`%J&p-9@m)&^pl^_iA7nv+qUOZ32kn>eKa0T-yaAU^@?=wzj=%nZb+6?9u%pE(xmG z&%cObX!&;JL))Kag;hQ{WZX2()AIW2g45^3kDF+L-}LSvt`Jr_?DZ({qi4DDgjmf6K&5-!ueLu^L%ApJ79r|m|=Rb;7;;Y#60Fk2b~6-AtUxas$$9}rZmUl#>HKQ z<6oS<_j&al-+ww~;m9C1@hFVi)REA@z-mGRAU7S3N>XulwLw#L4Gz>`sYY*%W1;0* zp3BR=m3G_$RyN^c^AXl%GS@7d|*W#IIwm zkZ;Ay|A75mO$L7ozHitQl!^WC_aWdFH!-TQT(_dfDuds2;Tp}UzD}_p7<$&@TTF}A z3@h8LVK6KAov(L*~ z4BjY~|NYgtIYY|Eck;I;ozgzUvHW=ftMGp+?`)7!w=Z7<4yuYvH<_w(lik8pUS!jx z2F8sN`-nbTg|VBoatG>M;yE5cJ!V3q*CPjV3^ULo-Psu2_58J}1EX zeEk`b(8`ir8GN^&%hdHnD-AGw+2=b9wm_2%3GV8H(V%G(mO6}4NA75K@;>R>_SMB* zJ(7?z7Xdc-O>RYGC@u_s`r453wXVdp(G_Hp7VH38+%yn#3kmk0UH#>|wsSKRyb)HTE%zboxoY~t!Uht316pnSaZgMW zx#u?b#59$w7Vr0`K+9cTgZJsSrq()2$CpYh+Pt)11qg61duN@$5_r}YnDCa8r58F8 z=XX7g**C;qB3O1@1T*(GUfp}izk_6zj{Aa7DMuL}?I9JhLQLO!D42vi^tpSV5|wH- zuLG)#8GoYmz5Z75fE7i?BD39lFpN4}TFU|q7C$kIAbw(xJafNfC0PBTwA7O%*OKXU z+<1QyGK16<4yEt?G>OARG5dO?MML&Zytz>{&DM%CS znugTIQHggMj6KaOVt5q0l;BkT@XJ>qwu8JT*diEE4!i<%62n<329%>w*Zm?z@tn?a z!mK|)=P9{78J&5&OEgEhXHPv}K0)9?^pfI%60Rq94`HDqfoSed*UCL!X?oUG(^rdU z;Zo9(6U>!nk9oJmMnKp&J{)!9KW_v^N$!}FToBeR!U8fPlsyT0gtgj}W$KD+$lo$& zQlHo(Qy8R-e;yIMM9gtWN0PvCOC(}1qdJaaotoHEQ8JJVg)hO>_7v@#4@SvRTZST$ ztKM25Mjn=+fT|kS^KizIzt)7eC(?fitBKgQ#Qyjti9Tw=)<5Am`jMYi$sJ1?D3lLP z+CLdO!h(BqUvh0VgxGz4kGmsm1ymch=+&!A z@qr{u@QDx{Esa~8$gFrtA8QOj4h)I|%I;4qS4LT6Bc8R6RZIUbRul`*57z^*dIHvCZVF1aU z+?wP?$PE^bE7QzxN?1g=AN_kJHT4e#{-?}~^qdqMiJEy*;lle+OI6ULm2b>$5}KD> zlVc<~pe`rkK_;_lVz#Xi{KV;dkAmS_nfvr`2Ss&_TNraIJVZ6{KskWqh)b*OrBF=Q zbuc_S=);C$Ui4$ESJ-jfQj$@<-r^p!d4=aWvXmOJ0*)onDh572uBa&r*i9M`z@c>I z#NQ%GV#gU};9TdByZlRlYAuFfZ3WBQQ;D1Z+#(^v4W1_tGgw@-7%-l@p6DgQF}$F2+oPerk>46tPe5EjbWH-!alZ48otA z>{W(`Y;P*qnv(&$e%}``tsKR6cxdQU?x9D6wdJMW9Sd=RPFq2teih`oBi7Om+zRF! zLz~f50bn36B~VonsnT?QEl>AaHo;{h2`x;4PpZ_&QPhh4{QPqN<3Z=WLOrgLJTqjf zrtHK2)eF!HYP;O(dV~9%T$TgzEcSHwZlzeY>)*K#&<}+uVh}~%Zp;bO7H{IZsdX#+ z^TDbncVF4dZ4&rB>Nu$&u}K3UW=vZAn0l;J(W~sy8bxP#i1?`4o$RA^$$r;_QiFyt zT5@}Zsiz~|$PJZysOPXyAP{~*9s5R`abpoG>~$Uu=z4I-=UFUoeKYp`ZLI8&IE-fYOMJU`l$R)Ov2(sFHrQ5;o|Oaz}g`GVFqvp!Mlf>giJVArgN}~ z)KLp;0=ihqD&O}E@5nBkOEN|>bidJ-it-`p`MqL@$*O;+@S<70pfE5E2qe5c4atdF z6XaEGe+;H@uD`-Z=N8QA@W9NO@XDF{8v12_@djMcfP zvN$9P>XFFp+#zk5T@?MI2A6#xOYqjU><7@p{Oif-YO+&HQH5dmW?bB2L;%SeUE_Iy zxG)&dOX(OOU&(9rG;$9+i?Q?DGc#8!2+*N{R69}5(@5GYSq-x2s>o-?9|%&@agh%B z5}X=_*C|*i#FeWMNY?XKxeAy9vn~NQ5&guoFt8_p?#$f&Ryl(}s<*ahETeu&=8qlU zF!dCWF8OE)E+)oGv(^Q2H2Ls5#c(FJ{Z_6TSYed0&PE(!`dK|vIe6_4!MP~;n`J{bHK_XdveAKXnOiHodPssNd0nmEZ*Jg-q60mj^#|Wr-(+w<#U6t#4nQ) zWag1sfMBjLWQ{EKvw{WRdWNq$*B3&B!wP@88C5^y+9Z?Qo)L-YcOGz>;AcYODxEXP z**^g9FenXj&|dX5QspYRpS@kh2Y1&# zX~?rsf*?{}QO5=K%bOp^*K&K_mKmBCaCbtFOY5qpIaG!hSP{#+L>?yJv|?-NXW?sj z29g1dZ$FxX*i~gyWEBdDlhAp2#&?@i$jD3-CMc~xev1a#ZZ0l%|DqUSm5x}xu0Lnj z$Fl?^9sl;BW}xKNip{jhAzI}65~uR4k;t0kIox#Y4#BQsj|Ay-JW*4Dbk{h?sf((P zD`5v6*@8dTC&eTDk{b@K)|UX0D?%~c1`Dq4ZE|`8HV9^TxN)!)gkR-X?Im1Q*ubtr zup66PJ{Gh0+V;l}+m;`B_brp)H|x>hJRdE}ZXqrR{^>`+$>VEc`kAk^=XdcKNUcH> zq1Nd91MEwP<$bw_tu!*T-EAtny>HLzII_N{Mn5Q9O8#ty-Eo+YB4&P#b3{m;D}Q-+ zKu-l9!!myi&Yv6%8em;L65NHg-S;Bp7nKoBzB-h*(z2!_p6yEC?x$HAOW6J!dr@?} zv{D${vKy<#f|hZY;vYHwbt3Gw1%%k}Xs*Nua5^CelYkJ?k+$f#C*byXt~)jlLyoZ@ z;+-i0XZ>xiKbbg6w)WI`W=5s3(kZ`i@?e4&Kk+!O<)|eCF>?v*aw{Z1@RgSPWF-~0 zKs`)%IN?|sbq%Td3snQLZ;fj(%T0~ZRLjP=BoKF6D?gjjn{d{x>4Hb^Yq3EW%;k>g z%lPv`;h@%IU3CCeM9{M9+gWG_coF30t`!)G6$Do8;U~!qUEfn+ZZzfei%vo_6e=mx z*B5?f#q$r{WPZmQDWo!zA3!w0&XvGQnvK~Pfz)Xkj%HLKD?Z$Ph@WVvcHxF=S#_+# zt95nUe7`Pm8Et_I@IFJYeWDaur#Q` zO97@0f!c*Gf4W1jPZ7Oh&YU)?xkfiumegj@7rYxB6V^S*&CIL6;h*PMvq74zaC9sC zDZ77r_?2Z|P_loh)p#R7Xk`w(5;X#L@tlq~#ntoc>quW4tRxwlC%7o1Y6gQ{%{y5Q z)XJu1N6BSvcwN!^dPZ_!k{&~CndoiCfoI*b1sID5+M{YgB;U*!-<8WBA2vQswm!&Y>mO`UlLOKFs*t+J zS?fh7$Nt)~BXh&!Lw)ACKsr?gYAEM968kB2 zgfbIA{ivb-so!XnTG_sQMalTIe>6B^gwq8glusE_H{2wFocPrrg}$M5q;g#7v<5zc zf2oQGU=|1_`rNP7O6aj8)O4WOIW|S4$3Zpb47}Nf@F}8@-9gF7j4T!Wcot-Lm1(Vb?o>+!G>yJie#YriSE(UDq+APv_W~te1kWsgmbpK7e`_cSupJb7Ls0iHQ=&%p z?YfSdXG?LG3wJpw_x?$r`IbziCj_}2C=>Jwg1u(U+~~Zf2qe6yLfki@)})U!K&!a# zG+@0a7Vb-0hSe^|pA}R=IrT9vgW(IjW6b{DJ(*VI`+9TYmu+h%*vgCU4MPlLaGZ(M7!&vhXH#Q zB*d`h**tL@wO!t_1vIM&W9_1V$-$u|FOAf_Hy!5Y>2N~a`@Zzn6yk@TD(gKoNXZ;5 zz|N|V*W#z=v(O_m=ytdm4Qc!oaC$cuA&+*~hT!$IRDtPbFtei4jnv=RNkPjXB)m9m zr#i*ZITTPERdTflY^YjWA?_JQy1EUfwf=Oc`a))N%JE9X`Rj{ONytW6br>>m@l+=S zcfy7%;Ywp8VGfWgxNIKpUyn?v{W~nwBSZO4wTtoZ>_K1f3kGxXgzY*e9J;+M?hT*E z=bAmuu+)QAdaXrZ)<_8Y1EAPzguq2Z+lEaN)coD*i6)>fw|`Av{)WNz0Pz%UW>je6 zGgQ23suwg5qPS##k(oN30EE-Ad&brQP4-}9X3%veJq!jycEBYK6f@+(cY8p2SLW?I zEA-3NxdC<=fKc8OkgZd|m>?Rizz?#-*P~qz$y}YwHhIXd-Jm zc->k@#D+G=r4R5lNdAd7*0}izCUE_Ck`|b5>WVn}F@+Ia@r9mINtzEks z_m4ij&J@d{vy?xL4jsJoBm?COgMqD|TMM{J^0>t(^LaVTt~L@zgh`9Vk2ul`?irq7 zFSWcz?k0CE$2$2a#h_r2?=sp!y_Au!_b<6_X|^HJR}9pg4NL6*N(LVyNY_F?ufkVjEVe>@M&JFc4+oipg7*SN$8*bgZvx1639oftm33Ja-ff( z733~fB)g}KoaFd}8{Zyr+Z1Ui3F6r@d?%y3E}vp5uvR@m|>&+3n+V>s5yGT5j0AOAeL4 zU>PmyZquwF<4Nb_SgNoK@EbZjO!lhYR^F4?dwG6@BOBq7c@EaUopcw6;PmkFGx+?e z#31f(5P_|F!q&Yove=AvvC6+%bcfb96iGKrf5&i5*fi3np=>B)TL?~;FmeK^pgS%oh}3sRj*HREZjok z3)`ur!{pSg>0Z`HbnibL&GL<0d9u=z?o?aE%!_g~%%*!Ablyq5{4KQOZ~GZBo>sm% zz}#a&%&NN*um0*3f~m`SkH79&A=Y2^?L0Btch&qDx>^QJS9!pWsv zzkQiGhD@%tpt6y*A9geh@~`^qpE;DfR;GMvXL%Vw)FZ!t?$H~K!TR$Y`h80)FLt5U z8h9SZq}Q^DpX&pHt#EQ5CZ?n(A~2&dM!cpI=`5GhgtP9MgrK_5B~zEvG}9iH{uOTz z#kCqAU%fclR$V;OQD-$Ua!tX^^+s8L_1!zAfuXGx`Nhv|I}yEcugF+Ul}}-ZU1 zYv_E-`s4E^c%b+}*$T~?kA|_k>RJND{fOwr{6Ch*4`bdu1GtpQX+8l^U|?vSmEj*7 zdf1bQU)Y^k&Qe-6TTGx#by0Qj7g}|)j*M%Cew69?lXP%aV{5AK(#z2t$i{e}QfxYq zLbKKpTWg_5EvewpO7N$-eg1thMXurzOB^-U%SIOJRm|zS_(;qP)0hwzLr5AQ&>hHxkY7wLpo>qRi zQZ=+(9a=v<$OFtFPAp;f+kZ?KXj8a!`P3%oEn1Fx~eP>u{dF($TmX>A2I0w~Vi>KNx{MD2&gmC=^X#F%eVh+%a(k>7aVjrb_D z{CA_LQuBi1KlVQo@1LCJqM3uHItdF$PGT0eiMc=<3(R7JxQdSd81G&VC3@16nu>l3 z;2@?{ZJNNO*9_hqw&Oo%@q9ys$Jj^TJ=c5aXV+n`TP^*5cSIrtq8?G-3T0bb$^keW+%fOFbE;G3VrhIJ=eZdr$C!X9HG=DpIFK5 z22ViEnM%40ay5w#cb|KvJ99yNEW6I9H#k;FO~Qq%*tD!)#4dz1-?t%pf9c&hJ^aAy zf(sLUlnHSqc(*Hag~Vf2&ryY2?293Xdas9Y#ELQV42+Gs>Nu5`j&55~bKW)HMXzVV zs{4#fSK9n(Kx*$!QAdvcp31vsY2>iw>ytJ04EZa{vfBxYsqkB=>|{iQSxVtq*x}w zdhxZF2a{aqL4_OIp}_2O&sTiOSrS-+R$l@Rl|y0&<%XU{t3{^t9y74?JtOi#IT zPvdZN6=&Rqp|21Q``#Gvu+85WI-N%rXxQg-w^%6PhUn(v$@K<+NN}(1_H2p}qJE>N z{;aixcMK-N)&(fE#JUSePkof1C8Um%PF!T_yM@&soF1}iA8hw{V;u=`wS_MmTONt` zcNB>Keg)M&TT%p&FC6+(P^`d^gE8LQ`>LO@sLPC$fm)y`l8$E@nU)BHA(<;Lye8Q3 zVwg1U&HUjoOko`|?%mvqS_0B<4vH1C^E*j?Xh$A?oYQhk){`$U=@AK2PaxzI?Q#H` z9hVH2j=jzz#ZWcpAb;{Im10ev%Q%9D>ohxus$k!bRI-6gB*?rbRjf1SZZJdcv(;UMS<@h zB>m5!TeX92u*Jm3_=!gX?mD?7uk|da_CvQR?6k^mYx>CX#oJ3 zWhgJ>Oj7!a&=3y;F1Bt8??z;lgMeJ0L|6~@?_Z5NA*0Yev>Wcn2S27eir!`qZC^Ey zvBTdzH`LcAoq1*B7r_9#WN1Fwh~yk88P;TAX3~Z3vL5^q1&n= zEAmY5JWzZex}WyJ?1+9%hCGTwEB}IIV54zcM|zvnloZu(&|ik}9Y~pZ#zD4qNVU=} zvl;EB!{iZ3TT7Tb|I%FCe8o-g)ZyuXUDVZFpJxF_EiuiUmqKs=S?`8VoK4eZ__l|p zpy|)uL??+aSqWTaPj4?PBSVr#2>0Jy>TR!+kAm@0?FuLnVMye@Gsq3y5`cH4>c*>8 z9P)jo#PXr|2!O(%{Z>mn#-r5TyeH4)fTa=YPu3X-$-C`E!S(#ia9`C!lfQ?ds_;#c^r( zhvp6&(95%)7&kD%xMI^*mc5rs#uF9gVh#O(u3ao2!o%(A9f(t*| z9T?Y%dxay=+`^XfD5BY^(YDC52b&hjQ2VWM-SZD?#S|Nj9a7Blo|!zLHAh+9b1dtH zgA)NC%)u?>2C)qV!8?)#!Bqwxp4ks3+d~NE0{mrE)E0HCsK+M&{gF*+2y; zh`MLc3(q<$p8z?=5Bba#JDIhWp%UP04f^+&t`8IP)GvRidlT)Qn9d#)F9RX-+bptgmN$o0%z2nG)QLW#g%sKCzaiK*H#yK3UC9oo+#J9*FWcI_m(M&(#<{B;z57Uc7djkM zyb+l~g%`)r6+u|a>*cuj(It^g3|1UxhRba~x}Rs>5t;+F?cwgeGo8Cprs6+=sO;C+ znTkq=c9sA;-S2eG?X7u|^)LVhQmMfP*!r>28SC15;~NYTNS2}ZuL9`}q$Pc>N>GpT z@XFv}tEyZ=sa@PWKA^n361m`{i3@WY7-{sAU;Y1CCSY{ghfwuTFU0Axc#4i<_hM42B)!Nfzv4!1aa zpnRb)@CCmDRSeWyFHmZTbj>jby7nbB-YpZUeD=cMFYuppYq+|BT}gJ9G|yyyze?J% zBV$FhMzyzv&rm!;0E~U9==HzJfTVa;tD$G z-`%XS0&hHJ@3Q`kj=V?dmm7-lk<CkHa-N$YZ28$_1yweH-{(!zo>=zp|tri`7aArtoVlre`7cDbo zi;$m2cYJXpi0~rje}sy^{ib+veBZ*dtA~is@GuCsYAUdyufh4pG%DbRR&b>^T=@ZI zFwvQ#icseGhd13@@g5#>V%f>R^vaH~YUVFnYHSXhcbLuZUde*?p*t~ zw{^a5Pc^&1I!&@odJKW2drED-RrzQ>u_}MWeL3bo#Df%_I&D2lGA91sYCEMJjI%fRcW9AOov~+(B(%wF8t)5jznXduho6X^AgV(qAM@1dJGUH8}tHYQTuNUh2L|8VJu=G`zTI)YesC z+|cS8m(L0PDJEm_{_}?5`1wx6KOT;9c%ai>3Ak?(cEYHhyZ!SbM3=h?JC(vcR0By2aVqHx#mq z&+sMH|2InDvktd#|H~c2`8~0j(dKvy7B~`=8?v5~Pfjmb2!rJSwO0*ZhS}0D@9FeMj zRyo_A#QBH1slW<%@1$Y}5riVjb^n3mZ7<%L|COOvLlSr_`h#($QIDhSQ-2@RtpIO` zkit}v7eHmz+dOJ-h>H1Isj=(Fa&{D+=-gZ@n?I*xwpr&TO^Zp#1m2`ZWzp{3e0STy z6-w0I<~H@gtR#-Picj~vRF0RBxS)F)NonNgLT>!s0YX>@Hf$>k?W37BQcCOHd7XId z@lu4DGA_Il6heEY^Mf@CUvKxKc-({Q1lQ&Mdg7#Sqi1V#X@c3BOcJ_WGNn#4KQJ{I zI7}Aw{Js_JmRHh?3RUm!bgTbh7E@4X?<5NV&?J} z1w6dJtlGp--mbE%sTC5wm*!{|&tp(`#IvE-AS@vClq$;7R9U%45=}i3CNGj#f+u_$ zCeEl6|3bgu-kQTMuZLuL?U2G3$#uE_J}8Zu|+V1r*I5y8#Y$EF6_ z68qo*ls!cLc84Bvfu>-2E|Euyi_-tb-OIbfFgF&DUZp6)@1BWY{u|Z-{^cS1g^`p& zpCf_|IZmP*-tp@1nAw`6$rk57i36zWV39m!uW?; zNnSm4;ClUF&Awv^il*_^fT-^jy(t6^R34nuhMS+iN}k9rFhN%)xxw6#mhI2lzVAWY z77+X>8?$yLhN@xZ+!F8a;Z3p%uNFm5qqm23%4%<$e#_GBNNTLE%suWUf6U}xWZ1~4 zjX?zwZBiuKXCd8oNl-_P2M$*(HST#c8>kSFsAz~$W22?Jw}7$x>(=I0OSh#U7)q_u z|2;nCUo0%#Ma&%mmwt_d>~9?ALRc7f6MR$Qr^kkZknO8mYGqxvr|# z>JeNg-gKKkPe4v2HCr}_y|qc3lUU>xLB7U-Vi?5pO^_7NYG$v39!D1~`X-sN;jG9&O zFa9-pPTdfqhjRPa)w@1i_!TBl+j`l$kZo1l{58wPuko?h_-^PpFFATj?6#i|l))_# z0DnkU&tA4Cm_IXK=bh;WgNR19fY{epI4*bQrx$uu=)A@Q9uUnMRYPe|wME>I&y+Mw zCw$hhwlf7v-gmLCIovH^b(CTw#gBZgQAQLC^R&5SWur7@g<)<%5Xs?weQU3!CTFx9s8p3=5E@@7oPn(9ZB8nH0`}q zAj1(;V?^kS;Dt>8pb}89Bn;GREpbQLbuMh__w4DEfv)`ndBRZhDaag)`sPaSp!UM^ zqMfVlKCOAT&?-mBh4)Z)TS`4SvzY9-UxR$%o*SfnhXt-9_EFs*vSf809)adq@lzWU zc?K?2iAl<^-v6f3IKq~W%gWJ2??5Qb3a4n-(FzQCw z?7SSRI^|FR^Vw9pl9CL zxFs)j=iu(U2FL>X_sD$XL6b~so%_2K$+X1%gY0`G?szowQP2jQK62WtcOblv9%9|| zmk3n=*W3y9LNc~WB8lCW;cbIfHIh0*?`(`eU`{<*18^V?FNDPLLMuaU5v zxX`xup50;U{z|DR7l z_W$d~jDOz&sPJF+W?+2rf8Chz?>m4fflvN@0tN#!$bUZn9roYne-8TZ`~U6G|2gRY zVd(!H^nV}vzYY5T^YV)SckBKCN$UUP@4xT=jm!T#so_=Uw|7XDGb;vOizfmX#9*l^ LX+E!1unPYlU|T6T literal 0 HcmV?d00001 diff --git a/apps/webapp/public/rag/chroma.webp b/apps/webapp/public/rag/chroma.webp new file mode 100644 index 0000000000000000000000000000000000000000..e7e7b823065b936145e84c1d88eef60ef2eeac5e GIT binary patch literal 1532 zcmVCaR2-3?j8X-vTfDM+Skzp2!k|;mLYTEal8K>ng7U> zkq`n12uN_@Vv7J51`a6#Oaz43VnafT4GC#7a4->&;)o+Q1h_EMFC+xGaN!VO!oh`u zi-3#iSNsbX1_5UJ2Nw<|5&}|_K~6H^ASap7&3NhS=^q{#^< zIY}VEBiw~&!!4c-qw}n|DzAdG@qco3oRxP$A9zr|*Jy*Iv3C&v7OuiJIXeFb+vLwR z+fZM(Y=eIbkL=gAqa|+fs_X-2v)w~YFj0kVLrpMH1rwE6H&kL>u&h`LCaO>qmV$*U zRKY|QOc>aA5Ljny2MjC|mKl{GP=%VXOfaynAYfo!U|?Ngz=DA)RDpnjN?0%T>SX)=hv4H?fCcaa6BpQ9M6tV zuO5G&y?nm#+mmbecHL%zwAolhn3tn@^3g`DAR{wr$(C zZQDlqFO)v_d$0TLd`m?C9Z8bpG&zjinxoi-;RC8hA&mYr`p@XU|4k2WU%PVQ+}X2d z&tJZF=Ya^5hmW5;eg4A6+R|JnsTIlX%O{WQ-MMY!y0vT9uHUkA?~#+2ZW;FI*{e72 zK79Q2`P+}E@F0ILCtC}R!nkwk#NMr|mdr0V5OWu=+_dM|#XI$WdH(wSr>|8Nye8Te zv6@Ivj1Bd1u#l9)t#b!9ub5vh5ObGp+JEwP&8L@dKUddjGo(&aLWqZrMj6~aw|D)b za^YCGYWJC!@4i%W&P6bmnG)q?r2risTs^pcVL2$K|Ec}d5W|rg>29W`{tt3$`_gh) zOdi#Ta~Q^w0_`Nyt{+~rpd4iO#KC$F$I@b4wS-;UyBzrIjB)+-T!=s%LO;FSSfaB;?UZ_MH8dv=?9OG!;w(&vb=olx+G$u1jvymIOUnJ@3!(4hdvgpd z)!CHP`vz!E8{8cSi_uXUb7%q7*xnpTI;FSktDre`P?^H-Wzo(PLs^LtTQ>X z2pZPF7irjHXjs`OSPeC0AXM7|sCXh@@F~K}25fEe!Ci<_V5L2DCFHNxnMDwO?XHvO_ayCV1Rpn{PyJ| zl}c;x8J3tKR27mC>S3i(lv?>cn^!NJZ%9Se*H7w i`O_zl9|~O-F_Cl@RyH>EpB-rw!stJv|BU|o&!hsp7WXRv literal 0 HcmV?d00001 diff --git a/apps/webapp/public/rag/cohere.jpeg b/apps/webapp/public/rag/cohere.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2e99fa0afc3ea50d82032f17ff5c278135d4b8dc GIT binary patch literal 3666 zcmb7GXHZnh7QT}a2AE-n=n6wr6lDmqNX|KXh24N6{6%bHRN%JnO`}X~K^{U>vU3E`&f8F(+d(PMA(#B}B07gecTLXYV0006$ z0BsUb1z=F<;Q$Q|4g?(n0f!^#Q79xGnjVd2pl4uUWMaWEGGUn*7%*%YEDq1g%8F)Y z=U~Hgu;5wohlfC5;2t>Q7y@w&&&a@t|G$m)6u{B}FM*dZ2p<5&LSR@3?HTY3ND>A) zG~jPTqUaDXDEx5sI5-Ujm;YV@-yjbJ5{jZt0B9Jvh=F0ixp##BK>XukFY08BTwrw_ zG2&`VK~`UdRE+Cb+w^zsE)HmcsF(s=Cb#!(>?{C4Eo!{t3$kML42%E(Cb#5XjUQ1V zc7h=1hpRP<%TZaNk0cKgPgV0rbpZgXC0O30bAGfr@t+2B3z~J0R(ec_zIj9}ey!P1A%I{nIg3?%Sg^Bfrqop>E%LLbgV5S@ z;Rze@!Hv5{-WoR`+(Lvp;G+9e%ZU-KBO;mO*5`RbEjcKshW*FGjZ}WWyAUv<9iX4vZvw=@rCIjrtjPSf<|8>l6Q8sm)&; z%J%E;`Ux|)9nB+S1cGBsRCzGqs=E+&)`dPW9yN#8p#(1-aiu>>dRS5{H!l_de zF`Nd{`N5lZ(uxBe36khymGy3TngjD=sa0n!dS3Is2Xj>pIjYJt=jJRN@8wg==@a%) zL=s{;$TQ}Wx!7Q$$ZzB3X%W-7x`Gw~K$@nc0+wGG_|U&Aunv&zpL5?;Iu8qo|y3C(?>0W#;^w!WZ5 z*SsAzE2_VvQXM&OOqPyYa-kHLsmi@Hz9E0`k z#fqm>dB|FY?qVB>FA5qz&Zma>e|iMRWsVQe9x2thccTVAg_+&bsAFy zlXMyjiUA5r1U!XhM9%Qh{$j_EA#as~XDV#b9-N zaYtv-?ym~C;|~@p+l^DhTaxtqduRX{iXaw%g0Ub$MgKIg+yFS1AckSVfuZn8 z7+pDv0(uz5ff0IevUVn}Y~A^G3Cgraeet~D%EO!Tm8Pi!SSoyPR#G3%;5!0?Yxv!?R~EO6arEadH~;h z_PDQHprn>6lhK^Z1h@T1EAYcWPI8NZR%ur>0zlC&U-) z!SYJxm>3?EW%K_vP3DW9o+nZ3qQCdP&x*g2*G2K1Jq7cTkzoheT-y6h%gMW{3^B!? z+9zH59+BkD`6!=JYZ7eIlp_Dm(=o4#8rN+(`B zvOi!Zhd$LD;OLmBs(Z@X@Y37Bm@bGj@$ZT6vlX|Fe#(plnnm|NK5L^o8o zDjCjZ^YYZ&1<`aqByE& zL@aNqE9DcnigpwI8D>Nv>Ca71`JjPbvaQbildCgNKF!vf$E^gs+Pr0$Pd57T0}gAb z6G(9GIBRNBy#4k?;q{hc8sJtZpVhjf^=qS-zs*LO%$py~!lSqPSP1P}TOP-I;sV<2 zYm6>+q7g17XK%{xvrh#&oW*ANx_P@Go+w~ zLhiOqh^o?jW=3GzX*XLVQPe3sow^6h;U3~JrT;z{*~`)?i}BDCQ>Qh(Pq?jjyYCIe`DM72rK1(h z%8g#!zg)2|)^(u+CG)PiO%>PwT|7MSwNKa!rqHPo{6V% z>_67G9>DcsZsb#@{6q9AmafVJe-xpN^G7#kwvzmXWGy=Tn!(V+_if&>CptZ^7Pl=5 z1;$LOE^VvkmXj8HO!gc@1a#_>CY8r$pCcD4dXr)VS*jPbMY)1f2uTZ)ud&Yt#)uIE zH$q!4WL!mV(}3!@PM!vC;ro9sHFk&G&jm=cH zfRqUK-xNMw-+ph=(YT`!0@_5#m9E|~74pBexL-aeQw{c`_hBpmFnZ5__f zsG^D8hKHDL&_UaPjwt9HJKD8gs3-A0^bj^_zCh@X1f4z_us_?4W+tZW63a^fD-|qMOk$UkQGV_EQIQ_D7tGEugB`9-cBl>M z%J^Y8uTlK5iPe_Oh{j%n4f0{@ZBEii?R7ONHPtz^mDw74DxP9cusN8pmRX}@%~u)# z-I z3JyeNSX>CZTJmste^#oyN_o5Ei1rcde;OkI>WjdOAs!M>R5A+7@0$CI_F+H4Y`m48 zPmsRo#>$nZ%<=p0>AQqN(+Lr}VauRnzNX)ZkaniM5EZ&BccjBY)HQs4#7;gjjD~M- zId9ux%=p$tPOaI7J%U>nj`+6CHmVM;XDQt{Y$n1-B1gavMgEt{4@G`N;ZWqD#JjxK zH?k90KoZ^6>*bcgq9a$DPA4N-Ye6syuljTe))QG(pq|F2D<`KirscT;3 zMxE{t5iO00$P*f?s>9@K!vtezx{g;qNH!Ahjj3pjkde8NqoEevDn)vgm>qROts6bT z?xQVXMDHq-#zHbFEH9@vX*;GVqBUWRok+IczL%P#u^XIyx*d8lYUKEV_EA=XH1v`W zwAu1*e1GE2%UlTV{HqB|SEIC}!x(`}C42C0xnF9W1>T5=F)N&1FygL2)?+!`XIpJk z6oE=n9(vyK*wuGjLuwXj4W5?nIl*M0{ZP6TJGMEh;J@<5~~hNyB|3?xnFl`>v>OhC|b_aw*or7Pp3< zJ-HzLc^K+2iwrM;n3QgcWJj*bm`WzB&skP)N(LlnT6^FBqT`Te=EPstf4_%IOTZ!U z?5v-GP*y=&@0nVs7Kyr&s?P(7QBiZyA=P4=v-;Z?$Jk~} ze2o;8=NUN)eFaRZC)!20#Lu~>%KD^Fo(d%5i**CFcJ+vNZ?p(+uwsz@CkOIW1T4}+ zUQI$J?pO_26xL-t{igY2VX{Q~*J!mn zb&7(gx=iZxl>K);k+Z(DGHi?o1|Qg$OSV` tLH3mo@n8426bm93=DUb3ISG4+cR-K9b>A@xqfQHh>{{?S_Cu0Br literal 0 HcmV?d00001 diff --git a/apps/webapp/public/rag/cohere.webp b/apps/webapp/public/rag/cohere.webp new file mode 100644 index 0000000000000000000000000000000000000000..3dd5087a36bc7ed624e6a24aa4dc62cec0fabcf9 GIT binary patch literal 6728 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 Ivd6do0|by`SpWb4 literal 0 HcmV?d00001 diff --git a/apps/webapp/public/rag/openai.jpg b/apps/webapp/public/rag/openai.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e42edacbbeeb616ba4ae688efbb1845b71cfcdf7 GIT binary patch literal 27006 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 SKcOZL7=b!yH22>g=l%!Vd~PTJ literal 0 HcmV?d00001 diff --git a/apps/webapp/public/rag/openai.png b/apps/webapp/public/rag/openai.png new file mode 100644 index 0000000000000000000000000000000000000000..fc71f647c54dd8255717a4e2b24794ae9ec22128 GIT binary patch literal 82835 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 literal 0 HcmV?d00001 diff --git a/apps/webapp/public/rag/qdrant.png b/apps/webapp/public/rag/qdrant.png new file mode 100644 index 0000000000000000000000000000000000000000..17903e2623c256cf26b4f500331150c29a49a37f GIT binary patch literal 4566 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 \ No newline at end of file diff --git a/apps/webapp/public/rag/weaviate.jpg b/apps/webapp/public/rag/weaviate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60912da45fc0b78b07755d8d7ca5a84cdede7079 GIT binary patch literal 20737 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 KSfTRFr~d;-%uKZa literal 0 HcmV?d00001 diff --git a/apps/webapp/public/rag/weaviate.webp b/apps/webapp/public/rag/weaviate.webp new file mode 100644 index 0000000000000000000000000000000000000000..66b98fd2e6b744286d5f2c582a1f31afaa88c119 GIT binary patch literal 19630 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 F{RguY(pdli literal 0 HcmV?d00001 diff --git a/apps/webapp/src/app/(Dashboard)/configuration/page.tsx b/apps/webapp/src/app/(Dashboard)/configuration/page.tsx index 026e4ed9d..966e8b1fa 100644 --- a/apps/webapp/src/app/(Dashboard)/configuration/page.tsx +++ b/apps/webapp/src/app/(Dashboard)/configuration/page.tsx @@ -38,8 +38,8 @@ import usePullFrequencies from "@/hooks/get/useGetPullFrequencies"; import useUpdatePullFrequency from "@/hooks/create/useCreatePullFrequency"; import { toast } from "sonner"; import { useQueryClient } from "@tanstack/react-query"; -import { Badge } from "@/components/ui/badge"; import { Loader2 } from "lucide-react"; +import { RAGSettingsPage } from "@/components/Configuration/RAGSettings/RAGSettingsPage"; const frequencyOptions = [ { label: '5 min', value: 300 }, @@ -178,6 +178,7 @@ export default function Page() { Sync Frequency + RAG Settings Manage Catalog Widget @@ -260,7 +261,9 @@ export default function Page() { + + + + + ); +} + diff --git a/apps/webapp/src/hooks/create/useCreateLogin.tsx b/apps/webapp/src/hooks/create/useCreateLogin.tsx index c3d37a488..79731a949 100644 --- a/apps/webapp/src/hooks/create/useCreateLogin.tsx +++ b/apps/webapp/src/hooks/create/useCreateLogin.tsx @@ -14,15 +14,12 @@ interface ILoginInputDto { password_hash:string } -interface ILoginOutputDto { - user: IUserDto, - access_token: string -} - const useCreateLogin = () => { const add = async (userData: ILoginInputDto) => { // Fetch the token - const response = await fetch(`${config.API_URL}/auth/login`, { + console.log("API_URL: ", config.API_URL); // Add this line + const apiUrl = new URL('/auth/login', config.API_URL).toString(); + const response = await fetch(apiUrl, { method: 'POST', body: JSON.stringify(userData), headers: { @@ -31,7 +28,7 @@ const useCreateLogin = () => { }); if (!response.ok) { - throw new Error("Login Failed!!") + throw new Error("Login Failed!! ") } return response.json(); diff --git a/apps/webapp/src/hooks/get/useRagSettings.tsx b/apps/webapp/src/hooks/get/useRagSettings.tsx new file mode 100644 index 000000000..e4aa027cf --- /dev/null +++ b/apps/webapp/src/hooks/get/useRagSettings.tsx @@ -0,0 +1,15 @@ +import config from '@/lib/config'; +import { useQuery } from '@tanstack/react-query'; +import { api_keys as ApiKey } from 'api'; +import Cookies from 'js-cookie'; + +const useRagSettings = () => { + return useQuery({ + queryKey: ['rag-settings'], + queryFn: async (): Promise => { + return [] + } + }); +}; + +export default useRagSettings; diff --git a/apps/webapp/src/hooks/update/useUpdateRagSettings.tsx b/apps/webapp/src/hooks/update/useUpdateRagSettings.tsx new file mode 100644 index 000000000..b8529d8f7 --- /dev/null +++ b/apps/webapp/src/hooks/update/useUpdateRagSettings.tsx @@ -0,0 +1,35 @@ +import config from '@/lib/config'; +import { useMutation } from '@tanstack/react-query'; +import Cookies from 'js-cookie'; + +interface IUpdateProjectConnectorsDto { + column: string; + status: boolean; +} + +const useUpdateRagSettings = () => { + const update = async (data: IUpdateProjectConnectorsDto) => { + return [] + }; + + const updateRagSettingsPromise = (data: IUpdateProjectConnectorsDto) => { + return new Promise(async (resolve, reject) => { + try { + const result = await update(data); + resolve(result); + + } catch (error) { + reject(error); + } + }); + }; + + return { + mutate: useMutation({ + mutationFn: update, + }), + updateRagSettingsPromise, + }; +}; + +export default useUpdateRagSettings; diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 5ff338333..70a9045e7 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -193,6 +193,23 @@ services: PH_TELEMETRY: ${PH_TELEMETRY} SALESFORCE_CRM_CLOUD_CLIENT_ID: ${SALESFORCE_CRM_CLOUD_CLIENT_ID} SALESFORCE_CRM_CLOUD_CLIENT_SECRET: ${SALESFORCE_CRM_CLOUD_CLIENT_SECRET} + OPENAI_API_KEY: ${OPENAI_API_KEY} + JINA_API_KEY: ${JINA_API_KEY} + COHERE_API_KEY: ${COHERE_API_KEY} + AWS_S3_REGION: ${AWS_S3_REGION} + AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} + AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} + UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY} + UNSTRUCTURED_API_URL: ${UNSTRUCTURED_API_URL} + PINECONE_API_KEY: ${PINECONE_API_KEY} + PINECONE_INDEX_NAME: ${PINECONE_INDEX_NAME} + QDRANT_BASE_URL: ${QDRANT_BASE_URL} + QDRANT_API_KEY: ${QDRANT_API_KEY} + CHROMADB_URL: ${CHROMADB_URL} + WEAVIATE_URL: ${WEAVIATE_URL} + WEAVIATE_API_KEY: ${WEAVIATE_API_KEY} + TURBOPUFFER_API_KEY: ${TURBOPUFFER_API_KEY} + MILVUS_ADDRESS: ${MILVUS_ADDRESS} restart: unless-stopped ports: @@ -232,12 +249,12 @@ services: dockerfile: ./apps/webapp/Dockerfile.dev context: ./ args: - VITE_BACKEND_DOMAIN: ${NEXT_PUBLIC_BACKEND_DOMAIN} + VITE_BACKEND_DOMAIN: http://localhost:3000 environment: NEXT_PUBLIC_POSTHOG_KEY: ${POSTHOG_KEY} NEXT_PUBLIC_POSTHOG_HOST: ${POSTHOG_HOST} NEXT_PUBLIC_DISTRIBUTION: ${DISTRIBUTION} - NEXT_PUBLIC_BACKEND_DOMAIN: ${NEXT_PUBLIC_BACKEND_DOMAIN} + NEXT_PUBLIC_BACKEND_DOMAIN: http://localhost:3000 NEXT_PUBLIC_MAGIC_LINK_DOMAIN: ${NEXT_PUBLIC_MAGIC_LINK_DOMAIN} NEXT_PUBLIC_WEBAPP_DOMAIN: ${NEXT_PUBLIC_WEBAPP_DOMAIN} NEXT_PUBLIC_REDIRECT_WEBHOOK_INGRESS: ${REDIRECT_TUNNEL_INGRESS} @@ -258,7 +275,7 @@ services: dockerfile: ./apps/magic-link/Dockerfile.dev context: ./ args: - VITE_BACKEND_DOMAIN: ${NEXT_PUBLIC_BACKEND_DOMAIN} + VITE_BACKEND_DOMAIN: http://localhost:3000 restart: always ports: - 81:5173 @@ -314,9 +331,29 @@ services: volumes: - ./docs/:/app + minio: + image: minio/minio + ports: + - "9000:9000" + - "9001:9001" + volumes: + - minio_storage:/data + environment: + MINIO_ROOT_USER: ${MINIO_ROOT_USER} + MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} + command: server --console-address ":9001" /data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + networks: + - backend + volumes: local_pgdata: pgadmin-data: + minio_storage: networks: frontend: diff --git a/docker-compose.source.yml b/docker-compose.source.yml index 857367685..6ebe20104 100644 --- a/docker-compose.source.yml +++ b/docker-compose.source.yml @@ -193,6 +193,23 @@ services: PH_TELEMETRY: "TRUE" SALESFORCE_CRM_CLOUD_CLIENT_ID: ${SALESFORCE_CRM_CLOUD_CLIENT_ID} SALESFORCE_CRM_CLOUD_CLIENT_SECRET: ${SALESFORCE_CRM_CLOUD_CLIENT_SECRET} + OPENAI_API_KEY: ${OPENAI_API_KEY} + JINA_API_KEY: ${JINA_API_KEY} + COHERE_API_KEY: ${COHERE_API_KEY} + AWS_S3_REGION: ${AWS_S3_REGION} + AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} + AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} + UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY} + UNSTRUCTURED_API_URL: ${UNSTRUCTURED_API_URL} + PINECONE_API_KEY: ${PINECONE_API_KEY} + PINECONE_INDEX_NAME: ${PINECONE_INDEX_NAME} + QDRANT_BASE_URL: ${QDRANT_BASE_URL} + QDRANT_API_KEY: ${QDRANT_API_KEY} + CHROMADB_URL: ${CHROMADB_URL} + WEAVIATE_URL: ${WEAVIATE_URL} + WEAVIATE_API_KEY: ${WEAVIATE_API_KEY} + TURBOPUFFER_API_KEY: ${TURBOPUFFER_API_KEY} + MILVUS_ADDRESS: ${MILVUS_ADDRESS} restart: unless-stopped ports: diff --git a/docker-compose.yml b/docker-compose.yml index 4841cf043..65c57ff5f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -187,6 +187,23 @@ services: PH_TELEMETRY: "TRUE" SALESFORCE_CRM_CLOUD_CLIENT_ID: ${SALESFORCE_CRM_CLOUD_CLIENT_ID} SALESFORCE_CRM_CLOUD_CLIENT_SECRET: ${SALESFORCE_CRM_CLOUD_CLIENT_SECRET} + OPENAI_API_KEY: ${OPENAI_API_KEY} + JINA_API_KEY: ${JINA_API_KEY} + COHERE_API_KEY: ${COHERE_API_KEY} + AWS_S3_REGION: ${AWS_S3_REGION} + AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} + AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} + UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY} + UNSTRUCTURED_API_URL: ${UNSTRUCTURED_API_URL} + PINECONE_API_KEY: ${PINECONE_API_KEY} + PINECONE_INDEX_NAME: ${PINECONE_INDEX_NAME} + QDRANT_BASE_URL: ${QDRANT_BASE_URL} + QDRANT_API_KEY: ${QDRANT_API_KEY} + CHROMADB_URL: ${CHROMADB_URL} + WEAVIATE_URL: ${WEAVIATE_URL} + WEAVIATE_API_KEY: ${WEAVIATE_API_KEY} + TURBOPUFFER_API_KEY: ${TURBOPUFFER_API_KEY} + MILVUS_ADDRESS: ${MILVUS_ADDRESS} restart: unless-stopped ports: diff --git a/packages/api/package.json b/packages/api/package.json index 76b963879..21b09ada9 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -26,7 +26,16 @@ "prebuild-oauth-connector": "node --experimental-detect-module ./scripts/oauthConnector.js" }, "dependencies": { + "@aws-sdk/client-s3": "^3.649.0", "@axiomhq/pino": "^1.0.0", + "@langchain/cohere": "^0.2.2", + "@langchain/community": "^0.2.32", + "@langchain/core": "^0.2.31", + "@langchain/openai": "^0.2.10", + "@langchain/pinecone": "^0.0.9", + "@langchain/qdrant": "^0.0.5", + "@langchain/textsplitters": "^0.0.3", + "@langchain/weaviate": "^0.0.5", "@nestjs/bull": "^10.0.1", "@nestjs/common": "^10.0.0", "@nestjs/config": "^3.1.1", @@ -40,14 +49,20 @@ "@nestjs/throttler": "^5.1.1", "@ntegral/nestjs-sentry": "^4.0.0", "@panora/shared": "workspace:*", + "@pinecone-database/pinecone": "^3.0.2", "@prisma/client": "^5.4.2", + "@qdrant/js-client-rest": "^1.11.0", "@sentry/node": "8.9.2", "@sentry/profiling-node": "^8.9.2", "@sentry/tracing": "^7.80.0", "@shopify/shopify-api": "^11.1.0", + "@turbopuffer/turbopuffer": "^0.5.10", + "@zilliz/milvus2-sdk-node": "^2.4.8", "axios": "^1.5.1", "bcrypt": "^5.1.1", "bull": "^4.11.5", + "chromadb": "^1.8.1", + "chromadb-default-embed": "^2.13.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.0", "cookie-parser": "^1.4.6", @@ -58,6 +73,8 @@ "install": "^0.13.0", "js-yaml": "^4.1.0", "jwt-decode": "^4.0.0", + "langchain": "^0.2.18", + "mime-types": "^2.1.35", "nestjs-pino": "^3.5.0", "nodemailer": "^6.9.14", "openai": "^4.38.5", @@ -65,6 +82,7 @@ "passport-headerapikey": "^1.2.2", "passport-jwt": "^4.0.1", "passport-local": "^1.0.0", + "pdf-parse": "^1.1.1", "pino-pretty": "^10.2.3", "posthog-node": "^4.2.0", "qs": "^6.12.3", @@ -72,7 +90,18 @@ "rxjs": "^7.8.1", "stytch": "^10.5.0", "uuid": "^9.0.1", - "yargs": "^17.7.2" + "weaviate-client": "^3.1.4", + "yargs": "^17.7.2", + "googleapis": "^144.0.0", + "@aws-sdk/lib-storage": "^3.649.0", + "google-auth-library": "^9.14.1", + "xlsx": "^0.18.5", + "csv": "^6.3.10", + "mammoth": "^1.8.0", + "marked": "^14.1.2", + "csv-parse": "^5.5.6", + "d3-dsv": "^3.0.1", + "csvtojson": "^2.0.10" }, "devDependencies": { "@nestjs-modules/mailer": "^2.0.2", @@ -82,6 +111,7 @@ "@types/cookie-parser": "^1.4.6", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", + "@types/mime-types": "^2.1.4", "@types/node": "^20.3.1", "@types/passport-jwt": "^3.0.12", "@types/passport-local": "^1.0.37", diff --git a/packages/api/scripts/init.sql b/packages/api/scripts/init.sql index fa0af71de..d242e8935 100644 --- a/packages/api/scripts/init.sql +++ b/packages/api/scripts/init.sql @@ -552,6 +552,7 @@ CREATE TABLE connector_sets ats_ashby boolean NULL, ecom_webflow boolean NULL, crm_microsoftdynamicssales boolean NULL, + fs_googledrive boolean NULL, CONSTRAINT PK_project_connector PRIMARY KEY ( id_connector_set ) ); diff --git a/packages/api/scripts/seed.sql b/packages/api/scripts/seed.sql index 22df9b0bf..bfb0bd6b4 100644 --- a/packages/api/scripts/seed.sql +++ b/packages/api/scripts/seed.sql @@ -1,10 +1,10 @@ INSERT INTO users (id_user, identification_strategy, email, password_hash, first_name, last_name) VALUES ('0ce39030-2901-4c56-8db0-5e326182ec6b', 'b2c','local@panora.dev', '$2b$10$Y7Q8TWGyGuc5ecdIASbBsuXMo3q/Rs3/cnY.mLZP4tUgfGUOCUBlG', 'local', 'Panora'); -INSERT INTO connector_sets (id_connector_set, crm_hubspot, crm_zoho, crm_pipedrive, crm_attio, crm_zendesk, crm_close, tcg_zendesk, tcg_gorgias, tcg_front, tcg_jira, tcg_gitlab, fs_box, tcg_github, hris_deel, hris_sage, ats_ashby, crm_microsoftdynamicssales, ecom_webflow, tcg_linear, ecom_shopify, ecom_woocommerce, ecom_amazon, ecom_squarespace, hris_gusto) VALUES - ('1709da40-17f7-4d3a-93a0-96dc5da6ddd7', TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), - ('852dfff8-ab63-4530-ae49-e4b2924407f8', TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), - ('aed0f856-f802-4a79-8640-66d441581a99', TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE); +INSERT INTO connector_sets (id_connector_set, crm_hubspot, crm_zoho, crm_pipedrive, crm_attio, crm_zendesk, crm_close, tcg_zendesk, tcg_gorgias, tcg_front, tcg_jira, tcg_gitlab, fs_box, tcg_github, hris_deel, hris_sage, ats_ashby, crm_microsoftdynamicssales, ecom_webflow, tcg_linear, ecom_shopify, ecom_woocommerce, ecom_amazon, ecom_squarespace, hris_gusto, fs_googledrive) VALUES + ('1709da40-17f7-4d3a-93a0-96dc5da6ddd7', TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), + ('852dfff8-ab63-4530-ae49-e4b2924407f8', TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), + ('aed0f856-f802-4a79-8640-66d441581a99', TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE); INSERT INTO projects (id_project, name, sync_mode, id_user, id_connector_set) VALUES ('1e468c15-aa57-4448-aa2b-7fed640d1e3d', 'Project 1', 'pull', '0ce39030-2901-4c56-8db0-5e326182ec6b', '1709da40-17f7-4d3a-93a0-96dc5da6ddd7'), diff --git a/packages/api/src/@core/@core-services/environment/environment.service.ts b/packages/api/src/@core/@core-services/environment/environment.service.ts index c8f25f3c0..fb0b19662 100644 --- a/packages/api/src/@core/@core-services/environment/environment.service.ts +++ b/packages/api/src/@core/@core-services/environment/environment.service.ts @@ -11,7 +11,7 @@ export type RateLimit = { limit: string; }; -//for providers secret it is of the form +// for providers secret it is of the form // get{provider_name}{vertical_name}Secret @Injectable() export class EnvironmentService { @@ -64,4 +64,71 @@ export class EnvironmentService { limit: this.configService.get('THROTTLER_LIMIT'), }; } + + getChromaCreds(): string { + return this.configService.get('CHROMADB_URL'); + } + + getMilvusCreds() { + return { + address: this.configService.get('MILVUS_ADDRESS'), + }; + } + getPineconeCreds() { + return { + apiKey: this.configService.get('PINECONE_API_KEY'), + indexName: this.configService.get('PINECONE_INDEX_NAME'), + }; + } + + getWeaviateCreds() { + return { + url: this.configService.get('WEAVIATE_URL'), + apiKey: this.configService.get('WEAVIATE_API_KEY'), + }; + } + + getTurboPufferApiKey(): string { + return this.configService.get('TURBOPUFFER_API_KEY'); + } + + getQdrantCreds() { + return { + baseUrl: this.configService.get('QDRANT_BASE_URL'), + apiKey: this.configService.get('QDRANT_API_KEY'), + }; + } + + getAwsCredentials() { + return { + region: this.configService.get('AWS_REGION'), + accessKeyId: this.configService.get('AWS_ACCESS_KEY_ID'), + secretAccessKey: this.configService.get('AWS_SECRET_ACCESS_KEY'), + }; + } + getMinioCredentials() { + return { + accessKeyId: this.configService.get('MINIO_ROOT_USER'), + secretAccessKey: this.configService.get('MINIO_ROOT_PASSWORD'), + }; + } + + getOpenAIApiKey(): string { + return this.configService.get('OPENAI_API_KEY'); + } + + getCohereApiKey(): string { + return this.configService.get('COHERE_API_KEY'); + } + + getJinaApiKey(): string { + return this.configService.get('JINA_API_KEY'); + } + + getUnstructuredCreds() { + return { + apiKey: this.configService.get('UNSTRUCTURED_API_KEY'), + apiUrl: this.configService.get('UNSTRUCTURED_API_URL'), + }; + } } diff --git a/packages/api/src/@core/@core-services/module.ts b/packages/api/src/@core/@core-services/module.ts index 78e7a51cb..4381224d8 100644 --- a/packages/api/src/@core/@core-services/module.ts +++ b/packages/api/src/@core/@core-services/module.ts @@ -1,20 +1,22 @@ +import { RagModule } from '@@core/rag/rag.module'; import { Global, Module } from '@nestjs/common'; -import { MappersRegistry } from './registries/mappers.registry'; -import { UnificationRegistry } from './registries/unification.registry'; -import { CoreSyncRegistry } from './registries/core-sync.registry'; +import { ConnectionUtils } from '../connections/@utils/index'; +import { FieldMappingService } from './../field-mapping/field-mapping.service'; import { EncryptionService } from './encryption/encryption.service'; -import { CoreUnification } from './unification/core-unification.service'; import { LoggerService } from './logger/logger.service'; -import { ConnectionUtils } from '../connections/@utils/index'; -import { CategoryConnectionRegistry } from './registries/connections-categories.registry'; import { PrismaService } from './prisma/prisma.service'; -import { FieldMappingService } from './../field-mapping/field-mapping.service'; import { BullQueueModule } from './queues/queue.module'; +import { CategoryConnectionRegistry } from './registries/connections-categories.registry'; +import { CoreSyncRegistry } from './registries/core-sync.registry'; +import { MappersRegistry } from './registries/mappers.registry'; +import { UnificationRegistry } from './registries/unification.registry'; import { RetryModule } from './request-retry/module'; +import { CoreUnification } from './unification/core-unification.service'; +import { RagService } from '@@core/rag/rag.service'; @Global() @Module({ - imports: [BullQueueModule, RetryModule], + imports: [BullQueueModule, RetryModule, RagModule], providers: [ PrismaService, MappersRegistry, @@ -26,6 +28,7 @@ import { RetryModule } from './request-retry/module'; LoggerService, ConnectionUtils, FieldMappingService, + RagService, ], exports: [ PrismaService, @@ -40,6 +43,7 @@ import { RetryModule } from './request-retry/module'; FieldMappingService, BullQueueModule, RetryModule, + RagService, ], }) export class CoreSharedModule {} diff --git a/packages/api/src/@core/@core-services/queues/queue.module.ts b/packages/api/src/@core/@core-services/queues/queue.module.ts index b004fc79e..8ce85065e 100644 --- a/packages/api/src/@core/@core-services/queues/queue.module.ts +++ b/packages/api/src/@core/@core-services/queues/queue.module.ts @@ -18,6 +18,9 @@ import { Queues } from './types'; { name: Queues.FAILED_PASSTHROUGH_REQUESTS_HANDLER, }, + { + name: Queues.RAG_DOCUMENT_PROCESSING, + }, ), ], providers: [BullQueueService], diff --git a/packages/api/src/@core/@core-services/queues/shared.service.ts b/packages/api/src/@core/@core-services/queues/shared.service.ts index b8f4d81ac..08c38289f 100644 --- a/packages/api/src/@core/@core-services/queues/shared.service.ts +++ b/packages/api/src/@core/@core-services/queues/shared.service.ts @@ -14,6 +14,8 @@ export class BullQueueService { public readonly syncJobsQueue: Queue, @InjectQueue(Queues.FAILED_PASSTHROUGH_REQUESTS_HANDLER) public readonly failedPassthroughRequestsQueue: Queue, + @InjectQueue(Queues.RAG_DOCUMENT_PROCESSING) + private ragDocumentQueue: Queue, ) {} // getters @@ -30,6 +32,9 @@ export class BullQueueService { getFailedPassthroughRequestsQueue() { return this.failedPassthroughRequestsQueue; } + getRagDocumentQueue() { + return this.ragDocumentQueue; + } async queueSyncJob(jobName: string, jobData: any, cron: string) { const jobs = await this.syncJobsQueue.getRepeatableJobs(); diff --git a/packages/api/src/@core/@core-services/queues/types.ts b/packages/api/src/@core/@core-services/queues/types.ts index 5a9874ae2..5cd578e4b 100644 --- a/packages/api/src/@core/@core-services/queues/types.ts +++ b/packages/api/src/@core/@core-services/queues/types.ts @@ -3,4 +3,5 @@ export enum Queues { PANORA_WEBHOOKS_SENDER = 'PANORA_WEBHOOKS_SENDER', // Queue sends Panora webhooks to clients listening for important events SYNC_JOBS_WORKER = 'SYNC_JOBS_WORKER', // Queue which syncs data from remote 3rd parties FAILED_PASSTHROUGH_REQUESTS_HANDLER = 'FAILED_PASSTHROUGH_REQUESTS_HANDLER', // Queue which handles failed passthrough request due to rate limit and retries it with backOff + RAG_DOCUMENT_PROCESSING = 'RAG_DOCUMENT_PROCESSING', } diff --git a/packages/api/src/@core/@core-services/unification/ingest-data.service.ts b/packages/api/src/@core/@core-services/unification/ingest-data.service.ts index a10cbcc85..0d062095b 100644 --- a/packages/api/src/@core/@core-services/unification/ingest-data.service.ts +++ b/packages/api/src/@core/@core-services/unification/ingest-data.service.ts @@ -3,13 +3,20 @@ import { CoreSyncRegistry } from '../registries/core-sync.registry'; import { CoreUnification } from './core-unification.service'; import { v4 as uuidv4 } from 'uuid'; import { PrismaService } from '../prisma/prisma.service'; -import { ApiResponse, TargetObject } from '@@core/utils/types'; +import { + ApiResponse, + getFileExtensionFromMimeType, + TargetObject, +} from '@@core/utils/types'; import { UnifySourceType } from '@@core/utils/types/unify.output'; import { WebhookService } from '../webhooks/panora-webhooks/webhook.service'; import { ConnectionUtils } from '@@core/connections/@utils'; import { IBaseObjectService, SyncParam } from '@@core/utils/types/interface'; import { FieldMappingService } from '@@core/field-mapping/field-mapping.service'; import { LoggerService } from '../logger/logger.service'; +import { RagService } from '@@core/rag/rag.service'; +import { FileInfo } from '@@core/rag/types'; +import { fs_files as FileStorageFile } from '@prisma/client'; @Injectable() export class IngestDataService { @@ -21,6 +28,7 @@ export class IngestDataService { private connectionUtils: ConnectionUtils, private logger: LoggerService, private fieldMappingService: FieldMappingService, + private ragService: RagService, ) {} async syncForLinkedUser( @@ -169,6 +177,30 @@ export class IngestDataService { ...Object.values(extraParams || {}), ); + // insert the files in our s3 bucket so we can process them for our RAG + if (vertical === 'filestorage' && commonObject === 'file') { + const filesInfo: FileInfo[] = data + .filter((file: FileStorageFile) => file.file_url && file.mime_type) + .map((file: FileStorageFile) => ({ + id: file.id_fs_file, + url: file.file_url, + provider: integrationId, + s3Key: `${projectId}/${linkedUserId}/${ + file.id_fs_file + }.${getFileExtensionFromMimeType(file.mime_type)}`, + fileType: getFileExtensionFromMimeType(file.mime_type), + })); + + if (filesInfo.length > 0) { + console.log('During sync, found files to process for RAG...'); + await this.ragService.queueDocumentProcessing( + filesInfo, + projectId, + linkedUserId, + ); + } + } + const event = await this.prisma.events.create({ data: { id_connection: connectionId, diff --git a/packages/api/src/@core/connections/@token-refresh/refresh.service.ts b/packages/api/src/@core/connections/@token-refresh/refresh.service.ts index c56b2a069..cf3f7db8a 100644 --- a/packages/api/src/@core/connections/@token-refresh/refresh.service.ts +++ b/packages/api/src/@core/connections/@token-refresh/refresh.service.ts @@ -49,7 +49,7 @@ export class OAuthTokenRefreshService implements OnModuleInit { } } catch (error) { this.logger.error( - `Failed to refresh token for connection: ${connection.id_connection}`, + `Failed to refresh token for connection: ${connection.id_connection} ${connection.provider_slug}`, error, ); } diff --git a/packages/api/src/@core/connections/filestorage/services/google_drive/google_drive.service.ts b/packages/api/src/@core/connections/filestorage/services/google_drive/google_drive.service.ts index c19eef54c..9a9f6c3df 100644 --- a/packages/api/src/@core/connections/filestorage/services/google_drive/google_drive.service.ts +++ b/packages/api/src/@core/connections/filestorage/services/google_drive/google_drive.service.ts @@ -85,7 +85,7 @@ export class GoogleDriveConnectionService extends AbstractBaseConnectionService data: config.data, headers: config.headers, }, - 'filestorage.google_drive.passthrough', + 'filestorage.googledrive.passthrough', config.linkedUserId, ); } catch (error) { @@ -134,7 +134,6 @@ export class GoogleDriveConnectionService extends AbstractBaseConnectionService let db_res; const connection_token = uuidv4(); - if (isNotUnique) { db_res = await this.prisma.connections.update({ where: { @@ -157,7 +156,7 @@ export class GoogleDriveConnectionService extends AbstractBaseConnectionService data: { id_connection: uuidv4(), connection_token: connection_token, - provider_slug: 'google_drive', + provider_slug: 'googledrive', vertical: 'filestorage', token_type: 'oauth2', account_url: CONNECTORS_METADATA['filestorage']['googledrive'].urls @@ -191,19 +190,19 @@ export class GoogleDriveConnectionService extends AbstractBaseConnectionService async handleTokenRefresh(opts: RefreshParams) { try { const { connectionId, refreshToken, projectId } = opts; - + const CREDENTIALS = (await this.cService.getCredentials( projectId, this.type, )) as OAuth2AuthData; - + const formData = new URLSearchParams({ grant_type: 'refresh_token', refresh_token: this.cryptoService.decrypt(refreshToken), client_id: CREDENTIALS.CLIENT_ID, client_secret: CREDENTIALS.CLIENT_SECRET, }); - + const res = await axios.post( `https://oauth2.googleapis.com/token`, formData.toString(), @@ -217,20 +216,29 @@ export class GoogleDriveConnectionService extends AbstractBaseConnectionService }, ); const data: GoogleDriveOAuthResponse = res.data; + + // Prepare the update data + const updateData: any = { + access_token: this.cryptoService.encrypt(data.access_token), + expiration_timestamp: new Date( + new Date().getTime() + Number(data.expires_in) * 1000, + ), + }; + + // Only update the refresh token if a new one is provided + if (data.refresh_token) { + updateData.refresh_token = this.cryptoService.encrypt(data.refresh_token); + } + await this.prisma.connections.update({ where: { id_connection: connectionId, }, - data: { - access_token: this.cryptoService.encrypt(data.access_token), - refresh_token: this.cryptoService.encrypt(data.refresh_token), - expiration_timestamp: new Date( - new Date().getTime() + Number(data.expires_in) * 1000, - ), - }, + data: updateData, }); this.logger.log('OAuth credentials updated : google_drive '); } catch (error) { + this.logger.error('Error refreshing Google Drive token:', error); throw error; } } diff --git a/packages/api/src/@core/core.module.ts b/packages/api/src/@core/core.module.ts index fb78e6842..bb7310259 100644 --- a/packages/api/src/@core/core.module.ts +++ b/packages/api/src/@core/core.module.ts @@ -16,6 +16,7 @@ import { PassthroughModule } from './passthrough/passthrough.module'; import { ProjectConnectorsModule } from './project-connectors/project-connectors.module'; import { ProjectsModule } from './projects/projects.module'; import { SyncModule } from './sync/sync.module'; +import { RagModule } from './rag/rag.module'; @Module({ imports: [ @@ -35,6 +36,7 @@ import { SyncModule } from './sync/sync.module'; SyncModule, ProjectConnectorsModule, BullQueueModule, + RagModule, ], exports: [ AuthModule, @@ -54,6 +56,7 @@ import { SyncModule } from './sync/sync.module'; ProjectConnectorsModule, IngestDataService, BullQueueModule, + RagModule, ], providers: [IngestDataService], }) diff --git a/packages/api/src/@core/rag/chunking/chunking.service.ts b/packages/api/src/@core/rag/chunking/chunking.service.ts new file mode 100644 index 000000000..dc45670bb --- /dev/null +++ b/packages/api/src/@core/rag/chunking/chunking.service.ts @@ -0,0 +1,80 @@ +import { Injectable } from '@nestjs/common'; +import { RecursiveCharacterTextSplitter } from '@langchain/textsplitters'; +import { Document } from '@langchain/core/documents'; + +@Injectable() +export class DocumentSplitterService { + async chunkDocument( + documents: Document[], + fileType: string, + chunkSize = 1000, + chunkOverlap = 200, + ): Promise { + const chunkedDocuments: Document[] = []; + + for (const document of documents) { + let chunks: Document[]; + + if (fileType === 'json' || fileType === 'csv') { + chunks = await this.chunkJSON(document, chunkSize); + } else { + chunks = await this.chunkText(document, chunkSize, chunkOverlap); + } + + chunkedDocuments.push(...chunks); + } + + return chunkedDocuments; + } + + private async chunkText( + document: Document, + chunkSize: number, + chunkOverlap: number, + ): Promise { + const textSplitter = new RecursiveCharacterTextSplitter({ + chunkSize, + chunkOverlap, + }); + return textSplitter.splitDocuments([document]); + } + + private async chunkJSON( + document: Document, + chunkSize: number, + ): Promise { + const jsonContent = JSON.parse(document.pageContent); + const chunks: Document[] = []; + let currentChunk: Record = {}; + let currentSize = 0; + + for (const [key, value] of Object.entries(jsonContent)) { + const entrySize = JSON.stringify({ [key]: value }).length; + + if (currentSize + entrySize > chunkSize && currentSize > 0) { + chunks.push( + new Document({ + pageContent: JSON.stringify(currentChunk), + metadata: { ...document.metadata, chunk: chunks.length + 1 }, + }), + ); + currentChunk = {}; + currentSize = 0; + } + + currentChunk[key] = value; + currentSize += entrySize; + } + + if (Object.keys(currentChunk).length > 0) { + chunks.push( + new Document({ + pageContent: JSON.stringify(currentChunk), + metadata: { ...document.metadata, chunk: chunks.length + 1 }, + }), + ); + } + + return chunks; + } +} \ No newline at end of file diff --git a/packages/api/src/@core/rag/document.processor.ts b/packages/api/src/@core/rag/document.processor.ts new file mode 100644 index 000000000..e7e465b9b --- /dev/null +++ b/packages/api/src/@core/rag/document.processor.ts @@ -0,0 +1,68 @@ +import { Process, Processor } from '@nestjs/bull'; +import { Job } from 'bull'; +import { FileInfo } from './types'; +import { VectorDatabaseService } from './vecdb/vecdb.service'; +import { S3Service } from '@@core/s3/s3.service'; +import { DocumentSplitterService } from './chunking/chunking.service'; +import { EmbeddingService } from './embedding/embedding.service'; +import { DocumentLoaderService } from './loader/loader.service'; + +@Processor('RAG_DOCUMENT_PROCESSING') +export class ProcessDocumentProcessor { + constructor( + private s3Service: S3Service, + private documentLoaderService: DocumentLoaderService, + private documentSplitterService: DocumentSplitterService, + private embeddingService: EmbeddingService, + private vectorDatabaseService: VectorDatabaseService, + ) {} + + @Process('batchDocs') + async processDocuments( + job: Job<{ filesInfo: FileInfo[]; projectId: string }>, + ) { + const { filesInfo, projectId } = job.data; + const results = []; + + for (const fileInfo of filesInfo) { + try { + const readStream = await this.s3Service.getReadStream(fileInfo.s3Key); + const document = + await this.documentLoaderService.loadDocumentFromStream( + readStream, + fileInfo.fileType, + fileInfo.s3Key, + ); + const chunks = await this.documentSplitterService.chunkDocument( + document, + fileInfo.fileType, + ); + // console.log(`chunks for ${fileInfo.id} are ` + JSON.stringify(chunks)); + const embeddings = await this.embeddingService.generateEmbeddings( + chunks, + projectId + ); + // Split embeddings into smaller batches + const batchSize = 100; // Adjust this value as needed + for (let i = 0; i < chunks.length; i += batchSize) { + const batchChunks = chunks.slice(i, i + batchSize); + const batchEmbeddings = embeddings.slice(i, i + batchSize); + await this.vectorDatabaseService.storeEmbeddings( + fileInfo.id, + batchChunks, + batchEmbeddings, + projectId, + ); + } + results.push(`Successfully processed document ${fileInfo.id}`); + } catch (error) { + console.error(`Error processing document ${fileInfo.id}:`, error); + results.push( + `Failed to process document ${fileInfo.id}: ${error.message}`, + ); + } + } + + return results; + } +} diff --git a/packages/api/src/@core/rag/embedding/embedding.credentials.service.ts b/packages/api/src/@core/rag/embedding/embedding.credentials.service.ts new file mode 100644 index 000000000..c15626f09 --- /dev/null +++ b/packages/api/src/@core/rag/embedding/embedding.credentials.service.ts @@ -0,0 +1,57 @@ +import { Injectable } from '@nestjs/common'; +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { ConnectionsStrategiesService } from '@@core/connections-strategies/connections-strategies.service'; +import { EmbeddingModelType } from './embedding.service'; + +@Injectable() +export class EmbeddingCredentialsService { + constructor( + private envService: EnvironmentService, + private connectionsStrategiesService: ConnectionsStrategiesService, + ) {} + + async getEmbeddingCredentials( + projectId: string, + embeddingModel: EmbeddingModelType, + ): Promise { + const type = `embedding_model.${embeddingModel.toLowerCase()}`; + const isCustom = await this.connectionsStrategiesService.isCustomCredentials( + projectId, + type, + ); + + if (isCustom) { + return this.getCustomCredentials(projectId, type); + } else { + return this.getManagedCredentials(embeddingModel); + } + } + + private async getCustomCredentials( + projectId: string, + type: string, + ): Promise { + return this.connectionsStrategiesService.getConnectionStrategyData( + projectId, + type, + ['api_key'], + ); + } + + private getManagedCredentials(embeddingModel: EmbeddingModelType): string[] { + switch (embeddingModel) { + case 'OPENAI_ADA_SMALL_512': + case 'OPENAI_ADA_SMALL_1536': + case 'OPENAI_ADA_LARGE_256': + case 'OPENAI_ADA_LARGE_1024': + case 'OPENAI_ADA_LARGE_3072': + return [this.envService.getOpenAIApiKey()]; + case 'COHERE_MULTILINGUAL_V3': + return [this.envService.getCohereApiKey()]; + case 'JINA': + return [this.envService.getJinaApiKey()]; + default: + throw new Error(`Unsupported embedding model: ${embeddingModel}`); + } + } +} \ No newline at end of file diff --git a/packages/api/src/@core/rag/embedding/embedding.service.ts b/packages/api/src/@core/rag/embedding/embedding.service.ts new file mode 100644 index 000000000..fbe32d6d9 --- /dev/null +++ b/packages/api/src/@core/rag/embedding/embedding.service.ts @@ -0,0 +1,107 @@ +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { CohereEmbeddings } from '@langchain/cohere'; +import { Document } from '@langchain/core/documents'; +import { OpenAIEmbeddings } from '@langchain/openai'; +import { JinaEmbeddings } from '@langchain/community/embeddings/jina'; +import { Injectable, OnModuleInit } from '@nestjs/common'; +import { ConnectionsStrategiesService } from '@@core/connections-strategies/connections-strategies.service'; +import { EmbeddingCredentialsService } from './embedding.credentials.service'; + +export type EmbeddingModelType = + | 'OPENAI_ADA_SMALL_512' + | 'OPENAI_ADA_SMALL_1536' + | 'OPENAI_ADA_LARGE_256' + | 'OPENAI_ADA_LARGE_1024' + | 'OPENAI_ADA_002' + | 'OPENAI_ADA_LARGE_3072' + | 'COHERE_MULTILINGUAL_V3' + | 'JINA'; + +@Injectable() +export class EmbeddingService implements OnModuleInit { + private embeddings: OpenAIEmbeddings | CohereEmbeddings | JinaEmbeddings; + + constructor( + private envService: EnvironmentService, + private connectionsStrategiesService: ConnectionsStrategiesService, + private embeddingCredentialsService: EmbeddingCredentialsService, + ) {} + + async onModuleInit() { + // Initialize with default settings + console.log(); + } + + async initializeEmbeddings(projectId: string) { + let embeddingType: EmbeddingModelType; + let apiKey: string; + + if (projectId) { + const activeStrategies = await this.connectionsStrategiesService.getConnectionStrategiesForProject(projectId); + const activeEmbeddingStrategy = activeStrategies.find( + (strategy) => strategy.type.startsWith('embedding_model.') && strategy.status, + ); + + if (activeEmbeddingStrategy) { + embeddingType = activeEmbeddingStrategy.type.split('.')[1].toUpperCase() as EmbeddingModelType; + [apiKey] = await this.embeddingCredentialsService.getEmbeddingCredentials(projectId, embeddingType); + } else { + embeddingType = 'OPENAI_ADA_002'; + apiKey = this.envService.getOpenAIApiKey(); + } + } else { + embeddingType = 'OPENAI_ADA_002'; + apiKey = this.envService.getOpenAIApiKey(); + } + + switch (embeddingType) { + case 'OPENAI_ADA_002': + case 'OPENAI_ADA_SMALL_512': + case 'OPENAI_ADA_SMALL_1536': + case 'OPENAI_ADA_LARGE_256': + case 'OPENAI_ADA_LARGE_1024': + case 'OPENAI_ADA_LARGE_3072': + this.embeddings = new OpenAIEmbeddings({ + openAIApiKey: apiKey, + modelName: this.getOpenAIModelName(embeddingType), + }); + break; + case 'COHERE_MULTILINGUAL_V3': + this.embeddings = new CohereEmbeddings({ + apiKey, + model: 'multilingual-22-12', + }); + break; + case 'JINA': + this.embeddings = new JinaEmbeddings({ + apiKey, + }); + break; + default: + throw new Error(`Unsupported embedding type: ${embeddingType}`); + } + } + + private getOpenAIModelName(type: EmbeddingModelType): string { + const modelMap: { [key: string]: string } = { + OPENAI_ADA_002: 'text-embedding-ada-002', + OPENAI_ADA_SMALL_512: 'text-embedding-3-small', + OPENAI_ADA_SMALL_1536: 'text-embedding-3-small', + OPENAI_ADA_LARGE_256: 'text-embedding-3-large', + OPENAI_ADA_LARGE_1024: 'text-embedding-3-large', + OPENAI_ADA_LARGE_3072: 'text-embedding-3-large', + }; + return modelMap[type] || 'text-embedding-ada-002'; + } + + async generateEmbeddings(chunks: Document[], projectId: string) { + await this.initializeEmbeddings(projectId); + const texts = chunks.map((chunk) => chunk.pageContent); + return this.embeddings.embedDocuments(texts); + } + + async embedQuery(query: string, projectId?: string) { + // await this.initializeEmbeddings(projectId); + return this.embeddings.embedQuery(query); + } +} \ No newline at end of file diff --git a/packages/api/src/@core/rag/loader/loader.service.ts b/packages/api/src/@core/rag/loader/loader.service.ts new file mode 100644 index 000000000..687f5636b --- /dev/null +++ b/packages/api/src/@core/rag/loader/loader.service.ts @@ -0,0 +1,104 @@ +import { Injectable } from '@nestjs/common'; +import { PDFLoader } from '@langchain/community/document_loaders/fs/pdf'; +import { DocxLoader } from '@langchain/community/document_loaders/fs/docx'; +import { TextLoader } from 'langchain/document_loaders/fs/text'; +import { UnstructuredLoader } from '@langchain/community/document_loaders/fs/unstructured'; +import { Readable } from 'stream'; +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { Document } from 'langchain/document'; +import * as csvtojson from 'csvtojson'; + +type UnstructuredCredsType = { + apiKey: string; + apiUrl: string; +}; +@Injectable() +export class DocumentLoaderService { + private unstructuredCreds: UnstructuredCredsType; + constructor(private envService: EnvironmentService) { + this.unstructuredCreds = this.envService.getUnstructuredCreds(); + } + async loadDocumentFromStream( + stream: Readable, + fileType: string, + fileName?: string, + ) { + const buffer = await this.streamToBuffer(stream); + const loaders = { + pdf: (buf: Buffer) => new PDFLoader(new Blob([buf])), + docx: (buf: Buffer) => new DocxLoader(new Blob([buf])), + csv: (buf: Buffer) => ({ + load: async () => { + const content = buf.toString('utf-8'); + const lines = content.split('\n'); + const separator = this.detectSeparator(lines[0]); + const headers = lines[0] + .split(separator) + .map((header) => header.trim()); + + const jsonData = await csvtojson({ + delimiter: separator, + headers: headers, + output: 'json', + }).fromString(content); + + const formattedData = jsonData.map((item: any) => { + const formattedItem: Record = {}; + for (const key in item) { + const value = item[key]; + formattedItem[key] = isNaN(Number(value)) ? value : Number(value); + } + return formattedItem; + }); + + // console.log('json data from csv is ' + JSON.stringify(formattedData)); + + return formattedData.map( + (item, index) => + new Document({ + pageContent: JSON.stringify(item), + metadata: { + source: fileName || 'csv', + row: index + 2, + columns: headers, + }, + }), + ); + }, + }), + txt: (buf: Buffer) => new TextLoader(new Blob([buf])), + md: (buf: Buffer) => + new UnstructuredLoader( + { buffer: buf, fileName: fileName }, + { + apiKey: this.unstructuredCreds.apiKey, + apiUrl: this.unstructuredCreds.apiUrl, + }, + ), + }; + + const loaderFunction = loaders[fileType as keyof typeof loaders]; + if (!loaderFunction) { + throw new Error(`Unsupported file type: ${fileType}`); + } + + const loader = loaderFunction(buffer); + return loader.load(); + } + + private detectSeparator(headerLine: string): string { + const possibleSeparators = [',', ';', '\t', '|']; + return possibleSeparators.reduce((a, b) => + headerLine.split(a).length > headerLine.split(b).length ? a : b, + ); + } + + private async streamToBuffer(stream: Readable): Promise { + return new Promise((resolve, reject) => { + const chunks: Buffer[] = []; + stream.on('data', (chunk) => chunks.push(Buffer.from(chunk))); + stream.on('error', (err) => reject(err)); + stream.on('end', () => resolve(Buffer.concat(chunks))); + }); + } +} diff --git a/packages/api/src/@core/rag/rag.controller.ts b/packages/api/src/@core/rag/rag.controller.ts new file mode 100644 index 000000000..74ee8c29a --- /dev/null +++ b/packages/api/src/@core/rag/rag.controller.ts @@ -0,0 +1,59 @@ +import { Controller, Post, Body, UseGuards } from '@nestjs/common'; +import { RagService } from './rag.service'; +import { ApiKeyAuthGuard } from '@@core/auth/guards/api-key.guard'; +import { + ApiBody, + ApiOperation, + ApiParam, + ApiQuery, + ApiTags, + ApiHeader, + //ApiKeyAuth, +} from '@nestjs/swagger'; +import { ConnectionUtils } from '@@core/connections/@utils'; + +@Controller('rag') +export class RagController { + constructor( + private documentEmbeddingService: RagService, + private ragService: RagService, + private connectionUtils: ConnectionUtils, + ) {} + + @Post('query') + @UseGuards(ApiKeyAuthGuard) + async queryEmbeddings(@Body() body: { query: string; topK?: number }) { + return this.documentEmbeddingService.queryEmbeddings(body.query, body.topK); + } + + /* + @ApiOperation({ + operationId: 'listFilestorageFile', + summary: 'List Files', + }) + @ApiHeader({ + name: 'x-connection-token', + required: true, + description: 'The connection token', + example: 'b008e199-eda9-4629-bd41-a01b6195864a', + }) + @Post('process') + @UseGuards(ApiKeyAuthGuard) + async processFile(@Headers('x-connection-token') connection_token: string) { + const { linkedUserId, remoteSource, connectionId, projectId } = + await this.connectionUtils.getConnectionMetadataFromConnectionToken( + connection_token, + ); + const body = { + id: 'ID_1', + url: 'https://drive.google.com/file/d/1rrC1idlFpCBdF3DVzNDp1WeRZ4_mKGho/view', + s3Key: `${projectId}/ID_1.pdf`, + fileType: 'pdf', + }; + return await this.ragService.queueDocumentProcessing( + [body], + projectId, + linkedUserId, + ); + }*/ +} diff --git a/packages/api/src/@core/rag/rag.module.ts b/packages/api/src/@core/rag/rag.module.ts new file mode 100644 index 000000000..51f8ab763 --- /dev/null +++ b/packages/api/src/@core/rag/rag.module.ts @@ -0,0 +1,63 @@ +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { S3Service } from '@@core/s3/s3.service'; +import { Module } from '@nestjs/common'; +import { DocumentSplitterService } from './chunking/chunking.service'; +import { ProcessDocumentProcessor } from './document.processor'; +import { EmbeddingService } from './embedding/embedding.service'; +import { DocumentLoaderService } from './loader/loader.service'; +import { RagController } from './rag.controller'; +import { RagService } from './rag.service'; +import { ChromaDBService } from './vecdb/chromadb/chromadb.service'; +import { MilvusService } from './vecdb/milvus/milvus.service'; +import { PineconeService } from './vecdb/pinecone/pinecone.service'; +import { TurboPufferService } from './vecdb/turbopuffer/turbopuffer.service'; +import { VectorDatabaseService } from './vecdb/vecdb.service'; +import { WeaviateService } from './vecdb/weaviate/weaviate.service'; +import { QdrantDBService } from './vecdb/qdrant/qdrant.service'; +import { FileModule } from '@filestorage/file/file.module'; +import { VectorDbCredentialsService } from './vecdb/vecdb.credentials.service'; +import { ConnectionsStrategiesService } from '@@core/connections-strategies/connections-strategies.service'; +import { EmbeddingCredentialsService } from './embedding/embedding.credentials.service'; + +@Module({ + imports: [FileModule], + controllers: [RagController], + providers: [ + EnvironmentService, + VectorDatabaseService, + PineconeService, + WeaviateService, + TurboPufferService, + ChromaDBService, + QdrantDBService, + MilvusService, + RagService, + ProcessDocumentProcessor, + S3Service, + DocumentLoaderService, + DocumentSplitterService, + EmbeddingService, + VectorDatabaseService, + EmbeddingCredentialsService, + ConnectionsStrategiesService, + VectorDbCredentialsService, + ], + exports: [ + RagService, + VectorDatabaseService, + ProcessDocumentProcessor, + S3Service, + DocumentLoaderService, + DocumentSplitterService, + EmbeddingService, + PineconeService, + WeaviateService, + TurboPufferService, + ChromaDBService, + QdrantDBService, + MilvusService, + ConnectionsStrategiesService, + VectorDbCredentialsService, + ], +}) +export class RagModule {} diff --git a/packages/api/src/@core/rag/rag.service.ts b/packages/api/src/@core/rag/rag.service.ts new file mode 100644 index 000000000..24452ee49 --- /dev/null +++ b/packages/api/src/@core/rag/rag.service.ts @@ -0,0 +1,46 @@ +import { BullQueueService } from '@@core/@core-services/queues/shared.service'; +import { Injectable } from '@nestjs/common'; +import { EmbeddingService } from './embedding/embedding.service'; +import { FileInfo } from './types'; +import { VectorDatabaseService } from './vecdb/vecdb.service'; +import { S3Service } from '@@core/s3/s3.service'; + +@Injectable() +export class RagService { + constructor( + private readonly queues: BullQueueService, + private embeddingService: EmbeddingService, + private vectorDatabaseService: VectorDatabaseService, + private s3Service: S3Service, + ) {} + + async queryEmbeddings(query: string, topK = 5) { + const queryEmbedding = await this.embeddingService.embedQuery(query); + const results = await this.vectorDatabaseService.queryEmbeddings( + queryEmbedding, + topK, + ); + return results.map((match: any) => ({ + chunk: match.metadata.text, + metadata: match.metadata, + score: match.score, + embedding: match.embedding, + })); + } + + async queueDocumentProcessing( + filesInfo: FileInfo[], + projectId: string, + linkedUserId: string, + ) { + // todo: check if RAG is enabled for the current projectId and for pricing concerns + // paywall before doing s3 + rag + await this.s3Service.uploadFilesFromUrls(filesInfo, linkedUserId); + await this.queues.getRagDocumentQueue().add('batchDocs', { + filesInfo, + projectId, + linkedUserId, + }); + return { message: `Documents queued for processing` }; + } +} diff --git a/packages/api/src/@core/rag/types/index.ts b/packages/api/src/@core/rag/types/index.ts new file mode 100644 index 000000000..b54a4a832 --- /dev/null +++ b/packages/api/src/@core/rag/types/index.ts @@ -0,0 +1,11 @@ +export interface FileInfo { + id: string; + url: string; + s3Key: string; + provider: string; + fileType: string; +} +export interface ProcessedChunk { + text: string; + metadata: Record; +} diff --git a/packages/api/src/@core/rag/vecdb/chromadb/chromadb.service.ts b/packages/api/src/@core/rag/vecdb/chromadb/chromadb.service.ts new file mode 100644 index 000000000..5c088694e --- /dev/null +++ b/packages/api/src/@core/rag/vecdb/chromadb/chromadb.service.ts @@ -0,0 +1,52 @@ +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { ProcessedChunk } from '@@core/rag/types'; +import { Injectable } from '@nestjs/common'; +import { ChromaClient } from 'chromadb'; + +@Injectable() +export class ChromaDBService { + private client: ChromaClient; + + constructor(private envService: EnvironmentService) { + //this.initialize(); + } + + async initialize() { + this.client = new ChromaClient({ + path: this.envService.getChromaCreds(), + }); + } + + async storeEmbeddings( + fileId: string, + chunks: ProcessedChunk[], + embeddings: number[][], + ) { + const collection = await this.client.createCollection({ name: fileId }); + await collection.add({ + ids: chunks.map((_, i) => `${fileId}_${i}`), + embeddings: embeddings, + metadatas: chunks.map((chunk) => ({ + text: chunk.text, + ...chunk.metadata, + })), + }); + } + + async queryEmbeddings(queryEmbedding: number[], topK: number) { + const collections = await this.client.listCollections(); + const results = await Promise.all( + collections.map(async (collection) => { + const collectionInstance = await this.client.getCollection({ + name: collection.name, + }); + const result = await collectionInstance.query({ + queryEmbeddings: [queryEmbedding], + nResults: topK, + }); + return result.metadatas[0]; + }), + ); + return results.flat().slice(0, topK); + } +} diff --git a/packages/api/src/@core/rag/vecdb/milvus/milvus.service.ts b/packages/api/src/@core/rag/vecdb/milvus/milvus.service.ts new file mode 100644 index 000000000..d35fafd92 --- /dev/null +++ b/packages/api/src/@core/rag/vecdb/milvus/milvus.service.ts @@ -0,0 +1,100 @@ +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { ProcessedChunk } from '@@core/rag/types'; +import { Injectable } from '@nestjs/common'; +import { DataType, MilvusClient } from '@zilliz/milvus2-sdk-node'; + +@Injectable() +export class MilvusService { + private client: MilvusClient; + + constructor(private envService: EnvironmentService) { + //this.initialize(); + } + + async initialize() { + const milvus_creds = this.envService.getMilvusCreds(); + this.client = new MilvusClient({ + address: milvus_creds.address, + }); + await this.client.connectPromise; + } + + async storeEmbeddings( + fileId: string, + chunks: ProcessedChunk[], + embeddings: number[][], + ) { + const collection_name = fileId; + await this.client.createCollection({ + collection_name, + fields: [ + { + name: 'id', + description: 'ID field', + data_type: DataType.VarChar, + is_primary_key: true, + max_length: 100, + }, + { + name: 'text', + description: 'Text field', + data_type: DataType.VarChar, + max_length: 65535, + }, + { + name: 'embedding', + description: 'Vector field', + data_type: DataType.FloatVector, + dim: embeddings[0].length, + }, + ], + }); + const data = chunks.map((chunk, i) => ({ + id: `${fileId}_${i}`, + text: chunk.text, + embedding: embeddings[i], + })); + + await this.client.insert({ + collection_name, + data, + }); + + await this.client.createIndex({ + collection_name, + field_name: 'embedding', + index_type: 'HNSW', + params: { efConstruction: 10, M: 4 }, + metric_type: 'L2', + }); + + await this.client.loadCollectionSync({ + collection_name, + }); + } + + async queryEmbeddings(queryEmbedding: number[], topK: number) { + const collections = await this.client.listCollections(); + const results = await Promise.all( + collections.data.map(async (collection) => { + const res = await this.client.search({ + collection_name: collection.name, + vector: queryEmbedding, + filter: '', + params: { nprobe: 10 }, + limit: topK, + output_fields: ['text'], + }); + return res.results.map((hit) => ({ + id: hit.id, + text: hit.text, + score: hit.score, + })); + }), + ); + return results + .flat() + .sort((a, b) => b.score - a.score) + .slice(0, topK); + } +} diff --git a/packages/api/src/@core/rag/vecdb/pinecone/pinecone.service.ts b/packages/api/src/@core/rag/vecdb/pinecone/pinecone.service.ts new file mode 100644 index 000000000..76c85a306 --- /dev/null +++ b/packages/api/src/@core/rag/vecdb/pinecone/pinecone.service.ts @@ -0,0 +1,69 @@ +import { ProcessedChunk } from '@@core/rag/types'; +import { Injectable } from '@nestjs/common'; +import { Pinecone } from '@pinecone-database/pinecone'; + +@Injectable() +export class PineconeService { + private client: Pinecone; + private indexName: string; + + async initialize(credentials: string[]) { + this.client = new Pinecone({ + apiKey: credentials[0], + }); + this.indexName = credentials[1]; + } + + async storeEmbeddings( + fileId: string, + chunks: ProcessedChunk[], + embeddings: number[][], + ) { + const index = this.client.Index(this.indexName); + const vectors = chunks.map((chunk, i) => ({ + id: `${fileId}_${i}`, + values: embeddings[i], + metadata: this.sanitizeMetadata({ + text: chunk.text, + ...chunk.metadata, + }), + })); + await index.upsert(vectors); + console.log(`Inserted embeddings on Pinecone for fileId ${fileId}`); + } + private sanitizeMetadata(metadata: Record): Record { + const sanitized: Record = {}; + for (const [key, value] of Object.entries(metadata)) { + if ( + typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' + ) { + sanitized[key] = value; + } else if ( + Array.isArray(value) && + value.every((item) => typeof item === 'string') + ) { + sanitized[key] = value; + } else if (typeof value === 'object' && value !== null) { + sanitized[key] = JSON.stringify(value); + } + // Ignore other types + } + return sanitized; + } + + async queryEmbeddings(queryEmbedding: number[], topK: number) { + const index = this.client.Index(this.indexName); + const queryResponse = await index.query({ + vector: queryEmbedding, + topK, + includeMetadata: true, + includeValues: true, + }); + return (queryResponse.matches || []).map((match) => ({ + ...match, + embedding: match.values, + })); + } +} diff --git a/packages/api/src/@core/rag/vecdb/qdrant/qdrant.service.ts b/packages/api/src/@core/rag/vecdb/qdrant/qdrant.service.ts new file mode 100644 index 000000000..a26714db7 --- /dev/null +++ b/packages/api/src/@core/rag/vecdb/qdrant/qdrant.service.ts @@ -0,0 +1,56 @@ +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { ProcessedChunk } from '@@core/rag/types'; +import { Injectable } from '@nestjs/common'; +import { QdrantClient } from '@qdrant/js-client-rest'; + +@Injectable() +export class QdrantDBService { + private client: QdrantClient; + + constructor(private envService: EnvironmentService) { + //this.initialize(); + } + + async initialize() { + const creds = this.envService.getQdrantCreds(); + this.client = new QdrantClient({ + url: `https://${creds.baseUrl}.us-east-0-1.aws.cloud.qdrant.io`, + apiKey: creds.apiKey, + }); + } + + async storeEmbeddings( + fileId: string, + chunks: ProcessedChunk[], + embeddings: number[][], + ) { + await this.client.createCollection(fileId, { + vectors: { size: embeddings[0].length, distance: 'Cosine' }, + }); + await this.client.upsert(fileId, { + wait: true, + points: chunks.map((chunk, i) => ({ + id: `${fileId}_${i}`, + vector: embeddings[i], + payload: { + text: chunk.text, + ...chunk.metadata, + }, + })), + }); + } + + async queryEmbeddings(queryEmbedding: number[], topK: number) { + const { collections } = await this.client.getCollections(); + const results = await Promise.all( + collections.map(async (collection) => { + const result = await this.client.search(collection.name, { + vector: queryEmbedding, + limit: topK, + }); + return result.map((item) => item.payload); + }), + ); + return results.flat().slice(0, topK); + } +} diff --git a/packages/api/src/@core/rag/vecdb/turbopuffer/turbopuffer.service.ts b/packages/api/src/@core/rag/vecdb/turbopuffer/turbopuffer.service.ts new file mode 100644 index 000000000..34d3ba0bd --- /dev/null +++ b/packages/api/src/@core/rag/vecdb/turbopuffer/turbopuffer.service.ts @@ -0,0 +1,48 @@ +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { ProcessedChunk } from '@@core/rag/types'; +import { Injectable } from '@nestjs/common'; +import { Namespace, Turbopuffer } from '@turbopuffer/turbopuffer'; + +@Injectable() +export class TurboPufferService { + private client: Turbopuffer; + private namespace: Namespace; + + constructor(private envService: EnvironmentService) { + //this.initialize(); + } + + async initialize() { + this.client = new Turbopuffer({ + apiKey: this.envService.getTurboPufferApiKey(), + }); + this.namespace = this.client.namespace('panora-namespace'); + } + + async storeEmbeddings( + fileId: string, + chunks: ProcessedChunk[], + embeddings: number[][], + ) { + const vectors = chunks.map((chunk, i) => ({ + id: `${fileId}_${i}`, + vector: embeddings[i], + attributes: { text: chunk.text, ...chunk.metadata }, + })); + await this.namespace.upsert({ + vectors, + distance_metric: 'cosine_distance', + }); + } + + async queryEmbeddings(queryEmbedding: number[], topK: number) { + const results = await this.namespace.query({ + vector: queryEmbedding, + top_k: topK, + distance_metric: 'cosine_distance', + include_attributes: ['text'], + include_vectors: false, + }); + return results; + } +} diff --git a/packages/api/src/@core/rag/vecdb/vecdb.credentials.service.ts b/packages/api/src/@core/rag/vecdb/vecdb.credentials.service.ts new file mode 100644 index 000000000..8e97e7eee --- /dev/null +++ b/packages/api/src/@core/rag/vecdb/vecdb.credentials.service.ts @@ -0,0 +1,81 @@ +import { Injectable } from '@nestjs/common'; +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { ConnectionsStrategiesService } from '@@core/connections-strategies/connections-strategies.service'; + +@Injectable() +export class VectorDbCredentialsService { + constructor( + private envService: EnvironmentService, + private connectionsStrategiesService: ConnectionsStrategiesService, + ) {} + + async getVectorDbCredentials( + projectId: string, + vectorDb: string, + ): Promise { + const type = `vector_db.${vectorDb}`; + const isCustom = + await this.connectionsStrategiesService.isCustomCredentials( + projectId, + type, + ); + + if (isCustom) { + return this.getCustomCredentials(projectId, type, vectorDb); + } else { + return this.getManagedCredentials(vectorDb); + } + } + + private async getCustomCredentials( + projectId: string, + type: string, + vectorDb: string, + ) { + const attributes = this.getAttributesForVectorDb(vectorDb); + return this.connectionsStrategiesService.getConnectionStrategyData( + projectId, + type, + attributes, + ); + } + + getManagedCredentials(vectorDb: string): string[] { + switch (vectorDb) { + case 'pinecone': + return [ + this.envService.getPineconeCreds().apiKey, + this.envService.getPineconeCreds().indexName, + ]; + case 'chromadb': + return [this.envService.getChromaCreds()]; + case 'weaviate': + const weaviateCreds = this.envService.getWeaviateCreds(); + return [weaviateCreds.apiKey, weaviateCreds.url]; + case 'turbopuffer': + return [this.envService.getTurboPufferApiKey()]; + case 'qdrant': + const qdrantCreds = this.envService.getQdrantCreds(); + return [qdrantCreds.apiKey, qdrantCreds.baseUrl]; + default: + throw new Error(`Unsupported vector database: ${vectorDb}`); + } + } + + private getAttributesForVectorDb(vectorDb: string): string[] { + switch (vectorDb) { + case 'pinecone': + return ['api_key', 'index_name']; + case 'turbopuffer': + return ['api_key']; + case 'qdrant': + return ['api_key', 'base_url']; + case 'chromadb': + return ['url']; + case 'weaviate': + return ['api_key', 'url']; + default: + throw new Error(`Unsupported vector database: ${vectorDb}`); + } + } +} diff --git a/packages/api/src/@core/rag/vecdb/vecdb.service.ts b/packages/api/src/@core/rag/vecdb/vecdb.service.ts new file mode 100644 index 000000000..1d3340e6e --- /dev/null +++ b/packages/api/src/@core/rag/vecdb/vecdb.service.ts @@ -0,0 +1,113 @@ +import { Document } from '@langchain/core/documents'; +import { Injectable, OnModuleInit } from '@nestjs/common'; +import { ProcessedChunk } from '../types'; +import { ChromaDBService } from './chromadb/chromadb.service'; +import { MilvusService } from './milvus/milvus.service'; +import { PineconeService } from './pinecone/pinecone.service'; +import { QdrantDBService } from './qdrant/qdrant.service'; +import { TurboPufferService } from './turbopuffer/turbopuffer.service'; +import { WeaviateService } from './weaviate/weaviate.service'; +import { ConnectionsStrategiesService } from '@@core/connections-strategies/connections-strategies.service'; +import { VectorDbCredentialsService } from './vecdb.credentials.service'; + +export type VectorDbProvider = + | 'CHROMADB' + | 'PINECONE' + | 'QDRANT' + | 'TURBOPUFFER' + | 'MILVUS' + | 'WEAVIATE'; + +@Injectable() +export class VectorDatabaseService implements OnModuleInit { + private vectorDb: any; + + constructor( + private pineconeService: PineconeService, + private weaviateService: WeaviateService, + private turboPufferService: TurboPufferService, + private chromaDBService: ChromaDBService, + private qdrantService: QdrantDBService, + private milvusService: MilvusService, + private connectionsStrategiesService: ConnectionsStrategiesService, + private vectorDbCredentialsService: VectorDbCredentialsService, + ) {} + + onModuleInit() { + console.log(); + } + + async init(projectId: string) { + const activeStrategies = + await this.connectionsStrategiesService.getConnectionStrategiesForProject( + projectId, + ); + const activeVectorDbStrategy = activeStrategies.find( + (strategy) => strategy.type.startsWith('vector_db.') && strategy.status, + ); + + let dbType: string; + let credentials: string[]; + + if (activeVectorDbStrategy) { + dbType = activeVectorDbStrategy.type.split('.')[1].toLowerCase(); + credentials = + await this.vectorDbCredentialsService.getVectorDbCredentials( + projectId, + dbType, + ); + } else { + // Fall back to managed credentials + dbType = 'pinecone'; + credentials = + this.vectorDbCredentialsService.getManagedCredentials(dbType); + } + switch (dbType) { + case 'pinecone': + this.vectorDb = this.pineconeService; + break; + case 'weaviate': + this.vectorDb = this.weaviateService; + break; + case 'turbopuffer': + this.vectorDb = this.turboPufferService; + break; + case 'chromadb': + this.vectorDb = this.chromaDBService; + break; + case 'qdrant': + this.vectorDb = this.qdrantService; + break; + case 'milvus': + this.vectorDb = this.milvusService; + break; + default: + throw new Error(`Unsupported vector database type: ${dbType}`); + } + + await this.vectorDb.initialize(credentials); + } + + async storeEmbeddings( + fileId: string, + chunks: Document>[], + embeddings: number[][], + projectId: string, + ) { + await this.init(projectId); + const processedChunks: ProcessedChunk[] = chunks.map((chunk) => ({ + text: chunk.pageContent, + metadata: chunk.metadata, + })); + return this.vectorDb.storeEmbeddings( + fileId, + processedChunks, + embeddings, + projectId, + ); + } + + async queryEmbeddings(queryEmbedding: number[], topK: number) { + return this.vectorDb.queryEmbeddings(queryEmbedding, topK); + } +} diff --git a/packages/api/src/@core/rag/vecdb/weaviate/weaviate.service.ts b/packages/api/src/@core/rag/vecdb/weaviate/weaviate.service.ts new file mode 100644 index 000000000..ae92bf0e5 --- /dev/null +++ b/packages/api/src/@core/rag/vecdb/weaviate/weaviate.service.ts @@ -0,0 +1,49 @@ +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { ProcessedChunk } from '@@core/rag/types'; +import { Injectable } from '@nestjs/common'; +import weaviate from 'weaviate-client'; + +@Injectable() +export class WeaviateService { + private client: any; + + constructor(private envService: EnvironmentService) { + //this.initialize(); + } + + async initialize() { + const weaviate_creds = this.envService.getWeaviateCreds(); + this.client = weaviate.connectToWeaviateCloud(weaviate_creds.url, { + authCredentials: new weaviate.ApiKey(weaviate_creds.apiKey), + }); + } + + async storeEmbeddings( + fileId: string, + chunks: ProcessedChunk[], + embeddings: number[][], + ) { + const className = 'Document'; + for (let i = 0; i < chunks.length; i++) { + await this.client.data + .creator() + .withClassName(className) + .withId(`${fileId}_${i}`) + .withProperties({ text: chunks[i].text, ...chunks[i].metadata }) + .withVector(embeddings[i]) + .do(); + } + } + + async queryEmbeddings(queryEmbedding: number[], topK: number) { + const className = 'Document'; + const result = await this.client.graphql + .get() + .withClassName(className) + .withFields('text metadata') + .withNearVector({ vector: queryEmbedding }) + .withLimit(topK) + .do(); + return result.data.Get[className] || []; + } +} diff --git a/packages/api/src/@core/s3/constants.ts b/packages/api/src/@core/s3/constants.ts new file mode 100644 index 000000000..d45d01dd1 --- /dev/null +++ b/packages/api/src/@core/s3/constants.ts @@ -0,0 +1 @@ +export const BUCKET_NAME = 'panora-documents-bucket'; diff --git a/packages/api/src/@core/s3/s3.service.ts b/packages/api/src/@core/s3/s3.service.ts new file mode 100644 index 000000000..333bbc350 --- /dev/null +++ b/packages/api/src/@core/s3/s3.service.ts @@ -0,0 +1,72 @@ +import { EnvironmentService } from '@@core/@core-services/environment/environment.service'; +import { FileInfo } from '@@core/rag/types'; +import { + GetObjectCommand, + S3Client +} from '@aws-sdk/client-s3'; +import { ServiceRegistry } from '@filestorage/file/services/registry.service'; +import { IFileService } from '@filestorage/file/types'; +import { Injectable } from '@nestjs/common'; +import { Readable } from 'stream'; +import { BUCKET_NAME } from './constants'; + +@Injectable() +export class S3Service { + private s3: S3Client; + + constructor(private envService: EnvironmentService, private fileServiceRegistry: ServiceRegistry) { + // const creds = this.envService.getAwsCredentials(); + const creds = this.envService.getMinioCredentials(); + this.s3 = new S3Client({ + endpoint: 'http://minio:9000', + region: 'us-east-1', + forcePathStyle: true, + //region: creds.region, + credentials: { + accessKeyId: creds.accessKeyId, + secretAccessKey: creds.secretAccessKey, + }, + }); + } + + async uploadFilesFromUrls( + urlsWithKeys: FileInfo[], + linkedUserId: string + ): Promise { + const batchSize = 10; + for (let i = 0; i < urlsWithKeys.length; i += batchSize) { + const batch = urlsWithKeys.slice(i, i + batchSize); + await Promise.all( + batch.map(async ({ id, url, s3Key, provider }) => { + try { + const service: IFileService = this.fileServiceRegistry.getService(provider.toLowerCase().trim()); + if (!service) return; + await service.streamFileToS3( + id, + linkedUserId, + this.s3, + s3Key, + ); + console.log(`Successfully uploaded ${s3Key} from ${provider}`); + } catch (error) { + console.error( + `Failed to upload file from ${url} to ${s3Key} (${provider}):`, + error, + ); + throw error; + } + }), + ); + } + } + + async getReadStream(s3Key: string): Promise { + const getObjectParams = { + Bucket: BUCKET_NAME, + Key: s3Key, + }; + const command = new GetObjectCommand(getObjectParams); + const { Body } = await this.s3.send(command); + return Body as Readable; + } +} diff --git a/packages/api/src/@core/sync/sync.module.ts b/packages/api/src/@core/sync/sync.module.ts index 7261e06d7..43446beee 100644 --- a/packages/api/src/@core/sync/sync.module.ts +++ b/packages/api/src/@core/sync/sync.module.ts @@ -19,6 +19,7 @@ import { UserModule as TUserModule } from '@ticketing/user/user.module'; import { LoggerService } from '../@core-services/logger/logger.service'; import { SyncController } from './sync.controller'; import { CoreSyncService } from './sync.service'; +import { SyncProcessor } from './sync.processor'; @Module({ imports: [ @@ -59,8 +60,9 @@ import { CoreSyncService } from './sync.service'; TicketModule, TUserModule, CoreSyncService, + SyncProcessor, ], - providers: [CoreSyncService, LoggerService], + providers: [CoreSyncService, LoggerService, SyncProcessor], controllers: [SyncController], }) export class SyncModule {} diff --git a/packages/api/src/@core/sync/sync.service.ts b/packages/api/src/@core/sync/sync.service.ts index 7628c8de0..00a5c9633 100644 --- a/packages/api/src/@core/sync/sync.service.ts +++ b/packages/api/src/@core/sync/sync.service.ts @@ -534,6 +534,14 @@ export class CoreSyncService { linkedUserId: linkedUserId, }), ]; + if (provider == 'googledrive') { + tasks.push(() => + this.registry.getService('filestorage', 'file').syncForLinkedUser({ + integrationId: provider, + linkedUserId: linkedUserId, + }), + ); + } for (const task of tasks) { try { await task(); @@ -554,21 +562,23 @@ export class CoreSyncService { id_connection: connection.id_connection, }, }); - const filesTasks = folders.map( - (folder) => async () => - this.registry.getService('filestorage', 'file').syncForLinkedUser({ - integrationId: provider, - linkedUserId: linkedUserId, - id_folder: folder.id_fs_folder, - }), - ); + if (provider !== 'googledrive') { + const filesTasks = folders.map( + (folder) => async () => + this.registry.getService('filestorage', 'file').syncForLinkedUser({ + integrationId: provider, + linkedUserId: linkedUserId, + id_folder: folder.id_fs_folder, + }), + ); - for (const task of filesTasks) { - try { - await task(); - } catch (error) { - console.log(error); - this.logger.error(`File Task failed: ${error.message}`, error); + for (const task of filesTasks) { + try { + await task(); + } catch (error) { + console.log(error); + this.logger.error(`File Task failed: ${error.message}`, error); + } } } } diff --git a/packages/api/src/@core/utils/types/index.ts b/packages/api/src/@core/utils/types/index.ts index 2fc84e729..c1ec43c0b 100644 --- a/packages/api/src/@core/utils/types/index.ts +++ b/packages/api/src/@core/utils/types/index.ts @@ -56,6 +56,22 @@ export function getFileExtension(fileName: string): string | null { return null; } +export function getFileExtensionFromMimeType( + mimeType: string, +): string | undefined { + try { + const normalizedMimeType = mimeType.toLowerCase(); + for (const [extension, mime] of Object.entries(MIME_TYPES)) { + if (mime.toLowerCase() === normalizedMimeType) { + return extension.startsWith('.') ? extension.slice(1) : extension; + } + } + return undefined; + } catch (error) { + throw error; + } +} + export const MIME_TYPES: { [key: string]: string } = { '.aac': 'audio/aac', '.abw': 'application/x-abiword', @@ -96,6 +112,7 @@ export const MIME_TYPES: { [key: string]: string } = { '.mp4': 'video/mp4', '.mpeg': 'video/mpeg', '.mpkg': 'application/vnd.apple.installer+xml', + '.md': 'text/markdown', '.odp': 'application/vnd.oasis.opendocument.presentation', '.ods': 'application/vnd.oasis.opendocument.spreadsheet', '.odt': 'application/vnd.oasis.opendocument.text', diff --git a/packages/api/src/@core/utils/types/original/original.crm.ts b/packages/api/src/@core/utils/types/original/original.crm.ts index 61503dad2..de6342ab0 100644 --- a/packages/api/src/@core/utils/types/original/original.crm.ts +++ b/packages/api/src/@core/utils/types/original/original.crm.ts @@ -152,6 +152,12 @@ import { ZendeskUserInput, ZendeskUserOutput, } from '@ticketing/user/services/zendesk/types'; +import { SalesforceContactInput, SalesforceContactOutput } from '@crm/contact/services/salesforce/types'; +import { SalesforceDealInput, SalesforceDealOutput } from '@crm/deal/services/salesforce/types'; +import { SalesforceCompanyInput, SalesforceCompanyOutput } from '@crm/company/services/salesforce/types'; +import { SalesforceNoteInput, SalesforceNoteOutput } from '@crm/note/services/salesforce/types'; +import { SalesforceTaskInput } from '@crm/task/services/salesforce/types'; +import { SalesforceUserInput, SalesforceUserOutput } from '@crm/user/services/salesforce/types'; /* INPUT */ @@ -162,7 +168,9 @@ export type OriginalContactInput = | ZendeskContactInput | PipedriveContactInput | AttioContactInput - | CloseContactInput | MicrosoftdynamicssalesContactInput; + | CloseContactInput + | MicrosoftdynamicssalesContactInput + | SalesforceContactInput; /* deal */ export type OriginalDealInput = @@ -171,7 +179,9 @@ export type OriginalDealInput = | ZendeskDealOutput | PipedriveDealOutput | CloseDealOutput - | AttioDealInput | MicrosoftdynamicssalesDealInput; + | AttioDealInput + | MicrosoftdynamicssalesDealInput + | SalesforceDealInput /* company */ export type OriginalCompanyInput = @@ -180,7 +190,7 @@ export type OriginalCompanyInput = | ZendeskCompanyOutput | PipedriveCompanyOutput | AttioCompanyOutput - | CloseCompanyOutput | MicrosoftdynamicssalesCompanyInput; + | CloseCompanyOutput | MicrosoftdynamicssalesCompanyInput | SalesforceCompanyInput /* engagement */ export type OriginalEngagementInput = @@ -197,7 +207,7 @@ export type OriginalNoteInput = | ZendeskNoteInput | PipedriveNoteInput | CloseNoteInput - | AttioNoteInput | MicrosoftdynamicssalesNoteInput; + | AttioNoteInput | MicrosoftdynamicssalesNoteInput | SalesforceNoteInput; /* task */ export type OriginalTaskInput = @@ -206,7 +216,7 @@ export type OriginalTaskInput = | ZendeskTaskInput | PipedriveTaskInput | CloseTaskInput - | AttioTaskInput | MicrosoftdynamicssalesTaskInput; + | AttioTaskInput | MicrosoftdynamicssalesTaskInput | SalesforceTaskInput; /* stage */ export type OriginalStageInput = @@ -224,7 +234,7 @@ export type OriginalUserInput = | ZohoUserInput | ZendeskUserInput | PipedriveUserInput - | CloseUserOutput | MicrosoftdynamicssalesUserInput; + | CloseUserOutput | MicrosoftdynamicssalesUserInput | SalesforceUserInput export type CrmObjectInput = | OriginalContactInput @@ -244,7 +254,7 @@ export type OriginalContactOutput = | ZendeskContactOutput | PipedriveContactOutput | AttioContactOutput - | CloseContactOutput | MicrosoftdynamicssalesContactOutput; + | CloseContactOutput | MicrosoftdynamicssalesContactOutput | SalesforceContactOutput; /* deal */ export type OriginalDealOutput = @@ -253,7 +263,7 @@ export type OriginalDealOutput = | ZendeskDealOutput | PipedriveDealOutput | CloseDealOutput - | AttioDealOutput | MicrosoftdynamicssalesDealOutput; + | AttioDealOutput | MicrosoftdynamicssalesDealOutput | SalesforceDealOutput; /* company */ export type OriginalCompanyOutput = @@ -262,7 +272,7 @@ export type OriginalCompanyOutput = | ZendeskCompanyOutput | PipedriveCompanyOutput | AttioCompanyOutput - | CloseCompanyOutput | MicrosoftdynamicssalesCompanyOutput; + | CloseCompanyOutput | MicrosoftdynamicssalesCompanyOutput | SalesforceCompanyOutput; /* engagement */ export type OriginalEngagementOutput = @@ -279,7 +289,7 @@ export type OriginalNoteOutput = | ZendeskNoteOutput | PipedriveNoteOutput | CloseNoteOutput - | AttioNoteOutput | MicrosoftdynamicssalesNoteOutput; + | AttioNoteOutput | MicrosoftdynamicssalesNoteOutput | SalesforceNoteOutput; /* task */ export type OriginalTaskOutput = @@ -307,7 +317,7 @@ export type OriginalUserOutput = | ZendeskUserOutput | PipedriveUserOutput | CloseUserInput - | AttioUserOutput | MicrosoftdynamicssalesUserOutput; + | AttioUserOutput | MicrosoftdynamicssalesUserOutput| SalesforceUserOutput; export type CrmObjectOutput = | OriginalContactOutput diff --git a/packages/api/src/@core/utils/types/original/original.file-storage.ts b/packages/api/src/@core/utils/types/original/original.file-storage.ts index 58e1c1de7..09353fcb9 100644 --- a/packages/api/src/@core/utils/types/original/original.file-storage.ts +++ b/packages/api/src/@core/utils/types/original/original.file-storage.ts @@ -55,12 +55,30 @@ import { BoxUserInput, BoxUserOutput, } from '@filestorage/user/services/box/types'; +import { + GoogleDriveFileInput, + GoogleDriveFileOutput, +} from '@filestorage/file/services/googledrive/types'; +import { + GoogleDriveFolderInput, + GoogleDriveFolderOutput, +} from '@filestorage/folder/services/googledrive/types'; +import { + GoogleDriveDriveInput, + GoogleDriveDriveOutput, +} from '@filestorage/drive/services/googledrive/types'; /* file */ -export type OriginalFileInput = BoxFileInput | OnedriveFileInput; +export type OriginalFileInput = + | BoxFileInput + | OnedriveFileInput + | GoogleDriveFileInput; /* folder */ -export type OriginalFolderInput = BoxFolderInput | OnedriveFolderInput; +export type OriginalFolderInput = + | BoxFolderInput + | OnedriveFolderInput + | GoogleDriveFolderInput; /* permission */ export type OriginalPermissionInput = any | OnedrivePermissionInput; @@ -69,7 +87,7 @@ export type OriginalPermissionInput = any | OnedrivePermissionInput; export type OriginalSharedLinkInput = any; /* drive */ -export type OriginalDriveInput = any | OnedriveDriveInput; +export type OriginalDriveInput = GoogleDriveDriveInput | OnedriveDriveInput; /* group */ export type OriginalGroupInput = BoxGroupInput | OnedriveGroupInput; @@ -89,10 +107,16 @@ export type FileStorageObjectInput = /* OUTPUT */ /* file */ -export type OriginalFileOutput = BoxFileOutput | OnedriveFileOutput; +export type OriginalFileOutput = + | BoxFileOutput + | OnedriveFileOutput + | GoogleDriveFileOutput; /* folder */ -export type OriginalFolderOutput = BoxFolderOutput | OnedriveFolderOutput; +export type OriginalFolderOutput = + | BoxFolderOutput + | OnedriveFolderOutput + | GoogleDriveFolderOutput; /* permission */ export type OriginalPermissionOutput = any | OnedrivePermissionOutput; @@ -101,7 +125,7 @@ export type OriginalPermissionOutput = any | OnedrivePermissionOutput; export type OriginalSharedLinkOutput = any; /* drive */ -export type OriginalDriveOutput = any | OnedriveDriveOutput; +export type OriginalDriveOutput = GoogleDriveDriveOutput | OnedriveDriveOutput; /* group */ export type OriginalGroupOutput = BoxGroupOutput | OnedriveGroupOutput; diff --git a/packages/api/src/crm/company/company.module.ts b/packages/api/src/crm/company/company.module.ts index e822f855d..dd3e52f4e 100644 --- a/packages/api/src/crm/company/company.module.ts +++ b/packages/api/src/crm/company/company.module.ts @@ -1,13 +1,5 @@ -import { MicrosoftdynamicssalesCompanyMapper } from './services/microsoftdynamicssales/mappers'; -import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; -import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; -import { LoggerService } from '@@core/@core-services/logger/logger.service'; -import { BullQueueModule } from '@@core/@core-services/queues/queue.module'; -import { CoreUnification } from '@@core/@core-services/unification/core-unification.service'; import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; -import { ConnectionUtils } from '@@core/connections/@utils'; -import { FieldMappingService } from '@@core/field-mapping/field-mapping.service'; import { Utils } from '@crm/@lib/@utils'; import { Module } from '@nestjs/common'; import { CompanyController } from './company.controller'; @@ -18,33 +10,34 @@ import { CloseCompanyMapper } from './services/close/mappers'; import { CompanyService } from './services/company.service'; import { HubspotService } from './services/hubspot'; import { HubspotCompanyMapper } from './services/hubspot/mappers'; +import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; +import { MicrosoftdynamicssalesCompanyMapper } from './services/microsoftdynamicssales/mappers'; import { PipedriveService } from './services/pipedrive'; import { PipedriveCompanyMapper } from './services/pipedrive/mappers'; import { ServiceRegistry } from './services/registry.service'; +import { SalesforceService } from './services/salesforce'; import { ZendeskService } from './services/zendesk'; import { ZendeskCompanyMapper } from './services/zendesk/mappers'; import { ZohoService } from './services/zoho'; import { ZohoCompanyMapper } from './services/zoho/mappers'; import { SyncService } from './sync/sync.service'; +import { SalesforceCompanyMapper } from './services/salesforce/mappers'; @Module({ controllers: [CompanyController], providers: [ CompanyService, - SyncService, WebhookService, - ServiceRegistry, - Utils, IngestDataService, - /* PROVIDERS SERVICES */ ZendeskService, ZohoService, PipedriveService, HubspotService, + SalesforceService, AttioService, CloseService, /* PROVIDERS MAPPERS */ @@ -52,6 +45,7 @@ import { SyncService } from './sync/sync.service'; CloseCompanyMapper, HubspotCompanyMapper, PipedriveCompanyMapper, + SalesforceCompanyMapper, ZendeskCompanyMapper, ZohoCompanyMapper, MicrosoftdynamicssalesService, diff --git a/packages/api/src/crm/company/services/salesforce/index.ts b/packages/api/src/crm/company/services/salesforce/index.ts new file mode 100644 index 000000000..bdfd56f44 --- /dev/null +++ b/packages/api/src/crm/company/services/salesforce/index.ts @@ -0,0 +1,116 @@ +import { Injectable } from '@nestjs/common'; +import { ICompanyService } from '@crm/company/types'; +import { CrmObject } from '@crm/@lib/@types'; +import axios from 'axios'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { ApiResponse } from '@@core/utils/types'; +import { ServiceRegistry } from '../registry.service'; +import { + commonSalesforceCompanyProperties, + SalesforceCompanyInput, + SalesforceCompanyOutput, + } from './types'; +import { SyncParam } from '@@core/utils/types/interface'; + +@Injectable() +export class SalesforceService implements ICompanyService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + CrmObject.company.toUpperCase() + ':' + SalesforceService.name, + ); + this.registry.registerService('salesforce', this); + } + + async addCompany( + companyData: SalesforceCompanyInput, + linkedUserId: string, + ): Promise> { + try { + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + const resp = await axios.post( + `${instanceUrl}/services/data/v56.0/sobjects/Account/`, + JSON.stringify(companyData), + { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + return { + data: resp.data, + message: 'Salesforce company created', + statusCode: 201, + }; + } catch (error) { + throw error; + } + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId, custom_properties, pageSize, cursor } = data; + + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + let pagingString = `${pageSize ? `ORDER BY Id DESC LIMIT ${pageSize} ` : ''}${ + cursor ? `OFFSET ${cursor}` : '' + }`; + if (!pageSize && !cursor) { + pagingString = 'LIMIT 200'; + } + + const commonPropertyNames = Object.keys(commonSalesforceCompanyProperties); + const allProperties = [...commonPropertyNames, ...custom_properties]; + const fields = allProperties.join(','); + + const query = `SELECT ${fields} FROM Account ${pagingString}`; + + const resp = await axios.get( + `${instanceUrl}/services/data/v56.0/query/?q=${encodeURIComponent(query)}`, + { + headers: { + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + this.logger.log(`Synced Salesforce companies!`); + + return { + data: resp.data.records, + message: 'Salesforce companies retrieved', + statusCode: 200, + }; + } catch (error) { + throw error; + } + } +} \ No newline at end of file diff --git a/packages/api/src/crm/company/services/salesforce/mappers.ts b/packages/api/src/crm/company/services/salesforce/mappers.ts new file mode 100644 index 000000000..862008290 --- /dev/null +++ b/packages/api/src/crm/company/services/salesforce/mappers.ts @@ -0,0 +1,149 @@ +import { SalesforceCompanyInput, SalesforceCompanyOutput } from './types'; +import { + UnifiedCrmCompanyInput, + UnifiedCrmCompanyOutput, +} from '@crm/company/types/model.unified'; +import { ICompanyMapper } from '@crm/company/types'; +import { Utils } from '@crm/@lib/@utils'; +import { Injectable } from '@nestjs/common'; +import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; + +@Injectable() +export class SalesforceCompanyMapper implements ICompanyMapper { + constructor(private mappersRegistry: MappersRegistry, private utils: Utils) { + this.mappersRegistry.registerService('crm', 'company', 'salesforce', this); + } + + async desunify( + source: UnifiedCrmCompanyInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const result: any = { + Name: source.name, + Industry: source.industry || null, + }; + + if (source.number_of_employees) { + result.NumberOfEmployees = source.number_of_employees; + } + + if (source.phone_numbers && source.phone_numbers.length > 0) { + result.Phone = source.phone_numbers[0].phone_number; + } + + if (source.addresses && source.addresses.length > 0) { + const address = source.addresses[0]; + result.BillingCity = address.city; + result.BillingState = address.state; + result.BillingPostalCode = address.postal_code; + result.BillingStreet = address.street_1; + result.BillingCountry = address.country; + } + + if (source.user_id) { + const owner_id = await this.utils.getRemoteIdFromUserUuid(source.user_id); + if (owner_id) { + result.OwnerId = owner_id; + } + } + + if (customFieldMappings && source.field_mappings) { + for (const [k, v] of Object.entries(source.field_mappings)) { + const mapping = customFieldMappings.find( + (mapping) => mapping.slug === k, + ); + if (mapping) { + result[mapping.remote_id] = v; + } + } + } + + return result; + } + + async unify( + source: SalesforceCompanyOutput | SalesforceCompanyOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + if (!Array.isArray(source)) { + return this.mapSingleCompanyToUnified( + source, + connectionId, + customFieldMappings, + ); + } + return Promise.all( + source.map((company) => + this.mapSingleCompanyToUnified( + company, + connectionId, + customFieldMappings, + ), + ), + ); + } + + private async mapSingleCompanyToUnified( + company: SalesforceCompanyOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = company[mapping.remote_id]; + } + } + + let opts: any = {}; + if (company.OwnerId) { + const owner_id = await this.utils.getUserUuidFromRemoteId( + company.OwnerId, + connectionId, + ); + if (owner_id) { + opts = { + user_id: owner_id, + }; + } + } + + return { + remote_id: company.Id, + remote_data: company, + name: company.Name, + industry: company.Industry, + number_of_employees: company.NumberOfEmployees, + addresses: [ + { + street_1: company.BillingStreet, + city: company.BillingCity, + state: company.BillingState, + postal_code: company.BillingPostalCode, + country: company.BillingCountry, + address_type: 'BILLING', + owner_type: 'COMPANY', + }, + ], + phone_numbers: [ + { + phone_number: company.Phone, + phone_type: 'WORK', + owner_type: 'COMPANY', + }, + ], + field_mappings, + ...opts, + }; + } +} \ No newline at end of file diff --git a/packages/api/src/crm/company/services/salesforce/types.ts b/packages/api/src/crm/company/services/salesforce/types.ts new file mode 100644 index 000000000..2dd5261d2 --- /dev/null +++ b/packages/api/src/crm/company/services/salesforce/types.ts @@ -0,0 +1,81 @@ +export interface SalesforceCompanyInput { + Name: string; + AccountNumber?: string; + AccountSource?: string; + AnnualRevenue?: number; + BillingAddress?: { + city?: string; + country?: string; + postalCode?: string; + state?: string; + street?: string; + }; + Description?: string; + Fax?: string; + Industry?: string; + NumberOfEmployees?: number; + OwnerId?: string; + ParentId?: string; + Phone?: string; + Rating?: string; + ShippingAddress?: { + city?: string; + country?: string; + postalCode?: string; + state?: string; + street?: string; + }; + Sic?: string; + SicDesc?: string; + Site?: string; + TickerSymbol?: string; + Type?: string; + Website?: string; + [key: string]: any; +} + +export interface SalesforceCompanyOutput extends SalesforceCompanyInput { + Id: string; + CreatedDate: string; + LastModifiedDate: string; + IsDeleted: boolean; +} + +export const commonSalesforceCompanyProperties = { + Id: '', + Name: '', + AccountNumber: '', + AccountSource: '', + AnnualRevenue: 0, + BillingAddress: { + city: '', + country: '', + postalCode: '', + state: '', + street: '', + }, + Description: '', + Fax: '', + Industry: '', + NumberOfEmployees: 0, + OwnerId: '', + ParentId: '', + Phone: '', + Rating: '', + ShippingAddress: { + city: '', + country: '', + postalCode: '', + state: '', + street: '', + }, + Sic: '', + SicDesc: '', + Site: '', + TickerSymbol: '', + Type: '', + Website: '', + CreatedDate: '', + LastModifiedDate: '', + IsDeleted: false, +}; \ No newline at end of file diff --git a/packages/api/src/crm/contact/contact.module.ts b/packages/api/src/crm/contact/contact.module.ts index 56e51789a..e7587c37f 100644 --- a/packages/api/src/crm/contact/contact.module.ts +++ b/packages/api/src/crm/contact/contact.module.ts @@ -1,6 +1,3 @@ -import { MicrosoftdynamicssalesContactMapper } from './services/microsoftdynamicssales/mappers'; -import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; -import { BullQueueModule } from '@@core/@core-services/queues/queue.module'; import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; import { FieldMappingService } from '@@core/field-mapping/field-mapping.service'; @@ -14,14 +11,18 @@ import { CloseContactMapper } from './services/close/mappers'; import { ContactService } from './services/contact.service'; import { HubspotService } from './services/hubspot'; import { HubspotContactMapper } from './services/hubspot/mappers'; +import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; +import { MicrosoftdynamicssalesContactMapper } from './services/microsoftdynamicssales/mappers'; import { PipedriveService } from './services/pipedrive'; import { PipedriveContactMapper } from './services/pipedrive/mappers'; import { ServiceRegistry } from './services/registry.service'; +import { SalesforceService } from './services/salesforce'; import { ZendeskService } from './services/zendesk'; import { ZendeskContactMapper } from './services/zendesk/mappers'; import { ZohoService } from './services/zoho'; import { ZohoContactMapper } from './services/zoho/mappers'; import { SyncService } from './sync/sync.service'; +import { SalesforceContactMapper } from './services/salesforce/mappers'; @Module({ controllers: [ContactController], @@ -36,6 +37,7 @@ import { SyncService } from './sync/sync.service'; /* PROVIDERS SERVICES */ AttioService, ZendeskService, + SalesforceService, ZohoService, PipedriveService, HubspotService, @@ -44,6 +46,7 @@ import { SyncService } from './sync/sync.service'; AttioContactMapper, CloseContactMapper, HubspotContactMapper, + SalesforceContactMapper, PipedriveContactMapper, ZendeskContactMapper, ZohoContactMapper, diff --git a/packages/api/src/crm/contact/services/salesforce/index.ts b/packages/api/src/crm/contact/services/salesforce/index.ts new file mode 100644 index 000000000..89d9c6ebe --- /dev/null +++ b/packages/api/src/crm/contact/services/salesforce/index.ts @@ -0,0 +1,112 @@ +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { ApiResponse } from '@@core/utils/types'; +import { SyncParam } from '@@core/utils/types/interface'; +import { CrmObject } from '@crm/@lib/@types'; +import { IContactService } from '@crm/contact/types'; +import { Injectable } from '@nestjs/common'; +import axios from 'axios'; +import { ServiceRegistry } from '../registry.service'; +import { + SalesforceContactInput, + SalesforceContactOutput, + } from './types'; + +@Injectable() +export class SalesforceService implements IContactService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + CrmObject.contact.toUpperCase() + ':' + SalesforceService.name, + ); + this.registry.registerService('salesforce', this); + } + + async addContact( + contactData: SalesforceContactInput, + linkedUserId: string, + ): Promise> { + try { + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + const resp = await axios.post( + `${instanceUrl}/services/data/v56.0/sobjects/Contact/`, + JSON.stringify(contactData), + { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + return { + data: resp.data, + message: 'Salesforce contact created', + statusCode: 201, + }; + } catch (error) { + throw error; + } + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId, custom_properties, pageSize, cursor } = data; + + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + let pagingString = `${pageSize ? `ORDER BY Id DESC LIMIT ${pageSize} ` : ''}${ + cursor ? `OFFSET ${cursor}` : '' + }`; + if (!pageSize && !cursor) { + pagingString = 'LIMIT 200'; + } + + const fields = custom_properties ? custom_properties.join(',') : 'Id,FirstName,LastName,Email,Phone'; + const query = `SELECT ${fields} FROM Contact ${pagingString}`; + + const resp = await axios.get( + `${instanceUrl}/services/data/v56.0/query/?q=${encodeURIComponent(query)}`, + { + headers: { + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + this.logger.log(`Synced Salesforce contacts!`); + + return { + data: resp.data.records, + message: 'Salesforce contacts retrieved', + statusCode: 200, + }; + } catch (error) { + throw error; + } + } +} \ No newline at end of file diff --git a/packages/api/src/crm/contact/services/salesforce/mappers.ts b/packages/api/src/crm/contact/services/salesforce/mappers.ts new file mode 100644 index 000000000..d70aa5797 --- /dev/null +++ b/packages/api/src/crm/contact/services/salesforce/mappers.ts @@ -0,0 +1,129 @@ +import { + UnifiedCrmContactInput, + UnifiedCrmContactOutput, + } from '@crm/contact/types/model.unified'; + import { IContactMapper } from '@crm/contact/types'; + import { SalesforceContactInput, SalesforceContactOutput } from './types'; + import { Utils } from '@crm/@lib/@utils'; + import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; + import { Injectable } from '@nestjs/common'; + + @Injectable() + export class SalesforceContactMapper implements IContactMapper { + constructor(private mappersRegistry: MappersRegistry, private utils: Utils) { + this.mappersRegistry.registerService('crm', 'contact', 'salesforce', this); + } + + async desunify( + source: UnifiedCrmContactInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const result: SalesforceContactInput = { + FirstName: source.first_name, + LastName: source.last_name, + }; + + if (source.email_addresses && source.email_addresses.length > 0) { + result.Email = source.email_addresses[0].email_address; + } + + if (source.phone_numbers && source.phone_numbers.length > 0) { + result.Phone = source.phone_numbers[0].phone_number; + } + + if (source.addresses && source.addresses.length > 0) { + result.MailingStreet = source.addresses[0].street_1; + result.MailingCity = source.addresses[0].city; + result.MailingState = source.addresses[0].state; + result.MailingCountry = source.addresses[0].country; + result.MailingPostalCode = source.addresses[0].postal_code; + } + + if (customFieldMappings && source.field_mappings) { + for (const [k, v] of Object.entries(source.field_mappings)) { + const mapping = customFieldMappings.find( + (mapping) => mapping.slug === k, + ); + if (mapping) { + result[mapping.remote_id] = v; + } + } + } + + return result; + } + + async unify( + source: SalesforceContactOutput | SalesforceContactOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + if (!Array.isArray(source)) { + return this.mapSingleContactToUnified( + source, + connectionId, + customFieldMappings, + ); + } + return source.map((contact) => + this.mapSingleContactToUnified( + contact, + connectionId, + customFieldMappings, + ), + ); + } + + private mapSingleContactToUnified( + contact: SalesforceContactOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): UnifiedCrmContactOutput { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = contact[mapping.remote_id]; + } + } + + return { + remote_id: contact.Id, + remote_data: contact, + first_name: contact.FirstName, + last_name: contact.LastName, + email_addresses: [ + { + email_address: contact.Email, + email_address_type: 'PERSONAL', + owner_type: 'contact', + }, + ], + phone_numbers: [ + { + phone_number: contact.Phone, + phone_type: 'PERSONAL', + owner_type: 'contact', + }, + ], + addresses: [ + { + street_1: contact.MailingStreet, + city: contact.MailingCity, + state: contact.MailingState, + postal_code: contact.MailingPostalCode, + country: contact.MailingCountry, + }, + ], + field_mappings, + }; + } + } \ No newline at end of file diff --git a/packages/api/src/crm/contact/services/salesforce/types.ts b/packages/api/src/crm/contact/services/salesforce/types.ts new file mode 100644 index 000000000..d1a7e704f --- /dev/null +++ b/packages/api/src/crm/contact/services/salesforce/types.ts @@ -0,0 +1,43 @@ +export interface SalesforceContactInput { + FirstName?: string; + LastName: string; // Required in Salesforce + Email?: string; + Phone?: string; + MobilePhone?: string; + Title?: string; + Department?: string; + MailingStreet?: string; + MailingCity?: string; + MailingState?: string; + MailingCountry?: string; + MailingPostalCode?: string; + AccountId?: string; // Reference to the Account (Company) the contact is associated with + [key: string]: any; +} + +export interface SalesforceContactOutput extends SalesforceContactInput { + Id: string; + CreatedDate: string; + LastModifiedDate: string; + IsDeleted: boolean; +} + +export const commonSalesforceContactProperties = { + Id: '', + FirstName: '', + LastName: '', + Email: '', + Phone: '', + MobilePhone: '', + Title: '', + Department: '', + MailingStreet: '', + MailingCity: '', + MailingState: '', + MailingCountry: '', + MailingPostalCode: '', + AccountId: '', + CreatedDate: '', + LastModifiedDate: '', + IsDeleted: false, +}; \ No newline at end of file diff --git a/packages/api/src/crm/deal/deal.module.ts b/packages/api/src/crm/deal/deal.module.ts index 334d7367b..4b4e35c08 100644 --- a/packages/api/src/crm/deal/deal.module.ts +++ b/packages/api/src/crm/deal/deal.module.ts @@ -1,6 +1,3 @@ -import { MicrosoftdynamicssalesDealMapper } from './services/microsoftdynamicssales/mappers'; -import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; -import { BullQueueModule } from '@@core/@core-services/queues/queue.module'; import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; import { Utils } from '@crm/@lib/@utils'; @@ -13,14 +10,18 @@ import { CloseDealMapper } from './services/close/mappers'; import { DealService } from './services/deal.service'; import { HubspotService } from './services/hubspot'; import { HubspotDealMapper } from './services/hubspot/mappers'; +import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; +import { MicrosoftdynamicssalesDealMapper } from './services/microsoftdynamicssales/mappers'; import { PipedriveService } from './services/pipedrive'; import { PipedriveDealMapper } from './services/pipedrive/mappers'; import { ServiceRegistry } from './services/registry.service'; +import { SalesforceService } from './services/salesforce'; import { ZendeskService } from './services/zendesk'; import { ZendeskDealMapper } from './services/zendesk/mappers'; import { ZohoService } from './services/zoho'; import { ZohoDealMapper } from './services/zoho/mappers'; import { SyncService } from './sync/sync.service'; +import { SalesforceDealMapper } from './services/salesforce/mappers'; @Module({ controllers: [DealController], @@ -34,6 +35,7 @@ import { SyncService } from './sync/sync.service'; /* PROVIDERS SERVICES */ ZendeskService, ZohoService, + SalesforceService, PipedriveService, HubspotService, CloseService, @@ -44,6 +46,7 @@ import { SyncService } from './sync/sync.service'; PipedriveDealMapper, HubspotDealMapper, AttioDealMapper, + SalesforceDealMapper, CloseDealMapper, MicrosoftdynamicssalesService, MicrosoftdynamicssalesDealMapper, diff --git a/packages/api/src/crm/deal/services/salesforce/index.ts b/packages/api/src/crm/deal/services/salesforce/index.ts new file mode 100644 index 000000000..9ae3c581f --- /dev/null +++ b/packages/api/src/crm/deal/services/salesforce/index.ts @@ -0,0 +1,118 @@ +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { ApiResponse } from '@@core/utils/types'; +import { SyncParam } from '@@core/utils/types/interface'; +import { CrmObject } from '@crm/@lib/@types'; +import { IDealService } from '@crm/deal/types'; +import { Injectable } from '@nestjs/common'; +import axios from 'axios'; +import { ServiceRegistry } from '../registry.service'; +import { + SalesforceDealInput, + SalesforceDealOutput, + commonDealSalesforceProperties, +} from './types'; + +@Injectable() +export class SalesforceService implements IDealService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + CrmObject.deal.toUpperCase() + ':' + SalesforceService.name, + ); + this.registry.registerService('salesforce', this); + } + + async addDeal( + dealData: SalesforceDealInput, + linkedUserId: string, + ): Promise> { + try { + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + const resp = await axios.post( + `${instanceUrl}/services/data/v56.0/sobjects/Opportunity/`, + JSON.stringify(dealData), + { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + this.logger.log(`Created Salesforce deal!`); + + return { + data: resp.data, + message: 'Salesforce deal created', + statusCode: 201, + }; + } catch (error) { + throw error; + } + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId, custom_properties, pageSize, cursor } = data; + + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + let pagingString = `${pageSize ? `ORDER BY Id DESC LIMIT ${pageSize} ` : ''}${ + cursor ? `OFFSET ${cursor}` : '' + }`; + if (!pageSize && !cursor) { + pagingString = 'LIMIT 200'; + } + + const commonPropertyNames = Object.keys(commonDealSalesforceProperties); + const allProperties = [...commonPropertyNames, ...custom_properties]; + const fields = allProperties.join(','); + + const query = `SELECT ${fields} FROM Opportunity ${pagingString}`; + + const resp = await axios.get( + `${instanceUrl}/services/data/v56.0/query/?q=${encodeURIComponent(query)}`, + { + headers: { + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + this.logger.log(`Synced Salesforce deals!`); + + return { + data: resp.data.records, + message: 'Salesforce deals retrieved', + statusCode: 200, + }; + } catch (error) { + throw error; + } + } +} \ No newline at end of file diff --git a/packages/api/src/crm/deal/services/salesforce/mappers.ts b/packages/api/src/crm/deal/services/salesforce/mappers.ts new file mode 100644 index 000000000..6fabeb8b3 --- /dev/null +++ b/packages/api/src/crm/deal/services/salesforce/mappers.ts @@ -0,0 +1,132 @@ +import { SalesforceDealInput, SalesforceDealOutput } from './types'; +import { + UnifiedCrmDealInput, + UnifiedCrmDealOutput, +} from '@crm/deal/types/model.unified'; +import { IDealMapper } from '@crm/deal/types'; +import { Utils } from '@crm/@lib/@utils'; +import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class SalesforceDealMapper implements IDealMapper { + constructor(private mappersRegistry: MappersRegistry, private utils: Utils) { + this.mappersRegistry.registerService('crm', 'deal', 'salesforce', this); + } + + async desunify( + source: UnifiedCrmDealInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const result: SalesforceDealInput = { + Name: source.name, + Amount: Number(source.amount), + StageName: source.stage_id || null, + CloseDate: null, // TODO + }; + + if (source.user_id) { + const owner_id = await this.utils.getRemoteIdFromUserUuid(source.user_id); + if (owner_id) { + result.OwnerId = owner_id; + } + } + + if (customFieldMappings && source.field_mappings) { + for (const [k, v] of Object.entries(source.field_mappings)) { + const mapping = customFieldMappings.find( + (mapping) => mapping.slug === k, + ); + if (mapping) { + result[mapping.remote_id] = v; + } + } + } + return result; + } + + async unify( + source: SalesforceDealOutput | SalesforceDealOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + if (!Array.isArray(source)) { + return await this.mapSingleDealToUnified( + source, + connectionId, + customFieldMappings, + ); + } + return Promise.all( + source.map((deal) => + this.mapSingleDealToUnified(deal, connectionId, customFieldMappings), + ), + ); + } + + private async mapSingleDealToUnified( + deal: SalesforceDealOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = deal[mapping.remote_id]; + } + } + + let opts: any = {}; + if (deal.OwnerId) { + const owner_id = await this.utils.getUserUuidFromRemoteId( + deal.OwnerId, + connectionId, + ); + if (owner_id) { + opts = { + ...opts, + user_id: owner_id, + }; + } + } + + if (deal.Amount) { + opts = { + ...opts, + amount: String(deal.Amount), + }; + } + + if (deal.StageName) { + const stage_id = await this.utils.getStageUuidFromStageName( + deal.StageName, + connectionId, + ); + if (stage_id) { + opts = { + ...opts, + stage_id: stage_id, + }; + } + } + + return { + remote_id: deal.Id, + remote_data: deal, + name: deal.Name, + description: deal.Description || '', + close_date: deal.CloseDate, + field_mappings, + ...opts, + }; + } +} \ No newline at end of file diff --git a/packages/api/src/crm/deal/services/salesforce/types.ts b/packages/api/src/crm/deal/services/salesforce/types.ts new file mode 100644 index 000000000..d84f4f480 --- /dev/null +++ b/packages/api/src/crm/deal/services/salesforce/types.ts @@ -0,0 +1,38 @@ +export interface SalesforceDealInput { + Name: string; + Amount?: number; + StageName: string; // Required in Salesforce + CloseDate: string; // Required in Salesforce + AccountId?: string; + OwnerId?: string; + Type?: string; + Probability?: number; + [key: string]: any; +} + +export interface SalesforceDealOutput extends SalesforceDealInput { + Id: string; + CreatedDate: string; + LastModifiedDate: string; + IsDeleted: boolean; + IsClosed: boolean; + IsWon: boolean; +} + +export const commonDealSalesforceProperties = { + Id: '', + Name: '', + Amount: 0, + StageName: '', + CloseDate: '', + AccountId: '', + OwnerId: '', + Type: '', + Probability: 0, + Description: '', + CreatedDate: '', + LastModifiedDate: '', + IsDeleted: false, + IsClosed: false, + IsWon: false, +}; \ No newline at end of file diff --git a/packages/api/src/crm/note/note.module.ts b/packages/api/src/crm/note/note.module.ts index 280f0f69e..e06593223 100644 --- a/packages/api/src/crm/note/note.module.ts +++ b/packages/api/src/crm/note/note.module.ts @@ -1,26 +1,27 @@ -import { MicrosoftdynamicssalesNoteMapper } from './services/microsoftdynamicssales/mappers'; -import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; -import { BullQueueModule } from '@@core/@core-services/queues/queue.module'; import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; import { Utils } from '@crm/@lib/@utils'; import { Module } from '@nestjs/common'; import { NoteController } from './note.controller'; +import { AttioService } from './services/attio'; +import { AttioNoteMapper } from './services/attio/mappers'; import { CloseService } from './services/close'; import { CloseNoteMapper } from './services/close/mappers'; import { HubspotService } from './services/hubspot'; -import { AttioService } from './services/attio'; import { HubspotNoteMapper } from './services/hubspot/mappers'; +import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; +import { MicrosoftdynamicssalesNoteMapper } from './services/microsoftdynamicssales/mappers'; import { NoteService } from './services/note.service'; import { PipedriveService } from './services/pipedrive'; import { PipedriveNoteMapper } from './services/pipedrive/mappers'; import { ServiceRegistry } from './services/registry.service'; +import { SalesforceService } from './services/salesforce'; import { ZendeskService } from './services/zendesk'; import { ZendeskNoteMapper } from './services/zendesk/mappers'; import { ZohoService } from './services/zoho'; import { ZohoNoteMapper } from './services/zoho/mappers'; -import { AttioNoteMapper } from './services/attio/mappers'; import { SyncService } from './sync/sync.service'; +import { SalesforceNoteMapper } from './services/salesforce/mappers'; @Module({ controllers: [NoteController], providers: [ @@ -36,6 +37,7 @@ import { SyncService } from './sync/sync.service'; PipedriveService, HubspotService, AttioService, + SalesforceService, CloseService, /* PROVIDERS MAPPERS */ ZendeskNoteMapper, @@ -43,6 +45,7 @@ import { SyncService } from './sync/sync.service'; PipedriveNoteMapper, AttioNoteMapper, HubspotNoteMapper, + SalesforceNoteMapper, CloseNoteMapper, MicrosoftdynamicssalesService, MicrosoftdynamicssalesNoteMapper, diff --git a/packages/api/src/crm/note/services/salesforce/index.ts b/packages/api/src/crm/note/services/salesforce/index.ts new file mode 100644 index 000000000..18d5b6221 --- /dev/null +++ b/packages/api/src/crm/note/services/salesforce/index.ts @@ -0,0 +1,130 @@ +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { ApiResponse } from '@@core/utils/types'; +import { SyncParam } from '@@core/utils/types/interface'; +import { CrmObject } from '@crm/@lib/@types'; +import { INoteService } from '@crm/note/types'; +import { Injectable } from '@nestjs/common'; +import axios from 'axios'; +import { ServiceRegistry } from '../registry.service'; +import { + SalesforceNoteInput, + SalesforceNoteOutput, + commonNoteSalesforceProperties, +} from './types'; + +@Injectable() +export class SalesforceService implements INoteService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + CrmObject.note.toUpperCase() + ':' + SalesforceService.name, + ); + this.registry.registerService('salesforce', this); + } + + async addNote( + noteData: SalesforceNoteInput, + linkedUserId: string, + ): Promise> { + try { + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + const resp = await axios.post( + `${instanceUrl}/services/data/v56.0/sobjects/Note/`, + JSON.stringify(noteData), + { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + // Fetch the created note to get all details + const noteId = resp.data.id; + const final_resp = await axios.get( + `${instanceUrl}/services/data/v56.0/sobjects/Note/${noteId}`, + { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + return { + data: final_resp.data, + message: 'Salesforce note created', + statusCode: 201, + }; + } catch (error) { + throw error; + } + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId, custom_properties, pageSize, cursor } = data; + + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + let pagingString = `${pageSize ? `ORDER BY Id DESC LIMIT ${pageSize} ` : ''}${ + cursor ? `OFFSET ${cursor}` : '' + }`; + if (!pageSize && !cursor) { + pagingString = 'LIMIT 200'; + } + + const commonPropertyNames = Object.keys(commonNoteSalesforceProperties); + const allProperties = [...commonPropertyNames, ...custom_properties]; + const fields = allProperties.join(','); + + const query = `SELECT ${fields} FROM Note ${pagingString}`; + + const resp = await axios.get( + `${instanceUrl}/services/data/v56.0/query/?q=${encodeURIComponent(query)}`, + { + headers: { + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + this.logger.log(`Synced Salesforce notes!`); + + return { + data: resp.data.records, + message: 'Salesforce notes retrieved', + statusCode: 200, + }; + } catch (error) { + throw error; + } + } +} \ No newline at end of file diff --git a/packages/api/src/crm/note/services/salesforce/mappers.ts b/packages/api/src/crm/note/services/salesforce/mappers.ts new file mode 100644 index 000000000..6ba9e441b --- /dev/null +++ b/packages/api/src/crm/note/services/salesforce/mappers.ts @@ -0,0 +1,132 @@ +import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; +import { Utils } from '@crm/@lib/@utils'; +import { INoteMapper } from '@crm/note/types'; +import { + UnifiedCrmNoteInput, + UnifiedCrmNoteOutput, +} from '@crm/note/types/model.unified'; +import { Injectable } from '@nestjs/common'; +import { SalesforceNoteInput, SalesforceNoteOutput } from './types'; + +@Injectable() +export class SalesforceNoteMapper implements INoteMapper { + constructor(private mappersRegistry: MappersRegistry, private utils: Utils) { + this.mappersRegistry.registerService('crm', 'note', 'salesforce', this); + } + + async desunify( + source: UnifiedCrmNoteInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const result: SalesforceNoteInput = { + Content: source.content, + Title: source.content, // TODO: source.title || 'Note', + }; + + if (source.user_id) { + const owner_id = await this.utils.getRemoteIdFromUserUuid(source.user_id); + if (owner_id) { + result.OwnerId = owner_id; + } + } + + if (source.deal_id) { + const id = await this.utils.getRemoteIdFromDealUuid(source.deal_id); + result.ParentId = id; + } else if (source.contact_id) { + const id = await this.utils.getRemoteIdFromContactUuid(source.contact_id); + result.ParentId = id; + } else if (source.company_id) { + const id = await this.utils.getRemoteIdFromCompanyUuid(source.company_id); + result.ParentId = id; + } + + if (customFieldMappings && source.field_mappings) { + for (const [k, v] of Object.entries(source.field_mappings)) { + const mapping = customFieldMappings.find( + (mapping) => mapping.slug === k, + ); + if (mapping) { + result[mapping.remote_id] = v; + } + } + } + + return result; + } + + async unify( + source: SalesforceNoteOutput | SalesforceNoteOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + if (!Array.isArray(source)) { + return await this.mapSingleNoteToUnified( + source, + connectionId, + customFieldMappings, + ); + } + + return Promise.all( + source.map((note) => + this.mapSingleNoteToUnified(note, connectionId, customFieldMappings), + ), + ); + } + + private async mapSingleNoteToUnified( + note: SalesforceNoteOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = note[mapping.remote_id]; + } + } + + let opts: any = {}; + if (note.OwnerId) { + const owner_id = await this.utils.getUserUuidFromRemoteId( + note.OwnerId, + connectionId, + ); + if (owner_id) { + opts = { + ...opts, + user_id: owner_id, + }; + } + } + + if (note.ParentId) { + // Determine the type of the parent (deal, contact, or company) + // This might require additional API calls or logic to determine the object type + // For this example, we'll assume it's a deal, but you should implement proper logic here + opts.deal_id = await this.utils.getDealUuidFromRemoteId( + note.ParentId, + connectionId, + ); + } + + return { + remote_id: note.Id, + remote_data: note, + content: note.Body, + title: note.Title, + field_mappings, + ...opts, + }; + } +} \ No newline at end of file diff --git a/packages/api/src/crm/note/services/salesforce/types.ts b/packages/api/src/crm/note/services/salesforce/types.ts new file mode 100644 index 000000000..8a55cfd31 --- /dev/null +++ b/packages/api/src/crm/note/services/salesforce/types.ts @@ -0,0 +1,27 @@ +export interface SalesforceNoteInput { + Title: string; // Required in Salesforce + Content: string; // Required in Salesforce + [key: string]: any; +} + +export interface SalesforceNoteOutput extends SalesforceNoteInput { + Id: string; + OwnerId: string; + CreatedDate: string; + LastModifiedDate: string; + IsDeleted: boolean; + FileExtension: string; + ContentSize: number; +} + +export const commonNoteSalesforceProperties = { + Id: '', + Title: '', + Content: '', + OwnerId: '', + CreatedDate: '', + LastModifiedDate: '', + IsDeleted: false, + FileExtension: '', + ContentSize: 0, +}; \ No newline at end of file diff --git a/packages/api/src/crm/task/services/salesforce/index.ts b/packages/api/src/crm/task/services/salesforce/index.ts new file mode 100644 index 000000000..4d84bd650 --- /dev/null +++ b/packages/api/src/crm/task/services/salesforce/index.ts @@ -0,0 +1,130 @@ +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { ApiResponse } from '@@core/utils/types'; +import { SyncParam } from '@@core/utils/types/interface'; +import { CrmObject } from '@crm/@lib/@types'; +import { ITaskService } from '@crm/task/types'; +import { Injectable } from '@nestjs/common'; +import axios from 'axios'; +import { ServiceRegistry } from '../registry.service'; +import { + SalesforceTaskInput, + SalesforceTaskOutput, + commonTaskSalesforceProperties, +} from './types'; + +@Injectable() +export class SalesforceService implements ITaskService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + CrmObject.task.toUpperCase() + ':' + SalesforceService.name, + ); + this.registry.registerService('salesforce', this); + } + + async addTask( + taskData: SalesforceTaskInput, + linkedUserId: string, + ): Promise> { + try { + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + const resp = await axios.post( + `${instanceUrl}/services/data/v56.0/sobjects/Task/`, + JSON.stringify(taskData), + { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + // Fetch the created task to get all details + const taskId = resp.data.id; + const final_resp = await axios.get( + `${instanceUrl}/services/data/v56.0/sobjects/Task/${taskId}`, + { + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + return { + data: final_resp.data, + message: 'Salesforce task created', + statusCode: 201, + }; + } catch (error) { + throw error; + } + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId, custom_properties, pageSize, cursor } = data; + + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + let pagingString = `${pageSize ? `ORDER BY Id DESC LIMIT ${pageSize} ` : ''}${ + cursor ? `OFFSET ${cursor}` : '' + }`; + if (!pageSize && !cursor) { + pagingString = 'LIMIT 200'; + } + + const commonPropertyNames = Object.keys(commonTaskSalesforceProperties); + const allProperties = [...commonPropertyNames, ...custom_properties]; + const fields = allProperties.join(','); + + const query = `SELECT ${fields} FROM Task ${pagingString}`; + + const resp = await axios.get( + `${instanceUrl}/services/data/v56.0/query/?q=${encodeURIComponent(query)}`, + { + headers: { + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + this.logger.log(`Synced Salesforce tasks!`); + + return { + data: resp.data.records, + message: 'Salesforce tasks retrieved', + statusCode: 200, + }; + } catch (error) { + throw error; + } + } +} \ No newline at end of file diff --git a/packages/api/src/crm/task/services/salesforce/mappers.ts b/packages/api/src/crm/task/services/salesforce/mappers.ts new file mode 100644 index 000000000..ca9d9de73 --- /dev/null +++ b/packages/api/src/crm/task/services/salesforce/mappers.ts @@ -0,0 +1,158 @@ +import { SalesforceTaskInput, SalesforceTaskOutput } from './types'; +import { + TaskStatus, + UnifiedCrmTaskInput, + UnifiedCrmTaskOutput, +} from '@crm/task/types/model.unified'; +import { ITaskMapper } from '@crm/task/types'; +import { Utils } from '@crm/@lib/@utils'; +import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class SalesforceTaskMapper implements ITaskMapper { + constructor(private mappersRegistry: MappersRegistry, private utils: Utils) { + this.mappersRegistry.registerService('crm', 'task', 'salesforce', this); + } + + mapToTaskStatus(data: string): TaskStatus { + switch (data) { + case 'Not Started': + return 'PENDING'; + case 'Completed': + return 'COMPLETED'; + default: + return data; + } + } + + reverseMapToTaskStatus(data: TaskStatus): string { + switch (data) { + case 'COMPLETED': + return 'Completed'; + case 'PENDING': + return 'Not Started'; + default: + return 'Not Started'; + } + } + + async desunify( + source: UnifiedCrmTaskInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const result: SalesforceTaskInput = { + Subject: source.subject || '', + Description: source.content || '', + Status: this.reverseMapToTaskStatus(source.status as TaskStatus), + //Priority: source.priority || 'Normal', + }; + + if (source.user_id) { + const owner_id = await this.utils.getRemoteIdFromUserUuid(source.user_id); + if (owner_id) { + result.OwnerId = owner_id; + } + } + + if (source.deal_id) { + const id = await this.utils.getRemoteIdFromDealUuid(source.deal_id); + result.WhatId = id; + } else if (source.company_id) { + const id = await this.utils.getRemoteIdFromCompanyUuid(source.company_id); + result.WhatId = id; + } + + if (customFieldMappings && source.field_mappings) { + for (const [k, v] of Object.entries(source.field_mappings)) { + const mapping = customFieldMappings.find( + (mapping) => mapping.slug === k, + ); + if (mapping) { + result[mapping.remote_id] = v; + } + } + } + + return result; + } + + async unify( + source: SalesforceTaskOutput | SalesforceTaskOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + if (!Array.isArray(source)) { + return await this.mapSingleTaskToUnified( + source, + connectionId, + customFieldMappings, + ); + } + + return Promise.all( + source.map((task) => + this.mapSingleTaskToUnified(task, connectionId, customFieldMappings), + ), + ); + } + + private async mapSingleTaskToUnified( + task: SalesforceTaskOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = task[mapping.remote_id]; + } + } + + let opts: any = {}; + if (task.OwnerId) { + const owner_id = await this.utils.getUserUuidFromRemoteId( + task.OwnerId, + connectionId, + ); + if (owner_id) { + opts = { + ...opts, + user_id: owner_id, + }; + } + } + + opts.status = this.mapToTaskStatus(task.Status); + + if (task.WhatId) { + // Determine if WhatId is a deal or company + // This might require additional API calls or logic + // For this example, we'll assume it's a deal, but you should implement proper logic here + opts.deal_id = await this.utils.getDealUuidFromRemoteId( + task.WhatId, + connectionId, + ); + } + + return { + remote_id: task.Id, + remote_data: task, + subject: task.Subject, + content: task.Description, + priority: task.Priority, + due_date: task.ActivityDate, + field_mappings, + ...opts, + }; + } +} \ No newline at end of file diff --git a/packages/api/src/crm/task/services/salesforce/types.ts b/packages/api/src/crm/task/services/salesforce/types.ts new file mode 100644 index 000000000..9d2c9c00a --- /dev/null +++ b/packages/api/src/crm/task/services/salesforce/types.ts @@ -0,0 +1,35 @@ +export interface SalesforceTaskInput { + Subject: string; + Description?: string; + Status: string; + Priority?: string; + ActivityDate?: string; + OwnerId?: string; + WhatId?: string; // Related To ID (can be Account, Opportunity, etc.) + WhoId?: string; // Related Contact or Lead ID + [key: string]: any; +} + +export interface SalesforceTaskOutput extends SalesforceTaskInput { + Id: string; + CreatedDate: string; + LastModifiedDate: string; + IsDeleted: boolean; + IsClosed: boolean; +} + +export const commonTaskSalesforceProperties = { + Id: '', + Subject: '', + Description: '', + Status: '', + Priority: '', + ActivityDate: '', + OwnerId: '', + WhatId: '', + WhoId: '', + CreatedDate: '', + LastModifiedDate: '', + IsDeleted: false, + IsClosed: false, +}; \ No newline at end of file diff --git a/packages/api/src/crm/task/task.module.ts b/packages/api/src/crm/task/task.module.ts index 63800e06a..8b17fd7e2 100644 --- a/packages/api/src/crm/task/task.module.ts +++ b/packages/api/src/crm/task/task.module.ts @@ -1,11 +1,11 @@ -import { MicrosoftdynamicssalesTaskMapper } from './services/microsoftdynamicssales/mappers'; import { MicrosoftdynamicssalesService } from './services/microsoftdynamicssales'; -import { BullQueueModule } from '@@core/@core-services/queues/queue.module'; - +import { MicrosoftdynamicssalesTaskMapper } from './services/microsoftdynamicssales/mappers'; import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; import { Utils } from '@crm/@lib/@utils'; import { Module } from '@nestjs/common'; +import { AttioService } from './services/attio'; +import { AttioTaskMapper } from './services/attio/mappers'; import { CloseService } from './services/close'; import { CloseTaskMapper } from './services/close/mappers'; import { HubspotService } from './services/hubspot'; @@ -13,15 +13,15 @@ import { HubspotTaskMapper } from './services/hubspot/mappers'; import { PipedriveService } from './services/pipedrive'; import { PipedriveTaskMapper } from './services/pipedrive/mappers'; import { ServiceRegistry } from './services/registry.service'; +import { SalesforceService } from './services/salesforce'; import { TaskService } from './services/task.service'; import { ZendeskService } from './services/zendesk'; -import { AttioService } from './services/attio'; import { ZendeskTaskMapper } from './services/zendesk/mappers'; -import { AttioTaskMapper } from './services/attio/mappers'; import { ZohoService } from './services/zoho'; import { ZohoTaskMapper } from './services/zoho/mappers'; import { SyncService } from './sync/sync.service'; import { TaskController } from './task.controller'; +import { SalesforceTaskMapper } from './services/salesforce/mappers'; @Module({ controllers: [TaskController], providers: [ @@ -38,6 +38,7 @@ import { TaskController } from './task.controller'; HubspotService, AttioService, CloseService, + SalesforceService, /* PROVIDERS MAPPERS */ ZendeskTaskMapper, ZohoTaskMapper, @@ -46,6 +47,7 @@ import { TaskController } from './task.controller'; CloseTaskMapper, AttioTaskMapper, MicrosoftdynamicssalesService, + SalesforceTaskMapper, MicrosoftdynamicssalesTaskMapper, ], exports: [SyncService, ServiceRegistry, WebhookService], diff --git a/packages/api/src/crm/task/types/model.unified.ts b/packages/api/src/crm/task/types/model.unified.ts index 57be7f4cf..9db6b0fed 100644 --- a/packages/api/src/crm/task/types/model.unified.ts +++ b/packages/api/src/crm/task/types/model.unified.ts @@ -1,7 +1,7 @@ import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsIn, IsOptional, IsString, IsUUID } from 'class-validator'; -export type TaskStatus = 'PENDING' | 'COMPLETED'; +export type TaskStatus = 'PENDING' | 'COMPLETED' | string; export class UnifiedCrmTaskInput { @ApiProperty({ type: String, diff --git a/packages/api/src/crm/user/services/salesforce/index.ts b/packages/api/src/crm/user/services/salesforce/index.ts new file mode 100644 index 000000000..22badde90 --- /dev/null +++ b/packages/api/src/crm/user/services/salesforce/index.ts @@ -0,0 +1,75 @@ +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { ApiResponse } from '@@core/utils/types'; +import { SyncParam } from '@@core/utils/types/interface'; +import { CrmObject } from '@crm/@lib/@types'; +import { IUserService } from '@crm/user/types'; +import { Injectable } from '@nestjs/common'; +import axios from 'axios'; +import { ServiceRegistry } from '../registry.service'; +import { SalesforceUserOutput, commonUserSalesforceProperties } from './types'; + +@Injectable() +export class SalesforceService implements IUserService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + CrmObject.user.toUpperCase() + ':' + SalesforceService.name, + ); + this.registry.registerService('salesforce', this); + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId, custom_properties, pageSize, cursor } = data; + + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'salesforce', + vertical: 'crm', + }, + }); + + const instanceUrl = connection.account_url; + let pagingString = `${pageSize ? `ORDER BY Id DESC LIMIT ${pageSize} ` : ''}${ + cursor ? `OFFSET ${cursor}` : '' + }`; + if (!pageSize && !cursor) { + pagingString = 'LIMIT 200'; + } + + const commonPropertyNames = Object.keys(commonUserSalesforceProperties); + const allProperties = [...commonPropertyNames, ...custom_properties]; + const fields = allProperties.join(','); + + const query = `SELECT ${fields} FROM User ${pagingString}`; + + const resp = await axios.get( + `${instanceUrl}/services/data/v56.0/query/?q=${encodeURIComponent(query)}`, + { + headers: { + Authorization: `Bearer ${this.cryptoService.decrypt( + connection.access_token, + )}`, + }, + }, + ); + + this.logger.log(`Synced Salesforce users!`); + + return { + data: resp.data.records, + message: 'Salesforce users retrieved', + statusCode: 200, + }; + } catch (error) { + throw error; + } + } +} \ No newline at end of file diff --git a/packages/api/src/crm/user/services/salesforce/mappers.ts b/packages/api/src/crm/user/services/salesforce/mappers.ts new file mode 100644 index 000000000..5d53dda62 --- /dev/null +++ b/packages/api/src/crm/user/services/salesforce/mappers.ts @@ -0,0 +1,75 @@ +import { SalesforceUserInput, SalesforceUserOutput } from './types'; +import { + UnifiedCrmUserInput, + UnifiedCrmUserOutput, +} from '@crm/user/types/model.unified'; +import { IUserMapper } from '@crm/user/types'; +import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; +import { Injectable } from '@nestjs/common'; +import { Utils } from '@crm/@lib/@utils'; + +@Injectable() +export class SalesforceUserMapper implements IUserMapper { + constructor(private mappersRegistry: MappersRegistry, private utils: Utils) { + this.mappersRegistry.registerService('crm', 'user', 'salesforce', this); + } + + desunify( + source: UnifiedCrmUserInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): SalesforceUserInput { + // Salesforce doesn't typically allow creating users via API, + // so this method might not be needed. If it is, implement the logic here. + return {}; + } + + async unify( + source: SalesforceUserOutput | SalesforceUserOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + if (!Array.isArray(source)) { + return this.mapSingleUserToUnified( + source, + connectionId, + customFieldMappings, + ); + } + // Handling array of SalesforceUserOutput + return Promise.all( + source.map((user) => + this.mapSingleUserToUnified(user, connectionId, customFieldMappings), + ), + ); + } + + private mapSingleUserToUnified( + user: SalesforceUserOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): UnifiedCrmUserOutput { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = user[mapping.remote_id]; + } + } + + return { + remote_id: user.Id, + remote_data: user, + name: `${user.FirstName} ${user.LastName}`, + email: user.Email, + field_mappings, + }; + } +} \ No newline at end of file diff --git a/packages/api/src/crm/user/services/salesforce/types.ts b/packages/api/src/crm/user/services/salesforce/types.ts new file mode 100644 index 000000000..e1c46d3db --- /dev/null +++ b/packages/api/src/crm/user/services/salesforce/types.ts @@ -0,0 +1,38 @@ +export interface SalesforceUserInput { + // Salesforce doesn't typically allow creating users via API, + // so this interface might be empty or have limited fields + [key: string]: any; +} + +export interface SalesforceUserOutput { + Id: string; + Username: string; + Email: string; + FirstName: string; + LastName: string; + IsActive: boolean; + UserRoleId?: string; + ProfileId: string; + Alias: string; + TimeZoneSidKey: string; + LocaleSidKey: string; + EmailEncodingKey: string; + LanguageLocaleKey: string; + [key: string]: any; +} + +export const commonUserSalesforceProperties = { + Id: '', + Username: '', + Email: '', + FirstName: '', + LastName: '', + IsActive: false, + UserRoleId: '', + ProfileId: '', + Alias: '', + TimeZoneSidKey: '', + LocaleSidKey: '', + EmailEncodingKey: '', + LanguageLocaleKey: '', +}; \ No newline at end of file diff --git a/packages/api/src/crm/user/user.module.ts b/packages/api/src/crm/user/user.module.ts index 9ca93bd02..87972a2cf 100644 --- a/packages/api/src/crm/user/user.module.ts +++ b/packages/api/src/crm/user/user.module.ts @@ -22,6 +22,8 @@ import { ZohoService } from './services/zoho'; import { ZohoUserMapper } from './services/zoho/mappers'; import { SyncService } from './sync/sync.service'; import { UserController } from './user.controller'; +import { SalesforceService } from './services/salesforce'; +import { SalesforceUserMapper } from './services/salesforce/mappers'; @Module({ controllers: [UserController], providers: [ @@ -38,6 +40,8 @@ import { UserController } from './user.controller'; HubspotService, AttioService, CloseService, + SalesforceService, + MicrosoftdynamicssalesService, /* PROVIDERS MAPPERS */ ZendeskUserMapper, ZohoUserMapper, @@ -45,7 +49,7 @@ import { UserController } from './user.controller'; HubspotUserMapper, AttioUserMapper, CloseUserMapper, - MicrosoftdynamicssalesService, + SalesforceUserMapper, MicrosoftdynamicssalesUserMapper, ], exports: [SyncService, ServiceRegistry, WebhookService], diff --git a/packages/api/src/filestorage/drive/drive.module.ts b/packages/api/src/filestorage/drive/drive.module.ts index d2869bd49..72e78a5b2 100644 --- a/packages/api/src/filestorage/drive/drive.module.ts +++ b/packages/api/src/filestorage/drive/drive.module.ts @@ -1,14 +1,15 @@ -import { OnedriveDriveMapper } from './services/onedrive/mappers'; -import { OnedriveService } from './services/onedrive'; -import { BullQueueModule } from '@@core/@core-services/queues/queue.module'; +import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; +import { Utils } from '@filestorage/@lib/@utils'; import { Module } from '@nestjs/common'; import { DriveController } from './drive.controller'; import { DriveService } from './services/drive.service'; +import { GoogleDriveService } from './services/googledrive'; +import { GoogleDriveMapper } from './services/googledrive/mappers'; +import { OnedriveService } from './services/onedrive'; +import { OnedriveDriveMapper } from './services/onedrive/mappers'; import { ServiceRegistry } from './services/registry.service'; import { SyncService } from './sync/sync.service'; -import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; -import { Utils } from '@filestorage/@lib/@utils'; @Module({ controllers: [DriveController], providers: [ @@ -20,6 +21,8 @@ import { Utils } from '@filestorage/@lib/@utils'; Utils, /* PROVIDERS SERVICES */ OnedriveService, + GoogleDriveService, + GoogleDriveMapper, OnedriveDriveMapper, ], exports: [SyncService], diff --git a/packages/api/src/filestorage/drive/services/googledrive/index.ts b/packages/api/src/filestorage/drive/services/googledrive/index.ts new file mode 100644 index 000000000..945037f97 --- /dev/null +++ b/packages/api/src/filestorage/drive/services/googledrive/index.ts @@ -0,0 +1,111 @@ +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { ApiResponse } from '@@core/utils/types'; +import { DesunifyReturnType } from '@@core/utils/types/desunify.input'; +import { SyncParam } from '@@core/utils/types/interface'; +import { FileStorageObject } from '@filestorage/@lib/@types'; +import { IDriveService } from '@filestorage/drive/types'; +import { Injectable } from '@nestjs/common'; +import { OAuth2Client } from 'google-auth-library'; +import { google } from 'googleapis'; +import { ServiceRegistry } from '../registry.service'; +import { GoogleDriveDriveOutput } from './types'; + +@Injectable() +export class GoogleDriveService implements IDriveService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + `${FileStorageObject.file.toUpperCase()}:${GoogleDriveService.name}`, + ); + this.registry.registerService('googledrive', this); + } + + private async getGoogleClient(linkedUserId: string): Promise { + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'googledrive', + vertical: 'filestorage', + }, + }); + + if (!connection) { + throw new Error('Connection not found'); + } + + const oauth2Client = new google.auth.OAuth2(); + oauth2Client.setCredentials({ + access_token: this.cryptoService.decrypt(connection.access_token), + refresh_token: this.cryptoService.decrypt(connection.refresh_token), + }); + + return oauth2Client; + } + + async addDrive( + driveData: DesunifyReturnType, + linkedUserId: string, + ): Promise> { + try { + const oauth2Client = await this.getGoogleClient(linkedUserId); + const drive = google.drive({ version: 'v3', auth: oauth2Client }); + + const response = await drive.drives.create({ + requestBody: { + name: driveData.name, + }, + }); + + const createdDrive: GoogleDriveDriveOutput = { + id: response.data.id || '', + name: response.data.name || '', + kind: response.data.kind || '', + }; + + return { + data: createdDrive, + message: 'Google Drive created successfully', + statusCode: 201, + }; + } catch (error) { + this.logger.error('Error creating Google Drive', error); + throw error; + } + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId } = data; + const oauth2Client = await this.getGoogleClient(linkedUserId); + const drive = google.drive({ version: 'v3', auth: oauth2Client }); + + const response = await drive.drives.list({ + pageSize: 100, + }); + + const drives: GoogleDriveDriveOutput[] = (response.data.drives || []).map( + (drive) => ({ + id: drive.id || '', + name: drive.name || '', + kind: drive.kind || '', + }), + ); + this.logger.log(`Synced Google Drive drives!`); + + return { + data: drives, + message: 'Google Drive drives retrieved', + statusCode: 200, + }; + } catch (error) { + this.logger.error('Error syncing Google Drive drives', error); + throw error; + } + } +} diff --git a/packages/api/src/filestorage/drive/services/googledrive/mappers.ts b/packages/api/src/filestorage/drive/services/googledrive/mappers.ts new file mode 100644 index 000000000..f157a4483 --- /dev/null +++ b/packages/api/src/filestorage/drive/services/googledrive/mappers.ts @@ -0,0 +1,87 @@ +import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; +import { CoreUnification } from '@@core/@core-services/unification/core-unification.service'; +import { Utils } from '@filestorage/@lib/@utils'; +import { + UnifiedFilestorageDriveInput, + UnifiedFilestorageDriveOutput, +} from '@filestorage/drive/types/model.unified'; +import { Injectable } from '@nestjs/common'; +import { GoogleDriveDriveInput, GoogleDriveDriveOutput } from './types'; +import { IDriveMapper } from '@filestorage/drive/types'; + +@Injectable() +export class GoogleDriveMapper implements IDriveMapper { + constructor( + private mappersRegistry: MappersRegistry, + private utils: Utils, + private coreUnificationService: CoreUnification, + ) { + this.mappersRegistry.registerService( + 'filestorage', + 'drive', + 'googledrive', + this, + ); + } + + async desunify( + source: UnifiedFilestorageDriveInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + return { + name: source.name, + }; + } + + async unify( + source: GoogleDriveDriveOutput | GoogleDriveDriveOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + if (!Array.isArray(source)) { + return await this.mapSingleDriveToUnified( + source, + connectionId, + customFieldMappings, + ); + } + return Promise.all( + source.map((drive) => + this.mapSingleDriveToUnified(drive, connectionId, customFieldMappings), + ), + ); + } + + private async mapSingleDriveToUnified( + drive: GoogleDriveDriveOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = drive[mapping.remote_id]; + } + } + + const result: UnifiedFilestorageDriveOutput = { + remote_id: drive.id, + remote_data: drive, + name: drive.name, + remote_created_at: drive.createdTime, + drive_url: `https://drive.google.com/drive/folders/${drive.id}`, + field_mappings, + }; + + return result; + } +} diff --git a/packages/api/src/filestorage/drive/services/googledrive/types.ts b/packages/api/src/filestorage/drive/services/googledrive/types.ts new file mode 100644 index 000000000..ffe31c4b2 --- /dev/null +++ b/packages/api/src/filestorage/drive/services/googledrive/types.ts @@ -0,0 +1,48 @@ +export interface GoogleDriveDriveOutput { + id: string; + name: string; + colorRgb?: string; + kind: string; + backgroundImageLink?: string; + capabilities?: { + canAddChildren?: boolean; + canComment?: boolean; + canCopy?: boolean; + canDeleteDrive?: boolean; + canDownload?: boolean; + canEdit?: boolean; + canListChildren?: boolean; + canManageMembers?: boolean; + canReadRevisions?: boolean; + canRename?: boolean; + canRenameDrive?: boolean; + canChangeDriveBackground?: boolean; + canShare?: boolean; + canChangeCopyRequiresWriterPermissionRestriction?: boolean; + canChangeDomainUsersOnlyRestriction?: boolean; + canChangeDriveMembersOnlyRestriction?: boolean; + canChangeSharingFoldersRequiresOrganizerPermissionRestriction?: boolean; + canResetDriveRestrictions?: boolean; + canDeleteChildren?: boolean; + canTrashChildren?: boolean; + }; + themeId?: string; + backgroundImageFile?: { + id: string; + xCoordinate: number; + yCoordinate: number; + width: number; + }; + createdTime?: string; + hidden?: boolean; + restrictions?: { + copyRequiresWriterPermission?: boolean; + domainUsersOnly?: boolean; + driveMembersOnly?: boolean; + adminManagedRestrictions?: boolean; + sharingFoldersRequiresOrganizerPermission?: boolean; + }; + orgUnitId?: string; +} + +export type GoogleDriveDriveInput = Partial; diff --git a/packages/api/src/filestorage/file/file.module.ts b/packages/api/src/filestorage/file/file.module.ts index 8bf661c03..aa6754405 100644 --- a/packages/api/src/filestorage/file/file.module.ts +++ b/packages/api/src/filestorage/file/file.module.ts @@ -1,17 +1,17 @@ -import { OnedriveFileMapper } from './services/onedrive/mappers'; -import { OnedriveService } from './services/onedrive'; -import { BullQueueModule } from '@@core/@core-services/queues/queue.module'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; import { Module } from '@nestjs/common'; import { FileController } from './file.controller'; import { BoxService } from './services/box'; import { BoxFileMapper } from './services/box/mappers'; import { FileService } from './services/file.service'; +import { OnedriveService } from './services/onedrive'; +import { OnedriveFileMapper } from './services/onedrive/mappers'; import { ServiceRegistry } from './services/registry.service'; import { SyncService } from './sync/sync.service'; - import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { Utils } from '@filestorage/@lib/@utils'; +import { GoogleDriveService } from './services/googledrive'; +import { GoogleDriveFileMapper } from './services/googledrive/mappers'; @Module({ controllers: [FileController], @@ -24,11 +24,13 @@ import { Utils } from '@filestorage/@lib/@utils'; Utils, /* MAPPERS SERVICES */ BoxFileMapper, + OnedriveFileMapper, + GoogleDriveFileMapper, /* PROVIDERS SERVICES */ BoxService, OnedriveService, - OnedriveFileMapper, + GoogleDriveService, ], - exports: [SyncService], + exports: [SyncService, ServiceRegistry], }) export class FileModule {} diff --git a/packages/api/src/filestorage/file/services/box/mappers.ts b/packages/api/src/filestorage/file/services/box/mappers.ts index 75e979a05..b6eeeab90 100644 --- a/packages/api/src/filestorage/file/services/box/mappers.ts +++ b/packages/api/src/filestorage/file/services/box/mappers.ts @@ -90,12 +90,13 @@ export class BoxFileMapper implements IFileMapper { remote_id: file.id, remote_data: file, name: file.name || null, - type: file.extension || null, + //type: file.extension || null, file_url: file.shared_link?.url || null, mime_type: this.utils.getMimeType(file.name) || null, size: file.size?.toString() || null, permission: null, field_mappings, + folder_id: null, ...opts, //remote_created_at: file.created_at || null, //remote_modified_at: file.modified_at || null, diff --git a/packages/api/src/filestorage/file/services/googledrive/index.ts b/packages/api/src/filestorage/file/services/googledrive/index.ts new file mode 100644 index 000000000..da6c4e2ae --- /dev/null +++ b/packages/api/src/filestorage/file/services/googledrive/index.ts @@ -0,0 +1,319 @@ +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { ApiResponse } from '@@core/utils/types'; +import { SyncParam } from '@@core/utils/types/interface'; +import { FileStorageObject } from '@filestorage/@lib/@types'; +import { IFileService } from '@filestorage/file/types'; +import { Injectable } from '@nestjs/common'; +import { ServiceRegistry } from '../registry.service'; +import { GoogleDriveFileOutput } from './types'; +import { S3Client } from '@aws-sdk/client-s3'; +import { Readable } from 'stream'; +import { Upload } from '@aws-sdk/lib-storage'; +import { google } from 'googleapis'; +import { OAuth2Client } from 'google-auth-library'; +import { BUCKET_NAME } from '@@core/s3/constants'; +import * as XLSX from 'xlsx'; +import * as csv from 'csv-parse'; +import * as mammoth from 'mammoth'; +import * as marked from 'marked'; + +@Injectable() +export class GoogleDriveService implements IFileService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + FileStorageObject.file.toUpperCase() + ':' + GoogleDriveService.name, + ); + this.registry.registerService('googledrive', this); + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId, id_folder } = data; + + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'googledrive', + vertical: 'filestorage', + }, + }); + + if (!connection) return; + + const auth = new OAuth2Client(); + auth.setCredentials({ + access_token: this.cryptoService.decrypt(connection.access_token), + }); + const drive = google.drive({ version: 'v3', auth }); + + const response = await drive.files.list({ + q: 'trashed = false', + fields: + 'files(id, name, mimeType, modifiedTime, size, parents, webViewLink)', + pageSize: 1000, // Adjust as needed + }); + + const files: GoogleDriveFileOutput[] = response.data.files.map( + (file) => ({ + id: file.id!, + name: file.name!, + mimeType: file.mimeType!, + modifiedTime: file.modifiedTime!, + size: file.size!, + parents: file.parents, + webViewLink: file.webViewLink, + }), + ); + this.logger.log(`Synced googledrive files !`); + + return { + data: files, + message: 'Google Drive files retrieved', + statusCode: 200, + }; + } catch (error) { + throw error; + } + } + + extractFileId(url: string): string | null { + const match = url.match(/\/d\/([^/]+)/); + return match ? match[1] : null; + } + + async streamFileToS3( + file_id: string, + linkedUserId: string, + s3Client: S3Client, + s3Key: string, + ) { + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'googledrive', + vertical: 'filestorage', + }, + }); + + const file = await this.prisma.fs_files.findUnique({ + where: { + id_fs_file: file_id, + }, + }); + const auth = new OAuth2Client(); + auth.setCredentials({ + access_token: this.cryptoService.decrypt(connection.access_token), + }); + const drive = google.drive({ version: 'v3', auth }); + + const fileUniqueIdentifier = this.extractFileId(file.file_url); + // Get file metadata + const fileMetadata = await drive.files.get({ + fileId: fileUniqueIdentifier, + fields: 'name,mimeType', + }); + + let processedContent: string | Buffer; + const mimeType = fileMetadata.data.mimeType; + let contentType = 'text/plain'; // Default content type + + switch (mimeType) { + case 'application/pdf': + contentType = 'application/pdf'; + processedContent = await this.downloadFile(drive, fileUniqueIdentifier); + break; + case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': + case 'text/csv': + contentType = 'text/csv'; + processedContent = await this.downloadFile(drive, fileUniqueIdentifier); + break; + case 'text/tab-separated-values': + processedContent = await this.processSpreadsheet( + drive, + fileUniqueIdentifier, + mimeType, + ); + break; + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': + case 'text/plain': + case 'text/markdown': + case 'application/rtf': + case 'application/vnd.openxmlformats-officedocument.presentationml.presentation': + case 'text/html': + case 'message/rfc822': + case 'application/vnd.ms-outlook': + processedContent = await this.processTextContent( + drive, + fileUniqueIdentifier, + mimeType, + ); + break; + case 'application/json': + processedContent = await this.processJsonContent( + drive, + fileUniqueIdentifier, + ); + break; + default: + throw new Error(`Unsupported file type: ${mimeType}`); + } + + const upload = new Upload({ + client: s3Client, + params: { + Bucket: BUCKET_NAME, + Key: s3Key, + Body: Readable.from(processedContent), + ContentType: contentType, + ContentDisposition: `attachment; filename="${fileMetadata.data.name}"`, + }, + }); + + try { + await upload.done(); + console.log(`Successfully uploaded ${s3Key} to ${BUCKET_NAME}`); + } catch (error) { + console.error('Error uploading to S3:', error); + throw error; + } + } + private async downloadFile(drive: any, fileId: string): Promise { + const response = await drive.files.get( + { fileId, alt: 'media' }, + { responseType: 'arraybuffer' }, + ); + return Buffer.from(response.data); + } + + private async processSpreadsheet( + drive: any, + fileId: string, + mimeType: string, + ): Promise { + const fileContent = await this.downloadFile(drive, fileId); + let result = ''; + + if (mimeType === 'text/csv') { + const content = fileContent.toString('utf-8'); + const lines = content.split('\n').filter((line) => line.trim() !== ''); + + if (lines.length === 0) { + return 'Empty CSV file'; + } + + // Detect separator + const possibleSeparators = [',', ';', '\t', '|']; + const firstLine = lines[0]; + const separator = + possibleSeparators.find((sep) => firstLine.includes(sep)) || ','; + + // Extract headers and determine the number of columns + const headerMatch = firstLine.match(/^(.*?):(.*)/); + const headers = headerMatch + ? headerMatch[2].split(separator).map((h) => h.trim()) + : firstLine.split(separator).map((h) => h.trim()); + const columnCount = headers.length; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const dataMatch = line.match(/^(.*?):(.*)/); + const values = dataMatch + ? dataMatch[2].split(separator).map((v) => v.trim()) + : line.split(separator).map((v) => v.trim()); + + if (values.length === columnCount) { + for (let j = 0; j < columnCount; j++) { + result += `${headers[j]}: ${values[j]}\n`; + } + result += '\n'; + } + } + } else if ( + mimeType === + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + ) { + const workbook = XLSX.read(fileContent, { type: 'buffer' }); + workbook.SheetNames.forEach((sheetName) => { + const sheet = workbook.Sheets[sheetName]; + const data = XLSX.utils.sheet_to_json(sheet, { header: 1 }) as any[][]; + const headers = data[0] as string[]; + for (let i = 1; i < data.length; i++) { + const row = data[i] as any[]; + for (let j = 0; j < row.length; j++) { + result += `${headers[j]}: ${row[j]}\n`; + } + result += '\n'; + } + }); + } else { + throw new Error(`Unsupported spreadsheet type: ${mimeType}`); + } + + return result; + } + private async processTextContent( + drive: any, + fileId: string, + mimeType: string, + ): Promise { + const fileContent = await this.downloadFile(drive, fileId); + if ( + mimeType === + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' + ) { + const result = await mammoth.extractRawText({ buffer: fileContent }); + return result.value; + } else if (mimeType === 'text/markdown') { + return marked.parse(fileContent.toString()); + } else { + // For other text-based formats, we'll assume they're already in plain text + return fileContent.toString(); + } + } + private async processJsonContent( + drive: any, + fileId: string, + ): Promise { + const fileContent = await this.downloadFile(drive, fileId); + const jsonContent = JSON.parse(fileContent.toString()); + + function flattenObject(obj: any, prefix = ''): { [key: string]: any } { + return Object.keys(obj).reduce( + (acc: { [key: string]: any }, k: string) => { + const pre = prefix.length ? prefix + '.' : ''; + if ( + typeof obj[k] === 'object' && + obj[k] !== null && + !Array.isArray(obj[k]) + ) { + Object.assign(acc, flattenObject(obj[k], pre + k)); + } else if (Array.isArray(obj[k])) { + obj[k].forEach((item: any, index: number) => { + if (typeof item === 'object' && item !== null) { + Object.assign(acc, flattenObject(item, `${pre}${k}[${index}]`)); + } else { + acc[`${pre}${k}[${index}]`] = item; + } + }); + } else { + acc[pre + k] = obj[k]; + } + return acc; + }, + {}, + ); + } + + const flattened = flattenObject(jsonContent); + return Object.entries(flattened) + .map(([key, value]) => `${key}: ${value}`) + .join('\n'); + } +} diff --git a/packages/api/src/filestorage/file/services/googledrive/mappers.ts b/packages/api/src/filestorage/file/services/googledrive/mappers.ts new file mode 100644 index 000000000..7e1bcbe75 --- /dev/null +++ b/packages/api/src/filestorage/file/services/googledrive/mappers.ts @@ -0,0 +1,101 @@ +import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; +import { CoreUnification } from '@@core/@core-services/unification/core-unification.service'; +import { Utils } from '@filestorage/@lib/@utils'; +import { IFileMapper } from '@filestorage/file/types'; +import { + UnifiedFilestorageFileInput, + UnifiedFilestorageFileOutput, +} from '@filestorage/file/types/model.unified'; +import { Injectable } from '@nestjs/common'; +import { GoogleDriveFileInput, GoogleDriveFileOutput } from './types'; + +@Injectable() +export class GoogleDriveFileMapper implements IFileMapper { + constructor( + private mappersRegistry: MappersRegistry, + private utils: Utils, + private coreUnificationService: CoreUnification, + ) { + this.mappersRegistry.registerService( + 'filestorage', + 'file', + 'googledrive', + this, + ); + } + + async desunify( + source: UnifiedFilestorageFileInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + return { + name: source.name, + mimeType: source.mime_type, + parents: source.folder_id ? [source.folder_id] : undefined, + }; + } + + async unify( + source: GoogleDriveFileOutput | GoogleDriveFileOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + if (!Array.isArray(source)) { + return await this.mapSingleFileToUnified( + source, + connectionId, + customFieldMappings, + ); + } + return Promise.all( + source.map((file) => + this.mapSingleFileToUnified(file, connectionId, customFieldMappings), + ), + ); + } + + private async mapSingleFileToUnified( + file: GoogleDriveFileOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = file[mapping.remote_id]; + } + } + const opts: any = {}; + if (file.parents && file.parents.length > 0) { + const folder_id = await this.utils.getFolderIdFromRemote( + file.parents[0], + connectionId, + ); + opts.folder_id = folder_id; + } + + return { + remote_id: file.id, + remote_data: file, + name: file.name, + file_url: file.webViewLink || file.webContentLink || null, + mime_type: file.mimeType || null, + size: file.size || null, + permission: null, + shared_link: null, + ...opts, + field_mappings, + created_at: file.createdTime ? new Date(file.createdTime) : null, + modified_at: file.modifiedTime ? new Date(file.modifiedTime) : null, + }; + } +} diff --git a/packages/api/src/filestorage/file/services/googledrive/types.ts b/packages/api/src/filestorage/file/services/googledrive/types.ts new file mode 100644 index 000000000..de9d5e522 --- /dev/null +++ b/packages/api/src/filestorage/file/services/googledrive/types.ts @@ -0,0 +1,112 @@ +export interface GoogleDriveFileInput { + name: string; + mimeType?: string; + parents?: string[]; +} + +export interface GoogleDriveFileOutput { + kind?: string; + id: string; + name: string; + mimeType: string; + description?: string; + starred?: boolean; + trashed?: boolean; + explicitlyTrashed?: boolean; + parents?: string[]; + properties?: { [key: string]: string }; + appProperties?: { [key: string]: string }; + spaces?: string[]; + version?: string; + webContentLink?: string; + webViewLink?: string; + iconLink?: string; + thumbnailLink?: string; + viewedByMe?: boolean; + viewedByMeTime?: string; + createdTime?: string; + modifiedTime?: string; + modifiedByMeTime?: string; + sharedWithMeTime?: string; + sharingUser?: any; + owners?: any[]; + teamDriveId?: string; + driveId?: string; + lastModifyingUser?: any; + shared?: boolean; + ownedByMe?: boolean; + capabilities?: { + canEdit?: boolean; + canComment?: boolean; + canShare?: boolean; + canCopy?: boolean; + canDownload?: boolean; + canListChildren?: boolean; + canAddChildren?: boolean; + canRemoveChildren?: boolean; + canDelete?: boolean; + canRename?: boolean; + canTrash?: boolean; + canUntrash?: boolean; + canMoveItemWithinDrive?: boolean; + canMoveItemOutOfDrive?: boolean; + canAddFolderFromAnotherDrive?: boolean; + canMoveItemIntoTeamDrive?: boolean; + canMoveItemOutOfTeamDrive?: boolean; + canModifyContent?: boolean; + canModifyContentRestriction?: boolean; + canReadRevisions?: boolean; + canChangeCopyRequiresWriterPermission?: boolean; + canModifyLabels?: boolean; + [key: string]: boolean | undefined; + }; + viewersCanCopyContent?: boolean; + writersCanShare?: boolean; + permissions?: any[]; + permissionIds?: string[]; + hasAugmentedPermissions?: boolean; + folderColorRgb?: string; + originalFilename?: string; + fullFileExtension?: string; + fileExtension?: string; + md5Checksum?: string; + size?: string; + quotaBytesUsed?: string; + headRevisionId?: string; + contentHints?: { + thumbnail?: { + image?: string; + mimeType?: string; + }; + indexableText?: string; + }; + imageMediaMetadata?: { + width?: number; + height?: number; + rotation?: number; + // Add other image metadata fields as needed + }; + videoMediaMetadata?: { + width?: number; + height?: number; + durationMillis?: string; + }; + isAppAuthorized?: boolean; + exportLinks?: { [key: string]: string }; + shortcutDetails?: { + targetId?: string; + targetMimeType?: string; + targetResourceKey?: string; + }; + contentRestrictions?: any[]; + resourceKey?: string; + linkShareMetadata?: { + securityUpdateEligible?: boolean; + securityUpdateEnabled?: boolean; + }; + labelInfo?: { + labels?: any[]; + }; + sha1Checksum?: string; + sha256Checksum?: string; +} diff --git a/packages/api/src/filestorage/file/sync/sync.service.ts b/packages/api/src/filestorage/file/sync/sync.service.ts index 519c046f6..7c5e21b04 100644 --- a/packages/api/src/filestorage/file/sync/sync.service.ts +++ b/packages/api/src/filestorage/file/sync/sync.service.ts @@ -6,9 +6,10 @@ import { CoreUnification } from '@@core/@core-services/unification/core-unificat import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; import { FieldMappingService } from '@@core/field-mapping/field-mapping.service'; -import { ApiResponse } from '@@core/utils/types'; import { IBaseSync, SyncLinkedUserType } from '@@core/utils/types/interface'; import { OriginalFileOutput } from '@@core/utils/types/original/original.file-storage'; +import { UnifiedFilestoragePermissionOutput } from '@filestorage/permission/types/model.unified'; +import { UnifiedFilestorageSharedlinkOutput } from '@filestorage/sharedlink/types/model.unified'; import { Injectable, OnModuleInit } from '@nestjs/common'; import { Cron } from '@nestjs/schedule'; import { FILESTORAGE_PROVIDERS } from '@panora/shared'; @@ -17,8 +18,6 @@ import { v4 as uuidv4 } from 'uuid'; import { ServiceRegistry } from '../services/registry.service'; import { IFileService } from '../types'; import { UnifiedFilestorageFileOutput } from '../types/model.unified'; -import { UnifiedFilestorageSharedlinkOutput } from '@filestorage/sharedlink/types/model.unified'; -import { UnifiedFilestoragePermissionOutput } from '@filestorage/permission/types/model.unified'; @Injectable() export class SyncService implements OnModuleInit, IBaseSync { @@ -37,7 +36,7 @@ export class SyncService implements OnModuleInit, IBaseSync { this.registry.registerService('filestorage', 'file', this); } onModuleInit() { -// + // } @Cron('0 */8 * * *') // every 8 hours diff --git a/packages/api/src/filestorage/file/types/index.ts b/packages/api/src/filestorage/file/types/index.ts index 99d8ecc9b..89f35318f 100644 --- a/packages/api/src/filestorage/file/types/index.ts +++ b/packages/api/src/filestorage/file/types/index.ts @@ -1,15 +1,25 @@ import { DesunifyReturnType } from '@@core/utils/types/desunify.input'; -import { UnifiedFilestorageFileInput, UnifiedFilestorageFileOutput } from './model.unified'; +import { + UnifiedFilestorageFileInput, + UnifiedFilestorageFileOutput, +} from './model.unified'; import { OriginalFileOutput } from '@@core/utils/types/original/original.file-storage'; import { ApiResponse } from '@@core/utils/types'; import { IBaseObjectService, SyncParam } from '@@core/utils/types/interface'; - +import { S3Client } from '@aws-sdk/client-s3'; export interface IFileService extends IBaseObjectService { addFile?( fileData: DesunifyReturnType, linkedUserId: string, ): Promise>; + streamFileToS3?( + file_id: string, + linkedUserId: string, + s3Client: S3Client, + s3Key: string, + ): Promise; + sync(data: SyncParam): Promise>; } diff --git a/packages/api/src/filestorage/folder/folder.module.ts b/packages/api/src/filestorage/folder/folder.module.ts index 38cea27e1..2777cf9a4 100644 --- a/packages/api/src/filestorage/folder/folder.module.ts +++ b/packages/api/src/filestorage/folder/folder.module.ts @@ -1,6 +1,3 @@ -import { OnedriveFolderMapper } from './services/onedrive/mappers'; -import { OnedriveService } from './services/onedrive'; -import { BullQueueModule } from '@@core/@core-services/queues/queue.module'; import { CoreUnification } from '@@core/@core-services/unification/core-unification.service'; import { IngestDataService } from '@@core/@core-services/unification/ingest-data.service'; import { WebhookService } from '@@core/@core-services/webhooks/panora-webhooks/webhook.service'; @@ -10,6 +7,10 @@ import { FolderController } from './folder.controller'; import { BoxService } from './services/box'; import { BoxFolderMapper } from './services/box/mappers'; import { FolderService } from './services/folder.service'; +import { GoogleDriveFolderService } from './services/googledrive'; +import { GoogleDriveFolderMapper } from './services/googledrive/mappers'; +import { OnedriveService } from './services/onedrive'; +import { OnedriveFolderMapper } from './services/onedrive/mappers'; import { ServiceRegistry } from './services/registry.service'; import { SyncService } from './sync/sync.service'; @@ -22,12 +23,14 @@ import { SyncService } from './sync/sync.service'; WebhookService, ServiceRegistry, IngestDataService, - BoxFolderMapper, Utils, + BoxFolderMapper, + OnedriveFolderMapper, + GoogleDriveFolderMapper, /* PROVIDERS SERVICES */ BoxService, OnedriveService, - OnedriveFolderMapper, + GoogleDriveFolderService, ], exports: [SyncService], }) diff --git a/packages/api/src/filestorage/folder/services/googledrive/index.ts b/packages/api/src/filestorage/folder/services/googledrive/index.ts new file mode 100644 index 000000000..a029f1047 --- /dev/null +++ b/packages/api/src/filestorage/folder/services/googledrive/index.ts @@ -0,0 +1,142 @@ +import { EncryptionService } from '@@core/@core-services/encryption/encryption.service'; +import { LoggerService } from '@@core/@core-services/logger/logger.service'; +import { PrismaService } from '@@core/@core-services/prisma/prisma.service'; +import { ApiResponse } from '@@core/utils/types'; +import { SyncParam } from '@@core/utils/types/interface'; +import { FileStorageObject } from '@filestorage/@lib/@types'; +import { IFolderService } from '@filestorage/folder/types'; +import { Injectable } from '@nestjs/common'; +import { OAuth2Client } from 'google-auth-library'; +import { google } from 'googleapis'; +import { ServiceRegistry } from '../registry.service'; +import { GoogleDriveFolderInput, GoogleDriveFolderOutput } from './types'; + +@Injectable() +export class GoogleDriveFolderService implements IFolderService { + constructor( + private prisma: PrismaService, + private logger: LoggerService, + private cryptoService: EncryptionService, + private registry: ServiceRegistry, + ) { + this.logger.setContext( + `${FileStorageObject.folder.toUpperCase()}:${ + GoogleDriveFolderService.name + }`, + ); + this.registry.registerService('googledrive', this); + } + + async addFolder( + folderData: GoogleDriveFolderInput, + linkedUserId: string, + ): Promise> { + try { + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'googledrive', + vertical: 'filestorage', + }, + }); + + if (!connection) { + return { + data: null, + message: 'Connection not found', + statusCode: 404, + }; + } + + const auth = new OAuth2Client(); + auth.setCredentials({ + access_token: this.cryptoService.decrypt(connection.access_token), + }); + const drive = google.drive({ version: 'v3', auth }); + + const fileMetadata = { + name: folderData.name, + mimeType: 'application/vnd.google-apps.folder', + parents: folderData.parents, + }; + const response = await drive.files.create({ + requestBody: fileMetadata, + fields: 'id, name, mimeType, createdTime, modifiedTime, parents', + }); + + const createdFolder: GoogleDriveFolderOutput = { + id: response.data.id!, + name: response.data.name!, + mimeType: response.data.mimeType!, + createdTime: response.data.createdTime!, + modifiedTime: response.data.modifiedTime!, + parents: response.data.parents, + }; + + return { + data: createdFolder, + message: 'Google Drive folder created', + statusCode: 201, + }; + } catch (error) { + this.logger.error('Error creating Google Drive folder', error); + throw error; + } + } + + async sync(data: SyncParam): Promise> { + try { + const { linkedUserId } = data; + + const connection = await this.prisma.connections.findFirst({ + where: { + id_linked_user: linkedUserId, + provider_slug: 'googledrive', + vertical: 'filestorage', + }, + }); + + if (!connection) { + return { + data: [], + message: 'Connection not found', + statusCode: 404, + }; + } + + const auth = new OAuth2Client(); + auth.setCredentials({ + access_token: this.cryptoService.decrypt(connection.access_token), + }); + const drive = google.drive({ version: 'v3', auth }); + + const response = await drive.files.list({ + q: "mimeType = 'application/vnd.google-apps.folder' and trashed = false", + fields: 'files(id, name, mimeType, createdTime, modifiedTime, parents)', + pageSize: 1000, // Adjust as needed + }); + + const folders: GoogleDriveFolderOutput[] = response.data.files.map( + (folder) => ({ + id: folder.id!, + name: folder.name!, + mimeType: folder.mimeType!, + createdTime: folder.createdTime!, + modifiedTime: folder.modifiedTime!, + parents: folder.parents, + }), + ); + + this.logger.log(`Synced Google Drive folders!`); + + return { + data: folders, + message: 'Google Drive folders retrieved', + statusCode: 200, + }; + } catch (error) { + this.logger.error('Error syncing Google Drive folders', error); + throw error; + } + } +} diff --git a/packages/api/src/filestorage/folder/services/googledrive/mappers.ts b/packages/api/src/filestorage/folder/services/googledrive/mappers.ts new file mode 100644 index 000000000..2d4caa6ff --- /dev/null +++ b/packages/api/src/filestorage/folder/services/googledrive/mappers.ts @@ -0,0 +1,101 @@ +import { MappersRegistry } from '@@core/@core-services/registries/mappers.registry'; +import { CoreUnification } from '@@core/@core-services/unification/core-unification.service'; +import { Utils } from '@filestorage/@lib/@utils'; +import { IFolderMapper } from '@filestorage/folder/types'; +import { + UnifiedFilestorageFolderInput, + UnifiedFilestorageFolderOutput, +} from '@filestorage/folder/types/model.unified'; +import { Injectable } from '@nestjs/common'; +import { GoogleDriveFolderInput, GoogleDriveFolderOutput } from './types'; + +@Injectable() +export class GoogleDriveFolderMapper implements IFolderMapper { + constructor( + private mappersRegistry: MappersRegistry, + private utils: Utils, + private coreUnificationService: CoreUnification, + ) { + this.mappersRegistry.registerService( + 'filestorage', + 'folder', + 'googledrive', + this, + ); + } + + async desunify( + source: UnifiedFilestorageFolderInput, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + return { + name: source.name, + mimeType: 'application/vnd.google-apps.folder', + parents: source.parent_folder_id ? [source.parent_folder_id] : undefined, + }; + } + + async unify( + source: GoogleDriveFolderOutput | GoogleDriveFolderOutput[], + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise< + UnifiedFilestorageFolderOutput | UnifiedFilestorageFolderOutput[] + > { + if (!Array.isArray(source)) { + return await this.mapSingleFolderToUnified( + source, + connectionId, + customFieldMappings, + ); + } + return Promise.all( + source.map((folder) => + this.mapSingleFolderToUnified( + folder, + connectionId, + customFieldMappings, + ), + ), + ); + } + + private async mapSingleFolderToUnified( + folder: GoogleDriveFolderOutput, + connectionId: string, + customFieldMappings?: { + slug: string; + remote_id: string; + }[], + ): Promise { + const field_mappings: { [key: string]: any } = {}; + if (customFieldMappings) { + for (const mapping of customFieldMappings) { + field_mappings[mapping.slug] = + folder[mapping.remote_id as keyof GoogleDriveFolderOutput]; + } + } + const opts: any = {}; + if (folder.parents && folder.parents.length > 0) { + const folder_id = await this.utils.getFolderIdFromRemote( + folder.parents[0], + connectionId, + ); + opts.folder_id = folder_id; + } + + return { + remote_id: folder.id, + remote_data: folder, + name: folder.name, + ...opts, + field_mappings, + }; + } +} diff --git a/packages/api/src/filestorage/folder/services/googledrive/types.ts b/packages/api/src/filestorage/folder/services/googledrive/types.ts new file mode 100644 index 000000000..37da27973 --- /dev/null +++ b/packages/api/src/filestorage/folder/services/googledrive/types.ts @@ -0,0 +1,37 @@ +export interface GoogleDriveFolderInput { + name: string; + mimeType: string; + parents?: string[]; +} + +export interface GoogleDriveFolderOutput { + id: string; + name: string; + mimeType: string; + createdTime: string; + modifiedTime: string; + parents?: string[]; + webViewLink?: string; + webContentLink?: string; + iconLink?: string; + hasThumbnail?: boolean; + thumbnailLink?: string; + shared?: boolean; + ownedByMe?: boolean; + capabilities?: { + canEdit?: boolean; + canShare?: boolean; + canDelete?: boolean; + canAddChildren?: boolean; + canRemoveChildren?: boolean; + canRename?: boolean; + canMoveItemWithinDrive?: boolean; + canMoveItemOutOfDrive?: boolean; + canTrash?: boolean; + canUntrash?: boolean; + }; + permissions?: any[]; // You can define a more specific type if needed + trashed?: boolean; + explicitlyTrashed?: boolean; + spaces?: string[]; +} diff --git a/packages/api/src/ticketing/@lib/@utils/index.ts b/packages/api/src/ticketing/@lib/@utils/index.ts index 7dc10a419..07568db3f 100644 --- a/packages/api/src/ticketing/@lib/@utils/index.ts +++ b/packages/api/src/ticketing/@lib/@utils/index.ts @@ -5,7 +5,7 @@ import * as fs from 'fs'; @Injectable() export class Utils { - constructor(private readonly prisma: PrismaService) { } + constructor(private readonly prisma: PrismaService) {} async fetchFileStreamFromURL(file_url: string) { return fs.createReadStream(file_url); @@ -251,4 +251,18 @@ export class Utils { throw error; } } + + getFileExtensionFromMimeType(mimeType: string): string | undefined { + try { + const normalizedMimeType = mimeType.toLowerCase(); + for (const [extension, mime] of Object.entries(MIME_TYPES)) { + if (mime.toLowerCase() === normalizedMimeType) { + return extension; + } + } + return undefined; + } catch (error) { + throw error; + } + } } diff --git a/packages/api/swagger/swagger-spec.yaml b/packages/api/swagger/swagger-spec.yaml index 1125f0b09..a1cf598e5 100644 --- a/packages/api/swagger/swagger-spec.yaml +++ b/packages/api/swagger/swagger-spec.yaml @@ -25,6 +25,143 @@ paths: schema: type: number example: 200 + /rag/query: + post: + operationId: RagController_queryEmbeddings + parameters: [] + responses: + '201': + description: '' + content: + application/json: + schema: + type: object + x-speakeasy-group: rag.query + /filestorage/files: + get: + operationId: listFilestorageFile + summary: List Files + parameters: + - name: x-connection-token + required: true + in: header + description: The connection token + schema: + type: string + - name: remote_data + required: false + in: query + example: true + description: Set to true to include data from the original software. + schema: + type: boolean + - name: limit + required: false + in: query + example: 10 + description: Set to get the number of records. + schema: + default: 50 + type: number + - name: cursor + required: false + in: query + example: 1b8b05bb-5273-4012-b520-8657b0b90874 + description: Set to get the number of records after this cursor. + schema: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/PaginatedDto' + - properties: + data: + type: array + items: + $ref: '#/components/schemas/UnifiedFilestorageFileOutput' + tags: &ref_0 + - filestorage/files + x-speakeasy-group: filestorage.files + x-speakeasy-pagination: + type: cursor + inputs: + - name: cursor + in: parameters + type: cursor + outputs: + nextCursor: $.next_cursor + post: + operationId: createFilestorageFile + summary: Create Files + description: Create Files in any supported Filestorage software + parameters: + - name: x-connection-token + required: true + in: header + description: The connection token + schema: + type: string + - name: remote_data + required: false + in: query + example: false + description: Set to true to include data from the original Accounting software. + schema: + type: boolean + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UnifiedFilestorageFileInput' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UnifiedFilestorageFileOutput' + tags: *ref_0 + x-speakeasy-group: filestorage.files + /filestorage/files/{id}: + get: + operationId: retrieveFilestorageFile + summary: Retrieve Files + description: Retrieve Files from any connected Filestorage software + parameters: + - name: x-connection-token + required: true + in: header + description: The connection token + schema: + type: string + - name: id + required: true + in: path + description: id of the file you want to retrieve. + example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f + schema: + type: string + - name: remote_data + required: false + in: query + description: Set to true to include data from the original File Storage software. + example: false + schema: + type: boolean + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/UnifiedFilestorageFileOutput' + tags: *ref_0 + x-speakeasy-group: filestorage.files /auth/login: post: operationId: signIn @@ -72,7 +209,7 @@ paths: type: array items: $ref: '#/components/schemas/WebhookResponse' - tags: &ref_0 + tags: &ref_1 - webhooks x-speakeasy-group: webhooks post: @@ -92,7 +229,7 @@ paths: application/json: schema: $ref: '#/components/schemas/WebhookResponse' - tags: *ref_0 + tags: *ref_1 x-speakeasy-group: webhooks /webhooks/{id}: delete: @@ -115,7 +252,7 @@ paths: application/json: schema: $ref: '#/components/schemas/WebhookResponse' - tags: *ref_0 + tags: *ref_1 x-speakeasy-group: webhooks put: operationId: updateStatus @@ -137,7 +274,7 @@ paths: application/json: schema: $ref: '#/components/schemas/WebhookResponse' - tags: *ref_0 + tags: *ref_1 x-speakeasy-group: webhooks /webhooks/verifyEvent: post: @@ -159,7 +296,7 @@ paths: type: object additionalProperties: true description: Dynamic event payload - tags: *ref_0 + tags: *ref_1 x-speakeasy-group: webhooks /ticketing/tickets: get: @@ -207,7 +344,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingTicketOutput' - tags: &ref_1 + tags: &ref_2 - ticketing/tickets x-speakeasy-group: ticketing.tickets x-speakeasy-pagination: @@ -249,7 +386,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedTicketingTicketOutput' - tags: *ref_1 + tags: *ref_2 x-speakeasy-group: ticketing.tickets /ticketing/tickets/{id}: get: @@ -284,7 +421,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedTicketingTicketOutput' - tags: *ref_1 + tags: *ref_2 x-speakeasy-group: ticketing.tickets /ticketing/users: get: @@ -332,7 +469,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingUserOutput' - tags: &ref_2 + tags: &ref_3 - ticketing/users x-speakeasy-group: ticketing.users x-speakeasy-pagination: @@ -376,7 +513,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedTicketingUserOutput' - tags: *ref_2 + tags: *ref_3 x-speakeasy-group: ticketing.users /ticketing/accounts: get: @@ -424,7 +561,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingAccountOutput' - tags: &ref_3 + tags: &ref_4 - ticketing/accounts x-speakeasy-group: ticketing.accounts x-speakeasy-pagination: @@ -466,7 +603,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedTicketingAccountOutput' - tags: *ref_3 + tags: *ref_4 x-speakeasy-group: ticketing.accounts /ticketing/contacts: get: @@ -514,7 +651,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingContactOutput' - tags: &ref_4 + tags: &ref_5 - ticketing/contacts x-speakeasy-group: ticketing.contacts x-speakeasy-pagination: @@ -562,7 +699,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingContactOutput' - tags: *ref_4 + tags: *ref_5 x-speakeasy-group: ticketing.contacts /sync/status/{vertical}: get: @@ -587,7 +724,7 @@ paths: responses: '200': description: '' - tags: &ref_5 + tags: &ref_6 - sync x-speakeasy-group: sync /sync/resync: @@ -602,7 +739,7 @@ paths: application/json: schema: $ref: '#/components/schemas/ResyncStatusDto' - tags: *ref_5 + tags: *ref_6 x-speakeasy-group: sync /sync/pull-frequencies: post: @@ -624,7 +761,7 @@ paths: application/json: schema: type: object - tags: *ref_5 + tags: *ref_6 x-speakeasy-group: sync get: operationId: getPullFrequency @@ -637,7 +774,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UpdatePullFrequencyDto' - tags: *ref_5 + tags: *ref_6 x-speakeasy-group: sync /crm/companies: get: @@ -685,7 +822,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedCrmCompanyOutput' - tags: &ref_6 + tags: &ref_7 - crm/companies x-speakeasy-group: crm.companies x-speakeasy-pagination: @@ -727,7 +864,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmCompanyOutput' - tags: *ref_6 + tags: *ref_7 x-speakeasy-group: crm.companies /crm/companies/{id}: get: @@ -762,7 +899,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmCompanyOutput' - tags: *ref_6 + tags: *ref_7 x-speakeasy-group: crm.companies /crm/contacts: get: @@ -810,7 +947,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedCrmContactOutput' - tags: &ref_7 + tags: &ref_8 - crm/contacts x-speakeasy-group: crm.contacts x-speakeasy-pagination: @@ -852,7 +989,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmContactOutput' - tags: *ref_7 + tags: *ref_8 x-speakeasy-group: crm.contacts /crm/contacts/{id}: get: @@ -887,7 +1024,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmContactOutput' - tags: *ref_7 + tags: *ref_8 x-speakeasy-group: crm.contacts /crm/deals: get: @@ -935,7 +1072,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedCrmDealOutput' - tags: &ref_8 + tags: &ref_9 - crm/deals x-speakeasy-group: crm.deals x-speakeasy-pagination: @@ -976,7 +1113,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmDealOutput' - tags: *ref_8 + tags: *ref_9 x-speakeasy-group: crm.deals /crm/deals/{id}: get: @@ -1011,7 +1148,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmDealOutput' - tags: *ref_8 + tags: *ref_9 x-speakeasy-group: crm.deals /crm/engagements: get: @@ -1059,7 +1196,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedCrmEngagementOutput' - tags: &ref_9 + tags: &ref_10 - crm/engagements x-speakeasy-group: crm.engagements x-speakeasy-pagination: @@ -1101,7 +1238,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmEngagementOutput' - tags: *ref_9 + tags: *ref_10 x-speakeasy-group: crm.engagements /crm/engagements/{id}: get: @@ -1136,7 +1273,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmEngagementOutput' - tags: *ref_9 + tags: *ref_10 x-speakeasy-group: crm.engagements /crm/notes: get: @@ -1184,7 +1321,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedCrmNoteOutput' - tags: &ref_10 + tags: &ref_11 - crm/notes x-speakeasy-group: crm.notes x-speakeasy-pagination: @@ -1226,7 +1363,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmNoteOutput' - tags: *ref_10 + tags: *ref_11 x-speakeasy-group: crm.notes /crm/notes/{id}: get: @@ -1261,7 +1398,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmNoteOutput' - tags: *ref_10 + tags: *ref_11 x-speakeasy-group: crm.notes /crm/stages: get: @@ -1309,7 +1446,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedCrmStageOutput' - tags: &ref_11 + tags: &ref_12 - crm/stages x-speakeasy-group: crm.stages x-speakeasy-pagination: @@ -1353,7 +1490,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmStageOutput' - tags: *ref_11 + tags: *ref_12 x-speakeasy-group: crm.stages /crm/tasks: get: @@ -1401,7 +1538,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedCrmTaskOutput' - tags: &ref_12 + tags: &ref_13 - crm/tasks x-speakeasy-group: crm.tasks x-speakeasy-pagination: @@ -1442,7 +1579,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmTaskOutput' - tags: *ref_12 + tags: *ref_13 x-speakeasy-group: crm.tasks /crm/tasks/{id}: get: @@ -1477,7 +1614,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmTaskOutput' - tags: *ref_12 + tags: *ref_13 x-speakeasy-group: crm.tasks /crm/users: get: @@ -1525,7 +1662,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedCrmUserOutput' - tags: &ref_13 + tags: &ref_14 - crm/users x-speakeasy-group: crm.users x-speakeasy-pagination: @@ -1569,7 +1706,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedCrmUserOutput' - tags: *ref_13 + tags: *ref_14 x-speakeasy-group: crm.users /ticketing/collections: get: @@ -1618,7 +1755,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedTicketingCollectionOutput - tags: &ref_14 + tags: &ref_15 - ticketing/collections x-speakeasy-group: ticketing.collections x-speakeasy-pagination: @@ -1662,7 +1799,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedTicketingCollectionOutput' - tags: *ref_14 + tags: *ref_15 x-speakeasy-group: ticketing.collections /ticketing/comments: get: @@ -1710,7 +1847,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingCommentOutput' - tags: &ref_15 + tags: &ref_16 - ticketing/comments x-speakeasy-group: ticketing.comments x-speakeasy-pagination: @@ -1751,7 +1888,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedTicketingCommentOutput' - tags: *ref_15 + tags: *ref_16 x-speakeasy-group: ticketing.comments /ticketing/comments/{id}: get: @@ -1790,7 +1927,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingCommentOutput' - tags: *ref_15 + tags: *ref_16 x-speakeasy-group: ticketing.comments /ticketing/tags: get: @@ -1838,7 +1975,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingTagOutput' - tags: &ref_16 + tags: &ref_17 - ticketing/tags x-speakeasy-group: ticketing.tags x-speakeasy-pagination: @@ -1882,7 +2019,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedTicketingTagOutput' - tags: *ref_16 + tags: *ref_17 x-speakeasy-group: ticketing.tags /ticketing/teams: get: @@ -1930,7 +2067,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedTicketingTeamOutput' - tags: &ref_17 + tags: &ref_18 - ticketing/teams x-speakeasy-group: ticketing.teams x-speakeasy-pagination: @@ -1974,7 +2111,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedTicketingTeamOutput' - tags: *ref_17 + tags: *ref_18 x-speakeasy-group: ticketing.teams /linked_users: post: @@ -1994,7 +2131,7 @@ paths: application/json: schema: $ref: '#/components/schemas/LinkedUserResponse' - tags: &ref_18 + tags: &ref_19 - linkedUsers x-speakeasy-group: linkedUsers get: @@ -2010,7 +2147,7 @@ paths: type: array items: $ref: '#/components/schemas/LinkedUserResponse' - tags: *ref_18 + tags: *ref_19 x-speakeasy-group: linkedUsers /linked_users/batch: post: @@ -2032,7 +2169,7 @@ paths: type: array items: $ref: '#/components/schemas/LinkedUserResponse' - tags: *ref_18 + tags: *ref_19 x-speakeasy-group: linkedUsers /linked_users/{id}: get: @@ -2052,7 +2189,7 @@ paths: application/json: schema: $ref: '#/components/schemas/LinkedUserResponse' - tags: *ref_18 + tags: *ref_19 x-speakeasy-group: linkedUsers /linked_users/fromRemoteId: get: @@ -2072,7 +2209,7 @@ paths: application/json: schema: $ref: '#/components/schemas/LinkedUserResponse' - tags: *ref_18 + tags: *ref_19 x-speakeasy-group: linkedUsers /projects: get: @@ -2088,7 +2225,7 @@ paths: type: array items: $ref: '#/components/schemas/ProjectResponse' - tags: &ref_19 + tags: &ref_20 - projects post: operationId: createProject @@ -2107,7 +2244,7 @@ paths: application/json: schema: $ref: '#/components/schemas/ProjectResponse' - tags: *ref_19 + tags: *ref_20 /field_mappings/values: get: operationId: getFieldMappingValues @@ -2116,7 +2253,7 @@ paths: responses: '200': description: '' - tags: &ref_20 + tags: &ref_21 - fieldMappings x-speakeasy-group: fieldMappings /field_mappings/entities: @@ -2127,7 +2264,7 @@ paths: responses: '200': description: '' - tags: *ref_20 + tags: *ref_21 x-speakeasy-group: fieldMappings /field_mappings/attributes: get: @@ -2137,7 +2274,7 @@ paths: responses: '200': description: '' - tags: *ref_20 + tags: *ref_21 x-speakeasy-group: fieldMappings /field_mappings/define: post: @@ -2157,7 +2294,7 @@ paths: application/json: schema: $ref: '#/components/schemas/CustomFieldResponse' - tags: *ref_20 + tags: *ref_21 x-speakeasy-group: fieldMappings /field_mappings: post: @@ -2177,7 +2314,7 @@ paths: application/json: schema: $ref: '#/components/schemas/CustomFieldResponse' - tags: *ref_20 + tags: *ref_21 x-speakeasy-group: fieldMappings /field_mappings/map: post: @@ -2197,7 +2334,7 @@ paths: application/json: schema: $ref: '#/components/schemas/CustomFieldResponse' - tags: *ref_20 + tags: *ref_21 x-speakeasy-group: fieldMappings /events: get: @@ -2258,7 +2395,7 @@ paths: application/json: schema: type: object - tags: &ref_21 + tags: &ref_22 - passthrough x-speakeasy-group: passthrough /passthrough/{retryId}: @@ -2277,7 +2414,7 @@ paths: responses: '200': description: '' - tags: *ref_21 + tags: *ref_22 x-speakeasy-group: passthrough.{retryid} /hris/bankinfos: get: @@ -2325,7 +2462,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisBankinfoOutput' - tags: &ref_22 + tags: &ref_23 - hris/bankinfos x-speakeasy-group: hris.bankinfos x-speakeasy-pagination: @@ -2369,7 +2506,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisBankinfoOutput' - tags: *ref_22 + tags: *ref_23 x-speakeasy-group: hris.bankinfos /hris/benefits: get: @@ -2417,7 +2554,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisBenefitOutput' - tags: &ref_23 + tags: &ref_24 - hris/benefits x-speakeasy-group: hris.benefits x-speakeasy-pagination: @@ -2461,7 +2598,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisBenefitOutput' - tags: *ref_23 + tags: *ref_24 x-speakeasy-group: hris.benefits /hris/companies: get: @@ -2509,7 +2646,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisCompanyOutput' - tags: &ref_24 + tags: &ref_25 - hris/companies x-speakeasy-group: hris.companies x-speakeasy-pagination: @@ -2553,7 +2690,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisCompanyOutput' - tags: *ref_24 + tags: *ref_25 x-speakeasy-group: hris.companies /hris/dependents: get: @@ -2601,7 +2738,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisDependentOutput' - tags: &ref_25 + tags: &ref_26 - hris/dependents x-speakeasy-group: hris.dependents x-speakeasy-pagination: @@ -2645,7 +2782,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisDependentOutput' - tags: *ref_25 + tags: *ref_26 x-speakeasy-group: hris.dependents /hris/employeepayrollruns: get: @@ -2694,7 +2831,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedHrisEmployeepayrollrunOutput - tags: &ref_26 + tags: &ref_27 - hris/employeepayrollruns x-speakeasy-group: hris.employeepayrollruns x-speakeasy-pagination: @@ -2738,7 +2875,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisEmployeepayrollrunOutput' - tags: *ref_26 + tags: *ref_27 x-speakeasy-group: hris.employeepayrollruns /hris/employees: get: @@ -2786,7 +2923,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisEmployeeOutput' - tags: &ref_27 + tags: &ref_28 - hris/employees x-speakeasy-group: hris.employees x-speakeasy-pagination: @@ -2827,7 +2964,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisEmployeeOutput' - tags: *ref_27 + tags: *ref_28 x-speakeasy-group: hris.employees /hris/employees/{id}: get: @@ -2862,7 +2999,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisEmployeeOutput' - tags: *ref_27 + tags: *ref_28 x-speakeasy-group: hris.employees /hris/employerbenefits: get: @@ -2911,7 +3048,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedHrisEmployerbenefitOutput - tags: &ref_28 + tags: &ref_29 - hris/employerbenefits x-speakeasy-group: hris.employerbenefits x-speakeasy-pagination: @@ -2955,7 +3092,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisEmployerbenefitOutput' - tags: *ref_28 + tags: *ref_29 x-speakeasy-group: hris.employerbenefits /hris/employments: get: @@ -3003,7 +3140,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisEmploymentOutput' - tags: &ref_29 + tags: &ref_30 - hris/employments x-speakeasy-group: hris.employments x-speakeasy-pagination: @@ -3047,7 +3184,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisEmploymentOutput' - tags: *ref_29 + tags: *ref_30 x-speakeasy-group: hris.employments /hris/groups: get: @@ -3095,7 +3232,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisGroupOutput' - tags: &ref_30 + tags: &ref_31 - hris/groups x-speakeasy-group: hris.groups x-speakeasy-pagination: @@ -3139,7 +3276,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisGroupOutput' - tags: *ref_30 + tags: *ref_31 x-speakeasy-group: hris.groups /hris/locations: get: @@ -3187,7 +3324,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisLocationOutput' - tags: &ref_31 + tags: &ref_32 - hris/locations x-speakeasy-group: hris.locations x-speakeasy-pagination: @@ -3231,7 +3368,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisLocationOutput' - tags: *ref_31 + tags: *ref_32 x-speakeasy-group: hris.locations /hris/paygroups: get: @@ -3279,7 +3416,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisPaygroupOutput' - tags: &ref_32 + tags: &ref_33 - hris/paygroups x-speakeasy-group: hris.paygroups x-speakeasy-pagination: @@ -3323,7 +3460,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisPaygroupOutput' - tags: *ref_32 + tags: *ref_33 x-speakeasy-group: hris.paygroups /hris/payrollruns: get: @@ -3371,7 +3508,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisPayrollrunOutput' - tags: &ref_33 + tags: &ref_34 - hris/payrollruns x-speakeasy-group: hris.payrollruns x-speakeasy-pagination: @@ -3415,7 +3552,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisPayrollrunOutput' - tags: *ref_33 + tags: *ref_34 x-speakeasy-group: hris.payrollruns /hris/timeoffs: get: @@ -3463,7 +3600,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisTimeoffOutput' - tags: &ref_34 + tags: &ref_35 - hris/timeoffs x-speakeasy-group: hris.timeoffs x-speakeasy-pagination: @@ -3504,7 +3641,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisTimeoffOutput' - tags: *ref_34 + tags: *ref_35 x-speakeasy-group: hris.timeoffs /hris/timeoffs/{id}: get: @@ -3539,7 +3676,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisTimeoffOutput' - tags: *ref_34 + tags: *ref_35 x-speakeasy-group: hris.timeoffs /hris/timeoffbalances: get: @@ -3587,7 +3724,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisTimeoffbalanceOutput' - tags: &ref_35 + tags: &ref_36 - hris/timeoffbalances x-speakeasy-group: hris.timeoffbalances x-speakeasy-pagination: @@ -3631,7 +3768,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisTimeoffbalanceOutput' - tags: *ref_35 + tags: *ref_36 x-speakeasy-group: hris.timeoffbalances /hris/timesheetentries: get: @@ -3679,7 +3816,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedHrisTimesheetEntryOutput' - tags: &ref_36 + tags: &ref_37 - hris/timesheetentries x-speakeasy-group: hris.timesheetentries x-speakeasy-pagination: @@ -3720,7 +3857,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisTimesheetEntryOutput' - tags: *ref_36 + tags: *ref_37 x-speakeasy-group: hris.timesheetentries /hris/timesheetentries/{id}: get: @@ -3755,7 +3892,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedHrisTimesheetEntryOutput' - tags: *ref_36 + tags: *ref_37 x-speakeasy-group: hris.timesheetentries /marketingautomation/actions: get: @@ -3804,7 +3941,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationActionOutput - tags: &ref_37 + tags: &ref_38 - marketingautomation/actions x-speakeasy-group: marketingautomation.actions x-speakeasy-pagination: @@ -3848,7 +3985,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationActionOutput' - tags: *ref_37 + tags: *ref_38 x-speakeasy-group: marketingautomation.actions /marketingautomation/actions/{id}: get: @@ -3885,7 +4022,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationActionOutput' - tags: *ref_37 + tags: *ref_38 x-speakeasy-group: marketingautomation.actions /marketingautomation/automations: get: @@ -3934,7 +4071,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationAutomationOutput - tags: &ref_38 + tags: &ref_39 - marketingautomation/automations x-speakeasy-group: marketingautomation.automations x-speakeasy-pagination: @@ -3979,7 +4116,7 @@ paths: schema: $ref: >- #/components/schemas/UnifiedMarketingautomationAutomationOutput - tags: *ref_38 + tags: *ref_39 x-speakeasy-group: marketingautomation.automations /marketingautomation/automations/{id}: get: @@ -4017,7 +4154,7 @@ paths: schema: $ref: >- #/components/schemas/UnifiedMarketingautomationAutomationOutput - tags: *ref_38 + tags: *ref_39 x-speakeasy-group: marketingautomation.automations /marketingautomation/campaigns: get: @@ -4066,7 +4203,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationCampaignOutput - tags: &ref_39 + tags: &ref_40 - marketingautomation/campaigns x-speakeasy-group: marketingautomation.campaigns x-speakeasy-pagination: @@ -4110,7 +4247,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationCampaignOutput' - tags: *ref_39 + tags: *ref_40 x-speakeasy-group: marketingautomation.campaigns /marketingautomation/campaigns/{id}: get: @@ -4147,7 +4284,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationCampaignOutput' - tags: *ref_39 + tags: *ref_40 x-speakeasy-group: marketingautomation.campaigns /marketingautomation/contacts: get: @@ -4196,7 +4333,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationContactOutput - tags: &ref_40 + tags: &ref_41 - marketingautomation/contacts x-speakeasy-group: marketingautomation.contacts x-speakeasy-pagination: @@ -4240,7 +4377,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationContactOutput' - tags: *ref_40 + tags: *ref_41 x-speakeasy-group: marketingautomation.contacts /marketingautomation/contacts/{id}: get: @@ -4277,7 +4414,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationContactOutput' - tags: *ref_40 + tags: *ref_41 x-speakeasy-group: marketingautomation.contacts /marketingautomation/emails: get: @@ -4326,7 +4463,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationEmailOutput - tags: &ref_41 + tags: &ref_42 - marketingautomation/emails x-speakeasy-group: marketingautomation.emails x-speakeasy-pagination: @@ -4372,7 +4509,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationEmailOutput' - tags: *ref_41 + tags: *ref_42 x-speakeasy-group: marketingautomation.emails /marketingautomation/events: get: @@ -4421,7 +4558,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationEventOutput - tags: &ref_42 + tags: &ref_43 - marketingautomation/events x-speakeasy-group: marketingautomation.events x-speakeasy-pagination: @@ -4467,7 +4604,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationEventOutput' - tags: *ref_42 + tags: *ref_43 x-speakeasy-group: marketingautomation.events /marketingautomation/lists: get: @@ -4516,7 +4653,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationListOutput - tags: &ref_43 + tags: &ref_44 - marketingautomation/lists x-speakeasy-group: marketingautomation.lists x-speakeasy-pagination: @@ -4559,7 +4696,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationListOutput' - tags: *ref_43 + tags: *ref_44 x-speakeasy-group: marketingautomation.lists /marketingautomation/lists/{id}: get: @@ -4596,7 +4733,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationListOutput' - tags: *ref_43 + tags: *ref_44 x-speakeasy-group: marketingautomation.lists /marketingautomation/messages: get: @@ -4645,7 +4782,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationMessageOutput - tags: &ref_44 + tags: &ref_45 - marketingautomation/messages x-speakeasy-group: marketingautomation.messages x-speakeasy-pagination: @@ -4691,7 +4828,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationMessageOutput' - tags: *ref_44 + tags: *ref_45 x-speakeasy-group: marketingautomation.messages /marketingautomation/templates: get: @@ -4740,7 +4877,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationTemplateOutput - tags: &ref_45 + tags: &ref_46 - marketingautomation/templates x-speakeasy-group: marketingautomation.templates x-speakeasy-pagination: @@ -4783,7 +4920,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationTemplateOutput' - tags: *ref_45 + tags: *ref_46 x-speakeasy-group: marketingautomation.templates /marketingautomation/templates/{id}: get: @@ -4820,7 +4957,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationTemplateOutput' - tags: *ref_45 + tags: *ref_46 x-speakeasy-group: marketingautomation.templates /marketingautomation/users: get: @@ -4869,7 +5006,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedMarketingautomationUserOutput - tags: &ref_46 + tags: &ref_47 - marketingautomation/users x-speakeasy-group: marketingautomation.users x-speakeasy-pagination: @@ -4915,7 +5052,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedMarketingautomationUserOutput' - tags: *ref_46 + tags: *ref_47 x-speakeasy-group: marketingautomation.users /ats/activities: get: @@ -4963,7 +5100,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsActivityOutput' - tags: &ref_47 + tags: &ref_48 - ats/activities x-speakeasy-group: ats.activities x-speakeasy-pagination: @@ -5005,7 +5142,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsActivityOutput' - tags: *ref_47 + tags: *ref_48 x-speakeasy-group: ats.activities /ats/activities/{id}: get: @@ -5040,7 +5177,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsActivityOutput' - tags: *ref_47 + tags: *ref_48 x-speakeasy-group: ats.activities /ats/applications: get: @@ -5088,7 +5225,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsApplicationOutput' - tags: &ref_48 + tags: &ref_49 - ats/applications x-speakeasy-group: ats.applications x-speakeasy-pagination: @@ -5130,7 +5267,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsApplicationOutput' - tags: *ref_48 + tags: *ref_49 x-speakeasy-group: ats.applications /ats/applications/{id}: get: @@ -5165,7 +5302,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsApplicationOutput' - tags: *ref_48 + tags: *ref_49 x-speakeasy-group: ats.applications /ats/attachments: get: @@ -5213,7 +5350,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsAttachmentOutput' - tags: &ref_49 + tags: &ref_50 - ats/attachments x-speakeasy-group: ats.attachments x-speakeasy-pagination: @@ -5255,7 +5392,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsAttachmentOutput' - tags: *ref_49 + tags: *ref_50 x-speakeasy-group: ats.attachments /ats/attachments/{id}: get: @@ -5290,7 +5427,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsAttachmentOutput' - tags: *ref_49 + tags: *ref_50 x-speakeasy-group: ats.attachments /ats/candidates: get: @@ -5338,7 +5475,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsCandidateOutput' - tags: &ref_50 + tags: &ref_51 - ats/candidates x-speakeasy-group: ats.candidates x-speakeasy-pagination: @@ -5380,7 +5517,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsCandidateOutput' - tags: *ref_50 + tags: *ref_51 x-speakeasy-group: ats.candidates /ats/candidates/{id}: get: @@ -5415,7 +5552,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsCandidateOutput' - tags: *ref_50 + tags: *ref_51 x-speakeasy-group: ats.candidates /ats/departments: get: @@ -5463,7 +5600,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsDepartmentOutput' - tags: &ref_51 + tags: &ref_52 - ats/departments x-speakeasy-group: ats.departments x-speakeasy-pagination: @@ -5507,7 +5644,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsDepartmentOutput' - tags: *ref_51 + tags: *ref_52 x-speakeasy-group: ats.departments /ats/interviews: get: @@ -5555,7 +5692,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsInterviewOutput' - tags: &ref_52 + tags: &ref_53 - ats/interviews x-speakeasy-group: ats.interviews x-speakeasy-pagination: @@ -5597,7 +5734,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsInterviewOutput' - tags: *ref_52 + tags: *ref_53 x-speakeasy-group: ats.interviews /ats/interviews/{id}: get: @@ -5632,7 +5769,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsInterviewOutput' - tags: *ref_52 + tags: *ref_53 x-speakeasy-group: ats.interviews /ats/jobinterviewstages: get: @@ -5681,7 +5818,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAtsJobinterviewstageOutput - tags: &ref_53 + tags: &ref_54 - ats/jobinterviewstages x-speakeasy-group: ats.jobinterviewstages x-speakeasy-pagination: @@ -5725,7 +5862,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsJobinterviewstageOutput' - tags: *ref_53 + tags: *ref_54 x-speakeasy-group: ats.jobinterviewstages /ats/jobs: get: @@ -5773,7 +5910,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsJobOutput' - tags: &ref_54 + tags: &ref_55 - ats/jobs x-speakeasy-group: ats.jobs x-speakeasy-pagination: @@ -5817,7 +5954,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsJobOutput' - tags: *ref_54 + tags: *ref_55 x-speakeasy-group: ats.jobs /ats/offers: get: @@ -5865,7 +6002,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsOfferOutput' - tags: &ref_55 + tags: &ref_56 - ats/offers x-speakeasy-group: ats.offers x-speakeasy-pagination: @@ -5909,7 +6046,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsOfferOutput' - tags: *ref_55 + tags: *ref_56 x-speakeasy-group: ats.offers /ats/offices: get: @@ -5957,7 +6094,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsOfficeOutput' - tags: &ref_56 + tags: &ref_57 - ats/offices x-speakeasy-group: ats.offices x-speakeasy-pagination: @@ -6001,7 +6138,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsOfficeOutput' - tags: *ref_56 + tags: *ref_57 x-speakeasy-group: ats.offices /ats/rejectreasons: get: @@ -6049,7 +6186,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsRejectreasonOutput' - tags: &ref_57 + tags: &ref_58 - ats/rejectreasons x-speakeasy-group: ats.rejectreasons x-speakeasy-pagination: @@ -6093,7 +6230,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsRejectreasonOutput' - tags: *ref_57 + tags: *ref_58 x-speakeasy-group: ats.rejectreasons /ats/scorecards: get: @@ -6141,7 +6278,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsScorecardOutput' - tags: &ref_58 + tags: &ref_59 - ats/scorecards x-speakeasy-group: ats.scorecards x-speakeasy-pagination: @@ -6185,7 +6322,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsScorecardOutput' - tags: *ref_58 + tags: *ref_59 x-speakeasy-group: ats.scorecards /ats/tags: get: @@ -6233,7 +6370,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsTagOutput' - tags: &ref_59 + tags: &ref_60 - ats/tags x-speakeasy-group: ats.tags x-speakeasy-pagination: @@ -6277,7 +6414,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsTagOutput' - tags: *ref_59 + tags: *ref_60 x-speakeasy-group: ats.tags /ats/users: get: @@ -6325,7 +6462,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsUserOutput' - tags: &ref_60 + tags: &ref_61 - ats/users x-speakeasy-group: ats.users x-speakeasy-pagination: @@ -6369,7 +6506,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsUserOutput' - tags: *ref_60 + tags: *ref_61 x-speakeasy-group: ats.users /ats/eeocs: get: @@ -6417,7 +6554,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAtsEeocsOutput' - tags: &ref_61 + tags: &ref_62 - ats/eeocs x-speakeasy-group: ats.eeocs x-speakeasy-pagination: @@ -6459,7 +6596,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAtsEeocsOutput' - tags: *ref_61 + tags: *ref_62 x-speakeasy-group: ats.eeocs /accounting/accounts: get: @@ -6507,7 +6644,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAccountingAccountOutput' - tags: &ref_62 + tags: &ref_63 - accounting/accounts x-speakeasy-group: accounting.accounts x-speakeasy-pagination: @@ -6549,7 +6686,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingAccountOutput' - tags: *ref_62 + tags: *ref_63 x-speakeasy-group: accounting.accounts /accounting/accounts/{id}: get: @@ -6584,7 +6721,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingAccountOutput' - tags: *ref_62 + tags: *ref_63 x-speakeasy-group: accounting.accounts /accounting/addresses: get: @@ -6632,7 +6769,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAccountingAddressOutput' - tags: &ref_63 + tags: &ref_64 - accounting/addresses x-speakeasy-group: accounting.addresses x-speakeasy-pagination: @@ -6676,7 +6813,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingAddressOutput' - tags: *ref_63 + tags: *ref_64 x-speakeasy-group: accounting.addresses /accounting/attachments: get: @@ -6725,7 +6862,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingAttachmentOutput - tags: &ref_64 + tags: &ref_65 - accounting/attachments x-speakeasy-group: accounting.attachments x-speakeasy-pagination: @@ -6767,7 +6904,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingAttachmentOutput' - tags: *ref_64 + tags: *ref_65 x-speakeasy-group: accounting.attachments /accounting/attachments/{id}: get: @@ -6802,7 +6939,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingAttachmentOutput' - tags: *ref_64 + tags: *ref_65 x-speakeasy-group: accounting.attachments /accounting/balancesheets: get: @@ -6851,7 +6988,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingBalancesheetOutput - tags: &ref_65 + tags: &ref_66 - accounting/balancesheets x-speakeasy-group: accounting.balancesheets x-speakeasy-pagination: @@ -6895,7 +7032,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingBalancesheetOutput' - tags: *ref_65 + tags: *ref_66 x-speakeasy-group: accounting.balancesheets /accounting/cashflowstatements: get: @@ -6944,7 +7081,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingCashflowstatementOutput - tags: &ref_66 + tags: &ref_67 - accounting/cashflowstatements x-speakeasy-group: accounting.cashflowstatements x-speakeasy-pagination: @@ -6988,7 +7125,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingCashflowstatementOutput' - tags: *ref_66 + tags: *ref_67 x-speakeasy-group: accounting.cashflowstatements /accounting/companyinfos: get: @@ -7037,7 +7174,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingCompanyinfoOutput - tags: &ref_67 + tags: &ref_68 - accounting/companyinfos x-speakeasy-group: accounting.companyinfos x-speakeasy-pagination: @@ -7081,7 +7218,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingCompanyinfoOutput' - tags: *ref_67 + tags: *ref_68 x-speakeasy-group: accounting.companyinfos /accounting/contacts: get: @@ -7129,7 +7266,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAccountingContactOutput' - tags: &ref_68 + tags: &ref_69 - accounting/contacts x-speakeasy-group: accounting.contacts x-speakeasy-pagination: @@ -7171,7 +7308,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingContactOutput' - tags: *ref_68 + tags: *ref_69 x-speakeasy-group: accounting.contacts /accounting/contacts/{id}: get: @@ -7206,7 +7343,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingContactOutput' - tags: *ref_68 + tags: *ref_69 x-speakeasy-group: accounting.contacts /accounting/creditnotes: get: @@ -7255,7 +7392,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingCreditnoteOutput - tags: &ref_69 + tags: &ref_70 - accounting/creditnotes x-speakeasy-group: accounting.creditnotes x-speakeasy-pagination: @@ -7299,7 +7436,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingCreditnoteOutput' - tags: *ref_69 + tags: *ref_70 x-speakeasy-group: accounting.creditnotes /accounting/expenses: get: @@ -7347,7 +7484,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAccountingExpenseOutput' - tags: &ref_70 + tags: &ref_71 - accounting/expenses x-speakeasy-group: accounting.expenses x-speakeasy-pagination: @@ -7389,7 +7526,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingExpenseOutput' - tags: *ref_70 + tags: *ref_71 x-speakeasy-group: accounting.expenses /accounting/expenses/{id}: get: @@ -7424,7 +7561,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingExpenseOutput' - tags: *ref_70 + tags: *ref_71 x-speakeasy-group: accounting.expenses /accounting/incomestatements: get: @@ -7473,7 +7610,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingIncomestatementOutput - tags: &ref_71 + tags: &ref_72 - accounting/incomestatements x-speakeasy-group: accounting.incomestatements x-speakeasy-pagination: @@ -7517,7 +7654,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingIncomestatementOutput' - tags: *ref_71 + tags: *ref_72 x-speakeasy-group: accounting.incomestatements /accounting/invoices: get: @@ -7565,7 +7702,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAccountingInvoiceOutput' - tags: &ref_72 + tags: &ref_73 - accounting/invoices x-speakeasy-group: accounting.invoices x-speakeasy-pagination: @@ -7607,7 +7744,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingInvoiceOutput' - tags: *ref_72 + tags: *ref_73 x-speakeasy-group: accounting.invoices /accounting/invoices/{id}: get: @@ -7642,7 +7779,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingInvoiceOutput' - tags: *ref_72 + tags: *ref_73 x-speakeasy-group: accounting.invoices /accounting/items: get: @@ -7690,7 +7827,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAccountingItemOutput' - tags: &ref_73 + tags: &ref_74 - accounting/items x-speakeasy-group: accounting.items x-speakeasy-pagination: @@ -7734,7 +7871,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingItemOutput' - tags: *ref_73 + tags: *ref_74 x-speakeasy-group: accounting.items /accounting/journalentries: get: @@ -7783,7 +7920,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingJournalentryOutput - tags: &ref_74 + tags: &ref_75 - accounting/journalentries x-speakeasy-group: accounting.journalentries x-speakeasy-pagination: @@ -7825,7 +7962,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingJournalentryOutput' - tags: *ref_74 + tags: *ref_75 x-speakeasy-group: accounting.journalentries /accounting/journalentries/{id}: get: @@ -7860,7 +7997,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingJournalentryOutput' - tags: *ref_74 + tags: *ref_75 x-speakeasy-group: accounting.journalentries /accounting/payments: get: @@ -7908,7 +8045,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAccountingPaymentOutput' - tags: &ref_75 + tags: &ref_76 - accounting/payments x-speakeasy-group: accounting.payments x-speakeasy-pagination: @@ -7950,7 +8087,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingPaymentOutput' - tags: *ref_75 + tags: *ref_76 x-speakeasy-group: accounting.payments /accounting/payments/{id}: get: @@ -7985,7 +8122,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingPaymentOutput' - tags: *ref_75 + tags: *ref_76 x-speakeasy-group: accounting.payments /accounting/phonenumbers: get: @@ -8034,7 +8171,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingPhonenumberOutput - tags: &ref_76 + tags: &ref_77 - accounting/phonenumbers x-speakeasy-group: accounting.phonenumbers x-speakeasy-pagination: @@ -8078,7 +8215,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingPhonenumberOutput' - tags: *ref_76 + tags: *ref_77 x-speakeasy-group: accounting.phonenumbers /accounting/purchaseorders: get: @@ -8127,7 +8264,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingPurchaseorderOutput - tags: &ref_77 + tags: &ref_78 - accounting/purchaseorders x-speakeasy-group: accounting.purchaseorders x-speakeasy-pagination: @@ -8169,7 +8306,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingPurchaseorderOutput' - tags: *ref_77 + tags: *ref_78 x-speakeasy-group: accounting.purchaseorders /accounting/purchaseorders/{id}: get: @@ -8204,7 +8341,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingPurchaseorderOutput' - tags: *ref_77 + tags: *ref_78 x-speakeasy-group: accounting.purchaseorders /accounting/taxrates: get: @@ -8252,7 +8389,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedAccountingTaxrateOutput' - tags: &ref_78 + tags: &ref_79 - accounting/taxrates x-speakeasy-group: accounting.taxrates x-speakeasy-pagination: @@ -8296,7 +8433,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingTaxrateOutput' - tags: *ref_78 + tags: *ref_79 x-speakeasy-group: accounting.taxrates /accounting/trackingcategories: get: @@ -8345,7 +8482,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingTrackingcategoryOutput - tags: &ref_79 + tags: &ref_80 - accounting/trackingcategories x-speakeasy-group: accounting.trackingcategories x-speakeasy-pagination: @@ -8389,7 +8526,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingTrackingcategoryOutput' - tags: *ref_79 + tags: *ref_80 x-speakeasy-group: accounting.trackingcategories /accounting/transactions: get: @@ -8438,7 +8575,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingTransactionOutput - tags: &ref_80 + tags: &ref_81 - accounting/transactions x-speakeasy-group: accounting.transactions x-speakeasy-pagination: @@ -8482,7 +8619,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingTransactionOutput' - tags: *ref_80 + tags: *ref_81 x-speakeasy-group: accounting.transactions /accounting/vendorcredits: get: @@ -8531,7 +8668,7 @@ paths: items: $ref: >- #/components/schemas/UnifiedAccountingVendorcreditOutput - tags: &ref_81 + tags: &ref_82 - accounting/vendorcredits x-speakeasy-group: accounting.vendorcredits x-speakeasy-pagination: @@ -8575,7 +8712,7 @@ paths: application/json: schema: $ref: '#/components/schemas/UnifiedAccountingVendorcreditOutput' - tags: *ref_81 + tags: *ref_82 x-speakeasy-group: accounting.vendorcredits /filestorage/drives: get: @@ -8623,7 +8760,7 @@ paths: type: array items: $ref: '#/components/schemas/UnifiedFilestorageDriveOutput' - tags: &ref_82 + tags: &ref_83 - filestorage/drives x-speakeasy-group: filestorage.drives x-speakeasy-pagination: @@ -8637,133 +8774,8 @@ paths: /filestorage/drives/{id}: get: operationId: retrieveFilestorageDrive - summary: Retrieve Drive - description: Retrieve a Drive from any connected file storage service - parameters: - - name: x-connection-token - required: true - in: header - description: The connection token - schema: - type: string - - name: id - required: true - in: path - description: id of the drive you want to retrieve. - example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f - schema: - type: string - - name: remote_data - required: false - in: query - description: Set to true to include data from the original file storage service. - example: false - schema: - type: boolean - responses: - '200': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/UnifiedFilestorageDriveOutput' - tags: *ref_82 - x-speakeasy-group: filestorage.drives - /filestorage/files: - get: - operationId: listFilestorageFile - summary: List Files - parameters: - - name: x-connection-token - required: true - in: header - description: The connection token - schema: - type: string - - name: remote_data - required: false - in: query - example: true - description: Set to true to include data from the original software. - schema: - type: boolean - - name: limit - required: false - in: query - example: 10 - description: Set to get the number of records. - schema: - default: 50 - type: number - - name: cursor - required: false - in: query - example: 1b8b05bb-5273-4012-b520-8657b0b90874 - description: Set to get the number of records after this cursor. - schema: - type: string - responses: - '200': - description: '' - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/PaginatedDto' - - properties: - data: - type: array - items: - $ref: '#/components/schemas/UnifiedFilestorageFileOutput' - tags: &ref_83 - - filestorage/files - x-speakeasy-group: filestorage.files - x-speakeasy-pagination: - type: cursor - inputs: - - name: cursor - in: parameters - type: cursor - outputs: - nextCursor: $.next_cursor - post: - operationId: createFilestorageFile - summary: Create Files - description: Create Files in any supported Filestorage software - parameters: - - name: x-connection-token - required: true - in: header - description: The connection token - schema: - type: string - - name: remote_data - required: false - in: query - example: false - description: Set to true to include data from the original Accounting software. - schema: - type: boolean - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/UnifiedFilestorageFileInput' - responses: - '201': - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/UnifiedFilestorageFileOutput' - tags: *ref_83 - x-speakeasy-group: filestorage.files - /filestorage/files/{id}: - get: - operationId: retrieveFilestorageFile - summary: Retrieve Files - description: Retrieve Files from any connected Filestorage software + summary: Retrieve Drive + description: Retrieve a Drive from any connected file storage service parameters: - name: x-connection-token required: true @@ -8774,14 +8786,14 @@ paths: - name: id required: true in: path - description: id of the file you want to retrieve. + description: id of the drive you want to retrieve. example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f schema: type: string - name: remote_data required: false in: query - description: Set to true to include data from the original File Storage software. + description: Set to true to include data from the original file storage service. example: false schema: type: boolean @@ -8791,9 +8803,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/UnifiedFilestorageFileOutput' + $ref: '#/components/schemas/UnifiedFilestorageDriveOutput' tags: *ref_83 - x-speakeasy-group: filestorage.files + x-speakeasy-group: filestorage.drives /filestorage/folders: get: operationId: listFilestorageFolder @@ -9675,6 +9687,163 @@ components: in: header name: x-api-key schemas: + PaginatedDto: + type: object + properties: + prev_cursor: + type: string + nullable: true + next_cursor: + type: string + nullable: true + data: + type: array + items: + type: object + required: + - prev_cursor + - next_cursor + - data + UnifiedFilestorageFileOutput: + type: object + properties: + name: + type: string + example: my_paris_photo.png + description: The name of the file + nullable: true + file_url: + type: string + example: https://example.com/my_paris_photo.png + description: The url of the file + nullable: true + mime_type: + type: string + example: application/pdf + description: The mime type of the file + nullable: true + size: + type: string + example: '1024' + description: The size of the file + nullable: true + folder_id: + type: string + example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f + description: The UUID of the folder tied to the file + nullable: true + permission: + type: string + example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f + description: The UUID of the permission tied to the file + nullable: true + shared_link: + type: string + example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f + description: The UUID of the shared link tied to the file + nullable: true + field_mappings: + type: object + example: &ref_92 + fav_dish: broccoli + fav_color: red + description: >- + The custom field mappings of the object between the remote 3rd party + & Panora + nullable: true + additionalProperties: true + id: + type: string + example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f + description: The UUID of the file + nullable: true + remote_id: + type: string + example: id_1 + description: The id of the file in the context of the 3rd Party + nullable: true + remote_data: + type: object + example: + fav_dish: broccoli + fav_color: red + description: The remote data of the file in the context of the 3rd Party + nullable: true + additionalProperties: true + created_at: + format: date-time + type: string + example: '2024-10-01T12:00:00Z' + description: The created date of the object + nullable: true + modified_at: + format: date-time + type: string + example: '2024-10-01T12:00:00Z' + description: The modified date of the object + nullable: true + required: + - name + - file_url + - mime_type + - size + - folder_id + - permission + - shared_link + UnifiedFilestorageFileInput: + type: object + properties: + name: + type: string + example: my_paris_photo.png + description: The name of the file + nullable: true + file_url: + type: string + example: https://example.com/my_paris_photo.png + description: The url of the file + nullable: true + mime_type: + type: string + example: application/pdf + description: The mime type of the file + nullable: true + size: + type: string + example: '1024' + description: The size of the file + nullable: true + folder_id: + type: string + example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f + description: The UUID of the folder tied to the file + nullable: true + permission: + type: string + example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f + description: The UUID of the permission tied to the file + nullable: true + shared_link: + type: string + example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f + description: The UUID of the shared link tied to the file + nullable: true + field_mappings: + type: object + example: *ref_92 + description: >- + The custom field mappings of the object between the remote 3rd party + & Panora + nullable: true + additionalProperties: true + required: + - name + - file_url + - mime_type + - size + - folder_id + - permission + - shared_link LoginDto: type: object properties: @@ -9868,23 +10037,6 @@ components: - payload - signature - secret - PaginatedDto: - type: object - properties: - prev_cursor: - type: string - nullable: true - next_cursor: - type: string - nullable: true - data: - type: array - items: - type: object - required: - - prev_cursor - - next_cursor - - data UnifiedTicketingCommentInput: type: object properties: @@ -9931,12 +10083,12 @@ components: specified) attachments: type: array - items: &ref_114 + items: &ref_115 oneOf: - type: string - $ref: '#/components/schemas/UnifiedTicketingAttachmentOutput' nullable: true - example: &ref_115 + example: &ref_116 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f description: The attachements UUIDs tied to the comment required: @@ -9979,21 +10131,21 @@ components: description: The UUID of the parent ticket collections: type: array - items: &ref_92 + items: &ref_93 oneOf: - type: string - $ref: '#/components/schemas/UnifiedTicketingCollectionOutput' - example: &ref_93 + example: &ref_94 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: The collection UUIDs the ticket belongs to tags: type: array - items: &ref_94 + items: &ref_95 oneOf: - type: string - $ref: '#/components/schemas/UnifiedTicketingTagOutput' - example: &ref_95 + example: &ref_96 - my_tag - urgent_tag nullable: true @@ -10012,7 +10164,7 @@ components: The priority of the ticket. Authorized values are HIGH, MEDIUM or LOW. assigned_to: - example: &ref_96 + example: &ref_97 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: The users UUIDs the ticket is assigned to @@ -10020,7 +10172,7 @@ components: items: type: string comment: - example: &ref_97 + example: &ref_98 content: Assigned the issue ! nullable: true description: The comment of the ticket @@ -10038,17 +10190,17 @@ components: description: The UUID of the contact which the ticket belongs to attachments: type: array - items: &ref_98 + items: &ref_99 oneOf: - type: string - $ref: '#/components/schemas/UnifiedTicketingAttachmentInput' - example: &ref_99 + example: &ref_100 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f description: The attachements UUIDs tied to the ticket nullable: true field_mappings: type: object - example: &ref_100 + example: &ref_101 fav_dish: broccoli fav_color: red nullable: true @@ -10128,14 +10280,14 @@ components: description: The UUID of the parent ticket collections: type: array - items: *ref_92 - example: *ref_93 + items: *ref_93 + example: *ref_94 nullable: true description: The collection UUIDs the ticket belongs to tags: type: array - items: *ref_94 - example: *ref_95 + items: *ref_95 + example: *ref_96 nullable: true description: The tags names of the ticket completed_at: @@ -10152,14 +10304,14 @@ components: The priority of the ticket. Authorized values are HIGH, MEDIUM or LOW. assigned_to: - example: *ref_96 + example: *ref_97 nullable: true description: The users UUIDs the ticket is assigned to type: array items: type: string comment: - example: *ref_97 + example: *ref_98 nullable: true description: The comment of the ticket allOf: @@ -10176,13 +10328,13 @@ components: description: The UUID of the contact which the ticket belongs to attachments: type: array - items: *ref_98 - example: *ref_99 + items: *ref_99 + example: *ref_100 description: The attachements UUIDs tied to the ticket nullable: true field_mappings: type: object - example: *ref_100 + example: *ref_101 nullable: true description: >- The custom field mappings of the ticket between the remote 3rd party @@ -10583,7 +10735,7 @@ components: nullable: true email_addresses: description: The email addresses of the company - example: &ref_101 + example: &ref_102 - email_address: acme@gmail.com email_address_type: WORK nullable: true @@ -10592,7 +10744,7 @@ components: $ref: '#/components/schemas/Email' addresses: description: The addresses of the company - example: &ref_102 + example: &ref_103 - street_1: 5th Avenue city: New York state: NY @@ -10604,7 +10756,7 @@ components: $ref: '#/components/schemas/Address' phone_numbers: description: The phone numbers of the company - example: &ref_103 + example: &ref_104 - phone_number: '+33660606067' phone_type: WORK nullable: true @@ -10613,7 +10765,7 @@ components: $ref: '#/components/schemas/Phone' field_mappings: type: object - example: &ref_104 + example: &ref_105 fav_dish: broccoli fav_color: red description: >- @@ -10678,28 +10830,28 @@ components: nullable: true email_addresses: description: The email addresses of the company - example: *ref_101 + example: *ref_102 nullable: true type: array items: $ref: '#/components/schemas/Email' addresses: description: The addresses of the company - example: *ref_102 + example: *ref_103 nullable: true type: array items: $ref: '#/components/schemas/Address' phone_numbers: description: The phone numbers of the company - example: *ref_103 + example: *ref_104 nullable: true type: array items: $ref: '#/components/schemas/Phone' field_mappings: type: object - example: *ref_104 + example: *ref_105 description: >- The custom field mappings of the company between the remote 3rd party & Panora @@ -10723,7 +10875,7 @@ components: email_addresses: nullable: true description: The email addresses of the contact - example: &ref_105 + example: &ref_106 - email: john.doe@example.com type: WORK type: array @@ -10732,7 +10884,7 @@ components: phone_numbers: nullable: true description: The phone numbers of the contact - example: &ref_106 + example: &ref_107 - phone: '1234567890' type: WORK type: array @@ -10741,7 +10893,7 @@ components: addresses: nullable: true description: The addresses of the contact - example: &ref_107 + example: &ref_108 - street: 123 Main St city: Anytown state: CA @@ -10758,7 +10910,7 @@ components: example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f field_mappings: type: object - example: &ref_108 + example: &ref_109 fav_dish: broccoli fav_color: red nullable: true @@ -10815,21 +10967,21 @@ components: email_addresses: nullable: true description: The email addresses of the contact - example: *ref_105 + example: *ref_106 type: array items: $ref: '#/components/schemas/Email' phone_numbers: nullable: true description: The phone numbers of the contact - example: *ref_106 + example: *ref_107 type: array items: $ref: '#/components/schemas/Phone' addresses: nullable: true description: The addresses of the contact - example: *ref_107 + example: *ref_108 type: array items: $ref: '#/components/schemas/Address' @@ -10840,7 +10992,7 @@ components: example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f field_mappings: type: object - example: *ref_108 + example: *ref_109 nullable: true description: >- The custom field mappings of the contact between the remote 3rd @@ -10885,7 +11037,7 @@ components: field_mappings: type: object nullable: true - example: &ref_109 + example: &ref_110 fav_dish: broccoli fav_color: red description: >- @@ -10962,7 +11114,7 @@ components: field_mappings: type: object nullable: true - example: *ref_109 + example: *ref_110 description: >- The custom field mappings of the company between the remote 3rd party & Panora @@ -11022,7 +11174,7 @@ components: description: The UUID of the company tied to the engagement contacts: nullable: true - example: &ref_110 + example: &ref_111 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f description: The UUIDs of contacts tied to the engagement object type: array @@ -11031,7 +11183,7 @@ components: field_mappings: type: object nullable: true - example: &ref_111 + example: &ref_112 fav_dish: broccoli fav_color: red description: >- @@ -11123,7 +11275,7 @@ components: description: The UUID of the company tied to the engagement contacts: nullable: true - example: *ref_110 + example: *ref_111 description: The UUIDs of contacts tied to the engagement object type: array items: @@ -11131,7 +11283,7 @@ components: field_mappings: type: object nullable: true - example: *ref_111 + example: *ref_112 description: >- The custom field mappings of the engagement between the remote 3rd party & Panora @@ -11168,7 +11320,7 @@ components: description: The UUID of the deal tied to the note field_mappings: type: object - example: &ref_112 + example: &ref_113 fav_dish: broccoli fav_color: red nullable: true @@ -11238,7 +11390,7 @@ components: description: The UUID of the deal tied to the note field_mappings: type: object - example: *ref_112 + example: *ref_113 nullable: true description: >- The custom field mappings of the note between the remote 3rd party & @@ -11339,7 +11491,7 @@ components: nullable: true field_mappings: type: object - example: &ref_113 + example: &ref_114 fav_dish: broccoli fav_color: red description: >- @@ -11427,7 +11579,7 @@ components: nullable: true field_mappings: type: object - example: *ref_113 + example: *ref_114 description: >- The custom field mappings of the task between the remote 3rd party & Panora @@ -11591,9 +11743,9 @@ components: specified) attachments: type: array - items: *ref_114 + items: *ref_115 nullable: true - example: *ref_115 + example: *ref_116 description: The attachements UUIDs tied to the comment id: type: string @@ -12747,7 +12899,7 @@ components: type: object properties: groups: - example: &ref_116 + example: &ref_117 - Group1 - Group2 nullable: true @@ -12756,7 +12908,7 @@ components: items: type: string locations: - example: &ref_117 + example: &ref_118 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: UUIDs of the of the Location associated with the company @@ -12814,7 +12966,7 @@ components: nullable: true description: The mobile phone number of the employee employments: - example: &ref_118 + example: &ref_119 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true @@ -12877,7 +13029,7 @@ components: description: UUID of the manager (employee) of the employee field_mappings: type: object - example: &ref_119 + example: &ref_120 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -12928,14 +13080,14 @@ components: type: object properties: groups: - example: *ref_116 + example: *ref_117 nullable: true description: The groups the employee belongs to type: array items: type: string locations: - example: *ref_117 + example: *ref_118 nullable: true description: UUIDs of the of the Location associated with the company type: array @@ -12992,7 +13144,7 @@ components: nullable: true description: The mobile phone number of the employee employments: - example: *ref_118 + example: *ref_119 nullable: true description: The employments of the employee type: array @@ -13053,7 +13205,7 @@ components: description: UUID of the manager (employee) of the employee field_mappings: type: object - example: *ref_119 + example: *ref_120 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -13612,7 +13764,7 @@ components: description: The end time of the time off field_mappings: type: object - example: &ref_120 + example: &ref_121 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -13711,7 +13863,7 @@ components: description: The end time of the time off field_mappings: type: object - example: *ref_120 + example: *ref_121 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -13822,7 +13974,7 @@ components: description: Indicates if the timesheet entry was deleted in the remote system field_mappings: type: object - example: &ref_121 + example: &ref_122 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -13895,7 +14047,7 @@ components: description: Indicates if the timesheet entry was deleted in the remote system field_mappings: type: object - example: *ref_121 + example: *ref_122 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -13984,7 +14136,7 @@ components: description: The remote creation date of the activity field_mappings: type: object - example: &ref_122 + example: &ref_123 fav_dish: broccoli fav_color: red additionalProperties: true @@ -14058,7 +14210,7 @@ components: description: The remote creation date of the activity field_mappings: type: object - example: *ref_122 + example: *ref_123 additionalProperties: true nullable: true description: >- @@ -14082,7 +14234,7 @@ components: offers: nullable: true description: The offers UUIDs for the application - example: &ref_123 + example: &ref_124 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f - 12345678-1234-1234-1234-123456789012 type: array @@ -14119,7 +14271,7 @@ components: example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f field_mappings: type: object - example: &ref_124 + example: &ref_125 fav_dish: broccoli fav_color: red additionalProperties: true @@ -14185,7 +14337,7 @@ components: offers: nullable: true description: The offers UUIDs for the application - example: *ref_123 + example: *ref_124 type: array items: type: string @@ -14220,7 +14372,7 @@ components: example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f field_mappings: type: object - example: *ref_124 + example: *ref_125 additionalProperties: true nullable: true description: >- @@ -14263,7 +14415,7 @@ components: description: The UUID of the candidate field_mappings: type: object - example: &ref_125 + example: &ref_126 fav_dish: broccoli fav_color: red additionalProperties: true @@ -14338,7 +14490,7 @@ components: description: The UUID of the candidate field_mappings: type: object - example: *ref_125 + example: *ref_126 additionalProperties: true nullable: true description: >- @@ -14416,37 +14568,37 @@ components: description: The last interaction date with the candidate attachments: type: array - items: &ref_126 + items: &ref_127 oneOf: - type: string - $ref: '#/components/schemas/UnifiedAtsAttachmentOutput' - example: &ref_127 + example: &ref_128 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: The attachments UUIDs of the candidate applications: type: array - items: &ref_128 + items: &ref_129 oneOf: - type: string - $ref: '#/components/schemas/UnifiedAtsApplicationOutput' - example: &ref_129 + example: &ref_130 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: The applications UUIDs of the candidate tags: type: array - items: &ref_130 + items: &ref_131 oneOf: - type: string - $ref: '#/components/schemas/UnifiedAtsTagOutput' - example: &ref_131 + example: &ref_132 - tag_1 - tag_2 nullable: true description: The tags of the candidate urls: - example: &ref_132 + example: &ref_133 - url: mywebsite.com url_type: WEBSITE nullable: true @@ -14457,7 +14609,7 @@ components: items: $ref: '#/components/schemas/Url' phone_numbers: - example: &ref_133 + example: &ref_134 - phone_number: '+33660688899' phone_type: WORK nullable: true @@ -14466,7 +14618,7 @@ components: items: $ref: '#/components/schemas/Phone' email_addresses: - example: &ref_134 + example: &ref_135 - email_address: joedoe@gmail.com email_address_type: WORK nullable: true @@ -14476,7 +14628,7 @@ components: $ref: '#/components/schemas/Email' field_mappings: type: object - example: &ref_135 + example: &ref_136 fav_dish: broccoli fav_color: red additionalProperties: true @@ -14572,24 +14724,24 @@ components: description: The last interaction date with the candidate attachments: type: array - items: *ref_126 - example: *ref_127 + items: *ref_127 + example: *ref_128 nullable: true description: The attachments UUIDs of the candidate applications: type: array - items: *ref_128 - example: *ref_129 + items: *ref_129 + example: *ref_130 nullable: true description: The applications UUIDs of the candidate tags: type: array - items: *ref_130 - example: *ref_131 + items: *ref_131 + example: *ref_132 nullable: true description: The tags of the candidate urls: - example: *ref_132 + example: *ref_133 nullable: true description: >- The urls of the candidate, possible values for Url type are WEBSITE, @@ -14598,14 +14750,14 @@ components: items: $ref: '#/components/schemas/Url' phone_numbers: - example: *ref_133 + example: *ref_134 nullable: true description: The phone numbers of the candidate type: array items: $ref: '#/components/schemas/Phone' email_addresses: - example: *ref_134 + example: *ref_135 nullable: true description: The email addresses of the candidate type: array @@ -14613,7 +14765,7 @@ components: $ref: '#/components/schemas/Email' field_mappings: type: object - example: *ref_135 + example: *ref_136 additionalProperties: true nullable: true description: >- @@ -14692,7 +14844,7 @@ components: nullable: true description: The UUID of the organizer interviewers: - example: &ref_136 + example: &ref_137 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: The UUIDs of the interviewers @@ -14730,7 +14882,7 @@ components: description: The remote modification date of the interview field_mappings: type: object - example: &ref_137 + example: &ref_138 fav_dish: broccoli fav_color: red additionalProperties: true @@ -14792,7 +14944,7 @@ components: nullable: true description: The UUID of the organizer interviewers: - example: *ref_136 + example: *ref_137 nullable: true description: The UUIDs of the interviewers type: array @@ -14829,7 +14981,7 @@ components: description: The remote modification date of the interview field_mappings: type: object - example: *ref_137 + example: *ref_138 additionalProperties: true nullable: true description: >- @@ -15526,7 +15678,7 @@ components: description: The UUID of the associated company info field_mappings: type: object - example: &ref_138 + example: &ref_139 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -15617,7 +15769,7 @@ components: description: The UUID of the associated company info field_mappings: type: object - example: *ref_138 + example: *ref_139 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -15733,7 +15885,7 @@ components: description: The UUID of the associated account field_mappings: type: object - example: &ref_139 + example: &ref_140 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -15789,7 +15941,7 @@ components: description: The UUID of the associated account field_mappings: type: object - example: *ref_139 + example: *ref_140 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -16189,7 +16341,7 @@ components: description: The UUID of the associated company info field_mappings: type: object - example: &ref_140 + example: &ref_141 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -16275,7 +16427,7 @@ components: description: The UUID of the associated company info field_mappings: type: object - example: *ref_140 + example: *ref_141 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -16465,7 +16617,7 @@ components: nullable: true description: The UUID of the associated company info tracking_categories: - example: &ref_141 + example: &ref_142 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: The UUIDs of the tracking categories associated with the expense @@ -16479,7 +16631,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: &ref_142 + example: &ref_143 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -16576,7 +16728,7 @@ components: nullable: true description: The UUID of the associated company info tracking_categories: - example: *ref_141 + example: *ref_142 nullable: true description: The UUIDs of the tracking categories associated with the expense type: array @@ -16589,7 +16741,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: *ref_142 + example: *ref_143 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -16763,7 +16915,7 @@ components: nullable: true description: The UUID of the associated accounting period tracking_categories: - example: &ref_143 + example: &ref_144 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true @@ -16778,7 +16930,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: &ref_144 + example: &ref_145 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -16907,7 +17059,7 @@ components: nullable: true description: The UUID of the associated accounting period tracking_categories: - example: *ref_143 + example: *ref_144 nullable: true description: The UUIDs of the tracking categories associated with the invoice type: array @@ -16920,7 +17072,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: *ref_144 + example: *ref_145 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -17017,7 +17169,7 @@ components: nullable: true description: The date of the transaction payments: - example: &ref_145 + example: &ref_146 - payment1 - payment2 nullable: true @@ -17026,7 +17178,7 @@ components: items: type: string applied_payments: - example: &ref_146 + example: &ref_147 - appliedPayment1 - appliedPayment2 nullable: true @@ -17060,7 +17212,7 @@ components: nullable: true description: The journal number tracking_categories: - example: &ref_147 + example: &ref_148 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: >- @@ -17086,7 +17238,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: &ref_148 + example: &ref_149 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -17146,14 +17298,14 @@ components: nullable: true description: The date of the transaction payments: - example: *ref_145 + example: *ref_146 nullable: true description: The payments associated with the journal entry type: array items: type: string applied_payments: - example: *ref_146 + example: *ref_147 nullable: true description: The applied payments for the journal entry type: array @@ -17185,7 +17337,7 @@ components: nullable: true description: The journal number tracking_categories: - example: *ref_147 + example: *ref_148 nullable: true description: >- The UUIDs of the tracking categories associated with the journal @@ -17210,7 +17362,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: *ref_148 + example: *ref_149 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -17270,7 +17422,7 @@ components: nullable: true description: The UUID of the associated accounting period tracking_categories: - example: &ref_149 + example: &ref_150 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: The UUIDs of the tracking categories associated with the payment @@ -17284,7 +17436,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: &ref_150 + example: &ref_151 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -17381,7 +17533,7 @@ components: nullable: true description: The UUID of the associated accounting period tracking_categories: - example: *ref_149 + example: *ref_150 nullable: true description: The UUIDs of the tracking categories associated with the payment type: array @@ -17394,7 +17546,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: *ref_150 + example: *ref_151 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -17526,7 +17678,7 @@ components: nullable: true description: The exchange rate applied to the purchase order tracking_categories: - example: &ref_151 + example: &ref_152 - 801f9ede-c698-4e66-a7fc-48d19eebaa4f nullable: true description: >- @@ -17547,7 +17699,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: &ref_152 + example: &ref_153 custom_field_1: value1 custom_field_2: value2 nullable: true @@ -17665,7 +17817,7 @@ components: nullable: true description: The exchange rate applied to the purchase order tracking_categories: - example: *ref_151 + example: *ref_152 nullable: true description: >- The UUIDs of the tracking categories associated with the purchase @@ -17685,7 +17837,7 @@ components: $ref: '#/components/schemas/LineItem' field_mappings: type: object - example: *ref_152 + example: *ref_153 nullable: true description: >- The custom field mappings of the object between the remote 3rd party @@ -18096,146 +18248,6 @@ components: - name - remote_created_at - drive_url - UnifiedFilestorageFileOutput: - type: object - properties: - name: - type: string - example: my_paris_photo.png - description: The name of the file - nullable: true - file_url: - type: string - example: https://example.com/my_paris_photo.png - description: The url of the file - nullable: true - mime_type: - type: string - example: application/pdf - description: The mime type of the file - nullable: true - size: - type: string - example: '1024' - description: The size of the file - nullable: true - folder_id: - type: string - example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f - description: The UUID of the folder tied to the file - nullable: true - permission: - type: string - example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f - description: The UUID of the permission tied to the file - nullable: true - shared_link: - type: string - example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f - description: The UUID of the shared link tied to the file - nullable: true - field_mappings: - type: object - example: &ref_153 - fav_dish: broccoli - fav_color: red - description: >- - The custom field mappings of the object between the remote 3rd party - & Panora - nullable: true - additionalProperties: true - id: - type: string - example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f - description: The UUID of the file - nullable: true - remote_id: - type: string - example: id_1 - description: The id of the file in the context of the 3rd Party - nullable: true - remote_data: - type: object - example: - fav_dish: broccoli - fav_color: red - description: The remote data of the file in the context of the 3rd Party - nullable: true - additionalProperties: true - created_at: - format: date-time - type: string - example: '2024-10-01T12:00:00Z' - description: The created date of the object - nullable: true - modified_at: - format: date-time - type: string - example: '2024-10-01T12:00:00Z' - description: The modified date of the object - nullable: true - required: - - name - - file_url - - mime_type - - size - - folder_id - - permission - - shared_link - UnifiedFilestorageFileInput: - type: object - properties: - name: - type: string - example: my_paris_photo.png - description: The name of the file - nullable: true - file_url: - type: string - example: https://example.com/my_paris_photo.png - description: The url of the file - nullable: true - mime_type: - type: string - example: application/pdf - description: The mime type of the file - nullable: true - size: - type: string - example: '1024' - description: The size of the file - nullable: true - folder_id: - type: string - example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f - description: The UUID of the folder tied to the file - nullable: true - permission: - type: string - example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f - description: The UUID of the permission tied to the file - nullable: true - shared_link: - type: string - example: 801f9ede-c698-4e66-a7fc-48d19eebaa4f - description: The UUID of the shared link tied to the file - nullable: true - field_mappings: - type: object - example: *ref_153 - description: >- - The custom field mappings of the object between the remote 3rd party - & Panora - nullable: true - additionalProperties: true - required: - - name - - file_url - - mime_type - - size - - folder_id - - permission - - shared_link UnifiedFilestorageFolderOutput: type: object properties: diff --git a/packages/shared/src/connectors/metadata.ts b/packages/shared/src/connectors/metadata.ts index b78a37191..8c289de09 100644 --- a/packages/shared/src/connectors/metadata.ts +++ b/packages/shared/src/connectors/metadata.ts @@ -2712,7 +2712,7 @@ export const CONNECTORS_METADATA: ProvidersConfig = { }, logoPath: 'https://upload.wikimedia.org/wikipedia/commons/d/da/Google_Drive_logo.png', description: 'Sync & Create contacts, deals, companies, notes, engagements, stages, tasks and users', - active: false, + active: true, authStrategy: { strategy: AuthStrategy.oauth2 } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 450b99a37..1a6dec4af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -430,9 +430,39 @@ importers: packages/api: dependencies: + '@aws-sdk/client-s3': + specifier: ^3.649.0 + version: 3.649.0 + '@aws-sdk/lib-storage': + specifier: ^3.649.0 + version: 3.649.0(@aws-sdk/client-s3@3.649.0) '@axiomhq/pino': specifier: ^1.0.0 version: 1.0.0 + '@langchain/cohere': + specifier: ^0.2.2 + version: 0.2.2(@aws-sdk/client-sso-oidc@3.649.0)(langchain@0.2.18)(openai@4.38.5) + '@langchain/community': + specifier: ^0.2.32 + version: 0.2.32(@aws-sdk/client-s3@3.649.0)(@langchain/cohere@0.2.2)(@pinecone-database/pinecone@3.0.2)(@qdrant/js-client-rest@1.11.0)(@zilliz/milvus2-sdk-node@2.4.8)(axios@1.6.8)(chromadb@1.8.1)(d3-dsv@3.0.1)(google-auth-library@9.14.1)(googleapis@144.0.0)(handlebars@4.7.8)(mammoth@1.8.0)(openai@4.38.5)(pdf-parse@1.1.1) + '@langchain/core': + specifier: ^0.2.31 + version: 0.2.31(langchain@0.2.18)(openai@4.38.5) + '@langchain/openai': + specifier: ^0.2.10 + version: 0.2.10(langchain@0.2.18) + '@langchain/pinecone': + specifier: ^0.0.9 + version: 0.0.9(langchain@0.2.18)(openai@4.38.5) + '@langchain/qdrant': + specifier: ^0.0.5 + version: 0.0.5(langchain@0.2.18)(openai@4.38.5)(typescript@5.4.4) + '@langchain/textsplitters': + specifier: ^0.0.3 + version: 0.0.3(langchain@0.2.18)(openai@4.38.5) + '@langchain/weaviate': + specifier: ^0.0.5 + version: 0.0.5(graphql@16.9.0)(langchain@0.2.18)(openai@4.38.5) '@nestjs/bull': specifier: ^10.0.1 version: 10.1.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(bull@4.12.2) @@ -472,9 +502,15 @@ importers: '@panora/shared': specifier: workspace:* version: link:../shared + '@pinecone-database/pinecone': + specifier: ^3.0.2 + version: 3.0.2 '@prisma/client': specifier: ^5.4.2 version: 5.12.1(prisma@5.12.1) + '@qdrant/js-client-rest': + specifier: ^1.11.0 + version: 1.11.0(typescript@5.4.4) '@sentry/node': specifier: 8.9.2 version: 8.9.2 @@ -487,6 +523,12 @@ importers: '@shopify/shopify-api': specifier: ^11.1.0 version: 11.1.0 + '@turbopuffer/turbopuffer': + specifier: ^0.5.10 + version: 0.5.10 + '@zilliz/milvus2-sdk-node': + specifier: ^2.4.8 + version: 2.4.8 axios: specifier: ^1.5.1 version: 1.6.8 @@ -496,6 +538,12 @@ importers: bull: specifier: ^4.11.5 version: 4.12.2 + chromadb: + specifier: ^1.8.1 + version: 1.8.1(openai@4.38.5) + chromadb-default-embed: + specifier: ^2.13.2 + version: 2.13.2 class-transformer: specifier: ^0.5.1 version: 0.5.1 @@ -508,6 +556,18 @@ importers: cors: specifier: ^2.8.5 version: 2.8.5 + csv: + specifier: ^6.3.10 + version: 6.3.10 + csv-parse: + specifier: ^5.5.6 + version: 5.5.6 + csvtojson: + specifier: ^2.0.10 + version: 2.0.10 + d3-dsv: + specifier: ^3.0.1 + version: 3.0.1 dotenv: specifier: ^16.3.1 version: 16.4.5 @@ -517,6 +577,12 @@ importers: form-data: specifier: ^4.0.0 version: 4.0.0 + google-auth-library: + specifier: ^9.14.1 + version: 9.14.1 + googleapis: + specifier: ^144.0.0 + version: 144.0.0 install: specifier: ^0.13.0 version: 0.13.0 @@ -526,6 +592,18 @@ importers: jwt-decode: specifier: ^4.0.0 version: 4.0.0 + langchain: + specifier: ^0.2.18 + version: 0.2.18(@aws-sdk/client-s3@3.649.0)(@langchain/cohere@0.2.2)(@langchain/community@0.2.32)(@pinecone-database/pinecone@3.0.2)(axios@1.6.8)(chromadb@1.8.1)(d3-dsv@3.0.1)(handlebars@4.7.8)(mammoth@1.8.0)(openai@4.38.5)(pdf-parse@1.1.1) + mammoth: + specifier: ^1.8.0 + version: 1.8.0 + marked: + specifier: ^14.1.2 + version: 14.1.2 + mime-types: + specifier: ^2.1.35 + version: 2.1.35 nestjs-pino: specifier: ^3.5.0 version: 3.5.0(@nestjs/common@10.3.7)(pino-http@8.6.1) @@ -547,6 +625,9 @@ importers: passport-local: specifier: ^1.0.0 version: 1.0.0 + pdf-parse: + specifier: ^1.1.1 + version: 1.1.1 pino-pretty: specifier: ^10.2.3 version: 10.3.1 @@ -568,6 +649,12 @@ importers: uuid: specifier: ^9.0.1 version: 9.0.1 + weaviate-client: + specifier: ^3.1.4 + version: 3.1.4 + xlsx: + specifier: ^0.18.5 + version: 0.18.5 yargs: specifier: ^17.7.2 version: 17.7.2 @@ -593,6 +680,9 @@ importers: '@types/jest': specifier: ^29.5.2 version: 29.5.12 + '@types/mime-types': + specifier: ^2.1.4 + version: 2.1.4 '@types/node': specifier: ^20.3.1 version: 20.12.7 @@ -826,3297 +916,5997 @@ packages: throttle-debounce: 5.0.0 dev: false - /@axiomhq/js@1.0.0: - resolution: {integrity: sha512-4xf0b/KFVFmNvjxK4lHHuwioQ6TPr+PZLqEdMl/vcot1RqFwDnjaOEOp0/VPhyTgdE0di8bl/hOsu33bHMM27w==} - engines: {node: '>=16'} + /@aws-crypto/crc32@3.0.0: + resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: - fetch-retry: 6.0.0 - uuid: 8.3.2 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.649.0 + tslib: 1.14.1 dev: false - /@axiomhq/pino@1.0.0: - resolution: {integrity: sha512-MbPqBw7bdDK7L+YKvNhlP0xby3Qvoe/9Aef7uodtkAGQV1e/XwEmYxV6LSEDOxd9X3XkYvusiTRl4fwFOGfkAw==} - engines: {node: '>=16'} + /@aws-crypto/crc32@5.2.0: + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} dependencies: - '@axiomhq/js': 1.0.0 - pino-abstract-transport: 1.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.649.0 + tslib: 2.6.3 dev: false - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} + /@aws-crypto/crc32c@5.2.0: + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} dependencies: - '@babel/highlight': 7.24.2 - picocolors: 1.0.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.649.0 + tslib: 2.6.3 + dev: false - /@babel/code-frame@7.24.7: - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} + /@aws-crypto/sha1-browser@5.2.0: + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.0.1 - - /@babel/compat-data@7.24.4: - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} - engines: {node: '>=6.9.0'} - dev: true + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + dev: false - /@babel/compat-data@7.24.9: - resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} - engines: {node: '>=6.9.0'} + /@aws-crypto/sha256-browser@5.2.0: + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + dev: false - /@babel/core@7.24.4: - resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} - engines: {node: '>=6.9.0'} + /@aws-crypto/sha256-js@5.2.0: + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) - '@babel/helpers': 7.24.4 - '@babel/parser': 7.24.4 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1(supports-color@5.5.0) - '@babel/types': 7.24.0 - convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@5.5.0) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.649.0 + tslib: 2.6.3 + dev: false - /@babel/core@7.24.9: - resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} - engines: {node: '>=6.9.0'} + /@aws-crypto/supports-web-crypto@5.2.0: + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.10 - '@babel/helper-compilation-targets': 7.24.8 - '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) - '@babel/helpers': 7.24.8 - '@babel/parser': 7.24.8 - '@babel/template': 7.24.7 - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 - convert-source-map: 2.0.0 - debug: 4.3.5 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + tslib: 2.6.3 + dev: false - /@babel/generator@7.24.10: - resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} - engines: {node: '>=6.9.0'} + /@aws-crypto/util@3.0.0: + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@babel/types': 7.24.9 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: false - /@babel/generator@7.24.4: - resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} - engines: {node: '>=6.9.0'} + /@aws-crypto/util@5.2.0: + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} dependencies: - '@babel/types': 7.24.9 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + '@aws-sdk/types': 3.649.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.3 + dev: false - /@babel/helper-annotate-as-pure@7.22.5: - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} + /@aws-sdk/client-cognito-identity@3.645.0: + resolution: {integrity: sha512-nBfWDzWBQI1NCHYqBAmiifhdnLRxQYozaq6OjTuRcALjYJbOdFV7t0w9FWGISOq1OnM7r8UdCXlr2bzdyU0tJA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/types': 7.24.9 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.645.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/core': 3.635.0 + '@aws-sdk/credential-provider-node': 3.645.0(@aws-sdk/client-sso-oidc@3.645.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/middleware-host-header': 3.620.0 + '@aws-sdk/middleware-logger': 3.609.0 + '@aws-sdk/middleware-recursion-detection': 3.620.0 + '@aws-sdk/middleware-user-agent': 3.645.0 + '@aws-sdk/region-config-resolver': 3.614.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.645.0 + '@aws-sdk/util-user-agent-browser': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.614.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt dev: false - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} + /@aws-sdk/client-s3@3.649.0: + resolution: {integrity: sha512-eM65Q2rz/5mGkxOtUrceboe6iru5TEii3n3kfD48MPRVF6OF2x+Wyj1w+tuYIkUXemEi5lm5EEmupMTTkW3hlw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.649.0(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/client-sts': 3.649.0 + '@aws-sdk/core': 3.649.0 + '@aws-sdk/credential-provider-node': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/middleware-bucket-endpoint': 3.649.0 + '@aws-sdk/middleware-expect-continue': 3.649.0 + '@aws-sdk/middleware-flexible-checksums': 3.649.0 + '@aws-sdk/middleware-host-header': 3.649.0 + '@aws-sdk/middleware-location-constraint': 3.649.0 + '@aws-sdk/middleware-logger': 3.649.0 + '@aws-sdk/middleware-recursion-detection': 3.649.0 + '@aws-sdk/middleware-sdk-s3': 3.649.0 + '@aws-sdk/middleware-ssec': 3.649.0 + '@aws-sdk/middleware-user-agent': 3.649.0 + '@aws-sdk/region-config-resolver': 3.649.0 + '@aws-sdk/signature-v4-multi-region': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-endpoints': 3.649.0 + '@aws-sdk/util-user-agent-browser': 3.649.0 + '@aws-sdk/util-user-agent-node': 3.649.0 + '@aws-sdk/xml-builder': 3.649.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/eventstream-serde-browser': 3.0.7 + '@smithy/eventstream-serde-config-resolver': 3.0.4 + '@smithy/eventstream-serde-node': 3.0.6 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-blob-browser': 3.1.3 + '@smithy/hash-node': 3.0.4 + '@smithy/hash-stream-node': 3.1.3 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/md5-js': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-stream': 3.1.4 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.3 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - /@babel/helper-compilation-targets@7.24.8: - resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} - engines: {node: '>=6.9.0'} + /@aws-sdk/client-sagemaker@3.649.0: + resolution: {integrity: sha512-uCDnQAamZlFnfbC1HAl01Ut1AQf4jLq5JkIvkXjJbfdB+OeP1PZoM+tNUfz1cmQ3WpcYIrLJIBWymAfvkasDEQ==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/compat-data': 7.24.9 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.2 - lru-cache: 5.1.1 - semver: 6.3.1 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.649.0(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/client-sts': 3.649.0 + '@aws-sdk/core': 3.649.0 + '@aws-sdk/credential-provider-node': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/middleware-host-header': 3.649.0 + '@aws-sdk/middleware-logger': 3.649.0 + '@aws-sdk/middleware-recursion-detection': 3.649.0 + '@aws-sdk/middleware-user-agent': 3.649.0 + '@aws-sdk/region-config-resolver': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-endpoints': 3.649.0 + '@aws-sdk/util-user-agent-browser': 3.649.0 + '@aws-sdk/util-user-agent-node': 3.649.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + '@smithy/util-waiter': 3.1.3 + tslib: 2.6.3 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + dev: false - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} + /@aws-sdk/client-sso-oidc@3.645.0(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-X9ULtdk3cO+1ysurEkJ1MSnu6U00qodXx+IVual+1jXX4RYY1WmQmfo7uDKf6FFkz7wW1DAqU+GJIBNQr0YH8A==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.645.0 + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/core': 3.635.0 + '@aws-sdk/credential-provider-node': 3.645.0(@aws-sdk/client-sso-oidc@3.645.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/middleware-host-header': 3.620.0 + '@aws-sdk/middleware-logger': 3.609.0 + '@aws-sdk/middleware-recursion-detection': 3.620.0 + '@aws-sdk/middleware-user-agent': 3.645.0 + '@aws-sdk/region-config-resolver': 3.614.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.645.0 + '@aws-sdk/util-user-agent-browser': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.614.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - /@babel/helper-environment-visitor@7.24.7: - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} + /@aws-sdk/client-sso-oidc@3.649.0(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-yaKbOFLk1F1lqAAPUbpoN95pDxgqB/7Rd03yndtV+o3/QLK+etKcgzuIkqGpYycvi6YLYLCxkwPNFEg/NzpW6Q==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.649.0 + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/core': 3.649.0 + '@aws-sdk/credential-provider-node': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/middleware-host-header': 3.649.0 + '@aws-sdk/middleware-logger': 3.649.0 + '@aws-sdk/middleware-recursion-detection': 3.649.0 + '@aws-sdk/middleware-user-agent': 3.649.0 + '@aws-sdk/region-config-resolver': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-endpoints': 3.649.0 + '@aws-sdk/util-user-agent-browser': 3.649.0 + '@aws-sdk/util-user-agent-node': 3.649.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso-oidc@3.649.0(@aws-sdk/client-sts@3.649.0): + resolution: {integrity: sha512-yaKbOFLk1F1lqAAPUbpoN95pDxgqB/7Rd03yndtV+o3/QLK+etKcgzuIkqGpYycvi6YLYLCxkwPNFEg/NzpW6Q==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.649.0 + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.649.0 + '@aws-sdk/core': 3.649.0 + '@aws-sdk/credential-provider-node': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/middleware-host-header': 3.649.0 + '@aws-sdk/middleware-logger': 3.649.0 + '@aws-sdk/middleware-recursion-detection': 3.649.0 + '@aws-sdk/middleware-user-agent': 3.649.0 + '@aws-sdk/region-config-resolver': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-endpoints': 3.649.0 + '@aws-sdk/util-user-agent-browser': 3.649.0 + '@aws-sdk/util-user-agent-node': 3.649.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso@3.645.0: + resolution: {integrity: sha512-2rc8TjnsNddOeKQ/pfNN7deNvGLXAeKeYtHtGDAiM2qfTKxd2sNcAsZ+JCDLyshuD4xLM5fpUyR0X8As9EAouQ==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/types': 7.24.9 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.635.0 + '@aws-sdk/middleware-host-header': 3.620.0 + '@aws-sdk/middleware-logger': 3.609.0 + '@aws-sdk/middleware-recursion-detection': 3.620.0 + '@aws-sdk/middleware-user-agent': 3.645.0 + '@aws-sdk/region-config-resolver': 3.614.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.645.0 + '@aws-sdk/util-user-agent-browser': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.614.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} + /@aws-sdk/client-sso@3.649.0: + resolution: {integrity: sha512-G6RZhG+yRdIlR069djAN/v4/Vd7CS8SDnUKkw32n7wJfcpoq0t+Lzcdh73kpIJ+/VslKYwMhbE5lCW+9+jDTdw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.9 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.649.0 + '@aws-sdk/middleware-host-header': 3.649.0 + '@aws-sdk/middleware-logger': 3.649.0 + '@aws-sdk/middleware-recursion-detection': 3.649.0 + '@aws-sdk/middleware-user-agent': 3.649.0 + '@aws-sdk/region-config-resolver': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-endpoints': 3.649.0 + '@aws-sdk/util-user-agent-browser': 3.649.0 + '@aws-sdk/util-user-agent-node': 3.649.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - /@babel/helper-function-name@7.24.7: - resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} - engines: {node: '>=6.9.0'} + /@aws-sdk/client-sts@3.645.0: + resolution: {integrity: sha512-6azXYtvtnAsPf2ShN9vKynIYVcJOpo6IoVmoMAVgNaBJyllP+s/RORzranYZzckqfmrudSxtct4rVapjLWuAMg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.9 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.645.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/core': 3.635.0 + '@aws-sdk/credential-provider-node': 3.645.0(@aws-sdk/client-sso-oidc@3.645.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/middleware-host-header': 3.620.0 + '@aws-sdk/middleware-logger': 3.609.0 + '@aws-sdk/middleware-recursion-detection': 3.620.0 + '@aws-sdk/middleware-user-agent': 3.645.0 + '@aws-sdk/region-config-resolver': 3.614.0 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.645.0 + '@aws-sdk/util-user-agent-browser': 3.609.0 + '@aws-sdk/util-user-agent-node': 3.614.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} + /@aws-sdk/client-sts@3.649.0: + resolution: {integrity: sha512-aKrLTPpA+Ew4JswWBGtoYT+LiA+uewKyCsYXwJtdjj20TY4qX9/fjJyEt39ETjMGE55UmQcVFUZWL2m9f/aiAg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/types': 7.24.9 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.649.0(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/core': 3.649.0 + '@aws-sdk/credential-provider-node': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/middleware-host-header': 3.649.0 + '@aws-sdk/middleware-logger': 3.649.0 + '@aws-sdk/middleware-recursion-detection': 3.649.0 + '@aws-sdk/middleware-user-agent': 3.649.0 + '@aws-sdk/region-config-resolver': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-endpoints': 3.649.0 + '@aws-sdk/util-user-agent-browser': 3.649.0 + '@aws-sdk/util-user-agent-node': 3.649.0 + '@smithy/config-resolver': 3.0.6 + '@smithy/core': 2.4.1 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/hash-node': 3.0.4 + '@smithy/invalid-dependency': 3.0.4 + '@smithy/middleware-content-length': 3.0.6 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/middleware-stack': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.16 + '@smithy/util-defaults-mode-node': 3.0.16 + '@smithy/util-endpoints': 2.1.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + transitivePeerDependencies: + - aws-crt + dev: false - /@babel/helper-hoist-variables@7.24.7: - resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} - engines: {node: '>=6.9.0'} + /@aws-sdk/core@3.635.0: + resolution: {integrity: sha512-i1x/E/sgA+liUE1XJ7rj1dhyXpAKO1UKFUcTTHXok2ARjWTvszHnSXMOsB77aPbmn0fUp1JTx2kHUAZ1LVt5Bg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/types': 7.24.9 + '@smithy/core': 2.4.1 + '@smithy/node-config-provider': 3.1.5 + '@smithy/property-provider': 3.1.4 + '@smithy/protocol-http': 4.1.1 + '@smithy/signature-v4': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/util-middleware': 3.0.4 + fast-xml-parser: 4.4.1 + tslib: 2.6.3 + dev: false - /@babel/helper-module-imports@7.24.3: - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} - engines: {node: '>=6.9.0'} + /@aws-sdk/core@3.649.0: + resolution: {integrity: sha512-dheG/X2y25RHE7K+TlS32kcy7TgDg1OpWV44BQRoE0OBPAWmFR1D1qjjTZ7WWrdqRPKzcnDj1qED8ncyncOX8g==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/types': 7.24.9 + '@smithy/core': 2.4.1 + '@smithy/node-config-provider': 3.1.5 + '@smithy/property-provider': 3.1.4 + '@smithy/protocol-http': 4.1.1 + '@smithy/signature-v4': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/util-middleware': 3.0.4 + fast-xml-parser: 4.4.1 + tslib: 2.6.3 + dev: false - /@babel/helper-module-imports@7.24.7: - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-cognito-identity@3.645.0: + resolution: {integrity: sha512-Z4By/90TaYQZO1dPR1udYhegFiOlSWnZsJOYSAk4Gdny26Tqb78xVLw9R/33CzFblXC4WVSt4gizXTQ/sYyHNg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@aws-sdk/client-cognito-identity': 3.645.0 + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 transitivePeerDependencies: - - supports-color + - aws-crt + dev: false - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + /@aws-sdk/credential-provider-env@3.620.1: + resolution: {integrity: sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.24.7 - dev: true + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9): - resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + /@aws-sdk/credential-provider-env@3.649.0: + resolution: {integrity: sha512-tViwzM1dauksA3fdRjsg0T8mcHklDa8EfveyiQKK6pUJopkqV6FQx+X5QNda0t/LrdEVlFZvwHNdXqOEfc83TA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.9 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - transitivePeerDependencies: - - supports-color - - /@babel/helper-plugin-utils@7.24.0: - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} - engines: {node: '>=6.9.0'} + '@aws-sdk/types': 3.649.0 + '@smithy/property-provider': 3.1.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-http@3.635.0: + resolution: {integrity: sha512-iJyRgEjOCQlBMXqtwPLIKYc7Bsc6nqjrZybdMDenPDa+kmLg7xh8LxHsu9088e+2/wtLicE34FsJJIfzu3L82g==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/types': 7.24.9 - dev: true + '@aws-sdk/types': 3.609.0 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/property-provider': 3.1.4 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/util-stream': 3.1.4 + tslib: 2.6.3 + dev: false - /@babel/helper-simple-access@7.24.7: - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-http@3.649.0: + resolution: {integrity: sha512-ODAJ+AJJq6ozbns6ejGbicpsQ0dyMOpnGlg0J9J0jITQ05DKQZ581hdB8APDOZ9N8FstShP6dLZflSj8jb5fNA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/traverse': 7.24.8 - '@babel/types': 7.24.9 + '@aws-sdk/types': 3.649.0 + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/property-provider': 3.1.4 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/util-stream': 3.1.4 + tslib: 2.6.3 + dev: false + + /@aws-sdk/credential-provider-ini@3.645.0(@aws-sdk/client-sso-oidc@3.645.0)(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-LlZW0qwUwNlTaAIDCNpLbPsyXvS42pRIwF92fgtCQedmdnpN3XRUC6hcwSYI7Xru3GGKp3RnceOvsdOaRJORsw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.645.0 + dependencies: + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/credential-provider-env': 3.620.1 + '@aws-sdk/credential-provider-http': 3.635.0 + '@aws-sdk/credential-provider-process': 3.620.1 + '@aws-sdk/credential-provider-sso': 3.645.0(@aws-sdk/client-sso-oidc@3.645.0) + '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.609.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 transitivePeerDependencies: - - supports-color + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.9 + /@aws-sdk/credential-provider-ini@3.645.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-LlZW0qwUwNlTaAIDCNpLbPsyXvS42pRIwF92fgtCQedmdnpN3XRUC6hcwSYI7Xru3GGKp3RnceOvsdOaRJORsw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.645.0 + dependencies: + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/credential-provider-env': 3.620.1 + '@aws-sdk/credential-provider-http': 3.635.0 + '@aws-sdk/credential-provider-process': 3.620.1 + '@aws-sdk/credential-provider-sso': 3.645.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.609.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - /@babel/helper-split-export-declaration@7.24.7: - resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.9 + /@aws-sdk/credential-provider-ini@3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-2CcvYEi76gSXsCTb3izRfUpyDWmX+uGhjBckj3Lt6I2Jh+dxF9AEQAoMhvO7LM12Gx8v3w2JEC+GOZOVO4uq/A==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.649.0 + dependencies: + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/credential-provider-env': 3.649.0 + '@aws-sdk/credential-provider-http': 3.649.0 + '@aws-sdk/credential-provider-process': 3.649.0 + '@aws-sdk/credential-provider-sso': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/credential-provider-web-identity': 3.649.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.649.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - /@babel/helper-string-parser@7.24.8: - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-ini@3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.649.0): + resolution: {integrity: sha512-2CcvYEi76gSXsCTb3izRfUpyDWmX+uGhjBckj3Lt6I2Jh+dxF9AEQAoMhvO7LM12Gx8v3w2JEC+GOZOVO4uq/A==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.649.0 + dependencies: + '@aws-sdk/client-sts': 3.649.0 + '@aws-sdk/credential-provider-env': 3.649.0 + '@aws-sdk/credential-provider-http': 3.649.0 + '@aws-sdk/credential-provider-process': 3.649.0 + '@aws-sdk/credential-provider-sso': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/credential-provider-web-identity': 3.649.0(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/types': 3.649.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - /@babel/helper-validator-identifier@7.24.7: - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-node@3.645.0(@aws-sdk/client-sso-oidc@3.645.0)(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-eGFFuNvLeXjCJf5OCIuSEflxUowmK+bCS+lK4M8ofsYOEGAivdx7C0UPxNjHpvM8wKd8vpMl5phTeS9BWX5jMQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.620.1 + '@aws-sdk/credential-provider-http': 3.635.0 + '@aws-sdk/credential-provider-ini': 3.645.0(@aws-sdk/client-sso-oidc@3.645.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/credential-provider-process': 3.620.1 + '@aws-sdk/credential-provider-sso': 3.645.0(@aws-sdk/client-sso-oidc@3.645.0) + '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.609.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + dev: false - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - dev: true + /@aws-sdk/credential-provider-node@3.645.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-eGFFuNvLeXjCJf5OCIuSEflxUowmK+bCS+lK4M8ofsYOEGAivdx7C0UPxNjHpvM8wKd8vpMl5phTeS9BWX5jMQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.620.1 + '@aws-sdk/credential-provider-http': 3.635.0 + '@aws-sdk/credential-provider-ini': 3.645.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/credential-provider-process': 3.620.1 + '@aws-sdk/credential-provider-sso': 3.645.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.609.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + dev: false - /@babel/helper-validator-option@7.24.8: - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-node@3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-5g0HhP9DQ3SCvU6pm3yLZz5SUYSL5TP0UGluZN2OMEJG9ZL+tSZSgH21PcEQmpltP0UdS7vvuq++bHv7Bdo9qQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.649.0 + '@aws-sdk/credential-provider-http': 3.649.0 + '@aws-sdk/credential-provider-ini': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/credential-provider-process': 3.649.0 + '@aws-sdk/credential-provider-sso': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/credential-provider-web-identity': 3.649.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.649.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + dev: false - /@babel/helpers@7.24.4: - resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-node@3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.649.0): + resolution: {integrity: sha512-5g0HhP9DQ3SCvU6pm3yLZz5SUYSL5TP0UGluZN2OMEJG9ZL+tSZSgH21PcEQmpltP0UdS7vvuq++bHv7Bdo9qQ==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1(supports-color@5.5.0) - '@babel/types': 7.24.9 + '@aws-sdk/credential-provider-env': 3.649.0 + '@aws-sdk/credential-provider-http': 3.649.0 + '@aws-sdk/credential-provider-ini': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/credential-provider-process': 3.649.0 + '@aws-sdk/credential-provider-sso': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/credential-provider-web-identity': 3.649.0(@aws-sdk/client-sts@3.649.0) + '@aws-sdk/types': 3.649.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 transitivePeerDependencies: - - supports-color - dev: true + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + dev: false - /@babel/helpers@7.24.8: - resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-process@3.620.1: + resolution: {integrity: sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/template': 7.24.7 - '@babel/types': 7.24.9 + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/highlight@7.24.2: - resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-process@3.649.0: + resolution: {integrity: sha512-6VYPQpEVpU+6DDS/gLoI40ppuNM5RPIEprK30qZZxnhTr5wyrGOeJ7J7wbbwPOZ5dKwta290BiJDU2ipV8Y9BQ==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 + '@aws-sdk/types': 3.649.0 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/highlight@7.24.7: - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} + /@aws-sdk/credential-provider-sso@3.645.0(@aws-sdk/client-sso-oidc@3.645.0): + resolution: {integrity: sha512-d6XuChAl5NCsCrUexc6AFb4efPmb9+66iwPylKG+iMTMYgO1ackfy1Q2/f35jdn0jolkPkzKsVyfzsEVoID6ew==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 + '@aws-sdk/client-sso': 3.645.0 + '@aws-sdk/token-providers': 3.614.0(@aws-sdk/client-sso-oidc@3.645.0) + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - /@babel/parser@7.24.4: - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} - engines: {node: '>=6.0.0'} - hasBin: true + /@aws-sdk/credential-provider-sso@3.645.0(@aws-sdk/client-sso-oidc@3.649.0): + resolution: {integrity: sha512-d6XuChAl5NCsCrUexc6AFb4efPmb9+66iwPylKG+iMTMYgO1ackfy1Q2/f35jdn0jolkPkzKsVyfzsEVoID6ew==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/types': 7.24.9 - dev: true + '@aws-sdk/client-sso': 3.645.0 + '@aws-sdk/token-providers': 3.614.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - /@babel/parser@7.24.8: - resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} - engines: {node: '>=6.0.0'} - hasBin: true + /@aws-sdk/credential-provider-sso@3.649.0(@aws-sdk/client-sso-oidc@3.649.0): + resolution: {integrity: sha512-1Fh0Ov7LAVlrEpZfHwvslzyWhT+FyFA8RnN56pF3rwypm9s/WbINKEJiEcTYCBAvD4b27iSC0AJzzHdEgkdsxA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/types': 7.24.9 + '@aws-sdk/client-sso': 3.649.0 + '@aws-sdk/token-providers': 3.649.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/types': 3.649.0 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + /@aws-sdk/credential-provider-web-identity@3.621.0(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==} + engines: {node: '>=16.0.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@aws-sdk/client-sts': ^3.621.0 dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.4): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + /@aws-sdk/credential-provider-web-identity@3.649.0(@aws-sdk/client-sts@3.645.0): + resolution: {integrity: sha512-XVk3WsDa0g3kQFPmnCH/LaCtGY/0R2NDv7gscYZSXiBZcG/fixasglTprgWSp8zcA0t7tEIGu9suyjz8ZwhymQ==} + engines: {node: '>=16.0.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@aws-sdk/client-sts': ^3.649.0 dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/types': 3.649.0 + '@smithy/property-provider': 3.1.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@aws-sdk/credential-provider-web-identity@3.649.0(@aws-sdk/client-sts@3.649.0): + resolution: {integrity: sha512-XVk3WsDa0g3kQFPmnCH/LaCtGY/0R2NDv7gscYZSXiBZcG/fixasglTprgWSp8zcA0t7tEIGu9suyjz8ZwhymQ==} + engines: {node: '>=16.0.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@aws-sdk/client-sts': ^3.649.0 dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/client-sts': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@smithy/property-provider': 3.1.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/credential-providers@3.645.0(@aws-sdk/client-sso-oidc@3.649.0): + resolution: {integrity: sha512-6g9qMngrMCvHNsxmh/1urnWKrvaa2fv55b3bYwPxwJCYAvg/xc7bV8YHL7GS2rJpACG707k9G86DTW+Hab8bJA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/client-cognito-identity': 3.645.0 + '@aws-sdk/client-sso': 3.645.0 + '@aws-sdk/client-sts': 3.645.0 + '@aws-sdk/credential-provider-cognito-identity': 3.645.0 + '@aws-sdk/credential-provider-env': 3.620.1 + '@aws-sdk/credential-provider-http': 3.635.0 + '@aws-sdk/credential-provider-ini': 3.645.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/credential-provider-node': 3.645.0(@aws-sdk/client-sso-oidc@3.649.0)(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/credential-provider-process': 3.620.1 + '@aws-sdk/credential-provider-sso': 3.645.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.609.0 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/property-provider': 3.1.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + /@aws-sdk/lib-storage@3.649.0(@aws-sdk/client-s3@3.649.0): + resolution: {integrity: sha512-um7IAxXtb/RAdpBHStMgN7fQzZFjhl/rpNViTzY2p+zLJhW8sQM2bJAyF2awY3w12JtQkNO4332D9oXscVPJoQ==} + engines: {node: '>=16.0.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@aws-sdk/client-s3': ^3.649.0 dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/client-s3': 3.649.0 + '@smithy/abort-controller': 3.1.2 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/smithy-client': 3.3.0 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-bucket-endpoint@3.649.0: + resolution: {integrity: sha512-ZdDICtUU4YZkrVllTUOH1Fj/F3WShLhkfNKJE3HJ/yj6pS8JS9P2lWzHiHkHiidjrHSxc6NuBo6vuZ+182XLbw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/node-config-provider': 3.1.5 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + '@smithy/util-config-provider': 3.0.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.9): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-expect-continue@3.649.0: + resolution: {integrity: sha512-pW2id/mWNd+L0/hZKp5yL3J+8rTwsamu9E69Hc5pM3qTF4K4DTZZ+A0sQbY6duIvZvc8IbQHbSMulBOLyWNP3A==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.9 - '@babel/helper-plugin-utils': 7.24.0 + '@aws-sdk/types': 3.649.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-flexible-checksums@3.649.0: + resolution: {integrity: sha512-8mzMBEA+Tk6rbrS8iqnXX119C6z+Id84cuzvUc6dAiYcbnOVbus8M4XKKsAFzGGXHCRc2gMwYhKdnoVz2ijaFA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-sdk/types': 3.649.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-host-header@3.620.0: + resolution: {integrity: sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/types': 3.609.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-host-header@3.649.0: + resolution: {integrity: sha512-PjAe2FocbicHVgNNwdSZ05upxIO7AgTPFtQLpnIAmoyzMcgv/zNB5fBn3uAnQSAeEPPCD+4SYVEUD1hw1ZBvEg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/types': 3.649.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-location-constraint@3.649.0: + resolution: {integrity: sha512-O9AXhaFUQx34UTnp/cKCcaWW/IVk4mntlWfFjsIxvRatamKaY33b5fOiakGG+J1t0QFK0niDBSvOYUR1fdlHzw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/types': 3.649.0 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-logger@3.609.0: + resolution: {integrity: sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/types': 3.609.0 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-logger@3.649.0: + resolution: {integrity: sha512-qdqRx6q7lYC6KL/NT9x3ShTL0TBuxdkCczGzHzY3AnOoYUjnCDH7Vlq867O6MAvb4EnGNECFzIgtkZkQ4FhY5w==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/types': 3.649.0 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true - - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4): - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-recursion-detection@3.620.0: + resolution: {integrity: sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/types': 3.609.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.4): - resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-recursion-detection@3.649.0: + resolution: {integrity: sha512-IPnO4wlmaLRf6IYmJW2i8gJ2+UPXX0hDRv1it7Qf8DpBW+lGyF2rnoN7NrFX0WIxdGOlJF1RcOr/HjXb2QeXfQ==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/types': 3.649.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.4): - resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + /@aws-sdk/middleware-sdk-s3@3.649.0: + resolution: {integrity: sha512-3H8735xTAD7IxNdreT6qv2YRk4CGOGfz8ufZo5pROJYZ4N5rfcdDMvb8szMSLvQHegqS4v1DqO9nrOPgc0I2Qg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/core': 7.24.4 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@aws-sdk/core': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-arn-parser': 3.568.0 + '@smithy/core': 2.4.1 + '@smithy/node-config-provider': 3.1.5 + '@smithy/protocol-http': 4.1.1 + '@smithy/signature-v4': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-stream': 3.1.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + dev: false - /@babel/runtime@7.24.4: - resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} - engines: {node: '>=6.9.0'} + /@aws-sdk/middleware-ssec@3.649.0: + resolution: {integrity: sha512-r/WBIpX+Kcx+AV5vJ+LbdDOuibk7spBqcFK2LytQjOZKPksZNRAM99khbFe9vr9S1+uDmCLVjAVkIfQ5seJrOw==} + engines: {node: '>=16.0.0'} dependencies: - regenerator-runtime: 0.14.1 + '@aws-sdk/types': 3.649.0 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/template@7.24.0: - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} + /@aws-sdk/middleware-user-agent@3.645.0: + resolution: {integrity: sha512-NpTAtqWK+49lRuxfz7st9for80r4NriCMK0RfdJSoPFVntjsSQiQ7+2nW2XL05uVY633e9DvCAw8YatX3zd1mw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@aws-sdk/types': 3.609.0 + '@aws-sdk/util-endpoints': 3.645.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/template@7.24.7: - resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} - engines: {node: '>=6.9.0'} + /@aws-sdk/middleware-user-agent@3.649.0: + resolution: {integrity: sha512-q6sO10dnCXoxe9thobMJxekhJumzd1j6dxcE1+qJdYKHJr6yYgWbogJqrLCpWd30w0lEvnuAHK8lN2kWLdJxJw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-endpoints': 3.649.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@babel/traverse@7.24.1(supports-color@5.5.0): - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} - engines: {node: '>=6.9.0'} + /@aws-sdk/protocol-http@3.374.0: + resolution: {integrity: sha512-9WpRUbINdGroV3HiZZIBoJvL2ndoWk39OfwxWs2otxByppJZNN14bg/lvCx5e8ggHUti7IBk5rb0nqQZ4m05pg==} + engines: {node: '>=14.0.0'} + deprecated: This package has moved to @smithy/protocol-http dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.4 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 - debug: 4.3.4(supports-color@5.5.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@smithy/protocol-http': 1.2.0 + tslib: 2.6.3 + dev: false - /@babel/traverse@7.24.8: - resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} - engines: {node: '>=6.9.0'} + /@aws-sdk/region-config-resolver@3.614.0: + resolution: {integrity: sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.24.10 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-function-name': 7.24.7 - '@babel/helper-hoist-variables': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.24.8 - '@babel/types': 7.24.9 - debug: 4.3.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@aws-sdk/types': 3.609.0 + '@smithy/node-config-provider': 3.1.5 + '@smithy/types': 3.4.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.4 + tslib: 2.6.3 + dev: false - /@babel/types@7.24.0: - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} + /@aws-sdk/region-config-resolver@3.649.0: + resolution: {integrity: sha512-xURBvdQXvRvca5Du8IlC5FyCj3pkw8Z75+373J3Wb+vyg8GjD14HfKk1Je1HCCQDyIE9VB/scYDcm9ri0ppePw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - dev: true + '@aws-sdk/types': 3.649.0 + '@smithy/node-config-provider': 3.1.5 + '@smithy/types': 3.4.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.4 + tslib: 2.6.3 + dev: false - /@babel/types@7.24.9: - resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} - engines: {node: '>=6.9.0'} + /@aws-sdk/signature-v4-multi-region@3.649.0: + resolution: {integrity: sha512-feJfSHtCarFmTMZSE5k7/A+m4FrdCrmotljc/AmXArWy3wl8XFyxE5tFVW/PiUgbgeoVDN+ZLt3YYtItHfNUWQ==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true + '@aws-sdk/middleware-sdk-s3': 3.649.0 + '@aws-sdk/types': 3.649.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/signature-v4': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@changesets/apply-release-plan@7.0.0: - resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} + /@aws-sdk/signature-v4@3.374.0: + resolution: {integrity: sha512-2xLJvSdzcZZAg0lsDLUAuSQuihzK0dcxIK7WmfuJeF7DGKJFmp9czQmz5f3qiDz6IDQzvgK1M9vtJSVCslJbyQ==} + engines: {node: '>=14.0.0'} + deprecated: This package has moved to @smithy/signature-v4 dependencies: - '@babel/runtime': 7.24.4 - '@changesets/config': 3.0.0 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.6.0 + '@smithy/signature-v4': 1.1.0 + tslib: 2.6.3 dev: false - /@changesets/assemble-release-plan@6.0.0: - resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} + /@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.645.0): + resolution: {integrity: sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.614.0 dependencies: - '@babel/runtime': 7.24.4 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.6.0 + '@aws-sdk/client-sso-oidc': 3.645.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@changesets/changelog-git@0.2.0: - resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + /@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.649.0): + resolution: {integrity: sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.614.0 dependencies: - '@changesets/types': 6.0.0 + '@aws-sdk/client-sso-oidc': 3.649.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.609.0 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@changesets/cli@2.27.1: - resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} - hasBin: true + /@aws-sdk/token-providers@3.649.0(@aws-sdk/client-sso-oidc@3.649.0): + resolution: {integrity: sha512-ZBqr+JuXI9RiN+4DSZykMx5gxpL8Dr3exIfFhxMiwAP3DQojwl0ub8ONjMuAjq9OvmX6n+jHZL6fBnNgnNFC8w==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.649.0 dependencies: - '@babel/runtime': 7.24.4 - '@changesets/apply-release-plan': 7.0.0 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.0 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/get-release-plan': 4.0.0 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@changesets/write': 0.3.0 - '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.8 - ansi-colors: 4.1.3 - chalk: 2.4.2 - ci-info: 3.9.0 - enquirer: 2.4.1 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.1.3 - resolve-from: 5.0.0 - semver: 7.6.0 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.2.3 + '@aws-sdk/client-sso-oidc': 3.649.0(@aws-sdk/client-sts@3.645.0) + '@aws-sdk/types': 3.649.0 + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@changesets/config@3.0.0: - resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} + /@aws-sdk/types@3.609.0: + resolution: {integrity: sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==} + engines: {node: '>=16.0.0'} dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.0.0 - '@changesets/logger': 0.1.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@changesets/errors@0.2.0: - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + /@aws-sdk/types@3.649.0: + resolution: {integrity: sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==} + engines: {node: '>=16.0.0'} dependencies: - extendable-error: 0.1.7 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@changesets/get-dependents-graph@2.0.0: - resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} + /@aws-sdk/util-arn-parser@3.568.0: + resolution: {integrity: sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==} + engines: {node: '>=16.0.0'} dependencies: - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.6.0 + tslib: 2.6.3 dev: false - /@changesets/get-release-plan@4.0.0: - resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} + /@aws-sdk/util-endpoints@3.645.0: + resolution: {integrity: sha512-Oe+xaU4ic4PB1k3pb5VTC1/MWES13IlgpaQw01bVHGfwP6Yv6zZOxizRzca2Y3E+AyR+nKD7vXtHRY+w3bi4bg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 - '@changesets/assemble-release-plan': 6.0.0 - '@changesets/config': 3.0.0 - '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 + '@aws-sdk/types': 3.609.0 + '@smithy/types': 3.4.0 + '@smithy/util-endpoints': 2.1.0 + tslib: 2.6.3 dev: false - /@changesets/get-version-range-type@0.4.0: - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + /@aws-sdk/util-endpoints@3.649.0: + resolution: {integrity: sha512-bZI1Wc3R/KibdDVWFxX/N4AoJFG4VJ92Dp4WYmOrVD6VPkb8jPz7ZeiYc7YwPl8NoDjYyPneBV0lEoK/V8OKAA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.649.0 + '@smithy/types': 3.4.0 + '@smithy/util-endpoints': 2.1.0 + tslib: 2.6.3 dev: false - /@changesets/git@3.0.0: - resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + /@aws-sdk/util-locate-window@3.568.0: + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.5 - spawndamnit: 2.0.0 + tslib: 2.6.3 dev: false - /@changesets/logger@0.1.0: - resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + /@aws-sdk/util-user-agent-browser@3.609.0: + resolution: {integrity: sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==} dependencies: - chalk: 2.4.2 + '@aws-sdk/types': 3.609.0 + '@smithy/types': 3.4.0 + bowser: 2.11.0 + tslib: 2.6.3 dev: false - /@changesets/parse@0.4.0: - resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + /@aws-sdk/util-user-agent-browser@3.649.0: + resolution: {integrity: sha512-IY43r256LhKAvdEVQO/FPdUyVpcZS5EVxh/WHVdNzuN1bNLoUK2rIzuZqVA0EGguvCxoXVmQv9m50GvG7cGktg==} dependencies: - '@changesets/types': 6.0.0 - js-yaml: 3.14.1 + '@aws-sdk/types': 3.649.0 + '@smithy/types': 3.4.0 + bowser: 2.11.0 + tslib: 2.6.3 dev: false - /@changesets/pre@2.0.0: - resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + /@aws-sdk/util-user-agent-node@3.614.0: + resolution: {integrity: sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true dependencies: - '@babel/runtime': 7.24.4 - '@changesets/errors': 0.2.0 - '@changesets/types': 6.0.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 + '@aws-sdk/types': 3.609.0 + '@smithy/node-config-provider': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@changesets/read@0.6.0: - resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + /@aws-sdk/util-user-agent-node@3.649.0: + resolution: {integrity: sha512-x5DiLpZDG/AJmCIBnE3Xhpwy35QIo3WqNiOpw6ExVs1NydbM/e90zFPSfhME0FM66D/WorigvluBxxwjxDm/GA==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true dependencies: - '@babel/runtime': 7.24.4 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 - '@changesets/parse': 0.4.0 - '@changesets/types': 6.0.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 + '@aws-sdk/types': 3.649.0 + '@smithy/node-config-provider': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@changesets/types@4.1.0: - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + dependencies: + tslib: 2.6.3 dev: false - /@changesets/types@6.0.0: - resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + /@aws-sdk/xml-builder@3.649.0: + resolution: {integrity: sha512-XVESKkK7m5LdCVzZ3NvAja40BEyCrfPqtaiFAAhJIvW2U1Edyugf2o3XikuQY62crGT6BZagxJFgOiLKvuTiTg==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@changesets/write@0.3.0: - resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} + /@axiomhq/js@1.0.0: + resolution: {integrity: sha512-4xf0b/KFVFmNvjxK4lHHuwioQ6TPr+PZLqEdMl/vcot1RqFwDnjaOEOp0/VPhyTgdE0di8bl/hOsu33bHMM27w==} + engines: {node: '>=16'} dependencies: - '@babel/runtime': 7.24.4 - '@changesets/types': 6.0.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.8.8 + fetch-retry: 6.0.0 + uuid: 8.3.2 dev: false - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true - dev: true - optional: true - - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} + /@axiomhq/pino@1.0.0: + resolution: {integrity: sha512-MbPqBw7bdDK7L+YKvNhlP0xby3Qvoe/9Aef7uodtkAGQV1e/XwEmYxV6LSEDOxd9X3XkYvusiTRl4fwFOGfkAw==} + engines: {node: '>=16'} dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true + '@axiomhq/js': 1.0.0 + pino-abstract-transport: 1.2.0 + dev: false - /@css-inline/css-inline-android-arm-eabi@0.14.1: - resolution: {integrity: sha512-LNUR8TY4ldfYi0mi/d4UNuHJ+3o8yLQH9r2Nt6i4qeg1i7xswfL3n/LDLRXvGjBYqeEYNlhlBQzbPwMX1qrU6A==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 - /@css-inline/css-inline-android-arm64@0.14.1: - resolution: {integrity: sha512-tH5us0NYGoTNBHOUHVV7j9KfJ4DtFOeTLA3cM0XNoMtArNu2pmaaBMFJPqECzavfXkLc7x5Z22UPZYjoyHfvCA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 - /@css-inline/css-inline-darwin-arm64@0.14.1: - resolution: {integrity: sha512-QE5W1YRIfRayFrtrcK/wqEaxNaqLULPI0gZB4ArbFRd3d56IycvgBasDTHPre5qL2cXCO3VyPx+80XyHOaVkag==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} + engines: {node: '>=6.9.0'} dev: true - optional: true - /@css-inline/css-inline-darwin-x64@0.14.1: - resolution: {integrity: sha512-mAvv2sN8awNFsbvBzlFkZPbCNZ6GCWY5/YcIz7V5dPYw+bHHRbjnlkNTEZq5BsDxErVrMIGvz05PGgzuNvZvdQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + /@babel/compat-data@7.24.9: + resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} + engines: {node: '>=6.9.0'} - /@css-inline/css-inline-linux-arm-gnueabihf@0.14.1: - resolution: {integrity: sha512-AWC44xL0X7BgKvrWEqfSqkT2tJA5kwSGrAGT+m0gt11wnTYySvQ6YpX0fTY9i3ppYGu4bEdXFjyK2uY1DTQMHA==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true + /@babel/core@7.24.4: + resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.4) + '@babel/helpers': 7.24.4 + '@babel/parser': 7.24.4 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1(supports-color@5.5.0) + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.5(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color dev: true - optional: true - /@css-inline/css-inline-linux-arm64-gnu@0.14.1: - resolution: {integrity: sha512-drj0ciiJgdP3xKXvNAt4W+FH4KKMs8vB5iKLJ3HcH07sNZj58Sx++2GxFRS1el3p+GFp9OoYA6dgouJsGEqt0Q==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@babel/core@7.24.9: + resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helpers': 7.24.8 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + convert-source-map: 2.0.0 + debug: 4.3.5(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - /@css-inline/css-inline-linux-arm64-musl@0.14.1: - resolution: {integrity: sha512-FzknI+st8eA8YQSdEJU9ykcM0LZjjigBuynVF5/p7hiMm9OMP8aNhWbhZ8LKJpKbZrQsxSGS4g9Vnr6n6FiSdQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@babel/generator@7.24.10: + resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 - /@css-inline/css-inline-linux-x64-gnu@0.14.1: - resolution: {integrity: sha512-yubbEye+daDY/4vXnyASAxH88s256pPati1DfVoZpU1V0+KP0BZ1dByZOU1ktExurbPH3gZOWisAnBE9xon0Uw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@babel/generator@7.24.4: + resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 - /@css-inline/css-inline-linux-x64-musl@0.14.1: - resolution: {integrity: sha512-6CRAZzoy1dMLPC/tns2rTt1ZwPo0nL/jYBEIAsYTCWhfAnNnpoLKVh5Nm+fSU3OOwTTqU87UkGrFJhObD/wobQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + dev: false - /@css-inline/css-inline-win32-x64-msvc@0.14.1: - resolution: {integrity: sha512-nzotGiaiuiQW78EzsiwsHZXbxEt6DiMUFcDJ6dhiliomXxnlaPyBfZb6/FMBgRJOf6sknDt/5695OttNmbMYzg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 dev: true - optional: true - /@css-inline/css-inline@0.14.1: - resolution: {integrity: sha512-u4eku+hnPqqHIGq/ZUQcaP0TrCbYeLIYBaK7qClNRGZbnh8RC4gVxLEIo8Pceo1nOK9E5G4Lxzlw5KnXcvflfA==} - engines: {node: '>= 10'} - optionalDependencies: - '@css-inline/css-inline-android-arm-eabi': 0.14.1 - '@css-inline/css-inline-android-arm64': 0.14.1 - '@css-inline/css-inline-darwin-arm64': 0.14.1 - '@css-inline/css-inline-darwin-x64': 0.14.1 - '@css-inline/css-inline-linux-arm-gnueabihf': 0.14.1 - '@css-inline/css-inline-linux-arm64-gnu': 0.14.1 - '@css-inline/css-inline-linux-arm64-musl': 0.14.1 - '@css-inline/css-inline-linux-x64-gnu': 0.14.1 - '@css-inline/css-inline-linux-x64-musl': 0.14.1 - '@css-inline/css-inline-win32-x64-msvc': 0.14.1 - dev: true + /@babel/helper-compilation-targets@7.24.8: + resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.9 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.2 + lru-cache: 5.1.1 + semver: 6.3.1 - /@ctrl/tinycolor@3.6.1: - resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} - engines: {node: '>=10'} - dev: false + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} - /@emnapi/runtime@1.2.0: - resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - requiresBuild: true + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} dependencies: - tslib: 2.6.3 - dev: false - optional: true + '@babel/types': 7.24.9 - /@emotion/hash@0.8.0: - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} - dev: false + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.9 - /@emotion/is-prop-valid@1.2.2: - resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} dependencies: - '@emotion/memoize': 0.8.1 - dev: false + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 - /@emotion/memoize@0.8.1: - resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - dev: false + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 - /@emotion/stylis@0.8.5: - resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} - dev: false + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 - /@emotion/unitless@0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - dev: false + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.24.7 dev: true - optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + /@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9): + resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 dev: true - optional: true - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} dev: true - optional: true - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true + /@babel/helpers@7.24.4: + resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1(supports-color@5.5.0) + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color dev: true - optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + /@babel/helpers@7.24.8: + resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@babel/parser@7.24.4: + resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.9 dev: true - optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@babel/parser@7.24.8: + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.9 - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.9): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: false + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true + /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.4): + resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.4 + '@babel/helper-plugin-utils': 7.24.0 dev: true - optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@babel/runtime@7.24.4: + resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - dev: true + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true + /@babel/traverse@7.24.1(supports-color@5.5.0): + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.4 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + debug: 4.3.5(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@babel/traverse@7.24.8: + resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} + engines: {node: '>=6.9.0'} dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@5.5.0) - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + debug: 4.3.5(supports-color@5.5.0) + globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 dev: true - /@faker-js/faker@8.4.1: - resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} - dev: false + /@babel/types@7.24.9: + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 - /@fastify/busboy@2.1.1: - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - dev: false + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true - /@floating-ui/core@1.6.0: - resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + /@changesets/apply-release-plan@7.0.0: + resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} dependencies: - '@floating-ui/utils': 0.2.1 + '@babel/runtime': 7.24.4 + '@changesets/config': 3.0.0 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.6.0 dev: false - /@floating-ui/dom@1.6.3: - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + /@changesets/assemble-release-plan@6.0.0: + resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 + '@babel/runtime': 7.24.4 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.6.0 dev: false - /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + /@changesets/changelog-git@0.2.0: + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} dependencies: - '@floating-ui/dom': 1.6.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@changesets/types': 6.0.0 dev: false - /@floating-ui/utils@0.2.1: - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + /@changesets/cli@2.27.1: + resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} + hasBin: true + dependencies: + '@babel/runtime': 7.24.4 + '@changesets/apply-release-plan': 7.0.0 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.0 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-release-plan': 4.0.0 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.0 + '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.5.8 + ansi-colors: 4.1.3 + chalk: 2.4.2 + ci-info: 3.9.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.1.3 + resolve-from: 5.0.0 + semver: 7.6.0 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 4.2.3 dev: false - /@graphql-tools/merge@9.0.0(graphql@16.9.0): - resolution: {integrity: sha512-J7/xqjkGTTwOJmaJQJ2C+VDBDOWJL3lKrHJN4yMaRLAJH3PosB7GiPRaSDZdErs0+F77sH2MKs2haMMkywzx7Q==} - engines: {node: '>=16.0.0'} - requiresBuild: true - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + /@changesets/config@3.0.0: + resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.6.2 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.5 dev: false - optional: true - /@graphql-tools/schema@10.0.0(graphql@16.9.0): - resolution: {integrity: sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==} - engines: {node: '>=16.0.0'} - requiresBuild: true - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + /@changesets/errors@0.2.0: + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} dependencies: - '@graphql-tools/merge': 9.0.0(graphql@16.9.0) - '@graphql-tools/utils': 10.0.8(graphql@16.9.0) - graphql: 16.9.0 - tslib: 2.6.2 - value-or-promise: 1.0.12 + extendable-error: 0.1.7 dev: false - optional: true - /@graphql-tools/utils@10.0.8(graphql@16.9.0): - resolution: {integrity: sha512-yjyA8ycSa1WRlJqyX/aLqXeE5DvF/H02+zXMUFnCzIDrj0UvLMUrxhmVFnMK0Q2n3bh4uuTeY3621m5za9ovXw==} - engines: {node: '>=16.0.0'} - requiresBuild: true - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + /@changesets/get-dependents-graph@2.0.0: + resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) - cross-inspect: 1.0.0 - dset: 3.1.3 - graphql: 16.9.0 - tslib: 2.6.2 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.6.0 dev: false - optional: true - /@graphql-typed-document-node/core@3.2.0(graphql@16.9.0): - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - requiresBuild: true - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + /@changesets/get-release-plan@4.0.0: + resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} dependencies: - graphql: 16.9.0 + '@babel/runtime': 7.24.4 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/config': 3.0.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 dev: false - optional: true - /@hookform/resolvers@3.3.4(react-hook-form@7.51.2): - resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} - peerDependencies: - react-hook-form: ^7.0.0 + /@changesets/get-version-range-type@0.4.0: + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + dev: false + + /@changesets/git@3.0.0: + resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} dependencies: - react-hook-form: 7.51.2(react@18.2.0) + '@babel/runtime': 7.24.4 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.5 + spawndamnit: 2.0.0 dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} + /@changesets/logger@0.1.0: + resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4(supports-color@5.5.0) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true + chalk: 2.4.2 + dev: false - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true + /@changesets/parse@0.4.0: + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + dev: false - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - dev: true + /@changesets/pre@2.0.0: + resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + dependencies: + '@babel/runtime': 7.24.4 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + dev: false - /@img/sharp-darwin-arm64@0.33.3: - resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.2 + /@changesets/read@0.6.0: + resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + dependencies: + '@babel/runtime': 7.24.4 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 dev: false - optional: true - /@img/sharp-darwin-x64@0.33.3: - resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.2 + /@changesets/types@4.1.0: + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: false - optional: true - /@img/sharp-libvips-darwin-arm64@1.0.2: - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true + /@changesets/types@6.0.0: + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} dev: false - optional: true - /@img/sharp-libvips-darwin-x64@1.0.2: - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true + /@changesets/write@0.3.0: + resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} + dependencies: + '@babel/runtime': 7.24.4 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 dev: false - optional: true - /@img/sharp-libvips-linux-arm64@1.0.2: - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} requiresBuild: true - dev: false + dev: true optional: true - /@img/sharp-libvips-linux-arm@1.0.2: - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - requiresBuild: true + /@colors/colors@1.6.0: + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} dev: false - optional: true - /@img/sharp-libvips-linux-s390x@1.0.2: - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@css-inline/css-inline-android-arm-eabi@0.14.1: + resolution: {integrity: sha512-LNUR8TY4ldfYi0mi/d4UNuHJ+3o8yLQH9r2Nt6i4qeg1i7xswfL3n/LDLRXvGjBYqeEYNlhlBQzbPwMX1qrU6A==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] requiresBuild: true - dev: false + dev: true optional: true - /@img/sharp-libvips-linux-x64@1.0.2: - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] + /@css-inline/css-inline-android-arm64@0.14.1: + resolution: {integrity: sha512-tH5us0NYGoTNBHOUHVV7j9KfJ4DtFOeTLA3cM0XNoMtArNu2pmaaBMFJPqECzavfXkLc7x5Z22UPZYjoyHfvCA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] requiresBuild: true - dev: false + dev: true optional: true - /@img/sharp-libvips-linuxmusl-arm64@1.0.2: - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + /@css-inline/css-inline-darwin-arm64@0.14.1: + resolution: {integrity: sha512-QE5W1YRIfRayFrtrcK/wqEaxNaqLULPI0gZB4ArbFRd3d56IycvgBasDTHPre5qL2cXCO3VyPx+80XyHOaVkag==} + engines: {node: '>= 10'} cpu: [arm64] - os: [linux] + os: [darwin] requiresBuild: true - dev: false + dev: true optional: true - /@img/sharp-libvips-linuxmusl-x64@1.0.2: - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + /@css-inline/css-inline-darwin-x64@0.14.1: + resolution: {integrity: sha512-mAvv2sN8awNFsbvBzlFkZPbCNZ6GCWY5/YcIz7V5dPYw+bHHRbjnlkNTEZq5BsDxErVrMIGvz05PGgzuNvZvdQ==} + engines: {node: '>= 10'} cpu: [x64] - os: [linux] + os: [darwin] requiresBuild: true - dev: false + dev: true optional: true - /@img/sharp-linux-arm64@0.33.3: - resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] + /@css-inline/css-inline-linux-arm-gnueabihf@0.14.1: + resolution: {integrity: sha512-AWC44xL0X7BgKvrWEqfSqkT2tJA5kwSGrAGT+m0gt11wnTYySvQ6YpX0fTY9i3ppYGu4bEdXFjyK2uY1DTQMHA==} + engines: {node: '>= 10'} + cpu: [arm] os: [linux] requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.2 - dev: false + dev: true optional: true - /@img/sharp-linux-arm@0.33.3: - resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] + /@css-inline/css-inline-linux-arm64-gnu@0.14.1: + resolution: {integrity: sha512-drj0ciiJgdP3xKXvNAt4W+FH4KKMs8vB5iKLJ3HcH07sNZj58Sx++2GxFRS1el3p+GFp9OoYA6dgouJsGEqt0Q==} + engines: {node: '>= 10'} + cpu: [arm64] os: [linux] requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.2 - dev: false + dev: true optional: true - /@img/sharp-linux-s390x@0.33.3: - resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] + /@css-inline/css-inline-linux-arm64-musl@0.14.1: + resolution: {integrity: sha512-FzknI+st8eA8YQSdEJU9ykcM0LZjjigBuynVF5/p7hiMm9OMP8aNhWbhZ8LKJpKbZrQsxSGS4g9Vnr6n6FiSdQ==} + engines: {node: '>= 10'} + cpu: [arm64] os: [linux] requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.2 - dev: false + dev: true optional: true - /@img/sharp-linux-x64@0.33.3: - resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + /@css-inline/css-inline-linux-x64-gnu@0.14.1: + resolution: {integrity: sha512-yubbEye+daDY/4vXnyASAxH88s256pPati1DfVoZpU1V0+KP0BZ1dByZOU1ktExurbPH3gZOWisAnBE9xon0Uw==} + engines: {node: '>= 10'} cpu: [x64] os: [linux] requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.2 - dev: false + dev: true optional: true - /@img/sharp-linuxmusl-arm64@0.33.3: - resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] + /@css-inline/css-inline-linux-x64-musl@0.14.1: + resolution: {integrity: sha512-6CRAZzoy1dMLPC/tns2rTt1ZwPo0nL/jYBEIAsYTCWhfAnNnpoLKVh5Nm+fSU3OOwTTqU87UkGrFJhObD/wobQ==} + engines: {node: '>= 10'} + cpu: [x64] os: [linux] requiresBuild: true - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - dev: false + dev: true optional: true - /@img/sharp-linuxmusl-x64@0.33.3: - resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + /@css-inline/css-inline-win32-x64-msvc@0.14.1: + resolution: {integrity: sha512-nzotGiaiuiQW78EzsiwsHZXbxEt6DiMUFcDJ6dhiliomXxnlaPyBfZb6/FMBgRJOf6sknDt/5695OttNmbMYzg==} + engines: {node: '>= 10'} cpu: [x64] - os: [linux] + os: [win32] requiresBuild: true + dev: true + optional: true + + /@css-inline/css-inline@0.14.1: + resolution: {integrity: sha512-u4eku+hnPqqHIGq/ZUQcaP0TrCbYeLIYBaK7qClNRGZbnh8RC4gVxLEIo8Pceo1nOK9E5G4Lxzlw5KnXcvflfA==} + engines: {node: '>= 10'} optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@css-inline/css-inline-android-arm-eabi': 0.14.1 + '@css-inline/css-inline-android-arm64': 0.14.1 + '@css-inline/css-inline-darwin-arm64': 0.14.1 + '@css-inline/css-inline-darwin-x64': 0.14.1 + '@css-inline/css-inline-linux-arm-gnueabihf': 0.14.1 + '@css-inline/css-inline-linux-arm64-gnu': 0.14.1 + '@css-inline/css-inline-linux-arm64-musl': 0.14.1 + '@css-inline/css-inline-linux-x64-gnu': 0.14.1 + '@css-inline/css-inline-linux-x64-musl': 0.14.1 + '@css-inline/css-inline-win32-x64-msvc': 0.14.1 + dev: true + + /@ctrl/tinycolor@3.6.1: + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} dev: false - optional: true - /@img/sharp-wasm32@0.33.3: - resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [wasm32] - requiresBuild: true + /@dabh/diagnostics@2.0.3: + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} dependencies: - '@emnapi/runtime': 1.2.0 + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 dev: false - optional: true - /@img/sharp-win32-ia32@0.33.3: - resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [ia32] - os: [win32] + /@emnapi/runtime@1.2.0: + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} requiresBuild: true + dependencies: + tslib: 2.6.3 dev: false optional: true - /@img/sharp-win32-x64@0.33.3: - resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [win32] - requiresBuild: true + /@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} dev: false - optional: true - /@ioredis/commands@1.2.0: - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + /@emotion/is-prop-valid@1.2.2: + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + dependencies: + '@emotion/memoize': 0.8.1 dev: false - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + dev: false + + /@emotion/stylis@0.8.5: + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + dev: false + + /@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@jest/console@29.7.0: - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.12.12 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@jest/core@29.7.0(ts-node@10.9.2): - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.12.12 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.12.12 - jest-mock: 29.7.0 + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.6.3 + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /@jest/expect@29.7.0: - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.12 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@jest/globals@29.7.0: - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@jest/reporters@29.7.0: - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.12.12 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.2.0 - transitivePeerDependencies: - - supports-color + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@jest/source-map@29.6.3: - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@jest/test-result@29.7.0: - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@jest/test-sequencer@29.7.0: - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@jest/transform@29.7.0: - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.24.4 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.12 - '@types/yargs': 17.0.32 - chalk: 4.1.2 + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true dev: true + optional: true - /@ljharb/through@2.3.13: - resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@lukeed/csprng@1.1.0: - resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} - engines: {node: '>=8'} + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@manypkg/find-root@1.1.0: - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - dependencies: - '@babel/runtime': 7.24.4 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - dev: false + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@manypkg/get-packages@1.1.3: - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - dependencies: - '@babel/runtime': 7.24.4 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - dev: false + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@mapbox/node-pre-gyp@1.0.11: - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.0 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@microsoft/tsdoc@0.14.2: - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - dev: false + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3: - resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} - cpu: [arm64] - os: [darwin] + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3: - resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} - cpu: [x64] - os: [darwin] + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3: - resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} - cpu: [arm64] + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3: - resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} - cpu: [arm] + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3: - resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3: - resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} cpu: [x64] - os: [win32] + os: [linux] requiresBuild: true - dev: false + dev: true optional: true - /@nestjs-modules/mailer@2.0.2(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(nodemailer@6.9.14): - resolution: {integrity: sha512-+z4mADQasg0H1ZaGu4zZTuKv2pu+XdErqx99PLFPzCDNTN/q9U59WPgkxVaHnsvKHNopLj5Xap7G4ZpptduoYw==} - peerDependencies: - '@nestjs/common': '>=7.0.9' - '@nestjs/core': '>=7.0.9' - nodemailer: '>=6.4.6' - dependencies: - '@css-inline/css-inline': 0.14.1 - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - glob: 10.3.12 - nodemailer: 6.9.14 - optionalDependencies: - '@types/ejs': 3.1.5 - '@types/mjml': 4.7.4 - '@types/pug': 2.0.10 - ejs: 3.1.10 - handlebars: 4.7.8 - liquidjs: 10.16.1 - mjml: 4.15.3 - preview-email: 3.0.20 - pug: 3.0.3 - transitivePeerDependencies: - - encoding + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true dev: true + optional: true - /@nestjs/bull-shared@10.1.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7): - resolution: {integrity: sha512-su7eThDrSz1oQagEi8l+1CyZ7N6nMgmyAX0DuZoXqT1KEVEDqGX7x80RlPVF60m/8SYOskckGMjJROSfNQcErw==} - peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 - dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - tslib: 2.6.2 - dev: false + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true - /@nestjs/bull@10.1.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(bull@4.12.2): - resolution: {integrity: sha512-fbhgXNk1DpV27M8hdGH94iNJ7YonZRYyusmHb2qvvYMRBxkuzN0Hjf02jYCNUiPvCpn+WZBeEiYlYK30x3HkAQ==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.5(supports-color@5.5.0) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@faker-js/faker@8.4.1: + resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + dev: false + + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + dev: false + + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + dependencies: + '@floating-ui/utils': 0.2.1 + dev: false + + /@floating-ui/dom@1.6.3: + resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + dev: false + + /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.6.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + dev: false + + /@graphql-tools/merge@9.0.0(graphql@16.9.0): + resolution: {integrity: sha512-J7/xqjkGTTwOJmaJQJ2C+VDBDOWJL3lKrHJN4yMaRLAJH3PosB7GiPRaSDZdErs0+F77sH2MKs2haMMkywzx7Q==} + engines: {node: '>=16.0.0'} + requiresBuild: true + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 10.0.8(graphql@16.9.0) + graphql: 16.9.0 + tslib: 2.6.3 + dev: false + optional: true + + /@graphql-tools/schema@10.0.0(graphql@16.9.0): + resolution: {integrity: sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==} + engines: {node: '>=16.0.0'} + requiresBuild: true + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/merge': 9.0.0(graphql@16.9.0) + '@graphql-tools/utils': 10.0.8(graphql@16.9.0) + graphql: 16.9.0 + tslib: 2.6.3 + value-or-promise: 1.0.12 + dev: false + optional: true + + /@graphql-tools/utils@10.0.8(graphql@16.9.0): + resolution: {integrity: sha512-yjyA8ycSa1WRlJqyX/aLqXeE5DvF/H02+zXMUFnCzIDrj0UvLMUrxhmVFnMK0Q2n3bh4uuTeY3621m5za9ovXw==} + engines: {node: '>=16.0.0'} + requiresBuild: true + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + cross-inspect: 1.0.0 + dset: 3.1.3 + graphql: 16.9.0 + tslib: 2.6.3 + dev: false + optional: true + + /@graphql-typed-document-node/core@3.2.0(graphql@16.9.0): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + requiresBuild: true + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.9.0 + dev: false + + /@grpc/grpc-js@1.11.2: + resolution: {integrity: sha512-DWp92gDD7/Qkj7r8kus6/HCINeo3yPZWZ3paKgDgsbKbSpoxKg1yvN8xe2Q8uE3zOsPe3bX8FQX2+XValq2yTw==} + engines: {node: '>=12.10.0'} + dependencies: + '@grpc/proto-loader': 0.7.13 + '@js-sdsl/ordered-map': 4.4.2 + dev: false + + /@grpc/proto-loader@0.7.13: + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} + engines: {node: '>=6'} + hasBin: true + dependencies: + lodash.camelcase: 4.3.0 + long: 5.2.3 + protobufjs: 7.4.0 + yargs: 17.7.2 + dev: false + + /@hookform/resolvers@3.3.4(react-hook-form@7.51.2): + resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} + peerDependencies: + react-hook-form: ^7.0.0 + dependencies: + react-hook-form: 7.51.2(react@18.2.0) + dev: false + + /@huggingface/jinja@0.1.3: + resolution: {integrity: sha512-9KsiorsdIK8+7VmlamAT7Uh90zxAhC/SeKaKc80v58JhtPYuwaJpmR/ST7XAUxrHAFqHTCoTH5aJnJDwSL6xIQ==} + engines: {node: '>=18'} + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.5(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: true + + /@img/sharp-darwin-arm64@0.33.3: + resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.2 + dev: false + optional: true + + /@img/sharp-darwin-x64@0.33.3: + resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.2 + dev: false + optional: true + + /@img/sharp-libvips-darwin-arm64@1.0.2: + resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-darwin-x64@1.0.2: + resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm64@1.0.2: + resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-arm@1.0.2: + resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-s390x@1.0.2: + resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linux-x64@1.0.2: + resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-arm64@1.0.2: + resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-libvips-linuxmusl-x64@1.0.2: + resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-linux-arm64@0.33.3: + resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.2 + dev: false + optional: true + + /@img/sharp-linux-arm@0.33.3: + resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.2 + dev: false + optional: true + + /@img/sharp-linux-s390x@0.33.3: + resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.2 + dev: false + optional: true + + /@img/sharp-linux-x64@0.33.3: + resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.2 + dev: false + optional: true + + /@img/sharp-linuxmusl-arm64@0.33.3: + resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + dev: false + optional: true + + /@img/sharp-linuxmusl-x64@0.33.3: + resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + dev: false + optional: true + + /@img/sharp-wasm32@0.33.3: + resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@emnapi/runtime': 1.2.0 + dev: false + optional: true + + /@img/sharp-win32-ia32@0.33.3: + resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-win32-x64@0.33.3: + resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@ioredis/commands@1.2.0: + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0(ts-node@10.9.2): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.12.12)(ts-node@10.9.2) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.12.12 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.12.12 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 20.12.12 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.24.4 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.12.12 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@js-sdsl/ordered-map@4.4.2: + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + dev: false + + /@langchain/cohere@0.2.2(@aws-sdk/client-sso-oidc@3.649.0)(langchain@0.2.18)(openai@4.38.5): + resolution: {integrity: sha512-XbH6vBnPz0dmJaTMKMFriFhh4eYiajYrEg7Jr0bdejj7s7lxhST92znNrJezi76LjSTtDQo3PyLBKDktk8OxKw==} + engines: {node: '>=18'} + dependencies: + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.38.5) + cohere-ai: 7.13.0(@aws-sdk/client-sso-oidc@3.649.0) + uuid: 10.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + - encoding + - langchain + - openai + dev: false + + /@langchain/community@0.2.32(@aws-sdk/client-s3@3.649.0)(@langchain/cohere@0.2.2)(@pinecone-database/pinecone@3.0.2)(@qdrant/js-client-rest@1.11.0)(@zilliz/milvus2-sdk-node@2.4.8)(axios@1.6.8)(chromadb@1.8.1)(d3-dsv@3.0.1)(google-auth-library@9.14.1)(googleapis@144.0.0)(handlebars@4.7.8)(mammoth@1.8.0)(openai@4.38.5)(pdf-parse@1.1.1): + resolution: {integrity: sha512-FKaanuu+QAq5gRVEhCAW/CKP1cd+QG3oKY2AaL/S0yQGnCni0Q5E+YC1m6OSm6hcCv5bX7Gw6prQDJOPi+xrpw==} + engines: {node: '>=18'} + peerDependencies: + '@aws-crypto/sha256-js': ^5.0.0 + '@aws-sdk/client-bedrock-agent-runtime': ^3.583.0 + '@aws-sdk/client-bedrock-runtime': ^3.422.0 + '@aws-sdk/client-dynamodb': ^3.310.0 + '@aws-sdk/client-kendra': ^3.352.0 + '@aws-sdk/client-lambda': ^3.310.0 + '@aws-sdk/client-s3': ^3.310.0 + '@aws-sdk/client-sagemaker-runtime': ^3.310.0 + '@aws-sdk/client-sfn': ^3.310.0 + '@aws-sdk/credential-provider-node': ^3.388.0 + '@azure/search-documents': ^12.0.0 + '@azure/storage-blob': ^12.15.0 + '@browserbasehq/sdk': '*' + '@clickhouse/client': ^0.2.5 + '@cloudflare/ai': '*' + '@datastax/astra-db-ts': ^1.0.0 + '@elastic/elasticsearch': ^8.4.0 + '@getmetal/metal-sdk': '*' + '@getzep/zep-cloud': ^1.0.6 + '@getzep/zep-js': ^0.9.0 + '@gomomento/sdk': ^1.51.1 + '@gomomento/sdk-core': ^1.51.1 + '@google-ai/generativelanguage': '*' + '@google-cloud/storage': ^6.10.1 || ^7.7.0 + '@gradientai/nodejs-sdk': ^1.2.0 + '@huggingface/inference': ^2.6.4 + '@langchain/langgraph': '*' + '@layerup/layerup-security': ^1.5.12 + '@mendable/firecrawl-js': ^0.0.13 + '@mlc-ai/web-llm': 0.2.46 + '@mozilla/readability': '*' + '@neondatabase/serverless': '*' + '@notionhq/client': ^2.2.10 + '@opensearch-project/opensearch': '*' + '@pinecone-database/pinecone': '*' + '@planetscale/database': ^1.8.0 + '@premai/prem-sdk': ^0.3.25 + '@qdrant/js-client-rest': ^1.8.2 + '@raycast/api': ^1.55.2 + '@rockset/client': ^0.9.1 + '@smithy/eventstream-codec': ^2.0.5 + '@smithy/protocol-http': ^3.0.6 + '@smithy/signature-v4': ^2.0.10 + '@smithy/util-utf8': ^2.0.0 + '@spider-cloud/spider-client': ^0.0.21 + '@supabase/supabase-js': ^2.45.0 + '@tensorflow-models/universal-sentence-encoder': '*' + '@tensorflow/tfjs-converter': '*' + '@tensorflow/tfjs-core': '*' + '@upstash/ratelimit': ^1.1.3 + '@upstash/redis': ^1.20.6 + '@upstash/vector': ^1.1.1 + '@vercel/kv': ^0.2.3 + '@vercel/postgres': ^0.5.0 + '@writerai/writer-sdk': ^0.40.2 + '@xata.io/client': ^0.28.0 + '@xenova/transformers': ^2.17.2 + '@zilliz/milvus2-sdk-node': '>=2.3.5' + apify-client: ^2.7.1 + assemblyai: ^4.6.0 + better-sqlite3: '>=9.4.0 <12.0.0' + cassandra-driver: ^4.7.2 + cborg: ^4.1.1 + cheerio: ^1.0.0-rc.12 + chromadb: '*' + closevector-common: 0.1.3 + closevector-node: 0.1.6 + closevector-web: 0.1.6 + cohere-ai: '*' + convex: ^1.3.1 + couchbase: ^4.3.0 + crypto-js: ^4.2.0 + d3-dsv: ^2.0.0 + discord.js: ^14.14.1 + dria: ^0.0.3 + duck-duck-scrape: ^2.2.5 + epub2: ^3.0.1 + faiss-node: ^0.5.1 + firebase-admin: ^11.9.0 || ^12.0.0 + google-auth-library: '*' + googleapis: '*' + hnswlib-node: ^3.0.0 + html-to-text: ^9.0.5 + ignore: ^5.2.0 + interface-datastore: ^8.2.11 + ioredis: ^5.3.2 + it-all: ^3.0.4 + jsdom: '*' + jsonwebtoken: ^9.0.2 + llmonitor: ^0.5.9 + lodash: ^4.17.21 + lunary: ^0.7.10 + mammoth: ^1.6.0 + mongodb: '>=5.2.0' + mysql2: ^3.9.8 + neo4j-driver: '*' + node-llama-cpp: '*' + notion-to-md: ^3.1.0 + officeparser: ^4.0.4 + pdf-parse: 1.1.1 + pg: ^8.11.0 + pg-copy-streams: ^6.0.5 + pickleparser: ^0.2.1 + playwright: ^1.32.1 + portkey-ai: ^0.1.11 + puppeteer: '*' + redis: '*' + replicate: ^0.29.4 + sonix-speech-recognition: ^2.1.1 + srt-parser-2: ^1.2.3 + typeorm: ^0.3.20 + typesense: ^1.5.3 + usearch: ^1.1.1 + vectordb: ^0.1.4 + voy-search: 0.6.2 + weaviate-ts-client: '*' + web-auth-library: ^1.0.3 + ws: ^8.14.2 + youtube-transcript: ^1.0.6 + youtubei.js: ^9.1.0 + peerDependenciesMeta: + '@aws-crypto/sha256-js': + optional: true + '@aws-sdk/client-bedrock-agent-runtime': + optional: true + '@aws-sdk/client-bedrock-runtime': + optional: true + '@aws-sdk/client-dynamodb': + optional: true + '@aws-sdk/client-kendra': + optional: true + '@aws-sdk/client-lambda': + optional: true + '@aws-sdk/client-s3': + optional: true + '@aws-sdk/client-sagemaker-runtime': + optional: true + '@aws-sdk/client-sfn': + optional: true + '@aws-sdk/credential-provider-node': + optional: true + '@azure/search-documents': + optional: true + '@azure/storage-blob': + optional: true + '@browserbasehq/sdk': + optional: true + '@clickhouse/client': + optional: true + '@cloudflare/ai': + optional: true + '@datastax/astra-db-ts': + optional: true + '@elastic/elasticsearch': + optional: true + '@getmetal/metal-sdk': + optional: true + '@getzep/zep-cloud': + optional: true + '@getzep/zep-js': + optional: true + '@gomomento/sdk': + optional: true + '@gomomento/sdk-core': + optional: true + '@google-ai/generativelanguage': + optional: true + '@google-cloud/storage': + optional: true + '@gradientai/nodejs-sdk': + optional: true + '@huggingface/inference': + optional: true + '@langchain/langgraph': + optional: true + '@layerup/layerup-security': + optional: true + '@mendable/firecrawl-js': + optional: true + '@mlc-ai/web-llm': + optional: true + '@mozilla/readability': + optional: true + '@neondatabase/serverless': + optional: true + '@notionhq/client': + optional: true + '@opensearch-project/opensearch': + optional: true + '@pinecone-database/pinecone': + optional: true + '@planetscale/database': + optional: true + '@premai/prem-sdk': + optional: true + '@qdrant/js-client-rest': + optional: true + '@raycast/api': + optional: true + '@rockset/client': + optional: true + '@smithy/eventstream-codec': + optional: true + '@smithy/protocol-http': + optional: true + '@smithy/signature-v4': + optional: true + '@smithy/util-utf8': + optional: true + '@spider-cloud/spider-client': + optional: true + '@supabase/supabase-js': + optional: true + '@tensorflow-models/universal-sentence-encoder': + optional: true + '@tensorflow/tfjs-converter': + optional: true + '@tensorflow/tfjs-core': + optional: true + '@upstash/ratelimit': + optional: true + '@upstash/redis': + optional: true + '@upstash/vector': + optional: true + '@vercel/kv': + optional: true + '@vercel/postgres': + optional: true + '@writerai/writer-sdk': + optional: true + '@xata.io/client': + optional: true + '@xenova/transformers': + optional: true + '@zilliz/milvus2-sdk-node': + optional: true + apify-client: + optional: true + assemblyai: + optional: true + better-sqlite3: + optional: true + cassandra-driver: + optional: true + cborg: + optional: true + cheerio: + optional: true + chromadb: + optional: true + closevector-common: + optional: true + closevector-node: + optional: true + closevector-web: + optional: true + cohere-ai: + optional: true + convex: + optional: true + couchbase: + optional: true + crypto-js: + optional: true + d3-dsv: + optional: true + discord.js: + optional: true + dria: + optional: true + duck-duck-scrape: + optional: true + epub2: + optional: true + faiss-node: + optional: true + firebase-admin: + optional: true + google-auth-library: + optional: true + googleapis: + optional: true + hnswlib-node: + optional: true + html-to-text: + optional: true + ignore: + optional: true + interface-datastore: + optional: true + ioredis: + optional: true + it-all: + optional: true + jsdom: + optional: true + jsonwebtoken: + optional: true + llmonitor: + optional: true + lodash: + optional: true + lunary: + optional: true + mammoth: + optional: true + mongodb: + optional: true + mysql2: + optional: true + neo4j-driver: + optional: true + node-llama-cpp: + optional: true + notion-to-md: + optional: true + officeparser: + optional: true + pdf-parse: + optional: true + pg: + optional: true + pg-copy-streams: + optional: true + pickleparser: + optional: true + playwright: + optional: true + portkey-ai: + optional: true + puppeteer: + optional: true + redis: + optional: true + replicate: + optional: true + sonix-speech-recognition: + optional: true + srt-parser-2: + optional: true + typeorm: + optional: true + typesense: + optional: true + usearch: + optional: true + vectordb: + optional: true + voy-search: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + ws: + optional: true + youtube-transcript: + optional: true + youtubei.js: + optional: true + dependencies: + '@aws-sdk/client-s3': 3.649.0 + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.38.5) + '@langchain/openai': 0.2.10(langchain@0.2.18) + '@pinecone-database/pinecone': 3.0.2 + '@qdrant/js-client-rest': 1.11.0(typescript@5.4.4) + '@zilliz/milvus2-sdk-node': 2.4.8 + binary-extensions: 2.3.0 + chromadb: 1.8.1(openai@4.38.5) + d3-dsv: 3.0.1 + expr-eval: 2.0.2 + flat: 5.0.2 + google-auth-library: 9.14.1 + googleapis: 144.0.0 + js-yaml: 4.1.0 + langchain: 0.2.18(@aws-sdk/client-s3@3.649.0)(@langchain/cohere@0.2.2)(@langchain/community@0.2.32)(@pinecone-database/pinecone@3.0.2)(axios@1.6.8)(chromadb@1.8.1)(d3-dsv@3.0.1)(handlebars@4.7.8)(mammoth@1.8.0)(openai@4.38.5)(pdf-parse@1.1.1) + langsmith: 0.1.54(@langchain/core@0.2.31)(langchain@0.2.18)(openai@4.38.5) + mammoth: 1.8.0 + pdf-parse: 1.1.1 + uuid: 10.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - '@gomomento/sdk-web' + - '@langchain/anthropic' + - '@langchain/aws' + - '@langchain/cohere' + - '@langchain/google-genai' + - '@langchain/google-vertexai' + - '@langchain/groq' + - '@langchain/mistralai' + - '@langchain/ollama' + - axios + - encoding + - fast-xml-parser + - handlebars + - openai + - peggy + - pyodide + dev: false + + /@langchain/core@0.2.31(langchain@0.2.18)(openai@4.38.5): + resolution: {integrity: sha512-qGfeaACST7dvovgHItzuag9fEBGK7IjCE9vRuTu/y8/WYGJi28WPD/AwWxnu7YdW1vZSuIXO6ZA76t2G9B/oKg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.14 + langsmith: 0.1.54(@langchain/core@0.2.31)(langchain@0.2.18)(openai@4.38.5) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - langchain + - openai + dev: false + + /@langchain/core@0.2.31(langchain@0.2.18)(openai@4.58.2): + resolution: {integrity: sha512-qGfeaACST7dvovgHItzuag9fEBGK7IjCE9vRuTu/y8/WYGJi28WPD/AwWxnu7YdW1vZSuIXO6ZA76t2G9B/oKg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 5.2.0 + camelcase: 6.3.0 + decamelize: 1.2.0 + js-tiktoken: 1.0.14 + langsmith: 0.1.54(@langchain/core@0.2.31)(langchain@0.2.18)(openai@4.58.2) + mustache: 4.2.0 + p-queue: 6.6.2 + p-retry: 4.6.2 + uuid: 10.0.0 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - langchain + - openai + dev: false + + /@langchain/openai@0.2.10(langchain@0.2.18): + resolution: {integrity: sha512-ph5sYDAmhP55Fs3TW3+LXiqF+r/5zaaNO2tur9p2Otr8KWNDSgp5ezfPki1WWfuUJVoSQ+6HDYtr6n2V5N1Lew==} + engines: {node: '>=18'} + dependencies: + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.58.2) + js-tiktoken: 1.0.14 + openai: 4.58.2(zod@3.23.8) + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - encoding + - langchain + dev: false + + /@langchain/pinecone@0.0.9(langchain@0.2.18)(openai@4.38.5): + resolution: {integrity: sha512-zH04Jmwpwa+8+qwGyrVAzpUHQ7u1fVUmTtA42KPzgdZjiW1SLfNgl6LkgdNvFe0t+fmCtP1+HABRqhuMqZRV/A==} + engines: {node: '>=18'} + dependencies: + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.38.5) + '@pinecone-database/pinecone': 3.0.2 + flat: 5.0.2 + uuid: 10.0.0 + transitivePeerDependencies: + - langchain + - openai + dev: false + + /@langchain/qdrant@0.0.5(langchain@0.2.18)(openai@4.38.5)(typescript@5.4.4): + resolution: {integrity: sha512-zhBHE3rSBUBzIqBnR4RQB48DwXLPp5LGbCPfFCDrum4ZXDUXHQNq6Jrq8OAm6UFfx9IzMQ07Dlr7/VO6w3BlaQ==} + engines: {node: '>=18'} + dependencies: + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.38.5) + '@qdrant/js-client-rest': 1.11.0(typescript@5.4.4) + uuid: 9.0.1 + transitivePeerDependencies: + - langchain + - openai + - typescript + dev: false + + /@langchain/textsplitters@0.0.3(langchain@0.2.18)(openai@4.38.5): + resolution: {integrity: sha512-cXWgKE3sdWLSqAa8ykbCcUsUF1Kyr5J3HOWYGuobhPEycXW4WI++d5DhzdpL238mzoEXTi90VqfSCra37l5YqA==} + engines: {node: '>=18'} + dependencies: + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.38.5) + js-tiktoken: 1.0.14 + transitivePeerDependencies: + - langchain + - openai + dev: false + + /@langchain/weaviate@0.0.5(graphql@16.9.0)(langchain@0.2.18)(openai@4.38.5): + resolution: {integrity: sha512-aBr3keOeVxspvcH+jqWHTkgEMyCvVPQx65u2D8gp5NOBbawU7eaI7Xps0Ugrja3IDbHz6WPw8z2WWUQvipM8/A==} + engines: {node: '>=18'} + dependencies: + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.38.5) + uuid: 10.0.0 + weaviate-ts-client: 2.2.0(graphql@16.9.0) + transitivePeerDependencies: + - encoding + - graphql + - langchain + - openai + dev: false + + /@ljharb/through@2.3.13: + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + + /@lukeed/csprng@1.1.0: + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + + /@manypkg/find-root@1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + dependencies: + '@babel/runtime': 7.24.4 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + dev: false + + /@manypkg/get-packages@1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + dependencies: + '@babel/runtime': 7.24.4 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + dev: false + + /@mapbox/node-pre-gyp@1.0.11: + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + dependencies: + detect-libc: 2.0.3 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.6.0 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: false + + /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3: + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3: + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3: + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3: + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3: + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3: + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nestjs-modules/mailer@2.0.2(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(nodemailer@6.9.14): + resolution: {integrity: sha512-+z4mADQasg0H1ZaGu4zZTuKv2pu+XdErqx99PLFPzCDNTN/q9U59WPgkxVaHnsvKHNopLj5Xap7G4ZpptduoYw==} + peerDependencies: + '@nestjs/common': '>=7.0.9' + '@nestjs/core': '>=7.0.9' + nodemailer: '>=6.4.6' + dependencies: + '@css-inline/css-inline': 0.14.1 + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + glob: 10.3.12 + nodemailer: 6.9.14 + optionalDependencies: + '@types/ejs': 3.1.5 + '@types/mjml': 4.7.4 + '@types/pug': 2.0.10 + ejs: 3.1.10 + handlebars: 4.7.8 + liquidjs: 10.16.1 + mjml: 4.15.3 + preview-email: 3.0.20 + pug: 3.0.3 + transitivePeerDependencies: + - encoding + dev: true + + /@nestjs/bull-shared@10.1.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7): + resolution: {integrity: sha512-su7eThDrSz1oQagEi8l+1CyZ7N6nMgmyAX0DuZoXqT1KEVEDqGX7x80RlPVF60m/8SYOskckGMjJROSfNQcErw==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + tslib: 2.6.2 + dev: false + + /@nestjs/bull@10.1.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(bull@4.12.2): + resolution: {integrity: sha512-fbhgXNk1DpV27M8hdGH94iNJ7YonZRYyusmHb2qvvYMRBxkuzN0Hjf02jYCNUiPvCpn+WZBeEiYlYK30x3HkAQ==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + bull: ^3.3 || ^4.0.0 + dependencies: + '@nestjs/bull-shared': 10.1.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7) + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + bull: 4.12.2 + tslib: 2.6.2 + dev: false + + /@nestjs/cli@10.3.2: + resolution: {integrity: sha512-aWmD1GLluWrbuC4a1Iz/XBk5p74Uj6nIVZj6Ov03JbTfgtWqGFLtXuMetvzMiHxfrHehx/myt2iKAPRhKdZvTg==} + engines: {node: '>= 16.14'} + hasBin: true + peerDependencies: + '@swc/cli': ^0.1.62 || ^0.3.0 + '@swc/core': ^1.3.62 + peerDependenciesMeta: + '@swc/cli': + optional: true + '@swc/core': + optional: true + dependencies: + '@angular-devkit/core': 17.1.2(chokidar@3.6.0) + '@angular-devkit/schematics': 17.1.2(chokidar@3.6.0) + '@angular-devkit/schematics-cli': 17.1.2(chokidar@3.6.0) + '@nestjs/schematics': 10.1.1(chokidar@3.6.0)(typescript@5.3.3) + chalk: 4.1.2 + chokidar: 3.6.0 + cli-table3: 0.6.3 + commander: 4.1.1 + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.90.1) + glob: 10.3.10 + inquirer: 8.2.6 + node-emoji: 1.11.0 + ora: 5.4.1 + rimraf: 4.4.1 + shelljs: 0.8.5 + source-map-support: 0.5.21 + tree-kill: 1.2.2 + tsconfig-paths: 4.2.0 + tsconfig-paths-webpack-plugin: 4.1.0 + typescript: 5.3.3 + webpack: 5.90.1 + webpack-node-externals: 3.0.0 + transitivePeerDependencies: + - esbuild + - uglify-js + - webpack-cli + dev: true + + /@nestjs/common@10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1): + resolution: {integrity: sha512-gKFtFzcJznrwsRYjtNZoPAvSOPYdNgxbTYoAyLTpoy393cIKgLmJTHu6ReH8/qIB9AaZLdGaFLkx98W/tFWFUw==} + peerDependencies: + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + class-transformer: 0.5.1 + class-validator: 0.14.1 + iterare: 1.2.1 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + tslib: 2.6.2 + uid: 2.0.2 + + /@nestjs/config@3.2.2(@nestjs/common@10.3.7)(rxjs@7.8.1): + resolution: {integrity: sha512-vGICPOui5vE6kPz1iwQ7oCnp3qWgqxldPmBQ9onkVoKlBtyc83KJCr7CjuVtf4OdovMAVcux1d8Q6jglU2ZphA==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + rxjs: ^7.1.0 + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + dotenv: 16.4.5 + dotenv-expand: 10.0.0 + lodash: 4.17.21 + rxjs: 7.8.1 + uuid: 9.0.1 + dev: false + + /@nestjs/core@10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1): + resolution: {integrity: sha512-hsdlnfiQ3kgqHL5k7js3CU0PV7hBJVi+LfFMgCkoagRxNMf67z0GFGeOV2jk5d65ssB19qdYsDa1MGVuEaoUpg==} + requiresBuild: true + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/microservices': ^10.0.0 + '@nestjs/platform-express': ^10.0.0 + '@nestjs/websockets': ^10.0.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + rxjs: ^7.1.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + '@nestjs/websockets': + optional: true + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/platform-express': 10.3.7(@nestjs/common@10.3.7)(@nestjs/core@10.3.7) + '@nuxtjs/opencollective': 0.3.2 + fast-safe-stringify: 2.1.1 + iterare: 1.2.1 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.14 + rxjs: 7.8.1 + tslib: 2.6.2 + uid: 2.0.2 + transitivePeerDependencies: + - encoding + + /@nestjs/graphql@12.0.11(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-iCyVs9+utCQt9ehMhUjQcEdjRN/MrcTBINd7P44O1fzGENuWMbt1Z8RCoZbeGi5iVPBY63HgYik+BnnICqmxZw==} + requiresBuild: true + peerDependencies: + '@apollo/subgraph': ^2.0.0 + '@nestjs/common': ^9.3.8 || ^10.0.0 + '@nestjs/core': ^9.3.8 || ^10.0.0 + class-transformer: '*' + class-validator: '*' + graphql: ^16.6.0 + reflect-metadata: ^0.1.13 + ts-morph: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 + peerDependenciesMeta: + '@apollo/subgraph': + optional: true + class-transformer: + optional: true + class-validator: + optional: true + ts-morph: + optional: true + dependencies: + '@graphql-tools/merge': 9.0.0(graphql@16.9.0) + '@graphql-tools/schema': 10.0.0(graphql@16.9.0) + '@graphql-tools/utils': 10.0.8(graphql@16.9.0) + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/mapped-types': 2.0.2(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) + chokidar: 3.5.3 + class-transformer: 0.5.1 + class-validator: 0.14.1 + fast-glob: 3.3.2 + graphql: 16.9.0 + graphql-tag: 2.12.6(graphql@16.9.0) + graphql-ws: 5.14.2(graphql@16.9.0) + lodash: 4.17.21 + normalize-path: 3.0.0 + reflect-metadata: 0.1.14 + subscriptions-transport-ws: 0.11.0(graphql@16.9.0) + tslib: 2.6.2 + uuid: 9.0.1 + ws: 8.14.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + optional: true + + /@nestjs/jwt@10.2.0(@nestjs/common@10.3.7): + resolution: {integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@types/jsonwebtoken': 9.0.5 + jsonwebtoken: 9.0.2 + dev: false + + /@nestjs/mapped-types@2.0.2(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-V0izw6tWs6fTp9+KiiPUbGHWALy563Frn8X6Bm87ANLRuE46iuBMD5acKBDP5lKL/75QFvrzSJT7HkCbB0jTpg==} + requiresBuild: true + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + class-transformer: ^0.4.0 || ^0.5.0 + class-validator: ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + class-transformer: 0.5.1 + class-validator: 0.14.1 + reflect-metadata: 0.1.14 + dev: false + optional: true + + /@nestjs/mapped-types@2.0.5(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + class-transformer: ^0.4.0 || ^0.5.0 + class-validator: ^0.13.0 || ^0.14.0 + reflect-metadata: ^0.1.12 || ^0.2.0 + peerDependenciesMeta: + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + class-transformer: 0.5.1 + class-validator: 0.14.1 + reflect-metadata: 0.1.14 + dev: false + + /@nestjs/passport@10.0.3(@nestjs/common@10.3.7)(passport@0.6.0): + resolution: {integrity: sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + passport: ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + passport: 0.6.0 + dev: false + + /@nestjs/platform-express@10.3.7(@nestjs/common@10.3.7)(@nestjs/core@10.3.7): + resolution: {integrity: sha512-noNJ+PyIxQJLCKfuXz0tcQtlVAynfLIuKy62g70lEZ86UrIqSrZFqvWs/rFUgkbT6J8H7Rmv11hASOnX+7M2rA==} + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + body-parser: 1.20.2 + cors: 2.8.5 + express: 4.19.2 + multer: 1.4.4-lts.1 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + + /@nestjs/schedule@4.0.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7): + resolution: {integrity: sha512-cz2FNjsuoma+aGsG0cMmG6Dqg/BezbBWet1UTHtAuu6d2mXNTVcmoEQM2DIVG5Lfwb2hfSE2yZt8Moww+7y+mA==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + cron: 3.1.6 + uuid: 9.0.1 + dev: false + + /@nestjs/schematics@10.1.1(chokidar@3.6.0)(typescript@5.3.3): + resolution: {integrity: sha512-o4lfCnEeIkfJhGBbLZxTuVWcGuqDCFwg5OrvpgRUBM7vI/vONvKKiB5riVNpO+JqXoH0I42NNeDb0m4V5RREig==} + peerDependencies: + typescript: '>=4.8.2' + dependencies: + '@angular-devkit/core': 17.1.2(chokidar@3.6.0) + '@angular-devkit/schematics': 17.1.2(chokidar@3.6.0) + comment-json: 4.2.3 + jsonc-parser: 3.2.1 + pluralize: 8.0.0 + typescript: 5.3.3 + transitivePeerDependencies: + - chokidar + dev: true + + /@nestjs/schematics@10.1.1(typescript@5.4.4): + resolution: {integrity: sha512-o4lfCnEeIkfJhGBbLZxTuVWcGuqDCFwg5OrvpgRUBM7vI/vONvKKiB5riVNpO+JqXoH0I42NNeDb0m4V5RREig==} + peerDependencies: + typescript: '>=4.8.2' + dependencies: + '@angular-devkit/core': 17.1.2(chokidar@3.6.0) + '@angular-devkit/schematics': 17.1.2(chokidar@3.6.0) + comment-json: 4.2.3 + jsonc-parser: 3.2.1 + pluralize: 8.0.0 + typescript: 5.4.4 + transitivePeerDependencies: + - chokidar + dev: true + + /@nestjs/swagger@7.3.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-LUC4mr+5oAleEC/a2j8pNRh1S5xhKXJ1Gal5ZdRjt9XebQgbngXCdW7JTA9WOEcwGtFZN9EnKYdquzH971LZfw==} + peerDependencies: + '@fastify/static': ^6.0.0 || ^7.0.0 + '@nestjs/common': ^9.0.0 || ^10.0.0 + '@nestjs/core': ^9.0.0 || ^10.0.0 + class-transformer: '*' + class-validator: '*' + reflect-metadata: ^0.1.12 || ^0.2.0 + peerDependenciesMeta: + '@fastify/static': + optional: true + class-transformer: + optional: true + class-validator: + optional: true + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/mapped-types': 2.0.5(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) + class-transformer: 0.5.1 + class-validator: 0.14.1 + js-yaml: 4.1.0 + lodash: 4.17.21 + path-to-regexp: 3.2.0 + reflect-metadata: 0.1.14 + swagger-ui-dist: 5.11.2 + dev: false + + /@nestjs/testing@10.3.7(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(@nestjs/platform-express@10.3.7): + resolution: {integrity: sha512-PmwZXyoCC/m3F3IFgpgD+SNN6cDPQa/vi3YQxFruvfX3cuHq+P6ZFvBB7hwaKKsLlhA0so42LsMm41oFBkdouw==} + peerDependencies: + '@nestjs/common': ^10.0.0 + '@nestjs/core': ^10.0.0 + '@nestjs/microservices': ^10.0.0 + '@nestjs/platform-express': ^10.0.0 + peerDependenciesMeta: + '@nestjs/microservices': + optional: true + '@nestjs/platform-express': + optional: true + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/platform-express': 10.3.7(@nestjs/common@10.3.7)(@nestjs/core@10.3.7) + tslib: 2.6.2 + dev: true + + /@nestjs/throttler@5.1.2(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-60MqhSLYUqWOgc38P6C6f76JIpf6mVjly7gpuPBCKtVd0p5e8Fq855j7bJuO4/v25vgaOo1OdVs0U1qtgYioGw==} + peerDependencies: + '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + reflect-metadata: ^0.1.13 || ^0.2.0 + dependencies: + '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) + '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) + reflect-metadata: 0.1.14 + dev: false + + /@next/env@14.1.2: + resolution: {integrity: sha512-U0iEG+JF86j6qyu330sfPgsMmDVH8vWVmzZadl+an5EU3o5HqdNytOpM+HsFpl58PmhGBTKx3UmM9c+eoLK0mA==} + dev: false + + /@next/eslint-plugin-next@14.1.2: + resolution: {integrity: sha512-k9h9NfR1joJI48uwdQd/DuOV1mBgcjlmWaX45eAXCFGT96oc+/6SMjO3s7naVtTXqSKjFAgk2GDlW6Hv41ROXQ==} + dependencies: + glob: 10.3.10 + dev: true + + /@next/swc-darwin-arm64@14.1.2: + resolution: {integrity: sha512-E4/clgk0ZrYMo9eMRwP/4IO/cvXF1yEYSnGcdGfH+NYTR8bNFy76TSlc1Vb2rK3oaQY4BVHRpx8f/sMN/D5gNw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.1.2: + resolution: {integrity: sha512-j8mEOI+ZM0tU9B/L/OGa6F7d9FXYMkog5OWWuhTWzz3iZ91UKIGGpD/ojTNKuejainDMgbqOBTNnLg0jZywM/g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.1.2: + resolution: {integrity: sha512-qpRrd5hl6BFTWiFLgHtJmqqQGRMs+ol0MN9pEp0SYoLs3j8OTErPiDMhbKWjMWHGdc2E3kg4RRBV3cSTZiePiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.1.2: + resolution: {integrity: sha512-HAhvVXAv+wnbj0wztT0YnpgJVoHtw1Mv4Y1R/JJcg5yXSU8FsP2uEGUwjQaqPoD76YSZjuKl32YbJlmPgQbLFw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.1.2: + resolution: {integrity: sha512-PCWC312woXLWOXiedi1E+fEw6B/ECP1fMiK1nSoGS2E43o56Z8kq4WeJLbJoufFQGVj5ZOKU3jIVyV//3CI4wQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.1.2: + resolution: {integrity: sha512-KQSKzdWPNrYZjeTPCsepEpagOzU8Nf3Zzu53X1cLsSY6QlOIkYcSgEihRjsMKyeQW4aSvc+nN5pIpC2pLWNSMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@14.1.2: + resolution: {integrity: sha512-3b0PouKd09Ulm2T1tjaRnwQj9+UwSsMO680d/sD4XAlm29KkNmVLAEIwWTfb3L+E11Qyw+jdcN3HtbDCg5+vYA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@14.1.2: + resolution: {integrity: sha512-CC1gaJY4h+wg6d5r2biggGM6nCFXh/6WEim2VOQI0WrA6easCQi2P2hzWyrU6moQ0g1GOiWzesGc6nn0a92Kgg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@14.1.2: + resolution: {integrity: sha512-pfASwanOd+yP3D80O63DuQffrBySZPuB7wRN0IGSRq/0rDm9p/MvvnLzzgP2kSiLOUklOrFYVax7P6AEzjGykQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + /@ntegral/nestjs-sentry@4.0.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(@sentry/hub@7.114.0)(@sentry/node@8.9.2)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14)(rimraf@3.0.2)(rxjs@7.8.1): + resolution: {integrity: sha512-GQUL0Bm0T+FhTNJXUbnF5mZc2u5YuvUV2H6naXxrnw8tY0b9eE/DGj+GUyHNL7V2DuHHFzsYP2c30O5FoGoYfQ==} peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 - bull: ^3.3 || ^4.0.0 + '@nestjs/common': '>=10.0.0' + '@nestjs/core': '>=10.0.0' + '@sentry/hub': ^7.7.0 + '@sentry/node': ^7.7.0 + reflect-metadata: ^0.1.13 + rimraf: ^3.0.2 + rxjs: ^7.2.0 dependencies: - '@nestjs/bull-shared': 10.1.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7) '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - bull: 4.12.2 - tslib: 2.6.2 + '@sentry/hub': 7.114.0 + '@sentry/node': 8.9.2 + reflect-metadata: 0.1.14 + rimraf: 3.0.2 + rxjs: 7.8.1 + optionalDependencies: + '@nestjs/graphql': 12.0.11(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14) + transitivePeerDependencies: + - '@apollo/subgraph' + - bufferutil + - class-transformer + - class-validator + - graphql + - ts-morph + - utf-8-validate dev: false - /@nestjs/cli@10.3.2: - resolution: {integrity: sha512-aWmD1GLluWrbuC4a1Iz/XBk5p74Uj6nIVZj6Ov03JbTfgtWqGFLtXuMetvzMiHxfrHehx/myt2iKAPRhKdZvTg==} - engines: {node: '>= 16.14'} + /@nuxtjs/opencollective@0.3.2: + resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} hasBin: true - peerDependencies: - '@swc/cli': ^0.1.62 || ^0.3.0 - '@swc/core': ^1.3.62 - peerDependenciesMeta: - '@swc/cli': - optional: true - '@swc/core': - optional: true dependencies: - '@angular-devkit/core': 17.1.2(chokidar@3.6.0) - '@angular-devkit/schematics': 17.1.2(chokidar@3.6.0) - '@angular-devkit/schematics-cli': 17.1.2(chokidar@3.6.0) - '@nestjs/schematics': 10.1.1(chokidar@3.6.0)(typescript@5.3.3) chalk: 4.1.2 - chokidar: 3.6.0 - cli-table3: 0.6.3 - commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.3.3)(webpack@5.90.1) - glob: 10.3.10 - inquirer: 8.2.6 - node-emoji: 1.11.0 - ora: 5.4.1 - rimraf: 4.4.1 - shelljs: 0.8.5 - source-map-support: 0.5.21 - tree-kill: 1.2.2 - tsconfig-paths: 4.2.0 - tsconfig-paths-webpack-plugin: 4.1.0 - typescript: 5.3.3 - webpack: 5.90.1 - webpack-node-externals: 3.0.0 + consola: 2.15.3 + node-fetch: 2.7.0 transitivePeerDependencies: - - esbuild - - uglify-js - - webpack-cli + - encoding + + /@one-ini/wasm@0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + requiresBuild: true dev: true + optional: true - /@nestjs/common@10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1): - resolution: {integrity: sha512-gKFtFzcJznrwsRYjtNZoPAvSOPYdNgxbTYoAyLTpoy393cIKgLmJTHu6ReH8/qIB9AaZLdGaFLkx98W/tFWFUw==} - peerDependencies: - class-transformer: '*' - class-validator: '*' - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true + /@opentelemetry/api-logs@0.51.1: + resolution: {integrity: sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA==} + engines: {node: '>=14'} dependencies: - class-transformer: 0.5.1 - class-validator: 0.14.1 - iterare: 1.2.1 - reflect-metadata: 0.1.14 - rxjs: 7.8.1 - tslib: 2.6.2 - uid: 2.0.2 + '@opentelemetry/api': 1.9.0 + dev: false - /@nestjs/config@3.2.2(@nestjs/common@10.3.7)(rxjs@7.8.1): - resolution: {integrity: sha512-vGICPOui5vE6kPz1iwQ7oCnp3qWgqxldPmBQ9onkVoKlBtyc83KJCr7CjuVtf4OdovMAVcux1d8Q6jglU2ZphA==} - peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - rxjs: ^7.1.0 + /@opentelemetry/api-logs@0.52.0: + resolution: {integrity: sha512-HxjD7xH9iAE4OyhNaaSec65i1H6QZYBWSwWkowFfsc5YAcDvJG30/J1sRKXEQqdmUcKTXEAnA66UciqZha/4+Q==} + engines: {node: '>=14'} dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - dotenv: 16.4.5 - dotenv-expand: 10.0.0 - lodash: 4.17.21 - rxjs: 7.8.1 - uuid: 9.0.1 + '@opentelemetry/api': 1.9.0 dev: false - /@nestjs/core@10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1): - resolution: {integrity: sha512-hsdlnfiQ3kgqHL5k7js3CU0PV7hBJVi+LfFMgCkoagRxNMf67z0GFGeOV2jk5d65ssB19qdYsDa1MGVuEaoUpg==} - requiresBuild: true + /@opentelemetry/api-logs@0.52.1: + resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.9.0 + dev: false + + /@opentelemetry/api@1.9.0: + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + dev: false + + /@opentelemetry/context-async-hooks@1.25.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^10.0.0 - '@nestjs/microservices': ^10.0.0 - '@nestjs/platform-express': ^10.0.0 - '@nestjs/websockets': ^10.0.0 - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true - '@nestjs/websockets': - optional: true + '@opentelemetry/api': '>=1.0.0 <1.10.0' dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/platform-express': 10.3.7(@nestjs/common@10.3.7)(@nestjs/core@10.3.7) - '@nuxtjs/opencollective': 0.3.2 - fast-safe-stringify: 2.1.1 - iterare: 1.2.1 - path-to-regexp: 3.2.0 - reflect-metadata: 0.1.14 - rxjs: 7.8.1 - tslib: 2.6.2 - uid: 2.0.2 - transitivePeerDependencies: - - encoding + '@opentelemetry/api': 1.9.0 + dev: false - /@nestjs/graphql@12.0.11(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14): - resolution: {integrity: sha512-iCyVs9+utCQt9ehMhUjQcEdjRN/MrcTBINd7P44O1fzGENuWMbt1Z8RCoZbeGi5iVPBY63HgYik+BnnICqmxZw==} - requiresBuild: true + /@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==} + engines: {node: '>=14'} peerDependencies: - '@apollo/subgraph': ^2.0.0 - '@nestjs/common': ^9.3.8 || ^10.0.0 - '@nestjs/core': ^9.3.8 || ^10.0.0 - class-transformer: '*' - class-validator: '*' - graphql: ^16.6.0 - reflect-metadata: ^0.1.13 - ts-morph: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 - peerDependenciesMeta: - '@apollo/subgraph': - optional: true - class-transformer: - optional: true - class-validator: - optional: true - ts-morph: - optional: true + '@opentelemetry/api': '>=1.0.0 <1.10.0' dependencies: - '@graphql-tools/merge': 9.0.0(graphql@16.9.0) - '@graphql-tools/schema': 10.0.0(graphql@16.9.0) - '@graphql-tools/utils': 10.0.8(graphql@16.9.0) - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/mapped-types': 2.0.2(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) - chokidar: 3.5.3 - class-transformer: 0.5.1 - class-validator: 0.14.1 - fast-glob: 3.3.2 - graphql: 16.9.0 - graphql-tag: 2.12.6(graphql@16.9.0) - graphql-ws: 5.14.2(graphql@16.9.0) - lodash: 4.17.21 - normalize-path: 3.0.0 - reflect-metadata: 0.1.14 - subscriptions-transport-ws: 0.11.0(graphql@16.9.0) - tslib: 2.6.2 - uuid: 9.0.1 - ws: 8.14.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.25.0 dev: false - optional: true - /@nestjs/jwt@10.2.0(@nestjs/common@10.3.7): - resolution: {integrity: sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==} + /@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@opentelemetry/api': '>=1.0.0 <1.10.0' dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@types/jsonwebtoken': 9.0.5 - jsonwebtoken: 9.0.2 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.25.1 dev: false - /@nestjs/mapped-types@2.0.2(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14): - resolution: {integrity: sha512-V0izw6tWs6fTp9+KiiPUbGHWALy563Frn8X6Bm87ANLRuE46iuBMD5acKBDP5lKL/75QFvrzSJT7HkCbB0jTpg==} - requiresBuild: true + /@opentelemetry/instrumentation-connect@0.37.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-SeQktDIH5rNzjiEiazWiJAIXkmnLOnNV7wwHpahrqE0Ph+Z3heqMfxRtoMtbdJSIYLfcNZYO51AjxZ00IXufdw==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - class-transformer: ^0.4.0 || ^0.5.0 - class-validator: ^0.13.0 || ^0.14.0 - reflect-metadata: ^0.1.12 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true + '@opentelemetry/api': ^1.3.0 dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - class-transformer: 0.5.1 - class-validator: 0.14.1 - reflect-metadata: 0.1.14 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@types/connect': 3.4.36 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@nestjs/mapped-types@2.0.5(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14): - resolution: {integrity: sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg==} + /@opentelemetry/instrumentation-connect@0.38.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - class-transformer: ^0.4.0 || ^0.5.0 - class-validator: ^0.13.0 || ^0.14.0 - reflect-metadata: ^0.1.12 || ^0.2.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true + '@opentelemetry/api': ^1.3.0 dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - class-transformer: 0.5.1 - class-validator: 0.14.1 - reflect-metadata: 0.1.14 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@types/connect': 3.4.36 + transitivePeerDependencies: + - supports-color dev: false - /@nestjs/passport@10.0.3(@nestjs/common@10.3.7)(passport@0.6.0): - resolution: {integrity: sha512-znJ9Y4S8ZDVY+j4doWAJ8EuuVO7SkQN3yOBmzxbGaXbvcSwFDAdGJ+OMCg52NdzIO4tQoN4pYKx8W6M0ArfFRQ==} + /@opentelemetry/instrumentation-express@0.40.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-+RKMvVe2zw3kIXRup9c1jFu3T4d0fs5aKy015TpiMyoCKX1UMu3Z0lfgYtuyiSTANvg5hZnDbWmQmqSPj9VTvg==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - passport: ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 + '@opentelemetry/api': ^1.3.0 dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - passport: 0.6.0 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - /@nestjs/platform-express@10.3.7(@nestjs/common@10.3.7)(@nestjs/core@10.3.7): - resolution: {integrity: sha512-noNJ+PyIxQJLCKfuXz0tcQtlVAynfLIuKy62g70lEZ86UrIqSrZFqvWs/rFUgkbT6J8H7Rmv11hASOnX+7M2rA==} + /@opentelemetry/instrumentation-express@0.41.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-/B7fbMdaf3SYe5f1P973tkqd6s7XZirjpfkoJ63E7nltU30qmlgm9tY5XwZOzAFI0rHS9tbrFI2HFPAvQUFe/A==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^10.0.0 - '@nestjs/core': ^10.0.0 + '@opentelemetry/api': ^1.3.0 dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - body-parser: 1.20.2 - cors: 2.8.5 - express: 4.19.2 - multer: 1.4.4-lts.1 - tslib: 2.6.2 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 transitivePeerDependencies: - supports-color + dev: false - /@nestjs/schedule@4.0.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7): - resolution: {integrity: sha512-cz2FNjsuoma+aGsG0cMmG6Dqg/BezbBWet1UTHtAuu6d2mXNTVcmoEQM2DIVG5Lfwb2hfSE2yZt8Moww+7y+mA==} + /@opentelemetry/instrumentation-fastify@0.37.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-WRjwzNZgupSzbEYvo9s+QuHJRqZJjVdNxSEpGBwWK8RKLlHGwGVAu0gcc2gPamJWUJsGqPGvahAPWM18ZkWj6A==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 - '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@opentelemetry/api': ^1.3.0 dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - cron: 3.1.6 - uuid: 9.0.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - /@nestjs/schematics@10.1.1(chokidar@3.6.0)(typescript@5.3.3): - resolution: {integrity: sha512-o4lfCnEeIkfJhGBbLZxTuVWcGuqDCFwg5OrvpgRUBM7vI/vONvKKiB5riVNpO+JqXoH0I42NNeDb0m4V5RREig==} + /@opentelemetry/instrumentation-fastify@0.38.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw==} + engines: {node: '>=14'} peerDependencies: - typescript: '>=4.8.2' + '@opentelemetry/api': ^1.3.0 dependencies: - '@angular-devkit/core': 17.1.2(chokidar@3.6.0) - '@angular-devkit/schematics': 17.1.2(chokidar@3.6.0) - comment-json: 4.2.3 - jsonc-parser: 3.2.1 - pluralize: 8.0.0 - typescript: 5.3.3 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 transitivePeerDependencies: - - chokidar - dev: true + - supports-color + dev: false - /@nestjs/schematics@10.1.1(typescript@5.4.4): - resolution: {integrity: sha512-o4lfCnEeIkfJhGBbLZxTuVWcGuqDCFwg5OrvpgRUBM7vI/vONvKKiB5riVNpO+JqXoH0I42NNeDb0m4V5RREig==} + /@opentelemetry/instrumentation-graphql@0.41.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-R/gXeljgIhaRDKquVkKYT5QHPnFouM8ooyePZEP0kqyaVAedtR1V7NfAUJbxfTG5fBQa5wdmLjvu63+tzRXZCA==} + engines: {node: '>=14'} peerDependencies: - typescript: '>=4.8.2' + '@opentelemetry/api': ^1.3.0 dependencies: - '@angular-devkit/core': 17.1.2(chokidar@3.6.0) - '@angular-devkit/schematics': 17.1.2(chokidar@3.6.0) - comment-json: 4.2.3 - jsonc-parser: 3.2.1 - pluralize: 8.0.0 - typescript: 5.4.4 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - - chokidar - dev: true + - supports-color + dev: false - /@nestjs/swagger@7.3.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14): - resolution: {integrity: sha512-LUC4mr+5oAleEC/a2j8pNRh1S5xhKXJ1Gal5ZdRjt9XebQgbngXCdW7JTA9WOEcwGtFZN9EnKYdquzH971LZfw==} + /@opentelemetry/instrumentation-graphql@0.42.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q==} + engines: {node: '>=14'} peerDependencies: - '@fastify/static': ^6.0.0 || ^7.0.0 - '@nestjs/common': ^9.0.0 || ^10.0.0 - '@nestjs/core': ^9.0.0 || ^10.0.0 - class-transformer: '*' - class-validator: '*' - reflect-metadata: ^0.1.12 || ^0.2.0 - peerDependenciesMeta: - '@fastify/static': - optional: true - class-transformer: - optional: true - class-validator: - optional: true + '@opentelemetry/api': ^1.3.0 dependencies: - '@microsoft/tsdoc': 0.14.2 - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/mapped-types': 2.0.5(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) - class-transformer: 0.5.1 - class-validator: 0.14.1 - js-yaml: 4.1.0 - lodash: 4.17.21 - path-to-regexp: 3.2.0 - reflect-metadata: 0.1.14 - swagger-ui-dist: 5.11.2 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color dev: false - /@nestjs/testing@10.3.7(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(@nestjs/platform-express@10.3.7): - resolution: {integrity: sha512-PmwZXyoCC/m3F3IFgpgD+SNN6cDPQa/vi3YQxFruvfX3cuHq+P6ZFvBB7hwaKKsLlhA0so42LsMm41oFBkdouw==} + /@opentelemetry/instrumentation-hapi@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-ik2nA9Yj2s2ay+aNY+tJsKCsEx6Tsc2g/MK0iWBW5tibwrWKTy1pdVt5sB3kd5Gkimqj23UV5+FH2JFcQLeKug==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^10.0.0 - '@nestjs/core': ^10.0.0 - '@nestjs/microservices': ^10.0.0 - '@nestjs/platform-express': ^10.0.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true + '@opentelemetry/api': ^1.3.0 dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/platform-express': 10.3.7(@nestjs/common@10.3.7)(@nestjs/core@10.3.7) - tslib: 2.6.2 - dev: true + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color + dev: false - /@nestjs/throttler@5.1.2(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(reflect-metadata@0.1.14): - resolution: {integrity: sha512-60MqhSLYUqWOgc38P6C6f76JIpf6mVjly7gpuPBCKtVd0p5e8Fq855j7bJuO4/v25vgaOo1OdVs0U1qtgYioGw==} + /@opentelemetry/instrumentation-hapi@0.40.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - '@nestjs/core': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - reflect-metadata: ^0.1.13 || ^0.2.0 + '@opentelemetry/api': ^1.3.0 dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - reflect-metadata: 0.1.14 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - /@next/env@14.1.2: - resolution: {integrity: sha512-U0iEG+JF86j6qyu330sfPgsMmDVH8vWVmzZadl+an5EU3o5HqdNytOpM+HsFpl58PmhGBTKx3UmM9c+eoLK0mA==} + /@opentelemetry/instrumentation-http@0.52.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-E6ywZuxTa4LnVXZGwL1oj3e2Eog1yIaNqa8KjKXoGkDNKte9/SjQnePXOmhQYI0A9nf0UyFbP9aKd+yHrkJXUA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color dev: false - /@next/eslint-plugin-next@14.1.2: - resolution: {integrity: sha512-k9h9NfR1joJI48uwdQd/DuOV1mBgcjlmWaX45eAXCFGT96oc+/6SMjO3s7naVtTXqSKjFAgk2GDlW6Hv41ROXQ==} + /@opentelemetry/instrumentation-http@0.52.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 dependencies: - glob: 10.3.10 - dev: true - - /@next/swc-darwin-arm64@14.1.2: - resolution: {integrity: sha512-E4/clgk0ZrYMo9eMRwP/4IO/cvXF1yEYSnGcdGfH+NYTR8bNFy76TSlc1Vb2rK3oaQY4BVHRpx8f/sMN/D5gNw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@next/swc-darwin-x64@14.1.2: - resolution: {integrity: sha512-j8mEOI+ZM0tU9B/L/OGa6F7d9FXYMkog5OWWuhTWzz3iZ91UKIGGpD/ojTNKuejainDMgbqOBTNnLg0jZywM/g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true + /@opentelemetry/instrumentation-ioredis@0.41.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-rxiLloU8VyeJGm5j2fZS8ShVdB82n7VNP8wTwfUQqDwRfHCnkzGr+buKoxuhGD91gtwJ91RHkjHA1Eg6RqsUTg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@next/swc-linux-arm64-gnu@14.1.2: - resolution: {integrity: sha512-qpRrd5hl6BFTWiFLgHtJmqqQGRMs+ol0MN9pEp0SYoLs3j8OTErPiDMhbKWjMWHGdc2E3kg4RRBV3cSTZiePiQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@opentelemetry/instrumentation-ioredis@0.42.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@next/swc-linux-arm64-musl@14.1.2: - resolution: {integrity: sha512-HAhvVXAv+wnbj0wztT0YnpgJVoHtw1Mv4Y1R/JJcg5yXSU8FsP2uEGUwjQaqPoD76YSZjuKl32YbJlmPgQbLFw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true + /@opentelemetry/instrumentation-koa@0.41.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-mbPnDt7ELvpM2S0vixYUsde7122lgegLOJQxx8iJQbB8YHal/xnTh9v7IfArSVzIDo+E+080hxZyUZD4boOWkw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@types/koa': 2.14.0 + '@types/koa__router': 12.0.3 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@next/swc-linux-x64-gnu@14.1.2: - resolution: {integrity: sha512-PCWC312woXLWOXiedi1E+fEw6B/ECP1fMiK1nSoGS2E43o56Z8kq4WeJLbJoufFQGVj5ZOKU3jIVyV//3CI4wQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true + /@opentelemetry/instrumentation-koa@0.42.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@next/swc-linux-x64-musl@14.1.2: - resolution: {integrity: sha512-KQSKzdWPNrYZjeTPCsepEpagOzU8Nf3Zzu53X1cLsSY6QlOIkYcSgEihRjsMKyeQW4aSvc+nN5pIpC2pLWNSMA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true + /@opentelemetry/instrumentation-mongodb@0.45.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-xnZP9+ayeB1JJyNE9cIiwhOJTzNEsRhXVdLgfzmrs48Chhhk026mQdM5CITfyXSCfN73FGAIB8d91+pflJEfWQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@next/swc-win32-arm64-msvc@14.1.2: - resolution: {integrity: sha512-3b0PouKd09Ulm2T1tjaRnwQj9+UwSsMO680d/sD4XAlm29KkNmVLAEIwWTfb3L+E11Qyw+jdcN3HtbDCg5+vYA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true + /@opentelemetry/instrumentation-mongodb@0.46.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@next/swc-win32-ia32-msvc@14.1.2: - resolution: {integrity: sha512-CC1gaJY4h+wg6d5r2biggGM6nCFXh/6WEim2VOQI0WrA6easCQi2P2hzWyrU6moQ0g1GOiWzesGc6nn0a92Kgg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true + /@opentelemetry/instrumentation-mongoose@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-J1r66A7zJklPPhMtrFOO7/Ud2p0Pv5u8+r23Cd1JUH6fYPmftNJVsLp2urAt6PHK4jVqpP/YegN8wzjJ2mZNPQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@next/swc-win32-x64-msvc@14.1.2: - resolution: {integrity: sha512-pfASwanOd+yP3D80O63DuQffrBySZPuB7wRN0IGSRq/0rDm9p/MvvnLzzgP2kSiLOUklOrFYVax7P6AEzjGykQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true + /@opentelemetry/instrumentation-mongoose@0.40.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-niRi5ZUnkgzRhIGMOozTyoZIvJKNJyhijQI4nF4iFSb+FUx2v5fngfR+8XLmdQAO7xmsD8E5vEGdDVYVtKbZew==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - optional: true - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + /@opentelemetry/instrumentation-mysql2@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-Iypuq2z6TCfriAXCIZjRq8GTFCKhQv5SpXbmI+e60rYdXw8NHtMH4NXcGF0eKTuoCsC59IYSTUvDQYDKReaszA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + /@opentelemetry/instrumentation-mysql2@0.40.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + /@opentelemetry/instrumentation-mysql@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-8snHPh83rhrDf31v9Kq0Nf+ts8hdr7NguuszRqZomZBHgE0+UyXZSkXHAAFZoBPPRMGyM68uaFE5hVtFl+wOcA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@types/mysql': 2.15.22 + transitivePeerDependencies: + - supports-color + dev: false - /@ntegral/nestjs-sentry@4.0.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(@sentry/hub@7.114.0)(@sentry/node@8.9.2)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14)(rimraf@3.0.2)(rxjs@7.8.1): - resolution: {integrity: sha512-GQUL0Bm0T+FhTNJXUbnF5mZc2u5YuvUV2H6naXxrnw8tY0b9eE/DGj+GUyHNL7V2DuHHFzsYP2c30O5FoGoYfQ==} + /@opentelemetry/instrumentation-mysql@0.40.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA==} + engines: {node: '>=14'} peerDependencies: - '@nestjs/common': '>=10.0.0' - '@nestjs/core': '>=10.0.0' - '@sentry/hub': ^7.7.0 - '@sentry/node': ^7.7.0 - reflect-metadata: ^0.1.13 - rimraf: ^3.0.2 - rxjs: ^7.2.0 + '@opentelemetry/api': ^1.3.0 dependencies: - '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@sentry/hub': 7.114.0 - '@sentry/node': 8.9.2 - reflect-metadata: 0.1.14 - rimraf: 3.0.2 - rxjs: 7.8.1 - optionalDependencies: - '@nestjs/graphql': 12.0.11(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@types/mysql': 2.15.22 transitivePeerDependencies: - - '@apollo/subgraph' - - bufferutil - - class-transformer - - class-validator - - graphql - - ts-morph - - utf-8-validate + - supports-color dev: false - /@nuxtjs/opencollective@0.3.2: - resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true + /@opentelemetry/instrumentation-nestjs-core@0.38.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-M381Df1dM8aqihZz2yK+ugvMFK5vlHG/835dc67Sx2hH4pQEQYDA2PpFPTgc9AYYOydQaj7ClFQunESimjXDgg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 dependencies: - chalk: 4.1.2 - consola: 2.15.3 - node-fetch: 2.7.0 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 transitivePeerDependencies: - - encoding + - supports-color + dev: false - /@one-ini/wasm@0.1.1: - resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - requiresBuild: true - dev: true - optional: true + /@opentelemetry/instrumentation-nestjs-core@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color + dev: false - /@opentelemetry/api-logs@0.51.1: - resolution: {integrity: sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA==} + /@opentelemetry/instrumentation-pg@0.42.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-sjgcM8CswYy8zxHgXv4RAZ09DlYhQ+9TdlourUs63Df/ek5RrB1ZbjznqW7PB6c3TyJJmX6AVtPTjAsROovEjA==} engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + '@types/pg': 8.6.1 + '@types/pg-pool': 2.0.4 + transitivePeerDependencies: + - supports-color dev: false - /@opentelemetry/api-logs@0.52.0: - resolution: {integrity: sha512-HxjD7xH9iAE4OyhNaaSec65i1H6QZYBWSwWkowFfsc5YAcDvJG30/J1sRKXEQqdmUcKTXEAnA66UciqZha/4+Q==} + /@opentelemetry/instrumentation-pg@0.43.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw==} engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + '@types/pg': 8.6.1 + '@types/pg-pool': 2.0.4 + transitivePeerDependencies: + - supports-color dev: false - /@opentelemetry/api-logs@0.52.1: - resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} + /@opentelemetry/instrumentation-redis-4@0.40.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-0ieQYJb6yl35kXA75LQUPhHtGjtQU9L85KlWa7d4ohBbk/iQKZ3X3CFl5jC5vNMq/GGPB3+w3IxNvALlHtrp7A==} engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - /@opentelemetry/api@1.9.0: - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} + /@opentelemetry/instrumentation-redis-4@0.41.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-H7IfGTqW2reLXqput4yzAe8YpDC0fmVNal95GHMLOrS89W+qWUKIqxolSh63hJyfmwPSFwXASzj7wpSk8Az+Dg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.25.1 + transitivePeerDependencies: + - supports-color dev: false - /@opentelemetry/context-async-hooks@1.25.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==} + /@opentelemetry/instrumentation@0.43.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-S1uHE+sxaepgp+t8lvIDuRgyjJWisAb733198kwQTUc9ZtYQ2V2gmyCtR1x21ePGVLoMiX/NWY7WA290hwkjJQ==} engines: {node: '>=14'} + requiresBuild: true peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.9.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.4.2 + require-in-the-middle: 7.3.0 + semver: 7.6.0 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color dev: false + optional: true - /@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==} + /@opentelemetry/instrumentation@0.46.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw==} engines: {node: '>=14'} + requiresBuild: true peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.25.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.7.1 + require-in-the-middle: 7.3.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color dev: false + optional: true - /@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==} + /@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.25.1 + '@opentelemetry/api-logs': 0.51.1 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.7.4 + require-in-the-middle: 7.3.0 + semver: 7.6.0 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color dev: false - /@opentelemetry/instrumentation-connect@0.37.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-SeQktDIH5rNzjiEiazWiJAIXkmnLOnNV7wwHpahrqE0Ph+Z3heqMfxRtoMtbdJSIYLfcNZYO51AjxZ00IXufdw==} + /@opentelemetry/instrumentation@0.52.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-LPwSIrw+60cheWaXsfGL8stBap/AppKQJFE+qqRvzYrgttXFH2ofoIMxWadeqPTq4BYOXM/C7Bdh/T+B60xnlQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@types/connect': 3.4.36 + '@opentelemetry/api-logs': 0.52.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.8.0 + require-in-the-middle: 7.3.0 + semver: 7.6.0 + shimmer: 1.2.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-connect@0.38.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg==} + /@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@types/connect': 3.4.36 + '@opentelemetry/api-logs': 0.52.1 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.9.0 + require-in-the-middle: 7.3.0 + semver: 7.6.0 + shimmer: 1.2.1 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-express@0.40.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-+RKMvVe2zw3kIXRup9c1jFu3T4d0fs5aKy015TpiMyoCKX1UMu3Z0lfgYtuyiSTANvg5hZnDbWmQmqSPj9VTvg==} + /@opentelemetry/redis-common@0.36.2: + resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/resources@1.25.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@opentelemetry/api': '>=1.0.0 <1.10.0' dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color dev: false - /@opentelemetry/instrumentation-express@0.41.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-/B7fbMdaf3SYe5f1P973tkqd6s7XZirjpfkoJ63E7nltU30qmlgm9tY5XwZOzAFI0rHS9tbrFI2HFPAvQUFe/A==} + /@opentelemetry/sdk-metrics@1.25.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@opentelemetry/api': '>=1.3.0 <1.10.0' dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + lodash.merge: 4.6.2 + dev: false + + /@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color dev: false - /@opentelemetry/instrumentation-fastify@0.37.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-WRjwzNZgupSzbEYvo9s+QuHJRqZJjVdNxSEpGBwWK8RKLlHGwGVAu0gcc2gPamJWUJsGqPGvahAPWM18ZkWj6A==} + /@opentelemetry/semantic-conventions@1.25.0: + resolution: {integrity: sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/semantic-conventions@1.25.1: + resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@opentelemetry/api': ^1.1.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + dev: false + + /@petamoriken/float16@3.8.7: + resolution: {integrity: sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==} + dev: false + + /@pinecone-database/pinecone@3.0.2: + resolution: {integrity: sha512-OarESoYHlAEKh09pAzFs7QglCupd6Cv5QUIe9GHiFuVpyIFnBecklcRwWtLL1Qnd0cCFU7XvaWryFwrE4Pr4gA==} + engines: {node: '>=18.0.0'} + dependencies: + encoding: 0.1.13 + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + optional: true + + /@pnpm/config.env-replace@1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: false + + /@pnpm/network.ca-file@1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: false + + /@pnpm/npm-conf@2.2.2: + resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} + engines: {node: '>=12'} + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + dev: false + + /@prisma/client@5.12.1(prisma@5.12.1): + resolution: {integrity: sha512-6/JnizEdlSBxDIdiLbrBdMW5NqDxOmhXAJaNXiPpgzAPr/nLZResT6MMpbOHLo5yAbQ1Vv5UU8PTPRzb0WIxdA==} + engines: {node: '>=16.13'} + requiresBuild: true + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true + dependencies: + prisma: 5.12.1 + dev: false + + /@prisma/debug@5.12.1: + resolution: {integrity: sha512-kd/wNsR0klrv79o1ITsbWxYyh4QWuBidvxsXSParPsYSu0ircUmNk3q4ojsgNc3/81b0ozg76iastOG43tbf8A==} + + /@prisma/engines-version@5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab: + resolution: {integrity: sha512-6yvO8s80Tym61aB4QNtYZfWVmE3pwqe807jEtzm8C5VDe7nw8O1FGX3TXUaXmWV0fQTIAfRbeL2Gwrndabp/0g==} + + /@prisma/engines@5.12.1: + resolution: {integrity: sha512-HQDdglLw2bZR/TXD2Y+YfDMvi5Q8H+acbswqOsWyq9pPjBLYJ6gzM+ptlTU/AV6tl0XSZLU1/7F4qaWa8bqpJA==} + requiresBuild: true + dependencies: + '@prisma/debug': 5.12.1 + '@prisma/engines-version': 5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab + '@prisma/fetch-engine': 5.12.1 + '@prisma/get-platform': 5.12.1 + + /@prisma/fetch-engine@5.12.1: + resolution: {integrity: sha512-qSs3KcX1HKcea1A+hlJVK/ljj0PNIUHDxAayGMvgJBqmaN32P9tCidlKz1EGv6WoRFICYnk3Dd/YFLBwnFIozA==} + dependencies: + '@prisma/debug': 5.12.1 + '@prisma/engines-version': 5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab + '@prisma/get-platform': 5.12.1 + + /@prisma/get-platform@5.12.1: + resolution: {integrity: sha512-pgIR+pSvhYHiUcqXVEZS31NrFOTENC9yFUdEAcx7cdQBoZPmHVjtjN4Ss6NzVDMYPrKJJ51U14EhEoeuBlMioQ==} + dependencies: + '@prisma/debug': 5.12.1 + + /@prisma/instrumentation@5.15.0: + resolution: {integrity: sha512-fCWOOOajTKOUEp43gRmBqwt6oN9bPJcLiloi2OG/2ED0N5z62Cuza6FDrlm3SJHQAXYlXqLE0HLdEE5WcUkOzg==} dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-fastify@0.38.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 + /@prisma/instrumentation@5.16.1: + resolution: {integrity: sha512-4m5gRFWnQb8s/yTyGbMZkL7A5uJgqOWcWJxapwcAD0T0kh5sGPEVSQl/zTQvE9aduXhFAxOtC3gO+R8Hb5xO1Q==} dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-graphql@0.41.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-R/gXeljgIhaRDKquVkKYT5QHPnFouM8ooyePZEP0kqyaVAedtR1V7NfAUJbxfTG5fBQa5wdmLjvu63+tzRXZCA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} dev: false - /@opentelemetry/instrumentation-graphql@0.42.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} dev: false - /@opentelemetry/instrumentation-hapi@0.39.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-ik2nA9Yj2s2ay+aNY+tJsKCsEx6Tsc2g/MK0iWBW5tibwrWKTy1pdVt5sB3kd5Gkimqj23UV5+FH2JFcQLeKug==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} dev: false - /@opentelemetry/instrumentation-hapi@0.40.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} dev: false - /@opentelemetry/instrumentation-http@0.52.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-E6ywZuxTa4LnVXZGwL1oj3e2Eog1yIaNqa8KjKXoGkDNKte9/SjQnePXOmhQYI0A9nf0UyFbP9aKd+yHrkJXUA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.0 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 dev: false - /@opentelemetry/instrumentation-http@0.52.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q==} - engines: {node: '>=14'} + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + dev: false + + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + dev: false + + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + dev: false + + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + dev: false + + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + dev: false + + /@qdrant/js-client-rest@1.11.0(typescript@5.4.4): + resolution: {integrity: sha512-RzF+HxL8A7bb/uaxU1jVS1a919bb3FCo1giB/D19UT3d50AYl4+4AyklbsjlXpWEHekbNocQAQ016fqT9hSRtQ==} + engines: {node: '>=18.0.0', pnpm: '>=8'} peerDependencies: - '@opentelemetry/api': ^1.3.0 + typescript: '>=4.7' dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color + '@qdrant/openapi-typescript-fetch': 1.2.6 + '@sevinf/maybe': 0.5.0 + typescript: 5.4.4 + undici: 5.28.4 dev: false - /@opentelemetry/instrumentation-ioredis@0.41.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-rxiLloU8VyeJGm5j2fZS8ShVdB82n7VNP8wTwfUQqDwRfHCnkzGr+buKoxuhGD91gtwJ91RHkjHA1Eg6RqsUTg==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 + /@qdrant/openapi-typescript-fetch@1.2.6: + resolution: {integrity: sha512-oQG/FejNpItrxRHoyctYvT3rwGZOnK4jr3JdppO/c78ktDvkWiPXPHNsrDf33K9sZdRb6PR7gi4noIapu5q4HA==} + engines: {node: '>=18.0.0', pnpm: '>=8'} + dev: false + + /@radix-ui/number@1.0.1: + resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 dev: false - /@opentelemetry/instrumentation-ioredis@0.42.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 + /@radix-ui/primitive@1.0.0: + resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 dev: false - /@opentelemetry/instrumentation-koa@0.41.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-mbPnDt7ELvpM2S0vixYUsde7122lgegLOJQxx8iJQbB8YHal/xnTh9v7IfArSVzIDo+E+080hxZyUZD4boOWkw==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 + /@radix-ui/primitive@1.0.1: + resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@types/koa': 2.14.0 - '@types/koa__router': 12.0.3 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 dev: false - /@opentelemetry/instrumentation-koa@0.42.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw==} - engines: {node: '>=14'} + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/instrumentation-mongodb@0.45.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-xnZP9+ayeB1JJyNE9cIiwhOJTzNEsRhXVdLgfzmrs48Chhhk026mQdM5CITfyXSCfN73FGAIB8d91+pflJEfWQ==} - engines: {node: '>=14'} + /@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/instrumentation-mongodb@0.46.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA==} - engines: {node: '>=14'} + /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/instrumentation-mongoose@0.39.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-J1r66A7zJklPPhMtrFOO7/Ud2p0Pv5u8+r23Cd1JUH6fYPmftNJVsLp2urAt6PHK4jVqpP/YegN8wzjJ2mZNPQ==} - engines: {node: '>=14'} + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/instrumentation-mongoose@0.40.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-niRi5ZUnkgzRhIGMOozTyoZIvJKNJyhijQI4nF4iFSb+FUx2v5fngfR+8XLmdQAO7xmsD8E5vEGdDVYVtKbZew==} - engines: {node: '>=14'} + /@radix-ui/react-compose-refs@1.0.0(react@18.2.0): + resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + react: 18.2.0 dev: false - /@opentelemetry/instrumentation-mysql2@0.39.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-Iypuq2z6TCfriAXCIZjRq8GTFCKhQv5SpXbmI+e60rYdXw8NHtMH4NXcGF0eKTuoCsC59IYSTUvDQYDKReaszA==} - engines: {node: '>=14'} + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@types/react': 18.2.75 + react: 18.2.0 dev: false - /@opentelemetry/instrumentation-mysql2@0.40.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg==} - engines: {node: '>=14'} + /@radix-ui/react-context@1.0.0(react@18.2.0): + resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + react: 18.2.0 dev: false - /@opentelemetry/instrumentation-mysql@0.39.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-8snHPh83rhrDf31v9Kq0Nf+ts8hdr7NguuszRqZomZBHgE0+UyXZSkXHAAFZoBPPRMGyM68uaFE5hVtFl+wOcA==} - engines: {node: '>=14'} + /@radix-ui/react-context@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@types/mysql': 2.15.22 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@types/react': 18.2.75 + react: 18.2.0 dev: false - /@opentelemetry/instrumentation-mysql@0.40.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA==} - engines: {node: '>=14'} + /@radix-ui/react-dialog@1.0.0(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@types/mysql': 2.15.22 + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-context': 1.0.0(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.0(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.0(react@18.2.0) + '@radix-ui/react-portal': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.0(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.0(react@18.2.0) + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.4(@types/react@18.2.75)(react@18.2.0) transitivePeerDependencies: - - supports-color + - '@types/react' dev: false - /@opentelemetry/instrumentation-nestjs-core@0.38.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-M381Df1dM8aqihZz2yK+ugvMFK5vlHG/835dc67Sx2hH4pQEQYDA2PpFPTgc9AYYOydQaj7ClFQunESimjXDgg==} - engines: {node: '>=14'} + /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) dev: false - /@opentelemetry/instrumentation-nestjs-core@0.39.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA==} - engines: {node: '>=14'} + /@radix-ui/react-direction@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@types/react': 18.2.75 + react: 18.2.0 dev: false - /@opentelemetry/instrumentation-pg@0.42.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-sjgcM8CswYy8zxHgXv4RAZ09DlYhQ+9TdlourUs63Df/ek5RrB1ZbjznqW7PB6c3TyJJmX6AVtPTjAsROovEjA==} - engines: {node: '>=14'} + /@radix-ui/react-dismissable-layer@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) - '@types/pg': 8.6.1 - '@types/pg-pool': 2.0.4 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/instrumentation-pg@0.43.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw==} - engines: {node: '>=14'} + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) - '@types/pg': 8.6.1 - '@types/pg-pool': 2.0.4 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/instrumentation-redis-4@0.40.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-0ieQYJb6yl35kXA75LQUPhHtGjtQU9L85KlWa7d4ohBbk/iQKZ3X3CFl5jC5vNMq/GGPB3+w3IxNvALlHtrp7A==} - engines: {node: '>=14'} + /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/instrumentation-redis-4@0.41.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-H7IfGTqW2reLXqput4yzAe8YpDC0fmVNal95GHMLOrS89W+qWUKIqxolSh63hJyfmwPSFwXASzj7wpSk8Az+Dg==} - engines: {node: '>=14'} + /@radix-ui/react-focus-guards@1.0.0(react@18.2.0): + resolution: {integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.25.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + react: 18.2.0 dev: false - /@opentelemetry/instrumentation@0.43.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-S1uHE+sxaepgp+t8lvIDuRgyjJWisAb733198kwQTUc9ZtYQ2V2gmyCtR1x21ePGVLoMiX/NWY7WA290hwkjJQ==} - engines: {node: '>=14'} - requiresBuild: true + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.4.2 - require-in-the-middle: 7.3.0 - semver: 7.6.0 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@types/react': 18.2.75 + react: 18.2.0 dev: false - optional: true - /@opentelemetry/instrumentation@0.46.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw==} - engines: {node: '>=14'} - requiresBuild: true + /@radix-ui/react-focus-scope@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@opentelemetry/api': 1.9.0 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.7.1 - require-in-the-middle: 7.3.0 - semver: 7.6.0 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - optional: true - /@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==} - engines: {node: '>=14'} + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.51.1 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.7.4 - require-in-the-middle: 7.3.0 - semver: 7.6.0 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/instrumentation@0.52.0(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-LPwSIrw+60cheWaXsfGL8stBap/AppKQJFE+qqRvzYrgttXFH2ofoIMxWadeqPTq4BYOXM/C7Bdh/T+B60xnlQ==} - engines: {node: '>=14'} + /@radix-ui/react-icons@1.3.0(react@18.2.0): + resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + react: ^16.x || ^17.x || ^18.x dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.52.0 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.8.0 - require-in-the-middle: 7.3.0 - semver: 7.6.0 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color + react: 18.2.0 dev: false - /@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} - engines: {node: '>=14'} + /@radix-ui/react-id@1.0.0(react@18.2.0): + resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==} peerDependencies: - '@opentelemetry/api': ^1.3.0 + react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.52.1 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.9.0 - require-in-the-middle: 7.3.0 - semver: 7.6.0 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@opentelemetry/redis-common@0.36.2: - resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} - engines: {node: '>=14'} + '@babel/runtime': 7.24.4 + '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + react: 18.2.0 dev: false - /@opentelemetry/resources@1.25.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==} - engines: {node: '>=14'} + /@radix-ui/react-id@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 + '@babel/runtime': 7.24.4 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + react: 18.2.0 dev: false - /@opentelemetry/sdk-metrics@1.25.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==} - engines: {node: '>=14'} + /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) - lodash.merge: 4.6.2 + '@babel/runtime': 7.24.4 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==} - engines: {node: '>=14'} + /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.10.0' + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - dev: false - - /@opentelemetry/semantic-conventions@1.25.0: - resolution: {integrity: sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==} - engines: {node: '>=14'} + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) dev: false - /@opentelemetry/semantic-conventions@1.25.1: - resolution: {integrity: sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==} - engines: {node: '>=14'} + /@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0): - resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} - engines: {node: '>=14'} + /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} peerDependencies: - '@opentelemetry/api': ^1.1.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - dev: false - - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - optional: true - - /@pnpm/config.env-replace@1.1.0: - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} + '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + aria-hidden: 1.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) dev: false - /@pnpm/network.ca-file@1.0.2: - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - graceful-fs: 4.2.10 + '@babel/runtime': 7.24.4 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@pnpm/npm-conf@2.2.2: - resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} - engines: {node: '>=12'} + /@radix-ui/react-portal@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@pnpm/config.env-replace': 1.1.0 - '@pnpm/network.ca-file': 1.0.2 - config-chain: 1.1.13 + '@babel/runtime': 7.24.4 + '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@prisma/client@5.12.1(prisma@5.12.1): - resolution: {integrity: sha512-6/JnizEdlSBxDIdiLbrBdMW5NqDxOmhXAJaNXiPpgzAPr/nLZResT6MMpbOHLo5yAbQ1Vv5UU8PTPRzb0WIxdA==} - engines: {node: '>=16.13'} - requiresBuild: true + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: - prisma: '*' + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: - prisma: + '@types/react': + optional: true + '@types/react-dom': optional: true dependencies: - prisma: 5.12.1 + '@babel/runtime': 7.24.4 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@prisma/debug@5.12.1: - resolution: {integrity: sha512-kd/wNsR0klrv79o1ITsbWxYyh4QWuBidvxsXSParPsYSu0ircUmNk3q4ojsgNc3/81b0ozg76iastOG43tbf8A==} - - /@prisma/engines-version@5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab: - resolution: {integrity: sha512-6yvO8s80Tym61aB4QNtYZfWVmE3pwqe807jEtzm8C5VDe7nw8O1FGX3TXUaXmWV0fQTIAfRbeL2Gwrndabp/0g==} - - /@prisma/engines@5.12.1: - resolution: {integrity: sha512-HQDdglLw2bZR/TXD2Y+YfDMvi5Q8H+acbswqOsWyq9pPjBLYJ6gzM+ptlTU/AV6tl0XSZLU1/7F4qaWa8bqpJA==} - requiresBuild: true - dependencies: - '@prisma/debug': 5.12.1 - '@prisma/engines-version': 5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab - '@prisma/fetch-engine': 5.12.1 - '@prisma/get-platform': 5.12.1 - - /@prisma/fetch-engine@5.12.1: - resolution: {integrity: sha512-qSs3KcX1HKcea1A+hlJVK/ljj0PNIUHDxAayGMvgJBqmaN32P9tCidlKz1EGv6WoRFICYnk3Dd/YFLBwnFIozA==} - dependencies: - '@prisma/debug': 5.12.1 - '@prisma/engines-version': 5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab - '@prisma/get-platform': 5.12.1 - - /@prisma/get-platform@5.12.1: - resolution: {integrity: sha512-pgIR+pSvhYHiUcqXVEZS31NrFOTENC9yFUdEAcx7cdQBoZPmHVjtjN4Ss6NzVDMYPrKJJ51U14EhEoeuBlMioQ==} + /@radix-ui/react-presence@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@prisma/debug': 5.12.1 + '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - /@prisma/instrumentation@5.15.0: - resolution: {integrity: sha512-fCWOOOajTKOUEp43gRmBqwt6oN9bPJcLiloi2OG/2ED0N5z62Cuza6FDrlm3SJHQAXYlXqLE0HLdEE5WcUkOzg==} + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@prisma/instrumentation@5.16.1: - resolution: {integrity: sha512-4m5gRFWnQb8s/yTyGbMZkL7A5uJgqOWcWJxapwcAD0T0kh5sGPEVSQl/zTQvE9aduXhFAxOtC3gO+R8Hb5xO1Q==} + /@radix-ui/react-primitive@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.24.4 + '@radix-ui/react-slot': 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/number@1.0.1: - resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/primitive@1.0.0: - resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} + /@radix-ui/react-progress@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5G6Om/tYSxjSeEdrb1VfKkfZfn/1IlPWd731h2RfPuSbIfNUgfqAwbKfJCg/PP6nuUCTrYzalwHSpSinoWoCag==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/primitive@1.0.1: - resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} + /@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4129,15 +6919,23 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@types/react': 18.2.75 '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} + /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4150,7 +6948,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) @@ -4160,8 +6963,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} + /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4174,22 +6977,35 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.75 '@types/react-dom': 18.2.24 + aria-hidden: 1.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) dev: false - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4202,27 +7018,25 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) '@types/react': 18.2.75 '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-compose-refs@1.0.0(react@18.2.0): - resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} + /@radix-ui/react-slot@1.0.0(react@18.2.0): + resolution: {integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) react: 18.2.0 dev: false - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + /@radix-ui/react-slot@1.0.2(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 @@ -4231,62 +7045,68 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@types/react': 18.2.75 react: 18.2.0 dev: false - /@radix-ui/react-context@1.0.0(react@18.2.0): - resolution: {integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 - dev: false - - /@radix-ui/react-context@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + /@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} peerDependencies: '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dialog@1.0.0(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==} + /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - '@radix-ui/react-context': 1.0.0(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.0(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.0(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.0(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.0(react@18.2.0) - '@radix-ui/react-portal': 1.0.0(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.0(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.0(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.0(react@18.2.0) - aria-hidden: 1.2.4 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.4(@types/react@18.2.75)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' dev: false - /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4303,24 +7123,31 @@ packages: '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.75 '@types/react-dom': 18.2.24 - aria-hidden: 1.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) dev: false - /@radix-ui/react-direction@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} + /@radix-ui/react-use-callback-ref@1.0.0(react@18.2.0): + resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.24.4 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 @@ -4333,85 +7160,95 @@ packages: react: 18.2.0 dev: false - /@radix-ui/react-dismissable-layer@1.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==} + /@radix-ui/react-use-controllable-state@1.0.0(react@18.2.0): + resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} peerDependencies: react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.0(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.75)(react@18.2.0) '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} + /@radix-ui/react-use-escape-keydown@1.0.0(react@18.2.0): + resolution: {integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0): + resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + '@babel/runtime': 7.24.4 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': optional: true dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-focus-guards@1.0.0(react@18.2.0): - resolution: {integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==} + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.24.4 + '@types/react': 18.2.75 react: 18.2.0 dev: false - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 @@ -4420,26 +7257,28 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 + '@radix-ui/rect': 1.0.1 '@types/react': 18.2.75 react: 18.2.0 dev: false - /@radix-ui/react-focus-scope@1.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==} + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.75)(react@18.2.0): + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: + '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) + '@types/react': 18.2.75 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4452,1277 +7291,1105 @@ packages: optional: true dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) '@types/react': 18.2.75 '@types/react-dom': 18.2.24 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-icons@1.3.0(react@18.2.0): - resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} + /@radix-ui/rect@1.0.1: + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + dependencies: + '@babel/runtime': 7.24.4 + dev: false + + /@rc-component/color-picker@1.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw==} peerDependencies: - react: ^16.x || ^17.x || ^18.x + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: + '@babel/runtime': 7.24.4 + '@ctrl/tinycolor': 3.6.1 + classnames: 2.5.1 + rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-id@1.0.0(react@18.2.0): - resolution: {integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==} + /@rc-component/context@1.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) + rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-id@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + /@rc-component/mini-decimal@1.1.0: + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} + engines: {node: '>=8.x'} + dependencies: + '@babel/runtime': 7.24.4 + dev: false + + /@rc-component/mutate-observer@1.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} + engines: {node: '>=8.x'} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 + classnames: 2.5.1 + rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} + /@rc-component/portal@1.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} + engines: {node: '>=8.x'} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.24.4 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 + classnames: 2.5.1 + rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} + /@rc-component/tour@1.14.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-A75DZ8LVvahBIvxooj3Gvf2sxe+CGOkmzPNX7ek0i0AJHyKZ1HXe5ieIGo3m0FMdZfVOlbCJ952Duq8VKAHk6g==} + engines: {node: '>=8.x'} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.24.4 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + '@rc-component/trigger': 2.0.0(react-dom@18.2.0)(react@18.2.0) + classnames: 2.5.1 + rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rc-component/trigger@2.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-niwKADPdY5dhdIblV6uwSayVivwo2uUISfJqri+/ovYQcH/omxDYBJKo755QKeoIIsWptxnRpgr7reEnNEZGFg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.24.4 + '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) + classnames: 2.5.1 + rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@rollup/rollup-android-arm-eabi@4.14.1: + resolution: {integrity: sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.14.1: + resolution: {integrity: sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.14.1: + resolution: {integrity: sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.14.1: + resolution: {integrity: sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.14.1: + resolution: {integrity: sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.14.1: + resolution: {integrity: sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.14.1: + resolution: {integrity: sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.14.1: + resolution: {integrity: sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==} + cpu: [ppc64le] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.14.1: + resolution: {integrity: sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.14.1: + resolution: {integrity: sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.14.1: + resolution: {integrity: sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.14.1: + resolution: {integrity: sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.14.1: + resolution: {integrity: sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.14.1: + resolution: {integrity: sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.14.1: + resolution: {integrity: sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rushstack/eslint-patch@1.10.1: + resolution: {integrity: sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==} + dev: true + + /@selderee/plugin-htmlparser2@0.11.0: + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + requiresBuild: true + dependencies: + domhandler: 5.0.3 + selderee: 0.11.0 + dev: true + optional: true + + /@sentry-internal/tracing@7.109.0: + resolution: {integrity: sha512-PzK/joC5tCuh2R/PRh+7dp+uuZl7pTsBIjPhVZHMTtb9+ls65WkdZJ1/uKXPouyz8NOo9Xok7aEvEo9seongyw==} + engines: {node: '>=8'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) + '@sentry/core': 7.109.0 + '@sentry/types': 7.109.0 + '@sentry/utils': 7.109.0 dev: false - /@radix-ui/react-navigation-menu@1.1.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Cc+seCS3PmWmjI51ufGG7zp1cAAIRqHVw7C9LOA2TZ+R4hG6rDvHcTqIsEEFLmZO3zNVH72jOOE7kKNy8W+RtA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/core@7.109.0: + resolution: {integrity: sha512-xwD4U0IlvvlE/x/g/W1I8b4Cfb16SsCMmiEuBf6XxvAa3OfWBxKoqLifb3GyrbxMC4LbIIZCN/SvLlnGJPgszA==} + engines: {node: '>=8'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@sentry/types': 7.109.0 + '@sentry/utils': 7.109.0 dev: false - /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/core@7.114.0: + resolution: {integrity: sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==} + engines: {node: '>=8'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) + '@sentry/types': 7.114.0 + '@sentry/utils': 7.114.0 dev: false - /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/core@8.17.0: + resolution: {integrity: sha512-s62O0Re6WcvaVbH1IEeAWmj/ca8UhaRoFaDnc5TR68reOycBrgnqCNq3qHxBsELOA6NJowoK+T29DDGs9QVXhQ==} + engines: {node: '>=14.18'} dependencies: - '@babel/runtime': 7.24.4 - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@sentry/types': 8.17.0 + '@sentry/utils': 8.17.0 dev: false - /@radix-ui/react-portal@1.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + /@sentry/core@8.9.2: + resolution: {integrity: sha512-ixm8NISFlPlEo3FjSaqmq4nnd13BRHoafwJ5MG+okCz6BKGZ1SexEggP42/QpGvDprUUHnfncG6WUMgcarr1zA==} + engines: {node: '>=14.18'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-primitive': 1.0.0(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@sentry/types': 8.9.2 + '@sentry/utils': 8.9.2 dev: false - /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/hub@7.114.0: + resolution: {integrity: sha512-1Q3S5O9fMZ4vB9GJJQB8gw//VZRt8LzlHvMhqMS+K7mm215Rj2qM2wY0js7QSTupHBlZ0+M9j8o7C8XUXAeXbQ==} + engines: {node: '>=8'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@sentry/core': 7.114.0 + '@sentry/types': 7.114.0 + '@sentry/utils': 7.114.0 dev: false - /@radix-ui/react-presence@1.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + /@sentry/node@8.17.0: + resolution: {integrity: sha512-HJ7B/zlpGMOIN+TnLzp6gbOpOzTk3Co19N39Y17T9MrR+5Z4eHdgEKWORFyE0Wy2KYKkVRwJ5zZJbfldc0EsEA==} + engines: {node: '>=14.18'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.38.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.38.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.46.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@prisma/instrumentation': 5.16.1 + '@sentry/core': 8.17.0 + '@sentry/opentelemetry': 8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1)(@opentelemetry/instrumentation@0.52.1)(@opentelemetry/sdk-trace-base@1.25.1)(@opentelemetry/semantic-conventions@1.25.1) + '@sentry/types': 8.17.0 + '@sentry/utils': 8.17.0 + optionalDependencies: + opentelemetry-instrumentation-fetch-node: 1.2.3(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/node@8.9.2: + resolution: {integrity: sha512-Q+JBpR4yx3eUyyhwgugucfRtPg65gYvzJGEmjzcnDJXJqX8ms4HPpNv9o2Om7A4014JxIibUdrQ+p5idcT7SZA==} + engines: {node: '>=14.18'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.37.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.40.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.37.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.45.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.38.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@prisma/instrumentation': 5.15.0 + '@sentry/core': 8.9.2 + '@sentry/opentelemetry': 8.9.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1)(@opentelemetry/instrumentation@0.52.1)(@opentelemetry/sdk-trace-base@1.25.1)(@opentelemetry/semantic-conventions@1.25.1) + '@sentry/types': 8.9.2 + '@sentry/utils': 8.9.2 + optionalDependencies: + opentelemetry-instrumentation-fetch-node: 1.2.0 + transitivePeerDependencies: + - supports-color dev: false - /@radix-ui/react-primitive@1.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==} + /@sentry/opentelemetry@8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1)(@opentelemetry/instrumentation@0.52.1)(@opentelemetry/sdk-trace-base@1.25.1)(@opentelemetry/semantic-conventions@1.25.1): + resolution: {integrity: sha512-SKHfvHECIs7kqcXVRypXC6bQ7AQ4TTILamamZS5Ro1FP+i+yT8qEIoVWljoFZUIyO4J42mAP98THa1lCPK4BXA==} + engines: {node: '>=14.18'} peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/core': ^1.25.1 + '@opentelemetry/instrumentation': ^0.52.1 + '@opentelemetry/sdk-trace-base': ^1.25.1 + '@opentelemetry/semantic-conventions': ^1.25.1 dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-slot': 1.0.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@sentry/core': 8.17.0 + '@sentry/types': 8.17.0 + '@sentry/utils': 8.17.0 dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} + /@sentry/opentelemetry@8.9.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1)(@opentelemetry/instrumentation@0.52.1)(@opentelemetry/sdk-trace-base@1.25.1)(@opentelemetry/semantic-conventions@1.25.1): + resolution: {integrity: sha512-Q6SHDQhrsBPcMi7ejqVdNTkt6SCTIhpGsFN8QR7daH3uvM0X2O7ciCuO9gRNRTEkflEINV4SBZEjANYH7BkRAg==} + engines: {node: '>=14.18'} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/core': ^1.25.0 + '@opentelemetry/instrumentation': ^0.52.0 + '@opentelemetry/sdk-trace-base': ^1.25.0 + '@opentelemetry/semantic-conventions': ^1.25.0 dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.1 + '@sentry/core': 8.9.2 + '@sentry/types': 8.9.2 + '@sentry/utils': 8.9.2 dev: false - /@radix-ui/react-progress@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-5G6Om/tYSxjSeEdrb1VfKkfZfn/1IlPWd731h2RfPuSbIfNUgfqAwbKfJCg/PP6nuUCTrYzalwHSpSinoWoCag==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/profiling-node@8.17.0: + resolution: {integrity: sha512-gtuRZMU1PnceWe/a18hyzj9GqUkXLl7uYstAW5iCiOB/bMpBDoYh1Cz7Dg3u841zFPKobC4t39KKVcVWLrZagg==} + engines: {node: '>=14.18'} + hasBin: true + requiresBuild: true dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@sentry/core': 8.17.0 + '@sentry/node': 8.17.0 + '@sentry/types': 8.17.0 + '@sentry/utils': 8.17.0 + detect-libc: 2.0.3 + node-abi: 3.65.0 + transitivePeerDependencies: + - supports-color dev: false - /@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/tracing@7.109.0: + resolution: {integrity: sha512-lgveekdd/XLgQ6oZLvcRGUWBIOAZ7QwbjLHEd8zzeKubHbIwFzMkhIejskqLi2z2OwzrYl5q+Zo1jS1z9f62YQ==} + engines: {node: '>=8'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@sentry-internal/tracing': 7.109.0 dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + /@sentry/types@7.109.0: + resolution: {integrity: sha512-egCBnDv3YpVFoNzRLdP0soVrxVLCQ+rovREKJ1sw3rA2/MFH9WJ+DZZexsX89yeAFzy1IFsCp7/dEqudusml6g==} + engines: {node: '>=8'} dev: false - /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + /@sentry/types@7.114.0: + resolution: {integrity: sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==} + engines: {node: '>=8'} dev: false - /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.75)(react@18.2.0) + /@sentry/types@8.17.0: + resolution: {integrity: sha512-v0nI0+ajiGTijhF1W/ryn2+zFVFr6VPn6lao3W4qKj9MlltIHa4/uuGzTaiCFwoPw7g5bZ1Q09SStpDXVMkz2A==} + engines: {node: '>=14.18'} dev: false - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + /@sentry/types@8.9.2: + resolution: {integrity: sha512-+LFOyQGl+zk5SZRGZD2MEURf7i5RHgP/mt3s85Rza+vz8M211WJ0YsjkIGUJFSY842nged5QLx4JysLaBlLymg==} + engines: {node: '>=14.18'} dev: false - /@radix-ui/react-slot@1.0.0(react@18.2.0): - resolution: {integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + /@sentry/utils@7.109.0: + resolution: {integrity: sha512-3RjxMOLMBwZ5VSiH84+o/3NY2An4Zldjz0EbfEQNRY9yffRiCPJSQiCJID8EoylCFOh/PAhPimBhqbtWJxX6iw==} + engines: {node: '>=8'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - react: 18.2.0 + '@sentry/types': 7.109.0 dev: false - /@radix-ui/react-slot@1.0.2(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /@sentry/utils@7.114.0: + resolution: {integrity: sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==} + engines: {node: '>=8'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - react: 18.2.0 + '@sentry/types': 7.114.0 dev: false - /@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/utils@8.17.0: + resolution: {integrity: sha512-HHtAPLOlvzhwgfYzxtuPnLUoGRMtMrFvopkii74zmx/1ZD4VN4PYPB2E5KFf3c18pTovw+kxF0ux6VrGiyAHsw==} + engines: {node: '>=14.18'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@sentry/types': 8.17.0 dev: false - /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@sentry/utils@8.9.2: + resolution: {integrity: sha512-A4srR9mEBFdVXwSEKjQ94msUbVkMr8JeFiEj9ouOFORw/Y/ux/WV2bWVD/ZI9wq0TcTNK8L1wBgU8UMS5lIq3A==} + engines: {node: '>=14.18'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@sentry/types': 8.9.2 dev: false - /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + /@sevinf/maybe@0.5.0: + resolution: {integrity: sha512-ARhyoYDnY1LES3vYI0fiG6e9esWfTNcXcO6+MPJJXcnyMV3bim4lnFt45VXouV7y82F4x3YH8nOQ6VztuvUiWg==} dev: false - /@radix-ui/react-use-callback-ref@1.0.0(react@18.2.0): - resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + /@shopify/admin-api-client@1.0.0: + resolution: {integrity: sha512-yNLFW+wCmXNnAof6MZKZNPN1CYpFc95UCtQmcqeYc5GLdwvIJVGefUXTPqoBR57jV7b9jF+E6is3mNotEbDlLA==} dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 + '@shopify/graphql-client': 1.0.0 dev: false - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.4 - '@types/react': 18.2.75 - react: 18.2.0 + /@shopify/graphql-client@1.0.0: + resolution: {integrity: sha512-K3F13BK6dB17yJASRE9Oyn7Etpj58R3cOwzFHB06yCLhWLGcI7JllK+HxZQTgtA3wbLonG3yxt5ns6XNKitphw==} dev: false - /@radix-ui/react-use-controllable-state@1.0.0(react@18.2.0): - resolution: {integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) - react: 18.2.0 + /@shopify/network@3.3.0: + resolution: {integrity: sha512-Lln7vglzLK9KiYhl9ucQFVM7ArlpUM21xkDriBX8kVrqsoBsi+4vFIjf1wjhNPT0J/zHMjky7jiTnxVfdm+xXw==} + engines: {node: '>=18.12.0'} dev: false - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /@shopify/shopify-api@11.1.0: + resolution: {integrity: sha512-PZpOofefIBKhF/tnms11iaUrNrTNgUcKua6nRGtDXqJbSGVVynV55J8pHUhB/3Z7IDczZgmwA0qdX7X3VZmKiA==} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - react: 18.2.0 + '@shopify/admin-api-client': 1.0.0 + '@shopify/network': 3.3.0 + '@shopify/storefront-api-client': 1.0.0 + compare-versions: 6.1.1 + isbot: 5.1.13 + jose: 5.6.3 + node-fetch: 2.7.0 + tslib: 2.6.3 + uuid: 10.0.0 + transitivePeerDependencies: + - encoding dev: false - /@radix-ui/react-use-escape-keydown@1.0.0(react@18.2.0): - resolution: {integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + /@shopify/storefront-api-client@1.0.0: + resolution: {integrity: sha512-TAyCsD+d/Fiwek3YM1/60pXpQTUUX99DM3HpcIed09By5/rAQbQhYWwf9rZDBIJnGXqS/fl3VO4Tqp+173tocw==} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0) - react: 18.2.0 + '@shopify/graphql-client': 1.0.0 dev: false - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + dev: false + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - react: 18.2.0 + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@smithy/abort-controller@3.1.2: + resolution: {integrity: sha512-b5g+PNujlfqIib9BjkNB108NyO5aZM/RXjfOCXRCqXQ1oPnIkfvdORrztbGgCZdPe/BN/MKDlrGA7PafKPM2jw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0): - resolution: {integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 + /@smithy/chunked-blob-reader-native@3.0.0: + resolution: {integrity: sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==} dependencies: - '@babel/runtime': 7.24.4 - react: 18.2.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.6.3 dev: false - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /@smithy/chunked-blob-reader@3.0.0: + resolution: {integrity: sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==} dependencies: - '@babel/runtime': 7.24.4 - '@types/react': 18.2.75 - react: 18.2.0 + tslib: 2.6.3 dev: false - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /@smithy/config-resolver@3.0.6: + resolution: {integrity: sha512-j7HuVNoRd8EhcFp0MzcUb4fG40C7BcyshH+fAd3Jhd8bINNFvEQYBrZoS/SK6Pun9WPlfoI8uuU2SMz8DsEGlA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 - '@types/react': 18.2.75 - react: 18.2.0 + '@smithy/node-config-provider': 3.1.5 + '@smithy/types': 3.4.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.4 + tslib: 2.6.3 + dev: false + + /@smithy/core@2.4.1: + resolution: {integrity: sha512-7cts7/Oni7aCHebHGiBeWoz5z+vmH+Vx2Z/UW3XtXMslcxI3PEwBZxNinepwZjixS3n12fPc247PHWmjU7ndsQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-retry': 3.0.16 + '@smithy/middleware-serde': 3.0.4 + '@smithy/protocol-http': 4.1.1 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 dev: false - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /@smithy/credential-provider-imds@3.2.1: + resolution: {integrity: sha512-4z/oTWpRF2TqQI3aCM89/PWu3kim58XU4kOCTtuTJnoaS4KT95cPWMxbQfTN2vzcOe96SOKO8QouQW/+ESB1fQ==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.75 - react: 18.2.0 + '@smithy/node-config-provider': 3.1.5 + '@smithy/property-provider': 3.1.4 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + tslib: 2.6.3 dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.75)(react@18.2.0): - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + /@smithy/eventstream-codec@1.1.0: + resolution: {integrity: sha512-3tEbUb8t8an226jKB6V/Q2XU/J53lCwCzULuBPEaF4JjSh+FlCMp7TmogE/Aij5J9DwlsZ4VAD/IRDuQ/0ZtMw==} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.75)(react@18.2.0) - '@types/react': 18.2.75 - react: 18.2.0 + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 1.2.0 + '@smithy/util-hex-encoding': 1.1.0 + tslib: 2.6.3 dev: false - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + /@smithy/eventstream-codec@3.1.3: + resolution: {integrity: sha512-mKBrmhg6Zd3j07G9dkKTGmrU7pdJGTNz8LbZtIOR3QoodS5yDNqEqoXU4Eg38snZcnCAh7NPBsw5ndxtJPLiCg==} dependencies: - '@babel/runtime': 7.24.4 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.75 - '@types/react-dom': 18.2.24 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 3.4.0 + '@smithy/util-hex-encoding': 3.0.0 + tslib: 2.6.3 dev: false - /@radix-ui/rect@1.0.1: - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + /@smithy/eventstream-serde-browser@3.0.7: + resolution: {integrity: sha512-UC4RQqyM8B0g5cX/xmWtsNgSBmZ13HrzCqoe5Ulcz6R462/egbIdfTXnayik7jkjvwOrCPL1N11Q9S+n68jPLA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 + '@smithy/eventstream-serde-universal': 3.0.6 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@rc-component/color-picker@1.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + /@smithy/eventstream-serde-config-resolver@3.0.4: + resolution: {integrity: sha512-saIs5rtAMpifqL7u7nc5YeE/6gkenzXpSz5NwEyhIesRWtHK+zEuYn9KY8SArZEbPSHyGxvvgKk1z86VzfUGHw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 - '@ctrl/tinycolor': 3.6.1 - classnames: 2.5.1 - rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@rc-component/context@1.4.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + /@smithy/eventstream-serde-node@3.0.6: + resolution: {integrity: sha512-gRKGBdZah3EjZZgWcsTpShq4cZ4Q4JTTe1OPob+jrftmbYj6CvpeydZbH0roO5SvBG8SI3aBZIet9TGN3zUxUw==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 - rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@smithy/eventstream-serde-universal': 3.0.6 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@rc-component/mini-decimal@1.1.0: - resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} - engines: {node: '>=8.x'} + /@smithy/eventstream-serde-universal@3.0.6: + resolution: {integrity: sha512-1jvXd4sFG+zKaL6WqrJXpL6E+oAMafuM5GPd4qF0+ccenZTX3DZugoCCjlooQyTh+TZho2FpdVYUf5J/bB/j6Q==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 + '@smithy/eventstream-codec': 3.1.3 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@rc-component/mutate-observer@1.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + /@smithy/fetch-http-handler@3.2.5: + resolution: {integrity: sha512-DjRtGmK8pKQMIo9+JlAKUt14Z448bg8nAN04yKIvlrrpmpRSG57s5d2Y83npks1r4gPtTRNbAFdQCoj9l3P2KQ==} dependencies: - '@babel/runtime': 7.24.4 - classnames: 2.5.1 - rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@smithy/protocol-http': 4.1.1 + '@smithy/querystring-builder': 3.0.4 + '@smithy/types': 3.4.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.6.3 dev: false - /@rc-component/portal@1.1.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + /@smithy/hash-blob-browser@3.1.3: + resolution: {integrity: sha512-im9wAU9mANWW0OP0YGqwX3lw0nXG0ngyIcKQ8V/MUz1r7A6uO2lpPqKmAsH4VPGNLP2JPUhj4aW/m5UKkxX/IA==} dependencies: - '@babel/runtime': 7.24.4 - classnames: 2.5.1 - rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@smithy/chunked-blob-reader': 3.0.0 + '@smithy/chunked-blob-reader-native': 3.0.0 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@rc-component/tour@1.14.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-A75DZ8LVvahBIvxooj3Gvf2sxe+CGOkmzPNX7ek0i0AJHyKZ1HXe5ieIGo3m0FMdZfVOlbCJ952Duq8VKAHk6g==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + /@smithy/hash-node@3.0.4: + resolution: {integrity: sha512-6FgTVqEfCr9z/7+Em8BwSkJKA2y3krf1em134x3yr2NHWVCo2KYI8tcA53cjeO47y41jwF84ntsEE0Pe6pNKlg==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - '@rc-component/trigger': 2.0.0(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@smithy/types': 3.4.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 dev: false - /@rc-component/trigger@2.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-niwKADPdY5dhdIblV6uwSayVivwo2uUISfJqri+/ovYQcH/omxDYBJKo755QKeoIIsWptxnRpgr7reEnNEZGFg==} - engines: {node: '>=8.x'} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' + /@smithy/hash-stream-node@3.1.3: + resolution: {integrity: sha512-Tz/eTlo1ffqYn+19VaMjDDbmEWqYe4DW1PAWaS8HvgRdO6/k9hxNPt8Wv5laXoilxE20YzKugiHvxHyO6J7kGA==} + engines: {node: '>=16.0.0'} dependencies: - '@babel/runtime': 7.24.4 - '@rc-component/portal': 1.1.2(react-dom@18.2.0)(react@18.2.0) - classnames: 2.5.1 - rc-motion: 2.9.0(react-dom@18.2.0)(react@18.2.0) - rc-resize-observer: 1.4.0(react-dom@18.2.0)(react@18.2.0) - rc-util: 5.39.1(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@smithy/types': 3.4.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 dev: false - /@rollup/rollup-android-arm-eabi@4.14.1: - resolution: {integrity: sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + /@smithy/invalid-dependency@3.0.4: + resolution: {integrity: sha512-MJBUrojC4SEXi9aJcnNOE3oNAuYNphgCGFXscaCj2TA/59BTcXhzHACP8jnnEU3n4yir/NSLKzxqez0T4x4tjA==} + dependencies: + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-android-arm64@4.14.1: - resolution: {integrity: sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + /@smithy/is-array-buffer@1.1.0: + resolution: {integrity: sha512-twpQ/n+3OWZJ7Z+xu43MJErmhB/WO/mMTnqR6PwWQShvSJ/emx5d1N59LQZk6ZpTAeuRWrc+eHhkzTp9NFjNRQ==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.3 + dev: false - /@rollup/rollup-darwin-arm64@4.14.1: - resolution: {integrity: sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + /@smithy/is-array-buffer@2.2.0: + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.3 + dev: false - /@rollup/rollup-darwin-x64@4.14.1: - resolution: {integrity: sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + /@smithy/is-array-buffer@3.0.0: + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.6.3 + dev: false - /@rollup/rollup-linux-arm-gnueabihf@4.14.1: - resolution: {integrity: sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@smithy/md5-js@3.0.4: + resolution: {integrity: sha512-qSlqr/+hybufIJgxQW2gYzGE6ywfOxkjjJVojbbmv4MtxfdDFfzRew+NOIOXcYgazW0f8OYBTIKsmNsjxpvnng==} + dependencies: + '@smithy/types': 3.4.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-linux-arm64-gnu@4.14.1: - resolution: {integrity: sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@smithy/middleware-content-length@3.0.6: + resolution: {integrity: sha512-AFyHCfe8rumkJkz+hCOVJmBagNBj05KypyDwDElA4TgMSA4eYDZRjVePFZuyABrJZFDc7uVj3dpFIDCEhf59SA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-linux-arm64-musl@4.14.1: - resolution: {integrity: sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@smithy/middleware-endpoint@3.1.1: + resolution: {integrity: sha512-Irv+soW8NKluAtFSEsF8O3iGyLxa5oOevJb/e1yNacV9H7JP/yHyJuKST5YY2ORS1+W34VR8EuUrOF+K29Pl4g==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/middleware-serde': 3.0.4 + '@smithy/node-config-provider': 3.1.5 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + '@smithy/url-parser': 3.0.4 + '@smithy/util-middleware': 3.0.4 + tslib: 2.6.3 + dev: false - /@rollup/rollup-linux-powerpc64le-gnu@4.14.1: - resolution: {integrity: sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==} - cpu: [ppc64le] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@smithy/middleware-retry@3.0.16: + resolution: {integrity: sha512-08kI36p1yB4CWO3Qi+UQxjzobt8iQJpnruF0K5BkbZmA/N/sJ51A1JJGJ36GgcbFyPfWw2FU48S5ZoqXt0h0jw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/node-config-provider': 3.1.5 + '@smithy/protocol-http': 4.1.1 + '@smithy/service-error-classification': 3.0.4 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-retry': 3.0.4 + tslib: 2.6.3 + uuid: 9.0.1 + dev: false - /@rollup/rollup-linux-riscv64-gnu@4.14.1: - resolution: {integrity: sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@smithy/middleware-serde@3.0.4: + resolution: {integrity: sha512-1lPDB2O6IJ50Ucxgn7XrvZXbbuI48HmPCcMTuSoXT1lDzuTUfIuBjgAjpD8YLVMfnrjdepi/q45556LA51Pubw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-linux-s390x-gnu@4.14.1: - resolution: {integrity: sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@smithy/middleware-stack@3.0.4: + resolution: {integrity: sha512-sLMRjtMCqtVcrOqaOZ10SUnlFE25BSlmLsi4bRSGFD7dgR54eqBjfqkVkPBQyrKBortfGM0+2DJoUPcGECR+nQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-linux-x64-gnu@4.14.1: - resolution: {integrity: sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@smithy/node-config-provider@3.1.5: + resolution: {integrity: sha512-dq/oR3/LxgCgizVk7in7FGTm0w9a3qM4mg3IIXLTCHeW3fV+ipssSvBZ2bvEx1+asfQJTyCnVLeYf7JKfd9v3Q==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/property-provider': 3.1.4 + '@smithy/shared-ini-file-loader': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-linux-x64-musl@4.14.1: - resolution: {integrity: sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@smithy/node-http-handler@3.2.0: + resolution: {integrity: sha512-5TFqaABbiY7uJMKbqR4OARjwI/l4TRoysDJ75pLpVQyO3EcmeloKYwDGyCtgB9WJniFx3BMkmGCB9+j+QiB+Ww==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/abort-controller': 3.1.2 + '@smithy/protocol-http': 4.1.1 + '@smithy/querystring-builder': 3.0.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-win32-arm64-msvc@4.14.1: - resolution: {integrity: sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@smithy/property-provider@3.1.4: + resolution: {integrity: sha512-BmhefQbfkSl9DeU0/e6k9N4sT5bya5etv2epvqLUz3eGyfRBhtQq60nDkc1WPp4c+KWrzK721cUc/3y0f2psPQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-win32-ia32-msvc@4.14.1: - resolution: {integrity: sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@smithy/protocol-http@1.2.0: + resolution: {integrity: sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 1.2.0 + tslib: 2.6.3 + dev: false - /@rollup/rollup-win32-x64-msvc@4.14.1: - resolution: {integrity: sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@smithy/protocol-http@4.1.1: + resolution: {integrity: sha512-Fm5+8LkeIus83Y8jTL1XHsBGP8sPvE1rEVyKf/87kbOPTbzEDMcgOlzcmYXat2h+nC3wwPtRy8hFqtJS71+Wow==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@rushstack/eslint-patch@1.10.1: - resolution: {integrity: sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==} - dev: true + /@smithy/querystring-builder@3.0.4: + resolution: {integrity: sha512-NEoPAsZPdpfVbF98qm8i5k1XMaRKeEnO47CaL5ja6Y1Z2DgJdwIJuJkTJypKm/IKfp8gc0uimIFLwhml8+/pAw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/types': 3.4.0 + '@smithy/util-uri-escape': 3.0.0 + tslib: 2.6.3 + dev: false - /@selderee/plugin-htmlparser2@0.11.0: - resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - requiresBuild: true + /@smithy/querystring-parser@3.0.4: + resolution: {integrity: sha512-7CHPXffFcakFzhO0OZs/rn6fXlTHrSDdLhIT6/JIk1u2bvwguTL3fMCc1+CfcbXA7TOhjWXu3TcB1EGMqJQwHg==} + engines: {node: '>=16.0.0'} dependencies: - domhandler: 5.0.3 - selderee: 0.11.0 - dev: true - optional: true + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false - /@sentry-internal/tracing@7.109.0: - resolution: {integrity: sha512-PzK/joC5tCuh2R/PRh+7dp+uuZl7pTsBIjPhVZHMTtb9+ls65WkdZJ1/uKXPouyz8NOo9Xok7aEvEo9seongyw==} - engines: {node: '>=8'} + /@smithy/service-error-classification@3.0.4: + resolution: {integrity: sha512-KciDHHKFVTb9A1KlJHBt2F26PBaDtoE23uTZy5qRvPzHPqrooXFi6fmx98lJb3Jl38PuUTqIuCUmmY3pacuMBQ==} + engines: {node: '>=16.0.0'} dependencies: - '@sentry/core': 7.109.0 - '@sentry/types': 7.109.0 - '@sentry/utils': 7.109.0 + '@smithy/types': 3.4.0 dev: false - /@sentry/core@7.109.0: - resolution: {integrity: sha512-xwD4U0IlvvlE/x/g/W1I8b4Cfb16SsCMmiEuBf6XxvAa3OfWBxKoqLifb3GyrbxMC4LbIIZCN/SvLlnGJPgszA==} - engines: {node: '>=8'} + /@smithy/shared-ini-file-loader@3.1.5: + resolution: {integrity: sha512-6jxsJ4NOmY5Du4FD0enYegNJl4zTSuKLiChIMqIkh+LapxiP7lmz5lYUNLE9/4cvA65mbBmtdzZ8yxmcqM5igg==} + engines: {node: '>=16.0.0'} dependencies: - '@sentry/types': 7.109.0 - '@sentry/utils': 7.109.0 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@sentry/core@7.114.0: - resolution: {integrity: sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==} - engines: {node: '>=8'} + /@smithy/signature-v4@1.1.0: + resolution: {integrity: sha512-fDo3m7YqXBs7neciOePPd/X9LPm5QLlDMdIC4m1H6dgNLnXfLMFNIxEfPyohGA8VW9Wn4X8lygnPSGxDZSmp0Q==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/types': 7.114.0 - '@sentry/utils': 7.114.0 + '@smithy/eventstream-codec': 1.1.0 + '@smithy/is-array-buffer': 1.1.0 + '@smithy/types': 1.2.0 + '@smithy/util-hex-encoding': 1.1.0 + '@smithy/util-middleware': 1.1.0 + '@smithy/util-uri-escape': 1.1.0 + '@smithy/util-utf8': 1.1.0 + tslib: 2.6.3 dev: false - /@sentry/core@8.17.0: - resolution: {integrity: sha512-s62O0Re6WcvaVbH1IEeAWmj/ca8UhaRoFaDnc5TR68reOycBrgnqCNq3qHxBsELOA6NJowoK+T29DDGs9QVXhQ==} - engines: {node: '>=14.18'} + /@smithy/signature-v4@4.1.1: + resolution: {integrity: sha512-SH9J9be81TMBNGCmjhrgMWu4YSpQ3uP1L06u/K9SDrE2YibUix1qxedPCxEQu02At0P0SrYDjvz+y91vLG0KRQ==} + engines: {node: '>=16.0.0'} dependencies: - '@sentry/types': 8.17.0 - '@sentry/utils': 8.17.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.4 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 dev: false - /@sentry/core@8.9.2: - resolution: {integrity: sha512-ixm8NISFlPlEo3FjSaqmq4nnd13BRHoafwJ5MG+okCz6BKGZ1SexEggP42/QpGvDprUUHnfncG6WUMgcarr1zA==} - engines: {node: '>=14.18'} + /@smithy/smithy-client@3.3.0: + resolution: {integrity: sha512-H32nVo8tIX82kB0xI2LBrIcj8jx/3/ITotNLbeG1UL0b3b440YPR/hUvqjFJiaB24pQrMjRbU8CugqH5sV0hkw==} + engines: {node: '>=16.0.0'} dependencies: - '@sentry/types': 8.9.2 - '@sentry/utils': 8.9.2 + '@smithy/middleware-endpoint': 3.1.1 + '@smithy/middleware-stack': 3.0.4 + '@smithy/protocol-http': 4.1.1 + '@smithy/types': 3.4.0 + '@smithy/util-stream': 3.1.4 + tslib: 2.6.3 dev: false - /@sentry/hub@7.114.0: - resolution: {integrity: sha512-1Q3S5O9fMZ4vB9GJJQB8gw//VZRt8LzlHvMhqMS+K7mm215Rj2qM2wY0js7QSTupHBlZ0+M9j8o7C8XUXAeXbQ==} - engines: {node: '>=8'} + /@smithy/types@1.2.0: + resolution: {integrity: sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/core': 7.114.0 - '@sentry/types': 7.114.0 - '@sentry/utils': 7.114.0 + tslib: 2.6.3 dev: false - /@sentry/node@8.17.0: - resolution: {integrity: sha512-HJ7B/zlpGMOIN+TnLzp6gbOpOzTk3Co19N39Y17T9MrR+5Z4eHdgEKWORFyE0Wy2KYKkVRwJ5zZJbfldc0EsEA==} - engines: {node: '>=14.18'} + /@smithy/types@3.4.0: + resolution: {integrity: sha512-0shOWSg/pnFXPcsSU8ZbaJ4JBHZJPPzLCJxafJvbMVFo9l1w81CqpgUqjlKGNHVrVB7fhIs+WS82JDTyzaLyLA==} + engines: {node: '>=16.0.0'} dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-connect': 0.38.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-express': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fastify': 0.38.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-graphql': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-hapi': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-http': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-ioredis': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-koa': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongodb': 0.46.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongoose': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql2': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-nestjs-core': 0.39.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pg': 0.43.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-redis-4': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@prisma/instrumentation': 5.16.1 - '@sentry/core': 8.17.0 - '@sentry/opentelemetry': 8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1)(@opentelemetry/instrumentation@0.52.1)(@opentelemetry/sdk-trace-base@1.25.1)(@opentelemetry/semantic-conventions@1.25.1) - '@sentry/types': 8.17.0 - '@sentry/utils': 8.17.0 - optionalDependencies: - opentelemetry-instrumentation-fetch-node: 1.2.3(@opentelemetry/api@1.9.0) - transitivePeerDependencies: - - supports-color + tslib: 2.6.3 dev: false - /@sentry/node@8.9.2: - resolution: {integrity: sha512-Q+JBpR4yx3eUyyhwgugucfRtPg65gYvzJGEmjzcnDJXJqX8ms4HPpNv9o2Om7A4014JxIibUdrQ+p5idcT7SZA==} - engines: {node: '>=14.18'} + /@smithy/url-parser@3.0.4: + resolution: {integrity: sha512-XdXfObA8WrloavJYtDuzoDhJAYc5rOt+FirFmKBRKaihu7QtU/METAxJgSo7uMK6hUkx0vFnqxV75urtRaLkLg==} dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-connect': 0.37.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-express': 0.40.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-fastify': 0.37.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-graphql': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-hapi': 0.39.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-http': 0.52.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-ioredis': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-koa': 0.41.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongodb': 0.45.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mongoose': 0.39.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql': 0.39.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-mysql2': 0.39.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-nestjs-core': 0.38.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-pg': 0.42.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation-redis-4': 0.40.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@prisma/instrumentation': 5.15.0 - '@sentry/core': 8.9.2 - '@sentry/opentelemetry': 8.9.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1)(@opentelemetry/instrumentation@0.52.1)(@opentelemetry/sdk-trace-base@1.25.1)(@opentelemetry/semantic-conventions@1.25.1) - '@sentry/types': 8.9.2 - '@sentry/utils': 8.9.2 - optionalDependencies: - opentelemetry-instrumentation-fetch-node: 1.2.0 - transitivePeerDependencies: - - supports-color + '@smithy/querystring-parser': 3.0.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@sentry/opentelemetry@8.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1)(@opentelemetry/instrumentation@0.52.1)(@opentelemetry/sdk-trace-base@1.25.1)(@opentelemetry/semantic-conventions@1.25.1): - resolution: {integrity: sha512-SKHfvHECIs7kqcXVRypXC6bQ7AQ4TTILamamZS5Ro1FP+i+yT8qEIoVWljoFZUIyO4J42mAP98THa1lCPK4BXA==} - engines: {node: '>=14.18'} - peerDependencies: - '@opentelemetry/api': ^1.9.0 - '@opentelemetry/core': ^1.25.1 - '@opentelemetry/instrumentation': ^0.52.1 - '@opentelemetry/sdk-trace-base': ^1.25.1 - '@opentelemetry/semantic-conventions': ^1.25.1 + /@smithy/util-base64@3.0.0: + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@sentry/core': 8.17.0 - '@sentry/types': 8.17.0 - '@sentry/utils': 8.17.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 dev: false - /@sentry/opentelemetry@8.9.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1)(@opentelemetry/instrumentation@0.52.1)(@opentelemetry/sdk-trace-base@1.25.1)(@opentelemetry/semantic-conventions@1.25.1): - resolution: {integrity: sha512-Q6SHDQhrsBPcMi7ejqVdNTkt6SCTIhpGsFN8QR7daH3uvM0X2O7ciCuO9gRNRTEkflEINV4SBZEjANYH7BkRAg==} - engines: {node: '>=14.18'} - peerDependencies: - '@opentelemetry/api': ^1.9.0 - '@opentelemetry/core': ^1.25.0 - '@opentelemetry/instrumentation': ^0.52.0 - '@opentelemetry/sdk-trace-base': ^1.25.0 - '@opentelemetry/semantic-conventions': ^1.25.0 + /@smithy/util-body-length-browser@3.0.0: + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.25.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.25.1 - '@sentry/core': 8.9.2 - '@sentry/types': 8.9.2 - '@sentry/utils': 8.9.2 + tslib: 2.6.3 dev: false - /@sentry/profiling-node@8.17.0: - resolution: {integrity: sha512-gtuRZMU1PnceWe/a18hyzj9GqUkXLl7uYstAW5iCiOB/bMpBDoYh1Cz7Dg3u841zFPKobC4t39KKVcVWLrZagg==} - engines: {node: '>=14.18'} - hasBin: true - requiresBuild: true + /@smithy/util-body-length-node@3.0.0: + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} dependencies: - '@sentry/core': 8.17.0 - '@sentry/node': 8.17.0 - '@sentry/types': 8.17.0 - '@sentry/utils': 8.17.0 - detect-libc: 2.0.3 - node-abi: 3.65.0 - transitivePeerDependencies: - - supports-color + tslib: 2.6.3 dev: false - /@sentry/tracing@7.109.0: - resolution: {integrity: sha512-lgveekdd/XLgQ6oZLvcRGUWBIOAZ7QwbjLHEd8zzeKubHbIwFzMkhIejskqLi2z2OwzrYl5q+Zo1jS1z9f62YQ==} - engines: {node: '>=8'} + /@smithy/util-buffer-from@1.1.0: + resolution: {integrity: sha512-9m6NXE0ww+ra5HKHCHig20T+FAwxBAm7DIdwc/767uGWbRcY720ybgPacQNB96JMOI7xVr/CDa3oMzKmW4a+kw==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry-internal/tracing': 7.109.0 + '@smithy/is-array-buffer': 1.1.0 + tslib: 2.6.3 dev: false - /@sentry/types@7.109.0: - resolution: {integrity: sha512-egCBnDv3YpVFoNzRLdP0soVrxVLCQ+rovREKJ1sw3rA2/MFH9WJ+DZZexsX89yeAFzy1IFsCp7/dEqudusml6g==} - engines: {node: '>=8'} + /@smithy/util-buffer-from@2.2.0: + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.6.3 dev: false - /@sentry/types@7.114.0: - resolution: {integrity: sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==} - engines: {node: '>=8'} + /@smithy/util-buffer-from@3.0.0: + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/is-array-buffer': 3.0.0 + tslib: 2.6.3 dev: false - /@sentry/types@8.17.0: - resolution: {integrity: sha512-v0nI0+ajiGTijhF1W/ryn2+zFVFr6VPn6lao3W4qKj9MlltIHa4/uuGzTaiCFwoPw7g5bZ1Q09SStpDXVMkz2A==} - engines: {node: '>=14.18'} + /@smithy/util-config-provider@3.0.0: + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + dependencies: + tslib: 2.6.3 + dev: false + + /@smithy/util-defaults-mode-browser@3.0.16: + resolution: {integrity: sha512-Os8ddfNBe7hmc5UMWZxygIHCyAqY0aWR8Wnp/aKbti3f8Df/r0J9ttMZIxeMjsFgtVjEryB0q7SGcwBsHk8WEw==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/property-provider': 3.1.4 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + bowser: 2.11.0 + tslib: 2.6.3 dev: false - /@sentry/types@8.9.2: - resolution: {integrity: sha512-+LFOyQGl+zk5SZRGZD2MEURf7i5RHgP/mt3s85Rza+vz8M211WJ0YsjkIGUJFSY842nged5QLx4JysLaBlLymg==} - engines: {node: '>=14.18'} + /@smithy/util-defaults-mode-node@3.0.16: + resolution: {integrity: sha512-rNhFIYRtrOrrhRlj6RL8jWA6/dcwrbGYAmy8+OAHjjzQ6zdzUBB1P+3IuJAgwWN6Y5GxI+mVXlM/pOjaoIgHow==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/config-resolver': 3.0.6 + '@smithy/credential-provider-imds': 3.2.1 + '@smithy/node-config-provider': 3.1.5 + '@smithy/property-provider': 3.1.4 + '@smithy/smithy-client': 3.3.0 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@sentry/utils@7.109.0: - resolution: {integrity: sha512-3RjxMOLMBwZ5VSiH84+o/3NY2An4Zldjz0EbfEQNRY9yffRiCPJSQiCJID8EoylCFOh/PAhPimBhqbtWJxX6iw==} - engines: {node: '>=8'} + /@smithy/util-endpoints@2.1.0: + resolution: {integrity: sha512-ilS7/0jcbS2ELdg0fM/4GVvOiuk8/U3bIFXUW25xE1Vh1Ol4DP6vVHQKqM40rCMizCLmJ9UxK+NeJrKlhI3HVA==} + engines: {node: '>=16.0.0'} dependencies: - '@sentry/types': 7.109.0 + '@smithy/node-config-provider': 3.1.5 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@sentry/utils@7.114.0: - resolution: {integrity: sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==} - engines: {node: '>=8'} + /@smithy/util-hex-encoding@1.1.0: + resolution: {integrity: sha512-7UtIE9eH0u41zpB60Jzr0oNCQ3hMJUabMcKRUVjmyHTXiWDE4vjSqN6qlih7rCNeKGbioS7f/y2Jgym4QZcKFg==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/types': 7.114.0 + tslib: 2.6.3 dev: false - /@sentry/utils@8.17.0: - resolution: {integrity: sha512-HHtAPLOlvzhwgfYzxtuPnLUoGRMtMrFvopkii74zmx/1ZD4VN4PYPB2E5KFf3c18pTovw+kxF0ux6VrGiyAHsw==} - engines: {node: '>=14.18'} + /@smithy/util-hex-encoding@3.0.0: + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} dependencies: - '@sentry/types': 8.17.0 + tslib: 2.6.3 dev: false - /@sentry/utils@8.9.2: - resolution: {integrity: sha512-A4srR9mEBFdVXwSEKjQ94msUbVkMr8JeFiEj9ouOFORw/Y/ux/WV2bWVD/ZI9wq0TcTNK8L1wBgU8UMS5lIq3A==} - engines: {node: '>=14.18'} + /@smithy/util-middleware@1.1.0: + resolution: {integrity: sha512-6hhckcBqVgjWAqLy2vqlPZ3rfxLDhFWEmM7oLh2POGvsi7j0tHkbN7w4DFhuBExVJAbJ/qqxqZdRY6Fu7/OezQ==} + engines: {node: '>=14.0.0'} dependencies: - '@sentry/types': 8.9.2 + tslib: 2.6.3 dev: false - /@shopify/admin-api-client@1.0.0: - resolution: {integrity: sha512-yNLFW+wCmXNnAof6MZKZNPN1CYpFc95UCtQmcqeYc5GLdwvIJVGefUXTPqoBR57jV7b9jF+E6is3mNotEbDlLA==} + /@smithy/util-middleware@3.0.4: + resolution: {integrity: sha512-uSXHTBhstb1c4nHdmQEdkNMv9LiRNaJ/lWV2U/GO+5F236YFpdPw+hyWI9Zc0Rp9XKzwD9kVZvhZmEgp0UCVnA==} + engines: {node: '>=16.0.0'} dependencies: - '@shopify/graphql-client': 1.0.0 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@shopify/graphql-client@1.0.0: - resolution: {integrity: sha512-K3F13BK6dB17yJASRE9Oyn7Etpj58R3cOwzFHB06yCLhWLGcI7JllK+HxZQTgtA3wbLonG3yxt5ns6XNKitphw==} + /@smithy/util-retry@3.0.4: + resolution: {integrity: sha512-JJr6g0tO1qO2tCQyK+n3J18r34ZpvatlFN5ULcLranFIBZPxqoivb77EPyNTVwTGMEvvq2qMnyjm4jMIxjdLFg==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/service-error-classification': 3.0.4 + '@smithy/types': 3.4.0 + tslib: 2.6.3 dev: false - /@shopify/network@3.3.0: - resolution: {integrity: sha512-Lln7vglzLK9KiYhl9ucQFVM7ArlpUM21xkDriBX8kVrqsoBsi+4vFIjf1wjhNPT0J/zHMjky7jiTnxVfdm+xXw==} - engines: {node: '>=18.12.0'} + /@smithy/util-stream@3.1.4: + resolution: {integrity: sha512-txU3EIDLhrBZdGfon6E9V6sZz/irYnKFMblz4TLVjyq8hObNHNS2n9a2t7GIrl7d85zgEPhwLE0gANpZsvpsKg==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/fetch-http-handler': 3.2.5 + '@smithy/node-http-handler': 3.2.0 + '@smithy/types': 3.4.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.3 dev: false - /@shopify/shopify-api@11.1.0: - resolution: {integrity: sha512-PZpOofefIBKhF/tnms11iaUrNrTNgUcKua6nRGtDXqJbSGVVynV55J8pHUhB/3Z7IDczZgmwA0qdX7X3VZmKiA==} + /@smithy/util-uri-escape@1.1.0: + resolution: {integrity: sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==} + engines: {node: '>=14.0.0'} dependencies: - '@shopify/admin-api-client': 1.0.0 - '@shopify/network': 3.3.0 - '@shopify/storefront-api-client': 1.0.0 - compare-versions: 6.1.1 - isbot: 5.1.13 - jose: 5.6.3 - node-fetch: 2.7.0 tslib: 2.6.3 - uuid: 10.0.0 - transitivePeerDependencies: - - encoding dev: false - /@shopify/storefront-api-client@1.0.0: - resolution: {integrity: sha512-TAyCsD+d/Fiwek3YM1/60pXpQTUUX99DM3HpcIed09By5/rAQbQhYWwf9rZDBIJnGXqS/fl3VO4Tqp+173tocw==} + /@smithy/util-uri-escape@3.0.0: + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} dependencies: - '@shopify/graphql-client': 1.0.0 + tslib: 2.6.3 dev: false - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true + /@smithy/util-utf8@1.1.0: + resolution: {integrity: sha512-p/MYV+JmqmPyjdgyN2UxAeYDj9cBqCjp0C/NsTWnnjoZUVqoeZ6IrW915L9CAKWVECgv9lVQGc4u/yz26/bI1A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 1.1.0 + tslib: 2.6.3 + dev: false - /@sindresorhus/is@5.6.0: - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} + /@smithy/util-utf8@2.3.0: + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.6.3 dev: false - /@sinonjs/commons@3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + /@smithy/util-utf8@3.0.0: + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} dependencies: - type-detect: 4.0.8 - dev: true + '@smithy/util-buffer-from': 3.0.0 + tslib: 2.6.3 + dev: false - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + /@smithy/util-waiter@3.1.3: + resolution: {integrity: sha512-OU0YllH51/CxD8iyr3UHSMwYqTGTyuxFdCMH/0F978t+iDmJseC/ttrWPb22zmYkhkrjqtipzC1xaMuax5QKIA==} + engines: {node: '>=16.0.0'} dependencies: - '@sinonjs/commons': 3.0.1 - dev: true + '@smithy/abort-controller': 3.1.2 + '@smithy/types': 3.4.0 + tslib: 2.6.3 + dev: false /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} @@ -5814,6 +8481,13 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true + /@turbopuffer/turbopuffer@0.5.10: + resolution: {integrity: sha512-tQgouaKZPEMSf1y1p6lksmgRZ+Toj248AkPxiCdsZNoHVDWVTZgXHLet9cie4cz4oAaaVE0NWkoMyO0KafFuRA==} + dependencies: + pako: 2.1.0 + undici: 6.19.8 + dev: false + /@types/accepts@1.3.7: resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: @@ -6061,6 +8735,10 @@ packages: '@types/koa': 2.14.0 dev: false + /@types/long@4.0.2: + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + dev: false + /@types/luxon@3.3.8: resolution: {integrity: sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==} dev: false @@ -6069,6 +8747,10 @@ packages: resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} dev: true + /@types/mime-types@2.1.4: + resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} + dev: true + /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} @@ -6181,6 +8863,10 @@ packages: /@types/qs@6.9.14: resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} + /@types/qs@6.9.15: + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + dev: false + /@types/range-parser@1.2.7: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -6195,6 +8881,10 @@ packages: '@types/prop-types': 15.7.12 csstype: 3.1.3 + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: false + /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -6233,6 +8923,14 @@ packages: '@types/superagent': 8.1.6 dev: true + /@types/triple-beam@1.3.5: + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + dev: false + + /@types/uuid@10.0.0: + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + dev: false + /@types/uuid@9.0.8: resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} dev: true @@ -6266,7 +8964,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.4) '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.4) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -6295,7 +8993,7 @@ packages: '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.4) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.4) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -6320,7 +9018,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.4) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.57.0 typescript: 5.4.4 transitivePeerDependencies: @@ -6341,7 +9039,7 @@ packages: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.4) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.57.0 typescript: 5.4.4 transitivePeerDependencies: @@ -6376,7 +9074,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.4) '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.4) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) eslint: 8.57.0 tsutils: 3.21.0(typescript@5.4.4) typescript: 5.4.4 @@ -6396,7 +9094,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.4) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.4) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.4) typescript: 5.4.4 @@ -6425,7 +9123,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 @@ -6446,7 +9144,7 @@ packages: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -6638,6 +9336,11 @@ packages: '@xtuc/long': 4.2.2 dev: true + /@xmldom/xmldom@0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + dev: false + /@xtuc/ieee754@1.2.0: resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} dev: true @@ -6646,6 +9349,19 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true + /@zilliz/milvus2-sdk-node@2.4.8: + resolution: {integrity: sha512-mLwe1Q8YX/gNHT2tK9v3GB9hPlcpdQwnabdsu/txSp+KI/wv5ZCP098NX0dGcR62TGuhx6htA4AVj6Y9OuMIoA==} + dependencies: + '@grpc/grpc-js': 1.11.2 + '@grpc/proto-loader': 0.7.13 + '@petamoriken/float16': 3.8.7 + dayjs: 1.11.10 + generic-pool: 3.9.0 + lru-cache: 9.1.2 + protobufjs: 7.4.0 + winston: 3.14.2 + dev: false + /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false @@ -6657,6 +9373,10 @@ packages: dev: true optional: true + /abort-controller-x@0.4.3: + resolution: {integrity: sha512-VtUwTNU8fpMwvWGn4xE93ywbogTYsuT+AUxAXOeelbXuQVIwNmC5YLeho9sH4vZ4ITW8414TTAOG1nW6uIVHCA==} + dev: false + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -6726,7 +9446,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -6735,7 +9455,7 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -6840,7 +9560,6 @@ packages: /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - dev: true /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} @@ -7103,8 +9822,6 @@ packages: /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} requiresBuild: true - dev: true - optional: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -7195,6 +9912,10 @@ packages: dequal: 2.0.3 dev: true + /b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + dev: false + /babel-jest@29.7.0(@babel/core@7.24.4): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7300,6 +10021,45 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /bare-events@2.4.2: + resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} + requiresBuild: true + dev: false + optional: true + + /bare-fs@2.3.4: + resolution: {integrity: sha512-7YyxitZEq0ey5loOF5gdo1fZQFF7290GziT+VbAJ+JbYTJYaPZwuEz2r/Nq23sm4fjyTgUf2uJI2gkT3xAuSYA==} + requiresBuild: true + dependencies: + bare-events: 2.4.2 + bare-path: 2.1.3 + bare-stream: 2.2.1 + dev: false + optional: true + + /bare-os@2.4.2: + resolution: {integrity: sha512-HZoJwzC+rZ9lqEemTMiO0luOePoGYNBgsLLgegKR/cljiJvcDNhDZQkzC+NC5Oh0aHbdBNSOHpghwMuB5tqhjg==} + requiresBuild: true + dev: false + optional: true + + /bare-path@2.1.3: + resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} + requiresBuild: true + dependencies: + bare-os: 2.4.2 + dev: false + optional: true + + /bare-stream@2.2.1: + resolution: {integrity: sha512-YTB47kHwBW9zSG8LD77MIBAAQXjU2WjAkMHeeb7hUplVs6+IoM5I7uEVQNPMB7lj9r8I76UMdoMkGnCodHOLqg==} + requiresBuild: true + dependencies: + b4a: 1.6.6 + streamx: 2.20.0 + dev: false + optional: true + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -7327,6 +10087,10 @@ packages: is-windows: 1.0.2 dev: false + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false + /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -7338,6 +10102,14 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 + /bluebird@3.4.7: + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} + dev: false + + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: false + /body-parser@1.20.2: resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -7363,6 +10135,10 @@ packages: dev: true optional: true + /bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + dev: false + /boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} engines: {node: '>=14.16'} @@ -7441,6 +10217,13 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -7561,7 +10344,6 @@ packages: /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: true /camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} @@ -7690,11 +10472,47 @@ packages: optionalDependencies: fsevents: 2.3.3 + /chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false + /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} dev: false + /chromadb-default-embed@2.13.2: + resolution: {integrity: sha512-mhqo5rLjkF2KkxAV0WS82vNIXWpVMzvz5y5ayIB2FxcebUbEBNlcRh6XSSqYChWMfJ9us1ZzLQU8RXqsy3sKaA==} + dependencies: + '@huggingface/jinja': 0.1.3 + onnxruntime-web: 1.14.0 + sharp: 0.32.6 + optionalDependencies: + onnxruntime-node: 1.14.0 + dev: false + + /chromadb@1.8.1(openai@4.38.5): + resolution: {integrity: sha512-NpbYydbg4Uqt/9BXKgkZXn0fqpsh2Z1yjhkhKH+rcHMoq0pwI18BFSU2QU7Fk/ZypwGefW2AvqyE/3ZJIgy4QA==} + engines: {node: '>=14.17.0'} + peerDependencies: + '@google/generative-ai': ^0.1.1 + cohere-ai: ^5.0.0 || ^6.0.0 || ^7.0.0 + openai: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + '@google/generative-ai': + optional: true + cohere-ai: + optional: true + openai: + optional: true + dependencies: + cliui: 8.0.1 + isomorphic-fetch: 3.0.0 + openai: 4.38.5 + transitivePeerDependencies: + - encoding + dev: false + /chrome-trace-event@1.0.3: resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} engines: {node: '>=6.0'} @@ -7850,6 +10668,27 @@ packages: engines: {node: '>=0.8'} dev: false + /cohere-ai@7.13.0(@aws-sdk/client-sso-oidc@3.649.0): + resolution: {integrity: sha512-/VTqq2dW7YkQEfeBwEmckAHorQuw1exnfrO3orsixVXASr71oF3TL0w/xi9ZVN9xsoYpXZyVaiD8GBxLEiGJ7Q==} + dependencies: + '@aws-sdk/client-sagemaker': 3.649.0 + '@aws-sdk/credential-providers': 3.645.0(@aws-sdk/client-sso-oidc@3.649.0) + '@aws-sdk/protocol-http': 3.374.0 + '@aws-sdk/signature-v4': 3.374.0 + form-data: 4.0.0 + form-data-encoder: 4.0.2 + formdata-node: 6.0.3 + js-base64: 3.7.2 + node-fetch: 2.7.0 + qs: 6.11.2 + readable-stream: 4.5.2 + url-join: 4.0.1 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + - encoding + dev: false + /collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} dev: true @@ -7883,6 +10722,13 @@ packages: hasBin: true dev: false + /color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: false + /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} @@ -7894,6 +10740,13 @@ packages: /colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + /colorspace@1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + dev: false + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -7904,8 +10757,6 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} requiresBuild: true - dev: true - optional: true /commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} @@ -7927,6 +10778,11 @@ packages: dev: true optional: true + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + /comment-json@4.2.3: resolution: {integrity: sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==} engines: {node: '>= 6'} @@ -8141,6 +10997,14 @@ packages: luxon: 3.4.4 dev: false + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: false + /cross-inspect@1.0.0: resolution: {integrity: sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==} engines: {node: '>=16.0.0'} @@ -8229,14 +11093,26 @@ packages: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: false + /csv-generate@4.4.1: + resolution: {integrity: sha512-O/einO0v4zPmXaOV+sYqGa02VkST4GP5GLpWBNHEouIU7pF3kpGf3D0kCCvX82ydIY4EKkOK+R8b1BYsRXravg==} + dev: false + /csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} dev: false + /csv-parse@5.5.6: + resolution: {integrity: sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A==} + dev: false + /csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} dev: false + /csv-stringify@6.5.1: + resolution: {integrity: sha512-+9lpZfwpLntpTIEpFbwQyWuW/hmI/eHuJZD1XzeZpfZTqkf1fyvBbBLXTJJMsBuuS11uTShMqPwzx4A6ffXgRQ==} + dev: false + /csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} @@ -8247,6 +11123,26 @@ packages: stream-transform: 2.1.3 dev: false + /csv@6.3.10: + resolution: {integrity: sha512-5NYZG4AN2ZUthmNxIudgBEdMPUnbQHu9V4QTzBPqQzUP3KQsFiJo+8HQ0+oVxj1PomIT1/f67VI1QH/hsrZLKA==} + engines: {node: '>= 0.1.90'} + dependencies: + csv-generate: 4.4.1 + csv-parse: 5.5.6 + csv-stringify: 6.5.1 + stream-transform: 3.3.2 + dev: false + + /csvtojson@2.0.10: + resolution: {integrity: sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==} + engines: {node: '>=4.0.0'} + hasBin: true + dependencies: + bluebird: 3.7.2 + lodash: 4.17.21 + strip-bom: 2.0.0 + dev: false + /d3-array@3.2.4: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} engines: {node: '>=12'} @@ -8259,6 +11155,16 @@ packages: engines: {node: '>=12'} dev: false + /d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + dev: false + /d3-ease@3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} @@ -8394,9 +11300,8 @@ packages: optional: true dependencies: ms: 2.1.3 - dev: true - /debug@4.3.4(supports-color@5.5.0): + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -8406,9 +11311,9 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 5.5.0 + dev: true - /debug@4.3.5: + /debug@4.3.5(supports-color@5.5.0): resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: @@ -8418,6 +11323,7 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 5.5.0 /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -8576,6 +11482,10 @@ packages: engines: {node: '>=0.3.1'} dev: true + /dingbat-to-unicode@1.0.1: + resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} + dev: false + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -8726,6 +11636,12 @@ packages: dev: false optional: true + /duck@0.1.12: + resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} + dependencies: + underscore: 1.13.7 + dev: false + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true @@ -8748,7 +11664,7 @@ packages: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 - semver: 7.6.0 + semver: 7.6.3 dev: true optional: true @@ -8785,6 +11701,10 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + /enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + dev: false + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -8803,6 +11723,12 @@ packages: dev: true optional: true + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + dev: false + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -9140,7 +12066,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) enhanced-resolve: 5.16.0 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) @@ -9344,7 +12270,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -9519,6 +12445,11 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + dev: false + /expect@29.7.0: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9534,6 +12465,10 @@ packages: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} dev: false + /expr-eval@2.0.2: + resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==} + dev: false + /express@4.19.2: resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} engines: {node: '>= 0.10.0'} @@ -9578,6 +12513,10 @@ packages: dev: true optional: true + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: false @@ -9590,6 +12529,11 @@ packages: iconv-lite: 0.4.24 tmp: 0.0.33 + /extract-files@9.0.0: + resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} + engines: {node: ^10.17.0 || ^12.0.0 || >= 13.7.0} + dev: false + /fast-copy@3.0.2: resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} dev: false @@ -9606,6 +12550,10 @@ packages: engines: {node: '>=6.0.0'} dev: false + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false + /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -9632,6 +12580,13 @@ packages: /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + /fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: @@ -9643,6 +12598,10 @@ packages: bser: 2.1.1 dev: true + /fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: false + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -9758,10 +12717,23 @@ packages: rimraf: 3.0.2 dev: true + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: false + + /flatbuffers@1.12.0: + resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==} + dev: false + /flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true + /fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + dev: false + /follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -9816,6 +12788,20 @@ packages: engines: {node: '>= 14.17'} dev: false + /form-data-encoder@4.0.2: + resolution: {integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==} + engines: {node: '>= 18'} + dev: false + + /form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -9832,6 +12818,11 @@ packages: web-streams-polyfill: 4.0.0-beta.3 dev: false + /formdata-node@6.0.3: + resolution: {integrity: sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==} + engines: {node: '>= 18'} + dev: false + /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -9869,6 +12860,10 @@ packages: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: false + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -9961,6 +12956,36 @@ packages: wide-align: 1.1.5 dev: false + /gaxios@6.7.1: + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.4 + is-stream: 2.0.1 + node-fetch: 2.7.0 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} + dependencies: + gaxios: 6.7.1 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /generic-pool@3.9.0: + resolution: {integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==} + engines: {node: '>= 4'} + dev: false + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -10032,12 +13057,16 @@ packages: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) fs-extra: 11.2.0 transitivePeerDependencies: - supports-color dev: false + /github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: false + /gitmoji-cli@9.2.0: resolution: {integrity: sha512-U/uKNO+Z4tcFdP5Ip2FBihsGgTvyX8RJVx4twgnv6JB+MKcvqjIE2RiJvxE2uu7dq4wafTzGDpHL3KDiJV1hxQ==} engines: {node: '>=18'} @@ -10155,6 +13184,47 @@ packages: merge2: 1.4.1 slash: 3.0.0 + /google-auth-library@9.14.1: + resolution: {integrity: sha512-Rj+PMjoNFGFTmtItH7gHfbHpGVSb3vmnGK3nwNBqxQF9NoBpttSZI/rc0WiM63ma2uGDQtYEkMHkK9U6937NiA==} + engines: {node: '>=14'} + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.7.1 + gcp-metadata: 6.1.0 + gtoken: 7.1.0 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /googleapis-common@7.2.0: + resolution: {integrity: sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==} + engines: {node: '>=14.0.0'} + dependencies: + extend: 3.0.2 + gaxios: 6.7.1 + google-auth-library: 9.14.1 + qs: 6.12.3 + url-template: 2.0.8 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /googleapis@144.0.0: + resolution: {integrity: sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==} + engines: {node: '>=14.0.0'} + dependencies: + google-auth-library: 9.14.1 + googleapis-common: 7.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: @@ -10192,6 +13262,32 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /graphql-request@5.2.0(graphql@16.9.0): + resolution: {integrity: sha512-pLhKIvnMyBERL0dtFI3medKqWOz/RhHdcgbZ+hMMIb32mEPa5MJSzS4AuXxfI4sRAu6JVVk5tvXuGfCWl9JYWQ==} + peerDependencies: + graphql: 14 - 16 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + cross-fetch: 3.1.8 + extract-files: 9.0.0 + form-data: 3.0.1 + graphql: 16.9.0 + transitivePeerDependencies: + - encoding + dev: false + + /graphql-request@6.1.0(graphql@16.9.0): + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: 14 - 16 + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) + cross-fetch: 3.1.8 + graphql: 16.9.0 + transitivePeerDependencies: + - encoding + dev: false + /graphql-tag@2.12.6(graphql@16.9.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -10200,7 +13296,7 @@ packages: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: graphql: 16.9.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false optional: true @@ -10219,7 +13315,21 @@ packages: resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: false - optional: true + + /gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + dependencies: + gaxios: 6.7.1 + jws: 4.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /guid-typescript@1.0.9: + resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==} + dev: false /handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} @@ -10232,8 +13342,6 @@ packages: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.19.1 - dev: true - optional: true /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} @@ -10396,7 +13504,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -10414,7 +13522,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -10424,7 +13532,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -10466,8 +13574,6 @@ packages: requiresBuild: true dependencies: safer-buffer: 2.1.2 - dev: true - optional: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -10476,6 +13582,10 @@ packages: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} + /immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: false + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -10686,7 +13796,7 @@ packages: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -10925,7 +14035,6 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - dev: true /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -10973,6 +14082,10 @@ packages: engines: {node: '>=18'} dev: false + /is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + dev: false + /is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -11019,6 +14132,15 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isomorphic-fetch@3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + dependencies: + node-fetch: 2.7.0 + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - encoding + dev: false + /istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -11045,7 +14167,7 @@ packages: '@babel/parser': 7.24.8 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color dev: true @@ -11063,7 +14185,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -11612,6 +14734,10 @@ packages: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} + /js-base64@3.7.2: + resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==} + dev: false + /js-beautify@1.15.1: resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} engines: {node: '>=14'} @@ -11636,6 +14762,12 @@ packages: dev: true optional: true + /js-tiktoken@1.0.14: + resolution: {integrity: sha512-Pk3l3WOgM9joguZY2k52+jH82RtABRgB5RdGFZNUGbOKGMVlNmafcPA3b0ITcCZPu1L9UclP1tne6aw7ZI4Myg==} + dependencies: + base64-js: 1.5.1 + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -11661,6 +14793,12 @@ packages: engines: {node: '>=4'} hasBin: true + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + dependencies: + bignumber.js: 9.1.2 + dev: false + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -11721,6 +14859,11 @@ packages: optionalDependencies: graceful-fs: 4.2.11 + /jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + dev: false + /jsonwebtoken@9.0.2: resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} engines: {node: '>=12', npm: '>=6'} @@ -11756,6 +14899,15 @@ packages: object.values: 1.2.0 dev: true + /jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + dev: false + /juice@10.0.0: resolution: {integrity: sha512-9f68xmhGrnIi6DBkiiP3rUrQN33SEuaKu1+njX6VgMP+jwZAsnT33WIzlrWICL9matkhYu3OyrqSUP55YTIdGg==} engines: {node: '>=10.0.0'} @@ -11780,6 +14932,14 @@ packages: safe-buffer: 5.2.1 dev: false + /jwa@2.0.0: + resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: false + /jws@3.2.2: resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} dependencies: @@ -11787,6 +14947,13 @@ packages: safe-buffer: 5.2.1 dev: false + /jws@4.0.0: + resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} + dependencies: + jwa: 2.0.0 + safe-buffer: 5.2.1 + dev: false + /jwt-decode@4.0.0: resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} engines: {node: '>=18'} @@ -11819,6 +14986,272 @@ packages: engines: {node: '>=6'} dev: false + /kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + dev: false + + /langchain@0.2.18(@aws-sdk/client-s3@3.649.0)(@langchain/cohere@0.2.2)(@langchain/community@0.2.32)(@pinecone-database/pinecone@3.0.2)(axios@1.6.8)(chromadb@1.8.1)(d3-dsv@3.0.1)(handlebars@4.7.8)(mammoth@1.8.0)(openai@4.38.5)(pdf-parse@1.1.1): + resolution: {integrity: sha512-7+5Y2FsdjlUBKJf1N+MyHn1PrGZQ9m87l3du7IeH4RiQp4j8Bz7mGV+Bjhr8FEXFjo85zLrbnpsN87pZCstubA==} + engines: {node: '>=18'} + peerDependencies: + '@aws-sdk/client-s3': '*' + '@aws-sdk/client-sagemaker-runtime': '*' + '@aws-sdk/client-sfn': '*' + '@aws-sdk/credential-provider-node': '*' + '@azure/storage-blob': '*' + '@browserbasehq/sdk': '*' + '@gomomento/sdk': '*' + '@gomomento/sdk-core': '*' + '@gomomento/sdk-web': ^1.51.1 + '@langchain/anthropic': '*' + '@langchain/aws': '*' + '@langchain/cohere': '*' + '@langchain/community': '*' + '@langchain/google-genai': '*' + '@langchain/google-vertexai': '*' + '@langchain/groq': '*' + '@langchain/mistralai': '*' + '@langchain/ollama': '*' + '@mendable/firecrawl-js': '*' + '@notionhq/client': '*' + '@pinecone-database/pinecone': '*' + '@supabase/supabase-js': '*' + '@vercel/kv': '*' + '@xata.io/client': '*' + apify-client: '*' + assemblyai: '*' + axios: '*' + cheerio: '*' + chromadb: '*' + convex: '*' + couchbase: '*' + d3-dsv: '*' + epub2: '*' + faiss-node: '*' + fast-xml-parser: '*' + handlebars: ^4.7.8 + html-to-text: '*' + ignore: '*' + ioredis: '*' + jsdom: '*' + mammoth: '*' + mongodb: '*' + node-llama-cpp: '*' + notion-to-md: '*' + officeparser: '*' + pdf-parse: '*' + peggy: ^3.0.2 + playwright: '*' + puppeteer: '*' + pyodide: '>=0.24.1 <0.27.0' + redis: '*' + sonix-speech-recognition: '*' + srt-parser-2: '*' + typeorm: '*' + weaviate-ts-client: '*' + web-auth-library: '*' + ws: '*' + youtube-transcript: '*' + youtubei.js: '*' + peerDependenciesMeta: + '@aws-sdk/client-s3': + optional: true + '@aws-sdk/client-sagemaker-runtime': + optional: true + '@aws-sdk/client-sfn': + optional: true + '@aws-sdk/credential-provider-node': + optional: true + '@azure/storage-blob': + optional: true + '@browserbasehq/sdk': + optional: true + '@gomomento/sdk': + optional: true + '@gomomento/sdk-core': + optional: true + '@gomomento/sdk-web': + optional: true + '@langchain/anthropic': + optional: true + '@langchain/aws': + optional: true + '@langchain/cohere': + optional: true + '@langchain/community': + optional: true + '@langchain/google-genai': + optional: true + '@langchain/google-vertexai': + optional: true + '@langchain/groq': + optional: true + '@langchain/mistralai': + optional: true + '@langchain/ollama': + optional: true + '@mendable/firecrawl-js': + optional: true + '@notionhq/client': + optional: true + '@pinecone-database/pinecone': + optional: true + '@supabase/supabase-js': + optional: true + '@vercel/kv': + optional: true + '@xata.io/client': + optional: true + apify-client: + optional: true + assemblyai: + optional: true + axios: + optional: true + cheerio: + optional: true + chromadb: + optional: true + convex: + optional: true + couchbase: + optional: true + d3-dsv: + optional: true + epub2: + optional: true + faiss-node: + optional: true + fast-xml-parser: + optional: true + handlebars: + optional: true + html-to-text: + optional: true + ignore: + optional: true + ioredis: + optional: true + jsdom: + optional: true + mammoth: + optional: true + mongodb: + optional: true + node-llama-cpp: + optional: true + notion-to-md: + optional: true + officeparser: + optional: true + pdf-parse: + optional: true + peggy: + optional: true + playwright: + optional: true + puppeteer: + optional: true + pyodide: + optional: true + redis: + optional: true + sonix-speech-recognition: + optional: true + srt-parser-2: + optional: true + typeorm: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + ws: + optional: true + youtube-transcript: + optional: true + youtubei.js: + optional: true + dependencies: + '@aws-sdk/client-s3': 3.649.0 + '@langchain/cohere': 0.2.2(@aws-sdk/client-sso-oidc@3.649.0)(langchain@0.2.18)(openai@4.38.5) + '@langchain/community': 0.2.32(@aws-sdk/client-s3@3.649.0)(@langchain/cohere@0.2.2)(@pinecone-database/pinecone@3.0.2)(@qdrant/js-client-rest@1.11.0)(@zilliz/milvus2-sdk-node@2.4.8)(axios@1.6.8)(chromadb@1.8.1)(d3-dsv@3.0.1)(google-auth-library@9.14.1)(googleapis@144.0.0)(handlebars@4.7.8)(mammoth@1.8.0)(openai@4.38.5)(pdf-parse@1.1.1) + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.38.5) + '@langchain/openai': 0.2.10(langchain@0.2.18) + '@langchain/textsplitters': 0.0.3(langchain@0.2.18)(openai@4.38.5) + '@pinecone-database/pinecone': 3.0.2 + axios: 1.6.8 + binary-extensions: 2.3.0 + chromadb: 1.8.1(openai@4.38.5) + d3-dsv: 3.0.1 + handlebars: 4.7.8 + js-tiktoken: 1.0.14 + js-yaml: 4.1.0 + jsonpointer: 5.0.1 + langsmith: 0.1.54(@langchain/core@0.2.31)(langchain@0.2.18)(openai@4.38.5) + mammoth: 1.8.0 + openapi-types: 12.1.3 + p-retry: 4.6.2 + pdf-parse: 1.1.1 + uuid: 10.0.0 + yaml: 2.4.1 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + transitivePeerDependencies: + - encoding + - openai + dev: false + + /langsmith@0.1.54(@langchain/core@0.2.31)(langchain@0.2.18)(openai@4.38.5): + resolution: {integrity: sha512-VTPCzHQGHwJ2gzYLSqm8bYjgkRetAeNzUNB8UNXEd+vHbXA8l3SjThnTVbJMpb+gQgpJWlT9lEyH3WsAK+JyCg==} + peerDependencies: + '@langchain/core': '*' + langchain: '*' + openai: '*' + peerDependenciesMeta: + '@langchain/core': + optional: true + langchain: + optional: true + openai: + optional: true + dependencies: + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.38.5) + '@types/uuid': 10.0.0 + commander: 10.0.1 + langchain: 0.2.18(@aws-sdk/client-s3@3.649.0)(@langchain/cohere@0.2.2)(@langchain/community@0.2.32)(@pinecone-database/pinecone@3.0.2)(axios@1.6.8)(chromadb@1.8.1)(d3-dsv@3.0.1)(handlebars@4.7.8)(mammoth@1.8.0)(openai@4.38.5)(pdf-parse@1.1.1) + openai: 4.38.5 + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.3 + uuid: 10.0.0 + dev: false + + /langsmith@0.1.54(@langchain/core@0.2.31)(langchain@0.2.18)(openai@4.58.2): + resolution: {integrity: sha512-VTPCzHQGHwJ2gzYLSqm8bYjgkRetAeNzUNB8UNXEd+vHbXA8l3SjThnTVbJMpb+gQgpJWlT9lEyH3WsAK+JyCg==} + peerDependencies: + '@langchain/core': '*' + langchain: '*' + openai: '*' + peerDependenciesMeta: + '@langchain/core': + optional: true + langchain: + optional: true + openai: + optional: true + dependencies: + '@langchain/core': 0.2.31(langchain@0.2.18)(openai@4.58.2) + '@types/uuid': 10.0.0 + commander: 10.0.1 + langchain: 0.2.18(@aws-sdk/client-s3@3.649.0)(@langchain/cohere@0.2.2)(@langchain/community@0.2.32)(@pinecone-database/pinecone@3.0.2)(axios@1.6.8)(chromadb@1.8.1)(d3-dsv@3.0.1)(handlebars@4.7.8)(mammoth@1.8.0)(openai@4.38.5)(pdf-parse@1.1.1) + openai: 4.58.2(zod@3.23.8) + p-queue: 6.6.2 + p-retry: 4.6.2 + semver: 7.6.3 + uuid: 10.0.0 + dev: false + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -11905,6 +15338,12 @@ packages: dev: true optional: true + /lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + dependencies: + immediate: 3.0.6 + dev: false + /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -11936,7 +15375,7 @@ packages: dependencies: chalk: 5.3.0 commander: 11.1.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 execa: 8.0.1 lilconfig: 3.0.0 listr2: 8.0.1 @@ -12001,6 +15440,10 @@ packages: dependencies: p-locate: 5.0.0 + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: false + /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} dev: false @@ -12081,12 +15524,40 @@ packages: wrap-ansi: 9.0.0 dev: true + /logform@2.6.1: + resolution: {integrity: sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.3 + triple-beam: 1.4.1 + dev: false + + /long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + dev: false + + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + dev: false + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 + /lop@0.4.2: + resolution: {integrity: sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==} + dependencies: + duck: 0.1.12 + option: 0.2.4 + underscore: 1.13.7 + dev: false + /lower-case@1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} requiresBuild: true @@ -12124,6 +15595,11 @@ packages: engines: {node: '>=12'} dev: false + /lru-cache@9.1.2: + resolution: {integrity: sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==} + engines: {node: 14 || >=16.14} + dev: false + /lucide-react@0.344.0(react@18.2.0): resolution: {integrity: sha512-6YyBnn91GB45VuVT96bYCOKElbJzUHqp65vX8cDcu55MQL9T969v4dhGClpljamuI/+KMO9P6w9Acq1CVQGvIQ==} peerDependencies: @@ -12182,7 +15658,7 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.6.0 + semver: 7.6.3 dev: true /make-error@1.3.6: @@ -12195,6 +15671,23 @@ packages: tmpl: 1.0.5 dev: true + /mammoth@1.8.0: + resolution: {integrity: sha512-pJNfxSk9IEGVpau+tsZFz22ofjUsl2mnA5eT8PjPs2n0BP+rhVte4Nez6FdgEuxv3IGI3afiV46ImKqTGDVlbA==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + '@xmldom/xmldom': 0.8.10 + argparse: 1.0.10 + base64-js: 1.5.1 + bluebird: 3.4.7 + dingbat-to-unicode: 1.0.1 + jszip: 3.10.1 + lop: 0.4.2 + path-is-absolute: 1.0.1 + underscore: 1.13.7 + xmlbuilder: 10.1.1 + dev: false + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -12209,6 +15702,12 @@ packages: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true + /marked@14.1.2: + resolution: {integrity: sha512-f3r0yqpz31VXiDB/wj9GaOB0a2PRLQl6vJmXiFrniNwjkKdvakqJRULhjFKJpxOchlCRiG5fcacoUZY5Xa6PEQ==} + engines: {node: '>= 18'} + hasBin: true + dev: false + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -12829,6 +16328,10 @@ packages: dev: true optional: true + /mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: false + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -12888,6 +16391,11 @@ packages: type-is: 1.6.18 xtend: 4.0.2 + /mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + dev: false + /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true @@ -12908,6 +16416,10 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: false + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -12922,7 +16434,6 @@ packages: /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true /nestjs-pino@3.5.0(@nestjs/common@10.3.7)(pino-http@8.6.1): resolution: {integrity: sha512-IWJ3dzLVjg5istcd3Cz3rVO+gmvabfVAT1YmQgzL1HnC2hkc0H6qA6k6SZ7OIwQfewuRejYfPu3TlkxwRrqxHQ==} @@ -12992,6 +16503,26 @@ packages: - babel-plugin-macros dev: false + /nice-grpc-client-middleware-deadline@2.0.12: + resolution: {integrity: sha512-drKxQJzTbh+Qkd6v+BcRhTmY2mw9zR8Qigu/jk0vIkDi90K6NOOJGgvBdbTxKXtv6QY1g07T1LvwaqW3Mlwdvw==} + dependencies: + nice-grpc-common: 2.0.2 + dev: false + + /nice-grpc-common@2.0.2: + resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} + dependencies: + ts-error: 1.0.6 + dev: false + + /nice-grpc@2.1.9: + resolution: {integrity: sha512-shJlg1t4Wn3qTVE31gxofbTrgCX/p4tS1xRnk4bNskCYKvXNEUpJQZpjModsVk1aau69YZDViyC18K9nC7QHYA==} + dependencies: + '@grpc/grpc-js': 1.11.2 + abort-controller-x: 0.4.3 + nice-grpc-common: 2.0.2 + dev: false + /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} requiresBuild: true @@ -13021,6 +16552,10 @@ packages: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} dev: false + /node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + dev: false + /node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} dev: true @@ -13036,6 +16571,10 @@ packages: lodash: 4.17.21 dev: true + /node-ensure@0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -13253,6 +16792,12 @@ packages: dependencies: wrappy: 1.0.2 + /one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + dependencies: + fn.name: 1.1.0 + dev: false + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -13265,6 +16810,36 @@ packages: dependencies: mimic-fn: 4.0.0 + /onnx-proto@4.0.4: + resolution: {integrity: sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==} + dependencies: + protobufjs: 6.11.4 + dev: false + + /onnxruntime-common@1.14.0: + resolution: {integrity: sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==} + dev: false + + /onnxruntime-node@1.14.0: + resolution: {integrity: sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==} + os: [win32, darwin, linux] + requiresBuild: true + dependencies: + onnxruntime-common: 1.14.0 + dev: false + optional: true + + /onnxruntime-web@1.14.0: + resolution: {integrity: sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==} + dependencies: + flatbuffers: 1.12.0 + guid-typescript: 1.0.9 + long: 4.0.0 + onnx-proto: 4.0.4 + onnxruntime-common: 1.14.0 + platform: 1.3.6 + dev: false + /open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} @@ -13291,6 +16866,33 @@ packages: - encoding dev: false + /openai@4.58.2(zod@3.23.8): + resolution: {integrity: sha512-hIalypYELt7/PcryFpz4Gi1z/8ZDzukWyOhr+jKM6L/GVE+t4NseaENXKt+OxnkkIm/1R2EkdGxgnHrZ0kB5bQ==} + hasBin: true + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + dependencies: + '@types/node': 18.19.31 + '@types/node-fetch': 2.6.11 + '@types/qs': 6.9.15 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0 + qs: 6.12.3 + zod: 3.23.8 + transitivePeerDependencies: + - encoding + dev: false + + /openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + dev: false + /opentelemetry-instrumentation-fetch-node@1.2.0: resolution: {integrity: sha512-aiSt/4ubOTyb1N5C2ZbGrBvaJOXIZhZvpRPYuUVxQJe27wJZqf/o65iPrqgLcgfeOLaQ8cS2Q+762jrYvniTrA==} engines: {node: '>18.0.0'} @@ -13319,6 +16921,10 @@ packages: dev: false optional: true + /option@0.2.4: + resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} + dev: false + /optional@0.1.4: resolution: {integrity: sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==} dev: false @@ -13397,8 +17003,6 @@ packages: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} requiresBuild: true - dev: true - optional: true /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -13429,14 +17033,28 @@ packages: engines: {node: '>=6'} dev: false + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: false + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: false + /p-timeout@3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} requiresBuild: true dependencies: p-finally: 1.0.0 - dev: true - optional: true /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} @@ -13457,7 +17075,7 @@ packages: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) get-uri: 6.0.3 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 @@ -13482,7 +17100,15 @@ packages: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.0 + semver: 7.6.3 + dev: false + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: false + + /pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} dev: false /param-case@2.1.1: @@ -13632,6 +17258,16 @@ packages: resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} dev: false + /pdf-parse@1.1.1: + resolution: {integrity: sha512-v6ZJ/efsBpGrGGknjtq9J/oC8tZWq0KWL5vQrk2GlzLEQPUDB1ex+13Rmidl1neNN358Jn9EHZw5y07FFtaC7A==} + engines: {node: '>=6.8.1'} + dependencies: + debug: 3.2.7 + node-ensure: 0.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} requiresBuild: true @@ -13762,6 +17398,10 @@ packages: dependencies: find-up: 4.1.0 + /platform@1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + dev: false + /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -13912,6 +17552,25 @@ packages: resolution: {integrity: sha512-S1d1ernz3KQ+Y2awUxKakpfOg2CEmJmwOP+6igPx6dgr6pgDvenqYviyokWso2rhHvGtTlWWnJDa7RaPbQerTg==} dev: false + /prebuild-install@7.1.2: + resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + detect-libc: 2.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 3.65.0 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: false + /preferred-pm@3.1.3: resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==} engines: {node: '>=10'} @@ -14013,6 +17672,45 @@ packages: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} requiresBuild: true + /protobufjs@6.11.4: + resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} + hasBin: true + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/long': 4.0.2 + '@types/node': 20.12.12 + long: 4.0.0 + dev: false + + /protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} + engines: {node: '>=12.0.0'} + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 20.12.12 + long: 5.2.3 + dev: false + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -14025,7 +17723,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 lru-cache: 7.18.3 @@ -14208,6 +17906,13 @@ packages: dependencies: side-channel: 1.0.6 + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + dev: false + /qs@6.12.3: resolution: {integrity: sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==} engines: {node: '>=0.6'} @@ -14217,6 +17922,10 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: false @@ -15157,7 +18866,7 @@ packages: resolution: {integrity: sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==} engines: {node: '>=8.6.0'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) module-details-from-path: 1.0.3 resolve: 1.22.8 transitivePeerDependencies: @@ -15239,6 +18948,11 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -15320,6 +19034,10 @@ packages: resolution: {integrity: sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==} dev: false + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: @@ -15410,6 +19128,11 @@ packages: dependencies: lru-cache: 6.0.0 + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -15472,6 +19195,10 @@ packages: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: false + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -15479,6 +19206,21 @@ packages: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} dev: false + /sharp@0.32.6: + resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} + engines: {node: '>=14.15.0'} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + node-addon-api: 6.1.0 + prebuild-install: 7.1.2 + semver: 7.6.3 + simple-get: 4.0.1 + tar-fs: 3.0.6 + tunnel-agent: 0.6.0 + dev: false + /sharp@0.33.3: resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -15560,6 +19302,18 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: false + + /simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: @@ -15619,7 +19373,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) socks: 2.8.2 transitivePeerDependencies: - supports-color @@ -15737,6 +19491,10 @@ packages: frac: 1.1.2 dev: false + /stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + dev: false + /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -15757,6 +19515,13 @@ packages: engines: {node: '>=18'} dev: false + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: @@ -15769,10 +19534,24 @@ packages: mixme: 0.5.10 dev: false + /stream-transform@3.3.2: + resolution: {integrity: sha512-v64PUnPy9Qw94NGuaEMo+9RHQe4jTBYf+NkTtqkCgeuiNo8NlL0LtLR7fkKWNVFtp3RhIm5Dlxkgm5uz7TDimQ==} + dev: false + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} + /streamx@2.20.0: + resolution: {integrity: sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.1.1 + optionalDependencies: + bare-events: 2.4.2 + dev: false + /string-argv@0.1.2: resolution: {integrity: sha512-mBqPGEOMNJKXRo7z0keX0wlAhbBAjilUdPW13nN0PecVryZxdHIeM7TqbsSUA7VYuS00HGC6mojP7DlQzfa9ZA==} engines: {node: '>=0.6.19'} @@ -15890,6 +19669,13 @@ packages: dependencies: ansi-regex: 6.0.1 + /strip-bom@2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} + dependencies: + is-utf8: 0.2.1 + dev: false + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -15931,6 +19717,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + /stubborn-fs@1.2.5: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} dev: false @@ -16031,7 +19821,7 @@ packages: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 2.1.2 @@ -16145,6 +19935,44 @@ packages: engines: {node: '>=6'} dev: true + /tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: false + + /tar-fs@3.0.6: + resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} + dependencies: + pump: 3.0.0 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 2.3.4 + bare-path: 2.1.3 + dev: false + + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.2 + streamx: 2.20.0 + dev: false + /tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -16230,6 +20058,16 @@ packages: minimatch: 3.1.2 dev: true + /text-decoder@1.1.1: + resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==} + dependencies: + b4a: 1.6.6 + dev: false + + /text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + dev: false + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -16325,6 +20163,11 @@ packages: engines: {node: '>=8'} dev: false + /triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + dev: false + /ts-api-utils@1.3.0(typescript@5.4.4): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -16334,6 +20177,10 @@ packages: typescript: 5.4.4 dev: true + /ts-error@1.0.6: + resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} + dev: false + /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} @@ -16462,7 +20309,6 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -16521,7 +20367,7 @@ packages: bundle-require: 4.0.2(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 esbuild: 0.19.12 execa: 5.1.1 globby: 11.1.0 @@ -16572,6 +20418,12 @@ packages: yargs: 17.7.2 dev: false + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /turbo-darwin-64@1.13.2: resolution: {integrity: sha512-CCSuD8CfmtncpohCuIgq7eAzUas0IwSbHfI8/Q3vKObTdXyN8vAo01gwqXjDGpzG9bTEVedD0GmLbD23dR0MLA==} cpu: [x64] @@ -16749,7 +20601,6 @@ packages: resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==} engines: {node: '>=14.17'} hasBin: true - dev: true /typescript@5.5.3: resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} @@ -16768,7 +20619,6 @@ packages: engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true - dev: true optional: true /uid@2.0.2: @@ -16790,6 +20640,10 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + /underscore@1.13.7: + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} + dev: false + /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -16800,6 +20654,11 @@ packages: '@fastify/busboy': 2.1.1 dev: false + /undici@6.19.8: + resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} + engines: {node: '>=18.17'} + dev: false + /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -16870,6 +20729,14 @@ packages: dependencies: punycode: 2.3.1 + /url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + dev: false + + /url-template@2.0.8: + resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} + dev: false + /use-callback-ref@1.3.2(@types/react@18.2.75)(react@18.2.0): resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} @@ -17053,6 +20920,31 @@ packages: dependencies: defaults: 1.0.4 + /weaviate-client@3.1.4: + resolution: {integrity: sha512-Bw9KV0wtFd4TdifhPAkmc2Lv7bKIX0L2oqObUNG8K8Mv0zoVixGcqlAS3xJdfQ2jSqz0vH3mfetsOBdlvogxfg==} + engines: {node: '>=18.0.0'} + dependencies: + graphql: 16.9.0 + graphql-request: 6.1.0(graphql@16.9.0) + long: 5.2.3 + nice-grpc: 2.1.9 + nice-grpc-client-middleware-deadline: 2.0.12 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + dev: false + + /weaviate-ts-client@2.2.0(graphql@16.9.0): + resolution: {integrity: sha512-sOvX1Gt8+u9wIVmiYii26N4KSpZ8jM5fM4DMmtRL6yPNO9u8elsvg5g7eJOwmrICsn1Zt2efxhxuSChI0M8FzQ==} + engines: {node: '>=16.0.0'} + dependencies: + graphql-request: 5.2.0(graphql@16.9.0) + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - graphql + dev: false + /web-resource-inliner@6.0.1: resolution: {integrity: sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==} engines: {node: '>=10.0.0'} @@ -17177,6 +21069,10 @@ packages: - uglify-js dev: true + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + dev: false + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} requiresBuild: true @@ -17281,6 +21177,32 @@ packages: string-width: 5.1.2 dev: false + /winston-transport@4.7.1: + resolution: {integrity: sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==} + engines: {node: '>= 12.0.0'} + dependencies: + logform: 2.6.1 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + dev: false + + /winston@3.14.2: + resolution: {integrity: sha512-CO8cdpBB2yqzEf8v895L+GNKYJiEq8eKlHU38af3snQBQ+sdAIUepjMSguOIJC7ICbzm0ZI+Af2If4vIJrtmOg==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.5 + is-stream: 2.0.1 + logform: 2.6.1 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.4.3 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.7.1 + dev: false + /with@7.0.2: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} @@ -17306,8 +21228,6 @@ packages: /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} requiresBuild: true - dev: true - optional: true /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -17411,6 +21331,11 @@ packages: word: 0.3.0 dev: false + /xmlbuilder@10.1.1: + resolution: {integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==} + engines: {node: '>=4.0'} + dev: false + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -17492,6 +21417,14 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + /zod-to-json-schema@3.23.3(zod@3.23.8): + resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} + peerDependencies: + zod: ^3.23.3 + dependencies: + zod: 3.23.8 + dev: false + /zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} dev: false