diff --git a/.eslintrc.js b/.eslintrc.js index d3283b9..4d491fb 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,8 +9,25 @@ module.exports = { }, 'import/external-module-folders': ['node_modules'], }, - parser: '@typescript-eslint/parser', plugins: ['prettier', '@typescript-eslint', '@atlaskit/design-system'], + overrides: [ + { + files: ['**/*.ts', '**/*.tsx'], + parser: '@typescript-eslint/parser', + parserOptions: { + project: ['./tsconfig.json', './ui/tsconfig.json'], + }, + rules: { + '@typescript-eslint/no-misused-promises': [ + 'error', + { + checksVoidReturn: false, + }, + ], + '@typescript-eslint/no-floating-promises': 'error', + }, + }, + ], rules: { 'max-len': [ 'warn', diff --git a/manifest.yml b/manifest.yml index 1ab4077..b031482 100644 --- a/manifest.yml +++ b/manifest.yml @@ -48,7 +48,7 @@ modules: - key: process-gitlab-event handler: index.processGitlabEvent - key: import-projects - handler: resolvers/import-queue-resolver.run + handler: index.importQueueResolver - key: pre-uninstall handler: index.preUninstall - key: data-provider-fn @@ -65,6 +65,8 @@ modules: method: import app: id: ari:cloud:ecosystem::app/fe7b0913-7421-4c84-b401-041eaab2ef2e + runtime: + name: nodejs18.x features: autoUserConsent: true resources: diff --git a/package.json b/package.json index 439eb84..969b399 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "private": true, "devDependencies": { "@atlaskit/eslint-plugin-design-system": "^8.7.0", - "@forge/cli": "^6.21.0", + "@forge/cli": "^10.5.0", "@types/jest": "^27.4.1", "@types/js-yaml": "^4.0.5", "@types/lodash": "^4.14.182", @@ -35,18 +35,16 @@ "typescript": "~4.5.5" }, "dependencies": { - "@atlaskit/tokens": "^1.29.1", - "@atlassian/forge-graphql": "13.9.2", - "@forge/api": "^2.8.1", - "@forge/bridge": "^2.6.0", - "@forge/events": "^0.5.3", - "@forge/metrics": "^0.1.1", - "@forge/resolver": "^1.4.6", + "@atlassian/forge-graphql": "13.12.1", + "@forge/api": "^3.9.1", + "@forge/bridge": "^3.5.0", + "@forge/events": "^0.9.1", + "@forge/resolver": "^1.5.39", + "@forge/metrics": "0.2.18", "@forge/ui": "^1.1.0", "exponential-backoff": "^3.1.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21", - "react-router-dom": "^6.3.0", "url-parse": "^1.5.10" }, "scripts": { diff --git a/src/client/gitlab.ts b/src/client/gitlab.ts index 01a4c16..813c9e8 100644 --- a/src/client/gitlab.ts +++ b/src/client/gitlab.ts @@ -75,6 +75,7 @@ export const callGitlab = async ( headers: { 'PRIVATE-TOKEN': authToken, Accept: config?.contentType || GitLabContentType.JSON, + 'Content-Type': config?.contentType || GitLabContentType.JSON, }, body, }); diff --git a/src/entry/config-validator/index.ts b/src/entry/config-validator/index.ts index 5242000..8ded200 100644 --- a/src/entry/config-validator/index.ts +++ b/src/entry/config-validator/index.ts @@ -3,9 +3,16 @@ import { ConfigValidatorResult, ConfigValidatorResponse } from '@atlassian/forge import { getConnectedGroups } from '../../services/group'; export const configValidator = async (): Promise => { - const connectedGroups = await getConnectedGroups(); - const appConfigured = connectedGroups && connectedGroups.length > 0; + try { + const connectedGroups = await getConnectedGroups(); + const appConfigured = connectedGroups && connectedGroups.length > 0; - const response = new ConfigValidatorResponse(appConfigured); - return response.build(); + const response = new ConfigValidatorResponse(appConfigured); + return response.build(); + } catch (e) { + console.error('Could not determine installation state when invoking config validator'); + const response = new ConfigValidatorResponse(false); + response.error = 'Could not determine installation state'; + return response.build(); + } }; diff --git a/src/entry/data-provider/index.ts b/src/entry/data-provider/index.ts index 7afa1e6..cfcfe73 100644 --- a/src/entry/data-provider/index.ts +++ b/src/entry/data-provider/index.ts @@ -17,17 +17,34 @@ import { GitlabHttpMethodError } from '../../models/errors'; export const dataProvider = async ( request: DataProviderPayload, ): Promise => { - const { - project: { id: projectId, default_branch: defaultBranch, name: projectName }, - groupToken, - } = await getProjectDataFromUrl(request.url); + let projectId: number; + let defaultBranch: string; + let projectName: string; + let groupToken: string; + let trackingBranch: string; + + try { + ({ + project: { id: projectId, default_branch: defaultBranch, name: projectName }, + groupToken, + } = await getProjectDataFromUrl(request.url)); + } catch (e) { + console.error(`Error while getting project data from URL in dataProvider ${e}`); + return null; + } if (!projectId) { console.warn('Cannot get GitLab project data by provided link.'); return null; } - const trackingBranch = await getTrackingBranchName(groupToken, projectId, defaultBranch); + try { + trackingBranch = await getTrackingBranchName(groupToken, projectId, defaultBranch); + } catch (e) { + console.error(`Error while getting tracking branch name in dataProvider ${e}`); + + return null; + } const backfillData: BackfillData = { builds: [], diff --git a/src/entry/extension-points/pre-uninstall.ts b/src/entry/extension-points/pre-uninstall.ts index 34afcf0..8e4e7e2 100644 --- a/src/entry/extension-points/pre-uninstall.ts +++ b/src/entry/extension-points/pre-uninstall.ts @@ -1,3 +1,4 @@ +import { getFormattedErrors, hasRejections } from '../../utils/promise-allsettled-helpers'; import { disconnectGroup } from '../../services/disconnect-group'; import { getForgeAppId } from '../../utils/get-forge-app-id'; import { getGroupIds } from '../../utils/storage-utils'; @@ -14,10 +15,14 @@ export default async function preUninstall(payload: PreUninstallPayload): Promis console.log(`Performing preUninstall for site ${cloudId}`); const forgeAppId = getForgeAppId(); - const groupIds = await getGroupIds(); try { - await Promise.all(groupIds.map((groupId) => disconnectGroup(groupId, cloudId, forgeAppId))); + const groupIds = await getGroupIds(); + + const results = await Promise.allSettled(groupIds.map((groupId) => disconnectGroup(groupId, cloudId, forgeAppId))); + if (hasRejections(results)) { + throw new Error(`Error while disconnecting groups: ${getFormattedErrors(results)}`); + } } catch (e) { console.error({ message: 'Error performing preUninstall', error: e }); } diff --git a/src/entry/webtriggers/gitlab-event-handlers/handle-deployment-event.test.ts b/src/entry/webtriggers/gitlab-event-handlers/handle-deployment-event.test.ts index 071f2d4..8da7b6d 100644 --- a/src/entry/webtriggers/gitlab-event-handlers/handle-deployment-event.test.ts +++ b/src/entry/webtriggers/gitlab-event-handlers/handle-deployment-event.test.ts @@ -32,6 +32,8 @@ jest.mock('../../../client/gitlab'); jest.mock('../../../services/insert-metric-values'); jest.mock('../../../utils/has-deployment-after-28days'); +jest.spyOn(global.console, 'error').mockImplementation(() => ({})); + const mockedGetEnvironments = mocked(getEnvironments); const mockedGetDeployment = mocked(getDeployment); const mockedSendEventsToCompass = mocked(sendEventToCompass); @@ -40,6 +42,7 @@ const MOCK_DEPLOYMENT_EVENT = generateDeploymentEvent(); const MOCK_ENVIRONMENTS_EVENT = generateEnvironmentEvent(); const PROJECT_ID = 123; const MOCK_DATE = Date.parse('2022-01-29T01:15:42.960Z'); +const MOCK_ERROR = new Error('Unexpected Error'); const generateMockDeploymentInput = ( environment = CompassDeploymentEventEnvironmentCategory.Production, @@ -108,11 +111,26 @@ describe('GitLab deployment event', () => { mockedGetEnvironments.mockResolvedValue([MOCK_PRODUCTION_ENVIRONMENT_EVENT]); - await expect(handleDeploymentEvent(MOCK_PRD_DEPLOYMENT_EVENT, TEST_TOKEN, MOCK_CLOUD_ID)).rejects.toThrow( - 'Environment with name "prd" not found', + await handleDeploymentEvent(MOCK_PRD_DEPLOYMENT_EVENT, TEST_TOKEN, MOCK_CLOUD_ID); + + expect(console.error).toHaveBeenCalledWith( + 'Error while sending deployment event to Compass', + new Error('Environment with name "prd" not found'), ); }); + it('failed sending deployment event', async () => { + const MOCK_DEPLOYMENT_EVENT_INPUT = generateMockDeploymentInput(); + + mockedGetEnvironments.mockResolvedValue([MOCK_ENVIRONMENTS_EVENT]); + mockedGetDeployment.mockResolvedValue(MOCK_DEPLOYMENT_EVENT_INPUT); + + mockedSendEventsToCompass.mockRejectedValue(MOCK_ERROR); + + await handleDeploymentEvent(MOCK_DEPLOYMENT_EVENT, TEST_TOKEN, MOCK_CLOUD_ID); + expect(console.error).toHaveBeenCalledWith('Error while sending deployment event to Compass', MOCK_ERROR); + }); + describe('when isSendStagingEventsEnabled', () => { beforeEach(() => { jest.spyOn(featureFlagService, 'isSendStagingEventsEnabled').mockReturnValue(true); diff --git a/src/entry/webtriggers/gitlab-event-handlers/handle-deployment-event.ts b/src/entry/webtriggers/gitlab-event-handlers/handle-deployment-event.ts index 52ce5a5..4acee71 100644 --- a/src/entry/webtriggers/gitlab-event-handlers/handle-deployment-event.ts +++ b/src/entry/webtriggers/gitlab-event-handlers/handle-deployment-event.ts @@ -13,15 +13,19 @@ export const handleDeploymentEvent = async ( environment, project: { id: projectId }, } = event; - const environments = await getProjectEnvironments(projectId, groupToken); + try { + const environments = await getProjectEnvironments(projectId, groupToken); - const environmentTier = await getEnvironmentTier(environments, environment); + const environmentTier = await getEnvironmentTier(environments, environment); - if ( - environmentTier === EnvironmentTier.PRODUCTION || - (isSendStagingEventsEnabled() && environmentTier === EnvironmentTier.STAGING) - ) { - const deployment = await getDeployment(event, groupToken, environmentTier, cloudId); - await sendEventToCompass(deployment); + if ( + environmentTier === EnvironmentTier.PRODUCTION || + (isSendStagingEventsEnabled() && environmentTier === EnvironmentTier.STAGING) + ) { + const deployment = await getDeployment(event, groupToken, environmentTier, cloudId); + await sendEventToCompass(deployment); + } + } catch (e) { + console.error('Error while sending deployment event to Compass', e); } }; diff --git a/src/entry/webtriggers/gitlab-event-handlers/handle-merge-request-event.test.ts b/src/entry/webtriggers/gitlab-event-handlers/handle-merge-request-event.test.ts index 6732c55..f17455d 100644 --- a/src/entry/webtriggers/gitlab-event-handlers/handle-merge-request-event.test.ts +++ b/src/entry/webtriggers/gitlab-event-handlers/handle-merge-request-event.test.ts @@ -24,6 +24,8 @@ jest.mock('../../../services/mergeRequest', () => ({ })); jest.mock('../../../services/insert-metric-values'); +jest.spyOn(global.console, 'error').mockImplementation(() => ({})); + const mockedGetTrackingBranchName = mocked(getTrackingBranchName); const mockedGetLastMergedMergeRequests = mocked(getLastMergedMergeRequests); const mockedGetOpenMergeRequests = mocked(getOpenMergeRequests); @@ -34,6 +36,7 @@ const MOCK_METRIC_INPUT = generateMetricInput([ generateMetric(BuiltinMetricDefinitions.PULL_REQUEST_CYCLE_TIME_AVG_LAST_10), generateMetric(BuiltinMetricDefinitions.OPEN_PULL_REQUESTS, 2), ]); +const MOCK_ERROR = new Error('Unexpected Error'); describe('Gitlab merge request', () => { it('handles merge request event', async () => { @@ -45,4 +48,16 @@ describe('Gitlab merge request', () => { expect(mockedInsertMetricValues).toHaveBeenCalledWith(MOCK_METRIC_INPUT, MOCK_CLOUD_ID); }); + + it('failed inserting merge request event', async () => { + mockedGetTrackingBranchName.mockResolvedValue(MOCK_MERGE_REQUEST_EVENT.project.default_branch); + mockedGetLastMergedMergeRequests.mockResolvedValue(mergeRequests); + mockedGetOpenMergeRequests.mockResolvedValue(mergeRequests); + + mockedInsertMetricValues.mockRejectedValue(MOCK_ERROR); + + await handleMergeRequestEvent(MOCK_MERGE_REQUEST_EVENT, TEST_TOKEN, MOCK_CLOUD_ID); + + expect(console.error).toHaveBeenCalledWith('Error while inserting merge requests metric values', MOCK_ERROR); + }); }); diff --git a/src/entry/webtriggers/gitlab-event-handlers/handle-merge-request-event.ts b/src/entry/webtriggers/gitlab-event-handlers/handle-merge-request-event.ts index 4b958d9..fb73910 100644 --- a/src/entry/webtriggers/gitlab-event-handlers/handle-merge-request-event.ts +++ b/src/entry/webtriggers/gitlab-event-handlers/handle-merge-request-event.ts @@ -3,6 +3,7 @@ import { getTrackingBranchName } from '../../../services/get-tracking-branch'; import { MergeRequestEvent } from '../../../types'; import { insertMetricValues } from '../../../services/insert-metric-values'; import { getMRCycleTime, getOpenMergeRequestsCount } from '../../../services/compute-event-and-metrics'; +import { ALL_SETTLED_STATUS, getFormattedErrors } from '../../../utils/promise-allsettled-helpers'; export const handleMergeRequestEvent = async ( event: MergeRequestEvent, @@ -14,29 +15,48 @@ export const handleMergeRequestEvent = async ( project: { id, default_branch: defaultBranch }, object_attributes: { target_branch: targetBranch }, } = event; - const trackingBranch = await getTrackingBranchName(groupToken, id, defaultBranch); + try { + const trackingBranch = await getTrackingBranchName(groupToken, id, defaultBranch); - if (trackingBranch === targetBranch) { - const [cycleTime, openMergeRequestsCount] = await Promise.all([ - getMRCycleTime(groupToken, id, trackingBranch), - getOpenMergeRequestsCount(groupToken, id, trackingBranch), - ]); + if (trackingBranch === targetBranch) { + const [cycleTimeResult, openMergeRequestsCountResult] = await Promise.allSettled([ + getMRCycleTime(groupToken, id, trackingBranch), + getOpenMergeRequestsCount(groupToken, id, trackingBranch), + ]); - const metricInput = { - projectID: id.toString(), - metrics: [ - { - metricAri: BuiltinMetricDefinitions.PULL_REQUEST_CYCLE_TIME_AVG_LAST_10, - value: cycleTime, - timestamp: new Date().toISOString(), - }, - { - metricAri: BuiltinMetricDefinitions.OPEN_PULL_REQUESTS, - value: openMergeRequestsCount, - timestamp: new Date().toISOString(), - }, - ], - }; - await insertMetricValues(metricInput, cloudId); + if ( + cycleTimeResult.status === ALL_SETTLED_STATUS.REJECTED || + openMergeRequestsCountResult.status === ALL_SETTLED_STATUS.REJECTED + ) { + throw new Error( + `Failed to get merge request cycle time or open merge request count: ${getFormattedErrors([ + cycleTimeResult, + openMergeRequestsCountResult, + ])}`, + ); + } + + const cycleTime = cycleTimeResult.value; + const openMergeRequestsCount = openMergeRequestsCountResult.value; + + const metricInput = { + projectID: id.toString(), + metrics: [ + { + metricAri: BuiltinMetricDefinitions.PULL_REQUEST_CYCLE_TIME_AVG_LAST_10, + value: cycleTime, + timestamp: new Date().toISOString(), + }, + { + metricAri: BuiltinMetricDefinitions.OPEN_PULL_REQUESTS, + value: openMergeRequestsCount, + timestamp: new Date().toISOString(), + }, + ], + }; + await insertMetricValues(metricInput, cloudId); + } + } catch (e) { + console.error('Error while inserting merge requests metric values', e); } }; diff --git a/src/entry/webtriggers/gitlab-event-handlers/handle-pipeline-event.test.ts b/src/entry/webtriggers/gitlab-event-handlers/handle-pipeline-event.test.ts index ea0b4e8..f5598a8 100644 --- a/src/entry/webtriggers/gitlab-event-handlers/handle-pipeline-event.test.ts +++ b/src/entry/webtriggers/gitlab-event-handlers/handle-pipeline-event.test.ts @@ -19,6 +19,10 @@ jest.mock('../../../client/gitlab'); jest.mock('../../../services/compute-event-and-metrics'); jest.mock('../../../services/insert-metric-values'); +jest.spyOn(global.console, 'error').mockImplementation(() => ({})); + +const MOCK_ERROR = new Error('Unexpected Error'); + describe('Gitlab events', () => { const event = generatePipelineEvent(); @@ -73,4 +77,14 @@ describe('Gitlab events', () => { ); expect(insertMetricValuesMock).not.toBeCalled(); }); + + it('failed sending pipeline events', async () => { + getTrackingBranchNameMock.mockResolvedValue(event.project.default_branch); + + sendEventToCompassMock.mockRejectedValue(MOCK_ERROR); + + await handlePipelineEvent(event, TEST_TOKEN, MOCK_CLOUD_ID); + + expect(console.error).toHaveBeenCalledWith('Error while sending pipeline event to Compass', MOCK_ERROR); + }); }); diff --git a/src/entry/webtriggers/gitlab-event-handlers/handle-pipeline-event.ts b/src/entry/webtriggers/gitlab-event-handlers/handle-pipeline-event.ts index 7d6dc35..cb90c66 100644 --- a/src/entry/webtriggers/gitlab-event-handlers/handle-pipeline-event.ts +++ b/src/entry/webtriggers/gitlab-event-handlers/handle-pipeline-event.ts @@ -12,16 +12,19 @@ export const handlePipelineEvent = async (event: PipelineEvent, groupToken: stri project: { id: projectId, default_branch: defaultBranch }, object_attributes: { ref }, } = event; + try { + const trackingBranch = await getTrackingBranchName(groupToken, projectId, defaultBranch); - const trackingBranch = await getTrackingBranchName(groupToken, projectId, defaultBranch); + if (!isEventForTrackingBranch(event, trackingBranch)) { + console.log({ + message: 'Received push event for non-tracking branch. Ignoring event', + }); + return; + } - if (!isEventForTrackingBranch(event, trackingBranch)) { - console.log({ - message: 'Received push event for non-tracking branch. Ignoring event', - }); - return; + await sendEventToCompass(webhookPipelineEventToCompassBuildEvent(event, cloudId)); + console.log('Build event sent for pipeline.'); + } catch (e) { + console.error('Error while sending pipeline event to Compass', e); } - - await sendEventToCompass(webhookPipelineEventToCompassBuildEvent(event, cloudId)); - console.log('Build event sent for pipeline.'); }; diff --git a/src/entry/webtriggers/gitlab-event-handlers/handle-push-event.test.ts b/src/entry/webtriggers/gitlab-event-handlers/handle-push-event.test.ts index 7680997..932a7c8 100644 --- a/src/entry/webtriggers/gitlab-event-handlers/handle-push-event.test.ts +++ b/src/entry/webtriggers/gitlab-event-handlers/handle-push-event.test.ts @@ -12,6 +12,7 @@ import { getTrackingBranchName } from '../../../services/get-tracking-branch'; import { MOCK_CLOUD_ID, TEST_TOKEN } from '../../../__tests__/fixtures/gitlab-data'; import { ComponentSyncDetails } from '../../../types'; import { EXTERNAL_SOURCE } from '../../../constants'; +import { ALL_SETTLED_STATUS, getFormattedErrors } from '../../../utils/promise-allsettled-helpers'; jest.mock('../../../services/sync-component-with-file', () => { return { @@ -21,6 +22,13 @@ jest.mock('../../../services/sync-component-with-file', () => { }); jest.mock('../../../services/get-tracking-branch'); +jest.spyOn(global.console, 'error').mockImplementation(() => ({})); + +const MOCK_ERROR = new Error('Unexpected Error'); +const RejectedPromiseSettled: PromiseSettledResult = { + status: ALL_SETTLED_STATUS.REJECTED, + reason: MOCK_ERROR, +}; describe('Gitlab push events', () => { const event = generatePushEvent(); @@ -205,4 +213,22 @@ describe('Gitlab push events', () => { expect(removals).toBeCalledWith(mockUnlinkComponentDataWithoutExternalAliasesToRemove[0]); }); + + it('failed handling push event ', async () => { + getNonDefaultBranchNameMock.mockResolvedValue(event.project.default_branch); + findConfigChanges.mockResolvedValue({ + componentsToCreate: [], + componentsToUpdate: [], + componentsToUnlink: mockComponentsToUnlinkWithoutExternalAliasesToRemove, + }); + + removals.mockRejectedValue(MOCK_ERROR); + + await handlePushEvent(event, TEST_TOKEN, MOCK_CLOUD_ID); + + expect(console.error).toBeCalledWith( + 'Error while handling push event', + new Error(`Error removing components: ${getFormattedErrors([RejectedPromiseSettled])}`), + ); + }); }); diff --git a/src/entry/webtriggers/gitlab-event-handlers/handle-push-event.ts b/src/entry/webtriggers/gitlab-event-handlers/handle-push-event.ts index 11d9e4d..7aaa8f0 100644 --- a/src/entry/webtriggers/gitlab-event-handlers/handle-push-event.ts +++ b/src/entry/webtriggers/gitlab-event-handlers/handle-push-event.ts @@ -5,66 +5,82 @@ import { ComponentSyncDetails, PushEvent } from '../../../types'; import { getTrackingBranchName } from '../../../services/get-tracking-branch'; import { unlinkComponentFromFile } from '../../../client/compass'; import { EXTERNAL_SOURCE } from '../../../constants'; +import { hasRejections, getFormattedErrors } from '../../../utils/promise-allsettled-helpers'; export const handlePushEvent = async (event: PushEvent, groupToken: string, cloudId: string): Promise => { - const trackingBranch = await getTrackingBranchName(groupToken, event.project.id, event.project.default_branch); + try { + const trackingBranch = await getTrackingBranchName(groupToken, event.project.id, event.project.default_branch); - if (!isEventForTrackingBranch(event, trackingBranch)) { - console.log('Received push event for non-tracking branch. Ignoring event'); - return; - } + if (!isEventForTrackingBranch(event, trackingBranch)) { + console.log('Received push event for non-tracking branch. Ignoring event'); + return; + } - console.log('Received push event for tracking branch. Processing event'); + console.log('Received push event for tracking branch. Processing event'); - const { componentsToCreate, componentsToUpdate, componentsToUnlink } = await findConfigAsCodeFileChanges( - event, - groupToken, - ); + const { componentsToCreate, componentsToUpdate, componentsToUnlink } = await findConfigAsCodeFileChanges( + event, + groupToken, + ); - if (componentsToCreate.length === 0 && componentsToUpdate.length === 0 && componentsToUnlink.length === 0) { - console.log('No config as code file updates in push event'); - return; - } + if (componentsToCreate.length === 0 && componentsToUpdate.length === 0 && componentsToUnlink.length === 0) { + console.log('No config as code file updates in push event'); + return; + } - console.log('Performing config as code file updates', { - createdFiles: componentsToCreate.length, - updatedFiles: componentsToUpdate.length, - removedFiles: componentsToUnlink.length, - }); + console.log('Performing config as code file updates', { + createdFiles: componentsToCreate.length, + updatedFiles: componentsToUpdate.length, + removedFiles: componentsToUnlink.length, + }); - const componentSyncDetails: ComponentSyncDetails = { - token: groupToken, - event, - trackingBranch, - cloudId, - }; + const componentSyncDetails: ComponentSyncDetails = { + token: groupToken, + event, + trackingBranch, + cloudId, + }; - const creates = componentsToCreate.map((componentPayload) => - syncComponent(componentPayload, componentSyncDetails, { - configFileAction: ConfigFileActions.CREATE, - newPath: componentPayload.filePath, - deduplicationId: event.project.id.toString(), - }), - ); - const updates = componentsToUpdate.map((componentPayload) => - syncComponent(componentPayload, componentSyncDetails, { - configFileAction: ConfigFileActions.UPDATE, - newPath: componentPayload.filePath, - oldPath: componentPayload.previousFilePath, - deduplicationId: event.project.id.toString(), - }), - ); + const creates = componentsToCreate.map((componentPayload) => + syncComponent(componentPayload, componentSyncDetails, { + configFileAction: ConfigFileActions.CREATE, + newPath: componentPayload.filePath, + deduplicationId: event.project.id.toString(), + }), + ); + const updates = componentsToUpdate.map((componentPayload) => + syncComponent(componentPayload, componentSyncDetails, { + configFileAction: ConfigFileActions.UPDATE, + newPath: componentPayload.filePath, + oldPath: componentPayload.previousFilePath, + deduplicationId: event.project.id.toString(), + }), + ); - const removals = componentsToUnlink.map((componentToUnlink) => - unlinkComponentFromFile({ - cloudId, - filePath: componentToUnlink.filePath, - componentId: componentToUnlink.componentYaml.id, - deduplicationId: componentToUnlink.deduplicationId, - additionalExternalAliasesToRemove: componentToUnlink.shouldRemoveExternalAlias - ? [{ externalId: event.project.id.toString(), externalSource: EXTERNAL_SOURCE }] - : [], - }), - ); - await Promise.all([...creates, ...updates, ...removals]); + const creationAndUpdateResults = await Promise.allSettled([...creates, ...updates]); + + if (hasRejections(creationAndUpdateResults)) { + throw new Error(`Error creating or updating components: ${getFormattedErrors(creationAndUpdateResults)}`); + } + + const removals = componentsToUnlink.map((componentToUnlink) => + unlinkComponentFromFile({ + cloudId, + filePath: componentToUnlink.filePath, + componentId: componentToUnlink.componentYaml.id, + deduplicationId: componentToUnlink.deduplicationId, + additionalExternalAliasesToRemove: componentToUnlink.shouldRemoveExternalAlias + ? [{ externalId: event.project.id.toString(), externalSource: EXTERNAL_SOURCE }] + : [], + }), + ); + + const removalResults = await Promise.allSettled(removals); + + if (hasRejections(removalResults)) { + throw new Error(`Error removing components: ${getFormattedErrors(removalResults)}`); + } + } catch (e) { + console.error('Error while handling push event', e); + } }; diff --git a/src/entry/webtriggers/process-gitlab-event.test.ts b/src/entry/webtriggers/process-gitlab-event.test.ts index 6a6f0ad..79d7bac 100644 --- a/src/entry/webtriggers/process-gitlab-event.test.ts +++ b/src/entry/webtriggers/process-gitlab-event.test.ts @@ -64,7 +64,7 @@ describe('processGitlabEvent', () => { await processGitlabEvent(webtriggerRequest); expect(mockHandlePushEvent).toHaveBeenCalledWith(MOCK_PUSH_EVENT, TEST_TOKEN, MOCK_CLOUD_ID); - expect(serverResponse).toHaveBeenCalledWith('Processed webhook event'); + expect(serverResponse).toHaveBeenCalledWith('Processed webhook event of type PUSH'); }); it('returns server response error in case of invalid webhook event secret', async () => { @@ -102,7 +102,7 @@ describe('processGitlabEvent', () => { await processGitlabEvent(webtriggerRequest); expect(mockHandlePipelineEvent).toHaveBeenCalledWith(MOCK_PIPELINE_EVENT, TEST_TOKEN, MOCK_CLOUD_ID); - expect(serverResponse).toHaveBeenCalledWith('Processed webhook event'); + expect(serverResponse).toHaveBeenCalledWith('Processed webhook event of type PIPELINE'); }); it('handles merge request event', async () => { @@ -111,7 +111,7 @@ describe('processGitlabEvent', () => { await processGitlabEvent(webtriggerRequest); expect(mockHandleMergeRequestEvent).toHaveBeenCalledWith(MOCK_MERGE_REQUEST_EVENT, TEST_TOKEN, MOCK_CLOUD_ID); - expect(serverResponse).toHaveBeenCalledWith('Processed webhook event'); + expect(serverResponse).toHaveBeenCalledWith('Processed webhook event of type MERGE_REQUEST'); }); it('handles deployment event when FF is enabled', async () => { @@ -120,6 +120,6 @@ describe('processGitlabEvent', () => { await processGitlabEvent(webtriggerRequest); expect(mockDeploymentEvent).toHaveBeenCalledWith(MOCK_DEPLOYMENT_EVENT, TEST_TOKEN, MOCK_CLOUD_ID); - expect(serverResponse).toHaveBeenCalledWith('Processed webhook event'); + expect(serverResponse).toHaveBeenCalledWith('Processed webhook event of type DEPLOYMENT'); }); }); diff --git a/src/entry/webtriggers/process-gitlab-event.ts b/src/entry/webtriggers/process-gitlab-event.ts index 60f849a..17f1471 100644 --- a/src/entry/webtriggers/process-gitlab-event.ts +++ b/src/entry/webtriggers/process-gitlab-event.ts @@ -6,6 +6,7 @@ import { MergeRequestEvent, PipelineEvent, PushEvent, + WebhookTypes, WebtriggerRequest, WebtriggerResponse, } from '../../types'; @@ -47,20 +48,28 @@ export const processGitlabEvent = async (event: WebtriggerRequest): Promise { }; resolver.define('import', async (req) => { + internalMetrics.counter('compass.gitlab.import.start').incr(); const { createProjectData } = req.payload as ReqPayload; // Added this sleep to add some "jitter", and make progress more user-friendly @@ -86,8 +88,10 @@ resolver.define('import', async (req) => { } if ('err' in updatedComponent) { + internalMetrics.counter('compass.bitbucket.import.end.fail').incr(); await setFailedRepositoriesToStore(project); } else { + internalMetrics.counter('compass.bitbucket.import.end.success').incr(); console.log( `GitLab project was imported. Compass component - ${updatedComponent.id} was updated.`, @@ -95,10 +99,11 @@ resolver.define('import', async (req) => { } } } catch (err) { + internalMetrics.counter('compass.bitbucket.import.end.fail').incr(); console.error(`Failed to create or update compass component for project "${id}" after all retries`, err); await setFailedRepositoriesToStore(project); } }); -export const run = resolver.getDefinitions(); +export default resolver.getDefinitions(); diff --git a/src/services/clear-storage.ts b/src/services/clear-storage.ts index ef3ad87..71a783f 100644 --- a/src/services/clear-storage.ts +++ b/src/services/clear-storage.ts @@ -1,6 +1,7 @@ import { storage, ListResult, startsWith } from '@forge/api'; import { CLEAR_STORAGE_CHUNK_SIZE, CLEAR_STORAGE_DELAY, STORAGE_KEYS, STORAGE_SECRETS } from '../constants'; import { deleteKeysFromStorageByChunks } from '../utils/storage-utils'; +import { getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; const getLastFailedProjectsKeys = async (): Promise => { const lastFailedProjects: ListResult = await storage @@ -45,5 +46,13 @@ export const clearImportKeys = async (): Promise => { }; export const deleteGroupDataFromStorage = async (groupId: string): Promise => { - await Promise.all([clearStorageSecretsForGroup(groupId), clearStorageEntriesForGroup(groupId), clearImportKeys()]); + const deleteGroupDataResult = await Promise.allSettled([ + clearStorageSecretsForGroup(groupId), + clearStorageEntriesForGroup(groupId), + clearImportKeys(), + ]); + + if (hasRejections(deleteGroupDataResult)) { + throw new Error(`Error deleting group data: ${getFormattedErrors(deleteGroupDataResult)}`); + } }; diff --git a/src/services/compute-event-and-metrics/get-recent-deployments.ts b/src/services/compute-event-and-metrics/get-recent-deployments.ts index 425f77a..b57e3b2 100644 --- a/src/services/compute-event-and-metrics/get-recent-deployments.ts +++ b/src/services/compute-event-and-metrics/get-recent-deployments.ts @@ -5,6 +5,7 @@ import { getRecentDeployments, gitlabAPiDeploymentToCompassDataProviderDeploymen import { getProjectEnvironments } from '../environment'; import { getDateInThePast } from '../../utils/time-utils'; import { isSendStagingEventsEnabled } from '../feature-flags'; +import { getFormattedErrors, hasRejections } from '../../utils/promise-allsettled-helpers'; const newGetDeploymentsForEnvironments = async ( groupToken: string, @@ -35,7 +36,17 @@ const newGetDeploymentsForEnvironments = async ( }); // combine results from multiple projectEnvironments into single array - return Promise.all(deploymentEvents).then((results) => results.flat()); + const settledResults = await Promise.allSettled(deploymentEvents); + + if (hasRejections(settledResults)) { + throw new Error(`Error getting deployment: ${getFormattedErrors(settledResults)}`); + } + + const result = settledResults.map( + (settledResult) => (settledResult as PromiseFulfilledResult).value, + ); + + return result.flat(); }; export const getDeploymentsForEnvironmentTiers = async ( @@ -62,7 +73,18 @@ export const getDeploymentsForEnvironmentTiers = async ( [], ); - const deployments = (await Promise.all(getDeploymentsPromises)).flat(); + const deploymentsResult = await Promise.allSettled(getDeploymentsPromises); + + if (hasRejections(deploymentsResult)) { + throw new Error(`Error getting deployments: ${getFormattedErrors(deploymentsResult)}`); + } + + const deploymentsValues = deploymentsResult.map( + (deploymentResult) => (deploymentResult as PromiseFulfilledResult).value, + ); + + const deployments = deploymentsValues.flat(); + const deploymentEvents = deployments .map((deployment) => gitlabAPiDeploymentToCompassDataProviderDeploymentEvent(deployment, projectName, EnvironmentTier.PRODUCTION), diff --git a/src/services/data-provider-link-parser.ts b/src/services/data-provider-link-parser.ts index 508d4da..599ad7a 100644 --- a/src/services/data-provider-link-parser.ts +++ b/src/services/data-provider-link-parser.ts @@ -5,6 +5,7 @@ import { getOwnedProjectsBySearchCriteria } from '../client/gitlab'; import { STORAGE_SECRETS } from '../constants'; import { getGroupIds } from '../utils/storage-utils'; import { GitlabAPIProject } from '../types'; +import { getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; export const extractProjectInformation = (projectUrl: string): { projectName: string; pathName: string } | null => { const parsedUrl = parse(projectUrl); @@ -18,12 +19,20 @@ export const extractProjectInformation = (projectUrl: string): { projectName: st }; export const getAllGroupTokens = async (): Promise => { - const groupIds = await getGroupIds(); - const groupTokens = await Promise.all( - groupIds.map((groupId) => storage.getSecret(`${STORAGE_SECRETS.GROUP_TOKEN_KEY_PREFIX}${groupId}`)), - ); + try { + const groupIds = await getGroupIds(); + const groupTokensResult = await Promise.allSettled( + groupIds.map((groupId) => storage.getSecret(`${STORAGE_SECRETS.GROUP_TOKEN_KEY_PREFIX}${groupId}`)), + ); + + if (hasRejections(groupTokensResult)) { + throw new Error(`Error getting group tokens ${getFormattedErrors(groupTokensResult)}`); + } - return groupTokens; + return groupTokensResult.map((groupTokenResult) => (groupTokenResult as PromiseFulfilledResult).value); + } catch (e) { + throw new Error(`Error while getting all group tokens: ${e}`); + } }; function doesURLMatch(projectUrl: string, path: string, name: string) { diff --git a/src/services/deployment.ts b/src/services/deployment.ts index 895eb64..9091d41 100644 --- a/src/services/deployment.ts +++ b/src/services/deployment.ts @@ -11,6 +11,7 @@ import { fetchPaginatedData } from '../utils/fetchPaginatedData'; import { getProjectEnvironments } from './environment'; import { isSendStagingEventsEnabled } from './feature-flags'; import { truncateProjectNameString } from '../utils/event-mapping'; +import { getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; export const gitLabStateToCompassFormat = (state: string): CompassDeploymentEventState => { switch (state) { @@ -153,7 +154,15 @@ export const getDeploymentAfter28Days = async ( [], ); - const promisesResponse = await Promise.all(getDeploymentsPromises); + const promisesResponseResults = await Promise.allSettled(getDeploymentsPromises); + + if (hasRejections(promisesResponseResults)) { + throw new Error(`Error getting deployments ${getFormattedErrors(promisesResponseResults)}`); + } + + const promisesResponse = promisesResponseResults.map( + (promisesResponseResult) => (promisesResponseResult as PromiseFulfilledResult<{ data: Deployment[] }>).value, + ); return promisesResponse ? promisesResponse.map((deployment) => deployment.data).flat() : []; }; diff --git a/src/services/fetch-projects.test.ts b/src/services/fetch-projects.test.ts index 673a90f..2b1f916 100644 --- a/src/services/fetch-projects.test.ts +++ b/src/services/fetch-projects.test.ts @@ -16,6 +16,7 @@ import { sortedProjects, } from '../__tests__/helpers/gitlab-helper'; import { MergeRequest } from '../types'; +import { ALL_SETTLED_STATUS, getFormattedErrors } from '../utils/promise-allsettled-helpers'; jest.mock('../client/gitlab'); jest.mock('../client/compass'); @@ -60,6 +61,13 @@ const mergeRequestMock: MergeRequest[] = [ }, ]; +const MOCK_ERROR = 'Error: Error while getting repository additional fields.'; + +const RejectedPromiseSettled: PromiseSettledResult = { + status: ALL_SETTLED_STATUS.REJECTED, + reason: MOCK_ERROR, +}; + describe('Fetch Projects Service', () => { beforeEach(() => { jest.clearAllMocks(); @@ -128,15 +136,19 @@ describe('Fetch Projects Service', () => { mockGetProjects.mockRejectedValue(undefined); await expect(getGroupProjects(MOCK_CLOUD_ID, MOCK_GROUP_ID, 1, 1)).rejects.toThrow( - new Error('Error while fetching group projects from Gitlab!'), + `Error while getting group projects: ${new Error('Error while fetching group projects from Gitlab!')}`, ); }); it('returns error in case when getComponentByExternalAlias fails', async () => { mockGetComponentByExternalAlias.mockRejectedValue(undefined); + const settledError = new Error( + `Error checking project with existing components: ${getFormattedErrors([RejectedPromiseSettled])}`, + ); + await expect(getGroupProjects(MOCK_CLOUD_ID, MOCK_GROUP_ID, 1, 1)).rejects.toThrow( - new Error('Error: Error while getting repository additional fields.'), + `Error while getting group projects: ${settledError}`, ); }); diff --git a/src/services/fetch-projects.ts b/src/services/fetch-projects.ts index 26c1b05..43d5ecf 100644 --- a/src/services/fetch-projects.ts +++ b/src/services/fetch-projects.ts @@ -4,8 +4,15 @@ import { storage } from '@forge/api'; import { getComponentByExternalAlias } from '../client/compass'; import { COMPASS_YML_BRANCH, EXTERNAL_SOURCE, STORAGE_SECRETS } from '../constants'; import { getMergeRequests, getProjects, GitLabHeaders } from '../client/gitlab'; -import { GroupProjectsResponse, MergeRequestState, Project, ProjectReadyForImport } from '../types'; +import { + CompareProjectWithExistingComponent, + GroupProjectsResponse, + MergeRequestState, + Project, + ProjectReadyForImport, +} from '../types'; import { getProjectLabels } from './get-labels'; +import { ALL_SETTLED_STATUS, getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; const mapComponentLinks = (links: Link[] = []): CreateLinkInput[] => links.map((link) => { @@ -22,7 +29,7 @@ const fetchProjects = async ( const PER_PAGE = 10; const { data: projects, headers } = await getProjects(groupToken, groupId, page, PER_PAGE, search); - const generatedProjectsWithLanguages = await Promise.all( + const generatedProjectsWithLanguagesResult = await Promise.allSettled( projects.map(async (project) => { const labels = await getProjectLabels(project.id, groupToken, project.topics); @@ -40,6 +47,17 @@ const fetchProjects = async ( }), ); + if (hasRejections(generatedProjectsWithLanguagesResult)) { + throw new Error( + `Error getting projects with languages: ${getFormattedErrors(generatedProjectsWithLanguagesResult)}`, + ); + } + + const generatedProjectsWithLanguages = generatedProjectsWithLanguagesResult.map( + (generatedProjectWithLanguagesResult) => + (generatedProjectWithLanguagesResult as PromiseFulfilledResult).value, + ); + return { total: Number(headers.get(GitLabHeaders.PAGINATION_TOTAL)), projects: generatedProjectsWithLanguages }; } catch (err) { const ERROR_MESSAGE = 'Error while fetching group projects from Gitlab!'; @@ -49,9 +67,13 @@ const fetchProjects = async ( } }; -const compareProjectWithExistingComponent = async (cloudId: string, projectId: number, groupToken: string) => { +const compareProjectWithExistingComponent = async ( + cloudId: string, + projectId: number, + groupToken: string, +): Promise => { try { - const [{ component }, { data: mergeRequestWithCompassYML }] = await Promise.all([ + const [componentByExtenalAliasResult, mergeRequestsResults] = await Promise.allSettled([ getComponentByExternalAlias({ cloudId, externalId: projectId.toString(), @@ -67,6 +89,21 @@ const compareProjectWithExistingComponent = async (cloudId: string, projectId: n }), ]); + if ( + componentByExtenalAliasResult.status === ALL_SETTLED_STATUS.REJECTED || + mergeRequestsResults.status === ALL_SETTLED_STATUS.REJECTED + ) { + throw new Error( + `Error getting component by external alias or merge requests: ${getFormattedErrors([ + componentByExtenalAliasResult, + mergeRequestsResults, + ])}`, + ); + } + + const { component } = componentByExtenalAliasResult.value; + const { data: mergeRequestWithCompassYML } = mergeRequestsResults.value; + return { isManaged: Boolean(component?.dataManager), hasComponent: Boolean(component?.id) || Boolean(mergeRequestWithCompassYML.length), @@ -106,21 +143,36 @@ export const getGroupProjects = async ( groupTokenId: number, search?: string, ): Promise => { - const groupToken = await storage.getSecret(`${STORAGE_SECRETS.GROUP_TOKEN_KEY_PREFIX}${groupTokenId}`); + try { + const groupToken = await storage.getSecret(`${STORAGE_SECRETS.GROUP_TOKEN_KEY_PREFIX}${groupTokenId}`); - const { projects, total } = await fetchProjects(groupToken, groupId, page, search); + const { projects, total } = await fetchProjects(groupToken, groupId, page, search); - const checkedDataWithExistingComponents = await Promise.all( - projects.map(({ id: projectId }) => { - return compareProjectWithExistingComponent(cloudId, projectId, groupToken); - }), - ).catch((err) => { - throw new Error(err); - }); + const checkedDataWithExistingComponentsResults = await Promise.allSettled( + projects.map(({ id: projectId }) => { + return compareProjectWithExistingComponent(cloudId, projectId, groupToken); + }), + ); - const resultProjects = projects.map((project, i) => { - return { ...project, ...checkedDataWithExistingComponents[i] }; - }); + if (hasRejections(checkedDataWithExistingComponentsResults)) { + throw new Error( + `Error checking project with existing components: ${getFormattedErrors( + checkedDataWithExistingComponentsResults, + )}`, + ); + } + + const checkedDataWithExistingComponents = checkedDataWithExistingComponentsResults.map( + (checkedDataWithExistingComponentsResult) => + (checkedDataWithExistingComponentsResult as PromiseFulfilledResult).value, + ); + + const resultProjects = projects.map((project, i) => { + return { ...project, ...checkedDataWithExistingComponents[i] }; + }); - return { total, projects: resultProjects }; + return { total, projects: resultProjects }; + } catch (e) { + throw new Error(`Error while getting group projects: ${e}`); + } }; diff --git a/src/services/get-backfill-data.ts b/src/services/get-backfill-data.ts index a664dd9..fb25f3c 100644 --- a/src/services/get-backfill-data.ts +++ b/src/services/get-backfill-data.ts @@ -1,4 +1,3 @@ -import { DataProviderBuildEvent, DataProviderDeploymentEvent } from '@atlassian/forge-graphql'; import { getDeploymentsForEnvironmentTiers, getMRCycleTime, @@ -6,41 +5,47 @@ import { getProjectBuildsFor28Days, } from './compute-event-and-metrics'; import { hasDeploymentAfter28Days } from '../utils/has-deployment-after-28days'; -import { EnvironmentTier } from '../types'; +import { BackfillData, EnvironmentTier } from '../types'; import { isSendStagingEventsEnabled } from './feature-flags'; +import { getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; export const getBackfillData = async ( groupToken: string, projectId: number, projectName: string, branchName: string, -): Promise<{ - builds: DataProviderBuildEvent[]; - deployments: DataProviderDeploymentEvent[]; - metrics: { - mrCycleTime: number; - openMergeRequestsCount: number; - }; -}> => { - const [allBuildsFor28Days, mrCycleTime, deployments, openMergeRequestsCount] = await Promise.all([ - getProjectBuildsFor28Days(groupToken, projectId, projectName, branchName), - getMRCycleTime(groupToken, projectId, branchName), - getDeploymentsForEnvironmentTiers( - groupToken, - projectId, - projectName, - isSendStagingEventsEnabled ? [EnvironmentTier.PRODUCTION, EnvironmentTier.STAGING] : undefined, - ), - getOpenMergeRequestsCount(groupToken, projectId, branchName), - hasDeploymentAfter28Days(projectId, groupToken), - ]); +): Promise => { + try { + const backfillResults = await Promise.allSettled([ + getProjectBuildsFor28Days(groupToken, projectId, projectName, branchName), + getMRCycleTime(groupToken, projectId, branchName), + getDeploymentsForEnvironmentTiers( + groupToken, + projectId, + projectName, + isSendStagingEventsEnabled ? [EnvironmentTier.PRODUCTION, EnvironmentTier.STAGING] : undefined, + ), + getOpenMergeRequestsCount(groupToken, projectId, branchName), + hasDeploymentAfter28Days(projectId, groupToken), + ]); - return { - builds: allBuildsFor28Days, - deployments, - metrics: { - mrCycleTime, - openMergeRequestsCount, - }, - }; + if (hasRejections(backfillResults)) { + throw new Error(`Error getting backfill data ${getFormattedErrors(backfillResults)}`); + } + + const [allBuildsFor28Days, mrCycleTime, deployments, openMergeRequestsCount] = backfillResults.map( + (backfillResult) => (backfillResult as PromiseFulfilledResult).value, + ); + + return { + builds: allBuildsFor28Days, + deployments, + metrics: { + mrCycleTime, + openMergeRequestsCount, + }, + }; + } catch (e) { + throw new Error(`Error while getting backfill data: ${e}`); + } }; diff --git a/src/services/group.ts b/src/services/group.ts index efe36a8..5f63657 100644 --- a/src/services/group.ts +++ b/src/services/group.ts @@ -5,6 +5,7 @@ import { getGroupAccessTokens, getGroupsData } from '../client/gitlab'; import { REQUIRED_SCOPES, STORAGE_KEYS, STORAGE_SECRETS } from '../constants'; import { AuthErrorTypes } from '../resolverTypes'; import { deleteGroupDataFromStorage } from './clear-storage'; +import { ALL_SETTLED_STATUS, getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; export class InvalidGroupTokenError extends Error { constructor(public errorType: AuthErrorTypes) { @@ -58,7 +59,7 @@ const getGroups = async (owned?: string, minAccessLevel?: number): Promise storage.getSecret( `${STORAGE_SECRETS.GROUP_TOKEN_KEY_PREFIX}${group.key.replace(STORAGE_KEYS.GROUP_KEY_PREFIX, '')}`, @@ -66,6 +67,14 @@ const getGroups = async (owned?: string, minAccessLevel?: number): Promise) => (tokenResult as PromiseFulfilledResult).value, + ); + const groupPromises = tokens.map((token: string) => getGroupsData(token, owned, minAccessLevel)); // We need to remove revoked/invalid (on Gitlab side) tokens from storage @@ -80,10 +89,13 @@ const getGroups = async (owned?: string, minAccessLevel?: number): Promise, i: number, ) => { - if (currentGroupResult.status === 'rejected' && currentGroupResult.reason.toString().includes('Unauthorized')) { + if ( + currentGroupResult.status === ALL_SETTLED_STATUS.REJECTED && + currentGroupResult.reason.toString().includes('Unauthorized') + ) { result.invalidGroupIds.push(groups[i].key.replace(STORAGE_KEYS.GROUP_KEY_PREFIX, '')); } - if (currentGroupResult.status === 'fulfilled') { + if (currentGroupResult.status === ALL_SETTLED_STATUS.FULFILLED) { if (minAccessLevel) { result.accessedGroups.push(...currentGroupResult.value); } else { @@ -96,7 +108,13 @@ const getGroups = async (owned?: string, minAccessLevel?: number): Promise deleteGroupDataFromStorage(id))); + const settledResult = await Promise.allSettled( + reducedGroupsResult.invalidGroupIds.map((id: string) => deleteGroupDataFromStorage(id)), + ); + + if (hasRejections(settledResult)) { + throw new Error(`Error deleting group data from storage: ${getFormattedErrors(settledResult)}`); + } return reducedGroupsResult.accessedGroups; }; diff --git a/src/services/import-projects.test.ts b/src/services/import-projects.test.ts index 0140e10..4c31e42 100644 --- a/src/services/import-projects.test.ts +++ b/src/services/import-projects.test.ts @@ -17,6 +17,7 @@ import { import { setLastSyncTime } from './last-sync-time'; import { mocked } from 'jest-mock'; import { ImportErrorTypes } from '../resolverTypes'; +import { ALL_SETTLED_STATUS, getFormattedErrors } from '../utils/promise-allsettled-helpers'; const storageGetSuccess = jest.fn().mockReturnValue(['jobId1', 'jobId2']); const storageGetEmptyArray = jest.fn().mockReturnValue([]); @@ -161,7 +162,20 @@ describe('clearImportResult test cases', () => { it('clearImportResult test case: storage delete failed', async () => { storage.query = storageQuerySuccess; - await expect(clearImportResult()).rejects.toThrow(errorForClearImportProject); + const RejectedPromiseSettled: PromiseSettledResult[] = [ + { + status: ALL_SETTLED_STATUS.REJECTED, + reason: errorForClearImportProject, + }, + { + status: ALL_SETTLED_STATUS.REJECTED, + reason: errorForClearImportProject, + }, + ]; + + await expect(clearImportResult()).rejects.toThrow( + `Error deleting key: ${getFormattedErrors(RejectedPromiseSettled)}`, + ); expect(storage.query).toHaveBeenCalled(); expect(storage.delete).toHaveBeenCalled(); diff --git a/src/services/import-projects.ts b/src/services/import-projects.ts index 152ca6b..1aa0c46 100644 --- a/src/services/import-projects.ts +++ b/src/services/import-projects.ts @@ -9,6 +9,7 @@ import { Queues, ImportableProject, ProjectImportResult, ImportStatus } from '.. import { ImportErrorTypes } from '../resolverTypes'; import { setLastSyncTime } from './last-sync-time'; import { deleteKeysFromStorageByChunks } from '../utils/storage-utils'; +import { getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; export const QUEUE_ONE_TIME_LIMIT = 500; const QUEUE_PUSH_EVENTS_LIMIT = 50; @@ -31,7 +32,7 @@ export const importProjects = async ( const queue = new Queue({ key: Queues.IMPORT }); - if (projectsReadyToImport.length > queueOneTimeLimit) { + if (projectsReadyToImport.length > Number(queueOneTimeLimit)) { throw new OneTimeLimitImportError( `Sorry, unfortunately you can import maximum ${QUEUE_ONE_TIME_LIMIT} projects at one time.`, ); @@ -76,13 +77,21 @@ export const getImportStatus = async (): Promise => { throw new Error('No running job'); } const queue = new Queue({ key: Queues.IMPORT }); - const jobStatuses = await Promise.all( + const jobStatusesResult = await Promise.allSettled( jobIds.map((id: string) => { const job = queue.getJob(id); return job.getStats().then((s) => s.json()); }), ); + if (hasRejections(jobStatusesResult)) { + throw new Error(`Error getting job statuses: ${getFormattedErrors(jobStatusesResult)}`); + } + + const jobStatuses = jobStatusesResult.map( + (jobStatusResult) => (jobStatusResult as PromiseFulfilledResult).value, + ); + return jobStatuses.reduce( (acc: ImportStatus, importStatus: ImportStatus) => { return { diff --git a/src/services/insert-metric-values.ts b/src/services/insert-metric-values.ts index fbc01e6..6757a8b 100644 --- a/src/services/insert-metric-values.ts +++ b/src/services/insert-metric-values.ts @@ -1,3 +1,4 @@ +import { getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; import { insertMetricValueByExternalId } from '../client/compass'; import { MetricsEventPayload } from '../types'; @@ -12,12 +13,16 @@ export const insertMetricValues = async (metricsPayload: MetricsEventPayload, cl cloudId, }); - await Promise.all( + const settledResult = await Promise.allSettled( metrics.map(async (metric) => { await insertMetricValueByExternalId(cloudId, projectID, metric); }), ); + if (hasRejections(settledResult)) { + throw new Error(`Error inserting metric values: ${getFormattedErrors(settledResult)}`); + } + console.log({ message: 'insertMetricValues finished.', duration: Date.now() - startTime, diff --git a/src/services/sync-component-with-file/find-config-file-changes.ts b/src/services/sync-component-with-file/find-config-file-changes.ts index 78b82bc..cacc865 100644 --- a/src/services/sync-component-with-file/find-config-file-changes.ts +++ b/src/services/sync-component-with-file/find-config-file-changes.ts @@ -14,6 +14,7 @@ import { detectMovedFilesAndUpdateComponentChanges, handleModifiedFilesAndUpdateComponentChanges, } from './config-file-changes-transformer'; +import { ALL_SETTLED_STATUS, getFormattedErrors } from '../../utils/promise-allsettled-helpers'; const getRemovedFiles = async ( token: string, @@ -138,12 +139,30 @@ export const findConfigAsCodeFileChanges = async (event: PushEvent, token: strin `Found ${added.length} added diffs, ${removed.length} removed diffs, and ${modified.length} modified diffs in push event. Now processing what files might have been moved or renamed.`, ); - const [createPayload, unlinkPayload, modifiedFiles] = await Promise.all([ + const [createPayloadResult, unlinkPayloadResult, modifiedFilesResult] = await Promise.allSettled([ getAddedFiles(token, added, event), getRemovedFiles(token, removed, event), getModifiedFiles(token, modified, event), ]); + if ( + createPayloadResult.status === ALL_SETTLED_STATUS.REJECTED || + unlinkPayloadResult.status === ALL_SETTLED_STATUS.REJECTED || + modifiedFilesResult.status === ALL_SETTLED_STATUS.REJECTED + ) { + throw new Error( + `Error addind or removed or modifying file: ${getFormattedErrors([ + createPayloadResult, + unlinkPayloadResult, + modifiedFilesResult, + ])}`, + ); + } + + const createPayload = createPayloadResult.value; + const unlinkPayload = unlinkPayloadResult.value; + const modifiedFiles = modifiedFilesResult.value; + const componentChanges: ComponentChanges = { componentsToCreate: createPayload, componentsToUpdate: [], diff --git a/src/services/webhooks.ts b/src/services/webhooks.ts index 7228fa3..f899924 100644 --- a/src/services/webhooks.ts +++ b/src/services/webhooks.ts @@ -3,15 +3,31 @@ import { storage, webTrigger } from '@forge/api'; import { registerGroupWebhook, deleteGroupWebhook, getGroupWebhook } from '../client/gitlab'; import { GITLAB_EVENT_WEBTRIGGER, STORAGE_KEYS, STORAGE_SECRETS } from '../constants'; import { generateSignature } from '../utils/generate-signature-utils'; +import { ALL_SETTLED_STATUS, getFormattedErrors, hasRejections } from '../utils/promise-allsettled-helpers'; export const setupAndValidateWebhook = async (groupId: number): Promise => { console.log('Setting up webhook'); try { - const [existingWebhook, groupToken] = await Promise.all([ + const [existingWebhookResult, groupTokenResult] = await Promise.allSettled([ storage.get(`${STORAGE_KEYS.WEBHOOK_KEY_PREFIX}${groupId}`), storage.getSecret(`${STORAGE_SECRETS.GROUP_TOKEN_KEY_PREFIX}${groupId}`), ]); + if ( + existingWebhookResult.status === ALL_SETTLED_STATUS.REJECTED || + groupTokenResult.status === ALL_SETTLED_STATUS.REJECTED + ) { + throw new Error( + `Error getting existing webhook or group token: ${getFormattedErrors([ + existingWebhookResult, + groupTokenResult, + ])}`, + ); + } + + const existingWebhook = existingWebhookResult.value; + const groupToken = groupTokenResult.value; + const isWebhookValid = existingWebhook && (await getGroupWebhook(groupId, existingWebhook, groupToken)) !== null; if (isWebhookValid) { @@ -29,11 +45,15 @@ export const setupAndValidateWebhook = async (groupId: number): Promise signature: webhookSignature, }); - await Promise.all([ + const settledResult = await Promise.allSettled([ storage.set(`${STORAGE_KEYS.WEBHOOK_KEY_PREFIX}${groupId}`, webhookId), storage.set(`${STORAGE_KEYS.WEBHOOK_SIGNATURE_PREFIX}${groupId}`, webhookSignature), ]); + if (hasRejections(settledResult)) { + throw new Error(`Error setting webhookId or webhookSignature: ${getFormattedErrors(settledResult)}`); + } + console.log('Successfully created webhook'); return webhookId; } catch (e) { @@ -43,12 +63,29 @@ export const setupAndValidateWebhook = async (groupId: number): Promise }; export const deleteWebhook = async (groupId: number): Promise => { - const [webhookId, groupToken] = await Promise.all([ - storage.get(`${STORAGE_KEYS.WEBHOOK_KEY_PREFIX}${groupId}`), - storage.getSecret(`${STORAGE_SECRETS.GROUP_TOKEN_KEY_PREFIX}${groupId}`), - ]); + try { + const [webhookIdResult, groupTokenResult] = await Promise.allSettled([ + storage.get(`${STORAGE_KEYS.WEBHOOK_KEY_PREFIX}${groupId}`), + storage.getSecret(`${STORAGE_SECRETS.GROUP_TOKEN_KEY_PREFIX}${groupId}`), + ]); + + if ( + webhookIdResult.status === ALL_SETTLED_STATUS.REJECTED || + groupTokenResult.status === ALL_SETTLED_STATUS.REJECTED + ) { + throw new Error( + `Error getting webhookId or groupToken: ${getFormattedErrors([webhookIdResult, groupTokenResult])}`, + ); + } - if (webhookId) { - await deleteGroupWebhook(groupId, webhookId, groupToken); + const webhookId = webhookIdResult.value; + const groupToken = groupTokenResult.value; + + if (webhookId) { + await deleteGroupWebhook(groupId, webhookId, groupToken); + } + } catch (e) { + console.error('Error while getting webhookId or groupToken', e); + throw new Error(`Error while getting webhookId or groupToken: ${e}`); } }; diff --git a/src/types.ts b/src/types.ts index 084bb85..5e8c131 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,9 @@ -import { CreateLinkInput, CustomFieldFromYAML } from '@atlassian/forge-graphql'; +import { + CreateLinkInput, + CustomFieldFromYAML, + DataProviderBuildEvent, + DataProviderDeploymentEvent, +} from '@atlassian/forge-graphql'; type WebtriggerRequest = { body: string; @@ -250,6 +255,11 @@ type ProjectReadyForImport = { } & ProjectImportStatus & Project; +type CompareProjectWithExistingComponent = Pick< + ProjectReadyForImport, + 'isManaged' | 'hasComponent' | 'isCompassFilePrOpened' | 'componentId' | 'componentLinks' | 'typeId' +>; + type ImportableProject = ProjectReadyForImport & { typeId: string; }; @@ -359,6 +369,13 @@ enum GitLabAccessLevels { OWNER = 50, } +enum WebhookTypes { + PUSH = 'push', + MERGE_REQUEST = 'merge_request', + PIPELINE = 'pipeline', + DEPLOYMENT = 'deployment', +} + type Environment = { id: number; name: string; @@ -400,6 +417,15 @@ type TeamsWithMembershipStatus = { otherTeams: MappedTeam[]; }; +type BackfillData = { + builds: DataProviderBuildEvent[]; + deployments: DataProviderDeploymentEvent[]; + metrics: { + mrCycleTime: number; + openMergeRequestsCount: number; + }; +}; + export type { WebtriggerRequest, WebtriggerResponse, @@ -440,6 +466,8 @@ export type { MappedTeam, Team, TeamsWithMembershipStatus, + CompareProjectWithExistingComponent, + BackfillData, }; export { @@ -450,4 +478,5 @@ export { EnvironmentTier, GitlabPipelineStates, GitLabAccessLevels, + WebhookTypes, }; diff --git a/src/utils/fetchPaginatedData.ts b/src/utils/fetchPaginatedData.ts index c45c466..81df434 100644 --- a/src/utils/fetchPaginatedData.ts +++ b/src/utils/fetchPaginatedData.ts @@ -1,4 +1,5 @@ import { GitLabHeaders, GitlabPaginatedFetch } from '../client/gitlab'; +import { getFormattedErrors, hasRejections } from './promise-allsettled-helpers'; export const fetchPaginatedData = async ( fetchFn: GitlabPaginatedFetch, @@ -20,7 +21,15 @@ export const fetchPaginatedData = async ( promises.push(fetchFn(pageNumber, perPage, fetchFnParameters)); } - const restOfData = await Promise.all(promises); + const restOfDataResults = await Promise.allSettled(promises); + + if (hasRejections(restOfDataResults)) { + throw new Error(`Error getting data results: ${getFormattedErrors(restOfDataResults)}`); + } + + const restOfData = restOfDataResults.map( + (restOfDataResult) => (restOfDataResult as PromiseFulfilledResult<{ data: D[]; headers: Headers }>).value, + ); return [...firstPageData, ...restOfData.map(({ data }) => data).flat()]; }; diff --git a/src/utils/promise-allsettled-helpers.test.ts b/src/utils/promise-allsettled-helpers.test.ts new file mode 100644 index 0000000..69885cc --- /dev/null +++ b/src/utils/promise-allsettled-helpers.test.ts @@ -0,0 +1,88 @@ +import { hasRejections, getFormattedErrors, ALL_SETTLED_STATUS } from './promise-allsettled-helpers'; + +describe('hasRejections', () => { + it('should return false when the provided array is empty', () => { + const results: PromiseSettledResult[] = []; + expect(hasRejections(results)).toBe(false); + }); + + it('should return true when the provided array has a single rejected promise', () => { + const results: PromiseSettledResult[] = [{ status: ALL_SETTLED_STATUS.REJECTED, reason: 'error' }]; + expect(hasRejections(results)).toBe(true); + }); + + it('should return false when the provided array has a single fulfilled promise', () => { + const results: PromiseSettledResult[] = [{ status: ALL_SETTLED_STATUS.FULFILLED, value: 'success' }]; + expect(hasRejections(results)).toBe(false); + }); + + it('should return false when the provided array has all successful promises', () => { + const results: PromiseSettledResult[] = [ + { status: ALL_SETTLED_STATUS.FULFILLED, value: 'success1' }, + { status: ALL_SETTLED_STATUS.FULFILLED, value: 'success2' }, + { status: ALL_SETTLED_STATUS.FULFILLED, value: 'success3' }, + ]; + expect(hasRejections(results)).toBe(false); + }); + + it('should return true when the provided array has all rejected promises', () => { + const results: PromiseSettledResult[] = [ + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error1' }, + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error2' }, + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error3' }, + ]; + expect(hasRejections(results)).toBe(true); + }); + + it('should return true when the provided array has mixed fulfilled and rejected promises', () => { + const results: PromiseSettledResult[] = [ + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error1' }, + { status: ALL_SETTLED_STATUS.FULFILLED, value: 'success1' }, + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error2' }, + { status: ALL_SETTLED_STATUS.FULFILLED, value: 'success2' }, + ]; + expect(hasRejections(results)).toBe(true); + }); +}); + +describe('getFormattedErrors', () => { + it('should return an empty string when no promise results are given', () => { + const results: PromiseSettledResult[] = []; + expect(getFormattedErrors(results)).toBe(''); + }); + + it('should return an empty string when a single successful result is given', () => { + const results: PromiseSettledResult[] = [{ status: ALL_SETTLED_STATUS.FULFILLED, value: 'success' }]; + expect(getFormattedErrors(results)).toBe(''); + }); + + it('should return the error message when a single error result is given', () => { + const results: PromiseSettledResult[] = [{ status: ALL_SETTLED_STATUS.REJECTED, reason: 'error' }]; + expect(getFormattedErrors(results)).toBe('1.) error'); + }); + + it('should handle rejected promise with an empty error message', () => { + const results: PromiseSettledResult[] = [{ status: ALL_SETTLED_STATUS.REJECTED, reason: '' }]; + expect(getFormattedErrors(results)).toBe('1.) '); + }); + + it('should return all error messages when multiple rejected promises are given', () => { + const results: PromiseSettledResult[] = [ + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error1' }, + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error2' }, + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error3' }, + ]; + expect(getFormattedErrors(results)).toBe('1.) error1, 2.) error2, 3.) error3'); + }); + + // eslint-disable-next-line max-len + it('should return all error messages in the expected format when an array of successful and rejected promises is given', () => { + const results: PromiseSettledResult[] = [ + { status: ALL_SETTLED_STATUS.FULFILLED, value: 'success1' }, + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error1' }, + { status: ALL_SETTLED_STATUS.FULFILLED, value: 'success2' }, + { status: ALL_SETTLED_STATUS.REJECTED, reason: 'error2' }, + ]; + expect(getFormattedErrors(results)).toBe('1.) error1, 2.) error2'); + }); +}); diff --git a/src/utils/promise-allsettled-helpers.ts b/src/utils/promise-allsettled-helpers.ts new file mode 100644 index 0000000..06a8308 --- /dev/null +++ b/src/utils/promise-allsettled-helpers.ts @@ -0,0 +1,17 @@ +export enum ALL_SETTLED_STATUS { + FULFILLED = 'fulfilled', + REJECTED = 'rejected', +} + +export const hasRejections = (results: PromiseSettledResult[]): boolean => { + return results.some((result) => result.status === ALL_SETTLED_STATUS.REJECTED); +}; + +export const getFormattedErrors = (results: PromiseSettledResult[]): string => { + return results + .filter((result) => result.status === ALL_SETTLED_STATUS.REJECTED) + .map((result, index) => { + return `${index + 1}.) ${(result as PromiseRejectedResult).reason}`; + }) + .join(', '); +}; diff --git a/src/utils/storage-utils.ts b/src/utils/storage-utils.ts index bcb801b..af290d8 100644 --- a/src/utils/storage-utils.ts +++ b/src/utils/storage-utils.ts @@ -3,6 +3,7 @@ import { chunk } from 'lodash'; import { sleep } from './time-utils'; import { STORAGE_KEYS } from '../constants'; +import { getFormattedErrors, hasRejections } from './promise-allsettled-helpers'; export const deleteKeysFromStorageByChunks = async ( keys: string[], @@ -12,7 +13,11 @@ export const deleteKeysFromStorageByChunks = async ( const keyChunks = chunk(keys, chunkSize); for (const keyChunk of keyChunks) { - await Promise.all(keyChunk.map((key: string) => storage.delete(key))); + const settledResult = await Promise.allSettled(keyChunk.map((key: string) => storage.delete(key))); + + if (hasRejections(settledResult)) { + throw new Error(`Error deleting key: ${getFormattedErrors(settledResult)}`); + } await sleep(delay); } }; diff --git a/ui/package.json b/ui/package.json index aae5ae0..3a58e03 100644 --- a/ui/package.json +++ b/ui/package.json @@ -14,6 +14,7 @@ "@atlaskit/icon": "^21.10.6", "@atlaskit/inline-message": "^11.4.9", "@atlaskit/onboarding": "^11.3.0", + "@atlaskit/primitives": "^12.1.0", "@atlaskit/progress-bar": "^0.5.6", "@atlaskit/section-message": "^6.1.10", "@atlaskit/select": "^15.2.11", @@ -23,8 +24,7 @@ "@atlaskit/tokens": "^1.29.1", "@atlaskit/tooltip": "^17.5.9", "@atlassian/forge-graphql": "13.9.1", - "@forge/api": "^2.8.1", - "@forge/bridge": "^2.6.0", + "@forge/bridge": "^3.5.0", "escape-string-regexp": "^5.0.0", "lodash": "^4.17.21", "lodash.debounce": "^4.0.8", diff --git a/ui/src/App.tsx b/ui/src/App.tsx index b04008f..3d841c3 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -1,10 +1,19 @@ import { view } from '@forge/bridge'; +import { useEffect } from 'react'; import { AppRouter } from './AppRouter'; import { AppContextProvider } from './context/AppContext'; import { ImportContextProvider } from './context/ImportContext'; export const App = () => { - view.theme.enable(); + const enableTheme = async () => { + await view.theme.enable().catch; + }; + + useEffect(() => { + enableTheme().catch((e) => { + console.error('Error while enabling theme', e); + }); + }, []); return ( diff --git a/ui/src/components/ConnectedPage/ImportControls.tsx b/ui/src/components/ConnectedPage/ImportControls.tsx index 22764c2..2a91a81 100644 --- a/ui/src/components/ConnectedPage/ImportControls.tsx +++ b/ui/src/components/ConnectedPage/ImportControls.tsx @@ -20,8 +20,8 @@ export const ImportControls = () => { const { isImportInProgress } = useImportContext(); const { appId } = useAppContext(); - const handleImportNavigate = () => { - router.navigate(`/compass/import/redirect/${encodeURIComponent(`ari:cloud:ecosystem::app/${appId}`)}`); + const handleImportNavigate = async () => { + await router.navigate(`/compass/import/redirect/${encodeURIComponent(`ari:cloud:ecosystem::app/${appId}`)}`); }; const fetchLastSyncTime = async () => { @@ -44,7 +44,9 @@ export const ImportControls = () => { }; useEffect(() => { - fetchLastSyncTime(); + fetchLastSyncTime().catch((e) => { + console.log('Error while fetching last sync time', e); + }); }, []); const lastSyncTimeMsg = lastSyncTime ? `Last imported: ${formatLastSyncTime(lastSyncTime)}` : 'No import history'; diff --git a/ui/src/components/ConnectedPage/index.tsx b/ui/src/components/ConnectedPage/index.tsx index fb2353e..9ea48ab 100644 --- a/ui/src/components/ConnectedPage/index.tsx +++ b/ui/src/components/ConnectedPage/index.tsx @@ -46,7 +46,11 @@ export const ConnectedPage = () => { }; useEffect(() => { - getConnectedInfo().then(setGroups); + getConnectedInfo() + .then(setGroups) + .catch((e) => { + console.error('Error while getting connected info', e); + }); }, []); if (errorType) { diff --git a/ui/src/components/ForgeLink.tsx b/ui/src/components/ForgeLink.tsx index a5664a5..48d5d77 100644 --- a/ui/src/components/ForgeLink.tsx +++ b/ui/src/components/ForgeLink.tsx @@ -13,10 +13,10 @@ export const ForgeLink: FunctionComponent = ({ to, testId, openInNewTab, { + onClick={async (e) => { e.preventDefault(); const nav = openInNewTab ? 'open' : 'navigate'; - router[nav](to); + await router[nav](to); }} > {children} diff --git a/ui/src/components/ImportProgressResultPage/index.tsx b/ui/src/components/ImportProgressResultPage/index.tsx index 63cadc7..64f6083 100644 --- a/ui/src/components/ImportProgressResultPage/index.tsx +++ b/ui/src/components/ImportProgressResultPage/index.tsx @@ -5,11 +5,11 @@ import styled from 'styled-components'; import { gridSize } from '@atlaskit/theme'; import { router } from '@forge/bridge'; +import { IMPORT_MODULE_KEY } from '../../constants'; import { useImportContext } from '../../hooks/useImportContext'; import { ApplicationState } from '../../routes'; import { ImportProgressBar } from '../ImportProgressBar'; import { ImportResult } from '../ImportResult'; -import { IMPORT_MODULE_KEY } from '../../constants'; const DoneButtonWrapper = styled.div` margin-top: ${gridSize() * 2}px; @@ -24,9 +24,9 @@ export const ImportProgressResultPage = ({ moduleKey }: Props) => { const navigate = useNavigate(); - const handleNavigateWhenDone = () => { + const handleNavigateWhenDone = async () => { if (moduleKey === IMPORT_MODULE_KEY) { - router.navigate('/compass/components'); + await router.navigate('/compass/components?status=pending'); } else { const path = `..${ApplicationState.CONNECTED}`; navigate(path, { replace: true }); diff --git a/ui/src/components/ImportResult/index.tsx b/ui/src/components/ImportResult/index.tsx index 4358846..b3efca1 100644 --- a/ui/src/components/ImportResult/index.tsx +++ b/ui/src/components/ImportResult/index.tsx @@ -37,7 +37,9 @@ export const ImportResult: FunctionComponent = () => { useEffect(() => { if (Boolean(failedProjects.length) || Boolean(totalProjects)) { - clearImportResults(); + clearImportResults().catch((e) => { + console.error('Error while clearing import result', e); + }); } }, [failedProjects, totalProjects]); diff --git a/ui/src/components/SelectImportPage/index.tsx b/ui/src/components/SelectImportPage/index.tsx index c714005..90189da 100644 --- a/ui/src/components/SelectImportPage/index.tsx +++ b/ui/src/components/SelectImportPage/index.tsx @@ -76,7 +76,15 @@ export const SelectImportPage = () => { const finishOnboarding = useCallback(() => { setIsSpotlightActive(false); - setTeamOnboarding(); + setTeamOnboarding() + .then(({ errors }) => { + if (errors?.length) { + throw new Error(errors[0].message); + } + }) + .catch((e) => { + console.error('Error while setting team onboarding', e); + }); }, []); const { changedProjects, setChangedProjects } = useProjects(projects); @@ -149,12 +157,16 @@ export const SelectImportPage = () => { useEffect(() => { if (groupId !== DEFAULT_GROUP_ID) { - fetchGroupProjects(); + fetchGroupProjects().catch((e) => { + console.error('Error while fetching group projects', e); + }); } }, [page, groupId, search]); useEffect(() => { - fetchGroups(); + fetchGroups().catch((e) => { + console.log('Error while fetching groups', e); + }); startOnboarding(); }, []); @@ -249,8 +261,8 @@ export const SelectImportPage = () => { setSearch(value); }; - const handleNavigateToConnectedPage = () => { - router.navigate('/compass/components'); + const handleNavigateToConnectedPage = async () => { + await router.navigate('/compass/components'); }; const handleNavigateToImportProgressPage = () => { diff --git a/ui/src/components/SelectImportPage/screens/SelectProjectsScreen/index.tsx b/ui/src/components/SelectImportPage/screens/SelectProjectsScreen/index.tsx index 91e1162..0d3c5c4 100644 --- a/ui/src/components/SelectImportPage/screens/SelectProjectsScreen/index.tsx +++ b/ui/src/components/SelectImportPage/screens/SelectProjectsScreen/index.tsx @@ -1,11 +1,11 @@ import { Dispatch, SetStateAction, useMemo } from 'react'; import Button, { LoadingButton } from '@atlaskit/button'; import Select from '@atlaskit/select'; - +import { Inline } from '@atlaskit/primitives'; +import Spinner from '@atlaskit/spinner'; import { Search } from '../../../Search'; import { ProjectsImportTable } from '../../../ProjectsImportTable'; import { - ButtonWrapper, GroupSelectorWrapper, Header, OverrideDescription, @@ -14,12 +14,14 @@ import { Wrapper, } from '../../styles'; import { CompassComponentTypeOption, ComponentTypesResult, ProjectImportSelection } from '../../../../services/types'; -import { CenterWrapper } from '../../../styles'; +import { ButtonWrapper, Divider } from '../../../styles'; import { GitlabAPIGroup } from '../../../../types'; import { buildGroupsSelectorOptions, SelectorItem } from './buildGroupsSelectorOptions'; import { SelectOwnerTeamOption } from '../../../OwnerTeamSelect/types'; import { TeamsForImportResult } from '../../../../hooks/useTeamsForImport'; +const projectsToImportMessage = (projCount: number) => (projCount === 1 ? 'project selected' : 'projects selected'); + type Props = { projects: ProjectImportSelection[]; isProjectsLoading: boolean; @@ -78,66 +80,67 @@ export const SelectProjectsScreen = ({
Select projects
- By importing projects as components, you can track them, manage them via configuration files,
- and bring in rich, real-time component data such as metrics, directly into Compass. + By importing projects as components, you can track them, manage them via configuration files, and bring in rich, + real-time component data such as metrics, directly into Compass.
- <> - - - handleChangeGroup(e)} + inputId='select-group' + className='single-select' + classNamePrefix='react-select' + placeholder='Select group' + options={groupSelectorOptions} + /> + + + + + + + {projects.length !== 0 ? ( + <> + + +

+ {Object.keys(selectedProjects).length}{' '} + {projectsToImportMessage(Object.keys(selectedProjects).length)} +

+ {totalProjects > projects.length ? ( + + ) : null} + + + + Select + + +
+ + ) : null}
); }; diff --git a/ui/src/components/SelectImportPage/screens/__tests__/SelectProjectsScreen.test.tsx b/ui/src/components/SelectImportPage/screens/__tests__/SelectProjectsScreen.test.tsx index 0f60ca2..9d70b9b 100644 --- a/ui/src/components/SelectImportPage/screens/__tests__/SelectProjectsScreen.test.tsx +++ b/ui/src/components/SelectImportPage/screens/__tests__/SelectProjectsScreen.test.tsx @@ -101,8 +101,8 @@ describe('SelectProjectsScreen', () => { expect(queryByTestId('load-more-button')).toBeNull(); }); - it('should disabled load more button when all projects are rendered', () => { - const { getByTestId } = render( + it('should remove load more button when all projects are rendered', () => { + const { queryByTestId } = render( { />, ); - expect(getByTestId('load-more-button')).toHaveProperty('disabled', true); + expect(queryByTestId('load-more-button')).toBeNull(); }); it('should show an error message per component type dropdown when component types result is empty.', () => { diff --git a/ui/src/components/SelectImportPage/styles.ts b/ui/src/components/SelectImportPage/styles.ts index 0fcd745..b8dcdbc 100644 --- a/ui/src/components/SelectImportPage/styles.ts +++ b/ui/src/components/SelectImportPage/styles.ts @@ -9,7 +9,7 @@ export const ButtonWrapper = styled.div` display: flex; justify-content: flex-end; align-items: center; - margin: ${gridSize() * 4}px 0px; + margin: ${gridSize() * -2}px 0px; > button:not(:first-child) { margin-left: ${gridSize()}px; } diff --git a/ui/src/components/styles.ts b/ui/src/components/styles.ts index 3cfd794..2020b24 100644 --- a/ui/src/components/styles.ts +++ b/ui/src/components/styles.ts @@ -1,8 +1,8 @@ import styled, { css } from 'styled-components'; import { h400 } from '@atlaskit/theme/typography'; -import { N200, N90, N900 } from '@atlaskit/theme/colors'; -import { gridSize } from '@atlaskit/theme'; +import { N200, N90, N900, N40 } from '@atlaskit/theme/colors'; +import { gridSize, borderRadius } from '@atlaskit/theme'; import { token } from '@atlaskit/tokens'; export const CenterWrapper = styled.div` @@ -10,6 +10,24 @@ export const CenterWrapper = styled.div` justify-content: center; `; +export const ButtonWrapper = styled.div` + display: flex; + justify-content: flex-end; + align-items: center; + margin: ${gridSize() * -2}px 0px; + > button:not(:first-child) { + margin-left: ${gridSize()}px; + margin-right: ${gridSize()}px; + } +`; + +export const Divider = styled.hr` + border: none; + background-color: ${token('color.border', N40)}; + height: 2px; + border-radius: ${borderRadius}px; +`; + export const SectionWrapper = styled.div` padding-top: ${gridSize() * 1.5}px; padding-bottom: ${gridSize() * 1.5}px; @@ -65,10 +83,18 @@ const disableLastHeaderCellStylingForSpotlight = css` export const TableWrapper = styled.div` margin-top: ${gridSize() * 4}px; - max-height: 60vh; + max-height: 65vh; overflow: auto; padding-right: 12px; + /* Hide scrollbar */ + scrollbar-width: none; + -ms-overflow-style: none; + + ::-webkit-scrollbar { + display: none; + } + ${disableLastHeaderCellStylingForSpotlight} `; diff --git a/ui/src/context/AppContext.tsx b/ui/src/context/AppContext.tsx index 7257a45..fbe951d 100644 --- a/ui/src/context/AppContext.tsx +++ b/ui/src/context/AppContext.tsx @@ -41,7 +41,9 @@ export const AppContextProvider: FunctionComponent = ({ setModuleKey(context.moduleKey); } - getContext(); + getContext().catch((e) => { + console.error('Error while getting context', e); + }); setGroupsLoading(true); setAppIdLoading(true); diff --git a/ui/src/hooks/useFeatures.ts b/ui/src/hooks/useFeatures.ts index 032dc68..387496d 100644 --- a/ui/src/hooks/useFeatures.ts +++ b/ui/src/hooks/useFeatures.ts @@ -30,7 +30,9 @@ export const useFeatures = (): [FeaturesList, boolean, ErrorTypes | undefined] = }; useEffect(() => { - fetchFeatures(); + fetchFeatures().catch((e) => { + console.error('Error while fetching features', e); + }); }, []); return [features, loading, error]; diff --git a/ui/src/hooks/useImportProgress.tsx b/ui/src/hooks/useImportProgress.tsx index e8cb703..8dcc8be 100644 --- a/ui/src/hooks/useImportProgress.tsx +++ b/ui/src/hooks/useImportProgress.tsx @@ -41,7 +41,9 @@ export const useImportProgress = (): UseImportProgressType => { useInterval(() => { if (!isNeedToClearProgress && !error) { - fetchImportProgress(); + fetchImportProgress().catch((e) => { + console.error('Error while fetching import progress', e); + }); } else { setIsImportInProgress(false); setImportedRepositories(0); diff --git a/ui/src/hooks/useImportResult.ts b/ui/src/hooks/useImportResult.ts index f853d67..19d8ffa 100644 --- a/ui/src/hooks/useImportResult.ts +++ b/ui/src/hooks/useImportResult.ts @@ -41,7 +41,9 @@ export const useImportResult = (): UseImportResultType => { useEffect(() => { if (!isImportInProgress) { - fetchFailedImportedRepositories(); + fetchFailedImportedRepositories().catch((e) => + console.error('Error while fetching failed imported repositories', e), + ); } }, [isImportInProgress]); diff --git a/ui/yarn.lock b/ui/yarn.lock index cd4d1fb..3895993 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -25,6 +25,17 @@ dependencies: tslib "^2.0.0" +"@atlaskit/analytics-next@^10.1.0": + version "10.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/analytics-next/-/analytics-next-10.1.0.tgz#2616dc9f5b5f7e7c902722b27fdaf364f6c3f94a" + integrity sha512-W9vEAzyjij2ghVoU2VJ3QoYMHHbttXe0d6MLYNQUtOsxKSEeEMcgNkjlFXr2oizYGdOu5uPcOIICpw4XK2lYew== + dependencies: + "@atlaskit/analytics-next-stable-react-context" "1.0.1" + "@atlaskit/platform-feature-flags" "^0.3.0" + "@babel/runtime" "^7.0.0" + prop-types "^15.5.10" + use-memo-one "^1.1.1" + "@atlaskit/analytics-next@^8.0.0": version "8.3.1" resolved "https://registry.yarnpkg.com/@atlaskit/analytics-next/-/analytics-next-8.3.1.tgz#20bb3438ca879b38af6f379aa0b21bcfa5bbc723" @@ -85,6 +96,15 @@ "@babel/runtime" "^7.0.0" bind-event-listener "^2.1.1" +"@atlaskit/app-provider@^1.4.0": + version "1.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/app-provider/-/app-provider-1.4.0.tgz#ee890a3e62209045c7ebc1e5864daa801e7ce4e1" + integrity sha512-OheQY4ObKhawVhp2r/tTTL/a1eOa9QTkywaN2YMPEk+HiO3TinSxr3zu162nDlokdPvxo81AyzpAYtWYHBhz0Q== + dependencies: + "@atlaskit/tokens" "^1.58.0" + "@babel/runtime" "^7.0.0" + bind-event-listener "^3.0.0" + "@atlaskit/avatar@^21.4.2": version "21.4.4" resolved "https://registry.yarnpkg.com/@atlaskit/avatar/-/avatar-21.4.4.tgz#84c1a9cf246dbd1eae5a38ab911eae986a4ca5a1" @@ -213,12 +233,12 @@ "@babel/runtime" "^7.0.0" "@atlaskit/css-reset@^6.9.1": - version "6.10.1" - resolved "https://registry.yarnpkg.com/@atlaskit/css-reset/-/css-reset-6.10.1.tgz#7c118370e4f9716cf1dd896e91c5e1068e757217" - integrity sha512-0fJL7ZLZpbJ4ZYH6ncy8tLueZLCz97Yt6xBMUD+t2ux9Kw8PeguBoX8APdkgto7joPtZKGLuXhjFAmjF2Pt+vg== + version "6.11.1" + resolved "https://registry.yarnpkg.com/@atlaskit/css-reset/-/css-reset-6.11.1.tgz#c5a1f1ffe63515202e51d2d276225ac764a4340e" + integrity sha512-yGHQenpuNe5/oZ8i+6NdqhYvEEhpeUkVG1QNnpBoBWG5QFPKDFPQgab7njcB5YDmGoOG2GQ97rrcoQENv1JZbQ== dependencies: "@atlaskit/theme" "^13.0.0" - "@atlaskit/tokens" "^1.58.0" + "@atlaskit/tokens" "^2.0.0" "@babel/runtime" "^7.0.0" "@atlaskit/css@^0.1.0": @@ -230,6 +250,15 @@ "@babel/runtime" "^7.0.0" "@compiled/react" "^0.17.0" +"@atlaskit/css@^0.4.0": + version "0.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/css/-/css-0.4.0.tgz#a07246537be98ebd3ae862e6dc9788b9e9ab1263" + integrity sha512-bg5RaGieN3yRwFHRkk56bZ6/I0dpXNyISRz9rDfbp+yGso8lpIhubmLx4OXfbUUkUEE+9tMWZuEHJXPuCN4jdw== + dependencies: + "@atlaskit/tokens" "^1.58.0" + "@babel/runtime" "^7.0.0" + "@compiled/react" "^0.17.2" + "@atlaskit/ds-lib@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@atlaskit/ds-lib/-/ds-lib-1.4.0.tgz#a92387f78a27832821398821e728ef375f992a5d" @@ -253,9 +282,9 @@ "@babel/runtime" "^7.0.0" bind-event-listener "^2.1.1" -"@atlaskit/ds-lib@^2.4.0", "@atlaskit/ds-lib@^2.5.0": +"@atlaskit/ds-lib@^2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@atlaskit/ds-lib/-/ds-lib-2.5.0.tgz#c90404053e1f671231ede830fa203a70a414e1f7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/ds-lib/-/ds-lib-2.5.0.tgz#c90404053e1f671231ede830fa203a70a414e1f7" integrity sha512-HtTyNW2oNcOBhi92Y+QQ4pL7pCU6mTuKVbIUk7cwbxSVUL3XnaUT2hzODhHdDuzumw+DYo0B9z0IB4tZuAc6Iw== dependencies: "@atlaskit/platform-feature-flags" "^0.3.0" @@ -263,6 +292,16 @@ bind-event-listener "^3.0.0" react-uid "^2.2.0" +"@atlaskit/ds-lib@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@atlaskit/ds-lib/-/ds-lib-3.1.0.tgz#43955d06dee9c7ae8fcf1f5ff6695b9010751892" + integrity sha512-1os/bwBxDkR1bqrnuW2fZR1uAm/tncI8W55fR31GKfpzI/WgmWABzzY9MdWim2kXjR4rsE0GvfjoNMJhJvfUVQ== + dependencies: + "@atlaskit/platform-feature-flags" "^0.3.0" + "@babel/runtime" "^7.0.0" + bind-event-listener "^3.0.0" + react-uid "^2.2.0" + "@atlaskit/dynamic-table@^14.5.4": version "14.5.4" resolved "https://registry.yarnpkg.com/@atlaskit/dynamic-table/-/dynamic-table-14.5.4.tgz#da3ad63bc451253005cbd95bb6860e8cfa50b435" @@ -527,7 +566,7 @@ "@atlaskit/platform-feature-flags@^0.3.0": version "0.3.0" - resolved "https://registry.yarnpkg.com/@atlaskit/platform-feature-flags/-/platform-feature-flags-0.3.0.tgz#94dfa0a4ef0a140f6ab0a6de006464de925ecea7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/platform-feature-flags/-/platform-feature-flags-0.3.0.tgz#94dfa0a4ef0a140f6ab0a6de006464de925ecea7" integrity sha512-/0u5fFJ0Rw2j4M5wzsXgaHO6Ey12oekPCDTRvmmAIp4GO9T2Swbl80bavLAPSOmSHMhHTSuvRxiJveZXfQ21IQ== dependencies: "@babel/runtime" "^7.0.0" @@ -577,6 +616,25 @@ "@atlaskit/theme" "^12.6.0" "@babel/runtime" "^7.0.0" +"@atlaskit/primitives@^12.1.0": + version "12.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/primitives/-/primitives-12.1.0.tgz#c328847f9c48fce7c1c1cb28764713a2fde6617c" + integrity sha512-+zZRWFxY9KIeobXu/6ckMVFM+nqnWnkvvc3PQ34B4x3H7U+ezIolpi+ZAFxQp30Y1P1q6K6SI4o6Te0PAzLyew== + dependencies: + "@atlaskit/analytics-next" "^10.1.0" + "@atlaskit/app-provider" "^1.4.0" + "@atlaskit/css" "^0.4.0" + "@atlaskit/ds-lib" "^2.5.0" + "@atlaskit/interaction-context" "^2.1.0" + "@atlaskit/tokens" "^1.59.0" + "@atlaskit/visually-hidden" "^1.5.0" + "@babel/runtime" "^7.0.0" + "@emotion/react" "^11.7.1" + "@emotion/serialize" "^1.1.0" + bind-event-listener "^3.0.0" + react-uid "^2.2.0" + tiny-invariant "^1.2.0" + "@atlaskit/primitives@^5.5.0": version "5.5.3" resolved "https://registry.yarnpkg.com/@atlaskit/primitives/-/primitives-5.5.3.tgz#35c813e4b1c9d3daf62058f0d1e96d3a23964f48" @@ -737,13 +795,13 @@ "@babel/runtime" "^7.0.0" "@atlaskit/theme@^13.0.0": - version "13.0.0" - resolved "https://registry.yarnpkg.com/@atlaskit/theme/-/theme-13.0.0.tgz#d59899b2ed3a596a7aa6adffd718ab871c961c12" - integrity sha512-tvyFtHrRDvEUvLM8B7f9O6vtqB5Aappev73jsU+Btp5oyDqIh/3SBeDWRR2n/AiROoWqhDBQoesUdNBi0+QB+A== + version "13.1.0" + resolved "https://registry.yarnpkg.com/@atlaskit/theme/-/theme-13.1.0.tgz#59f67ac754960f37cf65d4a29e2425c2fc473fd7" + integrity sha512-9HWU2Wf5DX1+OQKmqAeZqUPAe2BgNhyYhIlkQm2Vo8RxzvI0BDWyjafEro4MdUK8ZYqSfegd9wgk7qzIUF9ZaQ== dependencies: "@atlaskit/codemod-utils" "^4.2.0" - "@atlaskit/ds-lib" "^2.4.0" - "@atlaskit/tokens" "^1.58.0" + "@atlaskit/ds-lib" "^3.1.0" + "@atlaskit/tokens" "^2.0.0" "@babel/runtime" "^7.0.0" "@atlaskit/tokens@^0.10.0": @@ -823,9 +881,9 @@ "@babel/types" "^7.20.0" bind-event-listener "^2.1.1" -"@atlaskit/tokens@^1.58.0": +"@atlaskit/tokens@^1.58.0", "@atlaskit/tokens@^1.59.0": version "1.59.1" - resolved "https://registry.yarnpkg.com/@atlaskit/tokens/-/tokens-1.59.1.tgz#0d01f166f90f20a880cea9d0b7f612c3744e024d" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/tokens/-/tokens-1.59.1.tgz#0d01f166f90f20a880cea9d0b7f612c3744e024d" integrity sha512-V4sFrp1MphHFDL5toDS3PMkcnwQoJJbTO/ioGSwvhFq9r46UoDnoaxSljl2ktWdEfdfqTq+ybq8gpKMutojjXA== dependencies: "@atlaskit/ds-lib" "^2.5.0" @@ -835,6 +893,18 @@ "@babel/types" "^7.20.0" bind-event-listener "^3.0.0" +"@atlaskit/tokens@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@atlaskit/tokens/-/tokens-2.0.3.tgz#d239a33cabacd461281b6194fbe0d04b7650addf" + integrity sha512-/dOD86x5esifV8Wca9wa2UId4Imq5pXY8VQD1OuxQ0KPgGOatImRXWLMx2T9RmHkeInMuMD2kwGVn9Lk8pxi1A== + dependencies: + "@atlaskit/ds-lib" "^3.1.0" + "@atlaskit/platform-feature-flags" "^0.3.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.20.0" + bind-event-listener "^3.0.0" + "@atlaskit/tooltip@^17.5.9": version "17.5.9" resolved "https://registry.yarnpkg.com/@atlaskit/tooltip/-/tooltip-17.5.9.tgz#d18a2855d17336faa8d08c49ffaf3d136a6770ea" @@ -885,6 +955,14 @@ "@babel/runtime" "^7.0.0" "@emotion/react" "^11.7.1" +"@atlaskit/visually-hidden@^1.5.0": + version "1.5.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@atlaskit/visually-hidden/-/visually-hidden-1.5.0.tgz#88f6c8e92d62182b680750e890a4af9ce3c084e2" + integrity sha512-Khq3mgRcCVwvF8LhDnC4kkmqhYwVcTcAs3YqLGOXufqnoc8H/SD0orjKdFYm1lv8mdz6c1YmyS1zRHCbIXYiDw== + dependencies: + "@babel/runtime" "^7.0.0" + "@emotion/react" "^11.7.1" + "@atlassian/forge-graphql@13.9.1": version "13.9.1" resolved "https://packages.atlassian.com/api/npm/atlassian-npm/@atlassian/forge-graphql/-/forge-graphql-13.9.1.tgz#3faf3daf0aedfc579375b3830aa870e8fe816517" @@ -2112,6 +2190,13 @@ dependencies: csstype "^3.1.2" +"@compiled/react@^0.17.2": + version "0.17.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@compiled/react/-/react-0.17.3.tgz#56ec899386f166a731ea3dd00d96786fb64692c2" + integrity sha512-aE7U1IGZrmxm/PNIWRcWjER9nYD4XsLoriSVXIFXXT9WMUUk5S82zjoGOwGQ7nirGNNOXgrCbuoS4JMfFVKqSg== + dependencies: + csstype "^3.1.2" + "@csstools/normalize.css@*": version "12.0.0" resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" @@ -2479,17 +2564,6 @@ "@types/node-fetch" "^2.6.9" node-fetch "2.7.0" -"@forge/api@^2.8.1": - version "2.11.0" - resolved "https://registry.yarnpkg.com/@forge/api/-/api-2.11.0.tgz#7cb0bbf4eb661228100e4ba1fdb1ea71a66dadd2" - integrity sha512-FcXELcnD4g1Ohjx1NA5ATXt+OM9WE60TsKk94UwGn/aEq2tLuupIFCAjD0Z1D3ekQOKx81WuvCDPlNE4rm7suw== - dependencies: - "@forge/auth" "^0.0.1" - "@forge/egress" "^1.1.2" - "@forge/storage" "^1.3.1" - "@types/node-fetch" "^2.5.7" - node-fetch "2.6.7" - "@forge/auth@0.0.5": version "0.0.5" resolved "https://registry.yarnpkg.com/@forge/auth/-/auth-0.0.5.tgz#d8df38fc55a7508121bef2508f494ee4a81e8072" @@ -2497,17 +2571,10 @@ dependencies: tslib "^2.6.2" -"@forge/auth@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@forge/auth/-/auth-0.0.1.tgz#3fb4e82e90bd555d4ae9ef45b3aed6782a282d0c" - integrity sha512-twZjWbIk+PrW2XzrUfVCzYhh1qe5igS4h9NpapZLHNm2CaCi1gjh8klVcGJijcYJWT1Sj6Qr9gBUtkZjCinJXw== - dependencies: - tslib "^1.11.0" - -"@forge/bridge@^2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@forge/bridge/-/bridge-2.6.0.tgz#ba83161c6a2d2139bf91dc9bcd8e491718143dc3" - integrity sha512-DNzRCR1UUYU7Mob0WoSGFQrxOt7akeTB+yZppxpBHNkosTnP+CXK39hWIf2huzQBZOsh7baE8oeJFcspzv+H+w== +"@forge/bridge@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@forge/bridge/-/bridge-3.5.0.tgz#3c32691406f674624ece9f7055f61e3a1cbc2df3" + integrity sha512-g7XoM50giYsRNU5nJQthOzmtvO4qxyhIC2jklYCOiCntWCee79gAzxareeNNmEggXGXqoDUZpa20ipTk+bryFA== dependencies: "@types/history" "^4.7.11" @@ -2518,23 +2585,11 @@ dependencies: minimatch "^9.0.3" -"@forge/egress@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@forge/egress/-/egress-1.1.2.tgz#8e94c41ef4f5f38c71aad0823eabc08356ae4bfb" - integrity sha512-gyDuvsz3VRh6Cb++WLJNRcucD/FBgAu9txHLGB1cYzb49094w5mgrte2BaAYGBNNjy3ZdgbgoRt+UclEX6EqKA== - dependencies: - minimatch "^5.1.0" - "@forge/storage@1.5.13": version "1.5.13" resolved "https://registry.yarnpkg.com/@forge/storage/-/storage-1.5.13.tgz#e94551f7cc34d66e850254ad8e126b7b1846a96a" integrity sha512-V9BSggOxeu/r0LMHLwLTndvTkxwn57UAF4Q6zQ+huJ0Q6UGKjuo7eBtw4JTH4bQFPrAqj1Kh64ebtK6F3naN+w== -"@forge/storage@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@forge/storage/-/storage-1.3.1.tgz#e4d8f2811654de961ce93deacdf4cc4a4817fb50" - integrity sha512-BU1qU0R08FH68MynaF409sp6mt3Ps8+XxyMk4Lsh9PYwYxMOpz5ynczv/DY0331G2n0LMBS1nVsJ9q88PFxI/Q== - "@forge/util@1.3.3": version "1.3.3" resolved "https://registry.yarnpkg.com/@forge/util/-/util-1.3.3.tgz#f9b6d955d66deeaad6a81a09ca4799ce69be94a6" @@ -3290,14 +3345,6 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/node-fetch@^2.5.7": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" - integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - "@types/node-fetch@^2.6.9": version "2.6.9" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.9.tgz#15f529d247f1ede1824f7e7acdaa192d5f28071e" @@ -4387,7 +4434,7 @@ bind-event-listener@^2.1.1: bind-event-listener@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/bind-event-listener/-/bind-event-listener-3.0.0.tgz#c90f9a7fcb65cac21045f810c20ef7e647a74921" + resolved "https://packages.atlassian.com/api/npm/npm-remote/bind-event-listener/-/bind-event-listener-3.0.0.tgz#c90f9a7fcb65cac21045f810c20ef7e647a74921" integrity sha512-PJvH288AWQhKs2v9zyfYdPzlPqf5bXbGMmhmUIY9x4dAUGIWgomO771oBQNwJnMQSnUIXhKu6sgzpBRXTlvb8Q== bluebird@^3.5.5: @@ -8009,13 +8056,6 @@ minimatch@^3.0.4, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.1.0: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - minimatch@^9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" @@ -8091,13 +8131,6 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - node-fetch@2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -10597,7 +10630,7 @@ tsconfig-paths@^3.12.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.11.0, tslib@^1.8.1: +tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== diff --git a/yarn.lock b/yarn.lock index a6290c6..b3127d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,16 +18,6 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@apidevtools/json-schema-ref-parser@9.0.9": - version "9.0.9" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" - integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== - dependencies: - "@jsdevtools/ono" "^7.1.3" - "@types/json-schema" "^7.0.6" - call-me-maybe "^1.0.1" - js-yaml "^4.1.0" - "@atlaskit/ds-lib@^2.2.0": version "2.2.3" resolved "https://registry.yarnpkg.com/@atlaskit/ds-lib/-/ds-lib-2.2.3.tgz#fc65a829b45ee0a26c9c6c97072e2d570214aec7" @@ -67,22 +57,10 @@ "@babel/types" "^7.20.0" bind-event-listener "^2.1.1" -"@atlaskit/tokens@^1.29.1": - version "1.29.2" - resolved "https://registry.yarnpkg.com/@atlaskit/tokens/-/tokens-1.29.2.tgz#0f909d5315c002bcda6349039d11c544c0c23351" - integrity sha512-gxJSfvpDPmVDPt76swB1GFPhrAlKcKnmKtyP/I18amBbvvW3dmcPWJn94f1e78Aax363ozfcmGbsYj/NK3bZ6A== - dependencies: - "@atlaskit/ds-lib" "^2.2.0" - "@atlaskit/platform-feature-flags" "^0.2.0" - "@babel/runtime" "^7.0.0" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.20.0" - bind-event-listener "^2.1.1" - -"@atlassian/forge-graphql@13.9.2": - version "13.9.2" - resolved "https://packages.atlassian.com/api/npm/atlassian-npm/@atlassian/forge-graphql/-/forge-graphql-13.9.2.tgz#9ea2e6882c88d7eb48e3f7a4038a814f376f708e" - integrity sha512-Mx4vCx7kBUwD8vGjQkt5e/Hj6DR+kKJhUc+fKkflc48vMN77drWR6AnbAuIVu+44BEsWJU2H0vm2oCAdzVAtQg== +"@atlassian/forge-graphql@13.12.1": + version "13.12.1" + resolved "https://packages.atlassian.com/api/npm/atlassian-npm/@atlassian/forge-graphql/-/forge-graphql-13.12.1.tgz#94f90857297445b43144c5af31fab1e57422c3d7" + integrity sha512-M4+f60iMdcM95/GRAR0CokwRKA/Ag6a5q3XAAaMPcMVkDDV+h/Hec1lh6Mfr1CPM0COhu3e9D23RBrt9w4RZ4Q== dependencies: "@forge/api" "^2.21.0" fs "^0.0.1-security" @@ -98,7 +76,7 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.4": +"@babel/code-frame@^7.22.13": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.4.tgz#03ae5af150be94392cb5c7ccd97db5a19a5da6aa" integrity sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA== @@ -106,23 +84,23 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/compat-data@^7.22.9": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.3.tgz#3febd552541e62b5e883a25eb3effd7c7379db11" - integrity sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ== +"@babel/compat-data@^7.25.2": + version "7.25.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" + integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.17.10" @@ -145,21 +123,21 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/core@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.3.tgz#5ec09c8803b91f51cc887dedc2654a35852849c9" - integrity sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew== +"@babel/core@^7.24.0": + version "7.25.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.3" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.2" - "@babel/parser" "^7.23.3" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.3" - "@babel/types" "^7.23.3" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -185,24 +163,14 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/generator@^7.23.3", "@babel/generator@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.4.tgz#4a41377d8566ec18f807f42962a7f3551de83d1c" - integrity sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ== +"@babel/generator@^7.25.0", "@babel/generator@^7.25.6": + version "7.25.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" + integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== dependencies: - "@babel/types" "^7.23.4" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.5.tgz#17d0a1ea6b62f351d281350a5f80b87a810c4755" - integrity sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA== - dependencies: - "@babel/types" "^7.23.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" + "@babel/types" "^7.25.6" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.22.5": @@ -212,6 +180,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-compilation-targets@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" @@ -222,14 +197,14 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" - integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== +"@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.15" - browserslist "^4.21.9" + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" lru-cache "^5.1.1" semver "^6.3.1" @@ -248,6 +223,19 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.7": + version "7.25.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz#57eaf1af38be4224a9d9dd01ddde05b741f50e14" + integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/traverse" "^7.25.4" + semver "^6.3.1" + "@babel/helper-environment-visitor@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" @@ -268,7 +256,7 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.17.0" -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.22.5": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -297,6 +285,14 @@ dependencies: "@babel/types" "^7.23.0" +"@babel/helper-member-expression-to-functions@^7.24.8": + version "7.24.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" + integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== + dependencies: + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.8" + "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -311,6 +307,14 @@ dependencies: "@babel/types" "^7.22.15" +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-module-transforms@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" @@ -336,6 +340,16 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" @@ -343,6 +357,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" @@ -353,6 +374,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8": + version "7.24.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + "@babel/helper-replace-supers@^7.22.9": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" @@ -362,6 +388,15 @@ "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" +"@babel/helper-replace-supers@^7.25.0": + version "7.25.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" + integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/traverse" "^7.25.0" + "@babel/helper-simple-access@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" @@ -376,6 +411,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" @@ -383,6 +426,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -407,6 +458,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" @@ -422,6 +478,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" @@ -432,6 +493,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + "@babel/helpers@^7.17.9": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" @@ -441,14 +507,13 @@ "@babel/traverse" "^7.17.9" "@babel/types" "^7.17.0" -"@babel/helpers@^7.23.2": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.4.tgz#7d2cfb969aa43222032193accd7329851facf3c1" - integrity sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw== +"@babel/helpers@^7.25.0": + version "7.25.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60" + integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.4" - "@babel/types" "^7.23.4" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" "@babel/highlight@^7.16.7": version "7.17.9" @@ -468,12 +533,22 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== -"@babel/parser@^7.22.15", "@babel/parser@^7.23.3", "@babel/parser@^7.23.4": +"@babel/parser@^7.22.15": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.4.tgz#409fbe690c333bb70187e2de4021e1e47a026661" integrity sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ== @@ -483,10 +558,12 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.16.tgz#180aead7f247305cce6551bea2720934e2fa2c95" integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA== -"@babel/parser@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.5.tgz#37dee97c4752af148e1d38c34b856b2507660563" - integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== +"@babel/parser@^7.25.0", "@babel/parser@^7.25.6": + version "7.25.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== + dependencies: + "@babel/types" "^7.25.6" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -537,6 +614,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -608,13 +692,13 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.23.3": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" - integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== +"@babel/plugin-transform-class-static-block@^7.23.4": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-transform-modules-commonjs@^7.23.3": @@ -626,33 +710,33 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-numeric-separator@^7.23.3": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" - integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== +"@babel/plugin-transform-numeric-separator@^7.23.4": + version "7.24.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-optional-chaining@^7.23.3": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" - integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== +"@babel/plugin-transform-optional-chaining@^7.23.4": + version "7.24.8" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" + integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-react-jsx@^7.22.15": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== +"@babel/plugin-transform-react-jsx@^7.23.4": + version "7.25.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a" + integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/types" "^7.25.2" "@babel/plugin-transform-typescript@^7.23.3": version "7.23.4" @@ -690,7 +774,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.7.6": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== @@ -715,6 +799,15 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" +"@babel/template@^7.25.0": + version "7.25.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" @@ -747,36 +840,17 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.23.2": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.5.tgz#f546bf9aba9ef2b042c0e00d245990c15508e7ec" - integrity sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.5" - "@babel/types" "^7.23.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.23.3", "@babel/traverse@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.4.tgz#c2790f7edf106d059a0098770fe70801417f3f85" - integrity sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg== - dependencies: - "@babel/code-frame" "^7.23.4" - "@babel/generator" "^7.23.4" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.4" - "@babel/types" "^7.23.4" - debug "^4.1.0" +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.4": + version "7.25.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" + integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.6" + "@babel/parser" "^7.25.6" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + debug "^4.3.1" globals "^11.1.0" "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3": @@ -796,7 +870,7 @@ "@babel/helper-validator-identifier" "^7.22.19" to-fast-properties "^2.0.0" -"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.4": +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.4.tgz#7206a1810fc512a7f7f7d4dace4cb4c1c9dbfb8e" integrity sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ== @@ -805,13 +879,13 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@babel/types@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.5.tgz#48d730a00c95109fa4393352705954d74fb5b602" - integrity sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w== +"@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6": + version "7.25.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -824,13 +898,6 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - "@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" @@ -858,27 +925,28 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@forge/api@2.11.0", "@forge/api@^2.8.1": - version "2.11.0" - resolved "https://registry.yarnpkg.com/@forge/api/-/api-2.11.0.tgz#7cb0bbf4eb661228100e4ba1fdb1ea71a66dadd2" - integrity sha512-FcXELcnD4g1Ohjx1NA5ATXt+OM9WE60TsKk94UwGn/aEq2tLuupIFCAjD0Z1D3ekQOKx81WuvCDPlNE4rm7suw== +"@forge/api@3.9.1": + version "3.9.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/api/-/api-3.9.1.tgz#8ee05217006e979817b89d753ff9465f614646d5" + integrity sha512-FUQ0WMZ3lZOe/7H5BAA4hhnm7Q4/KAIMuK2y3vlh9gp55n176zRwY/MvvNWmi/QIi1mHRQsXErAMbPM+dmw3hA== dependencies: - "@forge/auth" "^0.0.1" - "@forge/egress" "^1.1.2" - "@forge/storage" "^1.3.1" - "@types/node-fetch" "^2.5.7" - node-fetch "2.6.7" + "@forge/auth" "0.0.5" + "@forge/egress" "1.2.13" + "@forge/storage" "1.5.15" + "@forge/util" "1.4.4" + "@types/node-fetch" "^2.6.11" + node-fetch "2.7.0" -"@forge/api@2.20.1": - version "2.20.1" - resolved "https://registry.yarnpkg.com/@forge/api/-/api-2.20.1.tgz#4d5a7a1bdd994fc689ea886177c1c568ae4333de" - integrity sha512-UmEWfsjnaq+xrodlKYZQeaeTI3Ox/gx1recX65i/K643C96uGJAiEItrbfsvsyw0ToYwjgzotGB0mDqOr0eKww== +"@forge/api@3.9.2", "@forge/api@^3.9.1": + version "3.9.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/api/-/api-3.9.2.tgz#5b2634aae778201c0bd43d65e4a17ea46aeccc27" + integrity sha512-KyjmHkyZLumb2qcSble4A/gHrH0blx+Mn3Zrs+4JlBYgs+iUFp5HW3o2Ui8ITBN+xtnVwQg8KAz1D88foGtW8A== dependencies: "@forge/auth" "0.0.5" - "@forge/egress" "1.2.9" - "@forge/storage" "1.5.13" - "@forge/util" "1.3.3" - "@types/node-fetch" "^2.6.9" + "@forge/egress" "1.2.13" + "@forge/storage" "1.5.15" + "@forge/util" "1.4.4" + "@types/node-fetch" "^2.6.11" node-fetch "2.7.0" "@forge/api@^2.21.0": @@ -893,16 +961,6 @@ "@types/node-fetch" "^2.6.9" node-fetch "2.7.0" -"@forge/api@^2.6.1": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@forge/api/-/api-2.6.1.tgz#8bed707ac395795feacc17e46310e78a491f4005" - integrity sha512-HFw4BUr66VhKO7W6P1Vnh638kvO7RxJB92tDRYPD8DsJ8NC4GzgPxrgBNZDOFhvlIqfddTnE0nSnNmj+XvO9ug== - dependencies: - "@forge/auth" "^0.0.1" - "@forge/storage" "^1.2.0" - "@types/node-fetch" "^2.5.7" - node-fetch "2.6.1" - "@forge/auth@0.0.5": version "0.0.5" resolved "https://registry.yarnpkg.com/@forge/auth/-/auth-0.0.5.tgz#d8df38fc55a7508121bef2508f494ee4a81e8072" @@ -910,43 +968,35 @@ dependencies: tslib "^2.6.2" -"@forge/auth@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@forge/auth/-/auth-0.0.1.tgz#3fb4e82e90bd555d4ae9ef45b3aed6782a282d0c" - integrity sha512-twZjWbIk+PrW2XzrUfVCzYhh1qe5igS4h9NpapZLHNm2CaCi1gjh8klVcGJijcYJWT1Sj6Qr9gBUtkZjCinJXw== - dependencies: - tslib "^1.11.0" - -"@forge/babel-plugin-transform-ui@1.1.12": - version "1.1.12" - resolved "https://registry.yarnpkg.com/@forge/babel-plugin-transform-ui/-/babel-plugin-transform-ui-1.1.12.tgz#2b5aab10a1518d8c7744ab1ea65206620d0fc32a" - integrity sha512-xHZDDESzaZqrhZk4TLFXwUsEp2YtFqHDkHNDR6MxHf2+gkfIb9ilHFE7k26NI55MIKAUJpHOhSQVAyDqukG6Cw== +"@forge/babel-plugin-transform-ui@1.1.18": + version "1.1.18" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/babel-plugin-transform-ui/-/babel-plugin-transform-ui-1.1.18.tgz#1135eb9133061ed8358dff6b22487b02867715a4" + integrity sha512-zG50ZRzbKyWHVb/XjI6iCIyyDNmSHdlclvehMjFZ/A3qpHExjSCjaszeY6gBDJKD2GORKKjQ3LS1UyRpiVVvkA== -"@forge/bridge@^2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@forge/bridge/-/bridge-2.6.0.tgz#ba83161c6a2d2139bf91dc9bcd8e491718143dc3" - integrity sha512-DNzRCR1UUYU7Mob0WoSGFQrxOt7akeTB+yZppxpBHNkosTnP+CXK39hWIf2huzQBZOsh7baE8oeJFcspzv+H+w== +"@forge/bridge@^3.5.0": + version "3.5.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/bridge/-/bridge-3.5.0.tgz#3c32691406f674624ece9f7055f61e3a1cbc2df3" + integrity sha512-g7XoM50giYsRNU5nJQthOzmtvO4qxyhIC2jklYCOiCntWCee79gAzxareeNNmEggXGXqoDUZpa20ipTk+bryFA== dependencies: "@types/history" "^4.7.11" -"@forge/bundler@4.14.0": - version "4.14.0" - resolved "https://registry.yarnpkg.com/@forge/bundler/-/bundler-4.14.0.tgz#b72247756b0f72fbede31be3a3685a8bf076a954" - integrity sha512-0a3QbIKJgjaCYyw89OU3KqgQGE/M6DCZdlJSimrr//2DR2XuDH2VHURA5eeJRwZQoznNnLhtfyH4LkUl7/FUDw== +"@forge/bundler@4.18.0": + version "4.18.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/bundler/-/bundler-4.18.0.tgz#6456906064e1aab92b195c598aaa1c244286bca9" + integrity sha512-NpCaVPIRFoW0Ox/EZRZ4yqDHN1dix359q0Hf7af8aowpidwRwhOwuHUdhSpKU15bVF9ULv8jzc+rps4G0t8XDg== dependencies: - "@babel/core" "^7.23.3" + "@babel/core" "^7.24.0" "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.3" - "@babel/plugin-transform-numeric-separator" "^7.23.3" - "@babel/plugin-transform-optional-chaining" "^7.23.3" - "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-class-static-block" "^7.23.4" + "@babel/plugin-transform-numeric-separator" "^7.23.4" + "@babel/plugin-transform-optional-chaining" "^7.23.4" + "@babel/plugin-transform-react-jsx" "^7.23.4" "@babel/preset-typescript" "^7.23.3" - "@forge/api" "2.20.1" - "@forge/babel-plugin-transform-ui" "1.1.12" - "@forge/cli-shared" "3.21.0" - "@forge/lint" "3.7.5" - "@forge/node-runtime" "0.4.3" - "@forge/util" "1.3.3" + "@forge/api" "3.9.1" + "@forge/babel-plugin-transform-ui" "1.1.18" + "@forge/cli-shared" "5.4.0" + "@forge/lint" "5.3.2" + "@forge/util" "1.4.4" assert "^2.1.0" babel-loader "^8.3.0" browserify-zlib "^0.2.0" @@ -956,37 +1006,37 @@ console-browserify "^1.2.0" crypto-browserify "^3.12.0" events "^3.3.0" - html-webpack-plugin "^5.5.3" + html-webpack-plugin "^5.6.0" inherits "^2.0.4" memfs "^4.6.0" - nock "13.3.8" + nock "13.5.4" node-fetch "2.7.0" os-browserify "^0.3.0" path-browserify "^1.0.1" process "^0.11.10" punycode "^2.3.1" querystring-browser "^1.0.4" - readable-stream "^4.4.2" + readable-stream "^4.5.2" string_decoder "^1.3.0" text-encoder-lite "^2.0.0" timers-browserify "^2.0.12" - tmp "^0.2.1" - ts-loader "^9.5.0" - typescript "^4.9.5" + tmp "^0.2.3" + ts-loader "^9.5.1" + typescript "4.8.4" url "^0.11.3" util "^0.12.5" - webpack "5.89.0" - webpack-bundle-analyzer "^4.9.1" + webpack "5.90.3" + webpack-bundle-analyzer "^4.10.1" whatwg-url "^12.0.1" -"@forge/cli-shared@3.21.0": - version "3.21.0" - resolved "https://registry.yarnpkg.com/@forge/cli-shared/-/cli-shared-3.21.0.tgz#c2e6890a6ec97aa8421865511819e56b93293ce3" - integrity sha512-QcRhMrSkzNThA7dRfSFu74hz6ywgna2UJv0IdworMzKYIXsbCKxKOqnMK8rQ3EaQYTt8StS/R9/ocntr1Xqbpw== +"@forge/cli-shared@5.4.0": + version "5.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/cli-shared/-/cli-shared-5.4.0.tgz#6924e8a5f993f6047a6ac2cb1b3bff82880bbc72" + integrity sha512-X/rHIdtikA4QrdWhCqJVOghKeVmjvkg6uJ9dMnaLY/E9gzKqQZeJOFV9Z9JOYEyGYQR0iA2BdxriFJNDOwZvyA== dependencies: - "@forge/manifest" "5.1.0" - "@forge/util" "1.3.3" - "@sentry/node" "^7.77.0" + "@forge/manifest" "7.6.0" + "@forge/util" "1.4.4" + "@sentry/node" "7.100.1" adm-zip "^0.5.10" array.prototype.flatmap "^1.3.2" case "^1.6.3" @@ -997,43 +1047,41 @@ cross-spawn "^7.0.3" env-paths "^2.2.1" figures "^3.2.0" - fp-ts "^2.16.1" - fs-extra "^11.1.1" + fp-ts "^2.16.2" + fs-extra "^11.2.0" get-folder-size "^2.0.1" glob "^10.3.10" graphql "^16.8.1" graphql-request "6.1.0" - ignore-walk "^6.0.3" inquirer "^8.2.6" - io-ts "^2.2.20" + io-ts "^2.2.21" keytar "^7.9.0" launchdarkly-node-client-sdk "^3.0.2" node-fetch "2.7.0" ora "^5.4.1" recursive-readdir "^2.2.3" - semver "^7.5.4" + semver "^7.6.0" terminal-link "^2.1.1" - tmp "^0.2.1" - typescript "^4.9.5" + tmp "^0.2.3" + typescript "4.8.4" yaml "^2.3.4" -"@forge/cli@^6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@forge/cli/-/cli-6.21.0.tgz#351ff5bab9a52f875ca849d1ae4a442c4c7bb65f" - integrity sha512-FB4Djp6Scg9d75FZOdSPEilgkoYPnXlNp23TO2yWQtkJr2ef3ztbgCG6Cls1G80o5LJjPIVyh9Mf+ay57avbow== - dependencies: - "@forge/bundler" "4.14.0" - "@forge/cli-shared" "3.21.0" - "@forge/egress" "1.2.9" - "@forge/lint" "3.7.5" - "@forge/manifest" "5.1.0" - "@forge/node-runtime" "0.4.3" - "@forge/runtime" "5.2.0" - "@forge/tunnel" "3.8.6" - "@forge/util" "1.3.3" - "@sentry/node" "^7.77.0" +"@forge/cli@^10.5.0": + version "10.5.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/cli/-/cli-10.5.0.tgz#f56e6980d236ef7e6e9683c7cf67fde0a9650ace" + integrity sha512-c6rirave4ko7AgTaKne9bzCdRECgeY7yAf1h9T4e4P35qM2s9NB6ZvOQ9q0Xpy2lv2JsDhHSaR4lnMv4huoFCw== + dependencies: + "@forge/bundler" "4.18.0" + "@forge/cli-shared" "5.4.0" + "@forge/egress" "1.2.13" + "@forge/lint" "5.3.2" + "@forge/manifest" "7.6.0" + "@forge/runtime" "5.10.1" + "@forge/tunnel" "5.4.0" + "@forge/util" "1.4.4" + "@sentry/node" "7.100.1" ajv "^8.12.0" - archiver "^6.0.1" + archiver "^6.0.2" case "^1.6.3" chalk "^4.1.2" cheerio "^0.22.0" @@ -1044,8 +1092,9 @@ dayjs "^1.11.10" didyoumean "^1.2.2" env-paths "^2.2.1" + exponential-backoff "^3.1.1" form-data "^4.0.0" - fs-extra "^11.1.1" + fs-extra "^11.2.0" hidefile "^3.0.0" latest-version "^7.0.0" lodash "^4.17.21" @@ -1055,15 +1104,15 @@ ora "^5.4.1" portfinder "^1.0.32" sanitize-filename "^1.6.3" - semver "^7.5.4" - tmp "^0.2.1" + semver "^7.6.0" + tmp "^0.2.3" tslib "^2.6.2" uuid "^9.0.1" -"@forge/csp@3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@forge/csp/-/csp-3.1.1.tgz#8850b12b4c30c3cd30ac064788135935d4a17536" - integrity sha512-i0BixGkc3pAEc8xaI80WwWNHoHHqolTmf8Vjm9Jm0kUEU9ad5og/tC1JXqvdlltx+nzAzcbzT5y5IdFIQny17Q== +"@forge/csp@3.3.0": + version "3.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/csp/-/csp-3.3.0.tgz#567d93002700c6625ac4417c472f04b29dada23d" + integrity sha512-ASEV9eCjSBjPDdt5h02GVrEzfpOwPHo90vbVgEbkmdVEk1SSpiYaR9d8p11eP8OQlHhzywH2Y57UvG/1vEsdcQ== dependencies: cheerio "^0.22.0" content-security-policy-parser "^0.4.1" @@ -1075,87 +1124,73 @@ dependencies: minimatch "^9.0.3" -"@forge/egress@1.2.9": - version "1.2.9" - resolved "https://registry.yarnpkg.com/@forge/egress/-/egress-1.2.9.tgz#9f432c14f0bb68db998b25ad037980fcfe21c39d" - integrity sha512-ubvieNqXOtPdJwTVCzddy87wSZT1oi8DJ2BNqgOd0/6F35vRQwlRE1AQ0QkgkRsnSGp0i8l1rYZ5G4GQE6wCkA== +"@forge/egress@1.2.13": + version "1.2.13" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/egress/-/egress-1.2.13.tgz#cf82f6bbb56410044d4f5a4e8eca93822871bda1" + integrity sha512-V9lhYFVbiWpC/8Qdzo6eBDFUnB8RCJ/d6YL9+vYUSlrYQLiSrUXgKhPQnbIUfNjoza9mnTyjEIEAhL5Mq4ZL0g== dependencies: minimatch "^9.0.3" -"@forge/egress@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@forge/egress/-/egress-1.1.2.tgz#8e94c41ef4f5f38c71aad0823eabc08356ae4bfb" - integrity sha512-gyDuvsz3VRh6Cb++WLJNRcucD/FBgAu9txHLGB1cYzb49094w5mgrte2BaAYGBNNjy3ZdgbgoRt+UclEX6EqKA== - dependencies: - minimatch "^5.1.0" - -"@forge/events@^0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@forge/events/-/events-0.5.3.tgz#8184a3e23360a0de7ea216470296b03024519e65" - integrity sha512-H7yupz9pOFPzsTu7Np0YuZmeHMNSKwrZbhmqeQBEj5L3djOHuLpgpKC9I63nkWPxLgvnzlw3thrvm5MdbQ1lOA== +"@forge/events@^0.9.1": + version "0.9.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/events/-/events-0.9.1.tgz#fe54c2b97b5207f12230be1f9177d1212b13be1f" + integrity sha512-/jg9BY+n83izshux0TZxpEPkTe9KolAS43uX04/soXEindr9jzs+yPj0AG8ZJ7Amf26mVCJqOvLvIZwZ75cW/g== dependencies: - "@forge/api" "^2.6.1" - uuid "^3.4.0" + "@forge/api" "3.9.1" + node-fetch "2.7.0" + uuid "^9.0.1" -"@forge/lint@3.7.5": - version "3.7.5" - resolved "https://registry.yarnpkg.com/@forge/lint/-/lint-3.7.5.tgz#3fac9ba4716b061c030ae2d078a4fda6b9e7e00f" - integrity sha512-zw/y0K6+4VFO9d8Eq4EndLKkNOyBX+Qlg/sB3Mna/pbVkJ0DpXM0uhX5smOr9/DjuzKBVzXbf+K6GGber/dFfQ== +"@forge/lint@5.3.2": + version "5.3.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/lint/-/lint-5.3.2.tgz#9d061ef2cb8d3bed70ebef17c4c473b73bea70e0" + integrity sha512-3guZTLtf1wqSMB4BMA+jMTUWGFqVa21Db/RqdUNmEDAGmUf5+SGiW7MvGH/sodN2G9BvsgrjZE11gCdjfONwdw== dependencies: - "@forge/cli-shared" "3.21.0" - "@forge/egress" "1.2.9" - "@forge/manifest" "5.1.0" + "@forge/cli-shared" "5.4.0" + "@forge/egress" "1.2.13" + "@forge/manifest" "7.6.0" "@typescript-eslint/typescript-estree" "^5.62.0" array.prototype.flatmap "^1.3.2" - atlassian-openapi "^1.0.17" + atlassian-openapi "^1.0.18" cross-spawn "^7.0.3" node-fetch "2.7.0" -"@forge/manifest@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@forge/manifest/-/manifest-5.1.0.tgz#105cb5179ffd60253a4116e5936166a2ad33aff4" - integrity sha512-JYoFvVGwkKzAr1jnLmjQrNhzAJrjYM13DWkQzDieCeSqWhhQBMqQOQGJLV3s8iT7ua/yTTknlMjHi/DZHsfHtA== +"@forge/manifest@7.6.0": + version "7.6.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/manifest/-/manifest-7.6.0.tgz#a204651635aae415b9f772981fef395e34594e16" + integrity sha512-1zvC9fVCRf1U7nNDWO1FZNR8YiTjmpmQuuyHLPXxenpjO6dHsooro/DeoJGORMFd4b4/uDndxiMu8VhjF/xZZg== dependencies: - "@forge/util" "1.3.3" + "@sentry/node" "7.100.1" ajv "^8.12.0" ajv-formats "2.1.1" cheerio "^0.22.0" glob "^10.3.10" - json-schema-to-typescript "^10.1.5" lodash "^4.17.21" - node-fetch "2.7.0" - typescript-json-schema "^0.62.0" yaml "^2.3.4" -"@forge/metrics@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@forge/metrics/-/metrics-0.1.1.tgz#2ebb46326f2edc7b1878b48281cb5d5d69ea6311" - integrity sha512-m+qBqZYIzQgzbbOme4+V7bs5GKpA0I92RfmYSUvF3uMrGz6hr+8vbyHIqjtBkEeSibbiBqiVYYzZijHQXFnREQ== - -"@forge/node-runtime@0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@forge/node-runtime/-/node-runtime-0.4.3.tgz#f22d02b138edf204a4ea885a0226cada760f6d04" - integrity sha512-8Nb/S+UaAxylm4O4oDp3PsgOX+rGMf+tXCX1O4Gjga3n/+7hgFAEecWbYU07jP2KV5AZmQ3xIFtG3EA9sC8TiA== +"@forge/metrics@0.2.18": + version "0.2.18" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/metrics/-/metrics-0.2.18.tgz#bf5068459e9876510be1f2a7babf75f3e5fce326" + integrity sha512-L4dPf1Pb8RjGgbLvk2zA1+rww6Uxp8Pa4O5YrWSrvrKvsT/m6nWKv1xrl6Qk5OTeBhp6He2Sf3/3wwJURT3U2A== dependencies: - "@forge/api" "2.20.1" - "@forge/runtime" "5.2.0" - uuid "^9.0.1" + "@forge/api" "3.9.2" + "@forge/runtime" "5.10.1" + "@forge/util" "1.4.4" -"@forge/resolver@^1.4.6": - version "1.4.10" - resolved "https://registry.yarnpkg.com/@forge/resolver/-/resolver-1.4.10.tgz#ad6173c23ca53f881c352d46d57ae615e62d4409" - integrity sha512-xMImRsEDh3mdriZuIypVneFTlttNCIG/TmlW/2M82TDUXORn16eG012jUDNVm9iZOietqQ+AINJhnJ6olLa44Q== +"@forge/resolver@^1.5.39": + version "1.5.39" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/resolver/-/resolver-1.5.39.tgz#061d26c3c3c9491778dea0a87e492c0a388cb807" + integrity sha512-5lxgST4pt2/LADwCC6ZF+XoRmFKdSsRQrtWOYW1AY+/UHoD2wehSJ84j7ZoZBoVZZ0c/cGAZaT974aWaFBSdxg== dependencies: - "@forge/api" "2.11.0" + "@forge/api" "3.9.1" -"@forge/runtime@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@forge/runtime/-/runtime-5.2.0.tgz#b78fb2b22a7c96f7d89910b027dbbfee0dbe61d1" - integrity sha512-OXEwHJ/Gr98UUYjkCPyK4xCfRiyknCUcSls3e27AvXO3mxRpDVUkMSAgs4V0jxD7uR0vYjVXvqi3x0eQEx8IFQ== +"@forge/runtime@5.10.1": + version "5.10.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/runtime/-/runtime-5.10.1.tgz#47a65233bce7055128dbdd9a5b2b6a6dabf8df35" + integrity sha512-YZQV2mOOhV9zxcsiQp1U+sDlYAUJVqexDMz1Mo4fHrZzb5LzliUtiNfuhNPKGkdJpfxCKsHeFIZoHNMEDxtpVA== dependencies: - "@forge/util" "1.3.3" - fp-ts "^2.16.1" - io-ts "^2.2.20" + "@forge/util" "1.4.4" + fp-ts "^2.16.2" + io-ts "^2.2.21" io-ts-reporters "^2.0.1" node-fetch "2.7.0" tslib "^2.6.2" @@ -1167,31 +1202,28 @@ resolved "https://registry.yarnpkg.com/@forge/storage/-/storage-1.5.13.tgz#e94551f7cc34d66e850254ad8e126b7b1846a96a" integrity sha512-V9BSggOxeu/r0LMHLwLTndvTkxwn57UAF4Q6zQ+huJ0Q6UGKjuo7eBtw4JTH4bQFPrAqj1Kh64ebtK6F3naN+w== -"@forge/storage@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@forge/storage/-/storage-1.2.0.tgz#6d048644f8d7a50e4411a1ee853f160da1dc5a2d" - integrity sha512-/pRNxvKcjv/nEShk6p3tSefmYDBjmInc9kUtvjsr183t8dF72gbSl70YVD73+DwCJYUkFsvsQ4zR7h93/K0oLw== - -"@forge/storage@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@forge/storage/-/storage-1.3.1.tgz#e4d8f2811654de961ce93deacdf4cc4a4817fb50" - integrity sha512-BU1qU0R08FH68MynaF409sp6mt3Ps8+XxyMk4Lsh9PYwYxMOpz5ynczv/DY0331G2n0LMBS1nVsJ9q88PFxI/Q== - -"@forge/tunnel@3.8.6": - version "3.8.6" - resolved "https://registry.yarnpkg.com/@forge/tunnel/-/tunnel-3.8.6.tgz#36ba4f57c101a503a8202838745c19a1c922d9d3" - integrity sha512-6M/v57N9A7V3kT4RBBAbM/y4QMdnw6ptrBQ/VNeAmzzZ11myLJlDPNn1JEMlIKNxUgyHBsb4H7EMGRNFuQyn6A== - dependencies: - "@forge/bundler" "4.14.0" - "@forge/cli-shared" "3.21.0" - "@forge/csp" "3.1.1" - "@forge/runtime" "5.2.0" - express "^4.18.2" +"@forge/storage@1.5.15": + version "1.5.15" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/storage/-/storage-1.5.15.tgz#821582dde8a714e8a650429f1b6c5d8ee1fd9194" + integrity sha512-n4AWXkzMA4Pv4nam+dTu7PHgDQtMwaAF2MalOWF323zGvYKS/gZJY+7efJq0DLP783iTfjvYT879EHhCrfvEXA== + +"@forge/tunnel@5.4.0": + version "5.4.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/tunnel/-/tunnel-5.4.0.tgz#bc6d35a0cf148947224f337c2600ba2e13b1d99c" + integrity sha512-Zo26n5xqHl17NtO/qzxjtRgCAyRz1912c1wt4dpRkVTdK+6K9SOK2qoT+jCUPmJVCOwd66QjMhbA6FaaswD2vw== + dependencies: + "@forge/bundler" "4.18.0" + "@forge/cli-shared" "5.4.0" + "@forge/csp" "3.3.0" + "@forge/runtime" "5.10.1" + chokidar "^3.6.0" + cloudflared "^0.5.2" + express "^4.18.3" express-intercept "^1.1.0" http-proxy-middleware "^2.0.6" - ngrok "^5.0.0-beta.2" node-cache "^5.1.2" - tmp "^0.2.1" + portfinder "^1.0.32" + tmp "^0.2.3" tslib "^2.6.2" uuid "^9.0.1" webpack-dev-server "^4.15.1" @@ -1214,6 +1246,15 @@ webpack "5.89.0" webpack-cli "^5.1.4" +"@forge/util@1.4.4": + version "1.4.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@forge/util/-/util-1.4.4.tgz#65720ed9b3753f1638baa61428319c3f8033ee66" + integrity sha512-A9XIIJGNZ2fGLmENy0UeAfEBYUXKkLdp4wSyhZeWuJPvWejasei1O5zNDsIPI4sfqimUGBS0Bm+1vteXqxNwLg== + dependencies: + ts-is-present "^1.2.2" + webpack "5.90.3" + webpack-cli "^5.1.4" + "@graphql-typed-document-node/core@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" @@ -1466,6 +1507,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.6" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" @@ -1486,6 +1536,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/source-map@^0.3.3": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" @@ -1504,14 +1559,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@0.3.9", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.17": version "0.3.20" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" @@ -1520,10 +1567,21 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jsdevtools/ono@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" - integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" @@ -1587,56 +1645,50 @@ resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.3.0.tgz#f8c75560d0dace4452dee1e31995e6396e61f3ee" integrity sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew== -"@sentry-internal/tracing@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.81.1.tgz#1180365cd8a9e18cb0f92e1ea970161840ec0e2e" - integrity sha512-E5xm27xrLXL10knH2EWDQsQYh5nb4SxxZzJ3sJwDGG9XGKzBdlp20UUhKqx00wixooVX9uCj3e4Jg8SvNB1hKg== +"@sentry-internal/tracing@7.100.1": + version "7.100.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@sentry-internal/tracing/-/tracing-7.100.1.tgz#4329492e50c390567197a4acbf7e3672b1db7820" + integrity sha512-+u9RRf5eL3StiyiRyAHZmdkAR7GTSGx4Mt4Lmi5NEtCcWlTGZ1QgW2r8ZbhouVmTiJkjhQgYCyej3cojtazeJg== dependencies: - "@sentry/core" "7.81.1" - "@sentry/types" "7.81.1" - "@sentry/utils" "7.81.1" + "@sentry/core" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" -"@sentry/core@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.81.1.tgz#082fd9122bf9a488c8e05b1754724ddbc2d5cf30" - integrity sha512-tU37yAmckOGCw/moWKSwekSCWWJP15O6luIq+u7wal22hE88F3Vc5Avo8SeF3upnPR+4ejaOFH+BJTr6bgrs6Q== +"@sentry/core@7.100.1": + version "7.100.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@sentry/core/-/core-7.100.1.tgz#7b8e101a931af8e8b3b2449534749f882772df4f" + integrity sha512-f+ItUge/o9AjlveQq0ZUbQauKlPH1FIJbC1TRaYLJ4KNfOdrsh8yZ29RmWv0cFJ/e+FGTr603gWpRPObF5rM8Q== dependencies: - "@sentry/types" "7.81.1" - "@sentry/utils" "7.81.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" -"@sentry/node@^7.77.0": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.81.1.tgz#3559ee1cef22f8220c907169cc60cc44744503b1" - integrity sha512-bKS3Mb95bar8AUEZSLKQ/RTSfFXo5sCSPNiBr5dDFuVljDFdkLq6NE3svG5bisrbENqfi0bqWsB4GZ7NHRTPbA== +"@sentry/node@7.100.1": + version "7.100.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@sentry/node/-/node-7.100.1.tgz#36195cc24090a71ec7d1c4513da63356ab44d784" + integrity sha512-jB6tBLr7BpgdE2SlYZu343vvpa5jMFnqyFlprr+jdDu/ayNF4idB0qFwQe8p4C6LI6M/MNDRLVOgPBiCjjZSpw== dependencies: - "@sentry-internal/tracing" "7.81.1" - "@sentry/core" "7.81.1" - "@sentry/types" "7.81.1" - "@sentry/utils" "7.81.1" - https-proxy-agent "^5.0.0" + "@sentry-internal/tracing" "7.100.1" + "@sentry/core" "7.100.1" + "@sentry/types" "7.100.1" + "@sentry/utils" "7.100.1" -"@sentry/types@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.81.1.tgz#2b2551fc291e1089651fd574a68f7c4175878bd5" - integrity sha512-dvJvGyctiaPMIQqa46k56Re5IODWMDxiHJ1UjBs/WYDLrmWFPGrEbyJ8w8CYLhYA+7qqrCyIZmHbWSTRIxstHw== +"@sentry/types@7.100.1": + version "7.100.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@sentry/types/-/types-7.100.1.tgz#1349b77269cecf4e80c087842575bd1a001e9995" + integrity sha512-fLM+LedHuKzOd8IhXBqaQuym+AA519MGjeczBa5kGakes/BbAsUMwsNfjsKQedp7Kh44RgYF99jwoRPK2oDrXw== -"@sentry/utils@7.81.1": - version "7.81.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.81.1.tgz#42f3e77baf90205cec1f8599eb8445a6918030bd" - integrity sha512-gq+MDXIirHKxNZ+c9/lVvCXd6y2zaZANujwlFggRH2u9SRiPaIXVilLpvMm4uJqmqBMEcY81ArujExtHvkbCqg== +"@sentry/utils@7.100.1": + version "7.100.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@sentry/utils/-/utils-7.100.1.tgz#6e26f3b06b1e485a2180f464ab3374ecb8d5e407" + integrity sha512-Ve6dXr1o6xiBe3VCoJgiutmBKrugryI65EZAbYto5XI+t+PjiLLf9wXtEMF24ZrwImo4Lv3E9Uqza+fWkEbw6A== dependencies: - "@sentry/types" "7.81.1" + "@sentry/types" "7.100.1" "@sinclair/typebox@^0.23.3": version "0.23.5" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== -"@sindresorhus/is@^4.0.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" - integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== - "@sindresorhus/is@^5.2.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" @@ -1656,13 +1708,6 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== - dependencies: - defer-to-connect "^2.0.0" - "@szmarczak/http-timer@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" @@ -1675,26 +1720,6 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" @@ -1743,16 +1768,6 @@ dependencies: "@types/node" "*" -"@types/cacheable-request@^6.0.1": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" - integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "^3.1.4" - "@types/node" "*" - "@types/responselike" "^1.0.0" - "@types/connect-history-api-fallback@^1.3.5": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" @@ -1801,6 +1816,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@^1.0.5": + version "1.0.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": version "4.17.41" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6" @@ -1821,14 +1841,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/glob@*": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" - "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -1846,7 +1858,7 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== -"@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.2": +"@types/http-cache-semantics@^4.0.2": version "4.0.4" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== @@ -1895,7 +1907,7 @@ resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -1905,18 +1917,6 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/keyv@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" - integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== - dependencies: - "@types/node" "*" - -"@types/lodash@^4.14.168": - version "4.14.202" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" - integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== - "@types/lodash@^4.14.182": version "4.14.182" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" @@ -1932,18 +1932,13 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/node-fetch@^2.5.7": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" - integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== +"@types/node-fetch@^2.6.11": + version "2.6.11" + resolved "https://packages.atlassian.com/api/npm/npm-remote/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" + integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== dependencies: "@types/node" "*" - form-data "^3.0.0" + form-data "^4.0.0" "@types/node-fetch@^2.6.9": version "2.6.9" @@ -1965,11 +1960,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== -"@types/node@^16.9.2": - version "16.18.64" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.64.tgz#cd4e41420b77b346695def5a342f6dea0f9d9329" - integrity sha512-TiY2gIDob8+QOPIcVpS0ZY+H1DVTfplBW6UgL2b4gOYbigIlKVIh6Lcv+7YDUciUTqhVLG91PrZBXW10IoBhtw== - "@types/prettier@^2.1.5": version "2.6.0" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" @@ -1985,13 +1975,6 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/responselike@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" - integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== - dependencies: - "@types/node" "*" - "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -2069,13 +2052,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/yauzl@^2.9.1": - version "2.10.3" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" - integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== - dependencies: - "@types/node" "*" - "@typescript-eslint/eslint-plugin@^5.14.0": version "5.22.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz#7b52a0de2e664044f28b36419210aea4ab619e2a" @@ -2393,7 +2369,7 @@ acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.0.0, acorn-walk@^8.1.1: +acorn-walk@^8.0.0: version "8.3.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== @@ -2408,7 +2384,7 @@ acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.0: +acorn@^8.2.4, acorn@^8.7.0: version "8.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== @@ -2528,11 +2504,6 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - anymatch@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -2566,10 +2537,10 @@ archiver-utils@^4.0.1: normalize-path "^3.0.0" readable-stream "^3.6.0" -archiver@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-6.0.1.tgz#d56968d4c09df309435adb5a1bbfc370dae48133" - integrity sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ== +archiver@^6.0.2: + version "6.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/archiver/-/archiver-6.0.2.tgz#f45e7598dfe48e834ac8c7a0c37033f826f5a639" + integrity sha512-UQ/2nW7NMl1G+1UnrLypQw1VdT9XZg/ECcKPq7l+STzStrSivFIXIp34D8M5zeNGW5NoOupdYCHv6VySCPNNlw== dependencies: archiver-utils "^4.0.1" async "^3.2.4" @@ -2587,11 +2558,6 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - arg@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" @@ -2747,10 +2713,10 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atlassian-openapi@^1.0.17: - version "1.0.17" - resolved "https://registry.yarnpkg.com/atlassian-openapi/-/atlassian-openapi-1.0.17.tgz#968ade998b65f50fc0ff9f0780707301344a351b" - integrity sha512-8aW0Xgl9mVdL9dCABSZAvCayMPyh6uVu86UzOat8Kc1qDMUtXn2OxcwDsJfm/qCtBSeZ+GE/PkFxx3ZRIp3hFg== +atlassian-openapi@^1.0.18: + version "1.0.19" + resolved "https://packages.atlassian.com/api/npm/npm-remote/atlassian-openapi/-/atlassian-openapi-1.0.19.tgz#7b2a22bfa9673c3c336b18f137b0654339454885" + integrity sha512-MVke8mhpYrfFrYv1Cz4BsUBBxuNMeyLla0dnEsyz1yiLm9wJqdDWHuEDrMaIxzNbloqW9tQgduG6b74htLJZuQ== dependencies: jsonpointer "^5.0.0" urijs "^1.19.10" @@ -2918,6 +2884,24 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" +body-parser@1.20.3: + version "1.20.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + bonjour-service@^1.0.11: version "1.1.1" resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" @@ -3037,15 +3021,15 @@ browserslist@^4.14.5, browserslist@^4.20.2: node-releases "^2.0.3" picocolors "^1.0.0" -browserslist@^4.21.9: - version "4.22.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" - integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== +browserslist@^4.21.10, browserslist@^4.23.1: + version "4.23.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== dependencies: - caniuse-lite "^1.0.30001541" - electron-to-chromium "^1.4.535" - node-releases "^2.0.13" - update-browserslist-db "^1.0.13" + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" bs-logger@0.x: version "0.2.6" @@ -3061,7 +3045,7 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-crc32@^0.2.1, buffer-crc32@~0.2.3: +buffer-crc32@^0.2.1: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= @@ -3102,11 +3086,6 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== - cacheable-lookup@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" @@ -3125,19 +3104,6 @@ cacheable-request@^10.2.8: normalize-url "^8.0.0" responselike "^3.0.0" -cacheable-request@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" - integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== - 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" - call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -3155,10 +3121,16 @@ call-bind@^1.0.4, call-bind@^1.0.5: get-intrinsic "^1.2.1" set-function-length "^1.1.1" -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= +call-bind@^1.0.7: + version "1.0.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" callsites@^3.0.0: version "3.1.0" @@ -3188,10 +3160,10 @@ caniuse-lite@^1.0.30001332: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== -caniuse-lite@^1.0.30001541: - version "1.0.30001564" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz#eaa8bbc58c0cbccdcb7b41186df39dd2ba591889" - integrity sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg== +caniuse-lite@^1.0.30001646: + version "1.0.30001663" + resolved "https://packages.atlassian.com/api/npm/npm-remote/caniuse-lite/-/caniuse-lite-1.0.30001663.tgz#1529a723505e429fdfd49532e9fc42273ba7fed7" + integrity sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA== case@^1.6.3: version "1.6.3" @@ -3262,6 +3234,21 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chokidar@^3.6.0: + version "3.6.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -3302,17 +3289,6 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-color@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.2.tgz#e295addbae470800def0254183c648531cdf4e3f" - integrity sha512-g4JYjrTW9MGtCziFNjkqp3IMpGhnJyeB0lOtRPjQkYhXzKYr6tYnXKyEVnMzITxhpbahsEW9KsxOYIDKwcsIBw== - dependencies: - d "^1.0.1" - es5-ext "^0.10.59" - es6-iterator "^2.0.3" - memoizee "^0.4.15" - timers-ext "^0.1.7" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -3364,15 +3340,6 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -3382,13 +3349,6 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - clone@2.x: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -3399,6 +3359,11 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +cloudflared@^0.5.2: + version "0.5.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cloudflared/-/cloudflared-0.5.3.tgz#828267f105a3a39ce9748ed4a92069de2e933229" + integrity sha512-v2Hxnm9uZsc3ub4hf7xEzn1MSovY2mGZR2SB/xrvMuV6l+YfFLbE8KYPNuEdpFOS6sWldOvy/bpNhKvMQKsM+Q== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3581,7 +3546,7 @@ content-security-policy-parser@^0.4.1: resolved "https://registry.yarnpkg.com/content-security-policy-parser/-/content-security-policy-parser-0.4.1.tgz#27b507649b1b75bc75f179df91919a869ee116b5" integrity sha512-NNJS8XPnx3OKr/CUOSwDSJw+lWTrZMYnclLKj0Y9CYOfJNJTWLFGPg3u2hYgbXMXKVRkZR2fbyReNQ1mUff/Qg== -content-type@~1.0.4: +content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== @@ -3608,6 +3573,11 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@0.6.0: + version "0.6.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + core-js-pure@^3.20.2: version "3.22.4" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.4.tgz#a992210f4cad8b32786b8654563776c56b0e0d0a" @@ -3662,11 +3632,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-fetch@^3.0.4: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" @@ -3755,14 +3720,6 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - damerau-levenshtein@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -3815,6 +3772,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.1: + version "4.3.7" + resolved "https://packages.atlassian.com/api/npm/npm-remote/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + decimal.js@^10.2.1: version "10.3.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" @@ -3861,7 +3825,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: +defer-to-connect@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== @@ -3875,6 +3839,15 @@ define-data-property@^1.0.1, define-data-property@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -3955,11 +3928,6 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -4125,10 +4093,10 @@ electron-to-chromium@^1.4.118: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.132.tgz#b64599eb018221e52e2e4129de103b03a413c55d" integrity sha512-JYdZUw/1068NWN+SwXQ7w6Ue0bWYGihvSUNNQwurvcDV/SM7vSiGZ3NuFvFgoEiCs4kB8xs3cX2an3wB7d4TBw== -electron-to-chromium@^1.4.535: - version "1.4.590" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.590.tgz#85a428fbabb77265a4804040837ed4f2538e3300" - integrity sha512-hohItzsQcG7/FBsviCYMtQwUSWvVF7NVqPOnJCErWsAshsP/CR2LAXdmq276RbESNdhxiAq5/vRo1g2pxGXVww== +electron-to-chromium@^1.5.4: + version "1.5.27" + resolved "https://packages.atlassian.com/api/npm/npm-remote/electron-to-chromium/-/electron-to-chromium-1.5.27.tgz#5203ce5d6054857d84ba84d3681cbe59132ade78" + integrity sha512-o37j1vZqCoEgBuWWXLHQgTN/KDKe7zwpiY5CPeq2RvUqOyJw9xnrULzZAEVQ5p4h+zjMk7hgtOoPdnLxr7m/jw== elliptic@^6.5.3: version "6.5.4" @@ -4168,6 +4136,11 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -4289,6 +4262,18 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.13" +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-module-lexer@^1.2.1: version "1.4.1" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" @@ -4319,47 +4304,16 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.59, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.61" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" - integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.1.2: + version "3.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4627,14 +4581,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -4698,6 +4644,11 @@ exponential-backoff@^3.1.0: resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.0.tgz#9409c7e579131f8bd4b32d7d8094a911040f2e68" integrity sha512-oBuz5SYz5zzyuHINoe9ooePwSu0xApKWgeNzok4hZ5YKXFh9zrQBEM15CXqoZkJJPuI2ArvqjPQd8UKJA753XA== +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + express-intercept@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/express-intercept/-/express-intercept-1.1.0.tgz#ff5621897cdfa81ae6d3f6ad66f2a46bc8720cfd" @@ -4705,7 +4656,7 @@ express-intercept@^1.1.0: dependencies: async-request-handler "^0.9.0" -express@^4.17.3, express@^4.18.2: +express@^4.17.3: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -4729,26 +4680,56 @@ express@^4.17.3, express@^4.18.2: methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +express@^4.18.3: + version "4.21.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915" + integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.6.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" - qs "6.11.0" + qs "6.13.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.2" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -4758,17 +4739,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extract-zip@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -4836,13 +4806,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== - dependencies: - pend "~1.2.0" - figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -4877,6 +4840,19 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" +finalhandler@1.3.1: + version "1.3.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" @@ -4969,10 +4945,10 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fp-ts@^2.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.1.tgz#6abc401ce42b65364ca8f0b0d995c5840c68a930" - integrity sha512-by7U5W8dkIzcvDofUcO42yl9JbnHTEDBrzu3pt5fKT+Z4Oy85I21K80EYJYdjQGC2qum4Vo55Ag57iiIK4FYuA== +fp-ts@^2.16.2: + version "2.16.9" + resolved "https://packages.atlassian.com/api/npm/npm-remote/fp-ts/-/fp-ts-2.16.9.tgz#99628fc5e0bb3b432c4a16d8f4455247380bae8a" + integrity sha512-+I2+FnVB+tVaxcYyQkHUq7ZdKScaBlX53A41mxQtpIccsfyv8PzdzP7fzp2AY832T4aoK6UZ5WRX/ebGd8uZuQ== fresh@0.5.2: version "0.5.2" @@ -4984,10 +4960,10 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" - integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== +fs-extra@^11.2.0: + version "11.2.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -5109,23 +5085,22 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stdin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -5158,13 +5133,6 @@ glob-parent@^6.0.1: dependencies: is-glob "^4.0.3" -glob-promise@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.4.0.tgz#b6b8f084504216f702dc2ce8c9bc9ac8866fdb20" - integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== - dependencies: - "@types/glob" "*" - glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" @@ -5181,7 +5149,7 @@ glob@^10.3.10: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -5193,18 +5161,6 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.7: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" @@ -5254,23 +5210,6 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -got@^11.8.5: - version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" - integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== - 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" - 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" - got@^12.1.0: version "12.6.1" resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" @@ -5345,6 +5284,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -5410,13 +5356,6 @@ hidefile@^3.0.0: dependencies: winattr "^3.0.0" -history@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" - integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== - dependencies: - "@babel/runtime" "^7.7.6" - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -5436,11 +5375,6 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -hpagent@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.2.tgz#cab39c66d4df2d4377dbd212295d878deb9bdaa9" - integrity sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ== - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -5471,10 +5405,10 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.10.0" -html-webpack-plugin@^5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" - integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== +html-webpack-plugin@^5.6.0: + version "5.6.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -5504,11 +5438,6 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" @@ -5574,14 +5503,6 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - http2-wrapper@^2.1.10: version "2.2.1" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" @@ -5625,13 +5546,6 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.3.tgz#0fcdb6decaccda35e308a7b0948645dd9523b7bb" - integrity sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA== - dependencies: - minimatch "^9.0.0" - ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -5737,10 +5651,10 @@ io-ts-reporters@^2.0.1: dependencies: "@scarf/scarf" "^1.1.1" -io-ts@^2.2.20: - version "2.2.20" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.2.20.tgz#be42b75f6668a2c44f706f72ee6e4c906777c7f5" - integrity sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA== +io-ts@^2.2.21: + version "2.2.21" + resolved "https://packages.atlassian.com/api/npm/npm-remote/io-ts/-/io-ts-2.2.21.tgz#4ef754176f7082a1099d04c7d5c4ea53267c530a" + integrity sha512-zz2Z69v9ZIC3mMLYWIeoUcwWD6f+O7yP92FMVVaXEOSZH1jnVBmET/urd/uoarD1WGBY4rCj8TAyMPzsGNzMFQ== ipaddr.js@1.9.1: version "1.9.1" @@ -5913,21 +5827,11 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -6561,34 +6465,6 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-schema-ref-parser@^9.0.6: - version "9.0.9" - resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#66ea538e7450b12af342fa3d5b8458bc1e1e013f" - integrity sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q== - dependencies: - "@apidevtools/json-schema-ref-parser" "9.0.9" - -json-schema-to-typescript@^10.1.5: - version "10.1.5" - resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-10.1.5.tgz#9ac32808eb4d7c158684e270438ad07256c0cb1c" - integrity sha512-X8bNNksfCQo6LhEuqNxmZr4eZpPjXZajmimciuk8eWXzZlif9Brq7WuMGD/SOhBKcRKP2SGVDNZbC28WQqx9Rg== - dependencies: - "@types/json-schema" "^7.0.6" - "@types/lodash" "^4.14.168" - "@types/prettier" "^2.1.5" - cli-color "^2.0.0" - get-stdin "^8.0.0" - glob "^7.1.6" - glob-promise "^3.4.0" - is-glob "^4.0.1" - json-schema-ref-parser "^9.0.6" - json-stringify-safe "^5.0.1" - lodash "^4.17.20" - minimist "^1.2.5" - mkdirp "^1.0.4" - mz "^2.7.0" - prettier "^2.2.0" - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -6661,7 +6537,7 @@ keytar@^7.9.0: node-addon-api "^4.3.0" prebuild-install "^7.0.1" -keyv@^4.0.0, keyv@^4.5.3: +keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -6849,11 +6725,6 @@ lodash.bind@^4.1.4: resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - lodash.defaults@^4.0.1: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -6946,11 +6817,6 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - lowercase-keys@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" @@ -6975,13 +6841,6 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.3.tgz#b40014d7d2d16d94130b87297a04a1f24874ae7c" integrity sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg== -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= - dependencies: - es5-ext "~0.10.2" - make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -6989,7 +6848,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-error@1.x, make-error@^1.1.1: +make-error@1.x: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -7030,25 +6889,16 @@ memfs@^4.6.0: json-joy "^9.2.0" thingies "^1.11.1" -memoizee@^0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" - integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.53" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -7107,11 +6957,6 @@ mimic-fn@^3.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - mimic-response@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" @@ -7132,7 +6977,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -7146,14 +6991,14 @@ minimatch@^5.0.1, minimatch@^5.1.0: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1, minimatch@^9.0.3: +minimatch@^9.0.1, minimatch@^9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -7175,11 +7020,6 @@ mkdirp@^0.5.6: dependencies: minimist "^1.2.6" -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mrmime@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" @@ -7195,7 +7035,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -7213,15 +7053,6 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -7242,24 +7073,6 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@1, next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -ngrok@^5.0.0-beta.2: - version "5.0.0-beta.2" - resolved "https://registry.yarnpkg.com/ngrok/-/ngrok-5.0.0-beta.2.tgz#7976690a592b27de9a91ff93892cfabda24360ad" - integrity sha512-UzsyGiJ4yTTQLCQD11k1DQaMwq2/SsztBg2b34zAqcyjS25qjDpogMKPaCKHwe/APRTHeel3iDXcVctk5CNaCQ== - dependencies: - extract-zip "^2.0.1" - got "^11.8.5" - lodash.clonedeep "^4.5.0" - uuid "^7.0.0 || ^8.0.0" - yaml "^2.2.2" - optionalDependencies: - hpagent "^0.1.2" - no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -7268,10 +7081,10 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -nock@13.3.8: - version "13.3.8" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.8.tgz#7adf3c66f678b02ef0a78d5697ae8bc2ebde0142" - integrity sha512-96yVFal0c/W1lG7mmfRe7eO+hovrhJYd2obzzOZ90f6fjpeU/XNvd9cYHZKZAQJumDfhXgoTpkpJ9pvMj+hqHw== +nock@13.5.4: + version "13.5.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/nock/-/nock-13.5.4.tgz#8918f0addc70a63736170fef7106a9721e0dc479" + integrity sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw== dependencies: debug "^4.1.0" json-stringify-safe "^5.0.1" @@ -7296,11 +7109,6 @@ node-cache@^5.1.2: dependencies: clone "2.x" -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -7337,10 +7145,10 @@ node-machine-id@^1.1.12: resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== -node-releases@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" - integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://packages.atlassian.com/api/npm/npm-remote/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== node-releases@^2.0.3: version "2.0.4" @@ -7352,11 +7160,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - normalize-url@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" @@ -7403,7 +7206,7 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -7592,11 +7395,6 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - p-cancelable@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" @@ -7705,7 +7503,7 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://packages.atlassian.com/api/npm/npm-remote/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -7736,11 +7534,6 @@ path-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -path-equal@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/path-equal/-/path-equal-1.2.5.tgz#9fcbdd5e5daee448e96f43f3bac06c666b5e982a" - integrity sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g== - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -7774,6 +7567,11 @@ path-scurry@^1.10.1: lru-cache "^9.1.1 || ^10.0.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://packages.atlassian.com/api/npm/npm-remote/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -7803,16 +7601,16 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -7887,11 +7685,6 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.2.0: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - prettier@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" @@ -7939,7 +7732,7 @@ prompts@^2.0.1: prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://packages.atlassian.com/api/npm/npm-remote/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -8011,6 +7804,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@6.13.0: + version "6.13.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + qs@^6.11.2: version "6.11.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" @@ -8073,6 +7873,16 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@2.5.2: + version "2.5.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + rc@1.2.8, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -8093,21 +7903,6 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-router-dom@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d" - integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw== - dependencies: - history "^5.2.0" - react-router "6.3.0" - -react-router@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557" - integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ== - dependencies: - history "^5.2.0" - react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" @@ -8160,10 +7955,10 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.2.tgz#e6aced27ad3b9d726d8308515b9a1b98dc1b9d13" - integrity sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA== +readable-stream@^4.5.2: + version "4.5.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== dependencies: abort-controller "^3.0.0" buffer "^6.0.3" @@ -8277,7 +8072,7 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: +resolve-alpn@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== @@ -8321,13 +8116,6 @@ resolve@^2.0.0-next.3: is-core-module "^2.2.0" path-parse "^1.0.6" -responselike@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" - integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== - dependencies: - lowercase-keys "^2.0.0" - responselike@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" @@ -8421,11 +8209,6 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -safe-stable-stringify@^2.2.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -8512,13 +8295,18 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.7, semver@^7.5.2, semver@^7.5.4: +semver@^7.3.7, semver@^7.5.2: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" +semver@^7.6.0: + version "7.6.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -8538,6 +8326,25 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +send@0.19.0: + version "0.19.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + serialize-javascript@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" @@ -8568,6 +8375,16 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +serve-static@1.16.2: + version "1.16.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -8583,6 +8400,18 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -8648,6 +8477,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://packages.atlassian.com/api/npm/npm-remote/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -8820,7 +8659,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8838,6 +8677,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -8920,7 +8768,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -8934,6 +8782,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" @@ -9053,6 +8908,17 @@ terminal-link@^2.0.0, terminal-link@^2.1.1: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" +terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://packages.atlassian.com/api/npm/npm-remote/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + terser-webpack-plugin@^5.3.7: version "5.3.9" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" @@ -9074,6 +8940,16 @@ terser@^5.10.0, terser@^5.16.8: commander "^2.20.0" source-map-support "~0.5.20" +terser@^5.26.0: + version "5.33.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/terser/-/terser-5.33.0.tgz#8f9149538c7468ffcb1246cfec603c16720d2db1" + integrity sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -9093,20 +8969,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - thingies@^1.11.1: version "1.13.1" resolved "https://registry.yarnpkg.com/thingies/-/thingies-1.13.1.tgz#4fa8059a7472e60c3069cfaeed0c19680c96507c" @@ -9134,14 +8996,6 @@ timers-browserify@^2.0.12: dependencies: setimmediate "^1.0.4" -timers-ext@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - tiny-each-async@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/tiny-each-async/-/tiny-each-async-2.0.3.tgz#8ebbbfd6d6295f1370003fbb37162afe5a0a51d1" @@ -9154,12 +9008,10 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" +tmp@^0.2.3: + version "0.2.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== tmpl@1.0.5: version "1.0.5" @@ -9242,9 +9094,9 @@ ts-jest@^27.1.3: semver "7.x" yargs-parser "20.x" -ts-loader@^9.5.0: +ts-loader@^9.5.1: version "9.5.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== dependencies: chalk "^4.1.0" @@ -9253,25 +9105,6 @@ ts-loader@^9.5.0: semver "^7.3.4" source-map "^0.7.4" -ts-node@^10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" @@ -9348,16 +9181,6 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" - integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== - typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -9404,35 +9227,16 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript-json-schema@^0.62.0: - version "0.62.0" - resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.62.0.tgz#774b06b0c9d86d7f3580ea9136363a6eafae1470" - integrity sha512-qRO6pCgyjKJ230QYdOxDRpdQrBeeino4v5p2rYmSD72Jf4rD3O+cJcROv46sQukm46CLWoeusqvBgKpynEv25g== - dependencies: - "@types/json-schema" "^7.0.9" - "@types/node" "^16.9.2" - glob "^7.1.7" - path-equal "^1.2.5" - safe-stable-stringify "^2.2.0" - ts-node "^10.9.1" - typescript "~5.1.0" - yargs "^17.1.1" - -typescript@^4.9.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@4.8.4: + version "4.8.4" + resolved "https://packages.atlassian.com/api/npm/npm-remote/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== typescript@~4.5.5: version "4.5.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== -typescript@~5.1.0: - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== - unbox-primitive@^1.0.1, unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -9458,13 +9262,13 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://packages.atlassian.com/api/npm/npm-remote/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" + escalade "^3.1.2" + picocolors "^1.0.1" uri-js@^4.2.2: version "4.4.1" @@ -9532,12 +9336,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -"uuid@^7.0.0 || ^8.0.0", uuid@^8.0.0, uuid@^8.3.2: +uuid@^8.0.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -9547,11 +9346,6 @@ uuid@^9.0.1: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -9634,10 +9428,10 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== -webpack-bundle-analyzer@^4.9.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" - integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== +webpack-bundle-analyzer@^4.10.1: + version "4.10.2" + resolved "https://packages.atlassian.com/api/npm/npm-remote/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" + integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== dependencies: "@discoveryjs/json-ext" "0.5.7" acorn "^8.0.4" @@ -9647,7 +9441,6 @@ webpack-bundle-analyzer@^4.9.1: escape-string-regexp "^4.0.0" gzip-size "^6.0.0" html-escaper "^2.0.2" - is-plain-object "^5.0.0" opener "^1.5.2" picocolors "^1.0.0" sirv "^2.0.3" @@ -9762,6 +9555,36 @@ webpack@5.89.0: watchpack "^2.4.0" webpack-sources "^3.2.3" +webpack@5.90.3: + version "5.90.3" + resolved "https://packages.atlassian.com/api/npm/npm-remote/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac" + integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" @@ -9866,8 +9689,7 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - name wrap-ansi-cjs +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -9885,6 +9707,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -9918,20 +9749,15 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.3.1, ws@^7.5.9: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^7.4.6: - version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== +ws@^7.3.1, ws@^7.4.6, ws@^7.5.9: + version "7.5.10" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.13.0: - version "8.14.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" - integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== + version "8.17.1" + resolved "https://packages.atlassian.com/api/npm/npm-remote/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== xml-name-validator@^3.0.0: version "3.0.0" @@ -9960,10 +9786,10 @@ yallist@^4.0.0: yaml@^1.10.2: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://packages.atlassian.com/api/npm/npm-remote/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.2.2, yaml@^2.3.4: +yaml@^2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== @@ -9973,11 +9799,6 @@ yargs-parser@20.x, yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" @@ -9991,32 +9812,6 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.1.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - zip-stream@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-5.0.1.tgz#cf3293bba121cad98be2ec7f05991d81d9f18134"