From a36b46bd8145285b7bd5a5f1e5e98f7655ef0f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Omar=20L=C3=B3pez?= Date: Tue, 22 Nov 2022 16:10:31 -0700 Subject: [PATCH] Feat/salesforce app (#5649) * WIP * warnings and errors, and working app * Refresh token now usable * Correcting env.appStore.example * Reverting changes that will come from Sendgrid App PR * Resetting with main * Renaming all othercalendars * Fixing types * Renaming leftovers * More renaming stuff * Format readme * Adds prettier override for website wordlist * Omit salesforce app in this PR * Revert "Omit salesforce app in this PR" This reverts commit 22c09fe53578fc37293027ef3667e1bdf2d6c6e7. * Update yarn.lock Co-authored-by: Leo Giovanetti Co-authored-by: Peer Richelsen Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- .env.appStore.example | 6 + packages/app-store/apps.metadata.generated.ts | 2 + packages/app-store/apps.server.generated.ts | 1 + packages/app-store/index.ts | 2 + packages/app-store/salesforce/README.mdx | 12 + packages/app-store/salesforce/_metadata.ts | 10 + packages/app-store/salesforce/api/add.ts | 24 ++ packages/app-store/salesforce/api/callback.ts | 55 ++++ packages/app-store/salesforce/api/index.ts | 2 + .../app-store/salesforce/components/.gitkeep | 0 packages/app-store/salesforce/config.json | 16 + packages/app-store/salesforce/index.ts | 3 + .../salesforce/lib/CalendarService.ts | 275 ++++++++++++++++++ packages/app-store/salesforce/lib/index.ts | 1 + packages/app-store/salesforce/package.json | 16 + packages/app-store/salesforce/static/1.png | Bin 0 -> 32085 bytes packages/app-store/salesforce/static/icon.png | Bin 0 -> 22932 bytes packages/prisma/seed-app-store.ts | 6 + turbo.json | 2 + yarn.lock | 175 ++++++++++- 20 files changed, 595 insertions(+), 13 deletions(-) create mode 100644 packages/app-store/salesforce/README.mdx create mode 100644 packages/app-store/salesforce/_metadata.ts create mode 100644 packages/app-store/salesforce/api/add.ts create mode 100644 packages/app-store/salesforce/api/callback.ts create mode 100644 packages/app-store/salesforce/api/index.ts create mode 100644 packages/app-store/salesforce/components/.gitkeep create mode 100644 packages/app-store/salesforce/config.json create mode 100644 packages/app-store/salesforce/index.ts create mode 100644 packages/app-store/salesforce/lib/CalendarService.ts create mode 100644 packages/app-store/salesforce/lib/index.ts create mode 100644 packages/app-store/salesforce/package.json create mode 100644 packages/app-store/salesforce/static/1.png create mode 100644 packages/app-store/salesforce/static/icon.png diff --git a/.env.appStore.example b/.env.appStore.example index dafa17f00e..47c99d5b09 100644 --- a/.env.appStore.example +++ b/.env.appStore.example @@ -14,6 +14,7 @@ # - ZAPIER # - LARK # - WEB3 +# - SALESFORCE # - APP STORE ********************************************************************************************** # ⚠️ ⚠️ ⚠️ THESE WILL BE MIGRATED TO THE DATABASE TO PREVENT AWS's 4KB ENV QUOTA ⚠️ ⚠️ ⚠️ @@ -103,4 +104,9 @@ LARK_OPEN_VERIFICATION_TOKEN="" # @see https://github.com/calcom/cal.com/blob/main/packages/app-store/rainbow/README.md ALCHEMY_API_KEY="" INFURA_API_KEY="" + +# - SALESFORCE +# Used for the Salesforce (Sales Cloud) app +SALESFORCE_CONSUMER_KEY="" +SALESFORCE_CONSUMER_SECRET="" # ********************************************************************************************************* diff --git a/packages/app-store/apps.metadata.generated.ts b/packages/app-store/apps.metadata.generated.ts index df6120d107..be1fcb4323 100644 --- a/packages/app-store/apps.metadata.generated.ts +++ b/packages/app-store/apps.metadata.generated.ts @@ -30,6 +30,7 @@ import { metadata as qr_code_meta } from "./qr_code/_metadata"; import { metadata as rainbow_meta } from "./rainbow/_metadata"; import { metadata as raycast_meta } from "./raycast/_metadata"; import { metadata as riverside_meta } from "./riverside/_metadata"; +import { metadata as salesforce_meta } from "./salesforce/_metadata"; import { metadata as sendgrid_meta } from "./sendgrid/_metadata"; import { metadata as signal_meta } from "./signal/_metadata"; import { metadata as sirius_video_meta } from "./sirius_video/_metadata"; @@ -73,6 +74,7 @@ export const appStoreMetadata = { rainbow: rainbow_meta, raycast: raycast_meta, riverside: riverside_meta, + salesforce: salesforce_meta, sendgrid: sendgrid_meta, signal: signal_meta, sirius_video: sirius_video_meta, diff --git a/packages/app-store/apps.server.generated.ts b/packages/app-store/apps.server.generated.ts index e4f65ae098..eacbf52fdd 100644 --- a/packages/app-store/apps.server.generated.ts +++ b/packages/app-store/apps.server.generated.ts @@ -29,6 +29,7 @@ export const apiHandlers = { rainbow: import("./rainbow/api"), raycast: import("./raycast/api"), riverside: import("./riverside/api"), + salesforce: import("./salesforce/api"), sendgrid: import("./sendgrid/api"), signal: import("./signal/api"), sirius_video: import("./sirius_video/api"), diff --git a/packages/app-store/index.ts b/packages/app-store/index.ts index 3fc35571bd..6c678cd4f9 100644 --- a/packages/app-store/index.ts +++ b/packages/app-store/index.ts @@ -15,6 +15,7 @@ import * as jitsivideo from "./jitsivideo"; import * as larkcalendar from "./larkcalendar"; import * as office365calendar from "./office365calendar"; import * as office365video from "./office365video"; +import * as salesforce from "./salesforce"; import * as sendgrid from "./sendgrid"; import * as stripepayment from "./stripepayment"; import * as tandemvideo from "./tandemvideo"; @@ -37,6 +38,7 @@ const appStore = { larkcalendar, office365calendar, office365video, + salesforce, sendgrid, stripepayment, tandemvideo, diff --git a/packages/app-store/salesforce/README.mdx b/packages/app-store/salesforce/README.mdx new file mode 100644 index 0000000000..5188df3107 --- /dev/null +++ b/packages/app-store/salesforce/README.mdx @@ -0,0 +1,12 @@ +--- +description: Salesforce (Sales Cloud) is a cloud-based application designed to help your salespeople sell smarter and faster by centralizing customer information, logging their interactions with your company, and automating many of the tasks salespeople do every day. +items: + - /api/app-store/salesforce/1.png +--- + +{description} +
+

Features:

+
    +
  • Creates event attendees as contacts in Salesforce (Sales Cloud)
  • +
diff --git a/packages/app-store/salesforce/_metadata.ts b/packages/app-store/salesforce/_metadata.ts new file mode 100644 index 0000000000..9c7f2aa320 --- /dev/null +++ b/packages/app-store/salesforce/_metadata.ts @@ -0,0 +1,10 @@ +import type { AppMeta } from "@calcom/types/App"; + +import config from "./config.json"; + +export const metadata = { + category: "other", + ...config, +} as AppMeta; + +export default metadata; diff --git a/packages/app-store/salesforce/api/add.ts b/packages/app-store/salesforce/api/add.ts new file mode 100644 index 0000000000..e56d882e21 --- /dev/null +++ b/packages/app-store/salesforce/api/add.ts @@ -0,0 +1,24 @@ +import jsforce from "jsforce"; +import type { NextApiRequest, NextApiResponse } from "next"; + +import { WEBAPP_URL } from "@calcom/lib/constants"; + +import getAppKeysFromSlug from "../../_utils/getAppKeysFromSlug"; + +let consumer_key = ""; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + if (req.method !== "GET") return res.status(405).json({ message: "Method not allowed" }); + + const appKeys = await getAppKeysFromSlug("salesforce"); + if (typeof appKeys.consumer_key === "string") consumer_key = appKeys.consumer_key; + if (!consumer_key) return res.status(400).json({ message: "Salesforce client id missing." }); + + const salesforceClient = new jsforce.Connection({ + clientId: consumer_key, + redirectUri: `${WEBAPP_URL}/api/integrations/salesforce/callback`, + }); + + const url = salesforceClient.oauth2.getAuthorizationUrl({ scope: "refresh_token full" }); + res.status(200).json({ url }); +} diff --git a/packages/app-store/salesforce/api/callback.ts b/packages/app-store/salesforce/api/callback.ts new file mode 100644 index 0000000000..178447b9b4 --- /dev/null +++ b/packages/app-store/salesforce/api/callback.ts @@ -0,0 +1,55 @@ +import jsforce from "jsforce"; +import type { NextApiRequest, NextApiResponse } from "next"; + +import { WEBAPP_URL } from "@calcom/lib/constants"; +import { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl"; +import prisma from "@calcom/prisma"; + +import { decodeOAuthState } from "../../_utils/decodeOAuthState"; +import getAppKeysFromSlug from "../../_utils/getAppKeysFromSlug"; +import getInstalledAppPath from "../../_utils/getInstalledAppPath"; + +let consumer_key = ""; +let consumer_secret = ""; +const instance_url = ""; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + const { code } = req.query; + + if (code === undefined && typeof code !== "string") { + res.status(400).json({ message: "`code` must be a string" }); + return; + } + + if (!req.session?.user?.id) { + return res.status(401).json({ message: "You must be logged in to do this" }); + } + + const appKeys = await getAppKeysFromSlug("salesforce"); + if (typeof appKeys.consumer_key === "string") consumer_key = appKeys.consumer_key; + if (typeof appKeys.consumer_secret === "string") consumer_secret = appKeys.consumer_secret; + if (!consumer_key) return res.status(400).json({ message: "Salesforce consumer key missing." }); + if (!consumer_secret) return res.status(400).json({ message: "Salesforce consumer secret missing." }); + + const conn = new jsforce.Connection({ + clientId: consumer_key, + clientSecret: consumer_secret, + redirectUri: WEBAPP_URL + "/api/integrations/salesforce/callback", + }); + + const salesforceTokenInfo = await conn.oauth2.requestToken(code as string); + + await prisma.credential.create({ + data: { + type: "salesforce_other_calendar", + key: salesforceTokenInfo as any, + userId: req.session.user.id, + appId: "salesforce", + }, + }); + + const state = decodeOAuthState(req); + res.redirect( + getSafeRedirectUrl(state?.returnTo) ?? getInstalledAppPath({ variant: "other", slug: "salesforce" }) + ); +} diff --git a/packages/app-store/salesforce/api/index.ts b/packages/app-store/salesforce/api/index.ts new file mode 100644 index 0000000000..eb12c1b4ed --- /dev/null +++ b/packages/app-store/salesforce/api/index.ts @@ -0,0 +1,2 @@ +export { default as add } from "./add"; +export { default as callback } from "./callback"; diff --git a/packages/app-store/salesforce/components/.gitkeep b/packages/app-store/salesforce/components/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/app-store/salesforce/config.json b/packages/app-store/salesforce/config.json new file mode 100644 index 0000000000..52e0ad3308 --- /dev/null +++ b/packages/app-store/salesforce/config.json @@ -0,0 +1,16 @@ +{ + "/*": "Don't modify slug - If required, do it using cli edit command", + "name": "Salesforce", + "slug": "salesforce", + "type": "salesforce_other_calendar", + "imageSrc": "/api/app-store/salesforce/icon.png", + "logo": "/api/app-store/salesforce/icon.png", + "url": "https://cal.com/apps/salesforce", + "variant": "other_calendar", + "categories": ["other"], + "publisher": "Cal.com", + "email": "help@cal.com", + "description": "Salesforce (Sales Cloud) is a cloud-based application designed to help your salespeople sell smarter and faster by centralizing customer information, logging their interactions with your company, and automating many of the tasks salespeople do every day.", + "extendsFeature": "User", + "__createdUsingCli": true +} diff --git a/packages/app-store/salesforce/index.ts b/packages/app-store/salesforce/index.ts new file mode 100644 index 0000000000..5373eb04ef --- /dev/null +++ b/packages/app-store/salesforce/index.ts @@ -0,0 +1,3 @@ +export * as api from "./api"; +export * as lib from "./lib"; +export { metadata } from "./_metadata"; diff --git a/packages/app-store/salesforce/lib/CalendarService.ts b/packages/app-store/salesforce/lib/CalendarService.ts new file mode 100644 index 0000000000..75798c1dc8 --- /dev/null +++ b/packages/app-store/salesforce/lib/CalendarService.ts @@ -0,0 +1,275 @@ +import jsforce, { TokenResponse } from "jsforce"; +import { RRule } from "rrule"; + +import { getLocation } from "@calcom/lib/CalEventParser"; +import { WEBAPP_URL } from "@calcom/lib/constants"; +import { HttpError } from "@calcom/lib/http-error"; +import logger from "@calcom/lib/logger"; +import prisma from "@calcom/prisma"; +import type { + Calendar, + CalendarEvent, + IntegrationCalendar, + NewCalendarEventType, + Person, +} from "@calcom/types/Calendar"; +import { CredentialPayload } from "@calcom/types/Credential"; + +import getAppKeysFromSlug from "../../_utils/getAppKeysFromSlug"; + +type ExtendedTokenResponse = TokenResponse & { + instance_url: string; +}; + +type ContactSearchResult = { + attributes: { + type: string; + url: string; + }; + Id: string; + Email: string; +}; + +const sfApiErrors = { + INVALID_EVENTWHOIDS: "INVALID_FIELD: No such column 'EventWhoIds' on sobject of type Event", +}; + +export default class SalesforceCalendarService implements Calendar { + private integrationName = ""; + private conn: Promise; + private log: typeof logger; + private calWarnings: string[] = []; + + constructor(credential: CredentialPayload) { + this.integrationName = "salesforce_other_calendar"; + this.conn = this.getClient(credential).then((c) => c); + this.log = logger.getChildLogger({ prefix: [`[[lib] ${this.integrationName}`] }); + } + + private getClient = async (credential: CredentialPayload) => { + let consumer_key = ""; + let consumer_secret = ""; + + const appKeys = await getAppKeysFromSlug("salesforce"); + if (typeof appKeys.consumer_key === "string") consumer_key = appKeys.consumer_key; + if (typeof appKeys.consumer_secret === "string") consumer_secret = appKeys.consumer_secret; + if (!consumer_key) + throw new HttpError({ statusCode: 400, message: "Salesforce consumer key is missing." }); + if (!consumer_secret) + throw new HttpError({ statusCode: 400, message: "Salesforce consumer secret missing." }); + + const credentialKey = credential.key as unknown as ExtendedTokenResponse; + + return new jsforce.Connection({ + clientId: consumer_key, + clientSecret: consumer_secret, + redirectUri: WEBAPP_URL + "/api/integrations/salesforce/callback", + instanceUrl: credentialKey.instance_url, + accessToken: credentialKey.access_token, + refreshToken: credentialKey.refresh_token, + }); + }; + + private salesforceContactCreate = async (attendees: Person[]) => { + const conn = await this.conn; + const createdContacts = await Promise.all( + attendees.map(async (attendee) => { + const [FirstName, LastName] = attendee.name ? attendee.name.split(" ") : [attendee.email, ""]; + return await conn + .sobject("Contact") + .create({ + FirstName, + LastName, + Email: attendee.email, + }) + .then((result) => { + if (result.success) { + return { Id: result.id, Email: attendee.email }; + } + }); + }) + ); + return createdContacts.filter( + (contact): contact is Omit => contact !== undefined + ); + }; + + private salesforceContactSearch = async (event: CalendarEvent) => { + const conn = await this.conn; + const search: ContactSearchResult[] = await conn.sobject("Contact").find( + event.attendees.map((att) => ({ Email: att.email })), + ["Id", "Email"] + ); + return search; + }; + + private getSalesforceEventBody = (event: CalendarEvent): string => { + return `${event.organizer.language.translate("invitee_timezone")}: ${ + event.attendees[0].timeZone + } \r\n\r\n ${event.organizer.language.translate("share_additional_notes")}\r\n${ + event.additionalNotes || "-" + }`; + }; + + private salesforceCreateEventApiCall = async ( + event: CalendarEvent, + options: { [key: string]: unknown } + ) => { + const conn = await this.conn; + return await conn.sobject("Event").create({ + StartDateTime: new Date(event.startTime).toISOString(), + EndDateTime: new Date(event.endTime).toISOString(), + Subject: event.title, + Description: this.getSalesforceEventBody(event), + Location: getLocation(event), + ...options, + ...(event.recurringEvent && { + IsRecurrence2: true, + Recurrence2PatternText: new RRule(event.recurringEvent).toString(), + }), + }); + }; + + private salesforceCreateEvent = async ( + event: CalendarEvent, + contacts: Omit[] + ) => { + const createdEvent = await this.salesforceCreateEventApiCall(event, { + EventWhoIds: contacts.map((contact) => contact.Id), + }).catch(async (reason) => { + if (reason === sfApiErrors.INVALID_EVENTWHOIDS) { + this.calWarnings.push( + `Please enable option "Allow Users to Relate Multiple Contacts to Tasks and Events" under + "Setup > Feature Settings > Sales > Activity Settings" to be able to create events with + multiple contact attendees.` + ); + // User has not configured "Allow Users to Relate Multiple Contacts to Tasks and Events" + // proceeding to create the event using just the first attendee as the primary WhoId + return await this.salesforceCreateEventApiCall(event, { + WhoId: contacts[0], + }); + } else { + return Promise.reject(); + } + }); + return createdEvent; + }; + + private salesforceUpdateEvent = async (uid: string, event: CalendarEvent) => { + const conn = await this.conn; + return await conn.sobject("Event").update({ + Id: uid, + StartDateTime: new Date(event.startTime).toISOString(), + EndDateTime: new Date(event.endTime).toISOString(), + Subject: event.title, + Description: this.getSalesforceEventBody(event), + Location: getLocation(event), + ...(event.recurringEvent && { + IsRecurrence2: true, + Recurrence2PatternText: new RRule(event.recurringEvent).toString(), + }), + }); + }; + + private salesforceDeleteEvent = async (uid: string) => { + const conn = await this.conn; + return await conn.sobject("Event").delete(uid); + }; + + async handleEventCreation(event: CalendarEvent, contacts: Omit[]) { + const sfEvent = await this.salesforceCreateEvent(event, contacts); + if (sfEvent.success) { + this.log.debug("event:creation:ok", { sfEvent }); + return Promise.resolve({ + uid: sfEvent.id, + id: sfEvent.id, + type: "salesforce_other_calendar", + password: "", + url: "", + additionalInfo: { contacts, sfEvent, calWarnings: this.calWarnings }, + }); + } + this.log.debug("event:creation:notOk", { event, sfEvent, contacts }); + return Promise.reject({ + calError: "Something went wrong when creating an event in Salesforce", + }); + } + + async createEvent(event: CalendarEvent): Promise { + debugger; + const contacts = await this.salesforceContactSearch(event); + if (contacts.length) { + if (contacts.length == event.attendees.length) { + // All attendees do exist in Salesforce + this.log.debug("contact:search:all", { event, contacts }); + return await this.handleEventCreation(event, contacts); + } else { + // Some attendees don't exist in Salesforce + // Get the existing contacts' email to filter out + this.log.debug("contact:search:notAll", { event, contacts }); + const existingContacts = contacts.map((contact) => contact.Email); + this.log.debug("contact:filter:existing", { existingContacts }); + // Get non existing contacts filtering out existing from attendees + const nonExistingContacts = event.attendees.filter( + (attendee) => !existingContacts.includes(attendee.email) + ); + this.log.debug("contact:filter:nonExisting", { nonExistingContacts }); + // Only create contacts in Salesforce that were not present in the previous contact search + const createContacts = await this.salesforceContactCreate(nonExistingContacts); + this.log.debug("contact:created", { createContacts }); + // Continue with event creation and association only when all contacts are present in Salesforce + if (createContacts.length) { + this.log.debug("contact:creation:ok"); + return await this.handleEventCreation(event, createContacts.concat(contacts)); + } + return Promise.reject({ + calError: "Something went wrong when creating non-existing attendees in Salesforce", + }); + } + } else { + this.log.debug("contact:search:none", { event, contacts }); + const createContacts = await this.salesforceContactCreate(event.attendees); + this.log.debug("contact:created", { createContacts }); + if (createContacts.length) { + this.log.debug("contact:creation:ok"); + return await this.handleEventCreation(event, createContacts); + } + } + return Promise.reject({ + calError: "Something went wrong when searching/creating the attendees in Salesforce", + }); + } + + async updateEvent(uid: string, event: CalendarEvent): Promise { + const updatedEvent = await this.salesforceUpdateEvent(uid, event); + if (updatedEvent.success) { + return Promise.resolve({ + uid: updatedEvent.id, + id: updatedEvent.id, + type: "salesforce_other_calendar", + password: "", + url: "", + additionalInfo: { calWarnings: this.calWarnings }, + }); + } else { + return Promise.reject({ calError: "Something went wrong when updating the event in Salesforce" }); + } + } + + async deleteEvent(uid: string) { + const deletedEvent = await this.salesforceDeleteEvent(uid); + if (deletedEvent.success) { + Promise.resolve(); + } else { + Promise.reject({ calError: "Something went wrong when deleting the event in Salesforce" }); + } + } + + async getAvailability(dateFrom: string, dateTo: string, selectedCalendars: IntegrationCalendar[]) { + return Promise.resolve([]); + } + + async listCalendars(event?: CalendarEvent) { + return Promise.resolve([]); + } +} diff --git a/packages/app-store/salesforce/lib/index.ts b/packages/app-store/salesforce/lib/index.ts new file mode 100644 index 0000000000..e168c149df --- /dev/null +++ b/packages/app-store/salesforce/lib/index.ts @@ -0,0 +1 @@ +export { default as CalendarService } from "./CalendarService"; diff --git a/packages/app-store/salesforce/package.json b/packages/app-store/salesforce/package.json new file mode 100644 index 0000000000..0922d1570f --- /dev/null +++ b/packages/app-store/salesforce/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "name": "@calcom/salesforce", + "version": "0.0.0", + "main": "./index.ts", + "description": "Salesforce (Sales Cloud) is a cloud-based application designed to help your salespeople sell smarter and faster by centralizing customer information, logging their interactions with your company, and automating many of the tasks salespeople do every day.", + "dependencies": { + "@calcom/lib": "*", + "@calcom/prisma": "*", + "jsforce": "^1.11.0" + }, + "devDependencies": { + "@calcom/types": "*", + "@types/jsforce": "^1.11.0" + } +} diff --git a/packages/app-store/salesforce/static/1.png b/packages/app-store/salesforce/static/1.png new file mode 100644 index 0000000000000000000000000000000000000000..50ff69138f5dabc947fbf36d728df3a78ea252c8 GIT binary patch literal 32085 zcmV)hK%>8jP)+9?E^z`-h_4D)d^Yioe_V%rPx!`uh9v_WJer`t$Sh z{r>*&@9*sJ^j+N92cY5m{QdCq_W1bv?)3Qg_xJnc(;R$S_4W1t z_U7sC@+YG01T$Uu;?nl}{_^zq=H}+$@cICxo<^+nalQ5E&U)$T=_aD@$R7Nz39 z%GR{M&erGaK9i0DX=bjw$*8x+lcu_&prMMMva+(WnV6ZLot><#t*@`IkJR$X$;-~p z&yk|EBB1Vrn5}){-l62+|M~B!sHxG=(Ug;u%i`qm`uNoE_^Y(QnxwNKs^ogf^S;E) zU%>E4yXpJ!;f{@sm7J-t-SA>}l=aq`5p{Att?*K4jPUvY==b}0kf$6yWzFvRCxn3w zqvEZtw;X(VhP=6jhK20k+ri%1`{~%Ctha5gs#Knuoyf;Di-#~tZo}B`5-wQR$;+wG z&xOtMw$|0+*VK~2!F#l`Ntu>zg`c#y!JfkJ?Xsu!xJHVUr1saUeu|#iZd}p6zj=Cl zY;SSf_vh@Kk#gYPqo=U*&A!v#*Da5B0WDa)@b9|5#9^kQZnfkxwdwfey|c^S@vJ63 zS$d|x(%{g?z_77fVq@^JIxBeQl;-5Lr=)V7c$c%tP>*&%KtSGqZW$RF6|1JN*S6x2 zeldmA3~|!%h=7vOu@9Wpht}5i#blVipSS7gR-4?)y{@#jd!@d$D7Ldhz`dcKNSU>P zf3byH$Hu9mbMAX`%EgJ?Z!j`?k}PuMq<-2K0000VbW%=J00#{j6DuGwB|1a6vX<80 zNljN@dbhQjxUONtsj|tk^5Pl*0D19AL_t(|+U(jIBH?f62G!K7HkHr=M00000 z000000Ki>QI5?K`6{!6Bl1~oe%uMLIpID9=mluDje*&PX8|M3X-Ngh{mH|x{-|FUn z-f-^hkVYar5Q)0^u&$o7N?A`D^BGK>bDawZqz_1Oy!g;d`BW$v&dIxOo2wS5IBCpc zxLVhQ$D}aDMcaFRz`;3jY|4zPro@}(Rm0vfz-O#!-*DyNjfay)$#7QL#`{I-uFKzK z?#^f#E^C^T=F+6pn~pW-c76apN0r!)Qie0L=BBx3k*Ik<^K`by?BoZa zspvw-NwYFC8H#S(cy1pdV)#GYwK1frE$IRMp=ZPlXK6NV?9o!VXD#Q);pqFg*Bg@_ zz`s!``O9cHFp4HEp&4z?=X!S@Ogw-y^ z40`Mte*KufFPF>r-vFmg-@K-N#|TuMz zX1ptGj%a}$+A^R!M$kSz=OPY+AV`zdHqN3f-tJrg8^0NJS@Z*un$YHe=AgM}cb^5N zFf6|uwyVQxKd0w+0d&44=(gO1whU+r+UVKegh5jjg<+H({1#Ligzv%;-?2^DPTw$38ldlEMBU)%eE4q!K zyIRn1`SZE+I1NY|6@xm;(x8&8T>!((8no07eZ(7w9`uxY_T62ahFO$lNk*^HCdr~G z%D+p4Xn}Wyf7vs46o+9TfL6kREw)7p~KjTVj7Ajf0PFxx^GTyty*-6#zZg98JB7B#(O z3=j{&adI#jiO@-N6uK$Q6Iy)S2z^u@0DS9xd`i?X{}TYbw_{d?CZnU!WhQiLbehl$ zp&KP3!CyaH9)&uJfmM%A&*%p*dJ zY(l?M>ABE1g(kjEXCq<8_RbAFoS7X$7l`QmUPXxNEfbpfm2Fq22CyU8Gh1_X74#?| zD?!t9l!I`BR+%voI7v9MZFFjI6cC@FF$SXPu)v={f<^$V8MZS<$2CR)WeJ-0gBML3>w9>HtGF!m4Nd~P3;jRh z^viqTj|yG6!GGv$gw|z=Wu;-2=`Qp?07v|N=z~IE_WAY|dik`o?Ngukj}43j7N|IX z7y1+8m}13yj7J0`N}N)Muc1Fup)YXbJ#^Ww!?10ehYdpom))W#0BCZ$Bs8HUf2oKk z2iMbNefx1~5!BpIm-4TYC;>Z~!wCn}B8;SBuJ!~+LaXjaGu(XU!epXNr<+m)Kp2jo z0x-c#;vqUtX0MHjg-E;;43Hrb>$|4L|=H7%8cpDA$!exdNX zGtVjNj1;9ZGwgFxf=ZJP&7B3y51U;(H*!Ipv$;#Q=IBs@QeRf3M8&8PTwO-v(sNS3 z*z{_G8fWH``tc)h04+|O-=s%dWlIR+G=U#FGW1No8eOA%;>lq zbWrx1NvIR(7qX#wS4vfGO*gnXz=kwtH3{rxv~t!Kr46AJfDOoI(1X(5XrS&W5t=NpI{7e`Uhg^FA8A$p+&`v~2K zK1S&q_2drBq|=s8|G_Q%zR4s;&v%X|_v7I8#tYTg#QBQ!0gd+T^s*Ct9=ZlS?Q2?> ziA)n&O%Nkl(T48Ji=YR7v@Rz3=_q-%lWcmKrCfK(7C!L^OfCbe7<-@OG`t9Uu!73C zy*`4+T0_6LLgz4rtYwb(q!@r0wU5pQ8(s1#sP(O&qjNbV5IL6|d@}Mi^TibHjZb)h zb5e*5p;j>ZRGiC`Di>o4mdA*rqN1@eqNKwI=6tC(nHFs@!905pz{Hh0XTc`{J{pyb zgSec6&T)wOQWaShhX)bC$Pf%nYlmc#Z<-cR+N9{>8GzGdAtkUG@}*KGTZ%UhGt|+5 zAh|mL-8>21vsgv-kbD+I-mJQb1PJyTy4*u2Fg#!gMp_WYMBC)njZ_efIOm-fQpBEO z0TV#Ku&IF9MMg&2Q!;__<^_N?z|;{YpKVrvQ}cAqK}8oZ507^*6ItR1mzZj ziWNL6%+*+o9)2TeRACh%6`yTtrHfY!TYJhv8R4QZRfSjux=BrJ_v+ueyF4FSCG}7g zB%^9mCRJT@UcjVaz@-q5T5$NJ^4z+=P`ASAmMWxzM!8l_5W4lQ=*2&@P>O(N4B#~N zTs`{Fi4lo9g_h!T0GeudM}emEg|50W&6^f8z)>QJp~#dP7Dihgdd{u1&;pSqL-q|Y z$@v=EwJdUf4lPm8uE+vrBsxOO#kix^TsY}Fak-~UjDhp5o+Uqf@RzEFOey!e73HaaTE-W%skvR>+t_P2s|S{g_> zfl4~&3a^!OGbz@VTulKI+H_;Mi6*o--eZAdGW{0;+@pejXfh>tT=`Lw9rZ&2_Ln zH2o@QcJuCLTMy7h2SI{`SVAU5;Jn(AGD<__Ms&)}*`uq%e-)ac|8l6qVQ5C`E_*1+ zlhLKtGUnJJgsw=cuGzzNSIjGWEk)i$soma0gFq!rz9y4*Dnl);0k{s{v}LW)LxYxM zHsVsDziS8FZnt#nU6lA;Ir7mPcH|VXWanF=D?(>K4i`bEco;BA)T}zBl}zycclu%0 z(C-v9Q+$@{!>Z&!5K{<{YRcI=kJ$?c<~M@oA66+(u}_j=!?MeFIld_6mGBx5X`R*| zH21>E`6Rym^0Zhdcniw5Af*>v4^|6jHQ%+Gtm4`!<>a%*_LW>QS*MV#91^s33pqh| z`o?G$QaU%;ojWlQ#gtQ$Qz}lT*ZfZBR5C5`+Jn6Wp?2CW^G-@JS~n5NxwDfZL^>~B z&2N|jeW7bLTZU$f zUlk6Fnk?RPwW7J#-YJb&>Fu@&F9a87T28%I=p{zKhv-ETmJ6MtkTGb79h#?TeU!s` zVrRppLa$Z>ddh(5hU_SzyAkv;b~)a^4{ZW^lqQ~)m2a0EWTq4g z`4@QF&c^tfGv1PIX6t|tip@B*Z3HboF!~33BFn%6AGDt+Wh=7RVPGrzpEokD6g`bE z)Hg211w-IL2lO$L-vu2oI%OjrC_x*#k$J%mLe^#57K}45!^jB5#*A*_zFyhG$^XFS zb6N{d>F#4A=wrmzyx|E+cQ)NijTqz_n$DNdI1e%`^Gwf)(|eA{9dSeHhv}O;nKLY-r(tfP@(^9ANtFuzk|>BPoF;Gv9XV* zYVUvRrS)?2bm@K>9H;j=f81XRfBfoi;oGl1;=%FFw*E1me%o``^!UyDoImcn96x>i z5x=l+MmY?EFc{8GA|(yUU=Kd|F!VBe@%}d$FxbeZ8@f!u^(!_(3{>+6NyU9KGS1Jl z_Ikp37}Gj0H_LGuh<$Q`rJU?BBvI~u=$;2aO0hkfTeK9FQGDFLh)e?al>5g@4*{V~ z^|-MqaT}YPp=+`bw_@2tnX$FJ>rzYbl$(c+1g)CwLE+wWqKNM)OK@>R*ZdVqfT!Fn zM`l4cBbFX-oJ2aV1!MKKq?r**m}1 zrNJnUzm)Un9tYbR3|U?@yAeS_5U1{s)ktRwDmXJLRDu%2!ESb01S5=H#e!Y5iyz^Y zbg`SjemBvJ=q>d0kD`Jyqcr-0aP&EFp6B7i;p`l6hhIbQn4yd1XsK33_)=ny1CB|j z7@&;Ad#5>ZN`8Si!oLIPW*n;sK8Vi>K$K%Yu2J!_$H8~S?-u;`XXs!7Q0ac&4_qKC zq6uGUm4vVK4Z8UO9JUUj%dvY69Y%(h4>FWiK&dK=vN|f}>vORf$YEKg#R65;5d=d+ zYpbjvAd!3(v-L@as?tI#pWFxN;u}@=RKBV+DJ^qhE)oOEs?3U5;BnA5O(9oJ7V}kF z%$k%&WAYJFT7h2^zdf`+(64S`IK2;P`3z2Jdht}h)X~nQ`Vt@xcsavsI;<0vOyjD_ z0C8iBvJT`BqD%w1PoU%iq^emuEhmbaiN&mzgag!pWa!;W4jijVK?tgGDVnq$z1fS^ z*ztyR@ze?I*wPlU(~*jifrP1}&=pxLM@DVfsMX`iQ1g4zen4MAp%qUeL!K|SK#4mE zP-c!5U8$?*Lc5#M`bxLt_}!Wn%}Q1_npm3aw6#|%f<3f9(AVx?xo|S7_)S0UI-dDT zeR+S_N z&U#cD9%9jPAT{)k89FitXEGfe%pxcPT6mnQ{Q$Z2(4)rm8-_wZ(qSw?dknKUH9!? z+#2^}>B6!T+e6)u_5vDT9JRU<38^nfV?(R^tqg>|J(O;|I0u?<_p_eeskwHye6J#- zX_|zrn8M3KX`6sOw13IbyccYX4&~VvB}1qOuU9$*1r{neIZ0rEW6)|$uq2yAEPDI#@wsu7L2L8LX5$ zN%$mOw=9$S>yJ!7Ggv8>9>Wh+G~sA;q#63>gaP9}G%3W~ms>+g5&!+c!_NQ>JOe-0 z5xqt47;5Nz@+e2&#{u-ereo-G94XL$UH^f8%dQ>kAP55i7!HFHCtpF6I-yAi;{&)j zG$A1l4h-@Rkg)sYo*ouUffU+Aq4!h5%JAhvF8t{pnm`k1x1cr6G@+-^OhB_i)u5xQ zbr^m?zeWH48~R3|eFM!fClgu+jid)&4!0Z$f%XVAgEZQ<6ME4yq2ZX`(6{WsU=K~8 zU-=H2K^kN?pjFX`+Wgl22Q;A#@*1?n%xsEI+dX!uYJjd69e9kM(m%?UGn>Al`|}ty zSnSr!EkTC}x)wdK+BJk?rE1!8IE&8*bj6wV#|?@u`zGiWfL269!N`!R)J%J5cWuNy z)?Vp&W>W;+#hG)RvOQ=NJ=(Oo`3T_9gm%%f$aZm>WLF{bvP^Di{K$nUcGCmh%9$&S z?LedGr79Y{4Y*oDw;uh=@nrA*LX(Q(IDivDQPCeLh$uLxc^2L5rrGVE8KoHoQqe3d ztm~*n105uD{iBDOTT#p`vL@uvTDkdR(w~RXgFW;%l%f{&AU#G8_0Us~opZ0ZGjC}- z>9wT3ccyMxYkc_e^>36caod!r=3oH(}9*eSHTSB)C`)6 z#-v%JW=+h}+M#CszjFLW_>1nIP_R98x4ql$w77dbj&7UN9n>`&Xtig|nMyW7*6_Pl zuaYB_LO`oTQ`2lwp_VQ`kC(g8u!2MX*^M`|Z5N zcCOh#|KM5XOf54;*roih(+cQ$v*?JPEPBdEMbq>&i(2(Gjn{VE3a__g3u-uM`627? z7j9ZVj*Y#2`#GEshr?IT-Z;6ncGh|xAzp9>59$E|_$DO3>YMCI;g9nfrwp_5lMJUA zVb=;Z=-G;BWkzGttf8(|D-v2c7&`QF2GFvi<(X7!SgDid?07nni2IUW)bI)2Te$i0 z?aQ5|eEG0$-O6=CL!DRh;fE(<2-F@yfX%$NEAwomoMp=RjVDTZUe?P0I$I7Ypmn9p zn>|}89m-n1nu?Z4Go=i-dP>vAq1hf9^^Ie^ z6!d7k%a`fc(DyhYj(8gfdiNTuqFD`^qRtQ8h_M=IJ5W8g<^fF#N7;CWMn$ulvQWzJ zfTp4q(#)o5Pf<^4I-@n3(5vx47JaF>_-MI&e?&|VLjbtdsc1A~Rt5u-t~CLT2>TXv}{$NYugv!J%jD%+6I)*&07dWUXf z0^L6zO+WJXrIiWY;p<9u0Fq2X9POX{)#Nk*O*vNuO-&Qh^@*9Qr9<-&G%$2P)B3D% z#uxZkX8y8;5^6f5>6t^V_Rwf})Z2o}K#x<;aKa-r4(ZHLe60Z!~{K76N!Ek~;W8k;iDO5Nc3zg4rGc?+rN@6mJ*&5_krUs|ag zE#qQ5qbH*~6^#!g3|xG?0eg;j#WO8hfL?FKoEbpltn3V*M1VC;r^|g;=f2zR4(>+) zmNg@3U?Q*)-eXqG()UI8kyPxL3gD4OwfJiu<<)+ z#02_Y;KY$Y$Ls4Ie-gA&@yuh;un96pDbnf|O+{-68hA%UF)DU-`LbppgC0$b#B=>Y zUwdZ7VXGW;NT1~ZOZIx)d)pkYi|72OEd^xRF}BL_DG&@E4tm~P<{A!~dX@@D z6M2Sk?sQd=X4*p^s|7RyctEE|hm*dj7%x?hbX-i({#-}U_itKBJ~Dx(>BO~zVM^UDzjsKFao@xFu+bm-j!UFg*PQ)a!X?GJ%gJnNgrGZbdh9!*EIinKPML7z|b z4fk{X9U0s_lB)@5QS1^QuR!$%jW%0LdCLfz){dGu2I9Y+Y7 zGzX1hTh*caI?TCgK*Pm9e1l@6IyCnkQghuznBQ+Ky&r z_!2-hjy<*x?KyVD<9+?2F&%nv;Fc-_Ey{qVpqt=nA=FK$qABSqZaI$D0=j=h^m$9- zlF>w#Bb6hIPlrG8))zD?SZT(XK~vE+fo7f1MuFQcApF)C(6=raCTHV?ZDu2m!dZYM z7Q1wqY?eu}(<@tRt4;bH>Xg5WKAZ+W%C5Tq{ZE!|+2xz`?=qS2UHjyRm>|gl3Yxy? zPNUaDqsgFGKcRF-6Hy6tY6IR$lN}yH^#DyhR~gYS-;Rxa{5lX0=R1e0iq6*{dX*6X zjrPz8RcaBJRM}b;^bUhzhhgJJ13vZ`3>UVwd~eX$vjC+4DUQ87#2*AWrm}z6#hyU> zuOaYu@)-+yWV0b4Sd2zJF!F#k7Uy9-`O+L9*^8qCMo6-#!idȨrJq2qlBkZ`GJ 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.0" + "@types/json-buffer@~3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/json-buffer/-/json-buffer-3.0.0.tgz#85c1ff0f0948fc159810d4b5be35bf8c20875f64" @@ -7222,7 +7229,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@16.9.1", "@types/node@>=8.1.0", "@types/node@^12.12.54", "@types/node@^12.12.6", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0": +"@types/node@*", "@types/node@16.9.1", "@types/node@>=4.0", "@types/node@>=8.1.0", "@types/node@^12.12.54", "@types/node@^12.12.6", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0": version "16.9.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== @@ -8833,7 +8840,7 @@ arrify@^2.0.0, arrify@^2.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asap@^2.0.0: +asap@*, asap@^2.0.0, asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== @@ -9262,6 +9269,11 @@ base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.3.0, base64-js@^1.3.1, base64-j resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base64-url@^2.2.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/base64-url/-/base64-url-2.3.3.tgz#645b71455c75109511f27d98450327e455f488ec" + integrity sha512-dLMhIsK7OplcDauDH/tZLvK7JmUZK3A7KiQpjNzsBrM6Etw7hzNI1tLEywqJk9NnwkgWuFKSlx/IUO7vF6Mo8Q== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -10454,6 +10466,13 @@ cluster-key-slot@1.1.0: resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== +co-prompt@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/co-prompt/-/co-prompt-1.0.0.tgz#fb370e9edac48576b27a732fe5d7f21d9fc6e6f6" + integrity sha512-uKmEbjDnL9SJTb+TNfIFsATe1F3IsNsR7KDGUG1hq7ColkMV0MSn7dg3eKVS+3wwtyvVqrgfIwi39NOJiknO7Q== + dependencies: + keypress "~0.2.1" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -10485,6 +10504,11 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== +coffeescript@^1.10.0: + version "1.12.7" + resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz#e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27" + integrity sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA== + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" @@ -11008,6 +11032,13 @@ crypto@^1.0.1: resolved "https://registry.yarnpkg.com/crypto/-/crypto-1.0.1.tgz#2af1b7cad8175d24c8a1b0778255794a21803037" integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig== +csprng@*: + version "0.1.2" + resolved "https://registry.yarnpkg.com/csprng/-/csprng-0.1.2.tgz#4bc68f12fa368d252a59841cbaca974b18ab45e2" + integrity sha512-D3WAbvvgUVIqSxUfdvLeGjuotsB32bvfVPd+AaaTWMtyUeC9zgCnw5xs94no89yFLVsafvY9dMZEhTwsY/ZecA== + dependencies: + sequin "*" + css-background-parser@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/css-background-parser/-/css-background-parser-0.1.0.tgz#48a17f7fe6d4d4f1bca3177ddf16c5617950741b" @@ -11125,6 +11156,18 @@ csstype@^3.0.2, csstype@^3.0.7: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== +csv-parse@^4.10.1: + version "4.16.3" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" + integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== + +csv-stringify@^1.0.4: + version "1.1.2" + resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-1.1.2.tgz#77a41526581bce3380f12b00d7c5bbac70c82b58" + integrity sha512-3NmNhhd+AkYs5YtM1GEh01VR6PKj6qch2ayfQaltx5xpcAdThjnbbI5eT8CzRVpXfGKAxnmrSYLsNl/4f3eWiw== + dependencies: + lodash.get "~4.4.2" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -13351,6 +13394,25 @@ fault@^1.0.0: dependencies: format "^0.2.0" +faye-websocket@>=0.9.1: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +faye@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/faye/-/faye-1.4.0.tgz#01d3d26ed5642c1cb203eed358afb1c1444b8669" + integrity sha512-kRrIg4be8VNYhycS2PY//hpBJSzZPr/DBbcy9VWelhZMW3KhyLkQR0HL0k0MNpmVoNFF4EdfMFkNAWjTP65g6w== + dependencies: + asap "*" + csprng "*" + faye-websocket ">=0.9.1" + safe-buffer "*" + tough-cookie "*" + tunnel-agent "*" + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -14920,6 +14982,11 @@ http-https@^1.0.0: resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" @@ -16599,6 +16666,27 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +jsforce@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-1.11.0.tgz#7e853b82c534f1fe8e18f432a344bae81881a133" + integrity sha512-vYNXJXXdz9ZQNdfRqq/MCJ/zU7JGA7iEduwafQDzChR9FeqXgTNfHTppLVbw9mIniKkQZemmxSOtl7N04lj/5Q== + dependencies: + base64-url "^2.2.0" + co-prompt "^1.0.0" + coffeescript "^1.10.0" + commander "^2.9.0" + csv-parse "^4.10.1" + csv-stringify "^1.0.4" + faye "^1.4.0" + inherits "^2.0.1" + lodash "^4.17.19" + multistream "^2.0.5" + opn "^5.3.0" + promise "^7.1.1" + readable-stream "^2.1.0" + request "^2.72.0" + xml2js "^0.4.16" + json-bigint@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" @@ -16852,6 +16940,11 @@ keen-slider@^6.8.0: resolved "https://registry.yarnpkg.com/keen-slider/-/keen-slider-6.8.3.tgz#c42b27fb1afca0a2eb722676410cdd3af80f2e0f" integrity sha512-tJFokyUiHAtbGGQHnNMm3MLCpOm+z1JZsaOOMVnzTYAfAqLDT/zI/cE1mf82Bxmp1uHSIeUUkH+EZGzRQrSO/w== +keypress@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.2.1.tgz#1e80454250018dbad4c3fe94497d6e67b6269c77" + integrity sha512-HjorDJFNhnM4SicvaUXac0X77NiskggxJdesG72+O5zBKpSqKFCrqmndKVqpu3pFqkla0St6uGk8Ju0sCurrmg== + keyv@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" @@ -17177,7 +17270,7 @@ lodash.debounce@^4, lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash.get@^4.4.2: +lodash.get@^4.4.2, lodash.get@~4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= @@ -18674,6 +18767,14 @@ multihashes@^0.4.15, multihashes@~0.4.15: multibase "^0.7.0" varint "^5.0.0" +multistream@^2.0.5: + version "2.1.1" + resolved "https://registry.yarnpkg.com/multistream/-/multistream-2.1.1.tgz#629d3a29bd76623489980d04519a2c365948148c" + integrity sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.5" + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -19455,6 +19556,13 @@ openid-client@^5.1.0: object-hash "^2.0.1" oidc-token-hash "^5.0.1" +opn@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -20576,6 +20684,13 @@ promise.prototype.finally@^3.1.0: define-properties "^1.1.3" es-abstract "^1.19.1" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompts@^2.0.1, prompts@^2.2.1, prompts@^2.4.0: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -21479,7 +21594,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -21879,7 +21994,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.66.0, request@^2.79.0, request@^2.88.0: +request@^2.66.0, request@^2.72.0, request@^2.79.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -22181,6 +22296,11 @@ sade@^1.7.3: dependencies: mri "^1.1.0" +safe-buffer@*, safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -22191,11 +22311,6 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-event-emitter@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" @@ -22448,6 +22563,11 @@ seq-queue@^0.0.5: resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" integrity sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4= +sequin@*: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sequin/-/sequin-0.1.1.tgz#5c2d389d66a383734eaafbc45edeb2c1cb1be701" + integrity sha512-hJWMZRwP75ocoBM+1/YaCsvS0j5MTPeBHJkS2/wruehl9xwtX30HlDF1Gt6UZ8HHHY8SJa2/IL+jo+JJCd59rA== + serialize-error@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" @@ -24061,6 +24181,16 @@ totalist@^1.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== +tough-cookie@*: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -24279,7 +24409,7 @@ tty-browserify@0.0.0: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== -tunnel-agent@^0.6.0: +tunnel-agent@*, tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= @@ -24843,6 +24973,11 @@ universalify@^0.1.0, universalify@^0.1.2: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -24949,7 +25084,7 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.4.3, url-parse@^1.5.8, url-parse@^1.5.9: +url-parse@^1.4.3, url-parse@^1.5.3, url-parse@^1.5.8, url-parse@^1.5.9: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== @@ -25761,6 +25896,20 @@ webpack@^5.9.0: watchpack "^2.4.0" webpack-sources "^3.2.3" +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + websocket@^1.0.32: version "1.0.34" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" @@ -26066,7 +26215,7 @@ xml-parse-from-string@^1.0.0: resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= -xml2js@0.4.23, xml2js@^0.4.23, xml2js@^0.4.5: +xml2js@0.4.23, xml2js@^0.4.16, xml2js@^0.4.23, xml2js@^0.4.5: version "0.4.23" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==