From 10f4f56654d27df0d0f9a30f371a6ae15ca35539 Mon Sep 17 00:00:00 2001 From: Jake Meyer Date: Sat, 16 Jan 2021 15:06:22 -0600 Subject: [PATCH] pass api url into jobs from env --- .nvmrc | 2 +- LICENSE | 2 +- jobs/capsules.js | 10 +++++----- jobs/cores.js | 22 +++++++++++----------- jobs/landpads.js | 10 +++++----- jobs/launches.js | 32 ++++++++++++++++---------------- jobs/launchpads.js | 10 +++++----- jobs/payloads.js | 6 +++--- jobs/roadster.js | 6 +++--- jobs/starlink.js | 6 +++--- jobs/upcoming.js | 8 ++++---- jobs/webcast.js | 8 ++++---- middleware/logger.js | 4 +++- package-lock.json | 12 +++++++++--- 14 files changed, 73 insertions(+), 65 deletions(-) diff --git a/.nvmrc b/.nvmrc index 2054e837..9f6d8f2f 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -15.2.1 +15.6.0 diff --git a/LICENSE b/LICENSE index 5fa3d1ee..bbdeed0c 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2017-2020 Jake Meyer + Copyright 2017-2021 Jake Meyer Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/jobs/capsules.js b/jobs/capsules.js index 53ba920b..1469db03 100644 --- a/jobs/capsules.js +++ b/jobs/capsules.js @@ -1,7 +1,7 @@ const got = require('got'); const { logger } = require('../middleware/logger'); -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.CAPSULES_HEALTHCHECK; @@ -11,7 +11,7 @@ const HEALTHCHECK = process.env.CAPSULES_HEALTHCHECK; */ module.exports = async () => { try { - const capsules = await got.post(`${SPACEX_API}/capsules/query`, { + const capsules = await got.post(`${API}/capsules/query`, { json: { options: { pagination: false, @@ -22,7 +22,7 @@ module.exports = async () => { }); const updates = capsules.docs.map(async (capsule) => { - const waterLandings = await got.post(`${SPACEX_API}/payloads/query`, { + const waterLandings = await got.post(`${API}/payloads/query`, { json: { query: { 'dragon.capsule': capsule.id, @@ -36,7 +36,7 @@ module.exports = async () => { responseType: 'json', }); - const landLandings = await got.post(`${SPACEX_API}/payloads/query`, { + const landLandings = await got.post(`${API}/payloads/query`, { json: { query: { 'dragon.capsule': capsule.id, @@ -50,7 +50,7 @@ module.exports = async () => { responseType: 'json', }); - await got.patch(`${SPACEX_API}/capsules/${capsule.id}`, { + await got.patch(`${API}/capsules/${capsule.id}`, { json: { reuse_count: capsule.launches.length, water_landings: waterLandings.totalDocs, diff --git a/jobs/cores.js b/jobs/cores.js index bd966fe8..168978bc 100644 --- a/jobs/cores.js +++ b/jobs/cores.js @@ -3,7 +3,7 @@ const cheerio = require('cheerio'); const { logger } = require('../middleware/logger'); const REDDIT_CORES = 'https://old.reddit.com/r/spacex/wiki/cores'; -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.CORES_HEALTHCHECK; @@ -13,7 +13,7 @@ const HEALTHCHECK = process.env.CORES_HEALTHCHECK; */ module.exports = async () => { try { - const cores = await got.post(`${SPACEX_API}/cores/query`, { + const cores = await got.post(`${API}/cores/query`, { json: { options: { pagination: false, @@ -36,7 +36,7 @@ module.exports = async () => { const activeUpdates = activeCores.map(async (coreSerial, index) => { const coreId = cores.docs.find((core) => core.serial === coreSerial); if (coreId && coreId.id) { - await got.patch(`${SPACEX_API}/cores/${coreId.id}`, { + await got.patch(`${API}/cores/${coreId.id}`, { json: { last_update: activeStatus[parseInt(index, 10)], status: 'active', @@ -60,7 +60,7 @@ module.exports = async () => { const unknownUpdates = unknownCores.map(async (coreSerial, index) => { const coreId = cores.docs.find((core) => core.serial === coreSerial); if (coreId && coreId.id) { - await got.patch(`${SPACEX_API}/cores/${coreId.id}`, { + await got.patch(`${API}/cores/${coreId.id}`, { json: { last_update: unknownStatus[parseInt(index, 10)], status: 'unknown', @@ -84,7 +84,7 @@ module.exports = async () => { const inactiveUpdates = inactiveCores.map(async (coreSerial, index) => { const coreId = cores.docs.find((core) => core.serial === coreSerial); if (coreId?.id) { - await got.patch(`${SPACEX_API}/cores/${coreId.id}`, { + await got.patch(`${API}/cores/${coreId.id}`, { json: { last_update: inactiveStatus[parseInt(index, 10)], status: 'inactive', @@ -114,7 +114,7 @@ module.exports = async () => { } else { status = 'lost'; } - await got.patch(`${SPACEX_API}/cores/${coreId.id}`, { + await got.patch(`${API}/cores/${coreId.id}`, { json: { last_update: lostStatus[parseInt(index, 10)], status, @@ -131,7 +131,7 @@ module.exports = async () => { const reuseUpdates = cores.docs.map(async (core) => { if (!core?.id) return; const [rtlsAttempts, rtlsLandings, asdsAttempts, asdsLandings] = await Promise.all([ - got.post(`${SPACEX_API}/launches/query`, { + got.post(`${API}/launches/query`, { json: { query: { upcoming: false, @@ -151,7 +151,7 @@ module.exports = async () => { responseType: 'json', throwHttpErrors: false, }), - got.post(`${SPACEX_API}/launches/query`, { + got.post(`${API}/launches/query`, { json: { query: { upcoming: false, @@ -172,7 +172,7 @@ module.exports = async () => { responseType: 'json', throwHttpErrors: false, }), - got.post(`${SPACEX_API}/launches/query`, { + got.post(`${API}/launches/query`, { json: { query: { upcoming: false, @@ -193,7 +193,7 @@ module.exports = async () => { responseType: 'json', throwHttpErrors: false, }), - got.post(`${SPACEX_API}/launches/query`, { + got.post(`${API}/launches/query`, { json: { query: { upcoming: false, @@ -215,7 +215,7 @@ module.exports = async () => { throwHttpErrors: false, }), ]); - await got.patch(`${SPACEX_API}/cores/${core.id}`, { + await got.patch(`${API}/cores/${core.id}`, { json: { reuse_count: (core.launches.length > 0) ? core.launches.length - 1 : 0, rtls_attempts: rtlsAttempts.totalDocs, diff --git a/jobs/landpads.js b/jobs/landpads.js index 64fa1415..92687458 100644 --- a/jobs/landpads.js +++ b/jobs/landpads.js @@ -1,7 +1,7 @@ const got = require('got'); const { logger } = require('../middleware/logger'); -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.LANDPADS_HEALTHCHECK; @@ -11,7 +11,7 @@ const HEALTHCHECK = process.env.LANDPADS_HEALTHCHECK; */ module.exports = async () => { try { - const landpads = await got.post(`${SPACEX_API}/landpads/query`, { + const landpads = await got.post(`${API}/landpads/query`, { json: { options: { pagination: false, @@ -23,7 +23,7 @@ module.exports = async () => { const updates = landpads.docs.map(async (landpad) => { const [attempts, successes] = await Promise.all([ - got.post(`${SPACEX_API}/launches/query`, { + got.post(`${API}/launches/query`, { json: { query: { cores: { @@ -42,7 +42,7 @@ module.exports = async () => { resolveBodyOnly: true, responseType: 'json', }), - got.post(`${SPACEX_API}/launches/query`, { + got.post(`${API}/launches/query`, { json: { query: { cores: { @@ -64,7 +64,7 @@ module.exports = async () => { }), ]); - await got.patch(`${SPACEX_API}/landpads/${landpad.id}`, { + await got.patch(`${API}/landpads/${landpad.id}`, { json: { landing_attempts: attempts.totalDocs, landing_successes: successes.totalDocs, diff --git a/jobs/launches.js b/jobs/launches.js index 7e764997..8267bdf4 100644 --- a/jobs/launches.js +++ b/jobs/launches.js @@ -2,7 +2,7 @@ const _ = require('lodash'); const got = require('got'); const { logger } = require('../middleware/logger'); -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.LAUNCHES_HEALTHCHECK; @@ -12,7 +12,7 @@ const HEALTHCHECK = process.env.LAUNCHES_HEALTHCHECK; */ module.exports = async () => { try { - const launches = await got.post(`${SPACEX_API}/launches/query`, { + const launches = await got.post(`${API}/launches/query`, { json: { query: { upcoming: false, @@ -39,7 +39,7 @@ module.exports = async () => { }; // Update capsule launches - const capsules = await got.post(`${SPACEX_API}/capsules/query`, { + const capsules = await got.post(`${API}/capsules/query`, { json: { options: { pagination: false, @@ -54,7 +54,7 @@ module.exports = async () => { .filter((launch) => launch.capsules.includes(capsule.id)) .map(({ id }) => id); - await got.patch(`${SPACEX_API}/capsules/${capsule.id}`, { + await got.patch(`${API}/capsules/${capsule.id}`, { json: { launches: launchIds, }, @@ -67,7 +67,7 @@ module.exports = async () => { await Promise.all(capsuleLaunches); // Update core launches - const cores = await got.post(`${SPACEX_API}/cores/query`, { + const cores = await got.post(`${API}/cores/query`, { json: { options: { pagination: false, @@ -82,7 +82,7 @@ module.exports = async () => { .filter((launch) => launch.cores.find((c) => c.core === core.id)) .map(({ id }) => id); - await got.patch(`${SPACEX_API}/cores/${core.id}`, { + await got.patch(`${API}/cores/${core.id}`, { json: { launches: launchIds, }, @@ -95,7 +95,7 @@ module.exports = async () => { await Promise.all(coreLaunches); // Update crew launches - const crewMembers = await got.post(`${SPACEX_API}/crew/query`, { + const crewMembers = await got.post(`${API}/crew/query`, { json: { options: { pagination: false, @@ -110,7 +110,7 @@ module.exports = async () => { .filter((launch) => launch.crew.includes(crew.id)) .map(({ id }) => id); - await got.patch(`${SPACEX_API}/crew/${crew.id}`, { + await got.patch(`${API}/crew/${crew.id}`, { json: { launches: launchIds, }, @@ -123,7 +123,7 @@ module.exports = async () => { await Promise.all(crewLaunches); // Update landpad launches - const landpads = await got.post(`${SPACEX_API}/landpads/query`, { + const landpads = await got.post(`${API}/landpads/query`, { json: { options: { pagination: false, @@ -138,7 +138,7 @@ module.exports = async () => { .filter((launch) => launch.cores.find((c) => c.landpad === landpad.id)) .map(({ id }) => id); - await got.patch(`${SPACEX_API}/landpads/${landpad.id}`, { + await got.patch(`${API}/landpads/${landpad.id}`, { json: { launches: launchIds, }, @@ -151,7 +151,7 @@ module.exports = async () => { await Promise.all(landpadLaunches); // Update launchpad launches - const launchpads = await got.post(`${SPACEX_API}/launchpads/query`, { + const launchpads = await got.post(`${API}/launchpads/query`, { json: { options: { pagination: false, @@ -166,7 +166,7 @@ module.exports = async () => { .filter((launch) => launch.launchpad === launchpad.id) .map(({ id }) => id); - await got.patch(`${SPACEX_API}/launchpads/${launchpad.id}`, { + await got.patch(`${API}/launchpads/${launchpad.id}`, { json: { launches: launchIds, }, @@ -179,7 +179,7 @@ module.exports = async () => { await Promise.all(launchpadLaunches); // Update payload launches - const payloads = await got.post(`${SPACEX_API}/payloads/query`, { + const payloads = await got.post(`${API}/payloads/query`, { json: { options: { pagination: false, @@ -192,7 +192,7 @@ module.exports = async () => { const payloadLaunches = payloads.docs.map(async (payload) => { const launchId = _.find(launches.docs, (launch) => launch.payloads.includes(payload.id)); if (launchId?.id) { - await got.patch(`${SPACEX_API}/payloads/${payload.id}`, { + await got.patch(`${API}/payloads/${payload.id}`, { json: { launch: launchId.id, }, @@ -206,7 +206,7 @@ module.exports = async () => { await Promise.all(payloadLaunches); // Update ship launches - const ships = await got.post(`${SPACEX_API}/ships/query`, { + const ships = await got.post(`${API}/ships/query`, { json: { options: { pagination: false, @@ -221,7 +221,7 @@ module.exports = async () => { .filter((launch) => launch.ships.includes(ship.id)) .map(({ id }) => id); - await got.patch(`${SPACEX_API}/ships/${ship.id}`, { + await got.patch(`${API}/ships/${ship.id}`, { json: { launches: launchIds, }, diff --git a/jobs/launchpads.js b/jobs/launchpads.js index 11ef2051..a6b2347b 100644 --- a/jobs/launchpads.js +++ b/jobs/launchpads.js @@ -1,7 +1,7 @@ const got = require('got'); const { logger } = require('../middleware/logger'); -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.LAUNCHPADS_HEALTHCHECK; @@ -11,7 +11,7 @@ const HEALTHCHECK = process.env.LAUNCHPADS_HEALTHCHECK; */ module.exports = async () => { try { - const launchpads = await got.post(`${SPACEX_API}/launchpads/query`, { + const launchpads = await got.post(`${API}/launchpads/query`, { json: { options: { pagination: false, @@ -23,7 +23,7 @@ module.exports = async () => { const updates = launchpads.docs.map(async (launchpad) => { const [attempts, successes] = await Promise.all([ - got.post(`${SPACEX_API}/launches/query`, { + got.post(`${API}/launches/query`, { json: { query: { launchpad: launchpad.id, @@ -36,7 +36,7 @@ module.exports = async () => { resolveBodyOnly: true, responseType: 'json', }), - got.post(`${SPACEX_API}/launches/query`, { + got.post(`${API}/launches/query`, { json: { query: { launchpad: launchpad.id, @@ -52,7 +52,7 @@ module.exports = async () => { }), ]); - await got.patch(`${SPACEX_API}/launchpads/${launchpad.id}`, { + await got.patch(`${API}/launchpads/${launchpad.id}`, { json: { launch_attempts: attempts.totalDocs, launch_successes: successes.totalDocs, diff --git a/jobs/payloads.js b/jobs/payloads.js index 4c02e680..036ad47b 100644 --- a/jobs/payloads.js +++ b/jobs/payloads.js @@ -2,7 +2,7 @@ const got = require('got'); const { CookieJar } = require('tough-cookie'); const { logger } = require('../middleware/logger'); -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.PAYLOADS_HEALTHCHECK; @@ -14,7 +14,7 @@ module.exports = async () => { try { const cookieJar = new CookieJar(); const [payloads] = await Promise.all([ - got.post(`${SPACEX_API}/payloads/query`, { + got.post(`${API}/payloads/query`, { json: { query: {}, options: { @@ -44,7 +44,7 @@ module.exports = async () => { const noradId = payload.norad_ids.shift() || null; const specificOrbit = data.find((sat) => parseInt(sat.NORAD_CAT_ID, 10) === noradId); if (specificOrbit) { - await got.patch(`${SPACEX_API}/payloads/${payload.id}`, { + await got.patch(`${API}/payloads/${payload.id}`, { json: { epoch: new Date(Date.parse(specificOrbit.EPOCH)).toISOString(), mean_motion: parseFloat(specificOrbit.MEAN_MOTION), diff --git a/jobs/roadster.js b/jobs/roadster.js index 21f4d718..eadf9b33 100644 --- a/jobs/roadster.js +++ b/jobs/roadster.js @@ -2,7 +2,7 @@ const got = require('got'); const moment = require('moment-timezone'); const { logger } = require('../middleware/logger'); -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.ROADSTER_HEALTHCHECK; @@ -165,12 +165,12 @@ module.exports = async () => { const orbitalSpeedKph = (parseFloat(speedResult.trim()) * 60.0 * 60.0); const orbitalSpeedMph = orbitalSpeedKph * 0.621371; - const roadster = await got(`${SPACEX_API}/roadster`, { + const roadster = await got(`${API}/roadster`, { resolveBodyOnly: true, responseType: 'json', }); - await got.patch(`${SPACEX_API}/roadster/${roadster.id}`, { + await got.patch(`${API}/roadster/${roadster.id}`, { json: { epoch_jd: epoch, apoapsis_au: aad, diff --git a/jobs/starlink.js b/jobs/starlink.js index 94e38932..aa155d31 100644 --- a/jobs/starlink.js +++ b/jobs/starlink.js @@ -5,7 +5,7 @@ const MomentRange = require('moment-range'); const { getSatelliteInfo } = require('tle.js/dist/tlejs.cjs'); const { logger } = require('../middleware/logger'); -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.STARLINK_HEALTHCHECK; const moment = MomentRange.extendMoment(Moment); @@ -61,7 +61,7 @@ module.exports = async () => { const date = moment.utc(sat.LAUNCH_DATE, 'YYYY-MM-DD'); const range = date.range('day'); - const launches = await got.post(`${SPACEX_API}/launches/query`, { + const launches = await got.post(`${API}/launches/query`, { json: { query: { date_utc: { @@ -87,7 +87,7 @@ module.exports = async () => { } } - await got.patch(`${SPACEX_API}/starlink/${sat.NORAD_CAT_ID}`, { + await got.patch(`${API}/starlink/${sat.NORAD_CAT_ID}`, { json: { version: starlinkVersion(launches?.docs[0]?.date_utc || null), launch: launches?.docs[0]?.id || null, diff --git a/jobs/upcoming.js b/jobs/upcoming.js index a08481fd..5ac75a06 100644 --- a/jobs/upcoming.js +++ b/jobs/upcoming.js @@ -8,7 +8,7 @@ const moment = require('moment-timezone'); const { logger } = require('../middleware/logger'); const REDDIT_WIKI = 'https://old.reddit.com/r/spacex/wiki/launches/manifest'; -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const KEY = process.env.SPACEX_KEY; const HEALTHCHECK = process.env.UPCOMING_HEALTHCHECK; @@ -22,7 +22,7 @@ const HEALTHCHECK = process.env.UPCOMING_HEALTHCHECK; module.exports = async () => { try { const flightNumbers = []; - const rawLaunches = await got.post(`${SPACEX_API}/launches/query`, { + const rawLaunches = await got.post(`${API}/launches/query`, { json: { options: { pagination: false, @@ -189,7 +189,7 @@ module.exports = async () => { } else { throw new Error(`No launchpad match: ${launchpad}`); } - const launchpads = await got.post(`${SPACEX_API}/launchpads/query`, { + const launchpads = await got.post(`${API}/launchpads/query`, { json: { query: { name: queryName, @@ -226,7 +226,7 @@ module.exports = async () => { ...rawUpdate, }); - await got.patch(`${SPACEX_API}/launches/${launch.id}`, { + await got.patch(`${API}/launches/${launch.id}`, { json: { ...rawUpdate, }, diff --git a/jobs/webcast.js b/jobs/webcast.js index 171612f1..6dbe53ae 100644 --- a/jobs/webcast.js +++ b/jobs/webcast.js @@ -3,7 +3,7 @@ const fuzz = require('fuzzball'); const { logger } = require('../middleware/logger'); const YOUTUBE_PREFIX = 'https://youtu.be'; -const SPACEX_API = 'https://api.spacexdata.com/v4'; +const API = process.env.SPACEX_API; const CHANNEL_ID = 'UCtI0Hodo5o5dUb67FeUjDeA'; const { SPACEX_KEY, @@ -25,7 +25,7 @@ module.exports = async () => { }); if (upcomingStreams?.items?.length === 1) { - const launches = await got.post(`${SPACEX_API}/launches/query`, { + const launches = await got.post(`${API}/launches/query`, { json: { query: { upcoming: true, @@ -48,7 +48,7 @@ module.exports = async () => { // Fuzzy check video title to make sure it's at least related to the launch const ratio = fuzz.ratio(youtubeTitle, missionName); if (ratio >= 50) { - const pastLaunches = await got.post(`${SPACEX_API}/launches/query`, { + const pastLaunches = await got.post(`${API}/launches/query`, { json: { query: { upcoming: false, @@ -65,7 +65,7 @@ module.exports = async () => { }); const pastYoutubeId = pastLaunches.docs[0].links.youtube_id; if (youtubeId !== pastYoutubeId) { - await got.patch(`${SPACEX_API}/launches/${launchId}`, { + await got.patch(`${API}/launches/${launchId}`, { json: { 'links.webcast': `${YOUTUBE_PREFIX}/${youtubeId}`, 'links.youtube_id': youtubeId, diff --git a/middleware/logger.js b/middleware/logger.js index e1d9a2fa..0a4dfec2 100644 --- a/middleware/logger.js +++ b/middleware/logger.js @@ -5,10 +5,12 @@ const devOpts = { prettyPrint: true, }; +const env = process.env.NODE_ENV; + let requestLog; let logger; -if (process.env.NODE_ENV === 'production') { +if (env === 'production' || env === 'stage') { requestLog = koaPino(); logger = pino(); } else { diff --git a/package-lock.json b/package-lock.json index 7c47456f..a571c834 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3349,7 +3349,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true + "dev": true, + "optional": true }, "har-schema": { "version": "2.0.0", @@ -3926,6 +3927,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "optional": true, "requires": { "is-docker": "^2.0.0" } @@ -5333,6 +5335,7 @@ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz", "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==", "dev": true, + "optional": true, "requires": { "growly": "^1.3.0", "is-wsl": "^2.2.0", @@ -5347,6 +5350,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, + "optional": true, "requires": { "lru-cache": "^6.0.0" } @@ -6447,7 +6451,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true + "dev": true, + "optional": true }, "sift": { "version": "7.0.1", @@ -7357,7 +7362,8 @@ "version": "8.3.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", - "dev": true + "dev": true, + "optional": true }, "v8-compile-cache": { "version": "2.2.0",