diff --git a/packages/@uppy/companion/package.json b/packages/@uppy/companion/package.json index 59843a9f7e..c540114ec1 100644 --- a/packages/@uppy/companion/package.json +++ b/packages/@uppy/companion/package.json @@ -44,7 +44,7 @@ "express-request-id": "1.4.1", "express-session": "1.17.3", "form-data": "^3.0.0", - "got": "11", + "got": "^12.6.0", "grant": "5.4.21", "helmet": "^4.6.0", "ipaddr.js": "^2.0.1", @@ -107,7 +107,7 @@ "deploy": "kubectl apply -f infra/kube/companion-kube.yml", "prepublishOnly": "yarn run build", "start": "node ./lib/standalone/start-server.js", - "test": "jest" + "test": "NODE_OPTIONS=--experimental-vm-modules jest" }, "engines": { "node": "^14.19.0 || ^16.15.0 || >=18.0.0" diff --git a/packages/@uppy/companion/src/server/Uploader.js b/packages/@uppy/companion/src/server/Uploader.js index 37051f7ff3..fb914a9b0c 100644 --- a/packages/@uppy/companion/src/server/Uploader.js +++ b/packages/@uppy/companion/src/server/Uploader.js @@ -2,7 +2,6 @@ const tus = require('tus-js-client') const { randomUUID } = require('node:crypto') const validator = require('validator') -const got = require('got').default const { pipeline: pipelineCb } = require('node:stream') const { join } = require('node:path') const fs = require('node:fs') @@ -10,6 +9,8 @@ const { promisify } = require('node:util') const FormData = require('form-data') const throttle = require('lodash.throttle') +const got = require('./got') + // TODO move to `require('streams/promises').pipeline` when dropping support for Node.js 14.x. const pipeline = promisify(pipelineCb) @@ -605,7 +606,7 @@ class Uploader { try { const httpMethod = (this.options.httpMethod || '').toLowerCase() === 'put' ? 'put' : 'post' - const runRequest = got[httpMethod] + const runRequest = (await got)[httpMethod] const response = await runRequest(url, reqOptions) diff --git a/packages/@uppy/companion/src/server/controllers/url.js b/packages/@uppy/companion/src/server/controllers/url.js index 425c86524e..7b61431fac 100644 --- a/packages/@uppy/companion/src/server/controllers/url.js +++ b/packages/@uppy/companion/src/server/controllers/url.js @@ -46,7 +46,7 @@ const validateURL = (url, ignoreTld) => { */ const downloadURL = async (url, blockLocalIPs, traceId) => { try { - const protectedGot = getProtectedGot({ url, blockLocalIPs }) + const protectedGot = await getProtectedGot({ url, blockLocalIPs }) const stream = protectedGot.stream.get(url, { responseType: 'json' }) await prepareStream(stream) return stream diff --git a/packages/@uppy/companion/src/server/got.js b/packages/@uppy/companion/src/server/got.js new file mode 100644 index 0000000000..bc1b687e2a --- /dev/null +++ b/packages/@uppy/companion/src/server/got.js @@ -0,0 +1,3 @@ +const gotPromise = import('got') + +module.exports = gotPromise.then((got) => got.default) diff --git a/packages/@uppy/companion/src/server/helpers/request.js b/packages/@uppy/companion/src/server/helpers/request.js index 6a91120d24..8542087d02 100644 --- a/packages/@uppy/companion/src/server/helpers/request.js +++ b/packages/@uppy/companion/src/server/helpers/request.js @@ -4,10 +4,11 @@ const https = require('node:https') const { URL } = require('node:url') const dns = require('node:dns') const ipaddr = require('ipaddr.js') -const got = require('got').default const logger = require('../logger') +const got = require('../got') + const FORBIDDEN_IP_ADDRESS = 'Forbidden IP address' // Example scary IPs that should return false (ipv6-to-ipv4 mapped): @@ -91,7 +92,7 @@ module.exports.getProtectedHttpAgent = (protocol) => { return protocol.startsWith('https') ? HttpsAgent : HttpAgent } -function getProtectedGot ({ url, blockLocalIPs }) { +async function getProtectedGot ({ url, blockLocalIPs }) { const httpAgent = new (module.exports.getProtectedHttpAgent('http'))() const httpsAgent = new (module.exports.getProtectedHttpAgent('https'))() @@ -105,7 +106,7 @@ function getProtectedGot ({ url, blockLocalIPs }) { } // @ts-ignore - return got.extend({ hooks: { beforeRedirect: [beforeRedirect] }, agent: { http: httpAgent, https: httpsAgent } }) + return (await got).extend({ hooks: { beforeRedirect: [beforeRedirect] }, agent: { http: httpAgent, https: httpsAgent } }) } module.exports.getProtectedGot = getProtectedGot @@ -119,7 +120,7 @@ module.exports.getProtectedGot = getProtectedGot */ exports.getURLMeta = async (url, blockLocalIPs = false) => { async function requestWithMethod (method) { - const protectedGot = getProtectedGot({ url, blockLocalIPs }) + const protectedGot = await getProtectedGot({ url, blockLocalIPs }) const stream = protectedGot.stream(url, { method, throwHttpErrors: false }) return new Promise((resolve, reject) => ( diff --git a/packages/@uppy/companion/src/server/jobs.js b/packages/@uppy/companion/src/server/jobs.js index c64b152dc6..44cc562a1b 100644 --- a/packages/@uppy/companion/src/server/jobs.js +++ b/packages/@uppy/companion/src/server/jobs.js @@ -2,7 +2,8 @@ const schedule = require('node-schedule') const fs = require('node:fs') const path = require('node:path') const { promisify } = require('node:util') -const got = require('got').default + +const got = require('./got') const { FILE_NAME_PREFIX } = require('./Uploader') const logger = require('./logger') @@ -65,7 +66,7 @@ async function runPeriodicPing ({ urls, payload, requestTimeout }) { // Run requests in parallel await Promise.all(urls.map(async (url) => { try { - await got.post(url, { json: payload, timeout: { request: requestTimeout } }) + await (await got).post(url, { json: payload, timeout: { request: requestTimeout } }) } catch (err) { logger.warn(err, 'jobs.periodic.ping') } diff --git a/packages/@uppy/companion/src/server/provider/box/index.js b/packages/@uppy/companion/src/server/provider/box/index.js index 23e8d7edf6..d0bed225af 100644 --- a/packages/@uppy/companion/src/server/provider/box/index.js +++ b/packages/@uppy/companion/src/server/provider/box/index.js @@ -1,14 +1,14 @@ -const got = require('got').default - const Provider = require('../Provider') const adaptData = require('./adapter') const { withProviderErrorHandling } = require('../providerErrors') const { prepareStream } = require('../../helpers/utils') +const got = require('../../got') + const BOX_FILES_FIELDS = 'id,modified_at,name,permissions,size,type' const BOX_THUMBNAIL_SIZE = 256 -const getClient = ({ token }) => got.extend({ +const getClient = async ({ token }) => (await got).extend({ prefixUrl: 'https://api.box.com/2.0', headers: { authorization: `Bearer ${token}`, @@ -16,12 +16,12 @@ const getClient = ({ token }) => got.extend({ }) async function getUserInfo ({ token }) { - return getClient({ token }).get('users/me', { responseType: 'json' }).json() + return (await getClient({ token })).get('users/me', { responseType: 'json' }).json() } async function list ({ directory, query, token }) { const rootFolderID = '0' - return getClient({ token }).get(`folders/${directory || rootFolderID}/items`, { searchParams: { fields: BOX_FILES_FIELDS, offset: query.cursor }, responseType: 'json' }).json() + return (await getClient({ token })).get(`folders/${directory || rootFolderID}/items`, { searchParams: { fields: BOX_FILES_FIELDS, offset: query.cursor }, responseType: 'json' }).json() } /** @@ -61,7 +61,7 @@ class Box extends Provider { async download ({ id, token }) { return this.#withErrorHandling('provider.box.download.error', async () => { - const stream = getClient({ token }).stream.get(`files/${id}/content`, { responseType: 'json' }) + const stream = (await getClient({ token })).stream.get(`files/${id}/content`, { responseType: 'json' }) await prepareStream(stream) return { stream } @@ -81,7 +81,7 @@ class Box extends Provider { // At that time, retry this endpoint to retrieve the thumbnail. // // This can be reproduced more easily by changing extension to png and trying on a newly uploaded image - const stream = getClient({ token }).stream.get(`files/${id}/thumbnail.${extension}`, { + const stream = (await getClient({ token })).stream.get(`files/${id}/thumbnail.${extension}`, { searchParams: { max_height: BOX_THUMBNAIL_SIZE, max_width: BOX_THUMBNAIL_SIZE }, responseType: 'json', }) @@ -93,7 +93,7 @@ class Box extends Provider { async size ({ id, token }) { return this.#withErrorHandling('provider.box.size.error', async () => { - const { size } = await getClient({ token }).get(`files/${id}`, { responseType: 'json' }).json() + const { size } = await (await getClient({ token })).get(`files/${id}`, { responseType: 'json' }).json() return parseInt(size, 10) }) } @@ -101,7 +101,7 @@ class Box extends Provider { logout ({ companion, token }) { return this.#withErrorHandling('provider.box.logout.error', async () => { const { key, secret } = companion.options.providerOptions.box - await getClient({ token }).post('oauth2/revoke', { + await (await getClient({ token })).post('oauth2/revoke', { prefixUrl: 'https://api.box.com', form: { client_id: key, diff --git a/packages/@uppy/companion/src/server/provider/credentials.js b/packages/@uppy/companion/src/server/provider/credentials.js index 20c24902fb..d2509d7f13 100644 --- a/packages/@uppy/companion/src/server/provider/credentials.js +++ b/packages/@uppy/companion/src/server/provider/credentials.js @@ -1,4 +1,3 @@ -const got = require('got').default const atob = require('atob') const { htmlEscape } = require('escape-goat') const logger = require('../logger') @@ -7,6 +6,8 @@ const tokenService = require('../helpers/jwt') // eslint-disable-next-line const Provider = require('./Provider') +const got = require('../got') + /** * @param {string} url * @param {string} providerName @@ -14,7 +15,7 @@ const Provider = require('./Provider') */ async function fetchKeys (url, providerName, credentialRequestParams) { try { - const { credentials } = await got.post(url, { + const { credentials } = await (await got).post(url, { json: { provider: providerName, parameters: credentialRequestParams }, }).json() diff --git a/packages/@uppy/companion/src/server/provider/drive/index.js b/packages/@uppy/companion/src/server/provider/drive/index.js index e3e930f176..5fed8c7fd9 100644 --- a/packages/@uppy/companion/src/server/provider/drive/index.js +++ b/packages/@uppy/companion/src/server/provider/drive/index.js @@ -1,17 +1,17 @@ -const got = require('got').default - const Provider = require('../Provider') const logger = require('../../logger') const { VIRTUAL_SHARED_DIR, adaptData, isShortcut, isGsuiteFile, getGsuiteExportType } = require('./adapter') const { withProviderErrorHandling } = require('../providerErrors') const { prepareStream } = require('../../helpers/utils') +const got = require('../../got') + const DRIVE_FILE_FIELDS = 'kind,id,imageMediaMetadata,name,mimeType,ownedByMe,permissions(role,emailAddress),size,modifiedTime,iconLink,thumbnailLink,teamDriveId,videoMediaMetadata,shortcutDetails(targetId,targetMimeType)' const DRIVE_FILES_FIELDS = `kind,nextPageToken,incompleteSearch,files(${DRIVE_FILE_FIELDS})` // using wildcard to get all 'drive' fields because specifying fields seems no to work for the /drives endpoint const SHARED_DRIVE_FIELDS = '*' -const getClient = ({ token }) => got.extend({ +const getClient = async ({ token }) => (await got).extend({ prefixUrl: 'https://www.googleapis.com/drive/v3', headers: { authorization: `Bearer ${token}`, @@ -19,7 +19,7 @@ const getClient = ({ token }) => got.extend({ }) async function getStats ({ id, token }) { - const client = getClient({ token }) + const client = await getClient({ token }) const getStatsInner = async (statsOfId) => ( client.get(`files/${encodeURIComponent(statsOfId)}`, { searchParams: { fields: DRIVE_FILE_FIELDS, supportsAllDrives: true }, responseType: 'json' }).json() @@ -54,7 +54,7 @@ class Drive extends Provider { const isRoot = directory === 'root' const isVirtualSharedDirRoot = directory === VIRTUAL_SHARED_DIR - const client = getClient({ token }) + const client = await getClient({ token }) async function fetchSharedDrives (pageToken = null) { const shouldListSharedDrives = isRoot && !query.cursor @@ -106,7 +106,7 @@ class Drive extends Provider { async download ({ id: idIn, token }) { return this.#withErrorHandling('provider.drive.download.error', async () => { - const client = getClient({ token }) + const client = await getClient({ token }) const { mimeType, id } = await getStats({ id: idIn, token }) @@ -148,7 +148,7 @@ class Drive extends Provider { logout ({ token }) { return this.#withErrorHandling('provider.drive.logout.error', async () => { - await got.post('https://accounts.google.com/o/oauth2/revoke', { + await (await got).post('https://accounts.google.com/o/oauth2/revoke', { searchParams: { token }, responseType: 'json', }) diff --git a/packages/@uppy/companion/src/server/provider/dropbox/index.js b/packages/@uppy/companion/src/server/provider/dropbox/index.js index 1b6c3ca715..e971b07e09 100644 --- a/packages/@uppy/companion/src/server/provider/dropbox/index.js +++ b/packages/@uppy/companion/src/server/provider/dropbox/index.js @@ -1,10 +1,10 @@ -const got = require('got').default - const Provider = require('../Provider') const adaptData = require('./adapter') const { withProviderErrorHandling } = require('../providerErrors') const { prepareStream } = require('../../helpers/utils') +const got = require('../../got') + // From https://www.dropbox.com/developers/reference/json-encoding: // // This function is simple and has OK performance compared to more @@ -17,7 +17,7 @@ function httpHeaderSafeJson (v) { }) } -const getClient = ({ token }) => got.extend({ +const getClient = async ({ token }) => (await got).extend({ prefixUrl: 'https://api.dropboxapi.com/2', headers: { authorization: `Bearer ${token}`, @@ -25,15 +25,16 @@ const getClient = ({ token }) => got.extend({ }) async function list ({ directory, query, token }) { + const client = await getClient({ token }) if (query.cursor) { - return getClient({ token }).post('files/list_folder/continue', { json: { cursor: query.cursor }, responseType: 'json' }).json() + return client.post('files/list_folder/continue', { json: { cursor: query.cursor }, responseType: 'json' }).json() } - return getClient({ token }).post('files/list_folder', { searchParams: query, json: { path: `${directory || ''}`, include_non_downloadable_files: false }, responseType: 'json' }).json() + return client.post('files/list_folder', { searchParams: query, json: { path: `${directory || ''}`, include_non_downloadable_files: false }, responseType: 'json' }).json() } async function userInfo ({ token }) { - return getClient({ token }).post('users/get_current_account', { responseType: 'json' }).json() + return (await getClient({ token })).post('users/get_current_account', { responseType: 'json' }).json() } /** @@ -69,7 +70,7 @@ class DropBox extends Provider { async download ({ id, token }) { return this.#withErrorHandling('provider.dropbox.download.error', async () => { - const stream = getClient({ token }).stream.post('files/download', { + const stream = (await getClient({ token })).stream.post('files/download', { prefixUrl: 'https://content.dropboxapi.com/2', headers: { 'Dropbox-API-Arg': httpHeaderSafeJson({ path: String(id) }), @@ -85,7 +86,7 @@ class DropBox extends Provider { async thumbnail ({ id, token }) { return this.#withErrorHandling('provider.dropbox.thumbnail.error', async () => { - const stream = getClient({ token }).stream.post('files/get_thumbnail_v2', { + const stream = (await getClient({ token })).stream.post('files/get_thumbnail_v2', { prefixUrl: 'https://content.dropboxapi.com/2', headers: { 'Dropbox-API-Arg': httpHeaderSafeJson({ resource: { '.tag': 'path', path: `${id}` }, size: 'w256h256' }) }, body: Buffer.alloc(0), @@ -99,14 +100,14 @@ class DropBox extends Provider { async size ({ id, token }) { return this.#withErrorHandling('provider.dropbox.size.error', async () => { - const { size } = await getClient({ token }).post('files/get_metadata', { json: { path: id }, responseType: 'json' }).json() + const { size } = await (await getClient({ token })).post('files/get_metadata', { json: { path: id }, responseType: 'json' }).json() return parseInt(size, 10) }) } async logout ({ token }) { return this.#withErrorHandling('provider.dropbox.logout.error', async () => { - await getClient({ token }).post('auth/token/revoke', { responseType: 'json' }) + await (await getClient({ token })).post('auth/token/revoke', { responseType: 'json' }) return { revoked: true } }) } diff --git a/packages/@uppy/companion/src/server/provider/facebook/index.js b/packages/@uppy/companion/src/server/provider/facebook/index.js index 08344b3f76..375d561d3a 100644 --- a/packages/@uppy/companion/src/server/provider/facebook/index.js +++ b/packages/@uppy/companion/src/server/provider/facebook/index.js @@ -1,5 +1,3 @@ -const got = require('got').default - const Provider = require('../Provider') const { getURLMeta } = require('../../helpers/request') const logger = require('../../logger') @@ -7,7 +5,9 @@ const { adaptData, sortImages } = require('./adapter') const { withProviderErrorHandling } = require('../providerErrors') const { prepareStream } = require('../../helpers/utils') -const getClient = ({ token }) => got.extend({ +const got = require('../../got') + +const getClient = async ({ token }) => (await got).extend({ prefixUrl: 'https://graph.facebook.com', headers: { authorization: `Bearer ${token}`, @@ -15,7 +15,7 @@ const getClient = ({ token }) => got.extend({ }) async function getMediaUrl ({ token, id }) { - const body = await getClient({ token }).get(String(id), { searchParams: { fields: 'images' }, responseType: 'json' }).json() + const body = await (await getClient({ token })).get(String(id), { searchParams: { fields: 'images' }, responseType: 'json' }).json() const sortedImages = sortImages(body.images) return sortedImages[sortedImages.length - 1].source } @@ -45,7 +45,7 @@ class Facebook extends Provider { qs.fields = 'icon,images,name,width,height,created_time' } - const client = getClient({ token }) + const client = await getClient({ token }) const [{ email }, list] = await Promise.all([ client.get('me', { searchParams: { fields: 'email' }, responseType: 'json' }).json(), @@ -58,7 +58,7 @@ class Facebook extends Provider { async download ({ id, token }) { return this.#withErrorHandling('provider.facebook.download.error', async () => { const url = await getMediaUrl({ token, id }) - const stream = got.stream.get(url, { responseType: 'json' }) + const stream = (await got).stream.get(url, { responseType: 'json' }) await prepareStream(stream) return { stream } }) @@ -81,7 +81,7 @@ class Facebook extends Provider { async logout ({ token }) { return this.#withErrorHandling('provider.facebook.logout.error', async () => { - await getClient({ token }).delete('me/permissions', { responseType: 'json' }).json() + await (await getClient({ token })).delete('me/permissions', { responseType: 'json' }).json() return { revoked: true } }) } diff --git a/packages/@uppy/companion/src/server/provider/instagram/graph/index.js b/packages/@uppy/companion/src/server/provider/instagram/graph/index.js index bcc79caf07..c1898a81d6 100644 --- a/packages/@uppy/companion/src/server/provider/instagram/graph/index.js +++ b/packages/@uppy/companion/src/server/provider/instagram/graph/index.js @@ -1,5 +1,3 @@ -const got = require('got').default - const Provider = require('../../Provider') const { getURLMeta } = require('../../../helpers/request') const logger = require('../../../logger') @@ -7,7 +5,9 @@ const adaptData = require('./adapter') const { withProviderErrorHandling } = require('../../providerErrors') const { prepareStream } = require('../../../helpers/utils') -const getClient = ({ token }) => got.extend({ +const got = require('../../../got') + +const getClient = async ({ token }) => (await got).extend({ prefixUrl: 'https://graph.instagram.com', headers: { authorization: `Bearer ${token}`, @@ -15,7 +15,7 @@ const getClient = ({ token }) => got.extend({ }) async function getMediaUrl ({ token, id }) { - const body = await getClient({ token }).get(String(id), { searchParams: { fields: 'media_url' }, responseType: 'json' }).json() + const body = await (await getClient({ token })).get(String(id), { searchParams: { fields: 'media_url' }, responseType: 'json' }).json() return body.media_url } @@ -46,7 +46,7 @@ class Instagram extends Provider { if (query.cursor) qs.after = query.cursor - const client = getClient({ token }) + const client = await getClient({ token }) const [{ username }, list] = await Promise.all([ client.get('me', { searchParams: { fields: 'username' }, responseType: 'json' }).json(), @@ -59,7 +59,7 @@ class Instagram extends Provider { async download ({ id, token }) { return this.#withErrorHandling('provider.instagram.download.error', async () => { const url = await getMediaUrl({ token, id }) - const stream = got.stream.get(url, { responseType: 'json' }) + const stream = (await got).stream.get(url, { responseType: 'json' }) await prepareStream(stream) return { stream } }) diff --git a/packages/@uppy/companion/src/server/provider/onedrive/index.js b/packages/@uppy/companion/src/server/provider/onedrive/index.js index d586e6947e..a79cb1ac52 100644 --- a/packages/@uppy/companion/src/server/provider/onedrive/index.js +++ b/packages/@uppy/companion/src/server/provider/onedrive/index.js @@ -1,12 +1,12 @@ -const got = require('got').default - const Provider = require('../Provider') const logger = require('../../logger') const adaptData = require('./adapter') const { withProviderErrorHandling } = require('../providerErrors') const { prepareStream } = require('../../helpers/utils') -const getClient = ({ token }) => got.extend({ +const got = require('../../got') + +const getClient = async ({ token }) => (await got).extend({ prefixUrl: 'https://graph.microsoft.com/v1.0', headers: { authorization: `Bearer ${token}`, @@ -45,7 +45,7 @@ class OneDrive extends Provider { qs.$skiptoken = query.cursor } - const client = getClient({ token }) + const client = await getClient({ token }) const [{ mail, userPrincipalName }, list] = await Promise.all([ client.get('me', { responseType: 'json' }).json(), @@ -58,7 +58,7 @@ class OneDrive extends Provider { async download ({ id, token, query }) { return this.#withErrorHandling('provider.onedrive.download.error', async () => { - const stream = getClient({ token }).stream.get(`${getRootPath(query)}/items/${id}/content`, { responseType: 'json' }) + const stream = (await getClient({ token })).stream.get(`${getRootPath(query)}/items/${id}/content`, { responseType: 'json' }) await prepareStream(stream) return { stream } }) @@ -73,7 +73,7 @@ class OneDrive extends Provider { async size ({ id, query, token }) { return this.#withErrorHandling('provider.onedrive.size.error', async () => { - const { size } = await getClient({ token }).get(`${getRootPath(query)}/items/${id}`, { responseType: 'json' }).json() + const { size } = await (await getClient({ token })).get(`${getRootPath(query)}/items/${id}`, { responseType: 'json' }).json() return size }) } diff --git a/packages/@uppy/companion/src/server/provider/unsplash/index.js b/packages/@uppy/companion/src/server/provider/unsplash/index.js index d240e63767..9b1c4f3eaf 100644 --- a/packages/@uppy/companion/src/server/provider/unsplash/index.js +++ b/packages/@uppy/companion/src/server/provider/unsplash/index.js @@ -1,14 +1,14 @@ -const got = require('got').default - const SearchProvider = require('../SearchProvider') const { getURLMeta } = require('../../helpers/request') const adaptData = require('./adapter') const { withProviderErrorHandling } = require('../providerErrors') const { prepareStream } = require('../../helpers/utils') +const got = require('../../got') + const BASE_URL = 'https://api.unsplash.com' -const getClient = ({ token }) => got.extend({ +const getClient = async ({ token }) => (await got).extend({ prefixUrl: BASE_URL, headers: { authorization: `Client-ID ${token}`, @@ -26,18 +26,18 @@ class Unsplash extends SearchProvider { const qs = { per_page: 40, query: query.q } if (query.cursor) qs.page = query.cursor - const response = await getClient({ token }).get('search/photos', { searchParams: qs, responseType: 'json' }).json() + const response = await (await getClient({ token })).get('search/photos', { searchParams: qs, responseType: 'json' }).json() return adaptData(response, query) }) } async download ({ id, token }) { return this.#withErrorHandling('provider.unsplash.download.error', async () => { - const client = getClient({ token }) + const client = await getClient({ token }) const { links: { download: url, download_location: attributionUrl } } = await getPhotoMeta(client, id) - const stream = got.stream.get(url, { responseType: 'json' }) + const stream = (await got).stream.get(url, { responseType: 'json' }) await prepareStream(stream) // To attribute the author of the image, we call the `download_location` @@ -52,7 +52,7 @@ class Unsplash extends SearchProvider { async size ({ id, token }) { return this.#withErrorHandling('provider.unsplash.size.error', async () => { - const { links: { download: url } } = await getPhotoMeta(getClient({ token }), id) + const { links: { download: url } } = await getPhotoMeta(await getClient({ token }), id) const { size } = await getURLMeta(url, true) return size }) diff --git a/packages/@uppy/companion/src/server/provider/zoom/index.js b/packages/@uppy/companion/src/server/provider/zoom/index.js index 9be59a399d..83ff0f5990 100644 --- a/packages/@uppy/companion/src/server/provider/zoom/index.js +++ b/packages/@uppy/companion/src/server/provider/zoom/index.js @@ -1,4 +1,3 @@ -const got = require('got').default const moment = require('moment-timezone') const Provider = require('../Provider') @@ -6,11 +5,13 @@ const { initializeData, adaptData } = require('./adapter') const { withProviderErrorHandling } = require('../providerErrors') const { prepareStream, getBasicAuthHeader } = require('../../helpers/utils') +const got = require('../../got') + const BASE_URL = 'https://zoom.us/v2' const PAGE_SIZE = 300 const DEAUTH_EVENT_NAME = 'app_deauthorized' -const getClient = ({ token }) => got.extend({ +const getClient = async ({ token }) => (await got).extend({ prefixUrl: BASE_URL, headers: { authorization: `Bearer ${token}`, @@ -49,7 +50,7 @@ class Zoom extends Provider { const { cursor, from, to } = query const meetingId = options.directory || '' - const client = getClient({ token }) + const client = await getClient({ token }) const user = await client.get('users/me', { responseType: 'json' }).json() const { timezone } = user @@ -91,7 +92,7 @@ class Zoom extends Provider { // cc files don't have an ID or size const { recordingStart, recordingId: fileId } = query - const client = getClient({ token }) + const client = await getClient({ token }) const foundFile = await findFile({ client, meetingId, fileId, recordingStart }) const url = foundFile?.download_url @@ -105,7 +106,7 @@ class Zoom extends Provider { async size ({ id: meetingId, token, query }) { return this.#withErrorHandling('provider.zoom.size.error', async () => { - const client = getClient({ token }) + const client = await getClient({ token }) const { recordingStart, recordingId: fileId } = query const foundFile = await findFile({ client, meetingId, fileId, recordingStart }) @@ -118,7 +119,7 @@ class Zoom extends Provider { return this.#withErrorHandling('provider.zoom.logout.error', async () => { const { key, secret } = await companion.getProviderCredentials() - const { status } = await got.post('https://zoom.us/oauth/revoke', { + const { status } = await (await got).post('https://zoom.us/oauth/revoke', { searchParams: { token }, headers: { Authorization: getBasicAuthHeader(key, secret) }, responseType: 'json', @@ -141,7 +142,7 @@ class Zoom extends Provider { return { data: {}, status: 400 } } - await got.post('https://api.zoom.us/oauth/data/compliance', { + await (await got).post('https://api.zoom.us/oauth/data/compliance', { headers: { Authorization: getBasicAuthHeader(key, secret) }, json: { client_id: key, diff --git a/packages/@uppy/companion/test/__tests__/http-agent.js b/packages/@uppy/companion/test/__tests__/http-agent.js index d1018a8670..a0a2061835 100644 --- a/packages/@uppy/companion/test/__tests__/http-agent.js +++ b/packages/@uppy/companion/test/__tests__/http-agent.js @@ -41,24 +41,24 @@ describe('test protected request Agent', () => { test('allows URLs without IP addresses', async () => { nock('https://transloadit.com').get('/').reply(200) const url = 'https://transloadit.com' - await getProtectedGot({ url, blockLocalIPs: true }).get(url) + await (await getProtectedGot({ url, blockLocalIPs: true })).get(url) }) test('blocks private http IP address', async () => { const url = 'http://172.20.10.4:8090' - const promise = getProtectedGot({ url, blockLocalIPs: true }).get(url) + const promise = (await getProtectedGot({ url, blockLocalIPs: true })).get(url) await expect(promise).rejects.toThrow(new Error(FORBIDDEN_IP_ADDRESS)) }) test('blocks private https IP address', async () => { const url = 'https://172.20.10.4:8090' - const promise = getProtectedGot({ url, blockLocalIPs: true }).get(url) + const promise = (await getProtectedGot({ url, blockLocalIPs: true })).get(url) await expect(promise).rejects.toThrow(new Error(FORBIDDEN_IP_ADDRESS)) }) test('blocks localhost IP address', async () => { const url = 'http://127.0.0.1:8090' - const promise = getProtectedGot({ url, blockLocalIPs: true }).get(url) + const promise = (await getProtectedGot({ url, blockLocalIPs: true })).get(url) await expect(promise).rejects.toThrow(new Error(FORBIDDEN_IP_ADDRESS)) }) }) diff --git a/yarn.lock b/yarn.lock index 206b82e78d..8f57640240 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3597,50 +3597,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.0.1": - version: 29.0.1 - resolution: "@jest/console@npm:29.0.1" +"@jest/console@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/console@npm:29.5.0" dependencies: - "@jest/types": ^29.0.1 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.0.1 - jest-util: ^29.0.1 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 slash: ^3.0.0 - checksum: a6c9424f1e398d91c7746001fceb7ce93ae6cd359df7241ba25020f0fe0b0be348b28de89bc0fdb552cea583cafe8cefd408bb8d93d045dba7f47b625e7456ea + checksum: 9f4f4b8fabd1221361b7f2e92d4a90f5f8c2e2b29077249996ab3c8b7f765175ffee795368f8d6b5b2bb3adb32dc09319f7270c7c787b0d259e624e00e0f64a5 languageName: node linkType: hard -"@jest/core@npm:^29.0.1": - version: 29.0.1 - resolution: "@jest/core@npm:29.0.1" +"@jest/core@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/core@npm:29.5.0" dependencies: - "@jest/console": ^29.0.1 - "@jest/reporters": ^29.0.1 - "@jest/test-result": ^29.0.1 - "@jest/transform": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/console": ^29.5.0 + "@jest/reporters": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^29.0.0 - jest-config: ^29.0.1 - jest-haste-map: ^29.0.1 - jest-message-util: ^29.0.1 - jest-regex-util: ^29.0.0 - jest-resolve: ^29.0.1 - jest-resolve-dependencies: ^29.0.1 - jest-runner: ^29.0.1 - jest-runtime: ^29.0.1 - jest-snapshot: ^29.0.1 - jest-util: ^29.0.1 - jest-validate: ^29.0.1 - jest-watcher: ^29.0.1 + jest-changed-files: ^29.5.0 + jest-config: ^29.5.0 + jest-haste-map: ^29.5.0 + jest-message-util: ^29.5.0 + jest-regex-util: ^29.4.3 + jest-resolve: ^29.5.0 + jest-resolve-dependencies: ^29.5.0 + jest-runner: ^29.5.0 + jest-runtime: ^29.5.0 + jest-snapshot: ^29.5.0 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 + jest-watcher: ^29.5.0 micromatch: ^4.0.4 - pretty-format: ^29.0.1 + pretty-format: ^29.5.0 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -3648,7 +3648,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: da8eb20fbe9ab53fe7b554df2443510f6c55e29823c820bbbc5f197b9a1bc899bf3b03fddcb8cc08b3b9ffd43cbf50d38c4e3724e3347a8ce82a7303947a8a50 + checksum: 9e8f5243fe82d5a57f3971e1b96f320058df7c315328a3a827263f3b17f64be10c80f4a9c1b1773628b64d2de6d607c70b5b2d5bf13e7f5ad04223e9ef6aac06 languageName: node linkType: hard @@ -3673,6 +3673,18 @@ __metadata: languageName: node linkType: hard +"@jest/environment@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/environment@npm:29.5.0" + dependencies: + "@jest/fake-timers": ^29.5.0 + "@jest/types": ^29.5.0 + "@types/node": "*" + jest-mock: ^29.5.0 + checksum: 921de6325cd4817dec6685e5ff299b499b6379f3f9cf489b4b13588ee1f3820a0c77b49e6a087996b6de8f629f6f5251e636cba08d1bdb97d8071cc7d033c88a + languageName: node + linkType: hard + "@jest/expect-utils@npm:^29.0.1": version: 29.0.1 resolution: "@jest/expect-utils@npm:29.0.1" @@ -3682,6 +3694,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/expect-utils@npm:29.5.0" + dependencies: + jest-get-type: ^29.4.3 + checksum: c46fb677c88535cf83cf29f0a5b1f376c6a1109ddda266ad7da1a9cbc53cb441fa402dd61fc7b111ffc99603c11a9b3357ee41a1c0e035a58830bcb360871476 + languageName: node + linkType: hard + "@jest/expect@npm:^29.0.1": version: 29.0.1 resolution: "@jest/expect@npm:29.0.1" @@ -3692,6 +3713,16 @@ __metadata: languageName: node linkType: hard +"@jest/expect@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/expect@npm:29.5.0" + dependencies: + expect: ^29.5.0 + jest-snapshot: ^29.5.0 + checksum: bd10e295111547e6339137107d83986ab48d46561525393834d7d2d8b2ae9d5626653f3f5e48e5c3fa742ac982e97bdf1f541b53b9e1d117a247b08e938527f6 + languageName: node + linkType: hard + "@jest/fake-timers@npm:^29.0.1": version: 29.0.1 resolution: "@jest/fake-timers@npm:29.0.1" @@ -3706,7 +3737,21 @@ __metadata: languageName: node linkType: hard -"@jest/globals@npm:^29.0.0, @jest/globals@npm:^29.0.1": +"@jest/fake-timers@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/fake-timers@npm:29.5.0" + dependencies: + "@jest/types": ^29.5.0 + "@sinonjs/fake-timers": ^10.0.2 + "@types/node": "*" + jest-message-util: ^29.5.0 + jest-mock: ^29.5.0 + jest-util: ^29.5.0 + checksum: 69930c6922341f244151ec0d27640852ec96237f730fc024da1f53143d31b43cde75d92f9d8e5937981cdce3b31416abc3a7090a0d22c2377512c4a6613244ee + languageName: node + linkType: hard + +"@jest/globals@npm:^29.0.0": version: 29.0.1 resolution: "@jest/globals@npm:29.0.1" dependencies: @@ -3718,15 +3763,27 @@ __metadata: languageName: node linkType: hard -"@jest/reporters@npm:^29.0.1": - version: 29.0.1 - resolution: "@jest/reporters@npm:29.0.1" +"@jest/globals@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/globals@npm:29.5.0" + dependencies: + "@jest/environment": ^29.5.0 + "@jest/expect": ^29.5.0 + "@jest/types": ^29.5.0 + jest-mock: ^29.5.0 + checksum: b309ab8f21b571a7c672608682e84bbdd3d2b554ddf81e4e32617fec0a69094a290ab42e3c8b2c66ba891882bfb1b8b2736720ea1285b3ad646d55c2abefedd9 + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/reporters@npm:29.5.0" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.0.1 - "@jest/test-result": ^29.0.1 - "@jest/transform": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/console": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@jridgewell/trace-mapping": ^0.3.15 "@types/node": "*" chalk: ^4.0.0 @@ -3739,20 +3796,19 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.0.1 - jest-util: ^29.0.1 - jest-worker: ^29.0.1 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 + jest-worker: ^29.5.0 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 - terminal-link: ^2.0.0 v8-to-istanbul: ^9.0.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - checksum: 33032410e926e229702b3ba8f581d510fef38b53f368bedcf30c761a0fe887d4faff56497e04664760a84f2dcf49f1fb206e392872e96a3b37f9f27af31ad54a + checksum: 481268aac9a4a75cc49c4df1273d6b111808dec815e9d009dad717c32383ebb0cebac76e820ad1ab44e207540e1c2fe1e640d44c4f262de92ab1933e057fdeeb languageName: node linkType: hard @@ -3765,38 +3821,47 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^29.0.0": - version: 29.0.0 - resolution: "@jest/source-map@npm:29.0.0" +"@jest/schemas@npm:^29.4.3": + version: 29.4.3 + resolution: "@jest/schemas@npm:29.4.3" + dependencies: + "@sinclair/typebox": ^0.25.16 + checksum: ac754e245c19dc39e10ebd41dce09040214c96a4cd8efa143b82148e383e45128f24599195ab4f01433adae4ccfbe2db6574c90db2862ccd8551a86704b5bebd + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.4.3": + version: 29.4.3 + resolution: "@jest/source-map@npm:29.4.3" dependencies: "@jridgewell/trace-mapping": ^0.3.15 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: dd97bc5826cf68d6eb5565383816332f800476232fd12800bd027a259cbf3ef216f1633405f3ad0861dde3b12a7886301798c078b334f6d3012044d43abcf4f6 + checksum: 2301d225145f8123540c0be073f35a80fd26a2f5e59550fd68525d8cea580fb896d12bf65106591ffb7366a8a19790076dbebc70e0f5e6ceb51f81827ed1f89c languageName: node linkType: hard -"@jest/test-result@npm:^29.0.1": - version: 29.0.1 - resolution: "@jest/test-result@npm:29.0.1" +"@jest/test-result@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/test-result@npm:29.5.0" dependencies: - "@jest/console": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/console": ^29.5.0 + "@jest/types": ^29.5.0 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: cb012a42f9fe82ad08e4b9f7d9626d0a04c21f43c932ea9d2373c36ceb974c87f0a1d2fa825a814fa64175073bf9c8493f250ac8f7c9bba470e43f92040ccfb7 + checksum: 2e8ff5242227ab960c520c3ea0f6544c595cc1c42fa3873c158e9f4f685f4ec9670ec08a4af94ae3885c0005a43550a9595191ffbc27a0965df27d9d98bbf901 languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.0.1": - version: 29.0.1 - resolution: "@jest/test-sequencer@npm:29.0.1" +"@jest/test-sequencer@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/test-sequencer@npm:29.5.0" dependencies: - "@jest/test-result": ^29.0.1 + "@jest/test-result": ^29.5.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.0.1 + jest-haste-map: ^29.5.0 slash: ^3.0.0 - checksum: 151c35636b1fa5e1676e7deef234e556a09fd08cc91363dae18fe608aeb547f9889c48f0602d4635a2ee872170633e2330c08c0a018959897e49ea747a3d431a + checksum: eca34b4aeb2fda6dfb7f9f4b064c858a7adf64ec5c6091b6f4ed9d3c19549177cbadcf1c615c4c182688fa1cf085c8c55c3ca6eea40719a34554b0bf071d842e languageName: node linkType: hard @@ -3846,6 +3911,29 @@ __metadata: languageName: node linkType: hard +"@jest/transform@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/transform@npm:29.5.0" + dependencies: + "@babel/core": ^7.11.6 + "@jest/types": ^29.5.0 + "@jridgewell/trace-mapping": ^0.3.15 + babel-plugin-istanbul: ^6.1.1 + chalk: ^4.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 + graceful-fs: ^4.2.9 + jest-haste-map: ^29.5.0 + jest-regex-util: ^29.4.3 + jest-util: ^29.5.0 + micromatch: ^4.0.4 + pirates: ^4.0.4 + slash: ^3.0.0 + write-file-atomic: ^4.0.2 + checksum: d55d604085c157cf5112e165ff5ac1fa788873b3b31265fb4734ca59892ee24e44119964cc47eb6d178dd9512bbb6c576d1e20e51a201ff4e24d31e818a1c92d + languageName: node + linkType: hard + "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -3886,6 +3974,20 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^29.5.0": + version: 29.5.0 + resolution: "@jest/types@npm:29.5.0" + dependencies: + "@jest/schemas": ^29.4.3 + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^17.0.8 + chalk: ^4.0.0 + checksum: 1811f94b19cf8a9460a289c4f056796cfc373480e0492692a6125a553cd1a63824bd846d7bb78820b7b6f758f6dd3c2d4558293bb676d541b2fa59c70fdf9d39 + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.1.0": version: 0.1.1 resolution: "@jridgewell/gen-mapping@npm:0.1.1" @@ -5661,10 +5763,17 @@ __metadata: languageName: node linkType: hard -"@sindresorhus/is@npm:^4.0.0": - version: 4.6.0 - resolution: "@sindresorhus/is@npm:4.6.0" - checksum: 83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2 +"@sinclair/typebox@npm:^0.25.16": + version: 0.25.24 + resolution: "@sinclair/typebox@npm:0.25.24" + checksum: 10219c58f40b8414c50b483b0550445e9710d4fe7b2c4dccb9b66533dd90ba8e024acc776026cebe81e87f06fa24b07fdd7bc30dd277eb9cc386ec50151a3026 + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^5.2.0": + version: 5.3.0 + resolution: "@sindresorhus/is@npm:5.3.0" + checksum: b31cebabcdece3d5322de2a4dbc8c0f004e04147a00f2606787bcaf5655ad4b1954f6727fc6914c524009b2b9a2cc01c42835b55f651ce69fd2a0083b60bb852 languageName: node linkType: hard @@ -5677,6 +5786,24 @@ __metadata: languageName: node linkType: hard +"@sinonjs/commons@npm:^2.0.0": + version: 2.0.0 + resolution: "@sinonjs/commons@npm:2.0.0" + dependencies: + type-detect: 4.0.8 + checksum: 5023ba17edf2b85ed58262313b8e9b59e23c6860681a9af0200f239fe939e2b79736d04a260e8270ddd57196851dde3ba754d7230be5c5234e777ae2ca8af137 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.0.2 + resolution: "@sinonjs/fake-timers@npm:10.0.2" + dependencies: + "@sinonjs/commons": ^2.0.0 + checksum: c62aa98e7cefda8dedc101ce227abc888dc46b8ff9706c5f0a8dfd9c3ada97d0a5611384738d9ba0b26b59f99c2ba24efece8e779bb08329e9e87358fa309824 + languageName: node + linkType: hard + "@sinonjs/fake-timers@npm:^9.1.2": version: 9.1.2 resolution: "@sinonjs/fake-timers@npm:9.1.2" @@ -6959,12 +7086,12 @@ __metadata: languageName: node linkType: hard -"@szmarczak/http-timer@npm:^4.0.5": - version: 4.0.6 - resolution: "@szmarczak/http-timer@npm:4.0.6" +"@szmarczak/http-timer@npm:^5.0.1": + version: 5.0.1 + resolution: "@szmarczak/http-timer@npm:5.0.1" dependencies: - defer-to-connect: ^2.0.0 - checksum: c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 + defer-to-connect: ^2.0.1 + checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 languageName: node linkType: hard @@ -7126,18 +7253,6 @@ __metadata: languageName: node linkType: hard -"@types/cacheable-request@npm:^6.0.1": - version: 6.0.2 - resolution: "@types/cacheable-request@npm:6.0.2" - dependencies: - "@types/http-cache-semantics": "*" - "@types/keyv": "*" - "@types/node": "*" - "@types/responselike": "*" - checksum: 667d25808dbf46fe104d6f029e0281ff56058d50c7c1b9182774b3e38bb9c1124f56e4c367ba54f92dbde2d1cc573f26eb0e9748710b2822bc0fd1e5498859c6 - languageName: node - linkType: hard - "@types/caseless@npm:*": version: 0.12.2 resolution: "@types/caseless@npm:0.12.2" @@ -7387,7 +7502,7 @@ __metadata: languageName: node linkType: hard -"@types/http-cache-semantics@npm:*": +"@types/http-cache-semantics@npm:^4.0.1": version: 4.0.1 resolution: "@types/http-cache-semantics@npm:4.0.1" checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 @@ -7483,13 +7598,6 @@ __metadata: languageName: node linkType: hard -"@types/json-buffer@npm:~3.0.0": - version: 3.0.0 - resolution: "@types/json-buffer@npm:3.0.0" - checksum: 6b0a371dd603f0eec9d00874574bae195382570e832560dadf2193ee0d1062b8e0694bbae9798bc758632361c227b1e3b19e3bd914043b498640470a2da38b77 - languageName: node - linkType: hard - "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" @@ -7513,15 +7621,6 @@ __metadata: languageName: node linkType: hard -"@types/keyv@npm:*": - version: 3.1.4 - resolution: "@types/keyv@npm:3.1.4" - dependencies: - "@types/node": "*" - checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d - languageName: node - linkType: hard - "@types/lodash.merge@npm:4.6.6": version: 4.6.6 resolution: "@types/lodash.merge@npm:4.6.6" @@ -7744,15 +7843,6 @@ __metadata: languageName: node linkType: hard -"@types/responselike@npm:*, @types/responselike@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/responselike@npm:1.0.0" - dependencies: - "@types/node": "*" - checksum: e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 - languageName: node - linkType: hard - "@types/retry@npm:0.12.0": version: 0.12.0 resolution: "@types/retry@npm:0.12.0" @@ -8821,7 +8911,7 @@ __metadata: express-request-id: 1.4.1 express-session: 1.17.3 form-data: ^3.0.0 - got: 11 + got: ^12.6.0 grant: 5.4.21 helmet: ^4.6.0 into-stream: ^6.0.0 @@ -11220,7 +11310,7 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.0.0, babel-jest@npm:^29.0.1": +"babel-jest@npm:^29.0.0": version: 29.0.1 resolution: "babel-jest@npm:29.0.1" dependencies: @@ -11237,6 +11327,23 @@ __metadata: languageName: node linkType: hard +"babel-jest@npm:^29.5.0": + version: 29.5.0 + resolution: "babel-jest@npm:29.5.0" + dependencies: + "@jest/transform": ^29.5.0 + "@types/babel__core": ^7.1.14 + babel-plugin-istanbul: ^6.1.1 + babel-preset-jest: ^29.5.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.8.0 + checksum: eafb6d37deb71f0c80bf3c80215aa46732153e5e8bcd73f6ff47d92e5c0c98c8f7f75995d0efec6289c371edad3693cd8fa2367b0661c4deb71a3a7117267ede + languageName: node + linkType: hard + "babel-loader@npm:8.2.5, babel-loader@npm:^8.0.0, babel-loader@npm:^8.2.3": version: 8.2.5 resolution: "babel-loader@npm:8.2.5" @@ -11314,6 +11421,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-jest-hoist@npm:^29.5.0": + version: 29.5.0 + resolution: "babel-plugin-jest-hoist@npm:29.5.0" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.1.14 + "@types/babel__traverse": ^7.0.6 + checksum: 099b5254073b6bc985b6d2d045ad26fb8ed30ff8ae6404c4fe8ee7cd0e98a820f69e3dfb871c7c65aae0f4b65af77046244c07bb92d49ef9005c90eedf681539 + languageName: node + linkType: hard + "babel-plugin-macros@npm:^3.0.1": version: 3.1.0 resolution: "babel-plugin-macros@npm:3.1.0" @@ -11528,6 +11647,18 @@ __metadata: languageName: node linkType: hard +"babel-preset-jest@npm:^29.5.0": + version: 29.5.0 + resolution: "babel-preset-jest@npm:29.5.0" + dependencies: + babel-plugin-jest-hoist: ^29.5.0 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 5566ca2762766c9319b4973d018d2fa08c0fcf6415c72cc54f4c8e7199e851ea8f5e6c6730f03ed7ed44fc8beefa959dd15911f2647dee47c615ff4faeddb1ad + languageName: node + linkType: hard + "babelify@npm:^10.0.0": version: 10.0.0 resolution: "babelify@npm:10.0.0" @@ -12551,25 +12682,25 @@ __metadata: languageName: node linkType: hard -"cacheable-lookup@npm:^5.0.3": - version: 5.0.4 - resolution: "cacheable-lookup@npm:5.0.4" - checksum: 763e02cf9196bc9afccacd8c418d942fc2677f22261969a4c2c2e760fa44a2351a81557bd908291c3921fe9beb10b976ba8fa50c5ca837c5a0dd945f16468f2d +"cacheable-lookup@npm:^7.0.0": + version: 7.0.0 + resolution: "cacheable-lookup@npm:7.0.0" + checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 languageName: node linkType: hard -"cacheable-request@npm:^7.0.2": - version: 7.0.2 - resolution: "cacheable-request@npm:7.0.2" +"cacheable-request@npm:^10.2.8": + version: 10.2.8 + resolution: "cacheable-request@npm:10.2.8" dependencies: - clone-response: ^1.0.2 - get-stream: ^5.1.0 - http-cache-semantics: ^4.0.0 - keyv: ^4.0.0 - lowercase-keys: ^2.0.0 - normalize-url: ^6.0.1 - responselike: ^2.0.0 - checksum: 6152813982945a5c9989cb457a6c499f12edcc7ade323d2fbfd759abc860bdbd1306e08096916bb413c3c47e812f8e4c0a0cc1e112c8ce94381a960f115bc77f + "@types/http-cache-semantics": ^4.0.1 + get-stream: ^6.0.1 + http-cache-semantics: ^4.1.1 + keyv: ^4.5.2 + mimic-response: ^4.0.0 + normalize-url: ^8.0.0 + responselike: ^3.0.0 + checksum: 5b2abf93866ee7219c7c11929f02e4b97a2bf38b6403a0ad3786d3be607293676a10b70bcd8080e103a0f28e0ab4aa4b03a1550c01a08edbf1abf46ef0a9419f languageName: node linkType: hard @@ -13256,15 +13387,6 @@ __metadata: languageName: node linkType: hard -"clone-response@npm:^1.0.2": - version: 1.0.3 - resolution: "clone-response@npm:1.0.3" - dependencies: - mimic-response: ^1.0.0 - checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e - languageName: node - linkType: hard - "clone@npm:^1.0.2, clone@npm:^1.0.4": version: 1.0.4 resolution: "clone@npm:1.0.4" @@ -13543,16 +13665,6 @@ __metadata: languageName: node linkType: hard -"compress-brotli@npm:^1.3.8": - version: 1.3.8 - resolution: "compress-brotli@npm:1.3.8" - dependencies: - "@types/json-buffer": ~3.0.0 - json-buffer: ~3.0.1 - checksum: de7589d692d40eb362f6c91070b5e51bc10b05a89eabb4a7c76c1aa21b625756f8c101c6999e4df0c4dc6199c5ca2e1353573bfdcca5615810f27485394162a5 - languageName: node - linkType: hard - "compressible@npm:~2.0.16": version: 2.0.18 resolution: "compressible@npm:2.0.18" @@ -13760,6 +13872,13 @@ __metadata: languageName: node linkType: hard +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + languageName: node + linkType: hard + "convert-source-map@npm:~1.1.0": version: 1.1.3 resolution: "convert-source-map@npm:1.1.3" @@ -14907,7 +15026,7 @@ __metadata: languageName: node linkType: hard -"defer-to-connect@npm:^2.0.0": +"defer-to-connect@npm:^2.0.1": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b @@ -15184,6 +15303,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^29.4.3": + version: 29.4.3 + resolution: "diff-sequences@npm:29.4.3" + checksum: 28b265e04fdddcf7f9f814effe102cc95a9dec0564a579b5aed140edb24fc345c611ca52d76d725a3cab55d3888b915b5e8a4702e0f6058968a90fa5f41fcde7 + languageName: node + linkType: hard + "diff@npm:^5.0.0": version: 5.1.0 resolution: "diff@npm:5.1.0" @@ -15699,10 +15825,10 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.10.2": - version: 0.10.2 - resolution: "emittery@npm:0.10.2" - checksum: ee3e21788b043b90885b18ea756ec3105c1cedc50b29709c92b01e239c7e55345d4bb6d3aef4ddbaf528eef448a40b3bb831bad9ee0fc9c25cbf1367ab1ab5ac +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 languageName: node linkType: hard @@ -17551,6 +17677,19 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.5.0": + version: 29.5.0 + resolution: "expect@npm:29.5.0" + dependencies: + "@jest/expect-utils": ^29.5.0 + jest-get-type: ^29.4.3 + jest-matcher-utils: ^29.5.0 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 + checksum: 58f70b38693df6e5c6892db1bcd050f0e518d6f785175dc53917d4fa6a7359a048e5690e19ddcb96b65c4493881dd89a3dabdab1a84dfa55c10cdbdabf37b2d7 + languageName: node + linkType: hard + "expo-application@npm:~4.0.0": version: 4.0.2 resolution: "expo-application@npm:4.0.2" @@ -18539,6 +18678,13 @@ __metadata: languageName: node linkType: hard +"form-data-encoder@npm:^2.1.2": + version: 2.1.4 + resolution: "form-data-encoder@npm:2.1.4" + checksum: e0b3e5950fb69b3f32c273944620f9861f1933df9d3e42066e038e26dfb343d0f4465de9f27e0ead1a09d9df20bc2eed06a63c2ca2f8f00949e7202bae9e29dd + languageName: node + linkType: hard + "form-data@npm:^2.5.0": version: 2.5.1 resolution: "form-data@npm:2.5.1" @@ -19400,22 +19546,22 @@ __metadata: languageName: node linkType: hard -"got@npm:11": - version: 11.8.5 - resolution: "got@npm:11.8.5" +"got@npm:^12.6.0": + version: 12.6.0 + resolution: "got@npm:12.6.0" dependencies: - "@sindresorhus/is": ^4.0.0 - "@szmarczak/http-timer": ^4.0.5 - "@types/cacheable-request": ^6.0.1 - "@types/responselike": ^1.0.0 - cacheable-lookup: ^5.0.3 - cacheable-request: ^7.0.2 + "@sindresorhus/is": ^5.2.0 + "@szmarczak/http-timer": ^5.0.1 + cacheable-lookup: ^7.0.0 + cacheable-request: ^10.2.8 decompress-response: ^6.0.0 - http2-wrapper: ^1.0.0-beta.5.2 - lowercase-keys: ^2.0.0 - p-cancelable: ^2.0.0 - responselike: ^2.0.0 - checksum: 2de8a1bbda4e9b6b2b72b2d2100bc055a59adc1740529e631f61feb44a8b9a1f9f8590941ed9da9df0090b6d6d0ed8ffee94cd9ac086ec3409b392b33440f7d2 + form-data-encoder: ^2.1.2 + get-stream: ^6.0.1 + http2-wrapper: ^2.1.10 + lowercase-keys: ^3.0.0 + p-cancelable: ^3.0.0 + responselike: ^3.0.0 + checksum: 3621897067068dcb3578d05535cfb10f60aac07198032b3349a488f5741964e7f63d6e37c976840f1bcaaf42f5c049ed3c6d8e0d6c622b74639ca9319ad178a1 languageName: node linkType: hard @@ -20428,13 +20574,20 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": +"http-cache-semantics@npm:^4.1.0": version: 4.1.0 resolution: "http-cache-semantics@npm:4.1.0" checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 languageName: node linkType: hard +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + languageName: node + linkType: hard + "http-deceiver@npm:^1.2.7": version: 1.2.7 resolution: "http-deceiver@npm:1.2.7" @@ -20549,13 +20702,13 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"http2-wrapper@npm:^1.0.0-beta.5.2": - version: 1.0.3 - resolution: "http2-wrapper@npm:1.0.3" +"http2-wrapper@npm:^2.1.10": + version: 2.2.0 + resolution: "http2-wrapper@npm:2.2.0" dependencies: quick-lru: ^5.1.1 - resolve-alpn: ^1.0.0 - checksum: 74160b862ec699e3f859739101ff592d52ce1cb207b7950295bf7962e4aa1597ef709b4292c673bece9c9b300efad0559fc86c71b1409c7a1e02b7229456003e + resolve-alpn: ^1.2.0 + checksum: 6fd20e5cb6a58151715b3581e06a62a47df943187d2d1f69e538a50cccb7175dd334ecfde7900a37d18f3e13a1a199518a2c211f39860e81e9a16210c199cfaa languageName: node linkType: hard @@ -22006,57 +22159,58 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"jest-changed-files@npm:^29.0.0": - version: 29.0.0 - resolution: "jest-changed-files@npm:29.0.0" +"jest-changed-files@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-changed-files@npm:29.5.0" dependencies: execa: ^5.0.0 p-limit: ^3.1.0 - checksum: 5642ace8cd1e7e4f9e3ee423b97d0b018b00ad85ea7e5864592b4657e8500ef56ec50d2189229b912223046bbf31c9196c8ef2442a917be9726a5911d40db1b2 + checksum: a67a7cb3c11f8f92bd1b7c79e84f724cbd11a9ad51f3cdadafe3ce7ee3c79ee50dbea128f920f5fddc807e9e4e83f5462143094391feedd959a77dd20ab96cf3 languageName: node linkType: hard -"jest-circus@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-circus@npm:29.0.1" +"jest-circus@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-circus@npm:29.5.0" dependencies: - "@jest/environment": ^29.0.1 - "@jest/expect": ^29.0.1 - "@jest/test-result": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/environment": ^29.5.0 + "@jest/expect": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 is-generator-fn: ^2.0.0 - jest-each: ^29.0.1 - jest-matcher-utils: ^29.0.1 - jest-message-util: ^29.0.1 - jest-runtime: ^29.0.1 - jest-snapshot: ^29.0.1 - jest-util: ^29.0.1 + jest-each: ^29.5.0 + jest-matcher-utils: ^29.5.0 + jest-message-util: ^29.5.0 + jest-runtime: ^29.5.0 + jest-snapshot: ^29.5.0 + jest-util: ^29.5.0 p-limit: ^3.1.0 - pretty-format: ^29.0.1 + pretty-format: ^29.5.0 + pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 9cdb10b8def60ee9419f7efdba22dc94544d3e150d0d3350c8085bc1dc9330abb586a8d2bd840915198a11064704c2cf22902ecfbe97c698b896c5a9dafa345e + checksum: 44ff5d06acedae6de6c866e20e3b61f83e29ab94cf9f960826e7e667de49c12dd9ab9dffd7fa3b7d1f9688a8b5bfb1ebebadbea69d9ed0d3f66af4a0ff8c2b27 languageName: node linkType: hard -"jest-cli@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-cli@npm:29.0.1" +"jest-cli@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-cli@npm:29.5.0" dependencies: - "@jest/core": ^29.0.1 - "@jest/test-result": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/core": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/types": ^29.5.0 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.0.1 - jest-util: ^29.0.1 - jest-validate: ^29.0.1 + jest-config: ^29.5.0 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 prompts: ^2.0.1 yargs: ^17.3.1 peerDependencies: @@ -22066,34 +22220,34 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: optional: true bin: jest: bin/jest.js - checksum: 5bd9c5fa6f58d7ca686391edb44fcc8a5f161f698ce8bad6cc8a9ee8e0d355d870ef8db26a49559fa1229518bc90926d83a6da1509a004f9a2ed618177516fb4 + checksum: 39897bbbc0f0d8a6b975ab12fd13887eaa28d92e3dee9e0173a5cb913ae8cc2ae46e090d38c6d723e84d9d6724429cd08685b4e505fa447d31ca615630c7dbba languageName: node linkType: hard -"jest-config@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-config@npm:29.0.1" +"jest-config@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-config@npm:29.5.0" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.0.1 - "@jest/types": ^29.0.1 - babel-jest: ^29.0.1 + "@jest/test-sequencer": ^29.5.0 + "@jest/types": ^29.5.0 + babel-jest: ^29.5.0 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.0.1 - jest-environment-node: ^29.0.1 - jest-get-type: ^29.0.0 - jest-regex-util: ^29.0.0 - jest-resolve: ^29.0.1 - jest-runner: ^29.0.1 - jest-util: ^29.0.1 - jest-validate: ^29.0.1 + jest-circus: ^29.5.0 + jest-environment-node: ^29.5.0 + jest-get-type: ^29.4.3 + jest-regex-util: ^29.4.3 + jest-resolve: ^29.5.0 + jest-runner: ^29.5.0 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.0.1 + pretty-format: ^29.5.0 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -22104,7 +22258,7 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: optional: true ts-node: optional: true - checksum: 2660a91907838a1fb1eebcb3983f4968d973f8ad66e8ccecfc1eae6bfbd3b5d4db937e04b8dd57b969126b19a008d96d26d68d5307a1ea55bbc79adbf968524a + checksum: c37c4dab964c54ab293d4e302d40b09687037ac9d00b88348ec42366970747feeaf265e12e3750cd3660b40c518d4031335eda11ac10b70b10e60797ebbd4b9c languageName: node linkType: hard @@ -22120,25 +22274,37 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"jest-docblock@npm:^29.0.0": - version: 29.0.0 - resolution: "jest-docblock@npm:29.0.0" +"jest-diff@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-diff@npm:29.5.0" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.4.3 + jest-get-type: ^29.4.3 + pretty-format: ^29.5.0 + checksum: dfd0f4a299b5d127779c76b40106c37854c89c3e0785098c717d52822d6620d227f6234c3a9291df204d619e799e3654159213bf93220f79c8e92a55475a3d39 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.4.3": + version: 29.4.3 + resolution: "jest-docblock@npm:29.4.3" dependencies: detect-newline: ^3.0.0 - checksum: b4f81426cc0dffb05b873d3cc373a1643040be62d72cce4dfed499fbcb57c55ac02c44af7aba5e7753915ff5e85b8d6030456981156eaea20be1cb57d2719904 + checksum: e0e9df1485bb8926e5b33478cdf84b3387d9caf3658e7dc1eaa6dc34cb93dea0d2d74797f6e940f0233a88f3dadd60957f2288eb8f95506361f85b84bf8661df languageName: node linkType: hard -"jest-each@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-each@npm:29.0.1" +"jest-each@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-each@npm:29.5.0" dependencies: - "@jest/types": ^29.0.1 + "@jest/types": ^29.5.0 chalk: ^4.0.0 - jest-get-type: ^29.0.0 - jest-util: ^29.0.1 - pretty-format: ^29.0.1 - checksum: 522ccc7dde6df3f979ab62145998780b6103086ac05dc512554a11095b6927d1246d177e3081b32f3b0030d87114ac85eb6ada7a42473c1ba1e3b7826ef60015 + jest-get-type: ^29.4.3 + jest-util: ^29.5.0 + pretty-format: ^29.5.0 + checksum: b8b297534d25834c5d4e31e4c687359787b1e402519e42664eb704cc3a12a7a91a017565a75acb02e8cf9afd3f4eef3350bd785276bec0900184641b765ff7a5 languageName: node linkType: hard @@ -22158,17 +22324,17 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"jest-environment-node@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-environment-node@npm:29.0.1" +"jest-environment-node@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-environment-node@npm:29.5.0" dependencies: - "@jest/environment": ^29.0.1 - "@jest/fake-timers": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/environment": ^29.5.0 + "@jest/fake-timers": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" - jest-mock: ^29.0.1 - jest-util: ^29.0.1 - checksum: a7e47ae14471e6c3a1de611fe67e1810c8ea7fe288282b6c084058de8d2b825017a2393bed689a6c0ac8abafd3ac00e3c48b5ccdadc5be7d577b1ec68f51aac3 + jest-mock: ^29.5.0 + jest-util: ^29.5.0 + checksum: 57981911cc20a4219b0da9e22b2e3c9f31b505e43f78e61c899e3227ded455ce1a3a9483842c69cfa4532f02cfb536ae0995bf245f9211608edacfc1e478d411 languageName: node linkType: hard @@ -22186,6 +22352,13 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"jest-get-type@npm:^29.4.3": + version: 29.4.3 + resolution: "jest-get-type@npm:29.4.3" + checksum: 6ac7f2dde1c65e292e4355b6c63b3a4897d7e92cb4c8afcf6d397f2682f8080e094c8b0b68205a74d269882ec06bf696a9de6cd3e1b7333531e5ed7b112605ce + languageName: node + linkType: hard + "jest-haste-map@npm:^26.5.2, jest-haste-map@npm:^26.6.2": version: 26.6.2 resolution: "jest-haste-map@npm:26.6.2" @@ -22234,13 +22407,36 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"jest-leak-detector@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-leak-detector@npm:29.0.1" +"jest-haste-map@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-haste-map@npm:29.5.0" dependencies: - jest-get-type: ^29.0.0 - pretty-format: ^29.0.1 - checksum: 57cbe9d1cc4c56029c323f7c9cebf841a28265fc4edab1fe4f7ba48941e2bd1a65b3fd2c530ec8d7a2ad71b97a002e2cd88bb7751de82abe001262a1ae27c9e8 + "@jest/types": ^29.5.0 + "@types/graceful-fs": ^4.1.3 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^29.4.3 + jest-util: ^29.5.0 + jest-worker: ^29.5.0 + micromatch: ^4.0.4 + walker: ^1.0.8 + dependenciesMeta: + fsevents: + optional: true + checksum: 3828ff7783f168e34be2c63887f82a01634261f605dcae062d83f979a61c37739e21b9607ecb962256aea3fbe5a530a1acee062d0026fcb47c607c12796cf3b7 + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-leak-detector@npm:29.5.0" + dependencies: + jest-get-type: ^29.4.3 + pretty-format: ^29.5.0 + checksum: 0fb845da7ac9cdfc9b3b2e35f6f623a41c547d7dc0103ceb0349013459d00de5870b5689a625e7e37f9644934b40e8f1dcdd5422d14d57470600350364676313 languageName: node linkType: hard @@ -22256,6 +22452,18 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"jest-matcher-utils@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-matcher-utils@npm:29.5.0" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.5.0 + jest-get-type: ^29.4.3 + pretty-format: ^29.5.0 + checksum: 1d3e8c746e484a58ce194e3aad152eff21fd0896e8b8bf3d4ab1a4e2cbfed95fb143646f4ad9fdf6e42212b9e8fc033268b58e011b044a9929df45485deb5ac9 + languageName: node + linkType: hard + "jest-message-util@npm:^29.0.1": version: 29.0.1 resolution: "jest-message-util@npm:29.0.1" @@ -22273,6 +22481,23 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"jest-message-util@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-message-util@npm:29.5.0" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.5.0 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.5.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: daddece6bbf846eb6a2ab9be9f2446e54085bef4e5cecd13d2a538fa9c01cb89d38e564c6b74fd8e12d37ed9eface8a362240ae9f21d68b214590631e7a0d8bf + languageName: node + linkType: hard + "jest-mock@npm:^27.0.6": version: 27.5.1 resolution: "jest-mock@npm:27.5.1" @@ -22293,6 +22518,17 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"jest-mock@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-mock@npm:29.5.0" + dependencies: + "@jest/types": ^29.5.0 + "@types/node": "*" + jest-util: ^29.5.0 + checksum: 2a9cf07509948fa8608898c445f04fe4dd6e2049ff431e5531eee028c808d3ba3c67f226ac87b0cf383feaa1055776900d197c895e89783016886ac17a4ff10c + languageName: node + linkType: hard + "jest-pnp-resolver@npm:^1.2.2": version: 1.2.2 resolution: "jest-pnp-resolver@npm:1.2.2" @@ -22319,89 +22555,96 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-resolve-dependencies@npm:29.0.1" +"jest-regex-util@npm:^29.4.3": + version: 29.4.3 + resolution: "jest-regex-util@npm:29.4.3" + checksum: 96fc7fc28cd4dd73a63c13a526202c4bd8b351d4e5b68b1a2a2c88da3308c2a16e26feaa593083eb0bac38cca1aa9dd05025412e7de013ba963fb8e66af22b8a + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-resolve-dependencies@npm:29.5.0" dependencies: - jest-regex-util: ^29.0.0 - jest-snapshot: ^29.0.1 - checksum: e8d16137def352324f0b57195be484cd139d8d7eab67bc7d23633a61210c19cd396d18be8bf5a2d6fe269e3a70661fd6cad792a401b4609363375787a991bbe9 + jest-regex-util: ^29.4.3 + jest-snapshot: ^29.5.0 + checksum: 479d2e5365d58fe23f2b87001e2e0adcbffe0147700e85abdec8f14b9703b0a55758c1929a9989e3f5d5e954fb88870ea4bfa04783523b664562fcf5f10b0edf languageName: node linkType: hard -"jest-resolve@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-resolve@npm:29.0.1" +"jest-resolve@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-resolve@npm:29.5.0" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.0.1 + jest-haste-map: ^29.5.0 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.0.1 - jest-validate: ^29.0.1 + jest-util: ^29.5.0 + jest-validate: ^29.5.0 resolve: ^1.20.0 - resolve.exports: ^1.1.0 + resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: f6716177c430ea4a073accc4e72d4f55f9d12804e789e10363946b9db89ffd12104b18541c7c468340a85a5dc4226d2538fb70e79f4be6b0761aed3d7315b5c9 + checksum: 9a125f3cf323ceef512089339d35f3ee37f79fe16a831fb6a26773ea6a229b9e490d108fec7af334142e91845b5996de8e7cdd85a4d8d617078737d804e29c8f languageName: node linkType: hard -"jest-runner@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-runner@npm:29.0.1" +"jest-runner@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-runner@npm:29.5.0" dependencies: - "@jest/console": ^29.0.1 - "@jest/environment": ^29.0.1 - "@jest/test-result": ^29.0.1 - "@jest/transform": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/console": ^29.5.0 + "@jest/environment": ^29.5.0 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 - emittery: ^0.10.2 + emittery: ^0.13.1 graceful-fs: ^4.2.9 - jest-docblock: ^29.0.0 - jest-environment-node: ^29.0.1 - jest-haste-map: ^29.0.1 - jest-leak-detector: ^29.0.1 - jest-message-util: ^29.0.1 - jest-resolve: ^29.0.1 - jest-runtime: ^29.0.1 - jest-util: ^29.0.1 - jest-watcher: ^29.0.1 - jest-worker: ^29.0.1 + jest-docblock: ^29.4.3 + jest-environment-node: ^29.5.0 + jest-haste-map: ^29.5.0 + jest-leak-detector: ^29.5.0 + jest-message-util: ^29.5.0 + jest-resolve: ^29.5.0 + jest-runtime: ^29.5.0 + jest-util: ^29.5.0 + jest-watcher: ^29.5.0 + jest-worker: ^29.5.0 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 1b8933732c8fe897de193068155db86e70ff0795ab406a2294469f98fa3d902d0fd517add61c6116abc3e507304a0bbfbfe58271642a26d15211d2f6d8d8fa8d + checksum: 437dea69c5dddca22032259787bac74790d5a171c9d804711415f31e5d1abfb64fa52f54a9015bb17a12b858fd0cf3f75ef6f3c9e94255a8596e179f707229c4 languageName: node linkType: hard -"jest-runtime@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-runtime@npm:29.0.1" +"jest-runtime@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-runtime@npm:29.5.0" dependencies: - "@jest/environment": ^29.0.1 - "@jest/fake-timers": ^29.0.1 - "@jest/globals": ^29.0.1 - "@jest/source-map": ^29.0.0 - "@jest/test-result": ^29.0.1 - "@jest/transform": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/environment": ^29.5.0 + "@jest/fake-timers": ^29.5.0 + "@jest/globals": ^29.5.0 + "@jest/source-map": ^29.4.3 + "@jest/test-result": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.0.1 - jest-message-util: ^29.0.1 - jest-mock: ^29.0.1 - jest-regex-util: ^29.0.0 - jest-resolve: ^29.0.1 - jest-snapshot: ^29.0.1 - jest-util: ^29.0.1 + jest-haste-map: ^29.5.0 + jest-message-util: ^29.5.0 + jest-mock: ^29.5.0 + jest-regex-util: ^29.4.3 + jest-resolve: ^29.5.0 + jest-snapshot: ^29.5.0 + jest-util: ^29.5.0 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: a5e87370aefc489ae4294c88e633d0dcfd69197c4f5f7a2d68e447bcdfcae3bf220527dddd85832279e3f68548f429219609cbe29c406a744f75ed70487ae8b6 + checksum: 7af27bd9d54cf1c5735404cf8d76c6509d5610b1ec0106a21baa815c1aff15d774ce534ac2834bc440dccfe6348bae1885fd9a806f23a94ddafdc0f5bae4b09d languageName: node linkType: hard @@ -22447,6 +22690,37 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"jest-snapshot@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-snapshot@npm:29.5.0" + dependencies: + "@babel/core": ^7.11.6 + "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 + "@babel/plugin-syntax-typescript": ^7.7.2 + "@babel/traverse": ^7.7.2 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.5.0 + "@jest/transform": ^29.5.0 + "@jest/types": ^29.5.0 + "@types/babel__traverse": ^7.0.6 + "@types/prettier": ^2.1.5 + babel-preset-current-node-syntax: ^1.0.0 + chalk: ^4.0.0 + expect: ^29.5.0 + graceful-fs: ^4.2.9 + jest-diff: ^29.5.0 + jest-get-type: ^29.4.3 + jest-matcher-utils: ^29.5.0 + jest-message-util: ^29.5.0 + jest-util: ^29.5.0 + natural-compare: ^1.4.0 + pretty-format: ^29.5.0 + semver: ^7.3.5 + checksum: fe5df54122ed10eed625de6416a45bc4958d5062b018f05b152bf9785ab7f355dcd55e40cf5da63895bf8278f8d7b2bb4059b2cfbfdee18f509d455d37d8aa2b + languageName: node + linkType: hard + "jest-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-util@npm:26.6.2" @@ -22475,6 +22749,20 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"jest-util@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-util@npm:29.5.0" + dependencies: + "@jest/types": ^29.5.0 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: fd9212950d34d2ecad8c990dda0d8ea59a8a554b0c188b53ea5d6c4a0829a64f2e1d49e6e85e812014933d17426d7136da4785f9cf76fff1799de51b88bc85d3 + languageName: node + linkType: hard + "jest-validate@npm:^26.5.2": version: 26.6.2 resolution: "jest-validate@npm:26.6.2" @@ -22489,33 +22777,33 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"jest-validate@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-validate@npm:29.0.1" +"jest-validate@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-validate@npm:29.5.0" dependencies: - "@jest/types": ^29.0.1 + "@jest/types": ^29.5.0 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^29.0.0 + jest-get-type: ^29.4.3 leven: ^3.1.0 - pretty-format: ^29.0.1 - checksum: a78523cc57ee26d5a4eec8a1b185dc63dc954172560b44321c979836ba7f699ba20d282359ac54b1c57811b87a626aae362b687ff8ff3d22f3e73b65dbbd57b4 + pretty-format: ^29.5.0 + checksum: 43ca5df7cb75572a254ac3e92fbbe7be6b6a1be898cc1e887a45d55ea003f7a112717d814a674d37f9f18f52d8de40873c8f084f17664ae562736c78dd44c6a1 languageName: node linkType: hard -"jest-watcher@npm:^29.0.1": - version: 29.0.1 - resolution: "jest-watcher@npm:29.0.1" +"jest-watcher@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-watcher@npm:29.5.0" dependencies: - "@jest/test-result": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/test-result": ^29.5.0 + "@jest/types": ^29.5.0 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - emittery: ^0.10.2 - jest-util: ^29.0.1 + emittery: ^0.13.1 + jest-util: ^29.5.0 string-length: ^4.0.1 - checksum: e5e188d35db7253813600fb7b229738e4fe306f1afdf74bfe66b0c4db111fdea70fa1b2d078443119558fd8f84677a78bd1fd65367ff88f263773a24d49e277c + checksum: 62303ac7bdc7e61a8b4239a239d018f7527739da2b2be6a81a7be25b74ca769f1c43ee8558ce8e72bb857245c46d6e03af331227ffb00a57280abb2a928aa776 languageName: node linkType: hard @@ -22552,14 +22840,26 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"jest-worker@npm:^29.5.0": + version: 29.5.0 + resolution: "jest-worker@npm:29.5.0" + dependencies: + "@types/node": "*" + jest-util: ^29.5.0 + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 1151a1ae3602b1ea7c42a8f1efe2b5a7bf927039deaa0827bf978880169899b705744e288f80a63603fb3fc2985e0071234986af7dc2c21c7a64333d8777c7c9 + languageName: node + linkType: hard + "jest@npm:^29.0.0": - version: 29.0.1 - resolution: "jest@npm:29.0.1" + version: 29.5.0 + resolution: "jest@npm:29.5.0" dependencies: - "@jest/core": ^29.0.1 - "@jest/types": ^29.0.1 + "@jest/core": ^29.5.0 + "@jest/types": ^29.5.0 import-local: ^3.0.2 - jest-cli: ^29.0.1 + jest-cli: ^29.5.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -22567,7 +22867,7 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: optional: true bin: jest: bin/jest.js - checksum: a2ece945c4477099df84dfc084a790b26050f609af6cb92ad7a0fd7faa66200d04a2360c223d14274f57d375c9a7768487f2be7add8590509d8844408b7b009a + checksum: a8ff2eb0f421623412236e23cbe67c638127fffde466cba9606bc0c0553b4c1e5cb116d7e0ef990b5d1712851652c8ee461373b578df50857fe635b94ff455d5 languageName: node linkType: hard @@ -22808,7 +23108,7 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"json-buffer@npm:3.0.1, json-buffer@npm:~3.0.1": +"json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 @@ -23170,13 +23470,12 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"keyv@npm:^4.0.0": - version: 4.4.1 - resolution: "keyv@npm:4.4.1" +"keyv@npm:^4.5.2": + version: 4.5.2 + resolution: "keyv@npm:4.5.2" dependencies: - compress-brotli: ^1.3.8 json-buffer: 3.0.1 - checksum: efce046d161381121b727e9d753deeaad4ce06a98db6d68442cf1542a3731a46f461d0834fa1937c6ce7b27c807fe7892d4de3074440f4d3dff01ac4c7b32692 + checksum: 13ad58303acd2261c0d4831b4658451603fd159e61daea2121fcb15feb623e75ee328cded0572da9ca76b7b3ceaf8e614f1806c6b3af5db73c9c35a345259651 languageName: node linkType: hard @@ -24111,10 +24410,10 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"lowercase-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "lowercase-keys@npm:2.0.0" - checksum: 24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac23 +"lowercase-keys@npm:^3.0.0": + version: 3.0.0 + resolution: "lowercase-keys@npm:3.0.0" + checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 languageName: node linkType: hard @@ -25650,13 +25949,6 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"mimic-response@npm:^1.0.0": - version: 1.0.1 - resolution: "mimic-response@npm:1.0.1" - checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 - languageName: node - linkType: hard - "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" @@ -25664,6 +25956,13 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"mimic-response@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-response@npm:4.0.0" + checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 + languageName: node + linkType: hard + "min-document@npm:^2.19.0": version: 2.19.0 resolution: "min-document@npm:2.19.0" @@ -26752,6 +27051,13 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"normalize-url@npm:^8.0.0": + version: 8.0.0 + resolution: "normalize-url@npm:8.0.0" + checksum: 24c20b75ebfd526d8453084692720b49d111c63c0911f1b7447427829597841eef5a8ba3f6bb93d6654007b991c1f5cd85da2c907800e439e2e2ec6c2abd0fc0 + languageName: node + linkType: hard + "npm-bundled@npm:^1.1.1": version: 1.1.2 resolution: "npm-bundled@npm:1.1.2" @@ -27520,10 +27826,10 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"p-cancelable@npm:^2.0.0": - version: 2.1.1 - resolution: "p-cancelable@npm:2.1.1" - checksum: 3dba12b4fb4a1e3e34524535c7858fc82381bbbd0f247cc32dedc4018592a3950ce66b106d0880b4ec4c2d8d6576f98ca885dc1d7d0f274d1370be20e9523ddf +"p-cancelable@npm:^3.0.0": + version: 3.0.0 + resolution: "p-cancelable@npm:3.0.0" + checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 languageName: node linkType: hard @@ -29651,6 +29957,17 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"pretty-format@npm:^29.5.0": + version: 29.5.0 + resolution: "pretty-format@npm:29.5.0" + dependencies: + "@jest/schemas": ^29.4.3 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 4065356b558e6db25b4d41a01efb386935a6c06a0c9c104ef5ce59f2f476b8210edb8b3949b386e60ada0a6dc5ebcb2e6ccddc8c64dfd1a9943c3c3a9e7eaf89 + languageName: node + linkType: hard + "pretty-format@npm:^3.8.0": version: 3.8.0 resolution: "pretty-format@npm:3.8.0" @@ -29964,6 +30281,13 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard +"pure-rand@npm:^6.0.0": + version: 6.0.1 + resolution: "pure-rand@npm:6.0.1" + checksum: 4bb565399993b815658a72e359f574ce4f04827a42a905105d61163ae86f456d91595a0e4241e7bce04328fae0638ae70ac0428d93ecb55971c465bd084f8648 + languageName: node + linkType: hard + "q@npm:^1.0.1, q@npm:^1.5.1": version: 1.5.1 resolution: "q@npm:1.5.1" @@ -31427,7 +31751,7 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"resolve-alpn@npm:^1.0.0": +"resolve-alpn@npm:^1.2.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 @@ -31484,10 +31808,10 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"resolve.exports@npm:^1.1.0": - version: 1.1.0 - resolution: "resolve.exports@npm:1.1.0" - checksum: 52865af8edb088f6c7759a328584a5de6b226754f004b742523adcfe398cfbc4559515104bc2ae87b8e78b1e4de46c9baec400b3fb1f7d517b86d2d48a098a2d +"resolve.exports@npm:^2.0.0": + version: 2.0.1 + resolution: "resolve.exports@npm:2.0.1" + checksum: 03be177026b4fe8dc1b2ffb421bce9cbf7fe3446e9f0c958df9fc8e144864b3eeea19fe788e057fd8be6b5655e65ce245b4f379258c1336e2e8f9205cbd4a9b4 languageName: node linkType: hard @@ -31567,12 +31891,12 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"responselike@npm:^2.0.0": - version: 2.0.1 - resolution: "responselike@npm:2.0.1" +"responselike@npm:^3.0.0": + version: 3.0.0 + resolution: "responselike@npm:3.0.0" dependencies: - lowercase-keys: ^2.0.0 - checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a + lowercase-keys: ^3.0.0 + checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e languageName: node linkType: hard @@ -34610,16 +34934,6 @@ hexo-filter-github-emojis@arturi/hexo-filter-github-emojis: languageName: node linkType: hard -"terminal-link@npm:^2.0.0": - version: 2.1.1 - resolution: "terminal-link@npm:2.1.1" - dependencies: - ansi-escapes: ^4.2.1 - supports-hyperlinks: ^2.0.0 - checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f - languageName: node - linkType: hard - "terser-webpack-plugin@npm:^1.4.3": version: 1.4.5 resolution: "terser-webpack-plugin@npm:1.4.5"