From 902279c7da5cdf568453673c81bf5fed7b7cd3b8 Mon Sep 17 00:00:00 2001 From: Efrain Rochin Aramburo Date: Sat, 28 Jan 2023 21:25:56 -0700 Subject: [PATCH] Generate SSG Page used as cache for user's third-party calendars --- apps/web/next.config.js | 8 +- apps/web/package.json | 1 + .../pages/[user]/calendar-cache/[month].tsx | 54 ++++ packages/core/CalendarManager.ts | 51 ++- packages/core/getBusyTimes.ts | 11 +- packages/core/getUserAvailability.ts | 1 + turbo.json | 1 + yarn.lock | 298 +++++++++--------- 8 files changed, 263 insertions(+), 162 deletions(-) create mode 100644 apps/web/pages/[user]/calendar-cache/[month].tsx diff --git a/apps/web/next.config.js b/apps/web/next.config.js index 4c046f461d..68a6c4e825 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -2,6 +2,7 @@ require("dotenv").config({ path: "../../.env" }); const CopyWebpackPlugin = require("copy-webpack-plugin"); const { withSentryConfig } = require("@sentry/nextjs"); const os = require("os"); +const nextBuildId = require("next-build-id"); const withTM = require("next-transpile-modules")([ "@calcom/app-store", "@calcom/core", @@ -76,9 +77,10 @@ if (process.env.ANALYZE === "true") { plugins.push(withTM); plugins.push(withAxiom); - +const buildId = nextBuildId.sync({ dir: __dirname }); /** @type {import("next").NextConfig} */ const nextConfig = { + generateBuildId: () => buildId, i18n, productionBrowserSourceMaps: true, /* We already do type check on GH actions */ @@ -98,7 +100,7 @@ const nextConfig = { images: { unoptimized: true, }, - webpack: (config) => { + webpack: (config, { webpack }) => { config.plugins.push( new CopyWebpackPlugin({ patterns: [ @@ -120,6 +122,8 @@ const nextConfig = { }) ); + config.plugins.push(new webpack.DefinePlugin({ "process.env.BUILD_ID": JSON.stringify(buildId) })); + config.resolve.fallback = { ...config.resolve.fallback, // if you miss it, all the other options in fallback, specified // by next.js will be dropped. Doesn't make much sense, but how it is diff --git a/apps/web/package.json b/apps/web/package.json index 36158ca3dc..ceb3f6af48 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -85,6 +85,7 @@ "next": "^13.1.1", "next-auth": "^4.10.3", "next-axiom": "^0.16.0", + "next-build-id": "^3.0.0", "next-collect": "^0.2.1", "next-i18next": "^11.3.0", "next-seo": "^4.26.0", diff --git a/apps/web/pages/[user]/calendar-cache/[month].tsx b/apps/web/pages/[user]/calendar-cache/[month].tsx new file mode 100644 index 0000000000..1493dd3217 --- /dev/null +++ b/apps/web/pages/[user]/calendar-cache/[month].tsx @@ -0,0 +1,54 @@ +/** + * This page is empty for the user, it is used only to take advantage of the + * caching system that NextJS uses SSG pages. + * TODO: Redirect to user profile on browser + */ +import { GetStaticPaths, GetStaticProps } from "next"; +import { z } from "zod"; + +import { getCachedResults } from "@calcom/core"; +import dayjs from "@calcom/dayjs"; +import prisma from "@calcom/prisma"; + +type UnwrapPromise = T extends Promise ? U : T; + +const CalendarCache = () =>
; + +const paramsSchema = z.object({ user: z.string(), month: z.string() }); +export const getStaticProps: GetStaticProps< + { results: UnwrapPromise> }, + { user: string } +> = async (context) => { + const { user: username, month } = paramsSchema.parse(context.params); + const user = await prisma.user.findUnique({ + where: { + username, + }, + select: { + id: true, + username: true, + credentials: true, + selectedCalendars: true, + }, + }); + const startDate = ( + dayjs(month, "YYYY-MM").isSame(dayjs(), "month") ? dayjs() : dayjs(month, "YYYY-MM") + ).startOf("day"); + const endDate = startDate.endOf("month"); + const results = user?.credentials + ? await getCachedResults(user?.credentials, startDate.format(), endDate.format(), user?.selectedCalendars) + : []; + return { + props: { results, date: new Date().toISOString() }, + revalidate: 1, + }; +}; + +export const getStaticPaths: GetStaticPaths = () => { + return { + paths: [], + fallback: "blocking", + }; +}; + +export default CalendarCache; diff --git a/packages/core/CalendarManager.ts b/packages/core/CalendarManager.ts index eca9ea8850..130d42c46d 100644 --- a/packages/core/CalendarManager.ts +++ b/packages/core/CalendarManager.ts @@ -2,9 +2,11 @@ import { SelectedCalendar } from "@prisma/client"; import { createHash } from "crypto"; import _ from "lodash"; import cache from "memory-cache"; +import * as process from "process"; import { getCalendar } from "@calcom/app-store/_utils/getCalendar"; import getApps from "@calcom/app-store/utils"; +import dayjs from "@calcom/dayjs"; import { getUid } from "@calcom/lib/CalEventParser"; import logger from "@calcom/lib/logger"; import { performance } from "@calcom/lib/server/perfObserver"; @@ -115,15 +117,15 @@ const cleanIntegrationKeys = ( const CACHING_TIME = 30_000; // 30 seconds -const getCachedResults = async ( +// here I will fetch the page json file. +export const getCachedResults = async ( withCredentials: CredentialPayload[], dateFrom: string, dateTo: string, selectedCalendars: SelectedCalendar[] -) => { +): Promise => { const calendarCredentials = withCredentials.filter((credential) => credential.type.endsWith("_calendar")); const calendars = calendarCredentials.map((credential) => getCalendar(credential)); - performance.mark("getBusyCalendarTimesStart"); const results = calendars.map(async (c, i) => { /** Filter out nulls */ @@ -173,18 +175,41 @@ const getCachedResults = async ( return awaitedResults; }; -export const getBusyCalendarTimes = async ( - withCredentials: CredentialPayload[], - dateFrom: string, - dateTo: string, - selectedCalendars: SelectedCalendar[] -) => { - let results: EventBusyDate[][] = []; +/** + * This function fetch the json file that NextJS generates and uses to hydrate the static page on browser. + * If for some reason NextJS still doesn't generate this file, it will wait until it finishes generating it. + * @param username + * @param month + */ +const getNextCache = async (username: string, month: string): Promise => { + let localCache: EventBusyDate[][] = []; try { - results = await getCachedResults(withCredentials, dateFrom, dateTo, selectedCalendars); - } catch (error) { - log.warn(error); + const { NEXT_PUBLIC_WEBAPP_URL, NODE_ENV } = process.env; + const cacheDir = `${NODE_ENV === "development" ? NODE_ENV : process.env.BUILD_ID}`; + const baseUrl = `${NEXT_PUBLIC_WEBAPP_URL}/_next/data/${cacheDir}/en`; + // console.log(`${baseUrl}/${username}/calendar-cache/${month}.json?user=${username}&month=${month}`); + localCache = await fetch( + `${baseUrl}/${username}/calendar-cache/${month}.json?user=${username}&month=${month}` + ) + .then((r) => r.json()) + .then((json) => json?.pageProps?.results); + } catch (e) { + log.warn(e); } + return localCache; +}; + +export const getBusyCalendarTimes = async ( + username: string, + withCredentials: CredentialPayload[], + dateFrom: string + // TODO: Make sure it's necessary + // selectedCalendars: SelectedCalendar[] +) => { + /* Fetch the cached JSON file on development environment it takes a long time because Next must compiles the whole + page and reduces the cache time,*/ + const results: EventBusyDate[][] = await getNextCache(username, dayjs(dateFrom).format("YYYY-MM")); + return results.reduce((acc, availability) => acc.concat(availability), []); }; diff --git a/packages/core/getBusyTimes.ts b/packages/core/getBusyTimes.ts index 9a98abc336..d1e2b75d1c 100644 --- a/packages/core/getBusyTimes.ts +++ b/packages/core/getBusyTimes.ts @@ -10,6 +10,7 @@ import type { EventBusyDetails } from "@calcom/types/Calendar"; export async function getBusyTimes(params: { credentials: Credential[]; userId: number; + username: string; eventTypeId?: number; startTime: string; beforeEventBuffer?: number; @@ -20,10 +21,11 @@ export async function getBusyTimes(params: { const { credentials, userId, + username, eventTypeId, startTime, endTime, - selectedCalendars, + //selectedCalendars, beforeEventBuffer, afterEventBuffer, } = params; @@ -75,7 +77,12 @@ export async function getBusyTimes(params: { performance.mark("prismaBookingGetEnd"); performance.measure(`prisma booking get took $1'`, "prismaBookingGetStart", "prismaBookingGetEnd"); if (credentials?.length > 0) { - const calendarBusyTimes = await getBusyCalendarTimes(credentials, startTime, endTime, selectedCalendars); + const calendarBusyTimes = await getBusyCalendarTimes( + username, + credentials, + startTime + // selectedCalendars + ); busyTimes.push( ...calendarBusyTimes.map((value) => ({ ...value, diff --git a/packages/core/getUserAvailability.ts b/packages/core/getUserAvailability.ts index 02de43a249..8c53b982a3 100644 --- a/packages/core/getUserAvailability.ts +++ b/packages/core/getUserAvailability.ts @@ -145,6 +145,7 @@ export async function getUserAvailability( endTime: dateTo.toISOString(), eventTypeId, userId: currentUser.id, + username: `${currentUser.username}`, selectedCalendars, beforeEventBuffer, afterEventBuffer, diff --git a/turbo.json b/turbo.json index 1737ab745d..c177ed13c4 100644 --- a/turbo.json +++ b/turbo.json @@ -236,6 +236,7 @@ "$NEXTAUTH_SECRET", "$NEXTAUTH_URL", "$NODE_ENV", + "$BUILD_ID", "$PLAYWRIGHT_HEADLESS", "$PLAYWRIGHT_TEST_BASE_URL", "$PRISMA_FIELD_ENCRYPTION_KEY", diff --git a/yarn.lock b/yarn.lock index 13d7e3c9ae..11dc5c31d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,16 +9,6 @@ dependencies: "@jridgewell/trace-mapping" "^0.3.0" -"@apidevtools/json-schema-ref-parser@9.0.9": - version "9.0.9" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" - integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== - dependencies: - "@jsdevtools/ono" "^7.1.3" - "@types/json-schema" "^7.0.6" - call-me-maybe "^1.0.1" - js-yaml "^4.1.0" - "@aws-crypto/ie11-detection@^2.0.0": version "2.0.2" resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz#9c39f4a5558196636031a933ec1b4792de959d6a" @@ -2884,41 +2874,40 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@boxyhq/saml-jackson@1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@boxyhq/saml-jackson/-/saml-jackson-1.3.6.tgz#d66dc709365dbbd3fad9a2e4568675638a2c2655" - integrity sha512-3Zt80G5nWCCkSeU3zkakCYUk1pVGBTOxQbpcOo+868x4Vf+MCBaoXdVLGl95tOPQfEGlfNOa1BbeZqKDntv43w== +"@boxyhq/saml-jackson@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@boxyhq/saml-jackson/-/saml-jackson-1.7.1.tgz#b4194bf76ddb7f16aa34f2d118011cc4af0b409e" + integrity sha512-g1/TAWf611W8auJvDjkD+g2cJxiB/3dvVq/FSQ1dAZpSIpEVCDOBF2o6haDIsxxU42su6VDQ/13c2j/pMTWCig== dependencies: - "@boxyhq/saml20" "1.0.11" - "@opentelemetry/api" "1.0.4" - "@opentelemetry/api-metrics" "0.27.0" - axios "1.1.3" - jose "4.10.4" - marked "4.2.2" - mongodb "4.11.0" + "@boxyhq/saml20" "1.1.0" + "@opentelemetry/api" "1.4.0" + axios "1.2.2" + jose "4.11.2" + marked "4.2.12" + mixpanel "0.17.0" + mongodb "4.13.0" mssql "9.0.1" - mysql2 "2.3.3" + mysql2 "3.0.1" node-forge "1.3.1" - openid-client "5.2.1" + openid-client "5.3.1" pg "8.8.0" - redis "4.4.0" + redis "4.5.1" reflect-metadata "0.1.13" ripemd160 "2.0.2" - typeorm "0.3.10" + typeorm "0.3.11" xml2js "0.4.23" xmlbuilder "15.1.1" -"@boxyhq/saml20@1.0.11": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@boxyhq/saml20/-/saml20-1.0.11.tgz#53d30957f02fc4aff20a8b7e9cdd2c767e6ccf8e" - integrity sha512-1LDcvOSSzMguTQgJj7XKCO3MPQHXHe3xaydzS7izld0IUBl9/7+yJUctyJ/Y5ichO/CaPBoAIthvqRbe7jasUQ== +"@boxyhq/saml20@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@boxyhq/saml20/-/saml20-1.1.0.tgz#f8ced56ef4313900873df5d38bf325d90477bbe6" + integrity sha512-1lZyBIt7/W0vCn/aiRFNEtyGXPbve+QFcd69CGf7/0DXWRZ8dKmVcgu7uIlI3XHFC25Ru2XduAMC6kfoV7iw1Q== dependencies: - "@xmldom/xmldom" "0.8.3" + "@xmldom/xmldom" "0.8.6" lodash "4.17.21" - rambda "7.3.0" - thumbprint "0.0.1" - xml-crypto "3.0.0" - xml-encryption "3.0.1" + rambda "7.4.0" + xml-crypto "3.0.1" + xml-encryption "3.0.2" xml2js "0.4.23" xmlbuilder "15.1.1" @@ -2970,13 +2959,14 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@daily-co/daily-js@^0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@daily-co/daily-js/-/daily-js-0.26.0.tgz#f90828b80e7d7ceaa29e5bb3a7e666c96a37c3b0" - integrity sha512-JLKiTQs4HFKSzR5ES8GANPSbbs8Ri8HbJXSx54bYO6Y9bR5jr46cP0YlOwfxZIrPEXT3g3Jvt/Q1yRWqljZYVQ== +"@daily-co/daily-js@^0.37.0": + version "0.37.0" + resolved "https://registry.yarnpkg.com/@daily-co/daily-js/-/daily-js-0.37.0.tgz#39efac8003b3676d3ff21535fcdb38265815126d" + integrity sha512-vT6Z5t8YVlVsMX2Y6lt9CY3tgDUCUoEfOTN8F6bFy3RDSTJnDHWCqCdGr4WDiGY6jzXuAdgZr8/mZGk6rWiuew== dependencies: "@babel/runtime" "^7.12.5" bowser "^2.8.1" + dequal "^2.0.3" events "^3.1.0" fast-equals "^1.6.3" lodash "^4.17.15" @@ -4550,11 +4540,6 @@ resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-5.4.2.tgz#fedb8b4b98cf0750daf5802fa2a661edbf83892b" integrity sha512-QIDIZ9a0NfDStgD47VaTgwiPjlw1p4QPLwjOB/9+/DqIztoQopPNNAd+HdtQMHgE+ibP3dJacd8/TVL/A1RaaA== -"@jsdevtools/ono@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" - integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== - "@json-rpc-tools/provider@^1.5.5": version "1.7.6" resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" @@ -4982,15 +4967,10 @@ resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-1.0.3.tgz#db9cc719191a62e7d9200f6e7bab21c5b848adca" integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== -"@opentelemetry/api-metrics@0.27.0": - version "0.27.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-metrics/-/api-metrics-0.27.0.tgz#d8eca344ed1155f3ea8a8133ade827b4bb90efbf" - integrity sha512-tB79288bwjkdhPNpw4UdOEy3bacVwtol6Que7cAu8KEJ9ULjRfSiwpYEwJY/oER3xZ7zNFz0uiJ7N1jSiotpVA== - -"@opentelemetry/api@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924" - integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog== +"@opentelemetry/api@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.0.tgz#2c91791a9ba6ca0a0f4aaac5e45d58df13639ac8" + integrity sha512-IgMK9i3sFGNUqPMbjABm0G26g0QCKCUBfglhQ7rQq6WcxbKfEHRcmwsoER4hZcuYqJgkYn2OeuoJIv7Jsftp7g== "@otplib/core@^12.0.1": version "12.0.1" @@ -5893,10 +5873,10 @@ resolved "https://registry.yarnpkg.com/@redis/bloom/-/bloom-1.1.0.tgz#64e310ddee72010676e14296076329e594a1f6c7" integrity sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ== -"@redis/client@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.3.1.tgz#ac30e068a9fcfea48ad310898ed15e8e4198fa7a" - integrity sha512-FKEHpOu7Q4+cuM6VWjA54988K5jkqOxvhvj2hEGSx086lvKwXyjzO7Lya7hcirZ0/Db8FLBJN7UXsJuyoNWPJg== +"@redis/client@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@redis/client/-/client-1.4.2.tgz#2a3f5e98bc33b7b979390442e6e08f96e57fabdd" + integrity sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw== dependencies: cluster-key-slot "1.1.1" generic-pool "3.9.0" @@ -5917,10 +5897,10 @@ resolved "https://registry.yarnpkg.com/@redis/search/-/search-1.1.0.tgz#7abb18d431f27ceafe6bcb4dd83a3fa67e9ab4df" integrity sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ== -"@redis/time-series@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.3.tgz#4cfca8e564228c0bddcdf4418cba60c20b224ac4" - integrity sha512-OFp0q4SGrTH0Mruf6oFsHGea58u8vS/iI5+NpYdicaM+7BgqBZH8FFvNZ8rYYLrUO/QRqMq72NpXmxLVNcdmjA== +"@redis/time-series@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.4.tgz#af85eb080f6934580e4d3b58046026b6c2b18717" + integrity sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng== "@resvg/resvg-wasm@2.0.0-alpha.4": version "2.0.0-alpha.4" @@ -7972,7 +7952,7 @@ resolved "https://registry.yarnpkg.com/@types/json-logic-js/-/json-logic-js-1.2.1.tgz#064e777b77b0fcb77f00c2c50fec1387cb33eb47" integrity sha512-g/g+wj/7sgazpiCHiyAtndoNiy/LodLkNG4I9MILAl0UinKKwv3GiPKbtvcE1hIoezQqgDamXfx8Lht62/hHqw== -"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -8086,11 +8066,16 @@ dependencies: "@types/node" "*" -"@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": +"@types/node@*", "@types/node@16.9.1", "@types/node@>=4.0", "@types/node@>=8.1.0", "@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== +"@types/node@^12.12.54", "@types/node@^12.12.6": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + "@types/nodemailer@^6.4.5": version "6.4.5" resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-6.4.5.tgz#09011ac73259245475d1688e4ba101860567dc39" @@ -8294,6 +8279,11 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== +"@types/turndown@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/turndown/-/turndown-5.0.1.tgz#fcda7b02cda4c9d445be1440036df20f335b9387" + integrity sha512-N8Ad4e3oJxh9n9BiZx9cbe/0M3kqDpOTm2wzj13wdDUxDPjfjloWIJaquZzWE1cYTAHpjOH3rcTnXQdpEfS/SQ== + "@types/uglify-js@*": version "3.16.0" resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.16.0.tgz#2cf74a0e6ebb6cd54c0d48e509d5bd91160a9602" @@ -9095,10 +9085,10 @@ react-date-picker "^8.4.0" react-fit "^1.4.0" -"@xmldom/xmldom@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.3.tgz#beaf980612532aa9a3004aff7e428943aeaa0711" - integrity sha512-Lv2vySXypg4nfa51LY1nU8yDAGo/5YwF+EY/rUZgIbfvwVARcd67ttCM8SMsTeJy51YhHYavEq+FS6R0hW9PFQ== +"@xmldom/xmldom@0.8.6", "@xmldom/xmldom@^0.8.5": + version "0.8.6" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.6.tgz#8a1524eb5bd5e965c1e3735476f0262469f71440" + integrity sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg== "@xmldom/xmldom@^0.7.5": version "0.7.5" @@ -9110,11 +9100,6 @@ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.2.tgz#b695ff674e8216efa632a3d36ad51ae9843380c0" integrity sha512-+R0juSseERyoPvnBQ/cZih6bpF7IpCXlWbHRoCRzYzqpz6gWHOgf8o4MOEf6KBVuOyqU+gCNLkCWVIJAro8XyQ== -"@xmldom/xmldom@^0.8.3": - version "0.8.6" - resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.6.tgz#8a1524eb5bd5e965c1e3735476f0262469f71440" - integrity sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg== - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -9897,10 +9882,10 @@ axios-retry@^3.2.4: "@babel/runtime" "^7.15.4" is-retry-allowed "^2.2.0" -axios@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" - integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== +axios@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.2.tgz#72681724c6e6a43a9fea860fc558127dbe32f9f1" + integrity sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -12317,11 +12302,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -denque@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/denque/-/denque-2.0.1.tgz#bcef4c1b80dc32efe97515744f21a4229ab8934a" - integrity sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ== - denque@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" @@ -12342,6 +12322,11 @@ dequal@^2.0.0: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -12543,6 +12528,11 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +domino@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" + integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== + dompurify@=2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.3.tgz#c1af3eb88be47324432964d8abc75cf4b98d634c" @@ -15892,7 +15882,7 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -https-proxy-agent@^5.0.0: +https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== @@ -17430,10 +17420,10 @@ jimp@^0.16.1: "@jimp/types" "^0.16.1" regenerator-runtime "^0.13.3" -jose@4.10.4: - version "4.10.4" - resolved "https://registry.yarnpkg.com/jose/-/jose-4.10.4.tgz#5f934b2fcf2995776e8f671f7523c6ac52c138f7" - integrity sha512-eBH77Xs9Yc/oTDvukhAEDVMijhekPuNktXJL4tUlB22jqKP1k48v5nmsUmc8feoJPsxB3HsfEt2LbVSoz+1mng== +jose@4.11.2: + version "4.11.2" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.11.2.tgz#d9699307c02e18ff56825843ba90e2fae9f09e23" + integrity sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A== jose@^4.10.0: version "4.11.0" @@ -18236,10 +18226,10 @@ long-timeout@0.1.1: resolved "https://registry.yarnpkg.com/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514" integrity sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w== -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== +long@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f" + integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A== longest-streak@^2.0.0: version "2.0.4" @@ -18325,7 +18315,7 @@ lowlight@^1.17.0: fault "^1.0.0" highlight.js "~10.7.0" -lru-cache@^4.0.1, lru-cache@^4.1.3: +lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -18347,6 +18337,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.14.1: + version "7.14.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" + integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== + lru-cache@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" @@ -18498,10 +18493,10 @@ markdown-table@^2.0.0: dependencies: repeat-string "^1.0.0" -marked@4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.2.tgz#1d2075ad6cdfe42e651ac221c32d949a26c0672a" - integrity sha512-JjBTFTAvuTgANXx82a5vzK9JLSMoV6V3LBVn4Uhdso6t7vXrGx7g1Cd2r6NYSsxrYbQGFCMqBDhFHyK5q2UvcQ== +marked@4.2.12: + version "4.2.12" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.12.tgz#d69a64e21d71b06250da995dcd065c11083bebb5" + integrity sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw== match-sorter@^4.2.0: version "4.2.1" @@ -19439,6 +19434,13 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mixpanel@0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/mixpanel/-/mixpanel-0.17.0.tgz#ec57b068598c620cf039a5e504fb37c97ebfe8ce" + integrity sha512-DY5WeOy/hmkPrNiiZugJpWR0iMuOwuj1a3u0bgwB2eUFRV6oIew/pIahhpawdbNjb+Bye4a8ID3gefeNPvL81g== + dependencies: + https-proxy-agent "5.0.0" + mkdirp-promise@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-1.1.0.tgz#2c84893ed676e0d98fb18fb9a6212fd1b2b9a819" @@ -19498,13 +19500,12 @@ mongodb-connection-string-url@^2.5.4: "@types/whatwg-url" "^8.2.1" whatwg-url "^11.0.0" -mongodb@4.11.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.11.0.tgz#d28fdc7509f24d0d274f456529441fa3e570415c" - integrity sha512-9l9n4Nk2BYZzljW3vHah3Z0rfS5npKw6ktnkmFgTcnzaXH1DRm3pDl6VMHu84EVb1lzmSaJC4OzWZqTkB5i2wg== +mongodb@4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.13.0.tgz#2aa832b827e2891eb2e52e8235c201cbb4701ed2" + integrity sha512-+taZ/bV8d1pYuHL4U+gSwkhmDrwkWbH1l4aah4YpmpscMwgFBkufIKxgP/G7m87/NUuQzc2Z75ZTI7ZOyqZLbw== dependencies: bson "^4.7.0" - denque "^2.1.0" mongodb-connection-string-url "^2.5.4" socks "^2.7.1" optionalDependencies: @@ -19644,17 +19645,17 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mysql2@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-2.3.3.tgz#944f3deca4b16629052ff8614fbf89d5552545a0" - integrity sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA== +mysql2@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.0.1.tgz#436db56e96d5b7fed350192387f54881658b8b44" + integrity sha512-Wrh5KuE0OOlm6wRwRhE2q+C8LjwwfT3sFKVauyTwMwPbOd2i0SzxMqTZPqs90ZNAEWjot5GFywje84qVn3ITYw== dependencies: - denque "^2.0.1" + denque "^2.1.0" generate-function "^2.3.1" iconv-lite "^0.6.3" - long "^4.0.0" - lru-cache "^6.0.0" - named-placeholders "^1.1.2" + long "^5.2.1" + lru-cache "^7.14.1" + named-placeholders "^1.1.3" seq-queue "^0.0.5" sqlstring "^2.3.2" @@ -19667,12 +19668,12 @@ mz@^2.4.0, mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -named-placeholders@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.2.tgz#ceb1fbff50b6b33492b5cf214ccf5e39cef3d0e8" - integrity sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA== +named-placeholders@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" + integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== dependencies: - lru-cache "^4.1.3" + lru-cache "^7.14.1" nan@^2.12.1: version "2.16.0" @@ -19763,6 +19764,11 @@ next-axiom@^0.16.0: dependencies: whatwg-fetch "^3.6.2" +next-build-id@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/next-build-id/-/next-build-id-3.0.0.tgz#bfb7a1e2df03882688758f0a4a67e6e837043f42" + integrity sha512-B3JCsL/9Z/wkmo3EySukQHCgx89Aw0i4LPi2MEhCboQBJ6wpkYTIu1z6hOYKuw/S1Wy8ZRqCEq0dVY/ST6jGqg== + next-collect@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/next-collect/-/next-collect-0.2.1.tgz#b4dd604cba97629378e399a15ce454ff847e9eb4" @@ -20378,10 +20384,10 @@ opener@^1.5.2: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -openid-client@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.2.1.tgz#dd26298aca237625298ef34ff11ad9276917df28" - integrity sha512-KPxqWnxobG/70Cxqyvd43RWfCfHedFnCdHSBpw5f7WnTnuBAeBnvot/BIo+brrcTr0wyAYUlL/qejQSGwWtdIg== +openid-client@5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.3.1.tgz#69a5fa7d2b5ad479032f576852d40b4d4435488a" + integrity sha512-RLfehQiHch9N6tRWNx68cicf3b1WR0x74bJWHRc25uYIbSRwjxYcTFaRnzbbpls5jroLAaB/bFIodTgA5LJMvw== dependencies: jose "^4.10.0" lru-cache "^6.0.0" @@ -21761,10 +21767,10 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -rambda@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.3.0.tgz#90e440ead53030a216093865d8d97997a80868ca" - integrity sha512-RFVofZYaG2TaVcxjnM0ejdVWf/59rFq1f57OGnjP3GT/bthzFw0GVr5rkP9PKbVlEuF/Y7bOVPLfiiYfxq/EWQ== +rambda@7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.4.0.tgz#61ec9de31d3dd6affe804de3bae04a5b818781e5" + integrity sha512-A9hihu7dUTLOUCM+I8E61V4kRXnN4DwYeK0DwCBydC1MqNI1PidyAtbtpsJlBBzK4icSctEcCQ1bGcLpBuETUQ== ramda@^0.28.0: version "0.28.0" @@ -22414,17 +22420,17 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redis@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-4.4.0.tgz#bd73fe74e910ecff6bbe89c7e50887c09b3df6e2" - integrity sha512-tQyFG6O9iewLxxHYRyirJNklhe2QI7M/0o8q0jk7D9Z/Cxh/7oZrQyHKyjWz0TkkCls8ool/xvhL9K8zRnkaYQ== +redis@4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/redis/-/redis-4.5.1.tgz#f5a818970bb2dc5d60540bab41308640604c7d33" + integrity sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA== dependencies: "@redis/bloom" "1.1.0" - "@redis/client" "1.3.1" + "@redis/client" "1.4.2" "@redis/graph" "1.1.0" "@redis/json" "1.0.4" "@redis/search" "1.1.0" - "@redis/time-series" "1.0.3" + "@redis/time-series" "1.0.4" redux-immutable@^4.0.0: version "4.0.0" @@ -24805,11 +24811,6 @@ through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8, through@~2.3, t resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -thumbprint@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/thumbprint/-/thumbprint-0.0.1.tgz#55e86f9a9b14efb45b15c039645d47b6226bb777" - integrity sha1-VehvmpsU77RbFcA5ZF1HtiJrt3c= - timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -25300,6 +25301,13 @@ turbo@^1.4.3: turbo-windows-64 "1.4.3" turbo-windows-arm64 "1.4.3" +turndown@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/turndown/-/turndown-7.1.1.tgz#96992f2d9b40a1a03d3ea61ad31b5a5c751ef77f" + integrity sha512-BEkXaWH7Wh7e9bd2QumhfAXk5g34+6QUmmWx+0q6ThaVOLuLUqsnkq35HQ5SBHSaxjSfSM7US5o4lhJNH7B9MA== + dependencies: + domino "^2.1.6" + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -25416,10 +25424,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typeorm@0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.3.10.tgz#aa2857fd4b078c912ca693b7eee01b6535704458" - integrity sha512-VMKiM84EpJQ+Mz9xDIPqnfplWhyUy1d8ccaKdMY9obifxJOTFnv8GYVyPsGwG8Lk7Nb8MlttHyHWENGAhBA3WA== +typeorm@0.3.11: + version "0.3.11" + resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.3.11.tgz#09b6ab0b0574bf33c1faf7344bab6c363cf28921" + integrity sha512-pzdOyWbVuz/z8Ww6gqvBW4nylsM0KLdUCDExr2gR20/x1khGSVxQkjNV/3YqliG90jrWzrknYbYscpk8yxFJVg== dependencies: "@sqltools/formatter" "^1.2.2" app-root-path "^3.0.0" @@ -26922,20 +26930,20 @@ xml-but-prettier@^1.0.1: dependencies: repeat-string "^1.5.2" -xml-crypto@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-crypto/-/xml-crypto-3.0.0.tgz#e3342f9c9a94455d4700431ac9803493bf51cf81" - integrity sha512-vdmZOsWgjnFxYGY7OwCgxs+HLWzwvLgX2n0NSYWh3gudckQyNOmtJTT6ooOWEvDZSpC9qRjRs2bEXqKFi1oCHw== +xml-crypto@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/xml-crypto/-/xml-crypto-3.0.1.tgz#1d4852b040e80413d8058e2917eddd9f17a00b8b" + integrity sha512-7XrwB3ujd95KCO6+u9fidb8ajvRJvIfGNWD0XLJoTWlBKz+tFpUzEYxsN+Il/6/gHtEs1RgRh2RH+TzhcWBZUw== dependencies: - "@xmldom/xmldom" "^0.8.3" + "@xmldom/xmldom" "^0.8.5" xpath "0.0.32" -xml-encryption@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/xml-encryption/-/xml-encryption-3.0.1.tgz#ab1a37955a3de1c2c877d667d400d95373b0eaa0" - integrity sha512-KhHltZXyQ43nGFuZr+UMfCa5G6Ws2uXdiLLJPBP3SRlMh6PmUJkXqMHdhYpy0wSgEkx4UKBQ59nRmZxcXL+4GA== +xml-encryption@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/xml-encryption/-/xml-encryption-3.0.2.tgz#d3cb67d97cdd9673313a42cc0d7fa43ff0886c21" + integrity sha512-VxYXPvsWB01/aqVLd6ZMPWZ+qaj0aIdF+cStrVJMcFj3iymwZeI0ABzB3VqMYv48DkSpRhnrXqTUkR34j+UDyg== dependencies: - "@xmldom/xmldom" "^0.8.3" + "@xmldom/xmldom" "^0.8.5" escape-html "^1.0.3" xpath "0.0.32"