From 5ced2adc2785182f6dd3d31550906fa184f9330a Mon Sep 17 00:00:00 2001 From: mohamaddwik29 Date: Thu, 25 Jul 2024 23:56:08 +0400 Subject: [PATCH] add reclaim uber stamp --- app/components/CardList.tsx | 2 +- app/context/ceramicContext.tsx | 8 + app/public/assets/uber-icon.svg | 1 + platforms/package.json | 1 + platforms/src/Uber/App-Bindings.ts | 34 ++++ platforms/src/Uber/Providers-config.ts | 28 +++ platforms/src/Uber/Providers/uberRides.ts | 61 +++++++ platforms/src/Uber/index.ts | 4 + platforms/src/platforms.ts | 2 + types/src/index.d.ts | 6 +- yarn.lock | 197 +++++++++++++++++++++- 11 files changed, 337 insertions(+), 7 deletions(-) create mode 100644 app/public/assets/uber-icon.svg create mode 100644 platforms/src/Uber/App-Bindings.ts create mode 100644 platforms/src/Uber/Providers-config.ts create mode 100644 platforms/src/Uber/Providers/uberRides.ts create mode 100644 platforms/src/Uber/index.ts diff --git a/app/components/CardList.tsx b/app/components/CardList.tsx index 8287842b8d..c81773dfe6 100644 --- a/app/components/CardList.tsx +++ b/app/components/CardList.tsx @@ -49,7 +49,7 @@ export const PLATFORM_CATEGORIES: PLATFORM_CATEGORY[] = [ { name: "Social & Professional Platforms", description: "Link your profiles from established social media and professional networking sites for verification.", - platforms: ["Github", "Linkedin", "Google", "Discord"], + platforms: ["Github", "Linkedin", "Google", "Discord", "Uber"], }, { name: "Biometric Verification", diff --git a/app/context/ceramicContext.tsx b/app/context/ceramicContext.tsx index 21fde896c5..ab7e59a177 100644 --- a/app/context/ceramicContext.tsx +++ b/app/context/ceramicContext.tsx @@ -44,6 +44,7 @@ const { Outdid, AllowList, Binance, + Uber, } = stampPlatforms; import { PlatformProps } from "../components/GenericPlatform"; @@ -228,6 +229,13 @@ if (process.env.NEXT_PUBLIC_FF_BINANCE_STAMPS === "on") { }); } +if (process.env.NEXT_PUBLIC_FF_UBER_STAMPS === "on") { + platforms.set("Uber", { + platform: new Uber.UberPlatform(), + platFormGroupSpec: Uber.ProviderConfig, + }); +} + export enum IsLoadingPassportState { Idle, Loading, diff --git a/app/public/assets/uber-icon.svg b/app/public/assets/uber-icon.svg new file mode 100644 index 0000000000..a9499827e9 --- /dev/null +++ b/app/public/assets/uber-icon.svg @@ -0,0 +1 @@ +icon \ No newline at end of file diff --git a/platforms/package.json b/platforms/package.json index ff7e4cec9e..2b928e64c0 100644 --- a/platforms/package.json +++ b/platforms/package.json @@ -33,6 +33,7 @@ "@ethersproject/providers": "^5.6.2", "@gitcoin/passport-types": "^1.0.0", "@guildxyz/sdk": "^2.5.0", + "@reclaimprotocol/js-sdk": "^1.3.10", "@spruceid/didkit-wasm": "^0.3.0-alpha0", "axios": "^0.26.1", "bignumber.js": "4.0.4", diff --git a/platforms/src/Uber/App-Bindings.ts b/platforms/src/Uber/App-Bindings.ts new file mode 100644 index 0000000000..1a7c88ee78 --- /dev/null +++ b/platforms/src/Uber/App-Bindings.ts @@ -0,0 +1,34 @@ +import { Platform } from "../utils/platform"; +import { AppContext, ProviderPayload } from "../types"; + +export class UberPlatform extends Platform { + platformId = "Uber"; + path = "uber"; + + getRequestUrl(state: string, callbackUrl?: string): string { + return `https://publish-credentials.reclaimprotocol.org/integration?state=${state}&redirect_uri=${callbackUrl}`; + } + + async getProviderPayload(appContext: AppContext): Promise { + const reqUrl: string = this.getRequestUrl(appContext.state, appContext.callbackUrl); + const width = 600; + const height = 800; + const left = appContext.screen.width / 2 - width / 2; + const top = appContext.screen.height / 2 - height / 2; + + // Pass data to the page via props + appContext.window.open( + reqUrl, + "_blank", + `toolbar=no, location=no, directories=no, status=no, menubar=no, resizable=no, copyhistory=no, width=${width}, height=${height}, top=${top}, left=${left}` + ); + + return appContext.waitForRedirect(this).then((data) => { + return { + code: data.code, + sessionKey: data.state, + signature: data.signature, + }; + }); + } +} \ No newline at end of file diff --git a/platforms/src/Uber/Providers-config.ts b/platforms/src/Uber/Providers-config.ts new file mode 100644 index 0000000000..c985665047 --- /dev/null +++ b/platforms/src/Uber/Providers-config.ts @@ -0,0 +1,28 @@ +import { PlatformSpec, PlatformGroupSpec, Provider } from "../types"; +import { UberRidesProvider } from "./Providers/uberRides"; + +export const PlatformDetails: PlatformSpec = { + icon: "./assets/uber-icon.svg", + platform: "Uber", + name: "Uber", + description: + "Using Reclaim's zk technology, you can connect your Uber account without sharing any of the account information with Reclaim or Passport", + connectMessage: "Connect Account", + website: "https://uber.com/", +}; + +export const ProviderConfig: PlatformGroupSpec[] = [ + { + platformGroup: "Account has one ride", + providers: [ + { + title: "at least 1 ride", + name: "UberRides", + } + ], + }, +]; + +export const providers: Provider[] = [ + new UberRidesProvider(), +]; \ No newline at end of file diff --git a/platforms/src/Uber/Providers/uberRides.ts b/platforms/src/Uber/Providers/uberRides.ts new file mode 100644 index 0000000000..3c97a3b4f8 --- /dev/null +++ b/platforms/src/Uber/Providers/uberRides.ts @@ -0,0 +1,61 @@ +import axios from "axios"; +import { ProviderContext, RequestPayload, VerifiedPayload } from "@gitcoin/passport-types"; +import { Proof, Reclaim } from "@reclaimprotocol/js-sdk"; +import { ProviderExternalVerificationError, type Provider } from "../../types"; + +type StatusResponse = { + session: { + proofs: Proof[]; + }; +}; +async function verifyUberRides(code: string): Promise<{ hasRide: boolean }> { + const reclaimClient = new Reclaim.ProofRequest(process.env.NEXT_PUBLIC_RECLAIM_APP_ID, { sessionId: code }); + const res = await axios.get(reclaimClient.getStatusUrl()); + const data = res.data as StatusResponse; + if (data.session) { + const proof = data.session.proofs[0]; + if (!Reclaim.verifySignedProof(proof)) { + throw new Error("Proof signature invalid"); + } + + return { + hasRide: true, + }; + } else { + throw new Error("No session in response"); + } +} + +const checkUberRides = (hasRide: boolean): { valid: boolean; errors: string[] } => { + if (hasRide) { + return { + valid: true, + errors: undefined, + }; + } else { + return { + valid: false, + errors: [`Uber account doesn't have any rides.`], + }; + } +}; + +export class UberRidesProvider implements Provider { + type = "uberRides"; + + async verify(payload: RequestPayload, context: ProviderContext): Promise { + try { + const { hasRide } = await verifyUberRides(payload.proofs.code); + + const { valid, errors } = checkUberRides(hasRide); + + return { + valid, + errors, + record: { address: payload.address }, + }; + } catch (e: unknown) { + throw new ProviderExternalVerificationError(`Error verifying Reclaim Proof: ${String(e)}`); + } + } +} \ No newline at end of file diff --git a/platforms/src/Uber/index.ts b/platforms/src/Uber/index.ts new file mode 100644 index 0000000000..750ac652f1 --- /dev/null +++ b/platforms/src/Uber/index.ts @@ -0,0 +1,4 @@ +// Uber Platform +export { UberPlatform } from "./App-Bindings"; +export { PlatformDetails, ProviderConfig, providers } from "./Providers-config"; +export { UberRidesProvider } from "./Providers/uberRides"; \ No newline at end of file diff --git a/platforms/src/platforms.ts b/platforms/src/platforms.ts index fadb034c92..aa1376f3e8 100644 --- a/platforms/src/platforms.ts +++ b/platforms/src/platforms.ts @@ -22,6 +22,7 @@ import * as TrustaLabs from "./TrustaLabs"; import * as Outdid from "./Outdid"; import * as AllowList from "./AllowList"; import * as Binance from "./Binance"; +import * as Uber from "./Uber"; import { PlatformSpec, PlatformGroupSpec, Provider } from "./types"; type PlatformConfig = { @@ -56,6 +57,7 @@ const platforms: Record = { Outdid, AllowList, Binance, + Uber, }; if (process.env.NEXT_PUBLIC_FF_NEW_POAP_STAMPS === "on") { diff --git a/types/src/index.d.ts b/types/src/index.d.ts index f85cb422c0..39f861293c 100644 --- a/types/src/index.d.ts +++ b/types/src/index.d.ts @@ -360,7 +360,8 @@ export type PLATFORM_ID = | "TrustaLabs" | "Outdid" | "AllowList" - | "Binance"; + | "Binance" + | "Uber"; export type PLATFORM_CATEGORY = { name: string; @@ -443,7 +444,8 @@ export type PROVIDER_ID = | "Outdid" | "AllowList" | `AllowList#${string}` - | "BinanceBABT"; + | "BinanceBABT" + | "UberRides"; export type StampBit = { bit: number; diff --git a/yarn.lock b/yarn.lock index fe594945dc..683ccdfc2e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7905,6 +7905,18 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== +"@reclaimprotocol/js-sdk@^1.3.10": + version "1.3.10" + resolved "https://registry.yarnpkg.com/@reclaimprotocol/js-sdk/-/js-sdk-1.3.10.tgz#1595c6d0027e4dfa521efecfe4dd7364d5c7dd35" + integrity sha512-YYGXpBELdY5COxDHcirFLLXD8LwErBG3VHAAWkqwLVTv+kjy80lHXTFVJMlJcq9GouPGcTCdCbm4wH4qDYUVZA== + dependencies: + canonicalize "^2.0.0" + ethers "^6.9.1" + pino "^8.19.0" + qs "^6.11.2" + url-parse "^1.5.10" + uuid "^9.0.1" + "@redis/bloom@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.2.0.tgz#d3fd6d3c0af3ef92f26767b56414a370c7b63b71" @@ -11407,6 +11419,17 @@ call-bind@^1.0.4, call-bind@^1.0.5: get-intrinsic "^1.2.1" set-function-length "^1.1.1" +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callback-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/callback-stream/-/callback-stream-1.1.0.tgz#4701a51266f06e06eaa71fc17233822d875f4908" @@ -12707,6 +12730,15 @@ define-data-property@^1.0.1, define-data-property@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" @@ -13537,6 +13569,18 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-get-iterator@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" @@ -14131,6 +14175,19 @@ ethers@^6.7.1: tslib "2.4.0" ws "8.5.0" +ethers@^6.9.1: + version "6.13.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.1.tgz#2b9f9c7455cde9d38b30fe6589972eb083652961" + integrity sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.17.1" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -14397,6 +14454,11 @@ fast-redact@^3.0.0: resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634" integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== +fast-redact@^3.1.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" + integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== + fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" @@ -14933,6 +14995,17 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-iterator@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" @@ -15470,6 +15543,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -21014,6 +21094,11 @@ on-exit-leak-free@^0.2.0: resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== +on-exit-leak-free@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== + on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -21710,6 +21795,14 @@ pify@^5.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== +pino-abstract-transport@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" + integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q== + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + pino-abstract-transport@v0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" @@ -21723,6 +21816,11 @@ pino-std-serializers@^4.0.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== +pino-std-serializers@^6.0.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" + integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== + pino@7.11.0: version "7.11.0" resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" @@ -21740,6 +21838,23 @@ pino@7.11.0: sonic-boom "^2.2.1" thread-stream "^0.15.1" +pino@^8.19.0: + version "8.21.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-8.21.0.tgz#e1207f3675a2722940d62da79a7a55a98409f00d" + integrity sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.2.0" + pino-std-serializers "^6.0.0" + process-warning "^3.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^3.7.0" + thread-stream "^2.6.0" + pirates@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" @@ -21962,6 +22077,16 @@ process-warning@^1.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +process-warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b" + integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + progress-events@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.0.tgz#34f5e8fdb5dae3561837b22672d1e02277bb2109" @@ -22193,6 +22318,13 @@ qs@^6.10.3, qs@^6.9.4: dependencies: side-channel "^1.0.4" +qs@^6.11.2: + version "6.12.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754" + integrity sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ== + dependencies: + side-channel "^1.0.6" + qs@^6.7.0: version "6.11.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" @@ -22614,6 +22746,17 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readdir-scoped-modules@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" @@ -22636,6 +22779,11 @@ real-require@^0.1.0: resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== +real-require@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== + receptacle@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" @@ -23099,7 +23247,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.2.2" is-regex "^1.1.4" -safe-stable-stringify@^2.1.0: +safe-stable-stringify@^2.1.0, safe-stable-stringify@^2.3.1: version "2.4.3" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== @@ -23269,6 +23417,18 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -23334,6 +23494,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -23468,6 +23638,13 @@ sonic-boom@^2.2.1: dependencies: atomic-sleep "^1.0.0" +sonic-boom@^3.7.0: + version "3.8.1" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.1.tgz#d5ba8c4e26d6176c9a1d14d549d9ff579a163422" + integrity sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg== + dependencies: + atomic-sleep "^1.0.0" + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -23850,7 +24027,7 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -24217,6 +24394,13 @@ thread-stream@^0.15.1: dependencies: real-require "^0.1.0" +thread-stream@^2.6.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.7.0.tgz#d8a8e1b3fd538a6cca8ce69dbe5d3d097b601e11" + integrity sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw== + dependencies: + real-require "^0.2.0" + throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -25058,7 +25242,7 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-parse@^1.5.3: +url-parse@^1.5.10, url-parse@^1.5.3: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== @@ -25165,7 +25349,7 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.0: +uuid@^9.0.0, uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== @@ -25647,6 +25831,11 @@ ws@8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + ws@8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"