From 9d98865cb150c6e87a0de30c3408ed9d6fffeab5 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 18 Feb 2022 15:24:13 +0100 Subject: [PATCH 001/410] catalog-import: stop trying to register optional locations Signed-off-by: Patrik Oldsberg --- .changeset/yellow-boxes-jump.md | 5 +++++ .../src/components/StepReviewLocation/StepReviewLocation.tsx | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 .changeset/yellow-boxes-jump.md diff --git a/.changeset/yellow-boxes-jump.md b/.changeset/yellow-boxes-jump.md new file mode 100644 index 0000000000..4764c9c5fe --- /dev/null +++ b/.changeset/yellow-boxes-jump.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-import': patch +--- + +No longer attempt to register locations as optional, since it's ignored. diff --git a/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx b/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx index 5c4f9b9594..7943b6e3b8 100644 --- a/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx +++ b/plugins/catalog-import/src/components/StepReviewLocation/StepReviewLocation.tsx @@ -73,8 +73,6 @@ export const StepReviewLocation = ({ const result = await catalogApi.addLocation({ type: 'url', target: l.target, - presence: - prepareResult.type === 'repository' ? 'optional' : 'required', }); return { target: result.location.target, From 4af82967f409c02ef418336a277edf817410631b Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Tue, 8 Mar 2022 21:50:02 +0100 Subject: [PATCH 002/410] Decouple EntityTagPicker from backend entities Signed-off-by: Vincenzo Scamporlino --- .changeset/forty-poets-tie.md | 7 + .../EntityTagPicker/EntityTagPicker.test.tsx | 201 +++++++++--------- .../EntityTagPicker/EntityTagPicker.tsx | 31 ++- 3 files changed, 123 insertions(+), 116 deletions(-) create mode 100644 .changeset/forty-poets-tie.md diff --git a/.changeset/forty-poets-tie.md b/.changeset/forty-poets-tie.md new file mode 100644 index 0000000000..9118100934 --- /dev/null +++ b/.changeset/forty-poets-tie.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Decouple tags picker from backend entities + +`EntityTagPicker` fetches all the tags independently and it doesn't require all the entities to be available client side. diff --git a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx index c6b985bc8b..2be521203f 100644 --- a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx +++ b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx @@ -14,60 +14,49 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; -import { fireEvent, render } from '@testing-library/react'; +import { fireEvent, render, waitFor } from '@testing-library/react'; import React from 'react'; import { MockEntityListContextProvider } from '../../testUtils/providers'; import { EntityTagFilter } from '../../filters'; import { EntityTagPicker } from './EntityTagPicker'; +import { TestApiProvider } from '@backstage/test-utils'; +import { catalogApiRef } from '../../api'; +import { CatalogApi } from '@backstage/catalog-client'; -const taggedEntities: Entity[] = [ - { - apiVersion: '1', - kind: 'Component', - metadata: { - name: 'component-1', - tags: ['tag4', 'tag1', 'tag2'], - }, - }, - { - apiVersion: '1', - kind: 'Component', - metadata: { - name: 'component-2', - tags: ['tag3', 'tag4'], - }, - }, -]; +const tags = ['tag1', 'tag2', 'tag3', 'tag4']; describe('', () => { - it('renders all tags', () => { + const mockCatalogApiRef = { + getEntityFacets: async () => ({ + facets: { 'metadata.tags': tags.map(value => ({ value })) }, + }), + } as unknown as CatalogApi; + + it('renders all tags', async () => { const rendered = render( - - - , + + + + + , ); - expect(rendered.getByText('Tags')).toBeInTheDocument(); + await waitFor(() => expect(rendered.getByText('Tags')).toBeInTheDocument()); fireEvent.click(rendered.getByTestId('tag-picker-expand')); - taggedEntities - .flatMap(e => e.metadata.tags!) - .forEach(tag => { - expect(rendered.getByText(tag)).toBeInTheDocument(); - }); + tags.forEach(tag => { + expect(rendered.getByText(tag)).toBeInTheDocument(); + }); }); - it('renders unique tags in alphabetical order', () => { + it('renders unique tags in alphabetical order', async () => { const rendered = render( - - - , + + + + + , ); - expect(rendered.getByText('Tags')).toBeInTheDocument(); + await waitFor(() => expect(rendered.getByText('Tags')).toBeInTheDocument()); fireEvent.click(rendered.getByTestId('tag-picker-expand')); @@ -79,43 +68,47 @@ describe('', () => { ]); }); - it('respects the query parameter filter value', () => { + it('respects the query parameter filter value', async () => { const updateFilters = jest.fn(); const queryParameters = { tags: ['tag3'] }; render( - - - , + + + + + , ); - expect(updateFilters).toHaveBeenLastCalledWith({ - tags: new EntityTagFilter(['tag3']), - }); + await waitFor(() => + expect(updateFilters).toHaveBeenLastCalledWith({ + tags: new EntityTagFilter(['tag3']), + }), + ); }); - it('adds tags to filters', () => { + it('adds tags to filters', async () => { const updateFilters = jest.fn(); const rendered = render( - - - , + + + + + , + ); + await waitFor(() => + expect(updateFilters).toHaveBeenLastCalledWith({ + tags: undefined, + }), ); - expect(updateFilters).toHaveBeenLastCalledWith({ - tags: undefined, - }); fireEvent.click(rendered.getByTestId('tag-picker-expand')); fireEvent.click(rendered.getByText('tag1')); @@ -124,23 +117,25 @@ describe('', () => { }); }); - it('removes tags from filters', () => { + it('removes tags from filters', async () => { const updateFilters = jest.fn(); const rendered = render( - - - , + + + + + , + ); + await waitFor(() => + expect(updateFilters).toHaveBeenLastCalledWith({ + tags: new EntityTagFilter(['tag1']), + }), ); - expect(updateFilters).toHaveBeenLastCalledWith({ - tags: new EntityTagFilter(['tag1']), - }); fireEvent.click(rendered.getByTestId('tag-picker-expand')); expect(rendered.getByLabelText('tag1')).toBeChecked(); @@ -150,30 +145,36 @@ describe('', () => { }); }); - it('responds to external queryParameters changes', () => { + it('responds to external queryParameters changes', async () => { const updateFilters = jest.fn(); const rendered = render( - - - , + + + + + , + ); + await waitFor(() => + expect(updateFilters).toHaveBeenLastCalledWith({ + tags: new EntityTagFilter(['tag1']), + }), ); - expect(updateFilters).toHaveBeenLastCalledWith({ - tags: new EntityTagFilter(['tag1']), - }); rendered.rerender( - - - , + + + + + , ); expect(updateFilters).toHaveBeenLastCalledWith({ tags: new EntityTagFilter(['tag2']), diff --git a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx index 5b5e0e7ab9..eafa10696c 100644 --- a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx +++ b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { Box, Checkbox, @@ -30,6 +29,9 @@ import { Autocomplete } from '@material-ui/lab'; import React, { useEffect, useMemo, useState } from 'react'; import { useEntityList } from '../../hooks/useEntityListProvider'; import { EntityTagFilter } from '../../filters'; +import { useApi } from '@backstage/core-plugin-api'; +import useAsync from 'react-use/lib/useAsync'; +import { catalogApiRef } from '../../api'; /** @public */ export type CatalogReactEntityTagPickerClassKey = 'input'; @@ -49,8 +51,17 @@ const checkedIcon = ; /** @public */ export const EntityTagPicker = () => { const classes = useStyles(); - const { updateFilters, backendEntities, filters, queryParameters } = - useEntityList(); + const { updateFilters, filters, queryParameters } = useEntityList(); + + const catalogApi = useApi(catalogApiRef); + const { value: availableTags } = useAsync(async () => { + const facet = 'metadata.tags'; + const { facets } = await catalogApi.getEntityFacets({ + facets: [facet], + }); + + return facets[facet].map(({ value }) => value); + }, []); const queryParamTags = useMemo( () => [queryParameters.tags].flat().filter(Boolean) as string[], @@ -75,19 +86,7 @@ export const EntityTagPicker = () => { }); }, [selectedTags, updateFilters]); - const availableTags = useMemo( - () => - [ - ...new Set( - backendEntities - .flatMap((e: Entity) => e.metadata.tags) - .filter(Boolean) as string[], - ), - ].sort(), - [backendEntities], - ); - - if (!availableTags.length) return null; + if (!availableTags?.length) return null; return ( From 485bbdd5418ab02397443e19a0aed9964b7dcb35 Mon Sep 17 00:00:00 2001 From: KaemonIsland Date: Tue, 8 Mar 2022 13:52:36 -0700 Subject: [PATCH 003/410] Change word-wrap from break-all to break-word Signed-off-by: KaemonIsland --- packages/core-components/src/layout/Header/Header.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-components/src/layout/Header/Header.tsx b/packages/core-components/src/layout/Header/Header.tsx index 1ed1f81950..bb4d19b949 100644 --- a/packages/core-components/src/layout/Header/Header.tsx +++ b/packages/core-components/src/layout/Header/Header.tsx @@ -66,7 +66,7 @@ const useStyles = makeStyles( }, title: { color: theme.palette.bursts.fontColor, - wordBreak: 'break-all', + wordBreak: 'break-word', fontSize: theme.typography.h3.fontSize, marginBottom: 0, }, From e74b06b35df05e725ece0312b4894d0a2c99baaa Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Wed, 9 Mar 2022 16:25:12 +0100 Subject: [PATCH 004/410] Apply kind filter when fetching tags Signed-off-by: Vincenzo Scamporlino --- .../src/components/EntityTagPicker/EntityTagPicker.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx index eafa10696c..ddb70c6d31 100644 --- a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx +++ b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx @@ -58,10 +58,11 @@ export const EntityTagPicker = () => { const facet = 'metadata.tags'; const { facets } = await catalogApi.getEntityFacets({ facets: [facet], + filter: filters.kind?.getCatalogFilters(), }); return facets[facet].map(({ value }) => value); - }, []); + }, [filters.kind]); const queryParamTags = useMemo( () => [queryParameters.tags].flat().filter(Boolean) as string[], From d19b637699ae82b23a203e6e957f7af866dbcd03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Mar 2022 12:25:14 +0000 Subject: [PATCH 005/410] chore(deps-dev): bump aws-sdk-mock from 5.2.1 to 5.6.2 Bumps [aws-sdk-mock](https://github.com/dwyl/aws-sdk-mock) from 5.2.1 to 5.6.2. - [Release notes](https://github.com/dwyl/aws-sdk-mock/releases) - [Commits](https://github.com/dwyl/aws-sdk-mock/compare/v5.2.1...v5.6.2) --- updated-dependencies: - dependency-name: aws-sdk-mock dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index cf9ac21d74..55ad2a13e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7785,9 +7785,9 @@ available-typed-arrays@^1.0.2: array-filter "^1.0.0" aws-sdk-mock@^5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.2.1.tgz#126d4d5362c96b7d1d0bd87708a99d626c19ffd4" - integrity sha512-dY7zA1p/lX335V4/aOJ2L8ggXC3a5zokTJFZlZVW3uU+Zej7u+V7WrEcN5TVaJAnk4auT263T6EK/OHW4WjKhw== + version "5.6.2" + resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.6.2.tgz#664771462953ca8d3806d5a50a63b4a6dbd5290f" + integrity sha512-GRJg8kjRJFLm2aLiPkYSqe/RreHqlqncAeFtWdAbtSxzBdct9EaV6rqSqjyWXKNJG45Rzn2Ojo3F6qVIgkQnSg== dependencies: aws-sdk "^2.928.0" sinon "^11.1.1" From a8c5f1a08f0417c8725b7fde9e9b402e489b7b6b Mon Sep 17 00:00:00 2001 From: Iain Billett Date: Thu, 10 Mar 2022 14:41:07 +0000 Subject: [PATCH 006/410] Add an optional external Id field Signed-off-by: Iain Billett --- packages/backend-common/src/reading/AwsS3UrlReader.ts | 4 ++++ packages/integration/config.d.ts | 6 ++++++ packages/integration/src/awsS3/config.ts | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.ts b/packages/backend-common/src/reading/AwsS3UrlReader.ts index e64334321d..86ff0e7d65 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.ts @@ -154,11 +154,15 @@ export class AwsS3UrlReader implements UrlReader { const roleArn = integration.config.roleArn; if (roleArn) { + const externalIdParam = integration.config.externalId + ? { ExternalId: integration.config.externalId } + : {}; return new aws.ChainableTemporaryCredentials({ masterCredentials: explicitCredentials, params: { RoleSessionName: 'backstage-aws-s3-url-reader', RoleArn: roleArn, + ...externalIdParam, }, }); } diff --git a/packages/integration/config.d.ts b/packages/integration/config.d.ts index 8873f0f220..0b88a8ff81 100644 --- a/packages/integration/config.d.ts +++ b/packages/integration/config.d.ts @@ -200,6 +200,12 @@ export interface Config { * @visibility backend */ roleArn?: string; + + /** + * External ID to use when assuming role + * @visibility backend + */ + externalId?: string; }>; }; } diff --git a/packages/integration/src/awsS3/config.ts b/packages/integration/src/awsS3/config.ts index 45cbdbe210..2054b9eab0 100644 --- a/packages/integration/src/awsS3/config.ts +++ b/packages/integration/src/awsS3/config.ts @@ -59,6 +59,11 @@ export type AwsS3IntegrationConfig = { * (Optional) ARN of role to be assumed */ roleArn?: string; + + /** + * (optional) External ID to use when assuming role + */ + externalId?: string; }; /** @@ -98,6 +103,7 @@ export function readAwsS3IntegrationConfig( const accessKeyId = config.getOptionalString('accessKeyId'); const secretAccessKey = config.getOptionalString('secretAccessKey'); const roleArn = config.getOptionalString('roleArn'); + const externalId = config.getOptionalString('externalId'); return { host, @@ -106,6 +112,7 @@ export function readAwsS3IntegrationConfig( accessKeyId, secretAccessKey, roleArn, + externalId, }; } From 8a68cd2129c6e4a9e9f4b09f859fd60e0b36eb1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 09:06:22 +0000 Subject: [PATCH 007/410] chore(deps): bump google-auth-library from 7.12.0 to 7.14.0 Bumps [google-auth-library](https://github.com/googleapis/google-auth-library-nodejs) from 7.12.0 to 7.14.0. - [Release notes](https://github.com/googleapis/google-auth-library-nodejs/releases) - [Changelog](https://github.com/googleapis/google-auth-library-nodejs/blob/main/CHANGELOG.md) - [Commits](https://github.com/googleapis/google-auth-library-nodejs/compare/v7.12.0...v7.14.0) --- updated-dependencies: - dependency-name: google-auth-library dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5dedbc784f..4c46fd1396 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13257,9 +13257,9 @@ globby@^7.1.1: slash "^1.0.0" google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6.1: - version "7.12.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" - integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== + version "7.14.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.0.tgz#9d6a20592f7b4d4c463cd3e93934c4b1711d5dc6" + integrity sha512-or8r7qUqGVI3W8lVSdPh0ZpeFyQHeE73g5c0p+bLNTTUFXJ+GSeDQmZRZ2p4H8cF/RJYa4PNvi/A1ar1uVNLFA== dependencies: arrify "^2.0.0" base64-js "^1.3.0" From 6ad0c456486a11769475c10648f157243093a8e2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 11 Mar 2022 18:03:32 +0100 Subject: [PATCH 008/410] cli: add experimental add-deps command Signed-off-by: Patrik Oldsberg --- .changeset/happy-foxes-arrive.md | 5 + packages/cli/src/commands/add-deps.ts | 142 ++++++++++++++++++++++++++ packages/cli/src/commands/index.ts | 7 ++ 3 files changed, 154 insertions(+) create mode 100644 .changeset/happy-foxes-arrive.md create mode 100644 packages/cli/src/commands/add-deps.ts diff --git a/.changeset/happy-foxes-arrive.md b/.changeset/happy-foxes-arrive.md new file mode 100644 index 0000000000..03ddfede0d --- /dev/null +++ b/.changeset/happy-foxes-arrive.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Added an experimental `add-deps` command which adds missing monorepo dependencies to the target package.` diff --git a/packages/cli/src/commands/add-deps.ts b/packages/cli/src/commands/add-deps.ts new file mode 100644 index 0000000000..e4cdc4dc84 --- /dev/null +++ b/packages/cli/src/commands/add-deps.ts @@ -0,0 +1,142 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { paths } from '../lib/paths'; +import { ESLint } from 'eslint'; +import { join as joinPath, basename } from 'path'; +import fs from 'fs-extra'; +import { isChildPath } from '@backstage/cli-common'; +import { PackageGraph } from '../lib/monorepo'; + +function isTestPath(filePath: string) { + if (!isChildPath(joinPath(paths.targetDir, 'src'), filePath)) { + return true; + } + const name = basename(filePath); + return ( + name.startsWith('setupTests.') || + name.includes('.test.') || + name.includes('.stories.') + ); +} + +export async function command() { + const pkgJsonPath = paths.resolveTarget('package.json'); + const pkg = await fs.readJson(pkgJsonPath); + if (pkg.workspaces) { + throw new Error( + 'Adding dependencies to the workspace root is not supported', + ); + } + + const packages = await PackageGraph.listTargetPackages(); + const localPackageVersions = new Map( + packages.map(p => [p.packageJson.name, p.packageJson.version]), + ); + + const eslint = new ESLint({ + cwd: paths.targetDir, + overrideConfig: { + plugins: ['monorepo'], + rules: { + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: [ + `!${joinPath(paths.targetDir, 'src/**')}`, + joinPath(paths.targetDir, 'src/**/*.test.*'), + joinPath(paths.targetDir, 'src/**/*.stories.*'), + joinPath(paths.targetDir, 'src/setupTests.*'), + ], + optionalDependencies: true, + peerDependencies: true, + bundledDependencies: true, + }, + ], + }, + }, + extensions: ['jsx', 'ts', 'tsx', 'mjs', 'cjs'], + }); + + const results = await eslint.lintFiles(['.']); + + const addedDeps = new Set(); + const addedDevDeps = new Set(); + const removedDevDeps = new Set(); + + for (const result of results) { + for (const message of result.messages) { + // Just in case + if (message.ruleId !== 'import/no-extraneous-dependencies') { + continue; + } + + const match = message.message.match(/^'([^']*)' should be listed/); + if (!match) { + continue; + } + const packageName = match[1]; + if (!localPackageVersions.has(packageName)) { + continue; + } + + if (message.message.endsWith('not devDependencies.')) { + addedDeps.add(packageName); + removedDevDeps.add(packageName); + } else if (isTestPath(result.filePath)) { + addedDevDeps.add(packageName); + } else { + addedDeps.add(packageName); + } + } + } + + if (addedDeps.size || addedDevDeps.size || removedDevDeps.size) { + for (const name of addedDeps) { + if (!pkg.dependencies) { + pkg.dependencies = {}; + } + pkg.dependencies[name] = `^${localPackageVersions.get(name)}`; + } + for (const name of addedDevDeps) { + if (!pkg.devDependencies) { + pkg.devDependencies = {}; + } + pkg.devDependencies[name] = `^${localPackageVersions.get(name)}`; + } + for (const name of removedDevDeps) { + delete pkg.devDependencies[name]; + } + if (Object.keys(pkg.devDependencies).length === 0) { + delete pkg.devDependencies; + } + + if (pkg.dependencies) { + pkg.dependencies = Object.fromEntries( + Object.entries(pkg.dependencies).sort(([a], [b]) => a.localeCompare(b)), + ); + } + if (pkg.devDependencies) { + pkg.devDependencies = Object.fromEntries( + Object.entries(pkg.devDependencies).sort(([a], [b]) => + a.localeCompare(b), + ), + ); + } + + await fs.writeJson(pkgJsonPath, pkg, { spaces: 2 }); + } +} diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index bc427bb19b..b50831f981 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -386,6 +386,13 @@ export function registerCommands(program: CommanderStatic) { .description('Check Backstage package versioning') .action(lazy(() => import('./versions/lint').then(m => m.default))); + program + .command('add-deps', { hidden: true }) + .description( + 'Add missing monorepo dependencies to package.json [EXPERIMENTAL]', + ) + .action(lazy(() => import('./add-deps').then(m => m.command))); + // TODO(Rugvip): Deprecate in favor of package variant program .command('prepack') From aedd4daa661c57b6067d872f67884af461a710b8 Mon Sep 17 00:00:00 2001 From: Dimitris Apostolou Date: Sun, 13 Mar 2022 14:09:19 +0200 Subject: [PATCH 009/410] Fix typos Signed-off-by: Dimitris Apostolou --- ADOPTERS.md | 2 +- docs/architecture-decisions/adr006-avoid-react-fc.md | 2 +- docs/assets/search/architecture.drawio.svg | 2 +- docs/features/kubernetes/configuration.md | 2 +- .../features/software-templates/writing-templates.md | 2 +- docs/local-dev/cli-build-system.md | 2 +- microsite/data/plugins/opsgenie.yaml | 2 +- .../src/database/DatabaseManager.test.ts | 12 ++++++------ .../backend-common/src/database/connection.test.ts | 2 +- .../catalog-model/examples/apis/swapi-graphql.yaml | 2 +- .../src/lib/builder/buildTypeDefinitionsWorker.ts | 2 +- packages/cli/src/lib/diff/types.ts | 2 +- packages/core-app-api/src/app/types.ts | 2 +- packages/core-app-api/src/routing/collectors.tsx | 2 +- .../src/components/EmptyState/EmptyState.test.tsx | 2 +- packages/core-components/src/layout/Sidebar/Page.tsx | 2 +- .../core-components/src/layout/Sidebar/config.ts | 2 +- .../src/apis/definitions/FeatureFlagsApi.ts | 2 +- packages/dev-utils/src/devApp/render.tsx | 2 +- .../src/testUtils/apis/ErrorApi/MockErrorApi.ts | 2 +- plugins/api-docs/dev/graphql-example-api.yaml | 2 +- plugins/badges-backend/src/types.ts | 2 +- plugins/catalog-backend-module-msgraph/config.d.ts | 2 +- .../src/microsoftGraph/client.test.ts | 2 +- .../catalog-backend/src/ingestion/CatalogRules.ts | 2 +- .../modules/codeowners/CodeOwnersProcessor.test.ts | 2 +- .../src/components/EntityRelationsGraph/relations.ts | 2 +- .../src/components/AboutCard/AboutCard.test.tsx | 2 +- plugins/cicd-statistics/src/apis/types.ts | 2 +- .../src/service/converter/cobertura.ts | 2 +- .../src/components/BarChart/BarChart.tsx | 2 +- plugins/cost-insights/src/utils/scroll.tsx | 2 +- .../src/components/Differ.test.tsx | 2 +- .../git-release-manager/src/features/Features.tsx | 2 +- .../jenkins-backend/src/service/jenkinsApi.test.ts | 2 +- .../src/service/jenkinsInfoProvider.ts | 2 +- plugins/jenkins/src/constants.ts | 2 +- plugins/kubernetes-backend/src/types/types.ts | 2 +- .../src/error-detection/error-detection.test.ts | 2 +- .../DashboardSnapshotList/DashboardSnapshot.tsx | 2 +- plugins/permission-common/src/types/api.ts | 4 ++-- plugins/permission-react/src/apis/PermissionApi.ts | 2 +- .../src/actions/fetch/cookiecutter.test.ts | 2 +- .../scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 2 +- plugins/scaffolder/src/types.ts | 2 +- plugins/search-backend-node/src/Scheduler.test.ts | 2 +- .../src/engines/LunrSearchEngine.test.ts | 2 +- .../src/engines/LunrSearchEngine.ts | 2 +- plugins/search/src/components/SearchFilter/hooks.ts | 2 +- .../search/DefaultTechDocsCollatorFactory.test.ts | 2 +- .../techdocs-node/src/stages/publish/helpers.test.ts | 6 +++--- .../src/home/components/Grids/DocsCardGrid.test.tsx | 2 +- plugins/techdocs/src/reader/README.md | 2 +- .../src/components/BuildList/BuildList.test.tsx | 2 +- 54 files changed, 62 insertions(+), 62 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 35a0e4ccc3..8647961a5c 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -71,7 +71,7 @@ _If you're using Backstage in your organization, please try to add your company | [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem | | [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services | | [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. | -| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services throught templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. | +| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services through templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. | | [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! | | [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. | | [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 | diff --git a/docs/architecture-decisions/adr006-avoid-react-fc.md b/docs/architecture-decisions/adr006-avoid-react-fc.md index ea43cb215d..6a7c431655 100644 --- a/docs/architecture-decisions/adr006-avoid-react-fc.md +++ b/docs/architecture-decisions/adr006-avoid-react-fc.md @@ -45,7 +45,7 @@ const GoodComponent = ({ text, children }: GoodProps) => ( ); -/* Or as a shorthand, if no specifc child type is required */ +/* Or as a shorthand, if no specific child type is required */ type GoodProps = PropsWithChildren<{ text: string }>; const GoodComponent = ({ text, children }: GoodProps) => (
diff --git a/docs/assets/search/architecture.drawio.svg b/docs/assets/search/architecture.drawio.svg index 1acad6d74b..d7a8177d1c 100644 --- a/docs/assets/search/architecture.drawio.svg +++ b/docs/assets/search/architecture.drawio.svg @@ -525,7 +525,7 @@
- Compile and Execut... + Compile and Execute... diff --git a/docs/features/kubernetes/configuration.md b/docs/features/kubernetes/configuration.md index 702e0c7736..612f4903d9 100644 --- a/docs/features/kubernetes/configuration.md +++ b/docs/features/kubernetes/configuration.md @@ -255,7 +255,7 @@ CPU/Memory for pods returned by the API server. Defaults to `false`. ##### `exposeDashboard` -This determines wether the `dashboardApp` and `dashboardParameters` should be +This determines whether the `dashboardApp` and `dashboardParameters` should be automatically configured in order to expose the GKE dashboard from the Kubernetes plugin. diff --git a/docs/features/software-templates/writing-templates.md b/docs/features/software-templates/writing-templates.md index 41061d45a3..82604f13bc 100644 --- a/docs/features/software-templates/writing-templates.md +++ b/docs/features/software-templates/writing-templates.md @@ -251,7 +251,7 @@ use `ui:widget: password` or set some properties of `ui:backstage`: type: string ui:backstage: review: - show: false # wont print any info about 'hidden' property on Review Step + show: false # won't print any info about 'hidden' property on Review Step ``` ### The Repository Picker diff --git a/docs/local-dev/cli-build-system.md b/docs/local-dev/cli-build-system.md index be07a67f22..91f4668f4e 100644 --- a/docs/local-dev/cli-build-system.md +++ b/docs/local-dev/cli-build-system.md @@ -66,7 +66,7 @@ These steps are generally kept isolated form each other, with each step focusing on its specific task. For example, we do not do linting or type checking together with the building or bundling. This is so that we can provide more flexibility and avoid duplicate work, improving performance. It is strongly -recommended that as a part of developing withing Backstage you use a code editor +recommended that as a part of developing within Backstage you use a code editor or IDE that has support for formatting, linting, and type checking. Let's dive into a detailed look at each of these steps and how they are diff --git a/microsite/data/plugins/opsgenie.yaml b/microsite/data/plugins/opsgenie.yaml index 43ba040f75..3db06c04c8 100644 --- a/microsite/data/plugins/opsgenie.yaml +++ b/microsite/data/plugins/opsgenie.yaml @@ -3,7 +3,7 @@ title: Opsgenie author: K-Phoen authorUrl: https://github.com/K-Phoen category: Monitoring -description: Opsgenie offers a simple way to associate alerts to components and vizualize incidents. +description: Opsgenie offers a simple way to associate alerts to components and visualize incidents. documentation: https://github.com/K-Phoen/backstage-plugin-opsgenie/ iconUrl: https://avatars.githubusercontent.com/u/1818843?s=200&v=4 npmPackageName: '@k-phoen/backstage-plugin-opsgenie' diff --git a/packages/backend-common/src/database/DatabaseManager.test.ts b/packages/backend-common/src/database/DatabaseManager.test.ts index 2b2cc17f91..ea8aca38ea 100644 --- a/packages/backend-common/src/database/DatabaseManager.test.ts +++ b/packages/backend-common/src/database/DatabaseManager.test.ts @@ -93,7 +93,7 @@ describe('DatabaseManager', () => { plugin: { testdbname: { connection: { - database: 'database_name_overriden', + database: 'database_name_overridden', }, }, differentclient: { @@ -304,10 +304,10 @@ describe('DatabaseManager', () => { const mockCalls = mocked(createDatabaseClient).mock.calls.splice(-1); const [_baseConfig, overrides] = mockCalls[0]; - // simple case where only database name is overriden + // simple case where only database name is overridden expect(overrides).toMatchObject({ connection: { - database: 'database_name_overriden', + database: 'database_name_overridden', }, }); }); @@ -581,7 +581,7 @@ describe('DatabaseManager', () => { plugin: { testdbname: { connection: { - database: 'database_name_overriden', + database: 'database_name_overridden', host: 'newhost', }, }, @@ -599,7 +599,7 @@ describe('DatabaseManager', () => { expect(baseConfig.get()).toMatchObject({ client: 'pg', connection: { - database: 'database_name_overriden', + database: 'database_name_overridden', host: 'newhost', user: 'foo', password: 'bar', @@ -608,7 +608,7 @@ describe('DatabaseManager', () => { expect(overrides).toHaveProperty('searchPath', ['testdbname']); expect(overrides).toHaveProperty( 'connection.database', - 'database_name_overriden', + 'database_name_overridden', ); }); diff --git a/packages/backend-common/src/database/connection.test.ts b/packages/backend-common/src/database/connection.test.ts index cb65113a9c..044f807576 100644 --- a/packages/backend-common/src/database/connection.test.ts +++ b/packages/backend-common/src/database/connection.test.ts @@ -193,7 +193,7 @@ describe('database connection', () => { }); describe('ensureSchemaExists', () => { - it('returns sucessfully with pg client', async () => { + it('returns successfully with pg client', async () => { await ensureSchemaExists( new ConfigReader({ client: 'pg', diff --git a/packages/catalog-model/examples/apis/swapi-graphql.yaml b/packages/catalog-model/examples/apis/swapi-graphql.yaml index f3d924fc53..ccddc537e7 100644 --- a/packages/catalog-model/examples/apis/swapi-graphql.yaml +++ b/packages/catalog-model/examples/apis/swapi-graphql.yaml @@ -529,7 +529,7 @@ spec: terrains: [String] """ - The percentage of the planet surface that is naturally occuring water or bodies + The percentage of the planet surface that is naturally occurring water or bodies of water. """ surfaceWater: Float diff --git a/packages/cli/src/lib/builder/buildTypeDefinitionsWorker.ts b/packages/cli/src/lib/builder/buildTypeDefinitionsWorker.ts index 43e5cbc526..2533131a40 100644 --- a/packages/cli/src/lib/builder/buildTypeDefinitionsWorker.ts +++ b/packages/cli/src/lib/builder/buildTypeDefinitionsWorker.ts @@ -16,7 +16,7 @@ /** * NOTE: This is a worker thread function that is stringified and executed - * withing a `worker_threads.Worker`. Everything in this function must + * within a `worker_threads.Worker`. Everything in this function must * be self-contained. * Using TypeScript is fine as it is transpiled before being stringified. */ diff --git a/packages/cli/src/lib/diff/types.ts b/packages/cli/src/lib/diff/types.ts index d22d690196..ba649f66ff 100644 --- a/packages/cli/src/lib/diff/types.ts +++ b/packages/cli/src/lib/diff/types.ts @@ -19,7 +19,7 @@ export type WriteFileFunc = (contents: string) => Promise; export type FileDiff = { // Relative path within the target directory path: string; - // Wether the target file exists in the target directory. + // Whether the target file exists in the target directory. missing: boolean; // Contents of the file in the target directory, or an empty string if the file is missing. targetContents: string; diff --git a/packages/core-app-api/src/app/types.ts b/packages/core-app-api/src/app/types.ts index 902e64c09f..ff7a43d0eb 100644 --- a/packages/core-app-api/src/app/types.ts +++ b/packages/core-app-api/src/app/types.ts @@ -190,7 +190,7 @@ export type AppOptions = { /** * A collection of ApiFactories to register in the application as default APIs. - * Theses APIs can not be overridden by plugin factories, but can be overridden + * These APIs cannot be overridden by plugin factories, but can be overridden * by plugin APIs provided through the * A collection of ApiFactories to register in the application to either * add new ones, or override factories provided by default or by plugins. diff --git a/packages/core-app-api/src/routing/collectors.tsx b/packages/core-app-api/src/routing/collectors.tsx index 320f1a66d8..46734707a6 100644 --- a/packages/core-app-api/src/routing/collectors.tsx +++ b/packages/core-app-api/src/routing/collectors.tsx @@ -93,7 +93,7 @@ export const routeParentCollector = createCollector( acc.set(routeRef, parentRouteRef.sticky); // When we encounter a mount point with an explicit path, we stop gathering - // mount points withing the children and remove the sticky state + // mount points within the children and remove the sticky state if (node.props?.path) { nextParent = routeRef; } else { diff --git a/packages/core-components/src/components/EmptyState/EmptyState.test.tsx b/packages/core-components/src/components/EmptyState/EmptyState.test.tsx index 620e8d4d31..6487fcf4e6 100644 --- a/packages/core-components/src/components/EmptyState/EmptyState.test.tsx +++ b/packages/core-components/src/components/EmptyState/EmptyState.test.tsx @@ -20,7 +20,7 @@ import { renderWithEffects, wrapInTestApp } from '@backstage/test-utils'; import Button from '@material-ui/core/Button'; describe('', () => { - it('render EmptyState component with type annotaion is missing', async () => { + it('render EmptyState component with type annotation is missing', async () => { const rendered = await renderWithEffects( wrapInTestApp( ({ isOpen: false, diff --git a/packages/core-plugin-api/src/apis/definitions/FeatureFlagsApi.ts b/packages/core-plugin-api/src/apis/definitions/FeatureFlagsApi.ts index ac43bbebe8..946bd1d37a 100644 --- a/packages/core-plugin-api/src/apis/definitions/FeatureFlagsApi.ts +++ b/packages/core-plugin-api/src/apis/definitions/FeatureFlagsApi.ts @@ -17,7 +17,7 @@ import { ApiRef, createApiRef } from '../system'; /** - * Fetaure flag descriptor. + * Feature flag descriptor. * * @public */ diff --git a/packages/dev-utils/src/devApp/render.tsx b/packages/dev-utils/src/devApp/render.tsx index 36d6abcfd1..9f9fcd8ca6 100644 --- a/packages/dev-utils/src/devApp/render.tsx +++ b/packages/dev-utils/src/devApp/render.tsx @@ -148,7 +148,7 @@ export class DevAppBuilder { } /** - * Adds an array of themes to overide the default theme. + * Adds an array of themes to override the default theme. */ addThemes(themes: AppTheme[]) { this.themes = themes; diff --git a/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.ts b/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.ts index 96918b4e47..c7c8556355 100644 --- a/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.ts +++ b/packages/test-utils/src/testUtils/apis/ErrorApi/MockErrorApi.ts @@ -54,7 +54,7 @@ const nullObservable = { /** * Mock implementation of the {@link core-plugin-api#ErrorApi} to be used in tests. - * Incudes withForError and getErrors methods for error testing. + * Includes withForError and getErrors methods for error testing. * @public */ export class MockErrorApi implements ErrorApi { diff --git a/plugins/api-docs/dev/graphql-example-api.yaml b/plugins/api-docs/dev/graphql-example-api.yaml index f3d924fc53..ccddc537e7 100644 --- a/plugins/api-docs/dev/graphql-example-api.yaml +++ b/plugins/api-docs/dev/graphql-example-api.yaml @@ -529,7 +529,7 @@ spec: terrains: [String] """ - The percentage of the planet surface that is naturally occuring water or bodies + The percentage of the planet surface that is naturally occurring water or bodies of water. """ surfaceWater: Float diff --git a/plugins/badges-backend/src/types.ts b/plugins/badges-backend/src/types.ts index 4342a5af40..0467b18155 100644 --- a/plugins/badges-backend/src/types.ts +++ b/plugins/badges-backend/src/types.ts @@ -44,7 +44,7 @@ export interface Badge { link?: string; /** Badge message */ message: string; - /** Badge style (apperance). One of "plastic", "flat", "flat-square", "for-the-badge" and "social" */ + /** Badge style (appearance). One of "plastic", "flat", "flat-square", "for-the-badge" and "social" */ style?: BadgeStyle; } diff --git a/plugins/catalog-backend-module-msgraph/config.d.ts b/plugins/catalog-backend-module-msgraph/config.d.ts index d47abf60bb..db5ab81c4b 100644 --- a/plugins/catalog-backend-module-msgraph/config.d.ts +++ b/plugins/catalog-backend-module-msgraph/config.d.ts @@ -58,7 +58,7 @@ export interface Config { clientSecret: string; // TODO: Consider not making these config options and pass them in the - // constructor instead. They are probably not environment specifc, so + // constructor instead. They are probably not environment specific, so // they could also be configured "in code". /** diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts index 467b03733e..5ff4fa4e0e 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/client.test.ts @@ -157,7 +157,7 @@ describe('MicrosoftGraphClient', () => { expect(userProfile).toEqual({ surname: 'Example' }); }); - it('should throw expection if load user profile fails', async () => { + it('should throw exception if load user profile fails', async () => { worker.use( rest.get('https://example.com/users/user-id', (_, res, ctx) => res(ctx.status(404)), diff --git a/plugins/catalog-backend/src/ingestion/CatalogRules.ts b/plugins/catalog-backend/src/ingestion/CatalogRules.ts index e4bfdb8d0f..376ea128b7 100644 --- a/plugins/catalog-backend/src/ingestion/CatalogRules.ts +++ b/plugins/catalog-backend/src/ingestion/CatalogRules.ts @@ -131,7 +131,7 @@ export class DefaultCatalogRulesEnforcer implements CatalogRulesEnforcer { constructor(private readonly rules: CatalogRule[]) {} /** - * Checks wether a specific entity/location combination is allowed + * Checks whether a specific entity/location combination is allowed * according to the configured rules. */ isAllowed(entity: Entity, location: LocationSpec) { diff --git a/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.test.ts b/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.test.ts index 8cf250de2a..ac4415549e 100644 --- a/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.test.ts +++ b/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.test.ts @@ -76,7 +76,7 @@ describe('CodeOwnersProcessor', () => { expect(result).toEqual(entity); }); - it('should ingore invalid locations type', async () => { + it('should ignore invalid locations type', async () => { const { entity, processor } = setupTest(); const result = await processor.preProcessEntity( diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/relations.ts b/plugins/catalog-graph/src/components/EntityRelationsGraph/relations.ts index ed847d7143..44352040ae 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/relations.ts +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/relations.ts @@ -38,7 +38,7 @@ import { */ export type RelationPairs = [string, string][]; -// TODO: This file only contains the pairs for the build-in relations. +// TODO: This file only contains the pairs for the built-in relations. // How to implement this when custom relations are used? Right now you can pass // the relations everywhere. // Another option is to move this into @backstage/catalog-model diff --git a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx index 9a878e3b60..563ccd0cd7 100644 --- a/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx +++ b/plugins/catalog/src/components/AboutCard/AboutCard.test.tsx @@ -448,7 +448,7 @@ describe('', () => { expect(getByText('View TechDocs').closest('a')).not.toHaveAttribute('href'); }); - it('renders disbaled techdocs link when route is not bound', async () => { + it('renders disabled techdocs link when route is not bound', async () => { const entity = { apiVersion: 'v1', kind: 'Component', diff --git a/plugins/cicd-statistics/src/apis/types.ts b/plugins/cicd-statistics/src/apis/types.ts index 0a87b40fc2..32d9d3f2df 100644 --- a/plugins/cicd-statistics/src/apis/types.ts +++ b/plugins/cicd-statistics/src/apis/types.ts @@ -47,7 +47,7 @@ export const statusTypes: Array = [ /** * The branch enum of either 'master' or 'branch' (or possibly the meta 'all'). * - * The concept of what constitues a master branch is generic. It might be called + * The concept of what constitutes a master branch is generic. It might be called * something like 'release' or 'main' or 'trunk' in the underlying CI/CD system, * which is then up to the Api to map accordingly. */ diff --git a/plugins/code-coverage-backend/src/service/converter/cobertura.ts b/plugins/code-coverage-backend/src/service/converter/cobertura.ts index e7f7490304..025d40a4f6 100644 --- a/plugins/code-coverage-backend/src/service/converter/cobertura.ts +++ b/plugins/code-coverage-backend/src/service/converter/cobertura.ts @@ -27,7 +27,7 @@ export class Cobertura implements Converter { * convert cobertura into shared json coverage format * * @param xml - cobertura xml object - * @param scmFiles - list of files that are commited to SCM + * @param scmFiles - list of files that are committed to SCM */ convert(xml: CoberturaXML, scmFiles: string[]): FileEntry[] { const ppc = xml.coverage.packages diff --git a/plugins/cost-insights/src/components/BarChart/BarChart.tsx b/plugins/cost-insights/src/components/BarChart/BarChart.tsx index 98a2410b7b..27ef69db7a 100644 --- a/plugins/cost-insights/src/components/BarChart/BarChart.tsx +++ b/plugins/cost-insights/src/components/BarChart/BarChart.tsx @@ -104,7 +104,7 @@ export const BarChart = ({ .slice(stepStart, stepEnd); // Pin the domain to the largest value in the series. - // Intentially redundant - This could simply be derived from the first element in the already sorted list, + // Intentionally redundant - This could simply be derived from the first element in the already sorted list, // but that may not be the case in the future when custom sorting is implemented. const globalResourcesMax = resources.reduce( (max, r: ResourceData) => Math.max(max, r.current, r.previous), diff --git a/plugins/cost-insights/src/utils/scroll.tsx b/plugins/cost-insights/src/utils/scroll.tsx index 1cf824aeda..65fce35174 100644 --- a/plugins/cost-insights/src/utils/scroll.tsx +++ b/plugins/cost-insights/src/utils/scroll.tsx @@ -17,7 +17,7 @@ import React, { useEffect, useRef } from 'react'; import { ScrollTo, useScroll } from '../hooks/useScroll'; /* - Utility component use in conjuction with useScroll that allows scrollable components to control behavior and offset. + Utility component use in conjunction with useScroll that allows scrollable components to control behavior and offset. 1. ScrollAnchor must be a direct child of a scrollable component. 2. ScrollAnchor's parent position must be relative. 3. ScrollAnchor's id must be unique. diff --git a/plugins/git-release-manager/src/components/Differ.test.tsx b/plugins/git-release-manager/src/components/Differ.test.tsx index 20483767b4..a5af1c893e 100644 --- a/plugins/git-release-manager/src/components/Differ.test.tsx +++ b/plugins/git-release-manager/src/components/Differ.test.tsx @@ -52,7 +52,7 @@ describe('Differ', () => { expect(next).not.toBeInTheDocument(); }); - it('should render icon & current & next (with seperator)', () => { + it('should render icon & current & next (with separator)', () => { const { getByTestId, queryByTestId } = render( - Error occured while fetching information for "{project.owner}/ + Error occurred while fetching information for "{project.owner}/ {project.repo}" ({gitBatchInfo.error.message}) ); diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index 45f7424e40..d1625cb65e 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -332,7 +332,7 @@ describe('JenkinsApi', () => { const result = await jenkinsApi.getProjects(jenkinsInfo); expect(result).toHaveLength(1); - // TODO: I am really just asserting the previous behaviour wth no understanding here. + // TODO: I am really just asserting the previous behaviour with no understanding here. // In my 2 Jenkins instances, 1 returns a lot of different and confusing BuildData sections and 1 returns none ☹️ expect(result[0].lastBuild!.source).toEqual({ branchName: 'master', diff --git a/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts b/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts index a88dbf965e..d9a97e2f2d 100644 --- a/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts +++ b/plugins/jenkins-backend/src/service/jenkinsInfoProvider.ts @@ -97,7 +97,7 @@ export class JenkinsConfig { const unnamedAllPresent = baseUrl && username && apiKey; if (!(unnamedAllPresent || unnamedNonePresent)) { throw new Error( - `Found partial default jenkins config. All (or none) of baseUrl, username ans apiKey must be provided.`, + `Found partial default jenkins config. All (or none) of baseUrl, username and apiKey must be provided.`, ); } diff --git a/plugins/jenkins/src/constants.ts b/plugins/jenkins/src/constants.ts index e1be37ee46..53978bc8f6 100644 --- a/plugins/jenkins/src/constants.ts +++ b/plugins/jenkins/src/constants.ts @@ -14,6 +14,6 @@ * limitations under the License. */ export const JENKINS_ANNOTATION = 'jenkins.io/job-full-name'; -// @deprecated The legacy annotation used for identifing Jenkins jobs, use +// @deprecated The legacy annotation used for identifying Jenkins jobs, use // JENKINS_ANNOTATION instead. export const LEGACY_JENKINS_ANNOTATION = 'jenkins.io/github-folder'; diff --git a/plugins/kubernetes-backend/src/types/types.ts b/plugins/kubernetes-backend/src/types/types.ts index 4f25805063..37c26956fe 100644 --- a/plugins/kubernetes-backend/src/types/types.ts +++ b/plugins/kubernetes-backend/src/types/types.ts @@ -110,7 +110,7 @@ export interface ClusterDetails { * @remarks * Note that you should specify the app used for the dashboard * using the dashboardApp property, in order to properly format - * links to kubernetes resources, otherwise it will assume that you're running the standard one. + * links to kubernetes resources, otherwise it will assume that you're running the standard one. * @see dashboardApp * @see dashboardParameters */ diff --git a/plugins/kubernetes/src/error-detection/error-detection.test.ts b/plugins/kubernetes/src/error-detection/error-detection.test.ts index dcac7db907..ef64ff6a20 100644 --- a/plugins/kubernetes/src/error-detection/error-detection.test.ts +++ b/plugins/kubernetes/src/error-detection/error-detection.test.ts @@ -231,7 +231,7 @@ describe('detectErrors', () => { expect(errors).toBeDefined(); expect(errors).toHaveLength(0); }); - it('should detect in deployment which cant progress', () => { + it('should detect in deployment which cannot progress', () => { const result = detectErrors(oneDeployment(failingDeploy as any)); expect(result.size).toBe(1); diff --git a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx index 0b6a676f52..69608833f7 100644 --- a/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx +++ b/plugins/newrelic-dashboard/src/components/NewRelicDashboard/DashboardSnapshotList/DashboardSnapshot.tsx @@ -71,7 +71,7 @@ export const DashboardSnapshot = ({ src={url} /> ) : ( - 'Dashboard loading... , click here to open if it didnt render correctly' + 'Dashboard loading... , click here to open if it did not render correctly' )}
diff --git a/plugins/permission-common/src/types/api.ts b/plugins/permission-common/src/types/api.ts index e0ab1f1642..5b46b955d8 100644 --- a/plugins/permission-common/src/types/api.ts +++ b/plugins/permission-common/src/types/api.ts @@ -79,7 +79,7 @@ export type PermissionCondition = { type NonEmptyArray = [T, ...T[]]; /** - * Represnts a logical AND for the provided criteria. + * Represents a logical AND for the provided criteria. * @public */ export type AllOfCriteria = { @@ -87,7 +87,7 @@ export type AllOfCriteria = { }; /** - * Represnts a logical OR for the provided criteria. + * Represents a logical OR for the provided criteria. * @public */ export type AnyOfCriteria = { diff --git a/plugins/permission-react/src/apis/PermissionApi.ts b/plugins/permission-react/src/apis/PermissionApi.ts index b17350c38e..69a42cae91 100644 --- a/plugins/permission-react/src/apis/PermissionApi.ts +++ b/plugins/permission-react/src/apis/PermissionApi.ts @@ -21,7 +21,7 @@ import { import { ApiRef, createApiRef } from '@backstage/core-plugin-api'; /** - * This API is used by various frontend utilities that allow developers to implement authorization wihtin their frontend + * This API is used by various frontend utilities that allow developers to implement authorization within their frontend * plugins. A plugin developer will likely not have to interact with this API or its implementations directly, but * rather with the aforementioned utility components/hooks. * @public diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index 18a6722663..8c501cf8f1 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -115,7 +115,7 @@ describe('fetch:cookiecutter', () => { }); }); - // Mock when executeShellCommand is called it creats some new files in the mock filesystem + // Mock when executeShellCommand is called it creates some new files in the mock filesystem executeShellCommand.mockImplementation(async () => { mockFs({ [`${join(mockTmpDir, 'intermediate')}`]: { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 1b635b695c..61df2a167d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -339,7 +339,7 @@ describe('DefaultWorkflowRunner', () => { expect(logger.error).not.toHaveBeenCalled(); }); - it('should keep the original types for the input and not parse things that arent meant to be parsed', async () => { + it('should keep the original types for the input and not parse things that are not meant to be parsed', async () => { const task = createMockTaskWithSpec({ apiVersion: 'scaffolder.backstage.io/v1beta3', steps: [ diff --git a/plugins/scaffolder/src/types.ts b/plugins/scaffolder/src/types.ts index a542a8a473..bddd6a7b70 100644 --- a/plugins/scaffolder/src/types.ts +++ b/plugins/scaffolder/src/types.ts @@ -73,7 +73,7 @@ export type ScaffolderTaskOutput = { /** * The shape of each entry of parameters which gets rendered - * as a seperate step in the wizard input + * as a separate step in the wizard input * * @public */ diff --git a/plugins/search-backend-node/src/Scheduler.test.ts b/plugins/search-backend-node/src/Scheduler.test.ts index d5f671358a..de6add13fe 100644 --- a/plugins/search-backend-node/src/Scheduler.test.ts +++ b/plugins/search-backend-node/src/Scheduler.test.ts @@ -61,7 +61,7 @@ describe('Scheduler', () => { // Stop scheduling process testScheduler.stop(); - // Should't throw error, as it is stopped. + // Shouldn't throw error, as it is stopped. expect(() => testScheduler.addToSchedule(mockTask2, 4), ).not.toThrowError(); diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts index 46aaf47c60..b0bd2bca8f 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.test.ts @@ -932,7 +932,7 @@ describe('LunrSearchEngine', () => { }); inspectableSearchEngine.setDocStore({ 'existing-location': doc }); - // Mock methds called by close handler. + // Mock methods called by close handler. indexerMock.buildIndex.mockReturnValueOnce('expected-index'); indexerMock.getDocumentStore.mockReturnValueOnce({ 'new-location': doc, diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts index b642647466..b1d695ad1d 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts @@ -68,7 +68,7 @@ export class LunrSearchEngine implements SearchEngine { lunrQueryBuilder: q => { const termToken = lunr.tokenizer(term); - // Support for typeahead seach is based on https://github.com/olivernn/lunr.js/issues/256#issuecomment-295407852 + // Support for typeahead search is based on https://github.com/olivernn/lunr.js/issues/256#issuecomment-295407852 // look for an exact match and apply a large positive boost q.term(termToken, { usePipeline: true, diff --git a/plugins/search/src/components/SearchFilter/hooks.ts b/plugins/search/src/components/SearchFilter/hooks.ts index 7b27ac1fe2..217e65d1c0 100644 --- a/plugins/search/src/components/SearchFilter/hooks.ts +++ b/plugins/search/src/components/SearchFilter/hooks.ts @@ -43,7 +43,7 @@ export const useAsyncFilterValues = ( // for the lifetime of the hook/component. if (valuesMemo.current[inputValue] === undefined) { valuesMemo.current[inputValue] = callback(inputValue).then(values => { - // Overrite the value for future immediate returns. + // Override the value for future immediate returns. valuesMemo.current[inputValue] = values; return values; }); diff --git a/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.test.ts b/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.test.ts index 291f21a0d1..659f4783ce 100644 --- a/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.test.ts +++ b/plugins/techdocs-backend/src/search/DefaultTechDocsCollatorFactory.test.ts @@ -203,7 +203,7 @@ describe('DefaultTechDocsCollatorFactory', () => { const pipeline = TestPipeline.withSubject(collator); const { documents } = await pipeline.execute(); - // Only 1 entity with TechDocs configured multipled by 3 pages. + // Only 1 entity with TechDocs configured multiplied by 3 pages. expect(documents).toHaveLength(3); }); diff --git a/plugins/techdocs-node/src/stages/publish/helpers.test.ts b/plugins/techdocs-node/src/stages/publish/helpers.test.ts index 7acdb47ea7..ceb1b02a20 100644 --- a/plugins/techdocs-node/src/stages/publish/helpers.test.ts +++ b/plugins/techdocs-node/src/stages/publish/helpers.test.ts @@ -216,7 +216,7 @@ describe('getCloudPathForLocalPath', () => { ); }); - it('should add trailing seperator to root directory', () => { + it('should add trailing separator to root directory', () => { const localPath = 'index/html'; const rootPath = 'backstage-data/techdocs'; const remoteBucket = getCloudPathForLocalPath( @@ -230,7 +230,7 @@ describe('getCloudPathForLocalPath', () => { ); }); - it('should remove leading seperator from root directory', () => { + it('should remove leading separator from root directory', () => { const localPath = 'index/html'; const rootPath = '/backstage-data/techdocs/'; const remoteBucket = getCloudPathForLocalPath( @@ -244,7 +244,7 @@ describe('getCloudPathForLocalPath', () => { ); }); - it('should ignore seperator if root directory is explicitly defined', () => { + it('should ignore separator if root directory is explicitly defined', () => { const localPath = 'index/html'; const rootPath = '/'; const remoteBucket = getCloudPathForLocalPath( diff --git a/plugins/techdocs/src/home/components/Grids/DocsCardGrid.test.tsx b/plugins/techdocs/src/home/components/Grids/DocsCardGrid.test.tsx index 311f83544a..0891ddcfd3 100644 --- a/plugins/techdocs/src/home/components/Grids/DocsCardGrid.test.tsx +++ b/plugins/techdocs/src/home/components/Grids/DocsCardGrid.test.tsx @@ -45,7 +45,7 @@ describe('Entity Docs Card Grid', () => { jest.resetAllMocks(); }); - it('should render all entities passed ot it', async () => { + it('should render all entities passed to it', async () => { const { findByText, findAllByRole } = render( wrapInTestApp( { return dom => { - // Change the first occurance of H1 to say "TechDocs!" + // Change the first occurrence of H1 to say "TechDocs!" dom.querySelector('h1')?.innerHTML = 'TechDocs!'; return dom; diff --git a/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx b/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx index 53471f5e9f..d03555f5e2 100644 --- a/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx +++ b/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx @@ -53,7 +53,7 @@ describe('BuildList', () => { ); userEvent.click( - (await rendered.findAllByLabelText('Detail panel visiblity toggle'))[0], + (await rendered.findAllByLabelText('Detail panel visibility toggle'))[0], ); expect(await rendered.findByText('BuildDetails')).toBeInTheDocument(); }); From f24ef7864e38e99c8c238b6e2674f8848b7d29a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 14 Mar 2022 09:33:11 +0100 Subject: [PATCH 010/410] add changeset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/sixty-countries-peel.md | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .changeset/sixty-countries-peel.md diff --git a/.changeset/sixty-countries-peel.md b/.changeset/sixty-countries-peel.md new file mode 100644 index 0000000000..fbb539ef86 --- /dev/null +++ b/.changeset/sixty-countries-peel.md @@ -0,0 +1,38 @@ +--- +'@backstage/backend-common': patch +'@backstage/catalog-model': patch +'@backstage/cli': patch +'@backstage/core-app-api': patch +'@backstage/core-components': patch +'@backstage/core-plugin-api': patch +'@backstage/dev-utils': patch +'@backstage/test-utils': patch +'@backstage/plugin-api-docs': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-catalog': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-catalog-graph': patch +'@backstage/plugin-cicd-statistics': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-cost-insights': patch +'@backstage/plugin-git-release-manager': patch +'@backstage/plugin-jenkins': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/plugin-kubernetes': patch +'@backstage/plugin-kubernetes-backend': patch +'@backstage/plugin-newrelic-dashboard': patch +'@backstage/plugin-permission-common': patch +'@backstage/plugin-permission-react': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-search': patch +'@backstage/plugin-search-backend-node': patch +'@backstage/plugin-techdocs': patch +'@backstage/plugin-techdocs-backend': patch +'@backstage/plugin-techdocs-node': patch +'@backstage/plugin-xcmetrics': patch +--- + +Minor typo fixes From a26b7414866f1016d0b750532a5cb069ad61b850 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 2 Mar 2022 16:43:16 +0100 Subject: [PATCH 011/410] microsite: initial setup for release page Signed-off-by: Patrik Oldsberg --- docs/releases/overview.md | 7 +++++++ docs/releases/v1.0.0.md | 9 +++++++++ microsite/sidebars.json | 12 ++++++++++++ microsite/siteConfig.js | 5 +++++ 4 files changed, 33 insertions(+) create mode 100644 docs/releases/overview.md create mode 100644 docs/releases/v1.0.0.md diff --git a/docs/releases/overview.md b/docs/releases/overview.md new file mode 100644 index 0000000000..abc8d483e2 --- /dev/null +++ b/docs/releases/overview.md @@ -0,0 +1,7 @@ +--- +id: overview +title: Overview +description: Overview of the Backstage Releases +--- + +Things have been released! diff --git a/docs/releases/v1.0.0.md b/docs/releases/v1.0.0.md new file mode 100644 index 0000000000..66f86c9f3b --- /dev/null +++ b/docs/releases/v1.0.0.md @@ -0,0 +1,9 @@ +--- +id: v1.0.0 +title: v1.0.0 +description: Release v1.0.0 +--- + +## Highlights + +It's 1.0! diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 1d409ae051..02344ffb7a 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -1,4 +1,16 @@ { + "releases": { + "Releases": [ + "releases/overview", + { + "type": "subcategory", + "label": "Release Notes", + "ids": [ + "releases/v1.0.0" + ] + } + ] + }, "docs": { "Overview": [ "overview/what-is-backstage", diff --git a/microsite/siteConfig.js b/microsite/siteConfig.js index 30fec73832..c47536602c 100644 --- a/microsite/siteConfig.js +++ b/microsite/siteConfig.js @@ -44,6 +44,11 @@ const siteConfig = { blog: true, label: 'Blog', }, + { + doc: 'releases/overview', + href: '/releases', + label: 'Releases', + }, { page: 'demos', label: 'Demos', From 2a80a3e88b7e13ba46fa739a782be0dfd6b72421 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Mar 2022 12:58:06 +0100 Subject: [PATCH 012/410] microsite: remove newsletter nav item Signed-off-by: Patrik Oldsberg --- microsite/siteConfig.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/microsite/siteConfig.js b/microsite/siteConfig.js index c47536602c..794349d815 100644 --- a/microsite/siteConfig.js +++ b/microsite/siteConfig.js @@ -53,10 +53,6 @@ const siteConfig = { page: 'demos', label: 'Demos', }, - { - href: 'https://mailchi.mp/spotify/backstage-community', - label: 'Newsletter', - }, ], /* path to images for header/footer */ From 658284411848eea5a7d379d70c383e15252d6cd3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 14 Mar 2022 15:54:02 +0100 Subject: [PATCH 013/410] microsite: flatten release section Signed-off-by: Patrik Oldsberg --- docs/releases/overview.md | 7 ------- microsite/sidebars.json | 11 ++--------- microsite/siteConfig.js | 15 ++++++++++++++- 3 files changed, 16 insertions(+), 17 deletions(-) delete mode 100644 docs/releases/overview.md diff --git a/docs/releases/overview.md b/docs/releases/overview.md deleted file mode 100644 index abc8d483e2..0000000000 --- a/docs/releases/overview.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -id: overview -title: Overview -description: Overview of the Backstage Releases ---- - -Things have been released! diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 02344ffb7a..03cb2a965f 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -1,14 +1,7 @@ { "releases": { - "Releases": [ - "releases/overview", - { - "type": "subcategory", - "label": "Release Notes", - "ids": [ - "releases/v1.0.0" - ] - } + "Release Notes": [ + "releases/v1.0.0" ] }, "docs": { diff --git a/microsite/siteConfig.js b/microsite/siteConfig.js index 794349d815..2e440ff955 100644 --- a/microsite/siteConfig.js +++ b/microsite/siteConfig.js @@ -8,6 +8,19 @@ // See https://docusaurus.io/docs/site-config for all the possible // site configuration options. +// This figures out what the most recent release version is, so that we can link to it in the header +const [{name: latestRelease}] = require('fs').readdirSync(require('path').resolve(__dirname, '../docs/releases')).map(file => { + const match = file.match(/^v(\d+)\.(\d+)\.(\d+)\.md$/) + if (!match) { + return undefined + } + const parts = match.slice(1).map(v => parseInt(v, 10)) + return { + name: file.slice(0, file.length - '.md'.length), + weight: parts[0]*1000000 + parts[1]*1000 + parts[2], + } +}).filter(Boolean).sort((a, b) => b.weight - a.weight); + const siteConfig = { title: 'Backstage Software Catalog and Developer Platform', // Title for your website. tagline: 'An open platform for building developer portals', @@ -45,7 +58,7 @@ const siteConfig = { label: 'Blog', }, { - doc: 'releases/overview', + doc: `releases/${latestRelease}`, href: '/releases', label: 'Releases', }, From 7cb5788e9ce94ec03d9304902efa006bc9f94202 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 14 Mar 2022 13:39:16 +0100 Subject: [PATCH 014/410] clean up deprecations of techdocs plugin Signed-off-by: Emma Indal --- docs/features/techdocs/configuration.md | 5 -- plugins/techdocs/api-report.md | 23 +----- plugins/techdocs/config.d.ts | 7 -- plugins/techdocs/src/api.ts | 6 -- plugins/techdocs/src/client.ts | 10 +-- .../components/LegacyTechDocsHome.test.tsx | 76 ------------------ .../home/components/LegacyTechDocsHome.tsx | 58 -------------- .../reader/components/LegacyTechDocsPage.tsx | 80 ------------------- .../reader/components/TechDocsReaderPage.tsx | 16 +--- .../components/TechDocsReaderPageHeader.tsx | 13 --- .../techdocs/src/reader/components/index.ts | 2 - .../TechDocsSearchResultListItem.tsx | 6 -- 12 files changed, 6 insertions(+), 296 deletions(-) delete mode 100644 plugins/techdocs/src/home/components/LegacyTechDocsHome.test.tsx delete mode 100644 plugins/techdocs/src/home/components/LegacyTechDocsHome.tsx delete mode 100644 plugins/techdocs/src/reader/components/LegacyTechDocsPage.tsx diff --git a/docs/features/techdocs/configuration.md b/docs/features/techdocs/configuration.md index 3edc55574f..d16e9142dc 100644 --- a/docs/features/techdocs/configuration.md +++ b/docs/features/techdocs/configuration.md @@ -161,11 +161,6 @@ techdocs: # default value is 1000 readTimeout: 500 - # (Optional and Legacy) TechDocs makes API calls to techdocs-backend using this URL. e.g. get docs of an entity, get metadata, etc. - # You don't have to specify this anymore. - - requestUrl: http://localhost:7007/api/techdocs - # (Optional and Legacy) Just another route in techdocs-backend where TechDocs requests the static files from. This URL uses an HTTP middleware # to serve files from either a local directory or an External storage provider. # You don't have to specify this anymore. diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index f7ef6e984a..e6f9d463ed 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -41,11 +41,6 @@ export type DocsCardGridProps = { entities: Entity[] | undefined; }; -// @public @deprecated (undocumented) -export const DocsResultListItem: ( - props: TechDocsSearchResultListItemProps, -) => JSX.Element; - // @public export const DocsTable: { (props: DocsTableProps): JSX.Element | null; @@ -185,6 +180,7 @@ export type TabsConfig = TabConfig[]; // @public export interface TechDocsApi { + // (undocumented) getApiOrigin(): Promise; // (undocumented) getEntityMetadata( @@ -243,23 +239,9 @@ export type TechDocsMetadata = { site_description: string; }; -// @public @deprecated (undocumented) -export const TechDocsPage: (props: TechDocsReaderPageProps) => JSX.Element; - // @public export const TechdocsPage: () => JSX.Element; -// @public @deprecated (undocumented) -export const TechDocsPageHeader: ( - props: TechDocsReaderPageHeaderProps, -) => JSX.Element; - -// @public @deprecated (undocumented) -export type TechDocsPageHeaderProps = TechDocsReaderPageHeaderProps; - -// @public @deprecated (undocumented) -export type TechDocsPageRenderFunction = TechDocsReaderPageRenderFunction; - // @public export const TechDocsPageWrapper: ( props: TechDocsPageWrapperProps, @@ -292,7 +274,7 @@ export { techdocsPlugin }; // @public export const TechDocsReaderPage: ( props: TechDocsReaderPageProps, -) => JSX.Element; +) => JSX.Element | null; // @public export const TechDocsReaderPageHeader: ( @@ -348,6 +330,7 @@ export type TechDocsSearchResultListItemProps = { // @public export interface TechDocsStorageApi { + // (undocumented) getApiOrigin(): Promise; // (undocumented) getBaseUrl( diff --git a/plugins/techdocs/config.d.ts b/plugins/techdocs/config.d.ts index 5274a31ed0..82ae8dd87a 100644 --- a/plugins/techdocs/config.d.ts +++ b/plugins/techdocs/config.d.ts @@ -33,13 +33,6 @@ export interface Config { */ legacyUseCaseSensitiveTripletPaths?: boolean; - /** - * @example http://localhost:7007/api/techdocs - * @visibility frontend - * @deprecated - */ - requestUrl?: string; - sanitizer?: { /** * Allows iframe tag only for listed hosts diff --git a/plugins/techdocs/src/api.ts b/plugins/techdocs/src/api.ts index b349431b0d..51dd82e643 100644 --- a/plugins/techdocs/src/api.ts +++ b/plugins/techdocs/src/api.ts @@ -49,9 +49,6 @@ export type SyncResult = 'cached' | 'updated'; * @public */ export interface TechDocsStorageApi { - /** - * Set to techdocs.requestUrl as the URL for techdocs-backend API. - */ getApiOrigin(): Promise; getStorageUrl(): Promise; getBuilder(): Promise; @@ -73,9 +70,6 @@ export interface TechDocsStorageApi { * @public */ export interface TechDocsApi { - /** - * Set to techdocs.requestUrl as the URL for techdocs-backend API. - */ getApiOrigin(): Promise; getTechDocsMetadata(entityId: CompoundEntityRef): Promise; getEntityMetadata( diff --git a/plugins/techdocs/src/client.ts b/plugins/techdocs/src/client.ts index f260f00547..69a5a91efc 100644 --- a/plugins/techdocs/src/client.ts +++ b/plugins/techdocs/src/client.ts @@ -47,10 +47,7 @@ export class TechDocsClient implements TechDocsApi { } async getApiOrigin(): Promise { - return ( - this.configApi.getOptionalString('techdocs.requestUrl') ?? - (await this.discoveryApi.getBaseUrl('techdocs')) - ); + return await this.discoveryApi.getBaseUrl('techdocs'); } /** @@ -126,10 +123,7 @@ export class TechDocsStorageClient implements TechDocsStorageApi { } async getApiOrigin(): Promise { - return ( - this.configApi.getOptionalString('techdocs.requestUrl') ?? - (await this.discoveryApi.getBaseUrl('techdocs')) - ); + return await this.discoveryApi.getBaseUrl('techdocs'); } async getStorageUrl(): Promise { diff --git a/plugins/techdocs/src/home/components/LegacyTechDocsHome.test.tsx b/plugins/techdocs/src/home/components/LegacyTechDocsHome.test.tsx deleted file mode 100644 index 4c33f69fb7..0000000000 --- a/plugins/techdocs/src/home/components/LegacyTechDocsHome.test.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { CatalogApi, catalogApiRef } from '@backstage/plugin-catalog-react'; -import { renderInTestApp, TestApiRegistry } from '@backstage/test-utils'; -import { screen } from '@testing-library/react'; -import React from 'react'; -import { LegacyTechDocsHome } from './LegacyTechDocsHome'; - -import { ApiProvider, ConfigReader } from '@backstage/core-app-api'; -import { ConfigApi, configApiRef } from '@backstage/core-plugin-api'; -import { rootDocsRouteRef } from '../../routes'; - -const mockCatalogApi = { - getEntityByRef: jest.fn(), - getEntities: async () => ({ - items: [ - { - apiVersion: 'version', - kind: 'User', - metadata: { - name: 'owned', - namespace: 'default', - }, - }, - ], - }), -} as Partial; - -describe('Legacy TechDocs Home', () => { - const configApi: ConfigApi = new ConfigReader({ - organization: { - name: 'My Company', - }, - }); - - const apiRegistry = TestApiRegistry.from( - [catalogApiRef, mockCatalogApi], - [configApiRef, configApi], - ); - - it('should render a TechDocs home page', async () => { - await renderInTestApp( - - - , - { - mountedRoutes: { - '/docs/:namespace/:kind/:name/*': rootDocsRouteRef, - }, - }, - ); - - // Header - expect(await screen.findByText('Documentation')).toBeInTheDocument(); - expect( - await screen.findByText(/Documentation available in My Company/i), - ).toBeInTheDocument(); - - // Explore Content - expect(await screen.findByTestId('docs-explore')).toBeDefined(); - }); -}); diff --git a/plugins/techdocs/src/home/components/LegacyTechDocsHome.tsx b/plugins/techdocs/src/home/components/LegacyTechDocsHome.tsx deleted file mode 100644 index 536c2c80c8..0000000000 --- a/plugins/techdocs/src/home/components/LegacyTechDocsHome.tsx +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; -import { PanelType, TechDocsCustomHome } from './TechDocsCustomHome'; - -/** - * @deprecated Use {@link TechDocsCustomHome} instead. - */ -export const LegacyTechDocsHome = () => { - const tabsConfig = [ - { - label: 'Overview', - panels: [ - { - title: 'Overview', - description: - 'Explore your internal technical ecosystem through documentation.', - panelType: 'DocsCardGrid' as PanelType, - filterPredicate: () => true, - }, - // uncomment this if you would like to have a secondary panel with owned documents - // { - // title: 'Owned', - // description: 'Explore your owned internal documentation.', - // panelType: 'DocsCardGrid' as PanelType, - // filterPredicate: 'ownedByUser', - // }, - ], - }, - { - label: 'Owned Documents', - panels: [ - { - title: 'Owned documents', - description: 'Access your documentation.', - panelType: 'DocsTable' as PanelType, - // ownedByUser filters out entities owned by signed in user - filterPredicate: 'ownedByUser', - }, - ], - }, - ]; - return ; -}; diff --git a/plugins/techdocs/src/reader/components/LegacyTechDocsPage.tsx b/plugins/techdocs/src/reader/components/LegacyTechDocsPage.tsx deleted file mode 100644 index 4bfda57ace..0000000000 --- a/plugins/techdocs/src/reader/components/LegacyTechDocsPage.tsx +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React, { useCallback, useState } from 'react'; -import { useParams } from 'react-router-dom'; -import useAsync from 'react-use/lib/useAsync'; -import { techdocsApiRef } from '../../api'; -import { TechDocsNotFound } from './TechDocsNotFound'; -import { useApi } from '@backstage/core-plugin-api'; -import { Page, Content } from '@backstage/core-components'; -import { Reader } from './Reader'; -import { TechDocsReaderPageHeader } from './TechDocsReaderPageHeader'; - -/** - * @deprecated Use {@link TechDocsReaderPage} instead. - */ -export const LegacyTechDocsPage = () => { - const [documentReady, setDocumentReady] = useState(false); - const { namespace, kind, name } = useParams(); - - const techdocsApi = useApi(techdocsApiRef); - - const { value: techdocsMetadataValue } = useAsync(() => { - if (documentReady) { - return techdocsApi.getTechDocsMetadata({ kind, namespace, name }); - } - - return Promise.resolve(undefined); - }, [kind, namespace, name, techdocsApi, documentReady]); - - const { value: entityMetadataValue, error: entityMetadataError } = - useAsync(() => { - return techdocsApi.getEntityMetadata({ kind, namespace, name }); - }, [kind, namespace, name, techdocsApi]); - - const onReady = useCallback(() => { - setDocumentReady(true); - }, [setDocumentReady]); - - if (entityMetadataError) { - return ; - } - - return ( - - - - - - - ); -}; diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPage.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPage.tsx index 184ab24b6d..ff44d429df 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPage.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPage.tsx @@ -19,7 +19,6 @@ import { useOutlet } from 'react-router'; import { useParams } from 'react-router-dom'; import useAsync from 'react-use/lib/useAsync'; import { techdocsApiRef } from '../../api'; -import { LegacyTechDocsPage } from './LegacyTechDocsPage'; import { TechDocsEntityMetadata, TechDocsMetadata } from '../../types'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { useApi, useApp } from '@backstage/core-plugin-api'; @@ -79,7 +78,7 @@ export const TechDocsReaderPage = (props: TechDocsReaderPageProps) => { if (entityMetadataError) return ; - if (!children) return outlet || ; + if (!children) return outlet; return ( @@ -94,16 +93,3 @@ export const TechDocsReaderPage = (props: TechDocsReaderPageProps) => { ); }; - -/** - * @public - * @deprecated use {@link TechDocsReaderPage} instead - */ -export const TechDocsPage = TechDocsReaderPage; - -/** - * @public - * @deprecated use {@link TechDocsReaderPageRenderFunction} instead - */ - -export type TechDocsPageRenderFunction = TechDocsReaderPageRenderFunction; diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPageHeader.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPageHeader.tsx index 5867641c48..f6a3352e7d 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPageHeader.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPageHeader.tsx @@ -122,16 +122,3 @@ export const TechDocsReaderPageHeader = ( ); }; - -/** - * @public - * @deprecated use {@link TechDocsReaderPageHeader} instead - */ -export const TechDocsPageHeader = TechDocsReaderPageHeader; - -/** - * @public - * @deprecated use {@link TechDocsReaderPageHeader} instead - */ - -export type TechDocsPageHeaderProps = TechDocsReaderPageHeaderProps; diff --git a/plugins/techdocs/src/reader/components/index.ts b/plugins/techdocs/src/reader/components/index.ts index 3124a92f93..8e660767ad 100644 --- a/plugins/techdocs/src/reader/components/index.ts +++ b/plugins/techdocs/src/reader/components/index.ts @@ -17,10 +17,8 @@ export * from './Reader'; export type { TechDocsReaderPageProps, - TechDocsPageRenderFunction, TechDocsReaderPageRenderFunction, } from './TechDocsReaderPage'; -export { TechDocsPage } from './TechDocsReaderPage'; export * from './TechDocsReaderPageHeader'; export * from './TechDocsStateIndicator'; diff --git a/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx b/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx index 152fa2e3d3..db5751654d 100644 --- a/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx +++ b/plugins/techdocs/src/search/components/TechDocsSearchResultListItem.tsx @@ -101,9 +101,3 @@ export const TechDocsSearchResultListItem = ( ); }; - -/** - * @public - * @deprecated use {@link TechDocsSearchResultListItem} instead - */ -export const DocsResultListItem = TechDocsSearchResultListItem; From cb4f0e4f07c7a7d18e4ec5ce9c2f10cca0bf3171 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 14 Mar 2022 14:03:24 +0100 Subject: [PATCH 015/410] clean up deprecations of techdocs-node plugin Signed-off-by: Emma Indal --- plugins/techdocs-node/api-report.md | 22 ++++++++----------- .../src/stages/prepare/dir.test.ts | 21 ++++++++---------- .../techdocs-node/src/stages/prepare/dir.ts | 15 ++++++++----- .../src/stages/prepare/preparers.ts | 7 +++--- .../techdocs-node/src/stages/prepare/url.ts | 11 +++++----- 5 files changed, 35 insertions(+), 41 deletions(-) diff --git a/plugins/techdocs-node/api-report.md b/plugins/techdocs-node/api-report.md index 4c88ab0fc0..a5446c77cd 100644 --- a/plugins/techdocs-node/api-report.md +++ b/plugins/techdocs-node/api-report.md @@ -11,7 +11,7 @@ import { ContainerRunner } from '@backstage/backend-common'; import { Entity } from '@backstage/catalog-model'; import express from 'express'; import { IndexableDocument } from '@backstage/plugin-search-common'; -import { Logger } from 'winston'; +import { Logger as Logger_2 } from 'winston'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { UrlReader } from '@backstage/backend-common'; @@ -19,8 +19,6 @@ import { Writable } from 'stream'; // @public export class DirectoryPreparer implements PreparerBase { - // @deprecated - constructor(config: Config, _logger: Logger | null, reader: UrlReader); static fromConfig( config: Config, { logger, reader }: PreparerConfig, @@ -45,7 +43,7 @@ export type GeneratorBuilder = { // @public export type GeneratorOptions = { containerRunner: ContainerRunner; - logger: Logger; + logger: Logger_2; }; // @public @@ -54,7 +52,7 @@ export type GeneratorRunOptions = { outputDir: string; parsedLocationAnnotation?: ParsedLocationAnnotation; etag?: string; - logger: Logger; + logger: Logger_2; logStream?: Writable; }; @@ -63,7 +61,7 @@ export class Generators implements GeneratorBuilder { static fromConfig( config: Config, options: { - logger: Logger; + logger: Logger_2; containerRunner: ContainerRunner; }, ): Promise; @@ -78,7 +76,7 @@ export const getDocFilesFromRepository: ( opts?: | { etag?: string | undefined; - logger?: Logger | undefined; + logger?: Logger_2 | undefined; } | undefined, ) => Promise; @@ -120,13 +118,13 @@ export type PreparerBuilder = { // @public export type PreparerConfig = { - logger: Logger; + logger: Logger_2; reader: UrlReader; }; // @public export type PreparerOptions = { - logger?: Logger; + logger?: Logger_2; etag?: ETag; }; @@ -168,7 +166,7 @@ export interface PublisherBase { // @public export type PublisherFactory = { - logger: Logger; + logger: Logger_2; discovery: PluginEndpointDiscovery; }; @@ -216,7 +214,7 @@ export interface TechDocsDocument extends IndexableDocument { // @public export class TechdocsGenerator implements GeneratorBase { constructor(options: { - logger: Logger; + logger: Logger_2; containerRunner: ContainerRunner; config: Config; scmIntegrations: ScmIntegrationRegistry; @@ -250,8 +248,6 @@ export const transformDirLocation: ( // @public export class UrlPreparer implements PreparerBase { - // @deprecated - constructor(reader: UrlReader, logger: Logger); static fromConfig({ reader, logger }: PreparerConfig): UrlPreparer; prepare(entity: Entity, options?: PreparerOptions): Promise; } diff --git a/plugins/techdocs-node/src/stages/prepare/dir.test.ts b/plugins/techdocs-node/src/stages/prepare/dir.test.ts index 2bf3fe29fc..829c414ddb 100644 --- a/plugins/techdocs-node/src/stages/prepare/dir.test.ts +++ b/plugins/techdocs-node/src/stages/prepare/dir.test.ts @@ -52,11 +52,10 @@ const mockUrlReader: jest.Mocked = { describe('directory preparer', () => { it('should merge managed-by-location and techdocs-ref when techdocs-ref is relative', async () => { - const directoryPreparer = new DirectoryPreparer( - mockConfig, + const directoryPreparer = DirectoryPreparer.fromConfig(mockConfig, { logger, - mockUrlReader, - ); + reader: mockUrlReader, + }); const mockEntity = createMockEntity({ 'backstage.io/managed-by-location': @@ -69,11 +68,10 @@ describe('directory preparer', () => { }); it('should reject when techdocs-ref is absolute', async () => { - const directoryPreparer = new DirectoryPreparer( - mockConfig, + const directoryPreparer = DirectoryPreparer.fromConfig(mockConfig, { logger, - mockUrlReader, - ); + reader: mockUrlReader, + }); const mockEntity = createMockEntity({ 'backstage.io/managed-by-location': @@ -87,11 +85,10 @@ describe('directory preparer', () => { }); it('should reject when managed-by-location has an unknown type', async () => { - const directoryPreparer = new DirectoryPreparer( - mockConfig, + const directoryPreparer = DirectoryPreparer.fromConfig(mockConfig, { logger, - mockUrlReader, - ); + reader: mockUrlReader, + }); const mockEntity = createMockEntity({ 'backstage.io/managed-by-location': diff --git a/plugins/techdocs-node/src/stages/prepare/dir.ts b/plugins/techdocs-node/src/stages/prepare/dir.ts index 42bfa5b903..c0298c0dab 100644 --- a/plugins/techdocs-node/src/stages/prepare/dir.ts +++ b/plugins/techdocs-node/src/stages/prepare/dir.ts @@ -39,12 +39,6 @@ export class DirectoryPreparer implements PreparerBase { private readonly scmIntegrations: ScmIntegrationRegistry; private readonly reader: UrlReader; - /** @deprecated use static fromConfig method instead */ - constructor(config: Config, _logger: Logger | null, reader: UrlReader) { - this.reader = reader; - this.scmIntegrations = ScmIntegrations.fromConfig(config); - } - /** * Returns a directory preparer instance * @param config - A backstage config @@ -57,6 +51,15 @@ export class DirectoryPreparer implements PreparerBase { return new DirectoryPreparer(config, logger, reader); } + private constructor( + config: Config, + _logger: Logger | null, + reader: UrlReader, + ) { + this.reader = reader; + this.scmIntegrations = ScmIntegrations.fromConfig(config); + } + /** {@inheritDoc PreparerBase.prepare} */ async prepare( entity: Entity, diff --git a/plugins/techdocs-node/src/stages/prepare/preparers.ts b/plugins/techdocs-node/src/stages/prepare/preparers.ts index 575294e91a..a8c175125a 100644 --- a/plugins/techdocs-node/src/stages/prepare/preparers.ts +++ b/plugins/techdocs-node/src/stages/prepare/preparers.ts @@ -44,18 +44,17 @@ export class Preparers implements PreparerBuilder { ): Promise { const preparers = new Preparers(); - const urlPreparer = new UrlPreparer(reader, logger); + const urlPreparer = UrlPreparer.fromConfig({ reader, logger }); preparers.register('url', urlPreparer); /** * Dir preparer is a syntactic sugar for users to define techdocs-ref annotation. * When using dir preparer, the docs will be fetched using URL Reader. */ - const directoryPreparer = new DirectoryPreparer( - backstageConfig, + const directoryPreparer = DirectoryPreparer.fromConfig(backstageConfig, { logger, reader, - ); + }); preparers.register('dir', directoryPreparer); return preparers; diff --git a/plugins/techdocs-node/src/stages/prepare/url.ts b/plugins/techdocs-node/src/stages/prepare/url.ts index 8026dca41e..0d2907d7d1 100644 --- a/plugins/techdocs-node/src/stages/prepare/url.ts +++ b/plugins/techdocs-node/src/stages/prepare/url.ts @@ -34,12 +34,6 @@ export class UrlPreparer implements PreparerBase { private readonly logger: Logger; private readonly reader: UrlReader; - /** @deprecated use static fromConfig method instead */ - constructor(reader: UrlReader, logger: Logger) { - this.logger = logger; - this.reader = reader; - } - /** * Returns a directory preparer instance * @param config - A URL preparer config containing the a logger and reader @@ -48,6 +42,11 @@ export class UrlPreparer implements PreparerBase { return new UrlPreparer(reader, logger); } + private constructor(reader: UrlReader, logger: Logger) { + this.logger = logger; + this.reader = reader; + } + /** {@inheritDoc PreparerBase.prepare} */ async prepare( entity: Entity, From b83063afe030b45a8bf363162a8bf0ffd61acf10 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 14 Mar 2022 14:11:48 +0100 Subject: [PATCH 016/410] clean up deprecations of techdocs-backend plugin Signed-off-by: Emma Indal --- plugins/techdocs-backend/config.d.ts | 24 -------------- .../techdocs-backend/src/service/router.ts | 33 +------------------ 2 files changed, 1 insertion(+), 56 deletions(-) diff --git a/plugins/techdocs-backend/config.d.ts b/plugins/techdocs-backend/config.d.ts index 8d531e0536..d4782ff406 100644 --- a/plugins/techdocs-backend/config.d.ts +++ b/plugins/techdocs-backend/config.d.ts @@ -46,17 +46,6 @@ export interface Config { pullImage?: boolean; }; - /** - * Techdocs generator information - * @deprecated Replaced with techdocs.generator - */ - generators?: { - /** - * @deprecated Use techdocs.generator.runIn - */ - techdocs: 'local' | 'docker'; - }; - /** * Techdocs publisher information */ @@ -252,19 +241,6 @@ export interface Config { readTimeout?: number; }; - /** - * @example http://localhost:7007/api/techdocs - * @visibility frontend - * @deprecated - */ - requestUrl?: string; - - /** - * @example http://localhost:7007/api/techdocs/static/docs - * @deprecated - */ - storageUrl?: string; - /** * (Optional and not recommended) Prior to version [0.x.y] of TechDocs, docs * sites could only be accessed over paths with case-sensitive entity triplets diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index e404c1b6d2..a56657cb9b 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -208,15 +208,7 @@ export async function createRouter( throw new NotFoundError('Entity metadata UID missing'); } - let responseHandler: DocsSynchronizerSyncOpts; - if (req.header('accept') !== 'text/event-stream') { - console.warn( - "The call to /sync/:namespace/:kind/:name wasn't done by an EventSource. This behavior is deprecated and will be removed soon. Make sure to update the @backstage/plugin-techdocs package in the frontend to the latest version.", - ); - responseHandler = createHttpResponse(res); - } else { - responseHandler = createEventStream(res); - } + const responseHandler: DocsSynchronizerSyncOpts = createEventStream(res); // By default, techdocs-backend will only try to build documentation for an entity if techdocs.builder is set to // 'local'. If set to 'external', it will assume that an external process (e.g. CI/CD pipeline @@ -345,26 +337,3 @@ export function createEventStream( }, }; } - -/** - * @deprecated use event-stream implementation of the sync endpoint - */ -export function createHttpResponse( - res: Response, -): DocsSynchronizerSyncOpts { - return { - log: () => {}, - error: e => { - throw e; - }, - finish: ({ updated }) => { - if (!updated) { - throw new NotModifiedError(); - } - - res - .status(201) - .json({ message: 'Docs updated or did not need updating' }); - }, - }; -} From b44692890b1c6ca1df55313612a1d28e3c61ea8a Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 14 Mar 2022 15:27:51 +0100 Subject: [PATCH 017/410] tests fixups Signed-off-by: Emma Indal --- .../techdocs-cli-embedded-app/app-config.yaml | 1 - .../techdocs-cli-embedded-app/src/apis.ts | 15 +- .../components/TechDocsPage/TechDocsPage.tsx | 12 +- .../techdocs-cli-embedded-app/src/config.ts | 2 - .../src/service/router.test.ts | 167 +----------------- .../src/service/standaloneServer.ts | 7 +- .../src/stages/publish/awsS3.test.ts | 1 - .../stages/publish/azureBlobStorage.test.ts | 1 - .../src/stages/publish/googleStorage.test.ts | 1 - .../src/stages/publish/openStackSwift.test.ts | 2 - .../src/stages/publish/publish.test.ts | 12 +- plugins/techdocs/src/client.test.ts | 4 +- .../reader/components/TechDocsReaderPage.tsx | 31 +++- 13 files changed, 44 insertions(+), 212 deletions(-) diff --git a/packages/techdocs-cli-embedded-app/app-config.yaml b/packages/techdocs-cli-embedded-app/app-config.yaml index 56e63ff97c..6ede05b587 100644 --- a/packages/techdocs-cli-embedded-app/app-config.yaml +++ b/packages/techdocs-cli-embedded-app/app-config.yaml @@ -7,4 +7,3 @@ backend: techdocs: builder: 'external' - requestUrl: http://localhost:3000/api diff --git a/packages/techdocs-cli-embedded-app/src/apis.ts b/packages/techdocs-cli-embedded-app/src/apis.ts index 1fe6ba8086..d230a9f83c 100644 --- a/packages/techdocs-cli-embedded-app/src/apis.ts +++ b/packages/techdocs-cli-embedded-app/src/apis.ts @@ -64,17 +64,11 @@ class TechDocsDevStorageApi implements TechDocsStorageApi { } async getApiOrigin() { - return ( - this.configApi.getOptionalString('techdocs.requestUrl') ?? - (await this.discoveryApi.getBaseUrl('techdocs')) - ); + return await this.discoveryApi.getBaseUrl('techdocs'); } async getStorageUrl() { - return ( - this.configApi.getOptionalString('techdocs.storageUrl') ?? - `${await this.discoveryApi.getBaseUrl('techdocs')}/static/docs` - ); + return `${await this.discoveryApi.getBaseUrl('techdocs')}/static/docs`; } async getBuilder() { @@ -134,10 +128,7 @@ class TechDocsDevApi implements TechDocsApi { } async getApiOrigin() { - return ( - this.configApi.getOptionalString('techdocs.requestUrl') ?? - (await this.discoveryApi.getBaseUrl('techdocs')) - ); + return await this.discoveryApi.getBaseUrl('techdocs'); } async getEntityMetadata(_entityId: any) { diff --git a/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx b/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx index f2dcefc00e..56686dd081 100644 --- a/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx +++ b/packages/techdocs-cli-embedded-app/src/components/TechDocsPage/TechDocsPage.tsx @@ -35,8 +35,8 @@ import { Content } from '@backstage/core-components'; import { Reader, - TechDocsPage, - TechDocsPageHeader, + TechDocsReaderPage, + TechDocsReaderPageHeader, } from '@backstage/plugin-techdocs'; const useStyles = makeStyles((theme: Theme) => ({ @@ -146,19 +146,19 @@ const DefaultTechDocsPage = () => { }; return ( - + {({ entityRef, onReady }) => ( <> - - + )} - + ); }; diff --git a/packages/techdocs-cli-embedded-app/src/config.ts b/packages/techdocs-cli-embedded-app/src/config.ts index 482ceb41ec..ae801dac2a 100644 --- a/packages/techdocs-cli-embedded-app/src/config.ts +++ b/packages/techdocs-cli-embedded-app/src/config.ts @@ -22,7 +22,6 @@ const PRODUCTION_CONFIG = { }, techdocs: { builder: 'external', - requestUrl: 'http://localhost:3000/api', }, }; @@ -32,7 +31,6 @@ const DEVELOPMENT_CONFIG = { }, techdocs: { builder: 'external', - requestUrl: 'http://localhost:7007/api', }, }; diff --git a/plugins/techdocs-backend/src/service/router.test.ts b/plugins/techdocs-backend/src/service/router.test.ts index 2e707c9513..f3f9892f44 100644 --- a/plugins/techdocs-backend/src/service/router.test.ts +++ b/plugins/techdocs-backend/src/service/router.test.ts @@ -21,7 +21,6 @@ import { PluginEndpointDiscovery, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; -import { NotModifiedError } from '@backstage/errors'; import { GeneratorBuilder, PreparerBuilder, @@ -31,12 +30,7 @@ import express, { Response } from 'express'; import request from 'supertest'; import { DocsSynchronizer, DocsSynchronizerSyncOpts } from './DocsSynchronizer'; import { CachedEntityLoader } from './CachedEntityLoader'; -import { - createEventStream, - createHttpResponse, - createRouter, - RouterOptions, -} from './router'; +import { createEventStream, createRouter, RouterOptions } from './router'; import { TechDocsCache } from '../cache'; import { DocsBuildStrategy } from './DocsBuildStrategy'; @@ -160,120 +154,6 @@ describe('createRouter', () => { }); describe('GET /sync/:namespace/:kind/:name', () => { - describe('accept application/json', () => { - it('should return not found if entity is not found', async () => { - const app = await createApp(outOfTheBoxOptions); - - MockCachedEntityLoader.prototype.load.mockResolvedValue(undefined); - - const response = await request(app) - .get('/sync/default/Component/test') - .send(); - - expect(response.status).toBe(404); - }); - - it('should return not found if entity has no uid', async () => { - const app = await createApp(outOfTheBoxOptions); - - MockCachedEntityLoader.prototype.load.mockResolvedValue( - entityWithoutMetadata, - ); - - const response = await request(app) - .get('/sync/default/Component/test') - .send(); - - expect(response.status).toBe(404); - }); - - it('should not check for an update when shouldBuild returns false', async () => { - const app = await createApp(outOfTheBoxOptions); - - docsBuildStrategy.shouldBuild.mockResolvedValue(false); - MockCachedEntityLoader.prototype.load.mockResolvedValue(entity); - MockDocsSynchronizer.prototype.doCacheSync.mockImplementation( - async ({ responseHandler }) => - responseHandler.finish({ updated: false }), - ); - - const response = await request(app) - .get('/sync/default/Component/test') - .send(); - - expect(response.status).toBe(304); - }); - - it('should error if build is required and is missing preparer', async () => { - const app = await createApp(recommendedOptions); - - docsBuildStrategy.shouldBuild.mockResolvedValue(true); - MockCachedEntityLoader.prototype.load.mockResolvedValue(entity); - - const response = await request(app) - .get('/sync/default/Component/test') - .send(); - - expect(response.status).toBe(500); - expect(response.text).toMatch( - /Invalid configuration\. docsBuildStrategy\.shouldBuild returned 'true', but no 'preparer' was provided to the router initialization./, - ); - - expect(MockDocsSynchronizer.prototype.doSync).toBeCalledTimes(0); - }); - - it('should execute synchronization', async () => { - const app = await createApp(outOfTheBoxOptions); - - docsBuildStrategy.shouldBuild.mockResolvedValue(true); - MockCachedEntityLoader.prototype.load.mockResolvedValue(entity); - MockDocsSynchronizer.prototype.doSync.mockImplementation( - async ({ responseHandler }) => - responseHandler.finish({ updated: true }), - ); - - await request(app).get('/sync/default/Component/test').send(); - - expect(MockDocsSynchronizer.prototype.doSync).toBeCalledTimes(1); - expect(MockDocsSynchronizer.prototype.doSync).toBeCalledWith({ - responseHandler: { - log: expect.any(Function), - error: expect.any(Function), - finish: expect.any(Function), - }, - entity, - generators, - preparers, - }); - }); - - it('should return on updated', async () => { - const app = await createApp(outOfTheBoxOptions); - - docsBuildStrategy.shouldBuild.mockResolvedValue(true); - MockCachedEntityLoader.prototype.load.mockResolvedValue(entity); - MockDocsSynchronizer.prototype.doSync.mockImplementation( - async ({ responseHandler }) => { - const { log, finish } = responseHandler; - - log('Some log'); - - finish({ updated: true }); - }, - ); - - const response = await request(app) - .get('/sync/default/Component/test') - .send(); - - expect(response.status).toBe(201); - expect(response.get('content-type')).toMatch(/application\/json/); - expect(response.text).toEqual( - '{"message":"Docs updated or did not need updating"}', - ); - }); - }); - describe('accept text/event-stream', () => { it('should return not found if entity is not found', async () => { const app = await createApp(outOfTheBoxOptions); @@ -559,48 +439,3 @@ data: {"updated":true} expect(res.end).toBeCalledTimes(1); }); }); - -describe('createHttpResponse', () => { - const res: jest.Mocked = { - status: jest.fn(), - json: jest.fn(), - } as any; - - let handlers: DocsSynchronizerSyncOpts; - - beforeEach(() => { - res.status.mockImplementation(() => res); - handlers = createHttpResponse(res); - }); - afterEach(() => { - jest.resetAllMocks(); - }); - - it('should return CREATED if updated', async () => { - handlers.finish({ updated: true }); - - expect(res.status).toBeCalledTimes(1); - expect(res.status).toBeCalledWith(201); - - expect(res.json).toBeCalledTimes(1); - expect(res.json).toBeCalledWith({ - message: 'Docs updated or did not need updating', - }); - }); - - it('should return NOT_MODIFIED if not updated', async () => { - expect(() => handlers.finish({ updated: false })).toThrowError( - NotModifiedError, - ); - }); - - it('should throw custom error', async () => { - expect(() => handlers.error(new Error('Some Error'))).toThrowError( - /Some Error/, - ); - }); - - it('should ignore logs', async () => { - expect(() => handlers.log('Some Message')).not.toThrow(); - }); -}); diff --git a/plugins/techdocs-backend/src/service/standaloneServer.ts b/plugins/techdocs-backend/src/service/standaloneServer.ts index 4ab4c084e0..f0ee42ba4a 100644 --- a/plugins/techdocs-backend/src/service/standaloneServer.ts +++ b/plugins/techdocs-backend/src/service/standaloneServer.ts @@ -60,11 +60,10 @@ export async function startStandaloneServer( logger.debug('Creating application...'); const preparers = new Preparers(); - const directoryPreparer = new DirectoryPreparer( - config, + const directoryPreparer = DirectoryPreparer.fromConfig(config, { logger, - mockUrlReader, - ); + reader: mockUrlReader, + }); preparers.register('dir', directoryPreparer); const dockerClient = new Docker(); diff --git a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts index 326e587a83..537fc52b27 100644 --- a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts +++ b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts @@ -54,7 +54,6 @@ const createPublisherFromConfig = ({ } = {}) => { const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'awsS3', awsS3: { diff --git a/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts b/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts index 3e5e420e4b..7af5338d88 100644 --- a/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts +++ b/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts @@ -51,7 +51,6 @@ const createPublisherFromConfig = ({ } = {}) => { const config = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'azureBlobStorage', azureBlobStorage: { diff --git a/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts b/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts index 6dac092cec..6471d89a06 100644 --- a/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts +++ b/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts @@ -52,7 +52,6 @@ const createPublisherFromConfig = ({ } = {}) => { const config = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'googleGcs', googleGcs: { diff --git a/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts b/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts index aeb4e120f5..619431fdd7 100644 --- a/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts +++ b/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts @@ -84,7 +84,6 @@ beforeEach(() => { mockFs.restore(); const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'openStackSwift', openStackSwift: { @@ -114,7 +113,6 @@ describe('OpenStackSwiftPublish', () => { it('should reject incorrect config', async () => { const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'openStackSwift', openStackSwift: { diff --git a/plugins/techdocs-node/src/stages/publish/publish.test.ts b/plugins/techdocs-node/src/stages/publish/publish.test.ts index a47da828a7..4537313edf 100644 --- a/plugins/techdocs-node/src/stages/publish/publish.test.ts +++ b/plugins/techdocs-node/src/stages/publish/publish.test.ts @@ -37,11 +37,7 @@ describe('Publisher', () => { }); it('should create local publisher by default', async () => { - const mockConfig = new ConfigReader({ - techdocs: { - requestUrl: 'http://localhost:7007', - }, - }); + const mockConfig = new ConfigReader({}); const publisher = await Publisher.fromConfig(mockConfig, { logger, @@ -53,7 +49,6 @@ describe('Publisher', () => { it('should create local publisher from config', async () => { const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'local', }, @@ -70,7 +65,6 @@ describe('Publisher', () => { it('should create google gcs publisher from config', async () => { const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'googleGcs', googleGcs: { @@ -91,7 +85,6 @@ describe('Publisher', () => { it('should create AWS S3 publisher from config', async () => { const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'awsS3', awsS3: { @@ -115,7 +108,6 @@ describe('Publisher', () => { it('should create Azure Blob Storage publisher from config', async () => { const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'azureBlobStorage', azureBlobStorage: { @@ -143,7 +135,6 @@ describe('Publisher', () => { const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'azureBlobStorage', azureBlobStorage: { @@ -166,7 +157,6 @@ describe('Publisher', () => { it('should create Open Stack Swift publisher from config', async () => { const mockConfig = new ConfigReader({ techdocs: { - requestUrl: 'http://localhost:7007', publisher: { type: 'openStackSwift', openStackSwift: { diff --git a/plugins/techdocs/src/client.test.ts b/plugins/techdocs/src/client.test.ts index a88c724cc8..71ad57d12a 100644 --- a/plugins/techdocs/src/client.test.ts +++ b/plugins/techdocs/src/client.test.ts @@ -35,9 +35,7 @@ const mockEntity = { describe('TechDocsStorageClient', () => { const mockBaseUrl = 'http://backstage:9191/api/techdocs'; - const configApi = new MockConfigApi({ - techdocs: { requestUrl: 'http://backstage:9191/api/techdocs' }, - }); + const configApi = new MockConfigApi({}); const discoveryApi = UrlPatternDiscovery.compile(mockBaseUrl); const identityApi: jest.Mocked = { getCredentials: jest.fn(), diff --git a/plugins/techdocs/src/reader/components/TechDocsReaderPage.tsx b/plugins/techdocs/src/reader/components/TechDocsReaderPage.tsx index ff44d429df..1bfd0e6f51 100644 --- a/plugins/techdocs/src/reader/components/TechDocsReaderPage.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsReaderPage.tsx @@ -18,11 +18,13 @@ import React, { useCallback, useState } from 'react'; import { useOutlet } from 'react-router'; import { useParams } from 'react-router-dom'; import useAsync from 'react-use/lib/useAsync'; +import { Reader } from './Reader'; +import { TechDocsReaderPageHeader } from './TechDocsReaderPageHeader'; import { techdocsApiRef } from '../../api'; import { TechDocsEntityMetadata, TechDocsMetadata } from '../../types'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { useApi, useApp } from '@backstage/core-plugin-api'; -import { Page } from '@backstage/core-components'; +import { Page, Content } from '@backstage/core-components'; /** * Helper function that gives the children of {@link TechDocsReaderPage} access to techdocs and entity metadata @@ -78,7 +80,32 @@ export const TechDocsReaderPage = (props: TechDocsReaderPageProps) => { if (entityMetadataError) return ; - if (!children) return outlet; + if (!children) + return ( + outlet || ( + + + + + + + ) + ); return ( From 1bc516bdfbb9a00975f363411a29cdff28bcf2ab Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 14 Mar 2022 15:35:57 +0100 Subject: [PATCH 018/410] remove unused import Signed-off-by: Emma Indal --- plugins/techdocs-backend/src/service/router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index a56657cb9b..148143e460 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -20,7 +20,7 @@ import { import { CatalogClient } from '@backstage/catalog-client'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; -import { NotFoundError, NotModifiedError } from '@backstage/errors'; +import { NotFoundError } from '@backstage/errors'; import { GeneratorBuilder, getLocationForEntity, From da7d91fcdc5bfb440eadf51ee1f8f77bf5921e2c Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 14 Mar 2022 21:54:55 +0100 Subject: [PATCH 019/410] api report fixup Signed-off-by: Emma Indal --- plugins/techdocs-backend/api-report.md | 10 +++++----- plugins/techdocs/api-report.md | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index 157f049953..f306ce4f35 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -12,7 +12,7 @@ import { Entity } from '@backstage/catalog-model'; import express from 'express'; import { GeneratorBuilder } from '@backstage/plugin-techdocs-node'; import { Knex } from 'knex'; -import { Logger } from 'winston'; +import { Logger as Logger_2 } from 'winston'; import { Permission } from '@backstage/plugin-permission-common'; import { PluginCacheManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; @@ -71,7 +71,7 @@ export type OutOfTheBoxDeploymentOptions = { preparers: PreparerBuilder; generators: GeneratorBuilder; publisher: PublisherBase; - logger: Logger; + logger: Logger_2; discovery: PluginEndpointDiscovery; database?: Knex; config: Config; @@ -82,7 +82,7 @@ export type OutOfTheBoxDeploymentOptions = { // @public export type RecommendedDeploymentOptions = { publisher: PublisherBase; - logger: Logger; + logger: Logger_2; discovery: PluginEndpointDiscovery; config: Config; cache: PluginCacheManager; @@ -102,7 +102,7 @@ export type ShouldBuildParameters = { // @public export type TechDocsCollatorFactoryOptions = { discovery: PluginEndpointDiscovery; - logger: Logger; + logger: Logger_2; tokenManager: TokenManager; locationTemplate?: string; catalogClient?: CatalogApi; @@ -113,7 +113,7 @@ export type TechDocsCollatorFactoryOptions = { // @public export type TechDocsCollatorOptions = { discovery: PluginEndpointDiscovery; - logger: Logger; + logger: Logger_2; tokenManager: TokenManager; locationTemplate?: string; catalogClient?: CatalogApi; diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index e6f9d463ed..ecab23e225 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -274,7 +274,7 @@ export { techdocsPlugin }; // @public export const TechDocsReaderPage: ( props: TechDocsReaderPageProps, -) => JSX.Element | null; +) => JSX.Element; // @public export const TechDocsReaderPageHeader: ( From 482a8f7dc8a6c7c937773d836a306d73d5f7175f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Mar 2022 04:08:37 +0000 Subject: [PATCH 020/410] build(deps): bump apollo-server from 3.6.3 to 3.6.4 Bumps [apollo-server](https://github.com/apollographql/apollo-server/tree/HEAD/packages/apollo-server) from 3.6.3 to 3.6.4. - [Release notes](https://github.com/apollographql/apollo-server/releases) - [Changelog](https://github.com/apollographql/apollo-server/blob/main/CHANGELOG.md) - [Commits](https://github.com/apollographql/apollo-server/commits/apollo-server@3.6.4/packages/apollo-server) --- updated-dependencies: - dependency-name: apollo-server dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index dd80570e70..0dfa9600ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7226,10 +7226,10 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" -apollo-server-core@^3.6.3: - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.3.tgz#6b12ffa1af8bc8799930f72360090834915033d1" - integrity sha512-TFJmAlI6vPp1MHOSXqYkE6leAyMekWv/D/3ma11uETkcd3EPjERGmxtTXPJElMVEkOK9BEElYKthCrH7bjYLuw== +apollo-server-core@^3.6.4: + version "3.6.4" + resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.4.tgz#dcf3925173a8e9a501ed3975654cb2ed58af3710" + integrity sha512-zttpu/3IeDGhRgIGK84z9HwTgvETDl9zntXiQ0G1tBJgOhDvehSkMiOmy+FKR1HW9+94ao1Olz6ZIyhP0dvzSg== dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" @@ -7264,10 +7264,10 @@ apollo-server-errors@^3.3.1: resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== -apollo-server-express@^3.0.0, apollo-server-express@^3.6.3: - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.3.tgz#5daf58bf0bdf0107ded7cd52c7e6ce6cd32c8b44" - integrity sha512-3CjahZ+n+1T7pHH1qW1B6Ns0BzwOMeupAp2u0+M8ruOmE/e7VKn0OSOQQckZ8Z2AcWxWeno9K89fIv3PoSYgYA== +apollo-server-express@^3.0.0, apollo-server-express@^3.6.4: + version "3.6.4" + resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.4.tgz#759b64047a41068deb3af068ce02381404e3d6d0" + integrity sha512-lN73Ka7UZJINJzvMeRFIFn7898hGjTxVtRQwAzzmw5XSpWZZHZkTcAkoDxUs0GwU6h2LE14ogu2WJ4G8AZVl1Q== dependencies: "@types/accepts" "^1.3.5" "@types/body-parser" "1.19.2" @@ -7275,7 +7275,7 @@ apollo-server-express@^3.0.0, apollo-server-express@^3.6.3: "@types/express" "4.17.13" "@types/express-serve-static-core" "4.17.28" accepts "^1.3.5" - apollo-server-core "^3.6.3" + apollo-server-core "^3.6.4" apollo-server-types "^3.5.1" body-parser "^1.19.0" cors "^2.8.5" @@ -7298,12 +7298,12 @@ apollo-server-types@^3.5.1: apollo-server-env "^4.2.1" apollo-server@^3.0.0: - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.3.tgz#0ba0ddb2835ccf27056d20b6f5b83b0ce9545a79" - integrity sha512-kNvOiDNkIaO+MsfR9v40Vz4ArlDdc9VwVKGJy5dniLW9AoDa/tSF99m8ItfGoMypqlRPMgrNGxkMuToBnvYXNQ== + version "3.6.4" + resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.4.tgz#e1bc966eb7d03944274056af4b17b380f0ac8696" + integrity sha512-PIEDWtfiiiKt0uEMJ7/qiyULPat/ichDN/h9GrrroOFiz/tfU/yJXuHpoq8R/uzVyn4GpEc4OoibC2zOr59zig== dependencies: - apollo-server-core "^3.6.3" - apollo-server-express "^3.6.3" + apollo-server-core "^3.6.4" + apollo-server-express "^3.6.4" express "^4.17.1" aproba@^1.0.3: From 700d93ff41e1ba2fe25bf49ac9ffba97f2acc7a1 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 14 Mar 2022 23:15:48 +0100 Subject: [PATCH 021/410] add changesets Signed-off-by: Emma Indal --- .changeset/techdocs-breezy-pans-flow.md | 8 ++++++++ .changeset/techdocs-clever-pumas-warn.md | 11 +++++++++++ .changeset/techdocs-tiny-spies-knock.md | 13 +++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 .changeset/techdocs-breezy-pans-flow.md create mode 100644 .changeset/techdocs-clever-pumas-warn.md create mode 100644 .changeset/techdocs-tiny-spies-knock.md diff --git a/.changeset/techdocs-breezy-pans-flow.md b/.changeset/techdocs-breezy-pans-flow.md new file mode 100644 index 0000000000..a3c0776bf2 --- /dev/null +++ b/.changeset/techdocs-breezy-pans-flow.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-techdocs-node': patch +--- + +Deprecations cleaned up. + +- `DirectoryPreparer` now uses private constructor. Use static fromConfig method to instantiate. +- `UrlPreparer` now uses private constructor. Use static fromConfig method to instantiate. diff --git a/.changeset/techdocs-clever-pumas-warn.md b/.changeset/techdocs-clever-pumas-warn.md new file mode 100644 index 0000000000..3804df599a --- /dev/null +++ b/.changeset/techdocs-clever-pumas-warn.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-techdocs-backend': patch +--- + +Deprecations cleaned up. + +- deprecated config `generators` is now deleted and fully replaced with `techdocs.generator` +- deprecated config `generators.techdocs` is now deleted and fully replaced with `techdocs.generator.runIn` +- deprecated config `techdocs.requestUrl` is now deleted +- deprecated config `techdocs.storageUrl` is now deleted +- deprecated `createHttpResponse` is now deleted and calls to `/sync/:namespace/:kind/:name` needs to be done by an EventSource. diff --git a/.changeset/techdocs-tiny-spies-knock.md b/.changeset/techdocs-tiny-spies-knock.md new file mode 100644 index 0000000000..39acf6df10 --- /dev/null +++ b/.changeset/techdocs-tiny-spies-knock.md @@ -0,0 +1,13 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Deprecations cleaned up. + +- deprecated `DocsResultListItem` is now deleted and fully replaced with `TechDocsSearchResultListItem` +- deprecated `TechDocsPage` is now deleted and fully replaced with `TechDocsReaderPage` +- deprecated `TechDocsPageHeader` is now deleted and fully replaced with `TechDocsReaderPageHeader` + +- deprecated `TechDocsPageHeaderProps` is now deleted and fully replaced with `TechDocsReaderPageHeaderProps` +- deprecated `TechDocsPageRenderFunction` is now deleted and fully replaced with `TechDocsReaderPageRenderFunction` +- deprecated config `techdocs.requestUrl` is now deleted and fully replaced with the discoveryApi From 0fc52fed39bf6f5e7b84e6f2debf51537067fe8d Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 15 Mar 2022 09:34:26 +0100 Subject: [PATCH 022/410] Run prettier Signed-off-by: blam --- microsite/sidebars.json | 4 +--- microsite/siteConfig.js | 26 +++++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/microsite/sidebars.json b/microsite/sidebars.json index 03cb2a965f..8f8d180002 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -1,8 +1,6 @@ { "releases": { - "Release Notes": [ - "releases/v1.0.0" - ] + "Release Notes": ["releases/v1.0.0"] }, "docs": { "Overview": [ diff --git a/microsite/siteConfig.js b/microsite/siteConfig.js index 2e440ff955..6e291aa994 100644 --- a/microsite/siteConfig.js +++ b/microsite/siteConfig.js @@ -9,17 +9,21 @@ // site configuration options. // This figures out what the most recent release version is, so that we can link to it in the header -const [{name: latestRelease}] = require('fs').readdirSync(require('path').resolve(__dirname, '../docs/releases')).map(file => { - const match = file.match(/^v(\d+)\.(\d+)\.(\d+)\.md$/) - if (!match) { - return undefined - } - const parts = match.slice(1).map(v => parseInt(v, 10)) - return { - name: file.slice(0, file.length - '.md'.length), - weight: parts[0]*1000000 + parts[1]*1000 + parts[2], - } -}).filter(Boolean).sort((a, b) => b.weight - a.weight); +const [{ name: latestRelease }] = require('fs') + .readdirSync(require('path').resolve(__dirname, '../docs/releases')) + .map(file => { + const match = file.match(/^v(\d+)\.(\d+)\.(\d+)\.md$/); + if (!match) { + return undefined; + } + const parts = match.slice(1).map(v => parseInt(v, 10)); + return { + name: file.slice(0, file.length - '.md'.length), + weight: parts[0] * 1000000 + parts[1] * 1000 + parts[2], + }; + }) + .filter(Boolean) + .sort((a, b) => b.weight - a.weight); const siteConfig = { title: 'Backstage Software Catalog and Developer Platform', // Title for your website. From 9234be033cbcd8d132045b3a72acef5f537eacb0 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Mar 2022 09:35:57 +0100 Subject: [PATCH 023/410] api reports logger fixup Signed-off-by: Emma Indal --- plugins/techdocs-backend/api-report.md | 10 +++++----- plugins/techdocs-node/api-report.md | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index f306ce4f35..157f049953 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -12,7 +12,7 @@ import { Entity } from '@backstage/catalog-model'; import express from 'express'; import { GeneratorBuilder } from '@backstage/plugin-techdocs-node'; import { Knex } from 'knex'; -import { Logger as Logger_2 } from 'winston'; +import { Logger } from 'winston'; import { Permission } from '@backstage/plugin-permission-common'; import { PluginCacheManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; @@ -71,7 +71,7 @@ export type OutOfTheBoxDeploymentOptions = { preparers: PreparerBuilder; generators: GeneratorBuilder; publisher: PublisherBase; - logger: Logger_2; + logger: Logger; discovery: PluginEndpointDiscovery; database?: Knex; config: Config; @@ -82,7 +82,7 @@ export type OutOfTheBoxDeploymentOptions = { // @public export type RecommendedDeploymentOptions = { publisher: PublisherBase; - logger: Logger_2; + logger: Logger; discovery: PluginEndpointDiscovery; config: Config; cache: PluginCacheManager; @@ -102,7 +102,7 @@ export type ShouldBuildParameters = { // @public export type TechDocsCollatorFactoryOptions = { discovery: PluginEndpointDiscovery; - logger: Logger_2; + logger: Logger; tokenManager: TokenManager; locationTemplate?: string; catalogClient?: CatalogApi; @@ -113,7 +113,7 @@ export type TechDocsCollatorFactoryOptions = { // @public export type TechDocsCollatorOptions = { discovery: PluginEndpointDiscovery; - logger: Logger_2; + logger: Logger; tokenManager: TokenManager; locationTemplate?: string; catalogClient?: CatalogApi; diff --git a/plugins/techdocs-node/api-report.md b/plugins/techdocs-node/api-report.md index a5446c77cd..350e67e1c3 100644 --- a/plugins/techdocs-node/api-report.md +++ b/plugins/techdocs-node/api-report.md @@ -11,7 +11,7 @@ import { ContainerRunner } from '@backstage/backend-common'; import { Entity } from '@backstage/catalog-model'; import express from 'express'; import { IndexableDocument } from '@backstage/plugin-search-common'; -import { Logger as Logger_2 } from 'winston'; +import { Logger } from 'winston'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { UrlReader } from '@backstage/backend-common'; @@ -43,7 +43,7 @@ export type GeneratorBuilder = { // @public export type GeneratorOptions = { containerRunner: ContainerRunner; - logger: Logger_2; + logger: Logger; }; // @public @@ -52,7 +52,7 @@ export type GeneratorRunOptions = { outputDir: string; parsedLocationAnnotation?: ParsedLocationAnnotation; etag?: string; - logger: Logger_2; + logger: Logger; logStream?: Writable; }; @@ -61,7 +61,7 @@ export class Generators implements GeneratorBuilder { static fromConfig( config: Config, options: { - logger: Logger_2; + logger: Logger; containerRunner: ContainerRunner; }, ): Promise; @@ -76,7 +76,7 @@ export const getDocFilesFromRepository: ( opts?: | { etag?: string | undefined; - logger?: Logger_2 | undefined; + logger?: Logger | undefined; } | undefined, ) => Promise; @@ -118,13 +118,13 @@ export type PreparerBuilder = { // @public export type PreparerConfig = { - logger: Logger_2; + logger: Logger; reader: UrlReader; }; // @public export type PreparerOptions = { - logger?: Logger_2; + logger?: Logger; etag?: ETag; }; @@ -166,7 +166,7 @@ export interface PublisherBase { // @public export type PublisherFactory = { - logger: Logger_2; + logger: Logger; discovery: PluginEndpointDiscovery; }; @@ -214,7 +214,7 @@ export interface TechDocsDocument extends IndexableDocument { // @public export class TechdocsGenerator implements GeneratorBase { constructor(options: { - logger: Logger_2; + logger: Logger; containerRunner: ContainerRunner; config: Config; scmIntegrations: ScmIntegrationRegistry; From a13f70dc89c1a1f95eb7ff5ead938469659b030c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 15 Mar 2022 09:40:35 +0100 Subject: [PATCH 024/410] removed a lingering reference to the old 'result' export MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- docs/features/software-catalog/extending-the-model.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/features/software-catalog/extending-the-model.md b/docs/features/software-catalog/extending-the-model.md index 340daae7d3..92ce153da2 100644 --- a/docs/features/software-catalog/extending-the-model.md +++ b/docs/features/software-catalog/extending-the-model.md @@ -471,6 +471,7 @@ We also provide a high-level example of what a catalog process for a custom entity might look like: ```ts +import { CatalogProcessor, processingResult } from '@backstage/catalog-backend'; import { entityKindSchemaValidator } from '@backstage/catalog-model'; export class FoobarEntitiesProcessor implements CatalogProcessor { @@ -506,7 +507,7 @@ export class FoobarEntitiesProcessor implements CatalogProcessor { // Here we can modify the entity or emit results related to the entity // Typically you will want to emit any relations associated with the entity here - emit(results.relation({ ... })) + emit(processingResult.relation({ ... })) } return entity; From d24039a2528565f87aed4b8e44e5053941a92dfb Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 15 Mar 2022 10:11:19 +0100 Subject: [PATCH 025/410] chore: spelling mistake from library needs to be honoured Signed-off-by: blam --- plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx b/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx index d03555f5e2..53471f5e9f 100644 --- a/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx +++ b/plugins/xcmetrics/src/components/BuildList/BuildList.test.tsx @@ -53,7 +53,7 @@ describe('BuildList', () => { ); userEvent.click( - (await rendered.findAllByLabelText('Detail panel visibility toggle'))[0], + (await rendered.findAllByLabelText('Detail panel visiblity toggle'))[0], ); expect(await rendered.findByText('BuildDetails')).toBeInTheDocument(); }); From 0d917bf6f7a8bd4ea8b38894d7460d8cdcdf5f14 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Mar 2022 09:39:12 +0100 Subject: [PATCH 026/410] changes to be minor Signed-off-by: Emma Indal --- .changeset/techdocs-breezy-pans-flow.md | 4 +--- .changeset/techdocs-clever-pumas-warn.md | 4 ++-- .changeset/techdocs-tiny-spies-knock.md | 5 ++--- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.changeset/techdocs-breezy-pans-flow.md b/.changeset/techdocs-breezy-pans-flow.md index a3c0776bf2..933a383c38 100644 --- a/.changeset/techdocs-breezy-pans-flow.md +++ b/.changeset/techdocs-breezy-pans-flow.md @@ -1,8 +1,6 @@ --- -'@backstage/plugin-techdocs-node': patch +'@backstage/plugin-techdocs-node': minor --- -Deprecations cleaned up. - - `DirectoryPreparer` now uses private constructor. Use static fromConfig method to instantiate. - `UrlPreparer` now uses private constructor. Use static fromConfig method to instantiate. diff --git a/.changeset/techdocs-clever-pumas-warn.md b/.changeset/techdocs-clever-pumas-warn.md index 3804df599a..2aba8b9885 100644 --- a/.changeset/techdocs-clever-pumas-warn.md +++ b/.changeset/techdocs-clever-pumas-warn.md @@ -1,8 +1,8 @@ --- -'@backstage/plugin-techdocs-backend': patch +'@backstage/plugin-techdocs-backend': minor --- -Deprecations cleaned up. +Removed deprecated exports, including: - deprecated config `generators` is now deleted and fully replaced with `techdocs.generator` - deprecated config `generators.techdocs` is now deleted and fully replaced with `techdocs.generator.runIn` diff --git a/.changeset/techdocs-tiny-spies-knock.md b/.changeset/techdocs-tiny-spies-knock.md index 39acf6df10..ffc3e75a01 100644 --- a/.changeset/techdocs-tiny-spies-knock.md +++ b/.changeset/techdocs-tiny-spies-knock.md @@ -1,13 +1,12 @@ --- -'@backstage/plugin-techdocs': patch +'@backstage/plugin-techdocs': minor --- -Deprecations cleaned up. +Removed deprecated exports, including: - deprecated `DocsResultListItem` is now deleted and fully replaced with `TechDocsSearchResultListItem` - deprecated `TechDocsPage` is now deleted and fully replaced with `TechDocsReaderPage` - deprecated `TechDocsPageHeader` is now deleted and fully replaced with `TechDocsReaderPageHeader` - - deprecated `TechDocsPageHeaderProps` is now deleted and fully replaced with `TechDocsReaderPageHeaderProps` - deprecated `TechDocsPageRenderFunction` is now deleted and fully replaced with `TechDocsReaderPageRenderFunction` - deprecated config `techdocs.requestUrl` is now deleted and fully replaced with the discoveryApi From 848157fb498f206532c285d0835ea80f2440daf1 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 15 Mar 2022 10:39:04 +0100 Subject: [PATCH 027/410] chore: fixing tests Signed-off-by: blam --- .../backend-common/src/reading/AwsS3UrlReader.test.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts index 2911699a5d..087daf3787 100644 --- a/packages/backend-common/src/reading/AwsS3UrlReader.test.ts +++ b/packages/backend-common/src/reading/AwsS3UrlReader.test.ts @@ -247,7 +247,14 @@ describe('AwsS3UrlReader', () => { AWSMock.setSDKInstance(aws); AWSMock.mock('S3', 'getObject', (_, callback) => { - callback({ statusCode: 304 }, null); + const error: aws.AWSError = { + code: 'NotModified', + message: 'Not Modified', + statusCode: 304, + name: 'oops', + time: new Date('2019-01-01T00:00:00.000Z'), + }; + callback(error, undefined); }); const s3 = new aws.S3(); From 0163c41be2c02b4be3e9889959774b9a4c218ee8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 15 Mar 2022 11:12:08 +0100 Subject: [PATCH 028/410] catalog-client,catalog-backend: removed deprecated presence field Signed-off-by: Patrik Oldsberg --- .changeset/odd-hairs-remember.md | 5 +++++ .changeset/wild-lemons-pump.md | 5 +++++ packages/catalog-client/api-report.md | 4 +--- packages/catalog-client/src/CatalogClient.ts | 4 ++-- packages/catalog-client/src/types/api.ts | 4 ---- plugins/catalog-backend/api-report.md | 2 -- plugins/catalog-backend/src/service/types.ts | 2 -- 7 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 .changeset/odd-hairs-remember.md create mode 100644 .changeset/wild-lemons-pump.md diff --git a/.changeset/odd-hairs-remember.md b/.changeset/odd-hairs-remember.md new file mode 100644 index 0000000000..e43300bfbf --- /dev/null +++ b/.changeset/odd-hairs-remember.md @@ -0,0 +1,5 @@ +--- +'@backstage/catalog-client': minor +--- + +**BREAKING**: Removed the deprecated `presence` field in the `Location` and `AddLocationRequest` types. This field was already being ignored by the catalog backend and can be safely removed. diff --git a/.changeset/wild-lemons-pump.md b/.changeset/wild-lemons-pump.md new file mode 100644 index 0000000000..e869abe2ac --- /dev/null +++ b/.changeset/wild-lemons-pump.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +**BREAKING**: Removed the deprecated `presence` field from `LocationInput`. diff --git a/packages/catalog-client/api-report.md b/packages/catalog-client/api-report.md index ac8f712e11..5fcae87dd5 100644 --- a/packages/catalog-client/api-report.md +++ b/packages/catalog-client/api-report.md @@ -11,7 +11,6 @@ export type AddLocationRequest = { type?: string; target: string; dryRun?: boolean; - presence?: 'optional' | 'required'; }; // @public @@ -79,7 +78,7 @@ export class CatalogClient implements CatalogApi { }; }); addLocation( - { type, target, dryRun, presence }: AddLocationRequest, + { type, target, dryRun }: AddLocationRequest, options?: CatalogRequestOptions, ): Promise; getEntities( @@ -195,7 +194,6 @@ type Location_2 = { id: string; type: string; target: string; - presence?: 'optional' | 'required'; }; export { Location_2 as Location }; ``` diff --git a/packages/catalog-client/src/CatalogClient.ts b/packages/catalog-client/src/CatalogClient.ts index 85aada616c..371ac55db4 100644 --- a/packages/catalog-client/src/CatalogClient.ts +++ b/packages/catalog-client/src/CatalogClient.ts @@ -272,7 +272,7 @@ export class CatalogClient implements CatalogApi { * {@inheritdoc CatalogApi.addLocation} */ async addLocation( - { type = 'url', target, dryRun, presence }: AddLocationRequest, + { type = 'url', target, dryRun }: AddLocationRequest, options?: CatalogRequestOptions, ): Promise { const response = await this.fetchApi.fetch( @@ -285,7 +285,7 @@ export class CatalogClient implements CatalogApi { ...(options?.token && { Authorization: `Bearer ${options?.token}` }), }, method: 'POST', - body: JSON.stringify({ type, target, presence }), + body: JSON.stringify({ type, target }), }, ); diff --git a/packages/catalog-client/src/types/api.ts b/packages/catalog-client/src/types/api.ts index ba0c5e9359..389b82c081 100644 --- a/packages/catalog-client/src/types/api.ts +++ b/packages/catalog-client/src/types/api.ts @@ -244,8 +244,6 @@ export type Location = { id: string; type: string; target: string; - /** @deprecated This field is is ignored */ - presence?: 'optional' | 'required'; }; /** @@ -257,8 +255,6 @@ export type AddLocationRequest = { type?: string; target: string; dryRun?: boolean; - /** @deprecated This field is is ignored */ - presence?: 'optional' | 'required'; }; /** diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index d880159a36..42e05722c4 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -595,8 +595,6 @@ export type LocationEntityProcessorOptions = { // @public export interface LocationInput { - // @deprecated (undocumented) - presence?: 'optional' | 'required'; // (undocumented) target: string; // (undocumented) diff --git a/plugins/catalog-backend/src/service/types.ts b/plugins/catalog-backend/src/service/types.ts index fc315b9d89..f6cfa2e783 100644 --- a/plugins/catalog-backend/src/service/types.ts +++ b/plugins/catalog-backend/src/service/types.ts @@ -25,8 +25,6 @@ import { Location } from '@backstage/catalog-client'; export interface LocationInput { type: string; target: string; - /** @deprecated This field is ignored and will be removed */ - presence?: 'optional' | 'required'; } /** From 697f858edf4b5a82684bd0aced3567df7d6c60fb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 15 Mar 2022 11:13:12 +0100 Subject: [PATCH 029/410] scaffolder: mark TemplateList as internal + removed unused prop Signed-off-by: Patrik Oldsberg --- .../src/components/TemplateList/TemplateList.tsx | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx b/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx index e3cf6eac05..90d1c8cceb 100644 --- a/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx +++ b/plugins/scaffolder/src/components/TemplateList/TemplateList.tsx @@ -30,7 +30,7 @@ import { Typography } from '@material-ui/core'; import { TemplateCard } from '../TemplateCard'; /** - * @deprecated this type is deprecated and will be removed in a future releases, please use the TemplateCard to render your own list. + * @internal */ export type TemplateListProps = { TemplateCardComponent?: @@ -38,14 +38,12 @@ export type TemplateListProps = { | undefined; group?: { title?: React.ReactNode; - /** @deprecated use title instead, can be a string or a react component */ - titleComponent?: React.ReactNode; filter: (entity: Entity) => boolean; }; }; /** - * @deprecated this component is deprecated and will be removed in a future releases, please use the TemplateCard to render your own list. + * @internal */ export const TemplateList = ({ TemplateCardComponent, @@ -58,13 +56,6 @@ export const TemplateList = ({ : entities; const titleComponent: React.ReactNode = (() => { - if (group?.titleComponent) { - // eslint-disable-next-line no-console - console.warn( - 'DEPRECATED: group.titleComponent is now deprecated. Use group.title instead, it can be a string or a react component', - ); - return group?.titleComponent; - } if (group && group.title) { if (typeof group.title === 'string') { return ; From 664821371e7de58c4c903774100163ca274d97d7 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 15 Mar 2022 10:14:08 +0100 Subject: [PATCH 030/410] config-loader: lazy load typescript-json-schema Signed-off-by: Patrik Oldsberg --- .changeset/calm-boxes-smell.md | 5 +++++ packages/config-loader/src/lib/schema/collect.test.ts | 3 +++ packages/config-loader/src/lib/schema/collect.ts | 11 ++++++++--- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 .changeset/calm-boxes-smell.md diff --git a/.changeset/calm-boxes-smell.md b/.changeset/calm-boxes-smell.md new file mode 100644 index 0000000000..55c33997dd --- /dev/null +++ b/.changeset/calm-boxes-smell.md @@ -0,0 +1,5 @@ +--- +'@backstage/config-loader': patch +--- + +The `typescript-json-schema` dependency that is used during schema collection is now lazy loaded, as it eagerly loads in the TypeScript compiler. diff --git a/packages/config-loader/src/lib/schema/collect.test.ts b/packages/config-loader/src/lib/schema/collect.test.ts index 877cbb54e3..2754f788dd 100644 --- a/packages/config-loader/src/lib/schema/collect.test.ts +++ b/packages/config-loader/src/lib/schema/collect.test.ts @@ -28,6 +28,9 @@ const mockSchema = { }, }; +// Gotta make sure this is in the compiler cache before we start mocking the filesystem +require('typescript-json-schema'); + // We need to load in actual TS libraries when using mock-fs. // This lookup is to allow the `typescript` dependency to exist either // at top level or inside node_modules of typescript-json-schema diff --git a/packages/config-loader/src/lib/schema/collect.ts b/packages/config-loader/src/lib/schema/collect.ts index 3ff161cec4..98feffebb2 100644 --- a/packages/config-loader/src/lib/schema/collect.ts +++ b/packages/config-loader/src/lib/schema/collect.ts @@ -22,7 +22,6 @@ import { sep, } from 'path'; import { ConfigSchemaPackageEntry } from './types'; -import { getProgramFromFiles, generateSchema } from 'typescript-json-schema'; import { JsonObject } from '@backstage/types'; import { assertError } from '@backstage/errors'; @@ -149,7 +148,7 @@ export async function collectConfigSchemas( ...packagePaths.map(path => processItem({ name: path, packagePath: path })), ]); - const tsSchemas = compileTsSchemas(tsSchemaPaths); + const tsSchemas = await compileTsSchemas(tsSchemaPaths); return schemas.concat(tsSchemas); } @@ -157,11 +156,17 @@ export async function collectConfigSchemas( // This handles the support of TypeScript .d.ts config schema declarations. // We collect all typescript schema definition and compile them all in one go. // This is much faster than compiling them separately. -function compileTsSchemas(paths: string[]) { +async function compileTsSchemas(paths: string[]) { if (paths.length === 0) { return []; } + // Lazy loaded, because this brings up all of TypeScript and we don't + // want that eagerly loaded in tests + const { getProgramFromFiles, generateSchema } = await import( + 'typescript-json-schema' + ); + const program = getProgramFromFiles(paths, { incremental: false, isolatedModules: true, From 1f2757bb07d1c142fc857a2f84fd14522d49d1cb Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 15 Mar 2022 11:25:19 +0100 Subject: [PATCH 031/410] catalog-react: remove deprecated loading state of useEntity Signed-off-by: Patrik Oldsberg --- .changeset/thin-candles-run.md | 5 ++++ plugins/catalog-react/api-report.md | 3 --- .../src/hooks/useEntity.test.tsx | 27 +++++++++---------- plugins/catalog-react/src/hooks/useEntity.tsx | 18 +++---------- .../src/hooks/useEntityPermission.test.tsx | 6 ++--- .../src/hooks/useEntityPermission.ts | 8 ++++-- 6 files changed, 30 insertions(+), 37 deletions(-) create mode 100644 .changeset/thin-candles-run.md diff --git a/.changeset/thin-candles-run.md b/.changeset/thin-candles-run.md new file mode 100644 index 0000000000..2776373569 --- /dev/null +++ b/.changeset/thin-candles-run.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': minor +--- + +**BREAKING**: The `useEntity` hook no longer returns loading or error states, and will throw an error if the entity is not immediately available. In practice this means that `useEntity` can only be used in contexts where the entity is guaranteed to have been loaded, for example inside an `EntityLayout`. To access the loading state of the entity, use `useAsyncEntity` instead. diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 7859e1d2d8..265fce417d 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -472,9 +472,6 @@ export function useAsyncEntity< // @public export function useEntity(): { entity: TEntity; - loading: boolean; - error?: Error; - refresh?: VoidFunction; }; // @public diff --git a/plugins/catalog-react/src/hooks/useEntity.test.tsx b/plugins/catalog-react/src/hooks/useEntity.test.tsx index f61283f2cf..5e86a94180 100644 --- a/plugins/catalog-react/src/hooks/useEntity.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntity.test.tsx @@ -16,19 +16,21 @@ import React from 'react'; import { renderHook } from '@testing-library/react-hooks'; -import { useEntity, EntityProvider, AsyncEntityProvider } from './useEntity'; +import { + useEntity, + useAsyncEntity, + EntityProvider, + AsyncEntityProvider, +} from './useEntity'; import { Entity } from '@backstage/catalog-model'; -describe('EntityProvider', () => { - it('should provide no entity', async () => { +describe('useEntity', () => { + it('should throw if no entity is provided', async () => { const { result } = renderHook(() => useEntity(), { wrapper: ({ children }) => , }); - expect(result.current.entity).toBe(undefined); - expect(result.current.loading).toBe(true); - expect(result.current.error).toBe(undefined); - expect(result.current.refresh).toBe(undefined); + expect(result.error?.message).toMatch(/entity has not been loaded/); }); it('should provide an entity', async () => { @@ -40,15 +42,12 @@ describe('EntityProvider', () => { }); expect(result.current.entity).toBe(entity); - expect(result.current.loading).toBe(false); - expect(result.current.error).toBe(undefined); - expect(result.current.refresh).toBe(undefined); }); }); -describe('AsyncEntityProvider', () => { +describe('useAsyncEntity', () => { it('should provide no entity', async () => { - const { result } = renderHook(() => useEntity(), { + const { result } = renderHook(() => useAsyncEntity(), { wrapper: ({ children }) => ( ), @@ -63,7 +62,7 @@ describe('AsyncEntityProvider', () => { it('should provide an entity', async () => { const entity = { kind: 'MyEntity' } as Entity; const refresh = () => {}; - const { result } = renderHook(() => useEntity(), { + const { result } = renderHook(() => useAsyncEntity(), { wrapper: ({ children }) => ( { it('should provide an error', async () => { const error = new Error('oh no'); - const { result } = renderHook(() => useEntity(), { + const { result } = renderHook(() => useAsyncEntity(), { wrapper: ({ children }) => ( ( */ export function useEntity(): { entity: TEntity; - /** @deprecated use {@link useAsyncEntity} instead */ - loading: boolean; - /** @deprecated use {@link useAsyncEntity} instead */ - error?: Error; - /** @deprecated use {@link useAsyncEntity} instead */ - refresh?: VoidFunction; } { const versionedHolder = useVersionedContext<{ 1: EntityLoadingStatus }>('entity-context'); @@ -123,18 +117,12 @@ export function useEntity(): { } if (!value.entity) { - // Once we have removed the additional fields from being returned we can drop this deprecation - // and move to the error instead. - // throw new Error('useEntity hook is being called outside of an EntityLayout where the entity has not been loaded. If this is intentional, please use useAsyncEntity instead.'); - - // eslint-disable-next-line no-console - console.warn( - 'DEPRECATION: useEntity hook is being called outside of an EntityLayout where the entity has not been loaded. If this is intentional, please use useAsyncEntity instead. This warning will be replaced with an error in future releases.', + throw new Error( + 'useEntity hook is being called outside of an EntityLayout where the entity has not been loaded. If this is intentional, please use useAsyncEntity instead.', ); } - const { entity, loading, error, refresh } = value; - return { entity: entity as TEntity, loading, error, refresh }; + return { entity: value.entity as TEntity }; } /** diff --git a/plugins/catalog-react/src/hooks/useEntityPermission.test.tsx b/plugins/catalog-react/src/hooks/useEntityPermission.test.tsx index 553d999b61..766b587da3 100644 --- a/plugins/catalog-react/src/hooks/useEntityPermission.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntityPermission.test.tsx @@ -17,18 +17,18 @@ import { catalogEntityDeletePermission } from '@backstage/plugin-catalog-common'; import { renderHook } from '@testing-library/react-hooks'; import { useEntityPermission } from './useEntityPermission'; -import { useEntity } from './useEntity'; +import { useAsyncEntity } from './useEntity'; import { usePermission } from '@backstage/plugin-permission-react'; jest.mock('./useEntity', () => ({ ...jest.requireActual('./useEntity'), - useEntity: jest.fn(), + useAsyncEntity: jest.fn(), })); jest.mock('@backstage/plugin-permission-react', () => ({ ...jest.requireActual('@backstage/plugin-permission-react'), usePermission: jest.fn(), })); -const useEntityMock = useEntity as jest.Mock; +const useEntityMock = useAsyncEntity as jest.Mock; const usePermissionMock = usePermission as jest.Mock; describe('useEntityPermission', () => { diff --git a/plugins/catalog-react/src/hooks/useEntityPermission.ts b/plugins/catalog-react/src/hooks/useEntityPermission.ts index 092114936a..55d863726e 100644 --- a/plugins/catalog-react/src/hooks/useEntityPermission.ts +++ b/plugins/catalog-react/src/hooks/useEntityPermission.ts @@ -17,7 +17,7 @@ import { stringifyEntityRef } from '@backstage/catalog-model'; import { Permission } from '@backstage/plugin-permission-common'; import { usePermission } from '@backstage/plugin-permission-react'; -import { useEntity } from './useEntity'; +import { useAsyncEntity } from './useEntity'; /** * A thin wrapper around the @@ -35,7 +35,11 @@ export function useEntityPermission(permission: Permission): { allowed: boolean; error?: Error; } { - const { entity, loading: loadingEntity, error: entityError } = useEntity(); + const { + entity, + loading: loadingEntity, + error: entityError, + } = useAsyncEntity(); const { allowed, loading: loadingPermission, From b0c21ba1789d033fd153c2545b046ec14c499c55 Mon Sep 17 00:00:00 2001 From: DJDANNY123 <34899057+djdanny123@users.noreply.github.com> Date: Tue, 15 Mar 2022 10:49:22 +0000 Subject: [PATCH 032/410] Adds Surevine to the list of adopters Signed-off-by: Danny Jackson --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 8647961a5c..7882e91aaa 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -104,3 +104,4 @@ _If you're using Backstage in your organization, please try to add your company | [Stilingue](https://www.stilingue.com.br/) | [@stilingue-inteligencia-artificial](https://github.com/Stilingue-IA), [@bbviana](https://github.com/bbviana) | Developer portal, services catalog and centralization of metrics from Grafana, Sentry and GCP. Furthermore, centralization of documentation and infra details like DNS, Network services, SSL and so on. | | [TUI Group](https://www.tuigroup.com/) | [Simon Stamm](https://github.com/simonstamm), [Christian Rudolph](https://github.com/ChrisRu82) | Developer portal for all engineer to provide discoverability to all internal components, APIs, documentation and to scaffold templates with integrations to our internal tools extended by plugins from our community. | | [Alliander](https://www.alliander.com/) | [@leon-vg](https://github.com/leon-vg), [@gieljl](https://github.com/gieljl), [@niekteg](https://github.com/niekteg) | Developer portal - software catalog, technical documentation, software templates, tech radar and exploration of used tools/services | +| [Surevine](https://www.surevine.com/) | [@DJDANNY123](https://github.com/djdanny123) | Developer portal for software catalog, discovery and a view of the technologies we are using across the organisation, we are looking to explore how we can enrich our entities in Backstage by integrating a software bill of materials. | From 6ee137693feda26e518f1c9e72fe18183f042ba6 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 15 Mar 2022 09:45:01 +0100 Subject: [PATCH 033/410] catalog-backend: Reduce public API surface Signed-off-by: Johan Haals --- plugins/catalog-backend/api-report.md | 135 ------------------ .../src/modules/core/DefaultLocationStore.ts | 2 +- .../catalog-backend/src/processing/index.ts | 9 +- .../src/service/CatalogBuilder.ts | 9 +- plugins/catalog-backend/src/service/index.ts | 9 -- 5 files changed, 3 insertions(+), 161 deletions(-) diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 42e05722c4..7737cdc7cf 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -14,11 +14,8 @@ import { Config } from '@backstage/config'; import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; import { Entity } from '@backstage/catalog-model'; import { EntityPolicy } from '@backstage/catalog-model'; -import express from 'express'; import { GetEntitiesRequest } from '@backstage/catalog-client'; -import { JsonObject } from '@backstage/types'; import { JsonValue } from '@backstage/types'; -import { Location as Location_2 } from '@backstage/catalog-client'; import { Logger } from 'winston'; import { Permission } from '@backstage/plugin-permission-common'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; @@ -121,10 +118,7 @@ export class CatalogBuilder { ): void; addProcessor(...processors: CatalogProcessor[]): CatalogBuilder; build(): Promise<{ - entitiesCatalog: EntitiesCatalog; - locationAnalyzer: LocationAnalyzer; processingEngine: CatalogProcessingEngine; - locationService: LocationService; router: Router; }>; static create(env: CatalogEnvironment): CatalogBuilder; @@ -187,12 +181,6 @@ export interface CatalogProcessingEngine { stop(): Promise; } -// @public -export interface CatalogProcessingOrchestrator { - // (undocumented) - process(request: EntityProcessingRequest): Promise; -} - // @public (undocumented) export type CatalogProcessor = { getProcessorName(): string; @@ -320,9 +308,6 @@ export function createRandomProcessingInterval(options: { maxSeconds: number; }): ProcessingIntervalFunction; -// @public -export function createRouter(options: RouterOptions): Promise; - // @public @deprecated (undocumented) export class DefaultCatalogCollator { constructor(options: { @@ -389,22 +374,6 @@ export type DefaultCatalogCollatorFactoryOptions = { catalogClient?: CatalogApi; }; -// @public (undocumented) -export class DefaultCatalogProcessingOrchestrator - implements CatalogProcessingOrchestrator -{ - constructor(options: { - processors: CatalogProcessor[]; - integrations: ScmIntegrationRegistry; - logger: Logger; - parser: CatalogProcessorParser; - policy: EntityPolicy; - rulesEnforcer: CatalogRulesEnforcer; - }); - // (undocumented) - process(request: EntityProcessingRequest): Promise; -} - // @public export class DefaultCatalogRulesEnforcer implements CatalogRulesEnforcer { constructor(rules: CatalogRule[]); @@ -504,27 +473,6 @@ export type EntityPagination = { after?: string; }; -// @public -export type EntityProcessingRequest = { - entity: Entity; - state?: JsonObject; -}; - -// @public -export type EntityProcessingResult = - | { - ok: true; - state: JsonObject; - completedEntity: Entity; - deferredEntities: DeferredEntity[]; - relations: EntityRelationSpec[]; - errors: Error[]; - } - | { - ok: false; - errors: Error[]; - }; - // @public export interface EntityProvider { connect(connection: EntityProviderConnection): Promise; @@ -593,48 +541,6 @@ export type LocationEntityProcessorOptions = { integrations: ScmIntegrationRegistry; }; -// @public -export interface LocationInput { - // (undocumented) - target: string; - // (undocumented) - type: string; -} - -// @public -export interface LocationService { - // (undocumented) - createLocation( - location: LocationInput, - dryRun: boolean, - options?: { - authorizationToken?: string; - }, - ): Promise<{ - location: Location_2; - entities: Entity[]; - exists?: boolean; - }>; - // (undocumented) - deleteLocation( - id: string, - options?: { - authorizationToken?: string; - }, - ): Promise; - // (undocumented) - getLocation( - id: string, - options?: { - authorizationToken?: string; - }, - ): Promise; - // (undocumented) - listLocations(options?: { - authorizationToken?: string; - }): Promise; -} - // @public export type LocationSpec = { type: string; @@ -642,18 +548,6 @@ export type LocationSpec = { presence?: 'optional' | 'required'; }; -// @public -export interface LocationStore { - // (undocumented) - createLocation(location: LocationInput): Promise; - // (undocumented) - deleteLocation(id: string): Promise; - // (undocumented) - getLocation(id: string): Promise; - // (undocumented) - listLocations(): Promise; -} - // @public (undocumented) export type PageInfo = | { @@ -760,35 +654,6 @@ export const processingResult: Readonly<{ readonly relation: (spec: EntityRelationSpec) => CatalogProcessorResult; }>; -// @public -export type RefreshOptions = { - entityRef: string; - authorizationToken?: string; -}; - -// @public -export interface RefreshService { - refresh(options: RefreshOptions): Promise; -} - -// @public -export interface RouterOptions { - // (undocumented) - config: Config; - // (undocumented) - entitiesCatalog?: EntitiesCatalog; - // (undocumented) - locationAnalyzer?: LocationAnalyzer; - // (undocumented) - locationService: LocationService; - // (undocumented) - logger: Logger; - // (undocumented) - permissionIntegrationRouter?: express.Router; - // (undocumented) - refreshService?: RefreshService; -} - // @public (undocumented) export class UrlReaderProcessor implements CatalogProcessor { constructor(options: { reader: UrlReader; logger: Logger }); diff --git a/plugins/catalog-backend/src/modules/core/DefaultLocationStore.ts b/plugins/catalog-backend/src/modules/core/DefaultLocationStore.ts index d637f4eda0..0d4bedabbb 100644 --- a/plugins/catalog-backend/src/modules/core/DefaultLocationStore.ts +++ b/plugins/catalog-backend/src/modules/core/DefaultLocationStore.ts @@ -22,7 +22,7 @@ import { DbLocationsRow } from '../../database/tables'; import { getEntityLocationRef } from '../../processing/util'; import { EntityProvider, EntityProviderConnection } from '../../api'; import { locationSpecToLocationEntity } from '../../util/conversion'; -import { LocationInput, LocationStore } from '../../service'; +import { LocationInput, LocationStore } from '../../service/types'; export class DefaultLocationStore implements LocationStore, EntityProvider { private _connection: EntityProviderConnection | undefined; diff --git a/plugins/catalog-backend/src/processing/index.ts b/plugins/catalog-backend/src/processing/index.ts index 315cea37d7..b392c3aa76 100644 --- a/plugins/catalog-backend/src/processing/index.ts +++ b/plugins/catalog-backend/src/processing/index.ts @@ -14,14 +14,7 @@ * limitations under the License. */ -export type { - CatalogProcessingOrchestrator, - CatalogProcessingEngine, - EntityProcessingRequest, - EntityProcessingResult, - DeferredEntity, -} from './types'; -export { DefaultCatalogProcessingOrchestrator } from './DefaultCatalogProcessingOrchestrator'; +export type { CatalogProcessingEngine, DeferredEntity } from './types'; export { createRandomProcessingInterval } from './refresh'; export type { ProcessingIntervalFunction } from './refresh'; diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index 8dd507c74e..fb4ed6086f 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -32,7 +32,7 @@ import { ScmIntegrations } from '@backstage/integration'; import { createHash } from 'crypto'; import { Router } from 'express'; import lodash, { keyBy } from 'lodash'; -import { EntitiesCatalog, EntitiesSearchFilter } from '../catalog'; +import { EntitiesSearchFilter } from '../catalog'; import { CatalogProcessor, @@ -76,7 +76,6 @@ import { AuthorizedRefreshService } from './AuthorizedRefreshService'; import { DefaultCatalogRulesEnforcer } from '../ingestion/CatalogRules'; import { Config } from '@backstage/config'; import { Logger } from 'winston'; -import { LocationService } from './types'; import { connectEntityProviders } from '../processing/connectEntityProviders'; import { permissionRules as catalogPermissionRules } from '../permissions/rules'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; @@ -355,10 +354,7 @@ export class CatalogBuilder { * Wires up and returns all of the component parts of the catalog */ async build(): Promise<{ - entitiesCatalog: EntitiesCatalog; - locationAnalyzer: LocationAnalyzer; processingEngine: CatalogProcessingEngine; - locationService: LocationService; router: Router; }> { const { config, database, logger, permissions } = this.env; @@ -460,10 +456,7 @@ export class CatalogBuilder { await connectEntityProviders(processingDatabase, entityProviders); return { - entitiesCatalog, - locationAnalyzer, processingEngine, - locationService, router, }; } diff --git a/plugins/catalog-backend/src/service/index.ts b/plugins/catalog-backend/src/service/index.ts index e1c7f54475..b1e91e4382 100644 --- a/plugins/catalog-backend/src/service/index.ts +++ b/plugins/catalog-backend/src/service/index.ts @@ -14,14 +14,5 @@ * limitations under the License. */ -export type { - LocationService, - RefreshService, - RefreshOptions, - LocationStore, - LocationInput, -} from './types'; -export { createRouter } from './createRouter'; -export type { RouterOptions } from './createRouter'; export type { CatalogEnvironment } from './CatalogBuilder'; export { CatalogBuilder } from './CatalogBuilder'; From 6145ca7189a65a37c988899d95c096d18cdf58bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 15 Mar 2022 11:29:59 +0100 Subject: [PATCH 034/410] more removals MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/fluffy-cameras-shop.md | 44 ++++++++ plugins/catalog-backend/api-report.md | 100 ------------------ plugins/catalog-backend/src/catalog/index.ts | 13 +-- plugins/catalog-backend/src/catalog/types.ts | 14 +-- .../src/ingestion/CatalogRules.ts | 6 -- .../catalog-backend/src/ingestion/index.ts | 2 - .../src/service/createRouter.test.ts | 2 +- .../src/service/createRouter.ts | 2 +- .../request/parseEntityPaginationParams.ts | 2 +- 9 files changed, 50 insertions(+), 135 deletions(-) create mode 100644 .changeset/fluffy-cameras-shop.md diff --git a/.changeset/fluffy-cameras-shop.md b/.changeset/fluffy-cameras-shop.md new file mode 100644 index 0000000000..aee6fa6ebb --- /dev/null +++ b/.changeset/fluffy-cameras-shop.md @@ -0,0 +1,44 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +**BREAKING**: A number of types and classes have been removed, without a prior deprecation period. These were all very internal, essentially unused by the vast majority of users, and their being exposed was leading to excessive breaking of public interfaces for little-to-zero benefit. So for the 1.0 release of the catalog, the following interface changes have been made (but should have no effect on most users): + +- The return type of `CatalogBuilder.build()` now only has the fields `processingEngine` and `router` which is what most users actually consume; the other three fields (`entitiesCatalog`, `locationAnalyzer`, `locationService`) that see very little use have been removed + +- The function `createRouter` is removed; use `CatalogBuilder` as follows instead: + + ```ts + const builder = await CatalogBuilder.create(env); + // add things as needed, e.g builder.addProcessor(new ScaffolderEntitiesProcessor()); + const { processingEngine, router } = await builder.build(); + await processingEngine.start(); + return router; + ``` + +- The following types were removed: + + - `CatalogProcessingOrchestrator` + - `CatalogRule` + - `CatalogRulesEnforcer` + - `EntityAncestryResponse` + - `EntityFacetsRequest` + - `EntityFacetsResponse` + - `EntityPagination` + - `EntityProcessingRequest` + - `EntityProcessingResult` + - `EntitiesCatalog` + - `EntitiesRequest` + - `EntitiesResponse` + - `LocationService` + - `LocationInput` + - `LocationStore` + - `PageInfo` + - `RefreshOptions` + - `RefreshService` + - `RouterOptions` + +- The following classes were removed: + + - `DefaultCatalogProcessingOrchestrator` + - `DefaultCatalogRulesEnforcer` diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 7737cdc7cf..ad80e36232 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -255,22 +255,6 @@ export type CatalogProcessorResult = | CatalogProcessorRelationResult | CatalogProcessorErrorResult; -// @public -export type CatalogRule = { - allow: Array<{ - kind: string; - }>; - locations?: Array<{ - target?: string; - type: string; - }>; -}; - -// @public -export type CatalogRulesEnforcer = { - isAllowed(entity: Entity, location: LocationSpec): boolean; -}; - // @public (undocumented) export class CodeOwnersProcessor implements CatalogProcessor { constructor(options: { @@ -374,85 +358,18 @@ export type DefaultCatalogCollatorFactoryOptions = { catalogClient?: CatalogApi; }; -// @public -export class DefaultCatalogRulesEnforcer implements CatalogRulesEnforcer { - constructor(rules: CatalogRule[]); - static readonly defaultRules: CatalogRule[]; - static fromConfig(config: Config): DefaultCatalogRulesEnforcer; - isAllowed(entity: Entity, location: LocationSpec): boolean; -} - // @public export type DeferredEntity = { entity: Entity; locationKey?: string; }; -// @public (undocumented) -export type EntitiesCatalog = { - entities(request?: EntitiesRequest): Promise; - removeEntityByUid( - uid: string, - options?: { - authorizationToken?: string; - }, - ): Promise; - entityAncestry( - entityRef: string, - options?: { - authorizationToken?: string; - }, - ): Promise; - facets(request: EntityFacetsRequest): Promise; -}; - -// @public (undocumented) -export type EntitiesRequest = { - filter?: EntityFilter; - fields?: (entity: Entity) => Entity; - pagination?: EntityPagination; - authorizationToken?: string; -}; - -// @public (undocumented) -export type EntitiesResponse = { - entities: Entity[]; - pageInfo: PageInfo; -}; - // @public export type EntitiesSearchFilter = { key: string; values?: string[]; }; -// @public (undocumented) -export type EntityAncestryResponse = { - rootEntityRef: string; - items: Array<{ - entity: Entity; - parentEntityRefs: string[]; - }>; -}; - -// @public -export interface EntityFacetsRequest { - authorizationToken?: string; - facets: string[]; - filter?: EntityFilter; -} - -// @public -export interface EntityFacetsResponse { - facets: Record< - string, - Array<{ - value: string; - count: number; - }> - >; -} - // @public export type EntityFilter = | { @@ -466,13 +383,6 @@ export type EntityFilter = } | EntitiesSearchFilter; -// @public -export type EntityPagination = { - limit?: number; - offset?: number; - after?: string; -}; - // @public export interface EntityProvider { connect(connection: EntityProviderConnection): Promise; @@ -548,16 +458,6 @@ export type LocationSpec = { presence?: 'optional' | 'required'; }; -// @public (undocumented) -export type PageInfo = - | { - hasNextPage: false; - } - | { - hasNextPage: true; - endCursor: string; - }; - // @public (undocumented) export function parseEntityYaml( data: Buffer, diff --git a/plugins/catalog-backend/src/catalog/index.ts b/plugins/catalog-backend/src/catalog/index.ts index 59f67b2f52..ba34673bba 100644 --- a/plugins/catalog-backend/src/catalog/index.ts +++ b/plugins/catalog-backend/src/catalog/index.ts @@ -14,15 +14,4 @@ * limitations under the License. */ -export type { - EntitiesCatalog, - EntitiesRequest, - EntitiesResponse, - EntitiesSearchFilter, - EntityAncestryResponse, - EntityFacetsRequest, - EntityFacetsResponse, - EntityFilter, - EntityPagination, - PageInfo, -} from './types'; +export type { EntitiesSearchFilter, EntityFilter } from './types'; diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts index b575b96c6c..34060814aa 100644 --- a/plugins/catalog-backend/src/catalog/types.ts +++ b/plugins/catalog-backend/src/catalog/types.ts @@ -31,7 +31,6 @@ export type EntityFilter = /** * A pagination rule for entities. - * @public */ export type EntityPagination = { limit?: number; @@ -60,7 +59,6 @@ export type EntitiesSearchFilter = { values?: string[]; }; -/** @public */ export type PageInfo = | { hasNextPage: false; @@ -70,7 +68,6 @@ export type PageInfo = endCursor: string; }; -/** @public */ export type EntitiesRequest = { filter?: EntityFilter; fields?: (entity: Entity) => Entity; @@ -78,13 +75,11 @@ export type EntitiesRequest = { authorizationToken?: string; }; -/** @public */ export type EntitiesResponse = { entities: Entity[]; pageInfo: PageInfo; }; -/** @public */ export type EntityAncestryResponse = { rootEntityRef: string; items: Array<{ @@ -95,8 +90,6 @@ export type EntityAncestryResponse = { /** * The request shape for {@link EntitiesCatalog.facets}. - * - * @public */ export interface EntityFacetsRequest { /** @@ -121,8 +114,6 @@ export interface EntityFacetsRequest { /** * The response shape for {@link EntitiesCatalog.facets}. - * - * @public */ export interface EntityFacetsResponse { /** @@ -131,8 +122,7 @@ export interface EntityFacetsResponse { facets: Record>; } -/** @public */ -export type EntitiesCatalog = { +export interface EntitiesCatalog { /** * Fetch entities. * @@ -167,4 +157,4 @@ export type EntitiesCatalog = { * @param request - Request options */ facets(request: EntityFacetsRequest): Promise; -}; +} diff --git a/plugins/catalog-backend/src/ingestion/CatalogRules.ts b/plugins/catalog-backend/src/ingestion/CatalogRules.ts index 376ea128b7..587a0bd7d5 100644 --- a/plugins/catalog-backend/src/ingestion/CatalogRules.ts +++ b/plugins/catalog-backend/src/ingestion/CatalogRules.ts @@ -23,8 +23,6 @@ import { LocationSpec } from '../api'; * Rules to apply to catalog entities. * * An undefined list of matchers means match all, an empty list of matchers means match none. - * - * @public */ export type CatalogRule = { allow: Array<{ @@ -39,8 +37,6 @@ export type CatalogRule = { /** * Decides whether an entity from a given location is allowed to enter the * catalog, according to some rule set. - * - * @public */ export type CatalogRulesEnforcer = { isAllowed(entity: Entity, location: LocationSpec): boolean; @@ -49,8 +45,6 @@ export type CatalogRulesEnforcer = { /** * Implements the default catalog rule set, consuming the config keys * `catalog.rules` and `catalog.locations.[].rules`. - * - * @public */ export class DefaultCatalogRulesEnforcer implements CatalogRulesEnforcer { /** diff --git a/plugins/catalog-backend/src/ingestion/index.ts b/plugins/catalog-backend/src/ingestion/index.ts index 1f4729b041..c97d029b5c 100644 --- a/plugins/catalog-backend/src/ingestion/index.ts +++ b/plugins/catalog-backend/src/ingestion/index.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -export { DefaultCatalogRulesEnforcer } from './CatalogRules'; -export type { CatalogRule, CatalogRulesEnforcer } from './CatalogRules'; export type { AnalyzeLocationEntityField, AnalyzeLocationExistingEntity, diff --git a/plugins/catalog-backend/src/service/createRouter.test.ts b/plugins/catalog-backend/src/service/createRouter.test.ts index 8db15cb4a1..1602d07d28 100644 --- a/plugins/catalog-backend/src/service/createRouter.test.ts +++ b/plugins/catalog-backend/src/service/createRouter.test.ts @@ -21,7 +21,7 @@ import type { Location } from '@backstage/catalog-client'; import type { Entity } from '@backstage/catalog-model'; import express from 'express'; import request from 'supertest'; -import { EntitiesCatalog } from '../catalog'; +import { EntitiesCatalog } from '../catalog/types'; import { LocationInput, LocationService, RefreshService } from './types'; import { basicEntityFilter } from './request'; import { createRouter } from './createRouter'; diff --git a/plugins/catalog-backend/src/service/createRouter.ts b/plugins/catalog-backend/src/service/createRouter.ts index df289d579b..a35309035f 100644 --- a/plugins/catalog-backend/src/service/createRouter.ts +++ b/plugins/catalog-backend/src/service/createRouter.ts @@ -22,7 +22,7 @@ import express from 'express'; import Router from 'express-promise-router'; import { Logger } from 'winston'; import yn from 'yn'; -import { EntitiesCatalog } from '../catalog'; +import { EntitiesCatalog } from '../catalog/types'; import { LocationAnalyzer } from '../ingestion/types'; import { basicEntityFilter, diff --git a/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.ts b/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.ts index c91c0b0214..87b19e13de 100644 --- a/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.ts +++ b/plugins/catalog-backend/src/service/request/parseEntityPaginationParams.ts @@ -15,7 +15,7 @@ */ import { InputError } from '@backstage/errors'; -import { EntityPagination } from '../../catalog'; +import { EntityPagination } from '../../catalog/types'; import { parseIntegerParam, parseStringParam } from './common'; /** From 58a98843aca7d3a1340fabf70b71a0217198dbfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 15 Mar 2022 11:49:59 +0100 Subject: [PATCH 035/410] review fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/fluffy-cameras-shop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/fluffy-cameras-shop.md b/.changeset/fluffy-cameras-shop.md index aee6fa6ebb..a84e99c24e 100644 --- a/.changeset/fluffy-cameras-shop.md +++ b/.changeset/fluffy-cameras-shop.md @@ -4,7 +4,7 @@ **BREAKING**: A number of types and classes have been removed, without a prior deprecation period. These were all very internal, essentially unused by the vast majority of users, and their being exposed was leading to excessive breaking of public interfaces for little-to-zero benefit. So for the 1.0 release of the catalog, the following interface changes have been made (but should have no effect on most users): -- The return type of `CatalogBuilder.build()` now only has the fields `processingEngine` and `router` which is what most users actually consume; the other three fields (`entitiesCatalog`, `locationAnalyzer`, `locationService`) that see very little use have been removed +- The return type of `CatalogBuilder.build()` now only has the fields `processingEngine` and `router` which is what most users actually consume; the other three fields (`entitiesCatalog`, `locationAnalyzer`, `locationService`) that see very little use have been removed. If you were relying on the presence of either of these in any way, please [open an issue](https://github.com/backstage/backstage/issues/new/choose) that describes your use case, and we'll see how we could fill the gap. - The function `createRouter` is removed; use `CatalogBuilder` as follows instead: From 414c5f09236d71302fc6a86773c6e2c25bc40d6b Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 15 Mar 2022 12:17:18 +0100 Subject: [PATCH 036/410] chore: gotta bump this package tooo... Signed-off-by: blam --- yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4c46fd1396..af7fd8e2c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1988,9 +1988,9 @@ xcase "^2.0.1" "@google-cloud/common@^3.7.0": - version "3.7.0" - resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.0.tgz#ee3fba75aeaa614978aebf8740380670026592aa" - integrity sha512-oFgpKLjH9JTOAyQd3kB36iSuH8wNSpDKb1TywlB6zcsG0xmJFxLutmfPhz03KUxRMNQOZ1K1Gc9BYvJifVnGVA== + version "3.10.0" + resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.10.0.tgz#454d1155bb512109cd83c6183aabbd39f9aabda7" + integrity sha512-XMbJYMh/ZSaZnbnrrOFfR/oQrb0SxG4qh6hDisWCoEbFcBHV0qHQo4uXfeMCzolx2Mfkh6VDaOGg+hyJsmxrlw== dependencies: "@google-cloud/projectify" "^2.0.0" "@google-cloud/promisify" "^2.0.0" @@ -1998,7 +1998,7 @@ duplexify "^4.1.1" ent "^2.2.0" extend "^3.0.2" - google-auth-library "^7.0.2" + google-auth-library "^7.14.0" retry-request "^4.2.2" teeny-request "^7.0.0" @@ -13256,7 +13256,7 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6.1: +google-auth-library@^7.0.0, google-auth-library@^7.14.0, google-auth-library@^7.6.1: version "7.14.0" resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.0.tgz#9d6a20592f7b4d4c463cd3e93934c4b1711d5dc6" integrity sha512-or8r7qUqGVI3W8lVSdPh0ZpeFyQHeE73g5c0p+bLNTTUFXJ+GSeDQmZRZ2p4H8cF/RJYa4PNvi/A1ar1uVNLFA== From 7c8cde4aa1e2f32035989d59315d8e50e4934221 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Tue, 15 Mar 2022 12:19:51 +0100 Subject: [PATCH 037/410] chore: added changeset Signed-off-by: Ben Lambert --- .changeset/grumpy-rules-fetch.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/grumpy-rules-fetch.md diff --git a/.changeset/grumpy-rules-fetch.md b/.changeset/grumpy-rules-fetch.md new file mode 100644 index 0000000000..c864e46e3b --- /dev/null +++ b/.changeset/grumpy-rules-fetch.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Change header style `word-wrap` from `break-all` to `break-word` From 77636d71b7cea608233c553e6ee87cfb7e2f2b6f Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 14 Mar 2022 12:29:07 +0100 Subject: [PATCH 038/410] chore: fix api-report and documentation for `scaffolder-common` Signed-off-by: blam --- plugins/scaffolder-common/api-report.md | 13 ------- plugins/scaffolder-common/src/TaskSpec.ts | 39 +++++++++++++++++++ .../src/TemplateEntityV1beta3.ts | 27 +++++++++++++ 3 files changed, 66 insertions(+), 13 deletions(-) diff --git a/plugins/scaffolder-common/api-report.md b/plugins/scaffolder-common/api-report.md index 6148440e6d..532e72d3fd 100644 --- a/plugins/scaffolder-common/api-report.md +++ b/plugins/scaffolder-common/api-report.md @@ -13,41 +13,28 @@ export type TaskSpec = TaskSpecV1beta3; // @public export interface TaskSpecV1beta3 { - // (undocumented) apiVersion: 'scaffolder.backstage.io/v1beta3'; - // (undocumented) output: { [name: string]: JsonValue; }; - // (undocumented) parameters: JsonObject; - // (undocumented) steps: TaskStep[]; - // (undocumented) templateInfo?: TemplateInfo; } // @public export interface TaskStep { - // (undocumented) action: string; - // (undocumented) id: string; - // (undocumented) if?: string | boolean; - // (undocumented) input?: JsonObject; - // (undocumented) name: string; } // @public export interface TemplateEntityV1beta3 extends Entity { - // (undocumented) apiVersion: 'scaffolder.backstage.io/v1beta3'; - // (undocumented) kind: 'Template'; - // (undocumented) spec: { type: string; parameters?: JsonObject | JsonObject[]; diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 326bb60ef6..defca83096 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -23,7 +23,13 @@ import { JsonValue, JsonObject } from '@backstage/types'; * @public */ export type TemplateInfo = { + /** + * The entityRef of the template + */ entityRef: string; + /** + * Where the template is stored, so we can resolve relative paths for things like `fetch:template` paths. + */ baseUrl?: string; }; @@ -33,10 +39,25 @@ export type TemplateInfo = { * @public */ export interface TaskStep { + /** + * A unqiue identifier for this step. + */ id: string; + /** + * A display name to show the user. + */ name: string; + /** + * The underlying action ID that will be called part of running this step. + */ action: string; + /** + * Additional data that will be passed to the action. + */ input?: JsonObject; + /** + * When this is false, or if the templated value string evaluates to something that is false the step will be skipped. + */ if?: string | boolean; } @@ -47,10 +68,28 @@ export interface TaskStep { * @public */ export interface TaskSpecV1beta3 { + /** + * The apiVersion string of the TaskSpec. + */ apiVersion: 'scaffolder.backstage.io/v1beta3'; + /** + * This is a JSONSchema or an array of JSONSchema's which is used to render a form in the frontend + * to collect user input and validate it against that schema. This can then be used in the `steps` part below to template + * variables passed from the user into each action in the template. + */ parameters: JsonObject; + /** + * A list of steps to be executed in sequence which are defined by the template. These steps are a list of the underlying + * javascript action and some optional input parameters that may or may not have been collected from the end user. + */ steps: TaskStep[]; + /** + * The output is an object where template authors can pull out information from template actions and return them in a known standard way. + */ output: { [name: string]: JsonValue }; + /** + * Some information about the template that is stored on the task spec. + */ templateInfo?: TemplateInfo; } diff --git a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts index 13b699de69..5e188cb09b 100644 --- a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts +++ b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts @@ -29,11 +29,32 @@ import schema from './Template.v1beta3.schema.json'; * @public */ export interface TemplateEntityV1beta3 extends Entity { + /** + * The apiVersion string of the TaskSpec. + */ apiVersion: 'scaffolder.backstage.io/v1beta3'; + /** + * The kind of the entity + */ kind: 'Template'; + /** + * The specification of the Template Entity + */ spec: { + /** + * The type that the Template will create. For example service, website or library. + */ type: string; + /** + * This is a JSONSchema or an array of JSONSchema's which is used to render a form in the frontend + * to collect user input and validate it against that schema. This can then be used in the `steps` part below to template + * variables passed from the user into each action in the template. + */ parameters?: JsonObject | JsonObject[]; + /** + * A list of steps to be executed in sequence which are defined by the template. These steps are a list of the underlying + * javascript action and some optional input parameters that may or may not have been collected from the end user. + */ steps: Array<{ id?: string; name?: string; @@ -41,7 +62,13 @@ export interface TemplateEntityV1beta3 extends Entity { input?: JsonObject; if?: string | boolean; }>; + /** + * The output is an object where template authors can pull out information from template actions and return them in a known standard way. + */ output?: { [name: string]: string }; + /** + * The owner of the TemplateEntity + */ owner?: string; }; } From c8475ab3bbc94b16068e7b95d3729204db522357 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 14 Mar 2022 13:09:24 +0100 Subject: [PATCH 039/410] chore: working through the api-report of `scaffolder-backend` Signed-off-by: blam --- .changeset/lucky-kangaroos-sneeze.md | 6 +++++ plugins/scaffolder-backend/api-report.md | 17 +++---------- .../actions/builtin/createBuiltinActions.ts | 16 +++++++++++++ .../builtin/publish/githubPullRequest.ts | 19 +++++++++++++-- .../src/scaffolder/tasks/StorageTaskBroker.ts | 24 +++++++++++++++++++ .../scaffolder-backend/src/service/router.ts | 5 +++- 6 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 .changeset/lucky-kangaroos-sneeze.md diff --git a/.changeset/lucky-kangaroos-sneeze.md b/.changeset/lucky-kangaroos-sneeze.md new file mode 100644 index 0000000000..badcd8a5cf --- /dev/null +++ b/.changeset/lucky-kangaroos-sneeze.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-common': patch +--- + +Adding some documentation for exported things diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 6934f2ef83..c0d3595503 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -49,15 +49,10 @@ export const createBuiltinActions: ( // @public export interface CreateBuiltInActionsOptions { - // (undocumented) additionalTemplateFilters?: Record; - // (undocumented) catalogClient: CatalogApi; - // (undocumented) config: Config; - // (undocumented) integrations: ScmIntegrations; - // (undocumented) reader: UrlReader; } @@ -142,19 +137,16 @@ export function createGithubActionsDispatchAction(options: { token?: string | undefined; }>; -// @public (undocumented) +// @public export interface CreateGithubPullRequestActionOptions { - // (undocumented) clientFactory?: ( input: CreateGithubPullRequestClientFactoryInput, ) => Promise; - // (undocumented) githubCredentialsProvider?: GithubCredentialsProvider; - // (undocumented) integrations: ScmIntegrationRegistry; } -// @public (undocumented) +// @public export type CreateGithubPullRequestClientFactoryInput = { integrations: ScmIntegrationRegistry; githubCredentialsProvider?: GithubCredentialsProvider; @@ -278,7 +270,7 @@ export const createPublishGitlabMergeRequestAction: (options: { token?: string | undefined; }>; -// @public (undocumented) +// @public export function createRouter(options: RouterOptions): Promise; // @public @@ -298,11 +290,8 @@ export type CreateWorkerOptions = { // @public export interface CurrentClaimedTask { - // (undocumented) secrets?: TaskSecrets; - // (undocumented) spec: TaskSpec; - // (undocumented) taskId: string; } diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts index d7f15cdf13..250a2b4b9e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts @@ -54,10 +54,26 @@ import { TemplateAction } from '../types'; * @public */ export interface CreateBuiltInActionsOptions { + /** + * The {@link @backstage/backend-common#UrlReader} interface that will be used in the default actions. + */ reader: UrlReader; + /** + * The {@link @backstage/integrations#ScmIntegrations} that will be used in the default actions. + */ integrations: ScmIntegrations; + /** + * The {@link @backstage/catalog-client#CatalogApi} that will be used in the default actions. + */ catalogClient: CatalogApi; + /** + * The {@link @backstage/config#Config} that will be used in the default actions. + */ config: Config; + /** + * Additional custom filters that will be passed to the nunjucks template engine for use in + * Template Manifests and also template skeleton files when using `fetch:template`. + */ additionalTemplateFilters?: Record; } diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts index 2ce8e1d81e..d46457ee1b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts @@ -41,7 +41,10 @@ export interface OctokitWithPullRequestPluginClient { } | null>; } -/** @public */ +/** + * The options passed to the client factory function. + * @public + */ export type CreateGithubPullRequestClientFactoryInput = { integrations: ScmIntegrationRegistry; githubCredentialsProvider?: GithubCredentialsProvider; @@ -74,10 +77,22 @@ export const defaultClientFactory = async ({ return new OctokitPR(octokitOptions); }; -/** @public */ +/** + * The options passed to {@link createPublishGithubPullRequestAction} method + * @public + */ export interface CreateGithubPullRequestActionOptions { + /** + * An instance of {@link @backstage/integration#ScmIntegrationRegistry} that will be used in the action. + */ integrations: ScmIntegrationRegistry; + /** + * An instance of {@link @backstage/integration#GithubCredentialsProvider} that will be used to get credentials for the action. + */ githubCredentialsProvider?: GithubCredentialsProvider; + /** + * A method to return the Octokit client with the Pull Request Plugin. + */ clientFactory?: ( input: CreateGithubPullRequestClientFactoryInput, ) => Promise; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 1399c25118..a4ec429121 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -115,8 +115,17 @@ export class TaskManager implements TaskContext { * @public */ export interface CurrentClaimedTask { + /** + * The TaskSpec of the current claimed task. + */ spec: TaskSpec; + /** + * The uuid of the current claimed task. + */ taskId: string; + /** + * The secrets that are stored with the task. + */ secrets?: TaskSecrets; } @@ -135,6 +144,9 @@ export class StorageTaskBroker implements TaskBroker { ) {} private deferredDispatch = defer(); + /** + * @inheritdoc + */ async claim(): Promise { for (;;) { const pendingTask = await this.storage.claimTask(); @@ -154,6 +166,9 @@ export class StorageTaskBroker implements TaskBroker { } } + /** + * @inheritdoc + */ async dispatch( options: TaskBrokerDispatchOptions, ): Promise<{ taskId: string }> { @@ -164,10 +179,16 @@ export class StorageTaskBroker implements TaskBroker { }; } + /** + * @inheritdoc + */ async get(taskId: string): Promise { return this.storage.getTask(taskId); } + /** + * @inheritdoc + */ event$(options: { taskId: string; after?: number; @@ -197,6 +218,9 @@ export class StorageTaskBroker implements TaskBroker { }); } + /** + * @inheritdoc + */ async vacuumTasks(options: { timeoutS: number }): Promise { const { tasks } = await this.storage.listStaleTasks(options); await Promise.all( diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index cf073b551b..e7413b3a87 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -62,7 +62,10 @@ function isSupportedTemplate(entity: TemplateEntityV1beta3) { return entity.apiVersion === 'scaffolder.backstage.io/v1beta3'; } -/** @public */ +/** + * A method to create a router for the scaffolder backend plugin. + * @public + */ export async function createRouter( options: RouterOptions, ): Promise { From 169e00c4269d8f6ee31b11c9430cb71e98cabff6 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 15 Mar 2022 12:28:25 +0100 Subject: [PATCH 040/410] chore: fixing review comments Signed-off-by: blam --- .../src/scaffolder/tasks/StorageTaskBroker.ts | 10 +++++----- plugins/scaffolder-common/src/TaskSpec.ts | 6 +++--- plugins/scaffolder-common/src/TemplateEntityV1beta3.ts | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index a4ec429121..a92d6abdb8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -145,7 +145,7 @@ export class StorageTaskBroker implements TaskBroker { private deferredDispatch = defer(); /** - * @inheritdoc + * {@inheritdoc TaskBroker.claim} */ async claim(): Promise { for (;;) { @@ -167,7 +167,7 @@ export class StorageTaskBroker implements TaskBroker { } /** - * @inheritdoc + * {@inheritdoc TaskBroker.dispatch} */ async dispatch( options: TaskBrokerDispatchOptions, @@ -180,14 +180,14 @@ export class StorageTaskBroker implements TaskBroker { } /** - * @inheritdoc + * {@inheritdoc TaskBroker.get} */ async get(taskId: string): Promise { return this.storage.getTask(taskId); } /** - * @inheritdoc + * {@inheritdoc TaskBroker.event$} */ event$(options: { taskId: string; @@ -219,7 +219,7 @@ export class StorageTaskBroker implements TaskBroker { } /** - * @inheritdoc + * {@inheritdoc TaskBroker.vacuumTasks} */ async vacuumTasks(options: { timeoutS: number }): Promise { const { tasks } = await this.storage.listStaleTasks(options); diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index defca83096..e745964ff7 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -48,7 +48,7 @@ export interface TaskStep { */ name: string; /** - * The underlying action ID that will be called part of running this step. + * The underlying action ID that will be called as part of running this step. */ action: string; /** @@ -56,7 +56,7 @@ export interface TaskStep { */ input?: JsonObject; /** - * When this is false, or if the templated value string evaluates to something that is false the step will be skipped. + * When this is false, or if the templated value string evaluates to something that is falsy the step will be skipped. */ if?: string | boolean; } @@ -73,7 +73,7 @@ export interface TaskSpecV1beta3 { */ apiVersion: 'scaffolder.backstage.io/v1beta3'; /** - * This is a JSONSchema or an array of JSONSchema's which is used to render a form in the frontend + * This is a JSONSchema which is used to render a form in the frontend * to collect user input and validate it against that schema. This can then be used in the `steps` part below to template * variables passed from the user into each action in the template. */ diff --git a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts index 5e188cb09b..8ded484ee2 100644 --- a/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts +++ b/plugins/scaffolder-common/src/TemplateEntityV1beta3.ts @@ -67,7 +67,7 @@ export interface TemplateEntityV1beta3 extends Entity { */ output?: { [name: string]: string }; /** - * The owner of the TemplateEntity + * The owner entityRef of the TemplateEntity */ owner?: string; }; From b58c70c2234b8526f5e47b3baab67413c2fd1223 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 15 Mar 2022 14:20:03 +0100 Subject: [PATCH 041/410] v1 changeset Signed-off-by: Johan Haals --- .changeset/rich-mugs-dress.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .changeset/rich-mugs-dress.md diff --git a/.changeset/rich-mugs-dress.md b/.changeset/rich-mugs-dress.md new file mode 100644 index 0000000000..c427a78d55 --- /dev/null +++ b/.changeset/rich-mugs-dress.md @@ -0,0 +1,29 @@ +--- +'@backstage/app-defaults': major +'@backstage/catalog-client': major +'@backstage/catalog-model': major +'@backstage/config': major +'@backstage/config-loader': major +'@backstage/core-app-api': major +'@backstage/core-plugin-api': major +'@backstage/dev-utils': major +'@backstage/errors': major +'@backstage/integration': major +'@backstage/integration-react': major +'@backstage/test-utils': major +'@backstage/types': major +'@backstage/version-bridge': major +'@backstage/plugin-catalog': major +'@backstage/plugin-catalog-backend': major +'@backstage/plugin-catalog-common': major +'@backstage/plugin-catalog-react': major +'@backstage/plugin-scaffolder': major +'@backstage/plugin-scaffolder-backend': major +'@backstage/plugin-scaffolder-common': major +'@backstage/plugin-techdocs': major +'@backstage/plugin-techdocs-backend': major +'@backstage/plugin-techdocs-node': major +'@techdocs/cli': major +--- + +Promoted package to 1.0.0! See https://backstage.io/docs/overview/versioning-policy for how the bump to 1.0 affects these packages. From 132189e466dd4326ede84056c0e13bb046f87a21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 15 Mar 2022 15:06:35 +0100 Subject: [PATCH 042/410] catalog-model: make User spec.memberOf theoretically - but not practically - optional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/eighty-taxis-wash.md | 8 ++++++++ .changeset/strong-dolphins-turn.md | 14 ++++++++++++++ packages/catalog-model/api-report.md | 2 +- .../catalog-model/src/kinds/UserEntityV1alpha1.ts | 2 +- .../catalog-backend-module-github/src/lib/org.ts | 7 +++++-- .../catalog-backend-module-ldap/src/ldap/org.ts | 2 +- .../src/microsoftGraph/org.ts | 2 +- .../src/microsoftGraph/read.ts | 3 +++ .../Cards/OwnershipCard/OwnershipCard.tsx | 2 +- 9 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 .changeset/eighty-taxis-wash.md create mode 100644 .changeset/strong-dolphins-turn.md diff --git a/.changeset/eighty-taxis-wash.md b/.changeset/eighty-taxis-wash.md new file mode 100644 index 0000000000..c89e7c7dea --- /dev/null +++ b/.changeset/eighty-taxis-wash.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-ldap': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-org': patch +--- + +Updated the code to handle User kind `spec.memberOf` now being optional. diff --git a/.changeset/strong-dolphins-turn.md b/.changeset/strong-dolphins-turn.md new file mode 100644 index 0000000000..4c59accba6 --- /dev/null +++ b/.changeset/strong-dolphins-turn.md @@ -0,0 +1,14 @@ +--- +'@backstage/catalog-model': minor +--- + +**BREAKING**: The User kind has an updated TypeScript type where `spec.memberOf` +is optional. + +**NOTE HOWEVER**, that this only applies to the TypeScript types `UserEntity` +and `UserEntityV1alpha1`. The catalog validation still requires the field to be +set, even if it's in the form of an empty array. If you try to ingest data that +stops producing this field, those entities _will be rejected_ by the catalog. +The reason for these choices is that consumers will get a long grace period +where old code still can rely on the underlying data being present, giving users +ample time to update before actual breakages could happen. diff --git a/packages/catalog-model/api-report.md b/packages/catalog-model/api-report.md index 618c1f7b69..fca23d6ab9 100644 --- a/packages/catalog-model/api-report.md +++ b/packages/catalog-model/api-report.md @@ -447,7 +447,7 @@ interface UserEntityV1alpha1 extends Entity { email?: string; picture?: string; }; - memberOf: string[]; + memberOf?: string[]; }; } export { UserEntityV1alpha1 as UserEntity }; diff --git a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts index 82aaebd9d6..55c9b176ea 100644 --- a/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts +++ b/packages/catalog-model/src/kinds/UserEntityV1alpha1.ts @@ -32,7 +32,7 @@ export interface UserEntityV1alpha1 extends Entity { email?: string; picture?: string; }; - memberOf: string[]; + memberOf?: string[]; }; } diff --git a/plugins/catalog-backend-module-github/src/lib/org.ts b/plugins/catalog-backend-module-github/src/lib/org.ts index 3c71f350e6..79a96b5e71 100644 --- a/plugins/catalog-backend-module-github/src/lib/org.ts +++ b/plugins/catalog-backend-module-github/src/lib/org.ts @@ -58,7 +58,10 @@ export function assignGroupsToUsers( for (const [groupName, userNames] of groupMemberUsers.entries()) { for (const userName of userNames) { const user = usersByName.get(userName); - if (user && !user.spec.memberOf.includes(groupName)) { + if (user && !user.spec.memberOf?.includes(groupName)) { + if (!user.spec.memberOf) { + user.spec.memberOf = []; + } user.spec.memberOf.push(groupName); } } @@ -74,7 +77,7 @@ export function buildMemberOf(groups: GroupEntity[], users: UserEntity[]) { const transitiveMemberOf = new Set(); const todo = [ - ...user.spec.memberOf, + ...(user.spec.memberOf ?? []), ...groups .filter(g => g.spec.members?.includes(user.metadata.name)) .map(g => g.metadata.name), diff --git a/plugins/catalog-backend-module-ldap/src/ldap/org.ts b/plugins/catalog-backend-module-ldap/src/ldap/org.ts index fe59451a9d..28ccbd1d3b 100644 --- a/plugins/catalog-backend-module-ldap/src/ldap/org.ts +++ b/plugins/catalog-backend-module-ldap/src/ldap/org.ts @@ -61,7 +61,7 @@ export function buildMemberOf(groups: GroupEntity[], users: UserEntity[]) { const transitiveMemberOf = new Set(); const todo = [ - ...user.spec.memberOf, + ...(user.spec.memberOf ?? []), ...groups .filter(g => g.spec.members?.includes(user.metadata.name)) .map(g => g.metadata.name), diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.ts index fe59451a9d..28ccbd1d3b 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/org.ts @@ -61,7 +61,7 @@ export function buildMemberOf(groups: GroupEntity[], users: UserEntity[]) { const transitiveMemberOf = new Set(); const todo = [ - ...user.spec.memberOf, + ...(user.spec.memberOf ?? []), ...groups .filter(g => g.spec.members?.includes(user.metadata.name)) .map(g => g.metadata.name), diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts index 7174a6012c..e9760f7698 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts @@ -507,6 +507,9 @@ export function resolveRelations( retrieveItems(groupMemberOf, id).forEach(p => { const parentGroup = groupMap.get(p); if (parentGroup) { + if (!user.spec.memberOf) { + user.spec.memberOf = []; + } user.spec.memberOf.push(stringifyEntityRef(parentGroup)); } }); diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index 8635d0d7d4..fb49843e92 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -118,7 +118,7 @@ const getQueryParams = ( }; if (owner.kind === 'User') { const user = owner as UserEntity; - filters.owners = [...filters.owners, ...user.spec.memberOf]; + filters.owners = [...filters.owners, ...(user.spec.memberOf ?? [])]; } const queryParams = qs.stringify( { From cb383142e38b7faf79a5f5811db8bd707793f9fe Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Tue, 15 Mar 2022 15:35:46 +0100 Subject: [PATCH 043/410] Update .changeset/rich-mugs-dress.md Signed-off-by: Johan Haals Co-authored-by: Patrik Oldsberg --- .changeset/rich-mugs-dress.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/rich-mugs-dress.md b/.changeset/rich-mugs-dress.md index c427a78d55..585ffbdb1c 100644 --- a/.changeset/rich-mugs-dress.md +++ b/.changeset/rich-mugs-dress.md @@ -26,4 +26,4 @@ '@techdocs/cli': major --- -Promoted package to 1.0.0! See https://backstage.io/docs/overview/versioning-policy for how the bump to 1.0 affects these packages. +This package has been promoted to v1.0! To understand how this change affects the package, please check out our [versioning policy](https://backstage.io/docs/overview/versioning-policy). From 95f65c7842b8b2cd8a6148d388390532b75b2036 Mon Sep 17 00:00:00 2001 From: Vagner Guedes <33436562+vagnerguedes@users.noreply.github.com> Date: Thu, 3 Mar 2022 21:18:54 -0300 Subject: [PATCH 044/410] Add Via as a backstage adopter Add Via as a backstage adopter Signed-off-by: Vagner Guedes <33436562+vagnerguedes@users.noreply.github.com> --- ADOPTERS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 7882e91aaa..e00031589d 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -71,7 +71,7 @@ _If you're using Backstage in your organization, please try to add your company | [Signal Iduna Group](https://www.signal-iduna.de/) | [Jonas Thomsen](https://github.com/JoThomsen) | Developer Portal, documentation, monitoring, service catalog for our insurance ecosystem | | [Tradeshift](https://www.tradeshift.com/) | [Soren Mathiasen](https://github.com/sorenmat) | Developer Portal: documentation, monitoring, service templates, service catalog for our micro services | | [Unity](https://unity.com) | [Ted Cordery](https://github.com/TeddyBallGame) | A centralized service catalog with documentation for our service engineers. | -| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services through templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. | +| [PicPay](https://www.picpay.com) | [Luis Baroni](https://github.com/lcsbaroni), [Renata Poluceno](https://github.com/renatapoluceno), [PicPay](https://github.com/picpay) | Developer portal for building services through templates, service catalog with ownership of services, documentation and metrics providing autonomy and visibility for all. | | [Epic Games](https://www.epicgames.com) | [Brian Jung](https://github.com/brian-at-epic), [Jeff Goldian](https://github.com/jeffgoldian-Epic) | Developer Portal: Service Catalog, Documentation, Software Templates and more making our internal teams' lives easier! | | [Globo](https://globo.com) | [Carlos Gusmão](https://github.com/caeugusmao), [Guilherme Vierno](https://github.com/vierno), [Denis Aoki](https://github.com/dnsaoki2), [Maycon Dionisio](https://github.com/MayconDionisio), | Reduce the friction of accessing the information engineers need about Globo's digital services through a coherent and centralized experience. | | [QBE](https://www.qbe.com/) | [Daniel Steel](https://github.com/danielsteelqbe), [Pete Jespers](https://github.com/petejespersqbe) | Developer portal allowing our global teams to explore and create applications, documentation and cloud infrastructure easily and quickly 🚀 | @@ -104,4 +104,5 @@ _If you're using Backstage in your organization, please try to add your company | [Stilingue](https://www.stilingue.com.br/) | [@stilingue-inteligencia-artificial](https://github.com/Stilingue-IA), [@bbviana](https://github.com/bbviana) | Developer portal, services catalog and centralization of metrics from Grafana, Sentry and GCP. Furthermore, centralization of documentation and infra details like DNS, Network services, SSL and so on. | | [TUI Group](https://www.tuigroup.com/) | [Simon Stamm](https://github.com/simonstamm), [Christian Rudolph](https://github.com/ChrisRu82) | Developer portal for all engineer to provide discoverability to all internal components, APIs, documentation and to scaffold templates with integrations to our internal tools extended by plugins from our community. | | [Alliander](https://www.alliander.com/) | [@leon-vg](https://github.com/leon-vg), [@gieljl](https://github.com/gieljl), [@niekteg](https://github.com/niekteg) | Developer portal - software catalog, technical documentation, software templates, tech radar and exploration of used tools/services | +| [VIA](https://www.via.com.br) | [@vagnerguedes](https://github.com/vagnerguedes) | Centralized Developer Experience portal - Software catalog and documentation platform, software templates, techdocs, scaffolding, self-service infrastructure | | [Surevine](https://www.surevine.com/) | [@DJDANNY123](https://github.com/djdanny123) | Developer portal for software catalog, discovery and a view of the technologies we are using across the organisation, we are looking to explore how we can enrich our entities in Backstage by integrating a software bill of materials. | From 765639f98c550c2afb8f47d8f92dc140d213f38c Mon Sep 17 00:00:00 2001 From: Peiman Jafari Date: Tue, 15 Mar 2022 08:50:53 -0700 Subject: [PATCH 045/410] rebase Signed-off-by: Peiman Jafari --- .changeset/fuzzy-swans-remain.md | 6 + plugins/scaffolder-backend/api-report.md | 1 + .../actions/builtin/createBuiltinActions.ts | 5 + .../builtin/github/githubIssuesLabel.test.ts | 89 ++++++++++++++ .../builtin/github/githubIssuesLabel.ts | 110 ++++++++++++++++++ .../actions/builtin/github/index.ts | 1 + .../builtin/publish/githubPullRequest.test.ts | 13 ++- .../builtin/publish/githubPullRequest.ts | 11 +- 8 files changed, 231 insertions(+), 5 deletions(-) create mode 100644 .changeset/fuzzy-swans-remain.md create mode 100644 plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.test.ts create mode 100644 plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts diff --git a/.changeset/fuzzy-swans-remain.md b/.changeset/fuzzy-swans-remain.md new file mode 100644 index 0000000000..32fe21ffe7 --- /dev/null +++ b/.changeset/fuzzy-swans-remain.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +GitHub issues label action:'github:issues:label' for Backstage plugin Scaffolder has been added. +'pullRequestNumber' output has been added to 'publish:github:pull-request' action. diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index c0d3595503..cbc3cd1885 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -368,6 +368,7 @@ export interface OctokitWithPullRequestPluginClient { createPullRequest(options: createPullRequest.Options): Promise<{ data: { html_url: string; + number: number; }; } | null>; } diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts index 250a2b4b9e..93c5991ca9 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts @@ -45,6 +45,7 @@ import { import { createGithubActionsDispatchAction, createGithubWebhookAction, + createGithubIssuesLabelAction, } from './github'; import { TemplateFilter } from '../../../lib'; import { TemplateAction } from '../types'; @@ -145,6 +146,10 @@ export const createBuiltinActions = ( integrations, githubCredentialsProvider, }), + createGithubIssuesLabelAction({ + integrations, + githubCredentialsProvider, + }), ]; return actions as TemplateAction[]; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.test.ts new file mode 100644 index 0000000000..5518662e45 --- /dev/null +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.test.ts @@ -0,0 +1,89 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { createGithubIssuesLabelAction } from './githubIssuesLabel'; +import { + ScmIntegrations, + DefaultGithubCredentialsProvider, + GithubCredentialsProvider, +} from '@backstage/integration'; +import { ConfigReader } from '@backstage/config'; +import { getVoidLogger } from '@backstage/backend-common'; +import { PassThrough } from 'stream'; +import { TemplateAction } from '../..'; + +const mockOctokit = { + rest: { + issues: { + addLabels: jest.fn(), + }, + }, +}; +jest.mock('octokit', () => ({ + Octokit: class { + constructor() { + return mockOctokit; + } + }, +})); + +describe('github:issues:label', () => { + const config = new ConfigReader({ + integrations: { + github: [ + { host: 'github.com', token: 'tokenlols' }, + { host: 'ghe.github.com' }, + ], + }, + }); + + const integrations = ScmIntegrations.fromConfig(config); + let githubCredentialsProvider: GithubCredentialsProvider; + let action: TemplateAction; + + const mockContext = { + input: { + repoUrl: 'github.com?repo=repo&owner=owner', + number: '1', + labels: ['label1', 'label2'], + }, + workspacePath: 'lol', + logger: getVoidLogger(), + logStream: new PassThrough(), + output: jest.fn(), + createTemporaryDirectory: jest.fn(), + }; + + beforeEach(() => { + jest.resetAllMocks(); + githubCredentialsProvider = + DefaultGithubCredentialsProvider.fromIntegrations(integrations); + action = createGithubIssuesLabelAction({ + integrations, + githubCredentialsProvider, + }); + }); + + it('should call the githubApi for adding labels', async () => { + await action.handler(mockContext); + expect(mockOctokit.rest.issues.addLabels).toHaveBeenCalledWith({ + owner: 'owner', + repo: 'repo', + issue_number: '1', + labels: ['label1', 'label2'], + }); + }); +}); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts new file mode 100644 index 0000000000..2148298b49 --- /dev/null +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts @@ -0,0 +1,110 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + GithubCredentialsProvider, + ScmIntegrationRegistry, +} from '@backstage/integration'; +import { createTemplateAction } from '../../createTemplateAction'; +import { assertError, InputError } from '@backstage/errors'; +import { Octokit } from 'octokit'; +import { getOctokitOptions } from './helpers'; +import { parseRepoUrl } from '../publish/util'; + +/** + * Adds labels to a pull request or issue on GitHub + * @public + */ +export function createGithubIssuesLabelAction(options: { + integrations: ScmIntegrationRegistry; + defaultWebhookSecret?: string; + githubCredentialsProvider?: GithubCredentialsProvider; +}) { + const { integrations, githubCredentialsProvider } = options; + + return createTemplateAction<{ + repoUrl: string; + number: number; + labels: string[]; + token?: string; + }>({ + id: 'github:issues:label', + description: 'Adds labels to a pull request or issue on GitHub.', + schema: { + input: { + type: 'object', + required: ['repoUrl', 'number', 'labels'], + properties: { + repoUrl: { + title: 'Repository Location', + description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`, + type: 'string', + }, + number: { + title: 'Pull Request or issue number', + description: 'The pull request or issue number to add labels to', + type: 'integer', + }, + labels: { + title: 'Labels', + description: 'The labels to add to the pull request or issue', + type: 'array', + items: { + type: 'string', + }, + }, + token: { + title: 'Authentication Token', + type: 'string', + description: 'The GITHUB_TOKEN to use for authorization to GitHub', + }, + }, + }, + }, + async handler(ctx) { + const { repoUrl, number, labels, token: providedToken } = ctx.input; + + const { owner, repo } = parseRepoUrl(repoUrl, integrations); + ctx.logger.info(`Adding labels to ${number} issue on repo ${repo}`); + + if (!owner) { + throw new InputError('Invalid repository owner provided in repoUrl'); + } + + const client = new Octokit( + await getOctokitOptions({ + integrations, + credentialsProvider: githubCredentialsProvider, + repoUrl: repoUrl, + token: providedToken, + }), + ); + + try { + await client.rest.issues.addLabels({ + owner, + repo, + issue_number: number, + labels, + }); + } catch (e) { + assertError(e); + ctx.logger.warn( + `Failed: adding labels to issue: '${number}' on repo: '${repo}', ${e.message}`, + ); + } + }, + }); +} diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/index.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/index.ts index 07614e8a03..c5788afc3a 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/index.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/index.ts @@ -16,3 +16,4 @@ export { createGithubActionsDispatchAction } from './githubActionsDispatch'; export { createGithubWebhookAction } from './githubWebhook'; +export { createGithubIssuesLabelAction } from './githubIssuesLabel'; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.test.ts index 9956f16003..464498c0c4 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.test.ts @@ -58,6 +58,7 @@ describe('createPublishGithubPullRequestAction', () => { status: 201, data: { html_url: 'https://github.com/myorg/myrepo/pull/123', + number: 123, }, }; }), @@ -123,13 +124,14 @@ describe('createPublishGithubPullRequestAction', () => { }); }); - it('creates outputs for the url', async () => { + it('creates outputs for the pull request url and number', async () => { await instance.handler(ctx); expect(ctx.output).toHaveBeenCalledWith( 'remoteUrl', 'https://github.com/myorg/myrepo/pull/123', ); + expect(ctx.output).toHaveBeenCalledWith('pullRequestNumber', 123); }); afterEach(() => { mockFs.restore(); @@ -254,13 +256,14 @@ describe('createPublishGithubPullRequestAction', () => { }); }); - it('creates outputs for the url', async () => { + it('creates outputs for the pull request url and number', async () => { await instance.handler(ctx); expect(ctx.output).toHaveBeenCalledWith( 'remoteUrl', 'https://github.com/myorg/myrepo/pull/123', ); + expect(ctx.output).toHaveBeenCalledWith('pullRequestNumber', 123); }); afterEach(() => { mockFs.restore(); @@ -322,13 +325,14 @@ describe('createPublishGithubPullRequestAction', () => { }); }); - it('creates outputs for the url', async () => { + it('creates outputs for the pull request url and number', async () => { await instance.handler(ctx); expect(ctx.output).toHaveBeenCalledWith( 'remoteUrl', 'https://github.com/myorg/myrepo/pull/123', ); + expect(ctx.output).toHaveBeenCalledWith('pullRequestNumber', 123); }); afterEach(() => { mockFs.restore(); @@ -390,13 +394,14 @@ describe('createPublishGithubPullRequestAction', () => { }); }); - it('creates outputs for the url', async () => { + it('creates outputs for the pull request url and number', async () => { await instance.handler(ctx); expect(ctx.output).toHaveBeenCalledWith( 'remoteUrl', 'https://github.com/myorg/myrepo/pull/123', ); + expect(ctx.output).toHaveBeenCalledWith('pullRequestNumber', 123); }); afterEach(() => { mockFs.restore(); diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts index d46457ee1b..30293f2654 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/githubPullRequest.ts @@ -37,7 +37,10 @@ class GithubResponseError extends CustomErrorBase {} /** @public */ export interface OctokitWithPullRequestPluginClient { createPullRequest(options: createPullRequest.Options): Promise<{ - data: { html_url: string }; + data: { + html_url: string; + number: number; + }; } | null>; } @@ -169,6 +172,11 @@ export const createPublishGithubPullRequestAction = ({ title: 'Pull Request URL', description: 'Link to the pull request in Github', }, + pullRequestNumber: { + type: 'number', + title: 'Pull Request Number', + description: 'The pull request number', + }, }, }, }, @@ -263,6 +271,7 @@ export const createPublishGithubPullRequestAction = ({ } ctx.output('remoteUrl', response.data.html_url); + ctx.output('pullRequestNumber', response.data.number); } catch (e) { throw new GithubResponseError('Pull request creation failed', e); } From 063567a886dde4ffb34fa8d82cf8513ef6b77f73 Mon Sep 17 00:00:00 2001 From: Peiman Jafari Date: Mon, 14 Mar 2022 09:57:18 -0700 Subject: [PATCH 046/410] integer to number Signed-off-by: Peiman Jafari --- .../src/scaffolder/actions/builtin/github/githubIssuesLabel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts index 2148298b49..c37d402231 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts @@ -55,7 +55,7 @@ export function createGithubIssuesLabelAction(options: { number: { title: 'Pull Request or issue number', description: 'The pull request or issue number to add labels to', - type: 'integer', + type: 'number', }, labels: { title: 'Labels', From b83a019035fa6e5eeeab04ee61b705503ad7a7f5 Mon Sep 17 00:00:00 2001 From: Peiman Jafari Date: Tue, 15 Mar 2022 08:48:50 -0700 Subject: [PATCH 047/410] update changeset Signed-off-by: Peiman Jafari --- .changeset/fuzzy-swans-remain.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.changeset/fuzzy-swans-remain.md b/.changeset/fuzzy-swans-remain.md index 32fe21ffe7..0446470307 100644 --- a/.changeset/fuzzy-swans-remain.md +++ b/.changeset/fuzzy-swans-remain.md @@ -2,5 +2,4 @@ '@backstage/plugin-scaffolder-backend': patch --- -GitHub issues label action:'github:issues:label' for Backstage plugin Scaffolder has been added. -'pullRequestNumber' output has been added to 'publish:github:pull-request' action. +Added new `github:issues:label` action to apply labels to issues, and also output `pullRequestNumber` from `publish:github:pull-request`. From b724b860482471be19c02c2302db4a96ed712057 Mon Sep 17 00:00:00 2001 From: Peiman Jafari Date: Tue, 15 Mar 2022 09:00:18 -0700 Subject: [PATCH 048/410] update Signed-off-by: Peiman Jafari --- plugins/scaffolder-backend/api-report.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index cbc3cd1885..c394869c75 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -137,6 +137,18 @@ export function createGithubActionsDispatchAction(options: { token?: string | undefined; }>; +// @public +export function createGithubIssuesLabelAction(options: { + integrations: ScmIntegrationRegistry; + defaultWebhookSecret?: string; + githubCredentialsProvider?: GithubCredentialsProvider; +}): TemplateAction<{ + repoUrl: string; + number: number; + labels: string[]; + token?: string | undefined; +}>; + // @public export interface CreateGithubPullRequestActionOptions { clientFactory?: ( From e5360b6751a140c6660fbb060b42e3ad7aab808d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 12 Mar 2022 10:12:32 +0100 Subject: [PATCH 049/410] scaffolder-backend: inline octokit mocks Signed-off-by: Patrik Oldsberg --- .../src/scaffolder/__mocks__/octokit/index.ts | 42 ------ .../github/githubActionsDispatch.test.ts | 26 +++- .../builtin/github/githubWebhook.test.ts | 33 +++-- .../actions/builtin/publish/github.test.ts | 121 ++++++++++-------- 4 files changed, 112 insertions(+), 110 deletions(-) delete mode 100644 plugins/scaffolder-backend/src/scaffolder/__mocks__/octokit/index.ts diff --git a/plugins/scaffolder-backend/src/scaffolder/__mocks__/octokit/index.ts b/plugins/scaffolder-backend/src/scaffolder/__mocks__/octokit/index.ts deleted file mode 100644 index de320ef498..0000000000 --- a/plugins/scaffolder-backend/src/scaffolder/__mocks__/octokit/index.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export const mockGithubClient = { - rest: { - actions: { - createWorkflowDispatch: jest.fn(), - }, - repos: { - createInOrg: jest.fn(), - createForAuthenticatedUser: jest.fn(), - createWebhook: jest.fn(), - addCollaborator: jest.fn(), - replaceAllTopics: jest.fn(), - }, - users: { - getByUsername: jest.fn(), - }, - teams: { - addOrUpdateRepoPermissionsInOrg: jest.fn(), - }, - }, -}; - -export class Octokit { - constructor() { - return mockGithubClient; - } -} diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubActionsDispatch.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubActionsDispatch.test.ts index 7850163e9d..0782ea40cd 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubActionsDispatch.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubActionsDispatch.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -jest.mock('octokit'); import { TemplateAction } from '../../types'; import { createGithubActionsDispatchAction } from './githubActionsDispatch'; @@ -27,6 +26,21 @@ import { ConfigReader } from '@backstage/config'; import { getVoidLogger } from '@backstage/backend-common'; import { PassThrough } from 'stream'; +const mockOctokit = { + rest: { + actions: { + createWorkflowDispatch: jest.fn(), + }, + }, +}; +jest.mock('octokit', () => ({ + Octokit: class { + constructor() { + return mockOctokit; + } + }, +})); + describe('github:actions:dispatch', () => { const config = new ConfigReader({ integrations: { @@ -54,8 +68,6 @@ describe('github:actions:dispatch', () => { createTemporaryDirectory: jest.fn(), }; - const { mockGithubClient } = require('octokit'); - beforeEach(() => { jest.resetAllMocks(); githubCredentialsProvider = @@ -67,7 +79,7 @@ describe('github:actions:dispatch', () => { }); it('should call the githubApis for creating WorkflowDispatch without an input object', async () => { - mockGithubClient.rest.actions.createWorkflowDispatch.mockResolvedValue({ + mockOctokit.rest.actions.createWorkflowDispatch.mockResolvedValue({ data: { foo: 'bar', }, @@ -82,7 +94,7 @@ describe('github:actions:dispatch', () => { await action.handler(ctx); expect( - mockGithubClient.rest.actions.createWorkflowDispatch, + mockOctokit.rest.actions.createWorkflowDispatch, ).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', @@ -92,7 +104,7 @@ describe('github:actions:dispatch', () => { }); it('should call the githubApis for creating WorkflowDispatch with an input object', async () => { - mockGithubClient.rest.actions.createWorkflowDispatch.mockResolvedValue({ + mockOctokit.rest.actions.createWorkflowDispatch.mockResolvedValue({ data: { foo: 'bar', }, @@ -108,7 +120,7 @@ describe('github:actions:dispatch', () => { await action.handler(ctx); expect( - mockGithubClient.rest.actions.createWorkflowDispatch, + mockOctokit.rest.actions.createWorkflowDispatch, ).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.test.ts index b80691fdcc..0798b04a93 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubWebhook.test.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -jest.mock('octokit'); - import { createGithubWebhookAction } from './githubWebhook'; import { ScmIntegrations, @@ -27,6 +25,21 @@ import { getVoidLogger } from '@backstage/backend-common'; import { PassThrough } from 'stream'; import { TemplateAction } from '../..'; +const mockOctokit = { + rest: { + repos: { + createWebhook: jest.fn(), + }, + }, +}; +jest.mock('octokit', () => ({ + Octokit: class { + constructor() { + return mockOctokit; + } + }, +})); + describe('github:repository:webhook:create', () => { const config = new ConfigReader({ integrations: { @@ -65,8 +78,6 @@ describe('github:repository:webhook:create', () => { createTemporaryDirectory: jest.fn(), }; - const { mockGithubClient } = require('octokit'); - it('should call the githubApi for creating repository Webhook', async () => { const repoUrl = 'github.com?repo=repo&owner=owner'; const webhookUrl = 'https://example.com/payload'; @@ -75,7 +86,7 @@ describe('github:repository:webhook:create', () => { }); await action.handler(ctx); - expect(mockGithubClient.rest.repos.createWebhook).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createWebhook).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', events: ['push'], @@ -97,7 +108,7 @@ describe('github:repository:webhook:create', () => { }, }); - expect(mockGithubClient.rest.repos.createWebhook).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createWebhook).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', events: ['push'], @@ -118,7 +129,7 @@ describe('github:repository:webhook:create', () => { }, }); - expect(mockGithubClient.rest.repos.createWebhook).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createWebhook).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', events: ['push', 'pull_request'], @@ -139,7 +150,7 @@ describe('github:repository:webhook:create', () => { }, }); - expect(mockGithubClient.rest.repos.createWebhook).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createWebhook).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', events: ['push'], @@ -160,7 +171,7 @@ describe('github:repository:webhook:create', () => { }, }); - expect(mockGithubClient.rest.repos.createWebhook).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createWebhook).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', events: ['push'], @@ -181,7 +192,7 @@ describe('github:repository:webhook:create', () => { }, }); - expect(mockGithubClient.rest.repos.createWebhook).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createWebhook).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', events: ['push'], @@ -202,7 +213,7 @@ describe('github:repository:webhook:create', () => { }, }); - expect(mockGithubClient.rest.repos.createWebhook).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createWebhook).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', events: ['push'], diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts index ec564e93dc..4e835657a3 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts @@ -17,7 +17,6 @@ import { TemplateAction } from '../../types'; jest.mock('../helpers'); -jest.mock('octokit'); import { createPublishGithubAction } from './github'; import { @@ -34,6 +33,30 @@ import { } from '../helpers'; import { when } from 'jest-when'; +const mockOctokit = { + rest: { + users: { + getByUsername: jest.fn(), + }, + repos: { + addCollaborator: jest.fn(), + createInOrg: jest.fn(), + createForAuthenticatedUser: jest.fn(), + replaceAllTopics: jest.fn(), + }, + teams: { + addOrUpdateRepoPermissionsInOrg: jest.fn(), + }, + }, +}; +jest.mock('octokit', () => ({ + Octokit: class { + constructor() { + return mockOctokit; + } + }, +})); + describe('publish:github', () => { const config = new ConfigReader({ integrations: { @@ -62,8 +85,6 @@ describe('publish:github', () => { createTemporaryDirectory: jest.fn(), }; - const { mockGithubClient } = require('octokit'); - beforeEach(() => { jest.resetAllMocks(); githubCredentialsProvider = @@ -76,14 +97,14 @@ describe('publish:github', () => { }); it('should call the githubApis with the correct values for createInOrg', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'Organization' }, }); - mockGithubClient.rest.repos.createInOrg.mockResolvedValue({ data: {} }); + mockOctokit.rest.repos.createInOrg.mockResolvedValue({ data: {} }); await action.handler(mockContext); - expect(mockGithubClient.rest.repos.createInOrg).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createInOrg).toHaveBeenCalledWith({ description: 'description', name: 'repo', org: 'owner', @@ -102,7 +123,7 @@ describe('publish:github', () => { repoVisibility: 'public', }, }); - expect(mockGithubClient.rest.repos.createInOrg).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.createInOrg).toHaveBeenCalledWith({ description: 'description', name: 'repo', org: 'owner', @@ -116,17 +137,17 @@ describe('publish:github', () => { }); it('should call the githubApis with the correct values for createForAuthenticatedUser', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: {}, }); await action.handler(mockContext); expect( - mockGithubClient.rest.repos.createForAuthenticatedUser, + mockOctokit.rest.repos.createForAuthenticatedUser, ).toHaveBeenCalledWith({ description: 'description', name: 'repo', @@ -145,7 +166,7 @@ describe('publish:github', () => { }, }); expect( - mockGithubClient.rest.repos.createForAuthenticatedUser, + mockOctokit.rest.repos.createForAuthenticatedUser, ).toHaveBeenCalledWith({ description: 'description', name: 'repo', @@ -158,11 +179,11 @@ describe('publish:github', () => { }); it('should call initRepoAndPush with the correct values', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -182,11 +203,11 @@ describe('publish:github', () => { }); it('should call initRepoAndPush with the correct defaultBranch main', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -235,11 +256,11 @@ describe('publish:github', () => { githubCredentialsProvider, }); - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -279,11 +300,11 @@ describe('publish:github', () => { githubCredentialsProvider, }); - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -304,11 +325,11 @@ describe('publish:github', () => { }); it('should add access for the team when it starts with the owner', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -318,7 +339,7 @@ describe('publish:github', () => { await action.handler(mockContext); expect( - mockGithubClient.rest.teams.addOrUpdateRepoPermissionsInOrg, + mockOctokit.rest.teams.addOrUpdateRepoPermissionsInOrg, ).toHaveBeenCalledWith({ org: 'owner', team_slug: 'blam', @@ -329,11 +350,11 @@ describe('publish:github', () => { }); it('should add outside collaborators when provided', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -348,7 +369,7 @@ describe('publish:github', () => { }, }); - expect(mockGithubClient.rest.repos.addCollaborator).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.addCollaborator).toHaveBeenCalledWith({ username: 'outsidecollaborator', owner: 'owner', repo: 'repo', @@ -357,11 +378,11 @@ describe('publish:github', () => { }); it('should add multiple collaborators when provided', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -392,7 +413,7 @@ describe('publish:github', () => { }; expect( - mockGithubClient.rest.teams.addOrUpdateRepoPermissionsInOrg.mock.calls[1], + mockOctokit.rest.teams.addOrUpdateRepoPermissionsInOrg.mock.calls[1], ).toEqual([ { ...commonProperties, @@ -402,7 +423,7 @@ describe('publish:github', () => { ]); expect( - mockGithubClient.rest.teams.addOrUpdateRepoPermissionsInOrg.mock.calls[2], + mockOctokit.rest.teams.addOrUpdateRepoPermissionsInOrg.mock.calls[2], ).toEqual([ { ...commonProperties, @@ -413,18 +434,18 @@ describe('publish:github', () => { }); it('should ignore failures when adding multiple collaborators', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', }, }); - when(mockGithubClient.rest.teams.addOrUpdateRepoPermissionsInOrg) + when(mockOctokit.rest.teams.addOrUpdateRepoPermissionsInOrg) .calledWith({ org: 'owner', owner: 'owner', @@ -452,7 +473,7 @@ describe('publish:github', () => { }); expect( - mockGithubClient.rest.teams.addOrUpdateRepoPermissionsInOrg.mock.calls[2], + mockOctokit.rest.teams.addOrUpdateRepoPermissionsInOrg.mock.calls[2], ).toEqual([ { org: 'owner', @@ -465,18 +486,18 @@ describe('publish:github', () => { }); it('should add topics when provided', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', }, }); - mockGithubClient.rest.repos.replaceAllTopics.mockResolvedValue({ + mockOctokit.rest.repos.replaceAllTopics.mockResolvedValue({ data: { names: ['node.js'], }, @@ -490,7 +511,7 @@ describe('publish:github', () => { }, }); - expect(mockGithubClient.rest.repos.replaceAllTopics).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.replaceAllTopics).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', names: ['node.js'], @@ -498,18 +519,18 @@ describe('publish:github', () => { }); it('should lowercase topics when provided', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', }, }); - mockGithubClient.rest.repos.replaceAllTopics.mockResolvedValue({ + mockOctokit.rest.repos.replaceAllTopics.mockResolvedValue({ data: { names: ['backstage'], }, @@ -523,7 +544,7 @@ describe('publish:github', () => { }, }); - expect(mockGithubClient.rest.repos.replaceAllTopics).toHaveBeenCalledWith({ + expect(mockOctokit.rest.repos.replaceAllTopics).toHaveBeenCalledWith({ owner: 'owner', repo: 'repo', names: ['backstage'], @@ -531,11 +552,11 @@ describe('publish:github', () => { }); it('should call output with the remoteUrl and the repoContentsUrl', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -555,11 +576,11 @@ describe('publish:github', () => { }); it('should use main as default branch', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { clone_url: 'https://github.com/clone/url.git', html_url: 'https://github.com/html/url', @@ -585,11 +606,11 @@ describe('publish:github', () => { }); it('should call enableBranchProtectionOnDefaultRepoBranch with the correct values of requireCodeOwnerReviews', async () => { - mockGithubClient.rest.users.getByUsername.mockResolvedValue({ + mockOctokit.rest.users.getByUsername.mockResolvedValue({ data: { type: 'User' }, }); - mockGithubClient.rest.repos.createForAuthenticatedUser.mockResolvedValue({ + mockOctokit.rest.repos.createForAuthenticatedUser.mockResolvedValue({ data: { name: 'repository', }, @@ -599,7 +620,7 @@ describe('publish:github', () => { expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ owner: 'owner', - client: mockGithubClient, + client: mockOctokit, repoName: 'repository', logger: mockContext.logger, defaultBranch: 'master', @@ -616,7 +637,7 @@ describe('publish:github', () => { expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ owner: 'owner', - client: mockGithubClient, + client: mockOctokit, repoName: 'repository', logger: mockContext.logger, defaultBranch: 'master', @@ -633,7 +654,7 @@ describe('publish:github', () => { expect(enableBranchProtectionOnDefaultRepoBranch).toHaveBeenCalledWith({ owner: 'owner', - client: mockGithubClient, + client: mockOctokit, repoName: 'repository', logger: mockContext.logger, defaultBranch: 'master', From df69c9e627e11d5c9bc766180ac73763d7ef1fd9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 12 Mar 2022 10:14:07 +0100 Subject: [PATCH 050/410] scaffolder-backend: removed unused nodegit mock Signed-off-by: Patrik Oldsberg --- .../src/scaffolder/__mocks__/nodegit/index.ts | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 plugins/scaffolder-backend/src/scaffolder/__mocks__/nodegit/index.ts diff --git a/plugins/scaffolder-backend/src/scaffolder/__mocks__/nodegit/index.ts b/plugins/scaffolder-backend/src/scaffolder/__mocks__/nodegit/index.ts deleted file mode 100644 index 79a32c3050..0000000000 --- a/plugins/scaffolder-backend/src/scaffolder/__mocks__/nodegit/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export const mockIndex = { - addAll: jest.fn(), - write: jest.fn(), - writeTree: jest.fn().mockResolvedValue('mockoid'), -}; - -export const mockRepo = { - refreshIndex: jest.fn().mockResolvedValue(mockIndex), - createCommit: jest.fn(), -}; - -export const mockRemote = { - push: jest.fn(), -}; - -const Repository = { init: jest.fn().mockResolvedValue(mockRepo) }; -const Remote = { create: jest.fn().mockResolvedValue(mockRemote) }; -const Signature = { now: jest.fn() }; -const Cred = { - userpassPlaintextNew: jest.fn(), -}; - -export { Repository, Remote, Signature, Cred }; From baf3dcccd05352b4ee054309f2bd2de3543a47de Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 12 Mar 2022 10:18:08 +0100 Subject: [PATCH 051/410] scaffolder-backend: removed unused azure-devops-node-api mock Signed-off-by: Patrik Oldsberg --- .../azure-devops-node-api/GitApi/index.ts | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 plugins/scaffolder-backend/src/scaffolder/__mocks__/azure-devops-node-api/GitApi/index.ts diff --git a/plugins/scaffolder-backend/src/scaffolder/__mocks__/azure-devops-node-api/GitApi/index.ts b/plugins/scaffolder-backend/src/scaffolder/__mocks__/azure-devops-node-api/GitApi/index.ts deleted file mode 100644 index 6b6e313cae..0000000000 --- a/plugins/scaffolder-backend/src/scaffolder/__mocks__/azure-devops-node-api/GitApi/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export const mockGitApi = { - createRepository: jest.fn(), -}; - -export class GitApi { - constructor() { - return mockGitApi; - } -} From 118acbb71b8b2b61e652510bd270052a7b20dc7b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 12 Mar 2022 10:24:46 +0100 Subject: [PATCH 052/410] scaffolder-backend: inline @gitbeaker/node mock Signed-off-by: Patrik Oldsberg --- .../__mocks__/@gitbeaker/node/index.ts | 33 ------------------- .../actions/builtin/publish/gitlab.test.ts | 22 +++++++++++-- 2 files changed, 19 insertions(+), 36 deletions(-) delete mode 100644 plugins/scaffolder-backend/src/scaffolder/__mocks__/@gitbeaker/node/index.ts diff --git a/plugins/scaffolder-backend/src/scaffolder/__mocks__/@gitbeaker/node/index.ts b/plugins/scaffolder-backend/src/scaffolder/__mocks__/@gitbeaker/node/index.ts deleted file mode 100644 index 7166dc0f63..0000000000 --- a/plugins/scaffolder-backend/src/scaffolder/__mocks__/@gitbeaker/node/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export const mockGitlabClient = { - Namespaces: { - show: jest.fn(), - }, - Projects: { - create: jest.fn(), - }, - Users: { - current: jest.fn(), - }, -}; - -export class Gitlab { - constructor() { - return mockGitlabClient; - } -} diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts index db4ad5a019..ed8df4e5e8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/gitlab.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ jest.mock('../helpers'); -jest.mock('@gitbeaker/node'); import { createPublishGitlabAction } from './gitlab'; import { ScmIntegrations } from '@backstage/integration'; @@ -23,6 +22,25 @@ import { getVoidLogger } from '@backstage/backend-common'; import { PassThrough } from 'stream'; import { initRepoAndPush } from '../helpers'; +const mockGitlabClient = { + Namespaces: { + show: jest.fn(), + }, + Projects: { + create: jest.fn(), + }, + Users: { + current: jest.fn(), + }, +}; +jest.mock('@gitbeaker/node', () => ({ + Gitlab: class { + constructor() { + return mockGitlabClient; + } + }, +})); + describe('publish:gitlab', () => { const config = new ConfigReader({ integrations: { @@ -54,8 +72,6 @@ describe('publish:gitlab', () => { createTemporaryDirectory: jest.fn(), }; - const { mockGitlabClient } = require('@gitbeaker/node'); - beforeEach(() => { jest.resetAllMocks(); }); From d25346be782a65578fe1ee8976a30bbbe8fdf470 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 12 Mar 2022 10:35:32 +0100 Subject: [PATCH 053/410] techdocs-node: inline aws-s3 mock Signed-off-by: Patrik Oldsberg --- plugins/techdocs-node/__mocks__/aws-sdk.ts | 114 ------------------ .../src/stages/publish/awsS3.test.ts | 110 ++++++++++++++++- .../src/testUtils/StorageFilesMock.ts | 11 +- 3 files changed, 111 insertions(+), 124 deletions(-) delete mode 100644 plugins/techdocs-node/__mocks__/aws-sdk.ts diff --git a/plugins/techdocs-node/__mocks__/aws-sdk.ts b/plugins/techdocs-node/__mocks__/aws-sdk.ts deleted file mode 100644 index ebb3c6840b..0000000000 --- a/plugins/techdocs-node/__mocks__/aws-sdk.ts +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { EventEmitter } from 'events'; -import { ReadStream } from 'fs'; -import { IStorageFilesMock } from '../src/testUtils/types'; - -export { Credentials } from 'aws-sdk'; - -const storage = global.storageFilesMock as IStorageFilesMock; - -export class S3 { - constructor() { - storage.emptyFiles(); - } - - headObject({ Key }: { Key: string }) { - return { - promise: async () => { - if (!storage.fileExists(Key)) { - throw new Error('File does not exist'); - } - }, - }; - } - - getObject({ Key }: { Key: string }) { - return { - promise: async () => storage.fileExists(Key), - createReadStream: () => { - const emitter = new EventEmitter(); - process.nextTick(() => { - if (storage.fileExists(Key)) { - emitter.emit('data', Buffer.from(storage.readFile(Key))); - emitter.emit('end'); - } else { - emitter.emit('error', new Error(`The file ${Key} does not exist!`)); - } - }); - return emitter; - }, - }; - } - - headBucket({ Bucket }) { - return { - promise: async () => { - if (Bucket === 'errorBucket') { - throw new Error('Bucket does not exist'); - } - return {}; - }, - }; - } - - upload({ Key, Body }: { Key: string; Body: ReadStream }) { - return { - promise: () => - new Promise(async resolve => { - const chunks = []; - Body.on('data', chunk => { - chunks.push(chunk); - }); - Body.once('end', () => { - storage.writeFile(Key, Buffer.concat(chunks)); - resolve(null); - }); - }), - }; - } - - listObjectsV2({ Bucket }) { - return { - promise: () => { - if ( - Bucket === 'delete_stale_files_success' || - Bucket === 'delete_stale_files_error' - ) { - return Promise.resolve({ - Contents: [{ Key: 'stale_file.png' }], - }); - } - return Promise.resolve({}); - }, - }; - } - - deleteObject({ Bucket }) { - return { - promise: () => { - if (Bucket === 'delete_stale_files_error') { - throw new Error('Message'); - } - return Promise.resolve(); - }, - }; - } -} - -export default { - S3, -}; diff --git a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts index 537fc52b27..6372093c4b 100644 --- a/plugins/techdocs-node/src/stages/publish/awsS3.test.ts +++ b/plugins/techdocs-node/src/stages/publish/awsS3.test.ts @@ -21,12 +21,112 @@ import express from 'express'; import request from 'supertest'; import mockFs from 'mock-fs'; import path from 'path'; -import fs from 'fs-extra'; +import fs, { ReadStream } from 'fs-extra'; +import { EventEmitter } from 'events'; import { AwsS3Publish } from './awsS3'; +import { storageRootDir } from '../../testUtils/StorageFilesMock'; -// NOTE: /plugins/techdocs-node/__mocks__ is being used to mock aws-sdk client library +jest.mock('aws-sdk', () => { + const { StorageFilesMock } = require('../../testUtils/StorageFilesMock'); + const storage = new StorageFilesMock(); -const rootDir = (global as any).rootDir; // Set by setupTests.ts + return { + __esModule: true, + Credentials: jest.requireActual('aws-sdk').Credentials, + default: { + S3: class { + constructor() { + storage.emptyFiles(); + } + + headObject({ Key }: { Key: string }) { + return { + promise: async () => { + if (!storage.fileExists(Key)) { + throw new Error('File does not exist'); + } + }, + }; + } + + getObject({ Key }: { Key: string }) { + return { + promise: async () => storage.fileExists(Key), + createReadStream: () => { + const emitter = new EventEmitter(); + process.nextTick(() => { + if (storage.fileExists(Key)) { + emitter.emit('data', Buffer.from(storage.readFile(Key))); + emitter.emit('end'); + } else { + emitter.emit( + 'error', + new Error(`The file ${Key} does not exist!`), + ); + } + }); + return emitter; + }, + }; + } + + headBucket({ Bucket }: { Bucket: string }) { + return { + promise: async () => { + if (Bucket === 'errorBucket') { + throw new Error('Bucket does not exist'); + } + return {}; + }, + }; + } + + upload({ Key, Body }: { Key: string; Body: ReadStream }) { + return { + promise: () => + new Promise(async resolve => { + const chunks = new Array(); + Body.on('data', chunk => { + chunks.push(chunk as Buffer); + }); + Body.once('end', () => { + storage.writeFile(Key, Buffer.concat(chunks)); + resolve(null); + }); + }), + }; + } + + listObjectsV2({ Bucket }: { Bucket: string }) { + return { + promise: () => { + if ( + Bucket === 'delete_stale_files_success' || + Bucket === 'delete_stale_files_error' + ) { + return Promise.resolve({ + Contents: [{ Key: 'stale_file.png' }], + }); + } + return Promise.resolve({}); + }, + }; + } + + deleteObject({ Bucket }: { Bucket: string }) { + return { + promise: () => { + if (Bucket === 'delete_stale_files_error') { + throw new Error('Message'); + } + return Promise.resolve(); + }, + }; + } + }, + }, + }; +}); const getEntityRootDir = (entity: Entity) => { const { @@ -34,7 +134,7 @@ const getEntityRootDir = (entity: Entity) => { metadata: { namespace, name }, } = entity; - return path.join(rootDir, namespace || DEFAULT_NAMESPACE, kind, name); + return path.join(storageRootDir, namespace || DEFAULT_NAMESPACE, kind, name); }; const logger = getVoidLogger(); @@ -213,7 +313,7 @@ describe('AwsS3Publish', () => { it('should fail to publish a directory', async () => { const wrongPathToGeneratedDirectory = path.join( - rootDir, + storageRootDir, 'wrong', 'path', 'to', diff --git a/plugins/techdocs-node/src/testUtils/StorageFilesMock.ts b/plugins/techdocs-node/src/testUtils/StorageFilesMock.ts index 4a0e183bdb..dd28110d00 100644 --- a/plugins/techdocs-node/src/testUtils/StorageFilesMock.ts +++ b/plugins/techdocs-node/src/testUtils/StorageFilesMock.ts @@ -19,12 +19,13 @@ import path from 'path'; import fs from 'fs-extra'; import { IStorageFilesMock } from './types'; -const rootDir: string = os.platform() === 'win32' ? 'C:\\rootDir' : '/rootDir'; +export const storageRootDir: string = + os.platform() === 'win32' ? 'C:\\rootDir' : '/rootDir'; const encoding = 'utf8'; export class StorageFilesMock implements IStorageFilesMock { - static rootDir = rootDir; + static rootDir = storageRootDir; private files: Record; @@ -37,20 +38,20 @@ export class StorageFilesMock implements IStorageFilesMock { } public fileExists(targetPath: string): boolean { - const filePath = path.join(rootDir, targetPath); + const filePath = path.join(storageRootDir, targetPath); const posixPath = filePath.split(path.posix.sep).join(path.sep); return this.files[posixPath] !== undefined; } public readFile(targetPath: string): Buffer { - const filePath = path.join(rootDir, targetPath); + const filePath = path.join(storageRootDir, targetPath); return Buffer.from(this.files[filePath] ?? '', encoding); } public writeFile(targetPath: string, sourcePath: string): void; public writeFile(targetPath: string, sourceBuffer: Buffer): void; public writeFile(targetPath: string, source: string | Buffer): void { - const filePath = path.join(rootDir, targetPath); + const filePath = path.join(storageRootDir, targetPath); if (typeof source === 'string') { this.files[filePath] = fs.readFileSync(source).toString(encoding); } else { From f81513197b05985d8d14d588f5ba26b00ebcd588 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 12 Mar 2022 18:26:37 +0100 Subject: [PATCH 054/410] techdocs-node: inline swift sdk mock Signed-off-by: Patrik Oldsberg --- .../@trendyol-js/openstack-swift-sdk.ts | 103 ----------------- .../src/stages/publish/openStackSwift.test.ts | 104 +++++++++++++++++- 2 files changed, 98 insertions(+), 109 deletions(-) delete mode 100644 plugins/techdocs-node/__mocks__/@trendyol-js/openstack-swift-sdk.ts diff --git a/plugins/techdocs-node/__mocks__/@trendyol-js/openstack-swift-sdk.ts b/plugins/techdocs-node/__mocks__/@trendyol-js/openstack-swift-sdk.ts deleted file mode 100644 index 0f11950a66..0000000000 --- a/plugins/techdocs-node/__mocks__/@trendyol-js/openstack-swift-sdk.ts +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import fs from 'fs-extra'; -import os from 'os'; -import path from 'path'; -import { - ContainerMetaResponse, - DownloadResponse, - NotFound, - ObjectMetaResponse, - UploadResponse, -} from '@trendyol-js/openstack-swift-sdk'; -import { Stream, Readable } from 'stream'; - -const rootDir = os.platform() === 'win32' ? 'C:\\rootDir' : '/rootDir'; - -const checkFileExists = async (Key: string): Promise => { - // Key will always have / as file separator irrespective of OS since cloud providers expects /. - // Normalize Key to OS specific path before checking if file exists. - const filePath = path.join(rootDir, Key); - - try { - await fs.access(filePath, fs.constants.F_OK); - return true; - } catch (err) { - return false; - } -}; - -const streamToBuffer = (stream: Stream | Readable): Promise => { - return new Promise((resolve, reject) => { - try { - const chunks: any[] = []; - stream.on('data', chunk => chunks.push(chunk)); - stream.on('error', reject); - stream.on('end', () => resolve(Buffer.concat(chunks))); - } catch (e) { - throw new Error(`Unable to parse the response data ${e.message}`); - } - }); -}; - -export class SwiftClient { - async getMetadata(_containerName: string, file: string) { - const fileExists = await checkFileExists(file); - if (fileExists) { - return new ObjectMetaResponse({ - fullPath: file, - }); - } - return new NotFound(); - } - - async getContainerMetadata(containerName: string) { - if (containerName === 'mock') { - return new ContainerMetaResponse({ - size: 10, - }); - } - return new NotFound(); - } - - async upload(_containerName: string, destination: string, stream: Readable) { - try { - const filePath = path.join(rootDir, destination); - const fileBuffer = await streamToBuffer(stream); - - await fs.writeFile(filePath, fileBuffer); - const fileExists = await checkFileExists(destination); - - if (fileExists) { - return new UploadResponse(filePath); - } - const errorMessage = `Unable to upload file(s) to OpenStack Swift.`; - throw new Error(errorMessage); - } catch (error) { - const errorMessage = `Unable to upload file(s) to OpenStack Swift. ${error}`; - throw new Error(errorMessage); - } - } - - async download(_containerName: string, file: string) { - const filePath = path.join(rootDir, file); - const fileExists = await checkFileExists(file); - if (!fileExists) { - return new NotFound(); - } - return new DownloadResponse([], fs.createReadStream(filePath)); - } -} diff --git a/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts b/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts index 619431fdd7..51b67d6167 100644 --- a/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts +++ b/plugins/techdocs-node/src/stages/publish/openStackSwift.test.ts @@ -24,12 +24,106 @@ import { ConfigReader } from '@backstage/config'; import express from 'express'; import request from 'supertest'; import mockFs from 'mock-fs'; -import os from 'os'; +import fs from 'fs-extra'; import path from 'path'; import { OpenStackSwiftPublish } from './openStackSwift'; import { PublisherBase, TechDocsMetadata } from './types'; +import { storageRootDir } from '../../testUtils/StorageFilesMock'; +import { Stream, Readable } from 'stream'; -// NOTE: /plugins/techdocs-node/__mocks__ is being used to mock @trendyol-js/openstack-swift-sdk client library +jest.mock('@trendyol-js/openstack-swift-sdk', () => { + const { + ContainerMetaResponse, + DownloadResponse, + NotFound, + ObjectMetaResponse, + UploadResponse, + }: typeof import('@trendyol-js/openstack-swift-sdk') = jest.requireActual( + '@trendyol-js/openstack-swift-sdk', + ); + + const checkFileExists = async (Key: string): Promise => { + // Key will always have / as file separator irrespective of OS since cloud providers expects /. + // Normalize Key to OS specific path before checking if file exists. + const filePath = path.join(storageRootDir, Key); + + try { + await fs.access(filePath, fs.constants.F_OK); + return true; + } catch (err) { + return false; + } + }; + + const streamToBuffer = (stream: Stream | Readable): Promise => { + return new Promise((resolve, reject) => { + try { + const chunks: any[] = []; + stream.on('data', chunk => chunks.push(chunk)); + stream.on('error', reject); + stream.on('end', () => resolve(Buffer.concat(chunks))); + } catch (e) { + throw new Error(`Unable to parse the response data ${e.message}`); + } + }); + }; + + return { + __esModule: true, + SwiftClient: class { + async getMetadata(_containerName: string, file: string) { + const fileExists = await checkFileExists(file); + if (fileExists) { + return new ObjectMetaResponse({ + fullPath: file, + }); + } + return new NotFound(); + } + + async getContainerMetadata(containerName: string) { + if (containerName === 'mock') { + return new ContainerMetaResponse({ + size: 10, + }); + } + return new NotFound(); + } + + async upload( + _containerName: string, + destination: string, + stream: Readable, + ) { + try { + const filePath = path.join(storageRootDir, destination); + const fileBuffer = await streamToBuffer(stream); + + await fs.writeFile(filePath, fileBuffer); + const fileExists = await checkFileExists(destination); + + if (fileExists) { + return new UploadResponse(filePath); + } + const errorMessage = `Unable to upload file(s) to OpenStack Swift.`; + throw new Error(errorMessage); + } catch (error) { + const errorMessage = `Unable to upload file(s) to OpenStack Swift. ${error}`; + throw new Error(errorMessage); + } + } + + async download(_containerName: string, file: string) { + const filePath = path.join(storageRootDir, file); + const fileExists = await checkFileExists(file); + if (!fileExists) { + return new NotFound(); + } + return new DownloadResponse([], fs.createReadStream(filePath)); + } + }, + }; +}); const createMockEntity = (annotations = {}): Entity => { return { @@ -51,15 +145,13 @@ const createMockEntityName = (): CompoundEntityRef => ({ namespace: 'test-namespace', }); -const rootDir = os.platform() === 'win32' ? 'C:\\rootDir' : '/rootDir'; - const getEntityRootDir = (entity: Entity) => { const { kind, metadata: { namespace, name }, } = entity; - return path.join(rootDir, namespace || DEFAULT_NAMESPACE, kind, name); + return path.join(storageRootDir, namespace || DEFAULT_NAMESPACE, kind, name); }; const getPosixEntityRootDir = (entity: Entity) => { @@ -179,7 +271,7 @@ describe('OpenStackSwiftPublish', () => { it('should fail to publish a directory', async () => { const wrongPathToGeneratedDirectory = path.join( - rootDir, + storageRootDir, 'wrong', 'path', 'to', From 6ce22dad4dac760bdaf034174cb08ab47537b0af Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Mar 2022 10:35:16 +0100 Subject: [PATCH 055/410] techdocs-node: inline google storage mock Signed-off-by: Patrik Oldsberg --- .../__mocks__/@google-cloud/storage.ts | 119 ------------------ .../src/stages/publish/googleStorage.test.ts | 116 ++++++++++++++++- 2 files changed, 112 insertions(+), 123 deletions(-) delete mode 100644 plugins/techdocs-node/__mocks__/@google-cloud/storage.ts diff --git a/plugins/techdocs-node/__mocks__/@google-cloud/storage.ts b/plugins/techdocs-node/__mocks__/@google-cloud/storage.ts deleted file mode 100644 index e87ccb69c1..0000000000 --- a/plugins/techdocs-node/__mocks__/@google-cloud/storage.ts +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Readable } from 'stream'; -import { IStorageFilesMock } from '../../src/testUtils/types'; - -const storage = global.storageFilesMock as IStorageFilesMock; - -class GCSFile { - private readonly path: string; - - constructor(path: string) { - this.path = path; - } - - exists() { - return new Promise(async (resolve, reject) => { - if (storage.fileExists(this.path)) { - resolve([true]); - } else { - reject(); - } - }); - } - - createReadStream() { - const readable = new Readable(); - readable._read = () => {}; - - process.nextTick(() => { - if (storage.fileExists(this.path)) { - if (readable.eventNames().includes('pipe')) { - readable.emit('pipe'); - } - readable.emit('data', storage.readFile(this.path)); - readable.emit('end'); - } else { - readable.emit( - 'error', - new Error(`The file ${this.path} does not exist!`), - ); - } - }); - - return readable; - } - - delete() { - return Promise.resolve(); - } -} - -class Bucket { - private readonly bucketName; - - constructor(bucketName: string) { - this.bucketName = bucketName; - } - - async getMetadata() { - if (this.bucketName === 'bad_bucket_name') { - throw Error('Bucket does not exist'); - } - return ''; - } - - upload(source: string, { destination }) { - return new Promise(async resolve => { - storage.writeFile(destination, source); - resolve(null); - }); - } - - file(destinationFilePath: string) { - if (this.bucketName === 'delete_stale_files_error') { - throw Error('Message'); - } - return new GCSFile(destinationFilePath); - } - - getFilesStream() { - const readable = new Readable(); - readable._read = () => {}; - - process.nextTick(() => { - if ( - this.bucketName === 'delete_stale_files_success' || - this.bucketName === 'delete_stale_files_error' - ) { - readable.emit('data', { name: 'stale-file.png' }); - } - readable.emit('end'); - }); - - return readable; - } -} - -export class Storage { - constructor() { - storage.emptyFiles(); - } - - bucket(bucketName) { - return new Bucket(bucketName); - } -} diff --git a/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts b/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts index 6471d89a06..b347f185c6 100644 --- a/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts +++ b/plugins/techdocs-node/src/stages/publish/googleStorage.test.ts @@ -22,11 +22,119 @@ import request from 'supertest'; import mockFs from 'mock-fs'; import path from 'path'; import fs from 'fs-extra'; +import { Readable } from 'stream'; import { GoogleGCSPublish } from './googleStorage'; +import { + storageRootDir, + StorageFilesMock, +} from '../../testUtils/StorageFilesMock'; -// NOTE: /plugins/techdocs-node/__mocks__ is being used to mock Google Cloud Storage client library +jest.mock('@google-cloud/storage', () => { + class GCSFile { + constructor( + private readonly filePath: string, + private readonly storage: StorageFilesMock, + ) {} -const rootDir = (global as any).rootDir; // Set by setupTests.ts + exists() { + return new Promise(async (resolve, reject) => { + if (this.storage.fileExists(this.filePath)) { + resolve([true]); + } else { + reject(); + } + }); + } + + createReadStream() { + const readable = new Readable(); + readable._read = () => {}; + + process.nextTick(() => { + if (this.storage.fileExists(this.filePath)) { + if (readable.eventNames().includes('pipe')) { + readable.emit('pipe'); + } + readable.emit('data', this.storage.readFile(this.filePath)); + readable.emit('end'); + } else { + readable.emit( + 'error', + new Error(`The file ${this.filePath} does not exist!`), + ); + } + }); + + return readable; + } + + delete() { + return Promise.resolve(); + } + } + + class Bucket { + constructor( + private readonly bucketName: string, + private readonly storage: StorageFilesMock, + ) {} + + async getMetadata() { + if (this.bucketName === 'bad_bucket_name') { + throw Error('Bucket does not exist'); + } + return ''; + } + + upload(source: string, { destination }: { destination: string }) { + return new Promise(async resolve => { + this.storage.writeFile(destination, source); + resolve(null); + }); + } + + file(destinationFilePath: string) { + if (this.bucketName === 'delete_stale_files_error') { + throw Error('Message'); + } + return new GCSFile(destinationFilePath, this.storage); + } + + getFilesStream() { + const readable = new Readable(); + readable._read = () => {}; + + process.nextTick(() => { + if ( + this.bucketName === 'delete_stale_files_success' || + this.bucketName === 'delete_stale_files_error' + ) { + readable.emit('data', { name: 'stale-file.png' }); + } + readable.emit('end'); + }); + + return readable; + } + } + + class Storage { + storage = new StorageFilesMock(); + + constructor() { + this.storage.emptyFiles(); + } + + bucket(bucketName: string) { + return new Bucket(bucketName, this.storage); + } + } + + return { + __esModule: true, + Storage, + }; +}); const getEntityRootDir = (entity: Entity) => { const { @@ -34,7 +142,7 @@ const getEntityRootDir = (entity: Entity) => { metadata: { namespace, name }, } = entity; - return path.join(rootDir, namespace || DEFAULT_NAMESPACE, kind, name); + return path.join(storageRootDir, namespace || DEFAULT_NAMESPACE, kind, name); }; const logger = getVoidLogger(); @@ -193,7 +301,7 @@ describe('GoogleGCSPublish', () => { it('should fail to publish a directory', async () => { const wrongPathToGeneratedDirectory = path.join( - rootDir, + storageRootDir, 'wrong', 'path', 'to', From 6869f7db09e2838f8b3cae8b70239bb887699e48 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Mar 2022 10:50:13 +0100 Subject: [PATCH 056/410] techdocs-node: inline azure mocks Signed-off-by: Patrik Oldsberg --- .../__mocks__/@azure/identity.ts | 20 -- .../__mocks__/@azure/storage-blob.ts | 195 ----------------- .../stages/publish/azureBlobStorage.test.ts | 205 +++++++++++++++++- .../src/stages/publish/publish.test.ts | 5 + 4 files changed, 206 insertions(+), 219 deletions(-) delete mode 100644 plugins/techdocs-node/__mocks__/@azure/identity.ts delete mode 100644 plugins/techdocs-node/__mocks__/@azure/storage-blob.ts diff --git a/plugins/techdocs-node/__mocks__/@azure/identity.ts b/plugins/techdocs-node/__mocks__/@azure/identity.ts deleted file mode 100644 index 6aeb738963..0000000000 --- a/plugins/techdocs-node/__mocks__/@azure/identity.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export class DefaultAzureCredential { - /** - * Creates an instance of the DefaultAzureCredential class. - */ -} diff --git a/plugins/techdocs-node/__mocks__/@azure/storage-blob.ts b/plugins/techdocs-node/__mocks__/@azure/storage-blob.ts deleted file mode 100644 index 1d63e7266a..0000000000 --- a/plugins/techdocs-node/__mocks__/@azure/storage-blob.ts +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - BlobUploadCommonResponse, - ContainerGetPropertiesResponse, -} from '@azure/storage-blob'; -import { EventEmitter } from 'events'; -import { IStorageFilesMock } from '../../src/testUtils/types'; - -const storage = global.storageFilesMock as IStorageFilesMock; - -export class BlockBlobClient { - private readonly blobName; - - constructor(blobName: string) { - this.blobName = blobName; - } - - uploadFile(source: string): Promise { - storage.writeFile(this.blobName, source); - return Promise.resolve({ - _response: { - request: { - url: `https://example.blob.core.windows.net`, - } as any, - status: 200, - headers: {} as any, - }, - }); - } - - exists() { - return storage.fileExists(this.blobName); - } - - download() { - const emitter = new EventEmitter(); - setTimeout(() => { - if (storage.fileExists(this.blobName)) { - emitter.emit('data', storage.readFile(this.blobName)); - emitter.emit('end'); - } else { - emitter.emit( - 'error', - new Error(`The file ${this.blobName} does not exist!`), - ); - } - }, 0); - return Promise.resolve({ - readableStreamBody: emitter, - }); - } -} - -class BlockBlobClientFailUpload extends BlockBlobClient { - uploadFile(): Promise { - return Promise.resolve({ - _response: { - request: { - url: `https://example.blob.core.windows.net`, - } as any, - status: 500, - headers: {} as any, - }, - }); - } -} - -class ContainerClientIterator { - private containerName: string; - - constructor(containerName) { - this.containerName = containerName; - } - - async next() { - if ( - this.containerName === 'delete_stale_files_success' || - this.containerName === 'delete_stale_files_error' - ) { - return { - value: { - segment: { - blobItems: [{ name: `stale_file.png` }], - }, - }, - }; - } - return { - value: { - segment: { - blobItems: [], - }, - }, - }; - } -} - -export class ContainerClient { - getProperties(): Promise { - return Promise.resolve({ - _response: { - request: { - url: `https://example.blob.core.windows.net`, - } as any, - status: 200, - headers: {} as any, - parsedHeaders: {}, - }, - }); - } - - getBlockBlobClient(blobName: string) { - return new BlockBlobClient(blobName); - } - - listBlobsFlat() { - return { - byPage: () => { - return new ContainerClientIterator(this.containerName); - }, - }; - } - - deleteBlob() { - if (this.containerName === 'delete_stale_files_error') { - throw new Error('Message'); - } - } -} - -class ContainerClientFailGetProperties extends ContainerClient { - getProperties(): Promise { - return Promise.resolve({ - _response: { - request: { - url: `https://example.blob.core.windows.net`, - } as any, - status: 404, - headers: {} as any, - parsedHeaders: {}, - }, - }); - } -} - -class ContainerClientFailUpload extends ContainerClient { - getBlockBlobClient(blobName: string) { - return new BlockBlobClientFailUpload(blobName); - } -} - -export class BlobServiceClient { - private readonly url; - private readonly credential; - - constructor(url: string, credential?: StorageSharedKeyCredential) { - storage.emptyFiles(); - this.url = url; - this.credential = credential; - } - - getContainerClient(containerName: string) { - if (containerName === 'bad_container') { - return new ContainerClientFailGetProperties(); - } - if (this.credential.accountName === 'bad_account_credentials') { - return new ContainerClientFailUpload(); - } - return new ContainerClient(); - } -} - -export class StorageSharedKeyCredential { - private readonly accountName; - private readonly accountKey; - - constructor(accountName: string, accountKey: string) { - this.accountName = accountName; - this.accountKey = accountKey; - } -} diff --git a/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts b/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts index 7af5338d88..6d5848b0d8 100644 --- a/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts +++ b/plugins/techdocs-node/src/stages/publish/azureBlobStorage.test.ts @@ -23,10 +23,207 @@ import mockFs from 'mock-fs'; import path from 'path'; import fs from 'fs-extra'; import { AzureBlobStoragePublish } from './azureBlobStorage'; +import { EventEmitter } from 'events'; +import { + BlobUploadCommonResponse, + ContainerGetPropertiesResponse, +} from '@azure/storage-blob'; +import { + storageRootDir, + StorageFilesMock, +} from '../../testUtils/StorageFilesMock'; -// NOTE: /plugins/techdocs-node/__mocks__ is being used to mock Azure client library +jest.mock('@azure/identity', () => ({ + __esModule: true, + DefaultAzureCredential: class {}, +})); -const rootDir = (global as any).rootDir; // Set by setupTests.ts +jest.mock('@azure/storage-blob', () => { + class BlockBlobClient { + constructor( + private readonly blobName: string, + private readonly storage: StorageFilesMock, + ) {} + + uploadFile(source: string): Promise { + this.storage.writeFile(this.blobName, source); + return Promise.resolve({ + _response: { + request: { + url: `https://example.blob.core.windows.net`, + } as any, + status: 200, + headers: {} as any, + }, + }); + } + + exists() { + return this.storage.fileExists(this.blobName); + } + + download() { + const emitter = new EventEmitter(); + setTimeout(() => { + if (this.storage.fileExists(this.blobName)) { + emitter.emit('data', this.storage.readFile(this.blobName)); + emitter.emit('end'); + } else { + emitter.emit( + 'error', + new Error(`The file ${this.blobName} does not exist!`), + ); + } + }, 0); + return Promise.resolve({ + readableStreamBody: emitter, + }); + } + } + + class BlockBlobClientFailUpload extends BlockBlobClient { + uploadFile(): Promise { + return Promise.resolve({ + _response: { + request: { + url: `https://example.blob.core.windows.net`, + } as any, + status: 500, + headers: {} as any, + }, + }); + } + } + + class ContainerClientIterator { + private containerName: string; + + constructor(containerName: string) { + this.containerName = containerName; + } + + async next() { + if ( + this.containerName === 'delete_stale_files_success' || + this.containerName === 'delete_stale_files_error' + ) { + return { + value: { + segment: { + blobItems: [{ name: `stale_file.png` }], + }, + }, + }; + } + return { + value: { + segment: { + blobItems: [], + }, + }, + }; + } + } + + class ContainerClient { + constructor( + private readonly containerName: string, + protected readonly storage: StorageFilesMock, + ) {} + + getProperties(): Promise { + return Promise.resolve({ + _response: { + request: { + url: `https://example.blob.core.windows.net`, + } as any, + status: 200, + headers: {} as any, + parsedHeaders: {}, + }, + }); + } + + getBlockBlobClient(blobName: string) { + return new BlockBlobClient(blobName, this.storage); + } + + listBlobsFlat() { + return { + byPage: () => { + return new ContainerClientIterator(this.containerName); + }, + }; + } + + deleteBlob() { + if (this.containerName === 'delete_stale_files_error') { + throw new Error('Message'); + } + } + } + + class ContainerClientFailGetProperties extends ContainerClient { + getProperties(): Promise { + return Promise.resolve({ + _response: { + request: { + url: `https://example.blob.core.windows.net`, + } as any, + status: 404, + headers: {} as any, + parsedHeaders: {}, + }, + }); + } + } + + class ContainerClientFailUpload extends ContainerClient { + getBlockBlobClient(blobName: string) { + return new BlockBlobClientFailUpload(blobName, this.storage); + } + } + + class BlobServiceClient { + storage = new StorageFilesMock(); + + constructor( + public readonly url: string, + private readonly credential?: StorageSharedKeyCredential, + ) { + this.storage.emptyFiles(); + } + + getContainerClient(containerName: string) { + if (containerName === 'bad_container') { + return new ContainerClientFailGetProperties( + containerName, + this.storage, + ); + } + if (this.credential?.accountName === 'bad_account_credentials') { + return new ContainerClientFailUpload(containerName, this.storage); + } + return new ContainerClient(containerName, this.storage); + } + } + + class StorageSharedKeyCredential { + readonly accountName; + readonly accountKey; + + constructor(accountName: string, accountKey: string) { + this.accountName = accountName; + this.accountKey = accountKey; + } + } + + return { + __esModule: true, + BlobServiceClient, + StorageSharedKeyCredential, + }; +}); const getEntityRootDir = (entity: Entity) => { const { @@ -34,7 +231,7 @@ const getEntityRootDir = (entity: Entity) => { metadata: { namespace, name }, } = entity; - return path.join(rootDir, namespace || DEFAULT_NAMESPACE, kind, name); + return path.join(storageRootDir, namespace || DEFAULT_NAMESPACE, kind, name); }; const logger = getVoidLogger(); @@ -178,7 +375,7 @@ describe('AzureBlobStoragePublish', () => { it('should fail to publish a directory', async () => { const wrongPathToGeneratedDirectory = path.join( - rootDir, + storageRootDir, 'wrong', 'path', 'to', diff --git a/plugins/techdocs-node/src/stages/publish/publish.test.ts b/plugins/techdocs-node/src/stages/publish/publish.test.ts index 4537313edf..ab300412a4 100644 --- a/plugins/techdocs-node/src/stages/publish/publish.test.ts +++ b/plugins/techdocs-node/src/stages/publish/publish.test.ts @@ -31,6 +31,11 @@ const discovery: jest.Mocked = { getExternalBaseUrl: jest.fn(), }; +jest.mock('@azure/identity', () => ({ + __esModule: true, + DefaultAzureCredential: class {}, +})); + describe('Publisher', () => { beforeEach(() => { jest.resetModules(); // clear the cache From 6634ba10d0df6bd899f5a55387dc4ad066b82de9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 13 Mar 2022 11:38:34 +0100 Subject: [PATCH 057/410] techdocs-node: remove custom test setup Signed-off-by: Patrik Oldsberg --- plugins/techdocs-node/package.json | 5 ----- plugins/techdocs-node/src/setupTests.ts | 20 -------------------- 2 files changed, 25 deletions(-) delete mode 100644 plugins/techdocs-node/src/setupTests.ts diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 6db2637180..272e30b759 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -72,10 +72,5 @@ "@types/recursive-readdir": "^2.2.0", "@types/supertest": "^2.0.8", "supertest": "^6.1.3" - }, - "jest": { - "roots": [ - ".." - ] } } diff --git a/plugins/techdocs-node/src/setupTests.ts b/plugins/techdocs-node/src/setupTests.ts deleted file mode 100644 index d342cfb26a..0000000000 --- a/plugins/techdocs-node/src/setupTests.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { StorageFilesMock } from './testUtils/StorageFilesMock'; - -(global as any).rootDir = StorageFilesMock.rootDir; -(global as any).storageFilesMock = new StorageFilesMock(); From d4afa7e30da1e54f826b1ddd51220fd4d05a6d29 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 15 Mar 2022 20:46:30 +0100 Subject: [PATCH 058/410] catalog: fix EntitySwitch to render default case Signed-off-by: Patrik Oldsberg --- .changeset/shy-seals-deny.md | 5 +++++ .../EntitySwitch/EntitySwitch.test.tsx | 17 ++++++++++++++++- .../components/EntitySwitch/EntitySwitch.tsx | 18 +++++++++++++++--- 3 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 .changeset/shy-seals-deny.md diff --git a/.changeset/shy-seals-deny.md b/.changeset/shy-seals-deny.md new file mode 100644 index 0000000000..1687ccaa75 --- /dev/null +++ b/.changeset/shy-seals-deny.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Fix for `EntitySwitch` not properly falling back to render the default entity page when the entity is missing. diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx index 8768e9728e..9588327c3b 100644 --- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx +++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.test.tsx @@ -15,7 +15,10 @@ */ import { Entity } from '@backstage/catalog-model'; -import { EntityProvider } from '@backstage/plugin-catalog-react'; +import { + AsyncEntityProvider, + EntityProvider, +} from '@backstage/plugin-catalog-react'; import { render } from '@testing-library/react'; import React from 'react'; import { isKind } from './conditions'; @@ -76,6 +79,18 @@ describe('EntitySwitch', () => { expect(rendered.queryByText('A')).not.toBeInTheDocument(); expect(rendered.queryByText('B')).not.toBeInTheDocument(); expect(rendered.queryByText('C')).toBeInTheDocument(); + + rendered.rerender( + + + {content} + + , + ); + + expect(rendered.queryByText('A')).not.toBeInTheDocument(); + expect(rendered.queryByText('B')).not.toBeInTheDocument(); + expect(rendered.queryByText('C')).toBeInTheDocument(); }); it('should switch child when filters switch', () => { diff --git a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx index 1b8667ce2a..993e7daa80 100644 --- a/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx +++ b/plugins/catalog/src/components/EntitySwitch/EntitySwitch.tsx @@ -63,7 +63,7 @@ export interface EntitySwitchProps { /** @public */ export const EntitySwitch = (props: EntitySwitchProps) => { - const { entity } = useAsyncEntity(); + const { entity, loading } = useAsyncEntity(); const apis = useApiHolder(); const results = useElementFilter( props.children, @@ -75,11 +75,23 @@ export const EntitySwitch = (props: EntitySwitchProps) => { }) .getElements() .flatMap((element: ReactElement) => { - if (!entity) { + // Nothing is rendered while loading + if (loading) { return []; } + const { if: condition, children: elementsChildren } = element.props as EntitySwitchCase; + + // If the entity is missing or there is an error, render the default page + if (!entity) { + return [ + { + if: condition === undefined, + children: elementsChildren, + }, + ]; + } return [ { if: condition?.(entity, { apis }) ?? true, @@ -87,7 +99,7 @@ export const EntitySwitch = (props: EntitySwitchProps) => { }, ]; }), - [apis, entity], + [apis, entity, loading], ); const hasAsyncCases = results.some( r => typeof r.if === 'object' && 'then' in r.if, From fb99119e90a168019c680d829e2efef55dbbd9ac Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Tue, 15 Mar 2022 20:29:52 +0100 Subject: [PATCH 059/410] Blog post: Backstage turns two Signed-off-by: Vincenzo Scamporlino --- .github/styles/vocab.txt | 3 + .../blog/2022-03-16-backstage-turns-two.md | 68 ++++++++++++++++++ .../22-03-16/backstage-2nd-birthday.png | Bin 0 -> 59690 bytes 3 files changed, 71 insertions(+) create mode 100644 microsite/blog/2022-03-16-backstage-turns-two.md create mode 100644 microsite/blog/assets/22-03-16/backstage-2nd-birthday.png diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index b8e432dd98..9e57785b3e 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -27,6 +27,7 @@ Billett bitbucket Bitrise Blackbox +Brex bool boolean builtins @@ -151,6 +152,7 @@ Leasot lerna Lerna LocalStack +lockdown lockfile lunr Luxon @@ -268,6 +270,7 @@ seb semlas semver Serverless +shoutout siloed Sinon Snyk diff --git a/microsite/blog/2022-03-16-backstage-turns-two.md b/microsite/blog/2022-03-16-backstage-turns-two.md new file mode 100644 index 0000000000..2588f9170a --- /dev/null +++ b/microsite/blog/2022-03-16-backstage-turns-two.md @@ -0,0 +1,68 @@ +--- +title: Backstage Turns Two! +author: Lee Mills, Spotify +authorURL: https://github.com/leemills83 +authorImageURL: https://avatars1.githubusercontent.com/u/1236238?s=460&v=4 +--- + +![A cake celebrating Backstage’s second birthday](assets/22-03-16/backstage-2nd-birthday.png) + +_TLDR;_ Backstage has turned two. Of course, this is software, so we expect things to move fast. But when you have a passionate, worldwide community building together, we’ve now seen firsthand just how fast that can be. We’re marking our second year as a community by becoming a CNCF incubating project, reaching 100 public adopters, releasing version 1.0 of the core app, and other very nice birthday gifts. Rather than a toddler finding their feet, Backstage today is beginning to look awfully grown-up for a two-year-old. + + + +## Out of the Sandbox and into Incubation + +Two years ago, a small team at Spotify launched Backstage into open source during our internal Hack Week. We knew we had something special on our hands and that Backstage could potentially be the most ambitious open source project in Spotify’s history (you can listen to me wax philosophical on this topic more in [Episode 2 of the new NerdOut@Spotify podcast](https://open.spotify.com/episode/332yTwGiILGKTS7dsHCj2P?si=pX9xTzB2SgmsROdlLLr24A).) + +When Spotify donated the project to the CNCF, we saw it as the first promising step toward making Backstage an industry standard. As the home to Kubernetes, Envoy, and so many other game-changing open technologies, the CNCF and its community has had a wide-ranging impact on the daily lives of developers everywhere. And that’s what we hoped for Backstage, even back then. + +But we couldn't have envisioned where we’d be two years later — part of an ever-growing community of people that feel as passionate as we do about unlocking better developer experience for every engineering organization. + +Yesterday, the CNCF announced that its [Technical Oversight Committee](https://github.com/cncf/toc) (TOC) voted to accept Backstage as a [CNCF incubating project](https://www.cncf.io/blog/2022/03/15/backstage-project-joins-the-cncf-incubator/). The move from the CNCF Sandbox to Incubation is an important step forward for the project’s technical governance. + +It’s also recognition for all the work the Backstage open source community has done to advance and grow this project since we launched the repo on GitHub just a few weeks after that Hack Week. We still have a long way to go to becoming the standard, but moving out of the CNCF Sandbox and beginning the Incubation phase is further validation of those aspirations. + +## What do retailers, gaming studios, banks, airlines, streamers, startups, and enterprise software makers all have in common? + +Developers, developers, developers — that’s what all companies have in common. Developers dealing with [more complexity](https://youtu.be/85TQEpNCaU0) than they’ve ever had to deal with before. Developers who want to be able to go from idea to bug fix or feature faster. + +Two years in, the Backstage ecosystem has grown by leaps and bounds. More than 5,000 contributors have joined the project and are submitting bugs, adding new features, and building valuable plugins that benefit the greater community. From [Expedia Group](https://backstage.spotify.com/blog/measuring-backstage-proof-of-value-at-expedia/) (adopter No.18) to Unity (adopter No.67), Backstage now has [100 publicly listed adopters](https://github.com/backstage/backstage/blob/master/ADOPTERS.md) across a variety of industries, including retail, gaming, financial services, manufacturing, and government. + +We have companies like [Roadie](http://roadie.io) providing hosting solutions and ThoughtWorks [providing technology and consulting services](https://www.thoughtworks.com/en-us/about-us/news/2021/thoughtworks-is-collaborating-with-spotify-to-deliver-better-dev) to teams looking to stand up Backstage in their own orgs. We’re starting to see more and more job listings for Backstage developers which tells us that companies of all shapes and sizes are going all-in on Backstage and developer effectiveness. + +Also, I’ll pause now to give a special shoutout to our early adopters. They stuck with us through all the bumps and breaking changes. But because of their early commitment, we now see instances of Backstage up and running in so many different kinds of engineering organizations. From [Zalando](https://youtu.be/6sg5uMCLxTA) to [American Airlines](https://backstage.spotify.com/blog/adopter-spotlight/american-airlines-runway/) and [Brex](https://backstage.spotify.com/blog/community-session/11-brex-backstage-upgrade-helper/), the growing pains of our earliest adopters helped pave the way for smoother adoptions for all who follow them. + +A few more numbers that make us proud: + +- 2,000+ project forks +- 20,000+ commits +- 10,000+ PRs & issues +- 15,000+ stars on GitHub +- 60+ open source plugins in the [Backstage Plugin Marketplace](https://backstage.io/plugins) + +## A global community of friendly, helpful contributors + +We open sourced Backstage in March 2020 and then almost immediately went into lockdown. When you think about this project in the context of the pandemic, it's really remarkable how much this community has been able to achieve. + +The Backstage community is truly global with adopters and contributors from almost every continent (sorry, Antarctica!) coming together to share what they’ve worked on and demo cool stuff in our monthly Community Sessions. The repo and the Discord server truly never sleep as a growing group of dedicated Backstage experts outside Spotify support one another and offer help 24/7. + +We asked a few contributors and maintainers to share their thoughts around this two-year milestone. + + + +Warms the heart, doesn’t it? Thanks again to all our contributors for making this possible. Seriously. We’re proud of what the community has accomplished and how we’ve accomplished it. All along, it’s your enthusiasm and warm/collaborative/positive vibes that have carried us and this project through. + +## Version 1.0 and beyond + +Tomorrow, we’ll be releasing version 1.0 of the Backstage core framework, including Software Catalog, Software Templates, TechDocs, and API Reference. With Backstage 1.0, the project’s core components are coming out of beta and into production with regular versioning and release cycle commitments (check back on this blog for more details!). + +v1.0 paves the way for more adoption, a bigger community, more contributions — and with this continued growth in the ecosystem, we expect even greater innovation on the platform just on the horizon with exchange of features and plugins. + +What comes next for Backstage is — in many ways — entirely up to you. We are looking to this community to [help us shape the next year](https://backstage.io/docs/overview/roadmap). + +If you’re already a part of this community, thank you for your hard work and dedication. Backstage wouldn’t be where it is today without you. We’ve come a long way together, but there’s still so much to do. + +And if you haven’t signed up yet, there’s plenty of room on this party boat! And there’s never been a better time to hop on board. As Irma ([@Irma12](https://github.com/Irma12)) said so beautifully: where else is there an opportunity to have so many people look at your code, hear you out, and help you out? + +Take a look at how to [start contributing](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md) and [join the community](https://github.com/backstage/community)! diff --git a/microsite/blog/assets/22-03-16/backstage-2nd-birthday.png b/microsite/blog/assets/22-03-16/backstage-2nd-birthday.png new file mode 100644 index 0000000000000000000000000000000000000000..b0fdab3a1545b8312a9b197dfc36e9255b1a1a42 GIT binary patch literal 59690 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 Date: Tue, 15 Mar 2022 21:13:23 +0100 Subject: [PATCH 060/410] Use gif header image Signed-off-by: Vincenzo Scamporlino --- .../blog/2022-03-16-backstage-turns-two.md | 2 +- .../22-03-16/backstage-2nd-birthday.gif | Bin 0 -> 1724933 bytes .../22-03-16/backstage-2nd-birthday.png | Bin 59690 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 microsite/blog/assets/22-03-16/backstage-2nd-birthday.gif delete mode 100644 microsite/blog/assets/22-03-16/backstage-2nd-birthday.png diff --git a/microsite/blog/2022-03-16-backstage-turns-two.md b/microsite/blog/2022-03-16-backstage-turns-two.md index 2588f9170a..626b1a3d5f 100644 --- a/microsite/blog/2022-03-16-backstage-turns-two.md +++ b/microsite/blog/2022-03-16-backstage-turns-two.md @@ -5,7 +5,7 @@ authorURL: https://github.com/leemills83 authorImageURL: https://avatars1.githubusercontent.com/u/1236238?s=460&v=4 --- -![A cake celebrating Backstage’s second birthday](assets/22-03-16/backstage-2nd-birthday.png) +![A cake celebrating Backstage’s second birthday](assets/22-03-16/backstage-2nd-birthday.gif) _TLDR;_ Backstage has turned two. Of course, this is software, so we expect things to move fast. But when you have a passionate, worldwide community building together, we’ve now seen firsthand just how fast that can be. We’re marking our second year as a community by becoming a CNCF incubating project, reaching 100 public adopters, releasing version 1.0 of the core app, and other very nice birthday gifts. Rather than a toddler finding their feet, Backstage today is beginning to look awfully grown-up for a two-year-old. diff --git a/microsite/blog/assets/22-03-16/backstage-2nd-birthday.gif b/microsite/blog/assets/22-03-16/backstage-2nd-birthday.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb830efa2a74ef6fb07443b05321b001ef514e17 GIT binary patch literal 1724933 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

p)!~U8~n|GcebYr(kMta# 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

Lhns$%%bugZK z{v1Z5tIC#celCZFmiOSHtRTTf7MgE-!#P>gS}d(gJ$c>j%K3h( zV~cFAlVd*6>bBsRGP&|Le@J!f^R4mQd8l604vVMe%=V%PMX>0_>UkYPz0V{iQ8uTVJ4-R#)??@bidg}hmL7_=?<>p(fVT{iYJSkGUZDDRK& zFtGl)iSo1#WpS?lA<}vl!03e_gD#ovL{)eR=fpeF)LL0GaF4{i#Cj+JFbYE{;C+zquDE z`}^kNcxS3MQ10%}pF0fdJR}CGab6HMOWIvtFrM&oUI>u_8btU5qWNJ|Jj+<&bnehi zErwv~C$A}^j0>U;e|r=}^M+q)hw=4M?|2G0auvpj^E|YTlQ>=8adAc@Amx~DjEfS> z>p`hbY>eoXMUpbhG&+%ah6WK>l%oK+3L^-lARJYkW}8xMkI5TV0tnc=T`9>_%*I#( zrBGXs;yW2$qc>4Herkg&ci*A#O!?K=awAyArsdo--VK@MbBBD6kJ2;cejxCtT?+)+ z?W4_qYf4*D_Nnbk9&9~{SS$SHFZrdcwvRS8#@(@^!Uz)iBPb(%aJ90wc*0bkz5Mh> zUYiLnxK}$aOgC0Q4@Eu(wd5q+ft`ff7OPs;Xitf-?+u`cN~Noi%fjmgnF3*^6?&Wi z7F^lo?TAtZI%N@%&kpMMuKVJeP)D-bG`MY6*Q-^9lE)yaSA1CinX4-vq5Kq-HCmMyKp(zX+#(fwt{&W)g18F$CY_arW-i|n^|FL_%O$?0W>LG@L?B&Hr$W3ZX8+pVH2Tb z5PxE9`;ifTh-yERlqw}fKe9K5cEw7vY0{=;@$%B4v_Y1agy zt8oP64ltT|!|^%G9S@t<0hmov!A>D5o6~NInoR{i%k?hEduZc0w}~S46xdTfclkQ^ zLc&vE*?3bsrXwy!E3c#n-Av3hje~vHr<(BKF|a8ttaw79W1OgSM`f*CsRA!x2MT@RmMe!E!zV~=&XJX$yaVGWeRkdfC!{B zb4Y#9c-eR~I6F29g?EN)2q8JI58oIS{w|5+w`T)_C#UVj%*we4NL=v`$c5QR6DAnB zluI_gY29*x!~FJgt9`=o)p*xdOw}nl`No8*ASUaFUH*7? zU3d*PNqwqD??EzeqA-bNZg0Lb+-kkc5LvKhY~7w0=?!BYp;!PBWi9VI zq`)s1`@)VpKD##gBOXToi-B4?xV$0jn0j_{q12LJgnTw zdwDhkK?FX=9WYDY>k&;DR8}{m1g!rPO#EE!yk(Z1h0%-u)xy&6;^AL2*bV6IW-2I9 zSKtfJH+ao5HAp%@1kn(+ug;Y*5{i~*L4OQG)jipnT7sPx8lGa!G>u_$;Y)c|VpS=& z`3Uutr+7z_<~_+Ss2yMxya>20L$;b5VYAa1H;qo_e>-V=<;uOP27C7u6aTE@w8q`< z@P#Wrw;ER346(UG;xRUXH3*jraK+5QQ0K}^#*(`VyQRi(YDM)~n!X5aDFU*G1RGn- z!&@bLm;>fega}DNj^*!6Q}u$w){l^oS>h+D4N{U@zF5to@

mA-V9N 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 z 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 z

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

qg{5vTNe<6MazJ28DS_K1J4 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

^x!~vL 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

  • KrAE5zO+tLrIYmz($NN`HpluY~_@U#i#i`^=R= z@W`{;-5;6_QB2x@Uu7l3DTq25D*W=CuC=soNj8Cu4g+6g_Z0My#719zTdV| z-7Vod;#1Q`hSlh>%KDU?gZuYLZ?%vEMIXgU%PT8%BxA=90zhp*B3;VPptU!ttK$_X z4Vh)H)i!^bV86%dNRCX+%OGRSepBUDAE+D!{9ceC}3Tx0J zkHN|0L95j%y+79Y7i}RYj|4d%3#j)W1$4eNsef_$h>#TIk;1el^9j`4mVOe`p!TF#$!-RHFDnrYk6eZfz`E(bk z&_3Q(s2tIQYP}e7XEJ|557!jOo%V)pRu6>M5EX~<)!L+GPtCWT3h_% zY3-}KPP4&~S%+LsI?7VVH7<1oQ>bj!c)*hnjGlCVMGbKB`%dvWLV+K)ZiI;x<3+ra zhFF}s%Z6dJQt!3X7wp#bKPw`Dgpj`sB3mv-^hz+tKhqK%bg7sp@jJY4JPWdz{Djiums zQ>37A_x{5??Dx8Lm>=tW><@-s7JUh#!cqOX*+Zgym`@s? zoHU!Cv<9BE<)3u)oOErR^xU1GnNRzloDQ0w4hNo&=AVxDoK9|>PT!r*FrUpmIa@G4 zTM9f|&Ocl2Ia}K}+qgU1V*a-C_4b49^ZjW;7=C3F8|{^Gpo-RJ7)Bk_D{p_LdcH^Qx$x+zx)cM* zox)cr?;x&3Z`FQA?bFX|g(@;?tT*UIVT{mbbE(m%&^<{nw(k_0Z+__A3DuOb+tvTl zR>{99tKZ5dTVcJ7x8MD__}U{_b)sq!2*)vNTvcxnA+KDPeU*^oF)1*BCz@z>u~hZ?9Pt zv>0-UfTEpGXTLpDv!(#*_C4!R3YI|(tm5h4V)tC-@vxIcf_Hok9y5jt3R_A~t|dKG z4aOU`c*3FI^DHPPJVR-XOZ`lqB%)jH7)qezoU-(0SsWvta!iM z-gDKBfrRw4HaN<#rHpen9S6u4&+)X3+cdn+#VUGRVP(Lg1rx7+G5=Mp^DJ;+_bJI? z&A33~B`jLq*g5$6?fdn^KIbW3+t=1Bg!NydvhHg?nmj0emq8;Fq>DGv)sowIQbI`J>kt z%lrgtH>8sYUl_RWH_6k%z^R=<4Nou^d{<-eus5*(h?}?eDLx1l2812`=U z&KZo)$$3_z0|4__3?cGyyk1oUf`6-8r2Q`yf=fjtbcy)HO@bi>Fxt4$H=ubtfsy_= zKA&&w)L+tfn%lhKK@VRXgNfH1xuKyZ|J*7p;dIb)ORRfwIoS;&GA^x^RUsY7$*+BfuJGy_QpFJ zzgm8(`f)WbTgN=glnc?4W_66xd$_}`|5$@{#v=YH_}GGpWLyF-j#Y}fB$+sEaVT0{ zo{rOPhwO-$7y^^fmgP`eDHSc9IxNk!k#A+?zK;VJ3FF8pmgU&;{3^?Rt0V@K7c=&T z6aHvcEiY(y`+YxZ^U$^o#%S5DulJsOwW2sdew-<`07}{?rN~NOS(f9m>XdcKGoX(H z8a%G7EHBFDRnaGRN~o&uzZW-KuDE*W>j2wP4~7jhm~Tq$o!{MY_7Sp(la71A{BEpa%^;H#x@F#V z$r3dE<*_&q)hL9J_FdPHdFA<$`*35u4;UO8J+`|L!V>t%iZ&E38*@_2CI2ycv*%9- zD)D}XR949=orxAjXZyWp^Jzb?8}bq0t9xt~R5~ui?r(LRjiL8NeM;qhuf9Eh=y8B1 z_{#U33AxGP=|F17feNM`gyC(55q_|JK){@9nF+nhC-1*_StzakW}_*L7OfSEAHzzr z7{*E27-e&`ObRwR>W}^@75_ z$FR|T9D0TeMMqh0;en|yWZOc6AQVS&r#D8!(uOAy<6A|vjiQ8D4@uwp%g4~xMvf>v zIf*r63<3QGt5glnQpgnTo|8I_IXSr_7%B&_S48P-CgthMc{m`CoYd@il0ktb9JEHL zI8rR6z>n%(9+xqG+14TQ8W}c%Rye_guXUd^QzW;eKN&K2qf%*{Ab<_(n!eG^z%}4jJi{h1w0eXyjQbpf@qRIz zp!BVXt!mWold^=DlU`S!EF_+Hl$M?BnVONaUfzp0Wwk;);)}nBa=>1%G8stZ zt(^%UqITotUh=BTA~>742a3HGNU*Y;4NxzJxikAxl^W0q+>Pf|){849sfG$ath6{m zbbO|M_F0Pn8d&~<|KzbTP}(Y1PqrKJB3mBlunM7o0xp_AotHl_QGf?4XaR%d*#Y?_ zn+N(z#2;uzlJXxlW)Eeu^$C(1sy3ir;vHQL@pk^QNj=#d^#zg+7A!0PKW>jSm}EXn$~^J}+Q;)=V>bny$LL^?0k^+#m6o|9u zRstolP>efP5bocfIo@l*VD!~C^{%mj&z6&@K{4={UU)>FOFvWzQF;4>2kKaCU3LPy~`;moX;O>K#wY*31mOx!&= zy+n!azR*Zl1wh~#(Xttczqjq~!PmAO8Fnd^bXN2ycqW1YbAG@Qa-o?>@#>gS=#npl zi}!9&20%T#nkyO>jr4Wck&J=s1GoraP{TeZPHIV@C>)H^up$=R0^Wqb%?#r{vA~Ru zGaQH#lzOtiM;%E z)vZ|{?8m0}x9wGOq&L>a%D`>c{R}V&7(cSS>kZDEa4b}0$4{L#>iY#Y!OqRfYEQQj z5m%0cnGrZ~OTWPFS-23IZ5U&cGyG=exU8-9)|FpCYF*G#+; zfeY{_@aw z!}Os*`@CMdeVw|jWOCy3j_MWBI21R( zT)-m@GA`q8#!Ub17bhv|FFE2%gRTI{-w=Z*Tk~yqD{8nX|0M=jrANM3xN|BDI!MVQ z!rgo*pnlmx$pst7d4hJeZUUwI5b@C>+c3Qy+3B13^ao2q3)(d-7^n)Zz(vfuBk-P4;79-;BrF#GA={A(MzJv5 zvbevbczE9@W(@MT{pd@MM*^D7sPbce3hG^Z4x9RA?Q3i;urg%6SWjOw?s3W^?q{Ko zjxmaYGi)=>*{bTnNoG%96x1q!x^kH4Qg;*Qn7>=Gd|M(MLl&w+XL5sRHVlVn`zsgo z<_2lMDeiQfE`gSZBS~4U+w{(zFxG2g+~Rg__meO{b`)+eo=csTKMIcnF1-*;&e|20`FncxG9tF-8LjH4i918zYzTf zA_xrr8#NAOdUkuyEjn$ZDGq4YJ*m z5#ECqepc|`Yk0OyO=W#jF|UxtPUvgSE4;_+y{De6zAHAY(TZ^Ei&xK&#WS>ijf6gJ zDbbd)d5TEXkxCO$g&pQ%cC$6IHu*V8v`U^!aW*1KK$Jz|f2|5t<0r)wtK+h`L+u_1 z?tkn`)^G-6c_Vg8w5&r5X}JL9j(yX9PMUCAaXGkZ*>wJt)%JTjzS~j~)xEhHC5Bg@ zWxvtQ>zivowC@l#e`v7ugP-19bl=Y3sEx;7Lc@YOC=&96(=nPL;zgM#-1?)X>VH~J z2ibB`3Iy3nM$`6erFky8+pocgugJ~Z$PaIFt=!oj@S@E;gb%xq2H%J~c(Mie!pl8P z4jGJfyzZ06Wqq+1St-VR3(5=TGAt{B?tTS~Vh`+xk{H1Q7R0TNYLXAic*O z0;lB|*ob|-IPY(qI3T>KhiA;J}!%R!VyfSx_L z{kda=37cA%IZkS7n%h2$-%-?kHc`h$$Zh-Lh%374VEkwdIFtK(QR3Rq?bEUT>tznJ z^)~jlW4uy%gxm7kaUtI`$3%Q5j}9gSYWg`CF_d;TIlA0Lw8S{r!~xgdNVhUTH}2U( zwDH^=EiNTE(kY{=+&~a<#G#x{AL7@-m0iZO+r{iL80BLn*t=!jgrzCH1{KpWERF(hmo(vRFi!9*voI{%Py0uo&h=$zY zWps8sR`^G-KU^Q}R?K9tbPmX${Y}cl`4C<;{8f4^o82!PhDin%alP#`#XD zG6$|#2SSl$Y+$~|ug-BQJjcyh>4NOdT-CSwhWYwhnNRpy?~2)8g$hv*7X()$?8)y) zSv23Dw99i)lt$JfsydY(Je)$e%vA>_Q&cv)^hj|&{ZZCyuJV6g19F6V{?BdFVIn19 zOA1LiRKWF=LV$xpT%-zk3KOFMW0EK&<@lL@?-t58HaVMuK!w~`o}DyQ!0-QHlRij0 zt1&Wyl>sJ#7l^nA_RQgthPWU+`}nNvoLtdFc|77MCRa`f6+RP@i9+80ut}Cu_)*wo z*eXoeR2m<>3-qJN705E7KGG~%vt&qo6eq{QCBm}Oex@Ab z8Tl1B-0vf2B;~HSz~fw~w;YIOieZxrx3Z4#sIVkMs3KMIXmvtLSynnfniyJt9~(q~ z@u`i^Vm_j_2O=l>h@?gPKwem(r8@Y?xv{}au`pd94j?GS97je6VQFPlo~2i9KGpG) zLc}FQZtLUD!W!|E*-3tJaU{r#hR9r?uhsVBe1#96#dMdS2@hlRH~I1YkU5e+w33?} zws6)>SwcaTJ1dc3>~GIt5o7;d11jx%?N$RAPnToP3cJ$8*GzGY+nio zdFP?!z*Nu+1_uMbq5W*v*5A2aj2?PS9FD%tr8(zBZh#Xu^HGM65-%B7ekir`(X*w( z=PP-?lZK%&c*G3dYPL0xQ)tiJ(po#z-?vlBFu9esKu)99)exh&mVa4IqW>!}H#`$4AhDFK|wRa~) z2SE7k#A!k+gt2sJ0Gd&>WJ!6@V=}1GT`Tx;7yf(FNhJ1T$4pzgax-4vbY8WQKJx5~ zP`TqQ`SHcB(jmT=w9g6&9aI$Fo*v2s5-^YO0ztuImEmy0B2qu$WMV|9Dy@i|w)j#F ztJGzb&cY(7LZ82_=Cu=oj2x?Ybm*b~Y|xK}eljSs1oH!`t-YnbL-TobSbWY>;3q&V zD6?BMg9L*(z=aIIMn|4-ae@dP5%+nSA;op73UZ&GGS{WT0tGq>xrj|5L!IJew>A2_Z%~$ag05y9vSb3t28$HsW#lY!KGButMXXIlF2=H`4$i#hrnrG0NXzBt}=n>i3$HiCd9`d2a zB*!>@9{)Cd4jEX^-{a-6Z2^#PN~7aPag{D+^)`Dg-KM;XM5xmG;4hHrcIq^nZq`~` zyW7E^p%wVSRnJlB$y-?Od|#z!JC_YNSGIuLOeg~t(T$HE5h?6E$Azs#IMn3o+~_ql z`kx5Mrf<9$jOC_%c%ff=W!OG@Gdenl{TNX-sGs<7s0P0-0q09&f4eVtgwEHV#L4|M zrk%2fQ+>)-H(O45Kd8SiKVlOOu=_WoH~cdGY6}+#`Vh7P<->ZL^|r;t+R}+GeZ|P7 zT2NAwp(EtYP?DWy3nV*_)+i<(Gc1k$9c0PaFm?OFsebR>krrS5_Z3&1c`eu~ zDxjIKgKPL>sx#`-_w#gF%@ZV=&!5V;|3#j4{p{rQOOAi%`O--U9R6a*E4`N?gC=2# zOSdc5R$d>TE3X?uV?;-7XzU?d;yiEJY99=giGYWL5_qXrkFW`lFm;s$$puJ+*% zsJ%{t+xyi};u#xD4DE)6ZZZb>k@yS|mx)|fKf@W2A8(uNwU%Cc5!S?XaOG7R0!(9B zI&2L4&?oBzMZK+Arq1{^iOI-Mw!nVNy{#y3Jtbq-x;(%X&topBNM4;MR=n`V_=uCW;0bR7^JkC?)ftFao9T3)AhczNBUyhmwa5~%{OW6GOv1~od3 zxF>z{;%<7w+Xtv6?cA(V|Ni$~-0uN2Gt^A0X`QY@SWQrdg*=>YkD=_*ptAaFyva^; zPHEchkt{iXQ>;z_uPE@G_Oy>lO#o9j_p5UY?EnVnVn@}Nf4bt_5jGYk+`~3aqHKX2 zghahJ%QPc($j3izlJuoah8>D77OfXz`tcX0dv00Cy;?p$86VEXhkg@sF+N!`+FtHc z#_zqm8wi15>0q@hdtp#Qiq=LSGF$xbN<3TOT%Qj=klqj$k!hVfyrb-A!S~@DMoD9I zWyo%V4p7uoZ2?Jwo-7S^;4*{_PB8xwI|(iCQlA1T08+%^M;W>$^&te>Ld>|}Ki!yH zN?k>%{EJb+GQOc62eL&R;uJpksmcs0v|-^(B2RSqGv{DJj*v~hD1aSO(AOTKZ-nQ^O`6jiNp8#i%VwDIB%kL~YmQk&eqZ~WIbIYuNQ z;07X0v^bGS;97|1xG$S!CU7=`xDW}qHwlEP0N@4&1cL#;#6b!W4>A#VC6RD1ftW7o zb|8`bMG}%Cfe#L%bxLC7k)W&u|Gfd_EhlkQ3K9w?@>>F&?a4YKgsfv=`mto;C=nXL z6mdEULLljJdy04n%cHRr_-~=)2Vj;luozvcimJd70HIDy)ym>~KnKD8ovOdWB{`Og z(R-0*;>1Utm}dGrEq^Y}QZjwSBh}U~y~YE?9+mF;n}ZCM{)#SRnl(}IBE`cmgV;J< z0FiVYnIW;|8~B@uQ72VsCNAh0@0WMxu4M)o0 znkRII6>tbrt(DB`l}yQx0t?aQc2u(eu%c5cCoewEMXBn7(GV3u$)pw1B=K}Yyo^3N z5xgQ|3ESM#sNCK3OgX2lr7U(LT{|XH5Sbu8mrx$b-`M!8AC1OfpmR^|Tft){; z`I$(F#%MtTohz14KHG11>iL|R8JOCo1wL<c$7K=+EN#tlg#VU8Ha>^M=Om3m|pl3BpCZ8KLFK>IXjJ4h|}T8&;S8OUil$0cZj!PkAYP;J&d?-N&a|JRTbwt zO49))on>6vIup?x!4k2Bq^B*ZUrpqDjC7v!)+@vrjz5@QKiBFW(QS>8Y37=I;8Z;P{p@ z1hG{m)&Q*Z?Cx$I3VvM*$`(fT<2-o+zsxy4V((PGUzV>O1F0?QYaBvrvHv6#C%!uo zd-un|+oT1+%c1mAAmO6%gZVf7R&les)eCZ_B#5N=L#A6jCUjeB%Ji{dq?#ht6IwyCYA|Xkq^Yf)At8Cgk8RiR znC1+ZIQ4fPM4fen7qp?CkJaYxzXv&1xY~W*bu3o2yg_wPG`votiji29-xfnQ`?s}8 z$CYmZ-zsI0`sQC}2*=1;sYO1Pz3ZAc=4f-K@EQn8lkP;O*G_V`ElKyZ!9skYk~U%m z^LCwkUwSM61JO(*+gMSTo+u&8W$~ovHb-c@(RMG%2eSla#DTf~F-1!t=Q*P z`bF4((IOY>j6=4FMncEzUecOg`Lqgs7aPNO#dI1y*QIXhUns2ktXXsWc?E-dz3VhZ zgZ%tkc-ML^74ScGs7Lx6h;$9Gp*(_2!JVl@RhDfsjQx-qucxH#r#Y0xIcQg^<6`HJQ$q6&%5A2uD{jZ(fND}n zrR##O0@|PKiaMM#n9T{(j~*j|qw@&+I)(c%kNBVb_=0}$ZrtgMWIVQh0;RXw#W*Ur znf>o;#Xlh+^l*DkF9mmuKfP(wj%5VnWIevGujp_V)c5iA;J8d3+hBC7%NRM(&?Ylg z-$C~@V5$s;|5$x^O=jfBbB9sx9(K1OYwoH2$%2Il4wVoV%loZZz?o9A#YmaCtyTxu=Og%HOen`S8|wO_Qg!8Zx@Uw`nAlOneiu$-#1)_0EFFH>|5AE zlVcWn*`L5TpZ|)^FbaIhT|ztAygBL*+>s?(%=3sV_Wd_?=!{?dW%^zBq_A;duQQks zM&W%j9a5XQU<9mG4NARSGGVpZTU%D10#ZLq>uc1jf@p(lK4<>RA7)<&9-TqF6fcrp z{ky`jchyOI_Ml>hHFjz>m&fEb%-4`~ZqJHYz+j=3DVwL;XHSkLO$pVPw`hnnekz1T zG(s#Purk&?`NQfhF@!17!MuL|%{)_$l#W3cqm@F_>^f7;wHPVWPmi?cpZ7JF$rIr) zeRpN_#@ShA!2IMMwsWG%=6dcF#!bnc)Q0iz`-TF3o(zpH$lXY_iRE|A4Ls)B0heVq zJm(+(w(7siE+sM(^=wl2O!k%!C+(3@ZER0ykgUpXcB$_yz2KBfuAC4J_LSw#UE07ZNadQs5kiO>G=~WD<>HDp_u0B_T;pVUSQ^qI`K_}9^kh; z0OPxft!E$kVDp3j$FIXOgM3w4Ir2O4z$j$hI0*w55?ko{pDBl^*YLVYzABZ^>(u%7 zZ;$RU!?@u5On&%hgMp8AMSmJ0G%&baMa}<>P5Mu8tB=NK#BTu~kJ=|uB2!0F;J-HM zyX4EGZGPv-h4_;>B0-tlibcBrVUy$^{{DCDhD-XrB{d1Yy!9+NJUTvEidf$>0AAvI zq|sV8YUaIcoBqGqq+6-(XkW1-Jhw!z_nB#)aMHi>%Iex9M5L6!DUpsAm}@4JHbD1( z4Q~DF`5sVe!06JCa+9!qG+2Fdes%7_xR8kw$Q1MkXM)fl%UJGh5{vxlXMyli>)%|w z?4(_gd_}?|4`SC%$Wi48Tbk{H?+%S7E(QVSeC^5D% zRI|8X=Q`GN5X`Kb$V>xf7-GmwHZsgCoFKcz--S&3E*cbqx~#-8)bPfiAC| zDAU&dz2sDDB;&uOs3`DG{8e=j^8?0TD<={DE8xUhfdJoxK@K{azrP-eUmi>sR5#fo zmLeLycwe>R!TUsxHo_j6PA$7XfPynWXx9h6uK@XJz~HaRNqKRnXPQ1)Jnn<_1OzQn;f5J@fG8 zhEK}udHgdE`{`X~c^@#fEHsN_BcC%wsvgbjy(Jo1rG~4GPO~No zK(3*qbWP1tA^)iJ`vlJ76x~W{hrh5zsw2W{(x%{_a?=$q0@7zd6rM5SY|-=k(9$62 zeWAKG9u5WRT-MRyyv2uyW-kLtQf&j29V%-vR3UqL}`bf-c5G`BqkvZkaBTXfHm|5XK4?OZ}62gZo4~OuC2vhI4 zSz%C-!Tu=`#JGduq!X-UScYUrNi!UfHfUj}N+O#)nWd$ZDf!AQ=QlT$pKL4}&6U?P z^M(O2E)NXyMMqH5!y40QhVU>%sa1yEMkq_A*?+hLJ2L zeloUBhE;_sSvY-7${GiZq{$tfX zdM3@byS&Oe;42R7CsZoPwW4E9C-Wj;Sd_^SmMH%O#zrnA*lTABsz=KuEd} z`=~{vU~ZDrz}yNO>!>#0>TT&00$y}UBq_@i9SsqpuQOLz3fR0nOCiQ9QU*^%i^oHj zA7lFAGJg8U+<^<+s-4(EG&|hlIkc;mYG3DO3uBYsp9Zm*?NcmviVl^PI{ETYtv7EcrzK7qwe^kvx@K3dI~AG__Hb)1&11I`0I310sz(w9J?;>h5N2 zv1xjeP_geh7ZMm_k zg5pxN%<2{@D(`e89k<=rjX&kl0^GH+-I_>;cU`0Q-5&@XO- z)a0-~OiC9VL#ivWO?VU#Q(@xqINSf|*lVY`*Y<_6}DAU+7x()A?wBE-Oj@SDdnd>teY zLZE}7`Ut0P%HwHyLL3*w@(?e+P9y>r0>v$Qc7jzO`;M^=%8jNwt9`ID2*|Op)0zI1 zIGpcLC84+dIjWj3+=LB0#fiO+k|ovWO;*`|qr>Pp98a~zGd zI6L8AUsipxe@Tq3v&<*3IM!?4nq`YdEWOtrr!O1=TT(bki%5UbwN4U`|J#PSKlaRc zjcT2E$uWDBusp&7OeaB92kbF7BqR%~4YVIC?aCXlALIH&9=+b3Fb_x(y zCg|Qh9+2eV9>80b=x6sG;CoWcc{MhB20%y`UtK0Bj4m^wJ*vO3g3kTu_IM)_Z`(qg zBoitiacp(Z21sao@Qk?E3o! zW2~tg@b|FZ+=lj}|L>o zs)^?e00b!WK4t0(aE_ODGoBd$Hyt*t(g~JpCD-n%7@Fi3Ei*gb3}9bs-!R zu?wCDlg=4^<|kXBG7F<*sj)2-A2xm*KEb{YdC_K>V9EB00|C`2m>WZEy21h1`=B_x z%ryaHoe_cHw$aUJDB+%kDw;850?Z&TG9h8y4cdAm0!*gvz;PD$VveJ`uh1! zb#Ov=6o+Hv*vJT>g}1qIwYj)aRRs6-49x=iSA}giw1~Pj>FHFW#u5=PH(FdWU67xQ z6?b2&N}YUZi-L+&EwJR%VE%L(W`*XMQLk?A9dd_4z>vae8h~dpu<2u!^yxa6c5KCd zkVr9qr7Vf9b?`5|2)a#RZ)Y+*@oHbg)Ei`b%yFzjZ)R-r>ctL!?!5jE=SThl_X|6@ zHagkv>D8%1;6@SrQ|TAl(t1^0nT(PXon{bb2X;kQESd<=bD21Eb*eCO&JB?4!%m@J zxRzG2mpQG=%04C%x!CWayNd;*v(Fakoj1xlb3v*lXtJTS-dG%Qp_51k zXA%kKvbW#V#rxF0E|+aV3*4+9bh&Za>XiTHfMa_)_=d;OQ7%a&4G34ooL3(9awz#J z4G2t^tBsdShFS#PKH$m3Y=6M#ezdlZpm*ds+79C7=5AK}@bD<4BPddWJ5-ljb95@y z&@o(I?$>+peRk_U<#VSBu=sLEW>+vlSq&AnqVgSMuC3ox4Av!b2X;8dapk-+u&QO< zTwHNX*f^5;5h@&~_BAsuf&Q2pm};QgFu|e^V6KemiLLS@QI6F47`KzMbVT%XFk6Ex z-M`Y~@a3wiRD9Dq4g>fK=Um-pFK4 z-dq#8isN_CSrmCSum(k>6=sjaEZlgTcq=sH@Z3nv-$?Muy*P=u(+f>1=_RdtAIKMK z;=o4yl_2}xCUHZK;yb=Zawe+zcU0S7Gq&{Q%<>!Ib{uvGb0@x<)2_8H1iQvrpVU5w zzWsO7N6y#vn%qjCHejY|po3e&9~`|1w=}38a;~70slJ@b==OK@J#eX|LvN;?rr@7` ztEtKGkNn%kpKY=_S@nOBPEJto|G9M9gx^aij(p?{J3XTCzYV#htd+`zC{{!_0z@4IJ=bqa6*|G-n5gH{Sq*L)kwp==``79A5CXQYRR1EheU zjCTK(PI>tS$U-9(SuFnmc{~udEJ&lsQ5i~C{tWf8tz9e;2REe`hef|*aOi%8X>9xz zgo+7KR`Cpvpf`9zTS*EVH+W!qYum$OF@@#>fQyqMxAX1%;_~~IO9?4%i^Bgx-CG64 z6>tr3}yt&{&5D8}-$Y~%S48d}D_vN$c38xTp z-W=CWOLz%r;uQ@7=GYjIvCuv=7kfaBr8FIb~27zn6F$%`eW!56Ebm8A`+Rq9P{a0{S zW-bDy)vJHk3m*tRT&Rwv*Z#m$t%grbn*JC-g2tY-SJxYUc#m6SSDH&P2bTx=X05XA zARr6+*x-spJ8G#K(#k;b3Rpa=lts*=!!Geod|Ws@wcv?BDx)T4QH z8I8Ff1@`1$R?C2h4?5Bc19Y7H*N3}_9;)6Y*w;}@;N%>fIqKX!9&E8tAZjp&uiP1qAuX(P?Ko{eaU-q9{hitIfOW*bo$h;U48|X? z_zZK-SR>FeId(Z8fR^qIn9%b(o3*!#;!daFP>&2iBy3hg6iG$e-Tq@?I>V<|ZQm+o ze>m}0CB%a_jMHAM3_zr`C@e8Qh@bOKOW#Pll=wQ{d?703S+D!3JW`D+macGLZWCqZ z`LzVc=O3`SI#zB48#kzm=;Cg&!e`!Q!79KI#lOGST?yDr`6`_LJdxz-;31upvx;^E zb$)lf`HVKgSllW3L2>`K-lY}K0)Q~UDWX=zLn7!_On#pa^Q8r-h7+K~14ppE zIdeO;ZBS>(!awq0V!K+ut4%-pg!CqoHU6gQw{jn=A+C)G(1hS|Cyr5jZ{OX|mBgtF zk5bOPsq3-wea@i(M3dWS)+nxm|6h$FFfB-GcDMoqY__8S-HVk@n}kGnhl0%J^O)f3 zAq==*s1w9!poH)+n1`O^htzTqe-TaWJnavQa#7Ot^9bD?1WSoG70u-CD`Mv_If2QX z>cTY!yN(nR9ZHU-Jcl&onMa$*M2=67=vgm7wN5w%IZ96hW-g`_w8&%xFlaFtT&a_*OE8vkyY zbW%t`K`d~7jfKlh)DjCunqVKkx0Drz7U$v8?*c(Np1rO0+H$tDmHZYKR0*RW0MIW0Q1gaPm903lxg_q-*F zTDpW!3CWSs{nK0zmyX;g8vq*su_*t~8h=|C^6w3F>|IgE%0;Y)<;+0LpX!Rh%B2dJ zGk~9!O>2k}kjgp_(Ndz+Z<#dYozMh_?(+=sFE#}?f^0x5A}(*S1Je!+lX}_4tt9{H zN-kEX62L=uD0KEh!)-EA6#ruM&vb#&eZX-3)X^*AL{pXp`?;{80RuP9DsIm$d$ndA zp+q_oA5sLurFbd%%nU@w{p?AZ_ymWArd_A%e3{-)l+IBcde1z$%&gomG_v4K5z^Ofrychliyke;;{@$tCGSC@# z+ucXuJ7;4tUsd~S(o}!mv>`3Hu&gfbT#^ME3Q~xE)|zwd{7Oc+2htmDe_X_Xx88zH zzSMN7biV}p@{LPIVzY&j!hr>AMDXn(kM7E13A9-R>GwCGV-K%MS^$NV_{)vGg2aVD z0R~6AlSbn!)82&kV3@hdpV3MXu`%Kp?r>yFQq49gK~>5)fEQG2vVO=rdKx42*!BSa z)Z<}w=OtgJYOvz6tBh}oReIw6`!_|$kSTEg;?-v&c@QniVFb{?W&8V3_845&Yx7WT z&Hw$G;zkvm^hhi6cr{d;q$oA^Rp<7E1PO*ef^UB~A&@{(cdg5R^d&xwuSdublMtbG zqBJ&q-%GX0ci6-|Xbf zJnoh;0z1-K+p;CKF9mTu1mY=&-c!=MVDX~Jp;3WM;7}2s`>kK&mXPbq4@E3I#pVn7 zQULxAg=78bnV-s3IBo}P5`z`SU#$EkIC>K6dqvyt4gVGLSx}% z-Fpy*s;leq#qWL+!Bkbd6bSlbhm-xe{noi7FT~3%`H|$32y?K`8Bx&KO%T~FRw}Ey z4}v!GAOQQ2{Pf|!Gmk;*7=#G~kPrd=R`TSlA%#WG`j<5CY!C)0g5V-@!o`;-&%LO9 zUVk|VfvZBR?QC1H-_fgv{H?(28S}xrdCPx6Cr1&cr-~geh$HZY7aK~9S;Zfb`hHR6 zZHd*BLr{diafBCOLuYrTPp-RkYNq-waVa3#dpge66qbj z+nFFIVvZsYGKUg>8Bh3msJB=3QaK4QD^2*dn#kQ2Z=V5O+Kc#SoJ8uAxS+}cC~@04 zCgDeG14sP7?cE4Wl1Y3LyD+>iUMABx>6}4Ha2Ar8vbE1TLjH=Supemx*?b%(&-?wO z&&X4FBvLmaSaqtY;@PQ^U8&M*sj_#euZIC5cMuVfraYng+&4{qO+`&YP2(<2Z7J=6 zxzfW)H*%6glly_5Kh%7e;>_;Su?@iwaWk%>bgO`jnJa#3M20JeJPrWxyQjXA$o!td zK?=|Gcan9;&J0wO#&yqpN0}vN@Fv70tM!s!=?)ytkr}a;6_CQtPYAL&%1V>qa=!zU z^Jk}bWv7C(c$2d8D05UXa!O2cn3%IGvU47X<{;N{?geA&DRccVGx!@bngenjQ-HT? zV8iI#4{OXcjk(diZkil(=9Q8~~#&wE~Vsg!^NXLbsGQqS& zVWpGj;&N0K=>ZlsH%wZfK!bzwksT-fy^1;s!liVQ6-P1;{{&H8(HXb}4ze;tf>7sz zTF?g_i7~ z`H4f8)#x2Z^fvPi(lz@1@{5+VLWF5z@B)kFfJTkh)=v)9V;o`rVZZ8TOts+8H5^RiDJZth$5v?#Rj^Z zW?38{LLKv!-{W@7CYA+LEJhNFGMjz`afXg*1+qmF2k0t!zK#uyb`YXTjr=Z}2sA3V z)A_x%-ewrolt`D@46wBpGYDPoN)ZnLkYHY%sAkKl)R3sMYLv)(=k}Mm!L91gKrON# z3Duracktlg+SCwmIy6&QQxofeaBnDfjM{^_I@vh@KLDhrWT+>bNTbF@l8bYqk&)J^b;<0r)932f`)o&^n@f` z4AKb-3Y1P^W;cyWvptksUwcY61}%S!`arlI`D3Rwf;2X)xNC=?Q+xnmWn%=^i#}n(7mI0tDYaI^K!Z+Z;i%25#mmpQm$UCl8s&HA?{nXXZ4giBy! z>}f@E?+Dj)U)`?{3#JoLYEh&$PT`<|H8Y59sk0!j8NEaHw4<&6^pRYkkm!TnqMD}S zFjkLAvN%!I`P)kSUOE zrb^TEq2ZIcAPoYSg7ns;%r+KBNNFcd` z{(IVp>7T%Wz>ln^#zSO%ys5x%0M2}34UTW*P#LT5A@Ek8#mjI0QW8-3g4K(7?(yFu zTn13Qz?AQw_}7{fv~|T%(t}K|WK_8kF@XzI&QGqY3}t%-^Jx0`>ne**raozc>z5}a zUX|nt)AtXenx>ukXqV17Y8Jk6Do*!p={8o?E}{8zURIY##dgjn&eN|*POv`vv>U*Q zSLCW>H$7XzI1yK8HB&}xtt9>=b~c1FN@LOG)kLKpsPg4Y2gaeU%4tjUm9x8K-oK2n zeT=%2SyQ}KH+8j=Z$mMet*}#FwYt?C9LnP&lZ3bW6nS3fzgN=o3ouY(v=NK5t_HRg zfB(9rEEn5)C*t9i=k228 z4!$bpSOIxopq>F!MH)gi1->H5CCT23FV1NN5q|8^EQh_s-cVRbh2DEaHyFCR=2ZVy%`@YWPg*_r+o=L!3Z>b({o zZKLn``e}>4-v}!b)vniJ#i+GgL8<@t#Hl!SS$4LFh5?jw@~Qnix#9w;l#tJ;@-)$w z@#^y1biBYFngChD$a(|X_E0zGZyv5?-3JY#MIIj`vTv?(j3WB+!i5Ff;_FqYVzLG^>!Rdc0$o*8b{HYxDQ?>A?djC(& z&p)-$KXvGTq4nf`8Cd=@3i@SS_{+5am)YlE7U*AA^w&0W*LIfI4nfzBh1bsg*RG$h z-O$(W^f#VzH{O;vz65-J+PdTgH&N|3f&HqBe{a@F%R=Zi`_fORq*L@~PE)s1q!o5P z;NJ;H8>RH01fx?O?LFUrKK|a9n$hkdlY5&NbesCxv@*nuPD6AYe@Vz`4%z5gpm*2u zP!sxbi(etVhakuMa92KCVP2V9@o_j${zH@YRO>%^nk10K-0g|~@9^)#PQql>AOF<; zlTV`prau0zca$Wauf($Iq4%X7`LTxlr)E_`wZ?bfF#eZW)o;2~_p>w6keeh$HROnX zb66FvyvL9Jjs@OM;-X^KPups(}#-zrS2Qo1ZCmQ%zzi6P!#_aI|-_%n}-CgdB8EVb#Eav0& zI&WAA(1d)vIQYRuiz1Of4s8>sai;(+e|cUMjLkcMj@In=MuaF%VU8ERgX$R*J%+(A zQ~VxDD`Z+c4xuQCa@0vhf!u`IfnZxa6r&OIpz$1l_p|kp*>x}DYM8*~YH2W&K_kkV zKBin#(r_*_BT>Um2yp8TtH4Fja!!<`Kc_liVW(%%NtC?^U@7C3vN5UP5?ZDxr}_oO zf%!QMQXV*H&3i{BYuWeTtUY7@m@@#j7<}76jGQXF&89JV#TvMgXFLphfIjH74AN2Z&^;4|_i{eQ%Nv<{%h#`oA1rKGyEUZ!ort!?&$h3Rv}8#;9Np^u#U_ruCkI^QFgitX+b-5(emCoPNrE@Wvs zZ3DjdTqW?y7(jLa$?ls63)9Fy*)2Bqs;T>nk57L%U6zuGNH@;g7WQSQa|BWO+8d$|3O?XUgtN3;ty;lWrat$h$7sRt`gio%^ge-V`hEn# z%yt~atxI})i;Vv9(_(Nr4)o0_n5?kp3KJ7%U7PcVF?nkMH~_IU3V_8JTcj%=4w9z~ z2V=sgW*3r@ug&oyBsYsaUG+0m2JSlX|OH3fPEeoL&E}=N7 ztSe~^hlh+7N22m!Xa>&tL^AGzqVavDwMdE&5FLPoFkD6cc)>qeAHadyNi91OvofKc z&I{~oyhZXPzae0HO>;=-;SrwGx>TtyLZ;LJPc3%a3+(jZ)Vu3gs-b$MZ`^eBjP`cm z(I1rsmUcQRfagTcxy6|?3sP(wg88GmzJy+qjn=KvH0#o!wRrOH@H1ei^KjY zpX3yzQ?M~6eB0_|Oz?vi5i&Oa^khc?6GL_Z6SlLU#&Ke@ZsN<^nvL<8j%oR0NxKiX z9+aImbuf#xsiiuf=U_Aim``|=^b<5H<8<<3^sifZA#~KmCq-ZR=XJ;Ar@U7X6deS& zw$ob&3L!+HC--dpJp4?6P?Td~`&a&+ukm@<-#p1&_pjq<-pu-M^mOX|goH1A4@pJ3 znBRQ8aR;|PwqX=mMQn@ogJoaP4UvrA{#ii~K+h3!>6=($*8TB0WCggtBjy#vhx|9x z;!B#knXQeQseIFQ6{T(X`JXb=y~iE4duyW&D#8@DMu_^|edPz(rH?nOlfT(eecd*G zPAy&}c|~a_0H}^g(=FjW8{J_Zi_*cY^3W@egV21j9f5MVlWDrz(*?u=IIC*_9buL< z;%v$yOOMxA8XpUC2n#Xr%FbG*Z)P2YDa-F!9!-bQ6n0;BaC)$ z2NHVuz(K_0M_7)LqV|0d(UnJW1lMg*SSSF(UNr76`$-4aib`Tp@Y66pI3Z6`?Ws1k z6bAen^!`aGD2Ww>o5g8FocoHAf0rm#S}ZTG41nl#VU?{RSjo9x`QBKuX%BZ~bDp35 zV{IdcW_|0s>%-Wj+|`0ns;XLzrnSO_GtUuTH z*Q50clHMy|g8O7+tEF)%f&rDTNf%x=;gCHC4bcuwXFRQ3jKAum_^Toi6hhyx75&kL z9Rcp#JuiA{{tDvwyib-W81`*;)7}Vhl%@IApkWSxs<^Vd6n$<+-yCih*p zF&z5&&k5W9S4y@&4=2Qbf4C^i zF===Itb~`QF4Futem>QduiDyFlD{W-@b~`YW16?6Ej)F$2m9SWuiqFuYTW2&F)Rp{ zBB~t$+VgZvU|H+_8Ges+NImEog^$G#S_D`#dquzsqrzf82@7QWXpJXPqL_Br2e$EQ z=g5F^FN_-F0obtuZRyUz_7-L(tY8ka-~{|L?wnk2vmXHwJKyQ?OYmW5MHW1k5R<1d zG_;+`pNENxcWV=V`QX7;y1U2AH=72W~H{W98t`Ol=AMv-~6^mo83dP@W(EzV1>iU8%K^#Sp zQS$XPbW1{|5=DPpq$V~{7+;KYZ(_r97B5(&ZfrPR@R#Y>Kk2tj)b052A3P=jGG@BE zxe9Y;3ZC7g9eTRjC_|1x2VG-qz1=MeTk5ct^6zWH;1c)zi0X?$&>;MTBNsn|c}tv- z*L|9*F~_fok%1WS!`#^SFvWJuXNdSJGyBY)aDqcrrGsUphgr|GI*Cv^!$n0Xi#m4ZZJ%!n`?k3kCSovyldu;AHY7X=PYLhC zX4kAV2WKcJBJ6aC*$#K}C=&y^=J%SkV-7!))R*X}KO?6^!?lVrG?BZ{y0!Qc3aVrf zP{|hrd>{eoSq zt!uV_!4C`>GF=c7tF96`MmR)g0iqr$RB9B4Pic`Bmr523c zCBJ9AvFDz}uT@O7q)v$Ua+M-i?fb{6PZ&NA@{F{^j9VM;=43XSmp&o!)|zwqKxF|f z(Y3IxpDc61w+f_iMS$##4>D%Y(70Pb!OK%i%o9zu9e+?J9`(*>5tJ96p9M>RuQdLe zU2tWT)>8`HOj4w(T7s}T{bO=_Gf!K#e@l@ovh;|YjKys^=HKl>_@F_gY&xgj;M05X zb7cZ21AxxRJoFEVTw`K5vT7*~g>7gUc&ex&&i)g%r5V4a9)VNV_A)Vn1mjRQNe?_| zmJ8jp%dulml;l|c8A8o4npOgP*O~oj1U9Fr9PC!@x`G6@g=nP8$>XtdB zww)W^48ZQ48>t4-I4(_eAQdW?W>_#5r%MYsSnyAAi@M7mLakNnq%FZv(h>T_+NI-+ z>9HMr`2yL&>XJwa2Q7uSrPMTRCupAyiq~_spJ9Y4Oz@7@v~ZThDn_i$m|1MQ;GVZiT@LWi@&bkgxth(ok7NHNMTF+k5Dpf2^E zqIkj}Fa+n`;CXF6k0BlNBM(qu>-SMvqfLt{cMu6vTrD+w+_oe~;Tz_bYga#*TjKGU zn|0oo%cCk*w?t0_n|!7Lr@4qY$)>WK%JQPB32%WwBuM^jzoafUE!AMOfX$losG@ov zcF+xBAsfd%S*XSmafF1I=gn|_|96yhzeA-8iy4-my{vZ#0|3T52qpxe2e^TU=l>Jn zDy;lrX$T;+m<3e7C*-MP>#FV)%vE`-{};d|`u3;me^gbPyt)4caM96{#9FK^E z-fn=ix1*(lLPEpBt^5Nb{sV9&Bqk-Nm`c)MLIFaMqMyGEEg>!VeQKIYc~v#iFe4VT;7Y;4r~TD?;@1B-Yf$UrP6~_vx5^wX9X<`@E7wCt??F{%h|6$}L5iWx zl<|bns%RU-;{xA^L6E;h&D4JfO$wc>{5J8Qj9!@tTn!t*C$2gXWB`S@(YD&MjPx6ofF#}oN2V>@56eW3GR-zIoY0hyE!}zgTJLfA$$lid~oTHDB-8|VGw?K z9qP6YA4_v4zr(9yRtV;LnZ*OZC5?<;ki#ZrAVVctRAiEfCuMakG6S+y8?vvk`6D1!buy0X<3$7wpbgURFUhCDTxmP1nfEp`^@ev}34BbH%8VryD#E1cVzrVM|c?Ozch^rS{$5V89w>m*Ilqi;C35}1nd zV!Ss+DxxI_3)WoHTe}xBA|m90Ow*x&o5uU<{T!(8J}KD1sCozxVsZx}h}V{aUEs|U zhG6VDU+qH6c_EP1=xz03NpG>Aejf1|!dQl6$7$Go{vE%$Q`{&iB_xzs5(S}!bm+U~ zS0It*Bx*plr`JAvTsb@Ub9wf+p54b!5f&KgRjmGEC)HtR&ZkXm&lFE|q;9=u^0^?R z09efaDJ!}e;sFO#!iv=#!B{%K;TaazE@xebdclhNzPvBMc0%jBZr$fUzX77V%Sx5T zSaFKH%0IEV&rxkytpr;3*@Uau9tNGv187t*BBd&!Dl82P(kKtc0pVVZF)+VX^d@BR zd!=lS_{D0%78yAEf!6!^1(b&690Ae;TLV+7U8h$cwd;Ezt(e$paIb6%6si}VI|P!! z^QUy3N!`OWjCuC5t}WP$xCj``pAKl0!Fm1nG8Dha_;iVyN9SXS&=W+vm^szi<=XkZN z>M)b3br3}_HnxK|6Z2?^gCGor?~~ShMrg$a(y_+Ke^6CTq8tR4Fu}6BBWPn>D?mKW zCY(Y?NkivE>te%#@<3IE&YT}ggfam+8;=?OECV#gSEhwYnGyut!{2Gzk>9YD%T#M8 z-(!$t^QDFj1B?K-z&9Mm2{oo|56%3awwR;suV$0rS|Qvq zG2>RT<4Kf92?H<@3(<=Y0M|=N2?S#I?qd#j74uy>0;CqhpeQyu&qRf8l=Ts3o)nz`;lSNv zX`fZAk8}(Zf>8h#LosXSaA&KDce(gX^>J&PM%PbwIZ7tO(1@zV5~{}@BFu0Mz0w?^ zFM0*QlVjaV^-s0=x-T@oXDGyU03LrIl^f#K7&DHlLZEsEvQPz9B`O*JgkN>;B1YPS zhW%gHSa`tf#pth-D<9}wn6T4n)1V9^xmL9rc)x0F$fwFuz7A(v&KqHtiI3FGr#5BH zxaO+b>l?AQfF64|!^hs3%;Xq}&Ew>~5b_q*+;nQSes=2gGBz7R3I~7rN#l}hqqQ~a zliG^M>j3ed%Dp^{fjOExeU4H6A}Pj)0k!!1EsOD;pm!JAhG)#HBbNMBg11=O86|7| z!eH0)rq`h9)vl)FHo>Z>a!om>|GdWMvN@bG90?XR+BvzMQD2EyPhP*n{)0~_`NTFL zpF>X^j#O{!=)J6lBbqdJU_(z|X#P4(y76&aDT`eahbF<}NID3Wtg>H>FTF_ZL_57~7sa&rmh{ z8q74<{vjnaEV}m_Z^u&`cann;+}{hDzT6+cc(_1jQER6i^Mpl$my~2nY#mv{m|X#} z$vSeu@>>;-WA91>EBApyOXvWtIO%clGxEEc1UPgLKT z;D+0RGm!RcCHl;&8>Qt)YbTi3{ihbyx*by#ji$HJ!iK?ES(z(X^WZC8BmT9JYwSi} zJHpGi-II$oPNiLAQLKBK5WOmzCOkmF_a^{e-RR9Dh!|2(rXO z7=vmjc^;k9WdV8sg^Y%Wti`5*%5-*+ZyHC@TpoM@mH0$F@6@s1Y56EviGSq#>olKU z1TYTf=?>pZGX5ja9QpQ44-Y{ELeBasM|FeaEm$90#wkrfUDw=|G0(rj=UX(8TJK)> z?2sqh3<{11Zr)mgyyaWHeL?}sxsuflD;(U2NS!HT8ygz2+gY(ei`7O^ICRbCW#Wc5 zl?1%A_LXzZ)sMaC$nIM3kGpkhn;?>>Bva^)4rlwOtx+qKSl*>MnlmKn1!V#GBx6p~ z`R4VUSg5>G)2Bri2Lw~kWn9@$*@@iWhz7j3Y0VdZ4s(NWQ5vn^B2$f^VHmebcLQmn zgu%mkZNGw6$wdbn5=`kMuMfx(F7B4-4p#c55V+V1hYlO?`jYPcrO`Gy4%Ro)KOG*A zlhhHc2&!=`*?FJJ;>XUQAjX$8Mc(w!2VdW22Knd(D?epi<$q005$ZS>{1`>@=JNd- z8~x*^M|qcs8?gXq{@}Y}1#tu4M<`{%tgx5-0OpPsBX)>Bxfhly1$oJnzLy$f!Z-xu zK|rgffZ==fhjbpCX*XQPiaF%;fKvDHH5s`r65+Yl>R|dL!do0m77_j?2}e9D)Z7cP z`ds)X{K@^OR4$ydSj^rhE6S8X_rXU*okVdT9Kok2=rT^?BglKdAL1Dt9kUv3dakRt zAhn-DE9VjM)8Waxf#}zr?`}QcpbKteLOGtO!?y7*SvM;4dV!D}41;a?RfH z`?nG)gS@CJer!fS3MzL%k!YA6p*;XFtcaxV^Y5}J{yEf7A`(fn?w>@Mt+gs-P>)K&&I%^VPNv0_THyzUjV77SL#QNDpiWVJOF{Fx1VO4P z+!8wc1_a3&v}epIJSM5UIM@`Vsp%-iKF3tqu4l8h1X0cMc0W^s1Y1ylAWWbh})QzdzbB<29N_eWkYPR=863jwhp8lz zGPg53x7#H9JUN@&DzS$$FXk$TcPAIlo;Q9c^lkz^v6ffdl1KR^Z{bd$1qWm90pL>O z|8xgl$rvhve~tryXU=HOEmLsI~<9WWthF@-bTSv8mxQABxP zEDr|gU?nWajO`{R>@k$7&(k>8OZMk;D2NMrB})kfvbhir%EV+(Ht6=~uZ8C*GAv zg~K|oHCy>hBvxxzMWu1F`Ef-|qp#;ZuMRc?WhB0qY2{^?YuG1^o{mb#W4FMZ{QI3( z6e*Q{$9e9~nvhNFOyS+1$s;30<|4KE^li+)3* zfJGR+Pv}`KPy1azaa*-fk2>R6mzc!UpCFo8GgmkdWu->a;HzF`dy?i7NkqaVfr*2c zB^XF?)Z|?L+=#2nD>q%y4_4(*5g@yXGGSfp`BBhwQKs`y>AL@a_C>?lv&@d6t}D$)JDCYc5yj9zY*zo8}= zynK73%D%YpLU5&DS%M>;g7*BF@RSs`OWZER%phh|f$N%zKGB;!AjBHxOOEX?A(kE= z>hIU;*E{L51% zLZ5uc6OYnX^?ab;ksBFTh8j>Hvda)))*SMY?j&h?Jg)CeEue(_Lgxb?3)-w2ZE>5? z0A#Rw3?B8xnpI+nm~(j>mS#{5qF$y;cRbE~5f!Ga4o{D|nXvsWjQ(3bz`rZ|Vii7AtV{2}<&Z;>6&evb%d_%@&qd0gPYW-pSpCYVWNilh| z%AC$WUyiRFPq3iG<-DM>^qVRjjOO>hdY7L#>lFKWt)Gfy^`gA%%5umP zo~poj*g!q*v&HKxLfwk@aaN2<`W$x4lX0sQ>m>deLf(k_QgA!=>0(M2&j z0f+#5g(9Kh0nhk7v=Q%N1 z`597B=y)NEBfe_A{2C9xgkM^h_Ssc)FaHRPzgZi56K2P7WAyMrzyr9^+IcW7SlbE%G zYx*~3m_yAwGtFP1OaqWc>8M^ok+*NaV|_?!`N#6eUi0lDWUbjF0X7|BN_}Cjm$Gxu zaOa(zm9QO~JPJw?Ej!VJ&h&W)l5Zrgvvj02-y`ssu!?{OBtfs3_Sd^Z;bZMF_9T!e z@Motc>8xZmwWn{i{(Dyr6#R01Sfo{oR#26BLbvzUkEHPZF)wGVBnj|ufs4d` zzcFEdr1)d}Qhk?2nT`Qy;%{f?zY}!}p-m>(h})@r0YGAPJUu%-Mfd+_M(_VzfGg<6 zzwqWw|4rcMoA>A&1pRG@+-;cUZA8#*RN-w*|83mo+XVD&68&9@++CXGT}IGdR^eSv z|6Shay8`rG5&eCM+`dRNtqqmw&xZ_^rj^H7)m}=SPO1pYlAxj}HxhvhyI49KRo^ zNZBr>X;I~^pg$YDe;lJ#*T3qa1OFbob<8#-XS)g|F3;`-{lMqy#-&R{=U{*_p8L=O z6uH*C!v_ORH}n550N4M@=poZa977e02L@(q{{wKzmM%IoivL;TWk4hp53Z2`Nnl%q zIR@4Pz(w|789mdsa6CoLSpH#c}5W+?$_R7{=Rf2VDOf;F_E*@NqU| z$n*9Op1=PG#;*Le;4YjNMeM%APZ|iPAiTxVfBwSK_NB|B@G>DoRvyE-ky~zIX$x@> z#eqWE`gm5(IbPXAM(;sY<<$@?&2EiC<>9AJ{?e#&wN;9Vqg$<(vy6~)CZO1buA`&b}5BVuZJY8(x_7N=of zg@5{3p=CM3;_PlRWAT{pIsoazwNmdKvM#Q+kWdK_I%-}beZTY95O`MSImV9m+EK23 zovHETTcvuzz{K!kXlRJIr|Rrk?JYEmN1R|vY5Xh~2Le9hovjVH8vI~73}$BlE*?>+ zevw5@2Z+4nreQ6^g?9@N@~}(6bw=Na{n%boxUWm9WOrI2ti0E%7aIl402-Dk?x7!1 z(rjdk&+Few`6;44vk($;x_j^!?fPneCLQe{ps3MWNdaserI4R?KQnFVGnwy9FhR!GfkcV0qID+l#VxAIy zZJIUNQxA$6SM~*CTfg|*m$U%(A;dC}-aUE2QIt3!KB#i380L;4%pYm4^pMeey)VH4y9?-Q`Hf1D4;F_an zD%d36Jjq3_TQzj1cW_Meqe8lGAtFZG^ucAO2rzP@8YOUE950mfccW003F~&%9fe+00dF>k@?Y>gAr&GC~Hpo_} z4!7Rc$arIe6pOe%`#*v&?nJIgxi8u=*ZVHSKP_+_Wz{_Q|CVW6aQ8l3@Szo07&?ol zO{FrX>prS1oy~w&w>$t`4MTK2r!9*XJ>NTa3wq9a9#mC7`Z4Hx&xc4XdoRYA>0>h{ zgg*bdI1#7s``Ozs)%RS($y)>3$|0_t`8We~X0WoGFw$psV z<6;snZlOnT6=I94W~2TBER@9{V9TOCK6R92rPxo(DwG=#2IJnLT%8yolJKE?X(N;i zM=ax*O2l&$Ij}e`u}Vx)(r^hlDwrZ|1f+`88n{2^U4F~e+-Inj`*snN7FJ1kaHQQR z&z;ewtJkh&U*AsIRERdKTKHr8 zAgm_+unK~tK+O(C$%T|bZ##)@RTUK+nB(nK`C1HzHlHtx64L82;gFhR>*&WLv)0N7 z24Fa1u^|qA$TSs5BEa3bRP){?M3z)ups;LF+<~RqnAWAiAto0u%iclxyE?TH{Bcu? zNPW4aleqUlY0PCA37amQ{jO4{3rwaj^f;3IygT)l2*ocP>|#aTQ_1|@18K0e<4^YX z>6p!R6V7>(wIwm}T-YFkb-Jd5#_v^H$!`?m&uY|pUDj6$8u)H=DD+4l39Wt=eb=0B ztypzQxWvxUG5EMJKQ4TvktULS$o%a3!(t;o?h#gHaqyQc7xdQtJ2q+e>UufSpU7DY zvEI%X3(Cd0BNTtGjlY`zICpKryqII|Ho3GNTy^=p9X+r9*0?5irxjraKlt#uISye? zGzQspNU3KT6?1R@2>zi?^F)9?j1Po?rU57)W!VQ+>Qi9NHx05)9^pwQg^Dv;4RVt< zJ()J5w+pt1AX2zv2OtQnZ*Zlq=$G+C$=iOa7=g{t_E`otY$23z0HO*!@lFD;;X4If zvds*$;?X<4S!RP1F(}s zP!}LbOG+axB~qdy$mW0F_ufy=IAiQ5XN>b6=6o=(>odQ1-0JJN*rW;vk*dTY@3+Lb^+v&fqD z0iIurfIAjp&22KWq7c5>)WW%4n)^>*APztk#(OtLpw}+=v3?Xh!2QKIzot)c*c5pB zP?H;2q_>ml-}|&W9r${WLSX3Q#CHlJX4G=eLr~$x`x!|p19d6Blq^y=+qhJk`~LU0 z`_rjSM-|@9heFh75a~1`Oj&gBdrS9xXSS+)e95t#VR86*xYd-7L;U&w0!DgGDsmpLq5kcq>Yr zylyPu(M9ie{4-Aa6M-}Ut$ z6~b;hZ*0%-5~Gk;ZFZ2>0(z}5LyO+KLynG0A6phcJuIv=^TAb=HTd$(CZ9tBX=$Kr!#*L8LkW3KR6w4?@NC4)erDxn^!c-` zN9Nz@2nx1nTnArIE}!`q!&?xabIHO8-Z{u5%AfH%`hN3T$fRKA>zj!J z(8Jrf4q|VxI!j~tbwv+}&%=h&OD`GWwkh!{l+edMKjpAU#J6JbF@iVbKL$U~Ehp4I z)2nJX9o17fSAKcnCBvmbn2IVYa4EuO#;8GBh!PWCp{Ib|geJ zpGZ6hQ*O*Kl#-ihZ^-XRtt7r)k9aCTh^2%Y94hWUFM3A2E3~bGNl75X_?Adv<8*K7 zF?TVug7q<6wk;-OS8DrdXqfcbBK~7&}nSENj8?v zVAeHD1RUZEUDR&)H!u55I54B++ftY!%MBSd9>wT%=3$BBG4t)yNVAi$f^n178Fm;X)-Pb{q|F6 zMofU*5(_ZA_}c(U}r}9~~}c(;OWat57|urs)LA36*icbm<4>t>H{FQo+*QZLG6p zCL`CV#RDi+!cB37OMxmI3uxx!O}xD2!!Lc90!WS`Y0FrD8qCq>Q#>f-nRT?(6t*zptkORb1q7M3$YSuZ-Lcb0~U==`}HSFp<($cRN z>pXgaRLyZ7`-gs3<2+vA{Jh6`LR;t0i1TEF3T0B=WKONLRq@m*x7BF1;>}52>^Csn zZi>Jqtsn+Z+%SvPWvD>ezCvzVd-h~bp~|kPmN)5}j!}L5iZXI@URL?Vf=|8c3XY1i z-k`dXdq(}N1jSMV>yr^2AQ08mR$onwYai&yA*Z9Y##8YgH;7eP9a&fZuYOhL?VGi& zjUJ^uXxt~d2B8*0evgqh6|*f)r(J^mT~=hLzg~tvP}4)Q>&VO8Ly?{Xycq$}vggH}stzQd9)lV4(kSfu%L7fc%nx}_1XNm!6BNiHg(4?s`&KlPgS_i? znpvfE){ibl>|BVj=Jt42hVy>1Dq#QLGOwK^NhAXv1DHh~mJCF(0H0j5>L2IFw_;bFq1bi2nV{+oHt%`XV_%He>p zgD}a;$_t>HaLmCk2Zu+;|HZtAtmrY%VV z!r-3>L=t5OVP%R?)zYcP;M*zQP#WcyvQfic%=@J{Vhgfo&Ju|rx2Cu24XI+LlT2By zm7fcd<9H$L=RgHWL0NMoDL*U+Rw^b**D3Fx+9?_0i{ZVpD1>~NMKlubJr3q0IVglMph#$O!G zrrnC|&s^H9Bbsdd2Xj?AvMO${Z&KH=GBehi zF=;T6_@@_UV%@gR;K<0Jjk6<19pEV$=fd=0D5=9iX;O+DOSoZ42`rO}pgln$AeNsM zEO$eGSlq{qeBnZ){-s}`AmQk!7ITIJgABU)0${|#+4{_

    *14Z0ZlFBKhRy=A;9W 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

    &vlypHJW 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 literal 0 HcmV?d00001 diff --git a/microsite/blog/assets/22-03-16/backstage-2nd-birthday.png b/microsite/blog/assets/22-03-16/backstage-2nd-birthday.png deleted file mode 100644 index b0fdab3a1545b8312a9b197dfc36e9255b1a1a42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59690 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 Date: Tue, 15 Mar 2022 20:44:15 -0700 Subject: [PATCH 061/410] update repoUrl description Signed-off-by: Peiman Jafari --- .../src/scaffolder/actions/builtin/github/githubIssuesLabel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts index c37d402231..192bcadd51 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts @@ -49,7 +49,7 @@ export function createGithubIssuesLabelAction(options: { properties: { repoUrl: { title: 'Repository Location', - description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the new repository name and 'owner' is an organization or username`, + description: `Accepts the format 'github.com?repo=reponame&owner=owner' where 'reponame' is the repository name and 'owner' is an organization or username`, type: 'string', }, number: { From 5f218a036dd98ac02b02452868baedd341fe9937 Mon Sep 17 00:00:00 2001 From: Peiman Jafari Date: Tue, 15 Mar 2022 20:55:20 -0700 Subject: [PATCH 062/410] clean up Signed-off-by: Peiman Jafari --- .../src/scaffolder/actions/builtin/github/githubIssuesLabel.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts index 192bcadd51..9c849edb6f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubIssuesLabel.ts @@ -29,7 +29,6 @@ import { parseRepoUrl } from '../publish/util'; */ export function createGithubIssuesLabelAction(options: { integrations: ScmIntegrationRegistry; - defaultWebhookSecret?: string; githubCredentialsProvider?: GithubCredentialsProvider; }) { const { integrations, githubCredentialsProvider } = options; From 13baad9109be64cbff8e97c3e391e675de7d740c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Mar 2022 04:11:48 +0000 Subject: [PATCH 063/410] build(deps): bump @testing-library/jest-dom from 5.14.1 to 5.16.2 Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.14.1 to 5.16.2. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v5.14.1...v5.16.2) --- updated-dependencies: - dependency-name: "@testing-library/jest-dom" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2e597e6ede..51e9c2ab43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5105,13 +5105,13 @@ pretty-format "^27.0.2" "@testing-library/jest-dom@^5.10.1": - version "5.14.1" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" - integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== + version "5.16.2" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" + integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^4.2.2" + aria-query "^5.0.0" chalk "^3.0.0" css "^3.0.0" css.escape "^1.5.1" From 50a99f11d5b6e8ffd34edf8a57306f97fc253190 Mon Sep 17 00:00:00 2001 From: Peiman Jafari Date: Tue, 15 Mar 2022 21:20:11 -0700 Subject: [PATCH 064/410] update API reports Signed-off-by: Peiman Jafari --- plugins/scaffolder-backend/api-report.md | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index c394869c75..d454fe2e7b 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -140,7 +140,6 @@ export function createGithubActionsDispatchAction(options: { // @public export function createGithubIssuesLabelAction(options: { integrations: ScmIntegrationRegistry; - defaultWebhookSecret?: string; githubCredentialsProvider?: GithubCredentialsProvider; }): TemplateAction<{ repoUrl: string; From 53627e11b0aadb5ee542d68041fd139d3026be1c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Mar 2022 04:21:35 +0000 Subject: [PATCH 065/410] build(deps): bump mime-types from 2.1.34 to 2.1.35 Bumps [mime-types](https://github.com/jshttp/mime-types) from 2.1.34 to 2.1.35. - [Release notes](https://github.com/jshttp/mime-types/releases) - [Changelog](https://github.com/jshttp/mime-types/blob/master/HISTORY.md) - [Commits](https://github.com/jshttp/mime-types/compare/2.1.34...2.1.35) --- updated-dependencies: - dependency-name: mime-types dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2e597e6ede..fa5c2083f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17391,10 +17391,10 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": - version "1.51.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-db@~1.33.0: version "1.33.0" @@ -17409,11 +17409,11 @@ mime-types@2.1.18: mime-db "~1.33.0" mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.34" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.51.0" + mime-db "1.52.0" mime@1.6.0, mime@^1.3.4: version "1.6.0" From b83efa93ac58b040b13154dea45865e21e363aa7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Mar 2022 04:22:36 +0000 Subject: [PATCH 066/410] build(deps-dev): bump @graphql-codegen/typescript from 2.4.5 to 2.4.7 Bumps [@graphql-codegen/typescript](https://github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/typescript) from 2.4.5 to 2.4.7. - [Release notes](https://github.com/dotansimha/graphql-code-generator/releases) - [Changelog](https://github.com/dotansimha/graphql-code-generator/blob/master/packages/plugins/typescript/typescript/CHANGELOG.md) - [Commits](https://github.com/dotansimha/graphql-code-generator/commits/@graphql-codegen/typescript@2.4.7/packages/plugins/typescript/typescript) --- updated-dependencies: - dependency-name: "@graphql-codegen/typescript" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2e597e6ede..d96d6bc953 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2010,13 +2010,13 @@ tslib "~2.3.0" "@graphql-codegen/typescript@^2.4.2": - version "2.4.5" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.5.tgz#80ca7a343511a27cd587c0b220b0a0dd99a4dc4b" - integrity sha512-Ytb8phNHKl/v/wxudsMOAV1dmzIbckWHm2J83PLNOvnu9CGEhgsd67vfe3ZoF95VU2BKSG8BXGa6uL9z2xDmuA== + version "2.4.7" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.7.tgz#e72e87cd47a51b2bc232293762573a86182de469" + integrity sha512-1YAK+m9SZRS1Uy8hdXVQAaAG/WF2jdFD76wbMRQ8Lf5e9YbmtJuy1RpI13nZJTZbhFopd9zqoWFJHsU/oy4i7g== dependencies: "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-codegen/schema-ast" "^2.4.1" - "@graphql-codegen/visitor-plugin-common" "2.7.1" + "@graphql-codegen/visitor-plugin-common" "2.7.3" auto-bind "~4.0.0" tslib "~2.3.0" @@ -2052,6 +2052,22 @@ parse-filepath "^1.0.2" tslib "~2.3.0" +"@graphql-codegen/visitor-plugin-common@2.7.3": + version "2.7.3" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.3.tgz#f374e8974ae4ab7b1059a7f8748db6393f20c138" + integrity sha512-rODPGkrHEf9aHD8SgVWS0xie8VmJoYXLWgQR8PFKrwCUFjf7nvDuATAL2lTFiHATlVBWg1meXVPdUlkKeJj/0Q== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-tools/optimize" "^1.0.1" + "@graphql-tools/relay-operation-optimizer" "^6.3.7" + "@graphql-tools/utils" "^8.3.0" + auto-bind "~4.0.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.3.0" + "@graphql-tools/apollo-engine-loader@^7.0.5": version "7.2.1" resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.1.tgz#14e5d0b1032a7d882d22a7533c8969ee3fa797f2" From 09c9dd55fea20331f194719302d7fd553a0f7e36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Mar 2022 04:28:35 +0000 Subject: [PATCH 067/410] build(deps): bump @testing-library/user-event from 13.1.8 to 13.5.0 Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 13.1.8 to 13.5.0. - [Release notes](https://github.com/testing-library/user-event/releases) - [Changelog](https://github.com/testing-library/user-event/blob/beta/CHANGELOG.md) - [Commits](https://github.com/testing-library/user-event/compare/v13.1.8...v13.5.0) --- updated-dependencies: - dependency-name: "@testing-library/user-event" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2e597e6ede..e6e30d8a73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5140,9 +5140,9 @@ "@types/react-dom" "*" "@testing-library/user-event@^13.1.8": - version "13.1.8" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.1.8.tgz#9cbf342b88d837ee188f9f9f4df6d1beaaf179c2" - integrity sha512-M04HgOlJvxILf5xyrkJaEQfFOtcvhy3usLldQIEg9zgFIYQofSmFGVfFlS7BWowqlBGLrItwGMlPXCoBgoHSiw== + version "13.5.0" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== dependencies: "@babel/runtime" "^7.12.5" From e949d680595d52d92f084bf29f06e7cc4fa0eecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 15 Mar 2022 17:06:51 +0100 Subject: [PATCH 068/410] catalog: move the github and ldap config into their right places MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/wild-sheep-mate.md | 7 + .../catalog-backend-module-github/config.d.ts | 49 ++++ .../package.json | 6 +- .../catalog-backend-module-ldap/config.d.ts | 215 ++++++++++++++++++ .../src/processors/LdapOrgReaderProcessor.ts | 15 +- plugins/catalog-backend/config.d.ts | 33 --- 6 files changed, 287 insertions(+), 38 deletions(-) create mode 100644 .changeset/wild-sheep-mate.md create mode 100644 plugins/catalog-backend-module-github/config.d.ts diff --git a/.changeset/wild-sheep-mate.md b/.changeset/wild-sheep-mate.md new file mode 100644 index 0000000000..f105a68cb2 --- /dev/null +++ b/.changeset/wild-sheep-mate.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-ldap': patch +--- + +Made sure to move the catalog-related github and ldap config into their right places diff --git a/plugins/catalog-backend-module-github/config.d.ts b/plugins/catalog-backend-module-github/config.d.ts new file mode 100644 index 0000000000..a1702799c2 --- /dev/null +++ b/plugins/catalog-backend-module-github/config.d.ts @@ -0,0 +1,49 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Config { + catalog?: { + processors?: { + /** + * GithubMultiOrgReaderProcessor configuration + */ + githubMultiOrg?: { + /** + * The configuration parameters for each GitHub org to process. + */ + orgs: Array<{ + /** + * The name of the GitHub org to process. + */ + name: string; + /** + * The namespace of the group created for this org. + * + * Defaults to org name if omitted. + */ + groupNamespace?: string; + + /** + * The namespace of the users created from this org. + * + * Defaults to empty string if omitted. + */ + userNamespace?: string; + }>; + }; + }; + }; +} diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 0e63cf9da2..04bc5b7b07 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -52,6 +52,8 @@ "@types/lodash": "^4.14.151" }, "files": [ - "dist" - ] + "dist", + "config.d.ts" + ], + "configSchema": "config.d.ts" } diff --git a/plugins/catalog-backend-module-ldap/config.d.ts b/plugins/catalog-backend-module-ldap/config.d.ts index 2605eb62f3..8ae3145811 100644 --- a/plugins/catalog-backend-module-ldap/config.d.ts +++ b/plugins/catalog-backend-module-ldap/config.d.ts @@ -17,8 +17,223 @@ import { JsonValue } from '@backstage/types'; export interface Config { + /** + * LdapOrgEntityProvider / LdapOrgReaderProcessor configuration + */ + ldap?: { + /** + * The configuration parameters for each single LDAP provider. + */ + providers: Array<{ + /** + * The prefix of the target that this matches on, e.g. + * "ldaps://ds.example.net", with no trailing slash. + */ + target: string; + + /** + * The settings to use for the bind command. If none are specified, + * the bind command is not issued. + */ + bind?: { + /** + * The DN of the user to auth as. + * + * E.g. "uid=ldap-robot,ou=robots,ou=example,dc=example,dc=net" + */ + dn: string; + /** + * The secret of the user to auth as (its password). + * + * @visibility secret + */ + secret: string; + }; + + /** + * The settings that govern the reading and interpretation of users. + */ + users: { + /** + * The DN under which users are stored. + * + * E.g. "ou=people,ou=example,dc=example,dc=net" + */ + dn: string; + /** + * The search options to use. The default is scope "one" and + * attributes "*" and "+". + * + * It is common to want to specify a filter, to narrow down the set + * of matching items. + */ + options: { + scope?: 'base' | 'one' | 'sub'; + filter?: string; + attributes?: string | string[]; + sizeLimit?: number; + timeLimit?: number; + derefAliases?: number; + typesOnly?: boolean; + paged?: + | boolean + | { + pageSize?: number; + pagePause?: boolean; + }; + }; + /** + * JSON paths (on a.b.c form) and hard coded values to set on those + * paths. + * + * This can be useful for example if you want to hard code a + * namespace or similar on the generated entities. + */ + set?: { [key: string]: JsonValue }; + /** + * Mappings from well known entity fields, to LDAP attribute names + */ + map?: { + /** + * The name of the attribute that holds the relative + * distinguished name of each entry. Defaults to "uid". + */ + rdn?: string; + /** + * The name of the attribute that shall be used for the value of + * the metadata.name field of the entity. Defaults to "uid". + */ + name?: string; + /** + * The name of the attribute that shall be used for the value of + * the metadata.description field of the entity. + */ + description?: string; + /** + * The name of the attribute that shall be used for the value of + * the spec.profile.displayName field of the entity. Defaults to + * "cn". + */ + displayName?: string; + /** + * The name of the attribute that shall be used for the value of + * the spec.profile.email field of the entity. Defaults to + * "mail". + */ + email?: string; + /** + * The name of the attribute that shall be used for the value of + * the spec.profile.picture field of the entity. + */ + picture?: string; + /** + * The name of the attribute that shall be used for the values of + * the spec.memberOf field of the entity. Defaults to "memberOf". + */ + memberOf?: string; + }; + }; + + /** + * The settings that govern the reading and interpretation of groups. + */ + groups: { + /** + * The DN under which groups are stored. + * + * E.g. "ou=people,ou=example,dc=example,dc=net" + */ + dn: string; + /** + * The search options to use. The default is scope "one" and + * attributes "*" and "+". + * + * It is common to want to specify a filter, to narrow down the set + * of matching items. + */ + options: { + scope?: 'base' | 'one' | 'sub'; + filter?: string; + attributes?: string | string[]; + sizeLimit?: number; + timeLimit?: number; + derefAliases?: number; + typesOnly?: boolean; + paged?: + | boolean + | { + pageSize?: number; + pagePause?: boolean; + }; + }; + /** + * JSON paths (on a.b.c form) and hard coded values to set on those + * paths. + * + * This can be useful for example if you want to hard code a + * namespace or similar on the generated entities. + */ + set?: { [key: string]: JsonValue }; + /** + * Mappings from well known entity fields, to LDAP attribute names + */ + map?: { + /** + * The name of the attribute that holds the relative + * distinguished name of each entry. Defaults to "cn". + */ + rdn?: string; + /** + * The name of the attribute that shall be used for the value of + * the metadata.name field of the entity. Defaults to "cn". + */ + name?: string; + /** + * The name of the attribute that shall be used for the value of + * the metadata.description field of the entity. Defaults to + * "description". + */ + description?: string; + /** + * The name of the attribute that shall be used for the value of + * the spec.type field of the entity. Defaults to "groupType". + */ + type?: string; + /** + * The name of the attribute that shall be used for the value of + * the spec.profile.displayName field of the entity. Defaults to + * "cn". + */ + displayName?: string; + /** + * The name of the attribute that shall be used for the value of + * the spec.profile.email field of the entity. + */ + email?: string; + /** + * The name of the attribute that shall be used for the value of + * the spec.profile.picture field of the entity. + */ + picture?: string; + /** + * The name of the attribute that shall be used for the values of + * the spec.parent field of the entity. Defaults to "memberOf". + */ + memberOf?: string; + /** + * The name of the attribute that shall be used for the values of + * the spec.children field of the entity. Defaults to "member". + */ + members?: string; + }; + }; + }>; + }; + /** * Configuration options for the catalog plugin. + * + * TODO(freben): Deprecate this entire block */ catalog?: { /** diff --git a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts index bec24a1744..8cfc92eff1 100644 --- a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts @@ -43,17 +43,26 @@ export class LdapOrgReaderProcessor implements CatalogProcessor { private readonly userTransformer?: UserTransformer; static fromConfig( - config: Config, + configRoot: Config, options: { logger: Logger; groupTransformer?: GroupTransformer; userTransformer?: UserTransformer; }, ) { - const c = config.getOptionalConfig('catalog.processors.ldapOrg'); + // TODO(freben): Deprecate the old catalog.processors.ldapOrg config + const config = + configRoot.getOptionalConfig('ldap') || + configRoot.getOptionalConfig('catalog.processors.ldapOrg'); + if (!config) { + throw new TypeError( + `There is no LDAP configuration. Please add it as "ldap.providers".`, + ); + } + return new LdapOrgReaderProcessor({ ...options, - providers: c ? readLdapConfig(c) : [], + providers: readLdapConfig(config), }); } diff --git a/plugins/catalog-backend/config.d.ts b/plugins/catalog-backend/config.d.ts index 957f18c15f..950ed2f63c 100644 --- a/plugins/catalog-backend/config.d.ts +++ b/plugins/catalog-backend/config.d.ts @@ -105,38 +105,5 @@ export interface Config { allow: Array; }>; }>; - - /** - * List of processor-specific options and attributes - */ - processors?: { - /** - * GithubMultiOrgReaderProcessor configuration - */ - githubMultiOrg?: { - /** - * The configuration parameters for each GitHub org to process. - */ - orgs: Array<{ - /** - * The name of the GitHub org to process. - */ - name: string; - /** - * The namespace of the group created for this org. - * - * Defaults to org name if omitted. - */ - groupNamespace?: string; - - /** - * The namespace of the users created from this org. - * - * Defaults to empty string if omitted. - */ - userNamespace?: string; - }>; - }; - }; }; } From a285eb398657d0ad9beb22baeb270725599c0a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 16 Mar 2022 09:26:41 +0100 Subject: [PATCH 069/410] more forgiving init code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/catalog-backend-module-ldap/api-report.md | 2 +- .../src/processors/LdapOrgEntityProvider.ts | 10 ++-------- .../src/processors/LdapOrgReaderProcessor.ts | 10 ++-------- 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/plugins/catalog-backend-module-ldap/api-report.md b/plugins/catalog-backend-module-ldap/api-report.md index edeef4cb82..3c6cd4849b 100644 --- a/plugins/catalog-backend-module-ldap/api-report.md +++ b/plugins/catalog-backend-module-ldap/api-report.md @@ -134,7 +134,7 @@ export class LdapOrgReaderProcessor implements CatalogProcessor { }); // (undocumented) static fromConfig( - config: Config, + configRoot: Config, options: { logger: Logger; groupTransformer?: GroupTransformer; diff --git a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgEntityProvider.ts b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgEntityProvider.ts index bad3941767..b31b7ae266 100644 --- a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgEntityProvider.ts @@ -114,17 +114,11 @@ export class LdapOrgEntityProvider implements EntityProvider { const config = configRoot.getOptionalConfig('ldap') || configRoot.getOptionalConfig('catalog.processors.ldapOrg'); - if (!config) { - throw new TypeError( - `There is no LDAP configuration. Please add it as "ldap.providers".`, - ); - } - - const providers = readLdapConfig(config); + const providers = config ? readLdapConfig(config) : []; const provider = providers.find(p => options.target === p.target); if (!provider) { throw new TypeError( - `There is no LDAP configuration that matches ${options.target}. Please add a configuration entry for it under "ldap.providers".`, + `There is no LDAP configuration that matches "${options.target}". Please add a configuration entry for it under "ldap.providers".`, ); } diff --git a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts index 8cfc92eff1..74a7e153b9 100644 --- a/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-ldap/src/processors/LdapOrgReaderProcessor.ts @@ -54,15 +54,9 @@ export class LdapOrgReaderProcessor implements CatalogProcessor { const config = configRoot.getOptionalConfig('ldap') || configRoot.getOptionalConfig('catalog.processors.ldapOrg'); - if (!config) { - throw new TypeError( - `There is no LDAP configuration. Please add it as "ldap.providers".`, - ); - } - return new LdapOrgReaderProcessor({ ...options, - providers: readLdapConfig(config), + providers: config ? readLdapConfig(config) : [], }); } @@ -94,7 +88,7 @@ export class LdapOrgReaderProcessor implements CatalogProcessor { const provider = this.providers.find(p => location.target === p.target); if (!provider) { throw new Error( - `There is no LDAP Org provider that matches ${location.target}. Please add a configuration entry for it under catalog.processors.ldapOrg.providers.`, + `There is no LDAP configuration that matches "${location.target}". Please add a configuration entry for it under "ldap.providers".`, ); } From 99acfa92dc6f04c6f39fc533f2c9542b419bbd10 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Mar 2022 09:44:38 +0100 Subject: [PATCH 070/410] example-app: temporary fix for entity API breakage Signed-off-by: Patrik Oldsberg --- .../app/src/components/catalog/EntityPage.tsx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index ba0eacf97e..0a06c4fd5d 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -15,6 +15,7 @@ */ import { + Entity, RELATION_API_CONSUMED_BY, RELATION_API_PROVIDED_BY, RELATION_CONSUMES_API, @@ -179,7 +180,7 @@ export const cicdContent = ( - + boolean}> @@ -191,7 +192,7 @@ export const cicdContent = ( - + boolean}> @@ -234,7 +235,7 @@ const cicdCard = ( - + boolean}> @@ -326,7 +327,9 @@ const overviewContent = ( {cicdCard} - Boolean(isGithubInsightsAvailable(e))}> + boolean} + > @@ -346,7 +349,9 @@ const overviewContent = ( - Boolean(isGithubPullRequestsAvailable(e))}> + boolean} + > From ab4d602942f3b02971587423f53fd5395d7bff4c Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 16 Mar 2022 10:28:00 +0100 Subject: [PATCH 071/410] microsite: remove outdated labels Signed-off-by: Johan Haals --- docs/features/software-catalog/index.md | 2 +- microsite/pages/en/index.js | 32 ++++--------------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/docs/features/software-catalog/index.md b/docs/features/software-catalog/index.md index f5296f38e1..0326292e41 100644 --- a/docs/features/software-catalog/index.md +++ b/docs/features/software-catalog/index.md @@ -1,6 +1,6 @@ --- id: software-catalog-overview -title: Backstage Software Catalog (alpha) +title: Backstage Software Catalog sidebar_label: Overview # prettier-ignore description: The Backstage Software Catalog diff --git a/microsite/pages/en/index.js b/microsite/pages/en/index.js index 3804c45478..2f7c030c2a 100644 --- a/microsite/pages/en/index.js +++ b/microsite/pages/en/index.js @@ -109,15 +109,7 @@ class Index extends React.Component { className="Block__GIF" src={`${baseUrl}animations/backstage-software-catalog-icon-1.gif`} /> - - Backstage Software Catalog{' '} - - (alpha) - - + Backstage Software Catalog Build an ecosystem, not a wilderness @@ -200,7 +192,7 @@ class Index extends React.Component { Learn more about the software catalog Read @@ -213,15 +205,7 @@ class Index extends React.Component { className="Block__GIF" src={`${baseUrl}animations/backstage-software-templates-icon-5.gif`} /> - - Backstage Software Templates{' '} - - (beta) - - + Backstage Software Templates Standards can set you free - - Backstage TechDocs{' '} - - (beta) - - + Backstage TechDocs Docs like code Date: Wed, 16 Mar 2022 10:24:00 +0100 Subject: [PATCH 072/410] schedule msgraph org ingestion too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/new-cougars-beam.md | 30 +++++ .../catalog-backend-module-msgraph/README.md | 41 +++--- .../api-report.md | 25 ++-- .../package.json | 2 + .../MicrosoftGraphOrgEntityProvider.ts | 124 +++++++++++++++--- .../src/processors/index.ts | 1 + 6 files changed, 177 insertions(+), 46 deletions(-) create mode 100644 .changeset/new-cougars-beam.md diff --git a/.changeset/new-cougars-beam.md b/.changeset/new-cougars-beam.md new file mode 100644 index 0000000000..c1c03ce848 --- /dev/null +++ b/.changeset/new-cougars-beam.md @@ -0,0 +1,30 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': minor +--- + +**BREAKING**: `MicrosoftGraphOrgEntityProvider.fromConfig` now requires a `schedule` field in its options, which simplifies scheduling. If you want to retain the old behavior of calling its `run()` method manually, you can set the new field value to the string `'manual'`. But you may prefer to instead give it a scheduled task runner from the backend tasks package: + +```diff + // packages/backend/src/plugins/catalog.ts ++import { Duration } from 'luxon'; ++import { MicrosoftGraphOrgEntityProvider } from '@backstage/plugin-catalog-backend-module-msgraph'; + + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + const builder = await CatalogBuilder.create(env); + ++ // The target parameter below needs to match one of the providers' target ++ // value specified in your app-config. ++ builder.addEntityProvider( ++ MicrosoftGraphOrgEntityProvider.fromConfig(env.config, { ++ id: 'production', ++ target: 'https://graph.microsoft.com/v1.0', ++ logger: env.logger, ++ schedule: env.scheduler.createScheduledTaskRunner({ ++ frequency: Duration.fromObject({ minutes: 5 }), ++ timeout: Duration.fromObject({ minutes: 3 }), ++ }), ++ }), ++ ); +``` diff --git a/plugins/catalog-backend-module-msgraph/README.md b/plugins/catalog-backend-module-msgraph/README.md index d9488486ad..741e378fd4 100644 --- a/plugins/catalog-backend-module-msgraph/README.md +++ b/plugins/catalog-backend-module-msgraph/README.md @@ -92,26 +92,31 @@ yarn add @backstage/plugin-catalog-backend-module-msgraph 4. The `MicrosoftGraphOrgEntityProvider` is not registered by default, so you have to register it in the catalog plugin. Pass the target to reference a - provider from the configuration. As entity providers are not part of the - entity refresh loop, you have to run them manually. + provider from the configuration. -```typescript -// packages/backend/src/plugins/catalog.ts -const msGraphOrgEntityProvider = MicrosoftGraphOrgEntityProvider.fromConfig( - env.config, - { - id: 'https://graph.microsoft.com/v1.0', - target: 'https://graph.microsoft.com/v1.0', - logger: env.logger, - }, -); -builder.addEntityProvider(msGraphOrgEntityProvider); +```diff + // packages/backend/src/plugins/catalog.ts ++import { Duration } from 'luxon'; ++import { MicrosoftGraphOrgEntityProvider } from '@backstage/plugin-catalog-backend-module-msgraph'; -// Trigger a read every 5 minutes -useHotCleanup( - module, - runPeriodically(() => msGraphOrgEntityProvider.read(), 5 * 60 * 1000), -); + export default async function createPlugin( + env: PluginEnvironment, + ): Promise { + const builder = await CatalogBuilder.create(env); + ++ // The target parameter below needs to match one of the providers' target ++ // value specified in your app-config (see above). ++ builder.addEntityProvider( ++ MicrosoftGraphOrgEntityProvider.fromConfig(env.config, { ++ id: 'production', ++ target: 'https://graph.microsoft.com/v1.0', ++ logger: env.logger, ++ schedule: env.scheduler.createScheduledTaskRunner({ ++ frequency: Duration.fromObject({ minutes: 5 }), ++ timeout: Duration.fromObject({ minutes: 3 }), ++ }), ++ }), ++ ); ``` ### Using the Processor diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index e3840dc6f7..2e741e65fe 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -14,6 +14,7 @@ import { Logger } from 'winston'; import * as MicrosoftGraph from '@microsoft/microsoft-graph-types'; import * as msal from '@azure/msal-node'; import { Response as Response_2 } from 'node-fetch'; +import { TaskRunner } from '@backstage/backend-tasks'; import { UserEntity } from '@backstage/catalog-model'; // @public @@ -119,19 +120,23 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { connect(connection: EntityProviderConnection): Promise; // (undocumented) static fromConfig( - config: Config, - options: { - id: string; - target: string; - logger: Logger; - userTransformer?: UserTransformer; - groupTransformer?: GroupTransformer; - organizationTransformer?: OrganizationTransformer; - }, + configRoot: Config, + options: MicrosoftGraphOrgEntityProviderOptions, ): MicrosoftGraphOrgEntityProvider; // (undocumented) getProviderName(): string; - read(): Promise; + read(options?: { logger?: Logger }): Promise; +} + +// @public +export interface MicrosoftGraphOrgEntityProviderOptions { + groupTransformer?: GroupTransformer; + id: string; + logger: Logger; + organizationTransformer?: OrganizationTransformer; + schedule: 'manual' | TaskRunner; + target: string; + userTransformer?: UserTransformer; } // @public diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 58ff3b2b3d..119fc5004c 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -34,6 +34,7 @@ }, "dependencies": { "@azure/msal-node": "^1.1.0", + "@backstage/backend-tasks": "^0.2.0", "@backstage/catalog-model": "^0.13.0", "@backstage/config": "^0.1.15", "@backstage/plugin-catalog-backend": "^0.24.0", @@ -42,6 +43,7 @@ "lodash": "^4.17.21", "node-fetch": "^2.6.7", "p-limit": "^3.0.2", + "uuid": "^8.0.0", "winston": "^3.2.1", "qs": "^6.9.4" }, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts index 71aabaeef2..dfd0a7782e 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { TaskRunner } from '@backstage/backend-tasks'; import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, @@ -25,6 +26,7 @@ import { EntityProviderConnection, } from '@backstage/plugin-catalog-backend'; import { merge } from 'lodash'; +import * as uuid from 'uuid'; import { Logger } from 'winston'; import { GroupTransformer, @@ -39,6 +41,62 @@ import { UserTransformer, } from '../microsoftGraph'; +/** + * Options for {@link MicrosoftGraphOrgEntityProvider}. + * + * @public + */ +export interface MicrosoftGraphOrgEntityProviderOptions { + /** + * A unique, stable identifier for this provider. + * + * @example "production" + */ + id: string; + + /** + * The target that this provider should consume. + * + * Should exactly match the "target" field of one of the providers + * configuration entries. + */ + target: string; + + /** + * The logger to use. + */ + logger: Logger; + + /** + * The refresh schedule to use. + * + * @remarks + * + * If you pass in 'manual', you are responsible for calling the `read` method + * manually at some interval. + * + * But more commonly you will pass in the result of + * {@link @backstage/backend-tasks#PluginTaskScheduler.createScheduledTaskRunner} + * to enable automatic scheduling of tasks. + */ + schedule: 'manual' | TaskRunner; + + /** + * The function that transforms a user entry in msgraph to an entity. + */ + userTransformer?: UserTransformer; + + /** + * The function that transforms a group entry in msgraph to an entity. + */ + groupTransformer?: GroupTransformer; + + /** + * The function that transforms an organization entry in msgraph to an entity. + */ + organizationTransformer?: OrganizationTransformer; +} + /** * Reads user and group entries out of Microsoft Graph, and provides them as * User and Group entities for the catalog. @@ -47,25 +105,21 @@ import { */ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { private connection?: EntityProviderConnection; + private scheduleFn?: () => Promise; static fromConfig( - config: Config, - options: { - id: string; - target: string; - logger: Logger; - userTransformer?: UserTransformer; - groupTransformer?: GroupTransformer; - organizationTransformer?: OrganizationTransformer; - }, + configRoot: Config, + options: MicrosoftGraphOrgEntityProviderOptions, ) { - const c = config.getOptionalConfig('catalog.processors.microsoftGraphOrg'); - const providers = c ? readMicrosoftGraphConfig(c) : []; + const config = configRoot.getOptionalConfig( + 'catalog.processors.microsoftGraphOrg', + ); + const providers = config ? readMicrosoftGraphConfig(config) : []; const provider = providers.find(p => options.target.startsWith(p.target)); if (!provider) { throw new Error( - `There is no Microsoft Graph Org provider that matches ${options.target}. Please add a configuration entry for it under catalog.processors.microsoftGraphOrg.providers.`, + `There is no Microsoft Graph Org provider that matches "${options.target}". Please add a configuration entry for it under "catalog.processors.microsoftGraphOrg.providers".`, ); } @@ -73,7 +127,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { target: options.target, }); - return new MicrosoftGraphOrgEntityProvider({ + const result = new MicrosoftGraphOrgEntityProvider({ id: options.id, userTransformer: options.userTransformer, groupTransformer: options.groupTransformer, @@ -81,6 +135,10 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { logger, provider, }); + + result.schedule(options.schedule); + + return result; } constructor( @@ -102,19 +160,21 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { /** {@inheritdoc @backstage/plugin-catalog-backend#EntityProvider.connect} */ async connect(connection: EntityProviderConnection) { this.connection = connection; + await this.scheduleFn?.(); } /** * Runs one complete ingestion loop. Call this method regularly at some * appropriate cadence. */ - async read() { + async read(options?: { logger?: Logger }) { if (!this.connection) { throw new Error('Not initialized'); } + const logger = options?.logger ?? this.options.logger; const provider = this.options.provider; - const { markReadComplete } = trackProgress(this.options.logger); + const { markReadComplete } = trackProgress(logger); const client = MicrosoftGraphClient.create(this.options.provider); const { users, groups } = await readMicrosoftGraphOrg( @@ -130,7 +190,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { groupTransformer: this.options.groupTransformer, userTransformer: this.options.userTransformer, organizationTransformer: this.options.organizationTransformer, - logger: this.options.logger, + logger: logger, }, ); @@ -146,6 +206,34 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { markCommitComplete(); } + + private schedule( + schedule: MicrosoftGraphOrgEntityProviderOptions['schedule'], + ) { + if (schedule === 'manual') { + return; + } + + this.scheduleFn = async () => { + const id = `${this.getProviderName()}:refresh`; + await schedule.run({ + id, + fn: async () => { + const logger = this.options.logger.child({ + class: MicrosoftGraphOrgEntityProvider.prototype.constructor.name, + taskId: id, + taskInstanceId: uuid.v4(), + }); + + try { + await this.read({ logger }); + } catch (error) { + logger.error(error); + } + }, + }); + }; + } } // Helps wrap the timing and logging behaviors @@ -173,12 +261,12 @@ function trackProgress(logger: Logger) { // Makes sure that emitted entities have a proper location based on their uuid export function withLocations(providerId: string, entity: Entity): Entity { - const uuid = + const uid = entity.metadata.annotations?.[MICROSOFT_GRAPH_USER_ID_ANNOTATION] || entity.metadata.annotations?.[MICROSOFT_GRAPH_GROUP_ID_ANNOTATION] || entity.metadata.annotations?.[MICROSOFT_GRAPH_TENANT_ID_ANNOTATION] || entity.metadata.name; - const location = `msgraph:${providerId}/${encodeURIComponent(uuid)}`; + const location = `msgraph:${providerId}/${encodeURIComponent(uid)}`; return merge( { metadata: { diff --git a/plugins/catalog-backend-module-msgraph/src/processors/index.ts b/plugins/catalog-backend-module-msgraph/src/processors/index.ts index 7f70bde994..7bc3559c8b 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/index.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/index.ts @@ -15,4 +15,5 @@ */ export { MicrosoftGraphOrgEntityProvider } from './MicrosoftGraphOrgEntityProvider'; +export type { MicrosoftGraphOrgEntityProviderOptions } from './MicrosoftGraphOrgEntityProvider'; export { MicrosoftGraphOrgReaderProcessor } from './MicrosoftGraphOrgReaderProcessor'; From 66769117e4038a6ddc5bd93f8c11d12c44dd2526 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Mar 2022 11:42:12 +0100 Subject: [PATCH 073/410] chore: remove the Lifecycle components Signed-off-by: blam --- .../src/components/ScaffolderPage/ScaffolderPage.tsx | 6 +----- plugins/scaffolder/src/components/TaskPage/TaskPage.tsx | 6 +----- .../scaffolder/src/components/TemplatePage/TemplatePage.tsx | 6 +----- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 0b3fccc07c..850da00de0 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -82,11 +82,7 @@ export const ScaffolderPageContents = ({

    - Create a New Component - - } + title={<>Create a New Component} subtitle="Create new software components using standard templates" /> diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index f73e32189c..232c1ad7a8 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -315,11 +315,7 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => {
    - Task Activity - - } + title={<>Task Activity} subtitle={`Activity for task: ${taskId}`} /> diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx index 5310a4c79f..a2b6d20ca4 100644 --- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx +++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx @@ -183,11 +183,7 @@ export const TemplatePage = ({
    - Create a New Component - - } + title={<>Create a New Component} subtitle="Create new software components using standard templates" /> From 0db6e76f67f399eb7daa3ddeeb22b0f3fe778529 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Mar 2022 11:43:38 +0100 Subject: [PATCH 074/410] chore: remove fragments Signed-off-by: blam --- .../scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx | 2 +- plugins/scaffolder/src/components/TaskPage/TaskPage.tsx | 2 +- plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 850da00de0..ecd2ebf5fc 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -82,7 +82,7 @@ export const ScaffolderPageContents = ({
    Create a New Component} + title="Create a New Component" subtitle="Create new software components using standard templates" /> diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index 232c1ad7a8..63a3a8b4ae 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -315,7 +315,7 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => {
    Task Activity} + title="Task Activity" subtitle={`Activity for task: ${taskId}`} /> diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx index a2b6d20ca4..064e134ffc 100644 --- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx +++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx @@ -183,7 +183,7 @@ export const TemplatePage = ({
    Create a New Component} + title="Create a New Component" subtitle="Create new software components using standard templates" /> From 9b7e36178324d30c770c84873ff82aa03972bf23 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Mar 2022 11:44:18 +0100 Subject: [PATCH 075/410] chore: removing beta labels from the plugin Signed-off-by: blam --- .changeset/cold-pets-retire.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/cold-pets-retire.md diff --git a/.changeset/cold-pets-retire.md b/.changeset/cold-pets-retire.md new file mode 100644 index 0000000000..1ab64f919e --- /dev/null +++ b/.changeset/cold-pets-retire.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Remove beta labels From a9db6aefa5625cbb61e32264b303cd99a370d60a Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Mar 2022 12:04:01 +0100 Subject: [PATCH 076/410] chore: woops. Remove the export too; Signed-off-by: blam --- .../src/components/ScaffolderPage/ScaffolderPage.tsx | 1 - plugins/scaffolder/src/components/TaskPage/TaskPage.tsx | 1 - .../src/components/TemplatePage/TemplatePage.tsx | 8 +------- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index ecd2ebf5fc..13ab2e7d37 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -19,7 +19,6 @@ import { ContentHeader, CreateButton, Header, - Lifecycle, Page, SupportButton, } from '@backstage/core-components'; diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index 63a3a8b4ae..27d89cb6a4 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -19,7 +19,6 @@ import { Content, ErrorPage, Header, - Lifecycle, Page, LogViewer, Progress, diff --git a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx index 064e134ffc..fc1c4f222d 100644 --- a/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx +++ b/plugins/scaffolder/src/components/TemplatePage/TemplatePage.tsx @@ -27,13 +27,7 @@ import { SecretsContext } from '../secrets/SecretsContext'; import { rootRouteRef, scaffolderTaskRouteRef } from '../../routes'; import { MultistepJsonForm } from '../MultistepJsonForm'; -import { - Content, - Header, - InfoCard, - Lifecycle, - Page, -} from '@backstage/core-components'; +import { Content, Header, InfoCard, Page } from '@backstage/core-components'; import { ApiHolder, errorApiRef, From 6927f8541a1b420e40261ee9a270c8a82453edc2 Mon Sep 17 00:00:00 2001 From: Iain Billett Date: Wed, 16 Mar 2022 12:09:27 +0000 Subject: [PATCH 077/410] Update API report Signed-off-by: Iain Billett --- packages/integration/api-report.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/integration/api-report.md b/packages/integration/api-report.md index 84bca54a90..d86acb291a 100644 --- a/packages/integration/api-report.md +++ b/packages/integration/api-report.md @@ -35,6 +35,7 @@ export type AwsS3IntegrationConfig = { accessKeyId?: string; secretAccessKey?: string; roleArn?: string; + externalId?: string; }; // @public From d3a85ab076dfbb796714cca4d89257291d26734b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 15 Mar 2022 18:43:09 +0100 Subject: [PATCH 078/410] docs/releases: initial release notes for v1.0.0 Signed-off-by: Patrik Oldsberg --- docs/releases/v1.0.0.md | 83 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 2 deletions(-) diff --git a/docs/releases/v1.0.0.md b/docs/releases/v1.0.0.md index 66f86c9f3b..ffd9b0fbdf 100644 --- a/docs/releases/v1.0.0.md +++ b/docs/releases/v1.0.0.md @@ -1,9 +1,88 @@ --- id: v1.0.0 title: v1.0.0 -description: Release v1.0.0 +description: Backstage Release v1.0.0 --- +These are the release notes for the v1.0.0 release of [Backstage](https://backstage.io/). + +A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for the hard work in getting this release developed and done. + ## Highlights -It's 1.0! +### Packages Reaching 1.0 + +Several packages have reached version 1.0, you can read more about the effect of this in our [versioning policy](https://backstage.io/docs/overview/versioning-policy). + +#### Backstage Core + +- [`@backstage/app-defaults`](https://www.npmjs.com/package/@backstage/app-defaults) +- [`@backstage/config-loader`](https://www.npmjs.com/package/@backstage/config-loader) +- [`@backstage/config`](https://www.npmjs.com/package/@backstage/config) +- [`@backstage/core-app-api`](https://www.npmjs.com/package/@backstage/core-app-api) +- [`@backstage/core-plugin-api`](https://www.npmjs.com/package/@backstage/core-plugin-api) +- [`@backstage/dev-utils`](https://www.npmjs.com/package/@backstage/dev-utils) +- [`@backstage/errors`](https://www.npmjs.com/package/@backstage/errors) +- [`@backstage/integration-react`](https://www.npmjs.com/package/@backstage/integration-react) +- [`@backstage/integration`](https://www.npmjs.com/package/@backstage/integration) +- [`@backstage/test-utils`](https://www.npmjs.com/package/@backstage/test-utils) +- [`@backstage/types`](https://www.npmjs.com/package/@backstage/types) +- [`@backstage/version-bridge`](https://www.npmjs.com/package/@backstage/version-bridge) + +#### Software Catalog + +- [`@backstage/catalog-client`](https://www.npmjs.com/package/@backstage/catalog-client) +- [`@backstage/catalog-model`](https://www.npmjs.com/package/@backstage/catalog-model) +- [`@backstage/plugin-catalog-backend`](https://www.npmjs.com/package/@backstage/plugin-catalog-backend) +- [`@backstage/plugin-catalog-common`](https://www.npmjs.com/package/@backstage/plugin-catalog-common) +- [`@backstage/plugin-catalog-react`](https://www.npmjs.com/package/@backstage/plugin-catalog-react) +- [`@backstage/plugin-catalog`](https://www.npmjs.com/package/@backstage/plugin-catalog) + +#### Software Templates + +- [`@backstage/plugin-scaffolder-backend`](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend) +- [`@backstage/plugin-scaffolder-common`](https://www.npmjs.com/package/@backstage/plugin-scaffolder-common) +- [`@backstage/plugin-scaffolder`](https://www.npmjs.com/package/@backstage/plugin-scaffolder) + +#### TechDocs + +- [`@backstage/plugin-techdocs-backend`](https://www.npmjs.com/package/@backstage/plugin-techdocs-backend) +- [`@backstage/plugin-techdocs-node`](https://www.npmjs.com/package/@backstage/plugin-techdocs-node) +- [`@backstage/plugin-techdocs`](https://www.npmjs.com/package/@backstage/plugin-techdocs) +- [`@techdocs/cli`](https://www.npmjs.com/package/@techdocs/cli) + +### Switch from `@vscode/sqlite3` to `better-sqlite3` + +The default SQLite3 driver has been switched to [better-sqlite3](https://github.com/JoshuaWise/better-sqlite3), as many users were running into issues with installation of `@vscode/sqlite3`. + +### New plugin: Google Calendar + +The new `@backstage/plugin-gcalendar` plugin by [@alexrybch](https://github.com/alexrybch) provides a home page widget that shows your Google Calendar events. + +### Package renames: + +The following packages have been renamed, be sure to update your usage: + +- `@backstage/search-common` -> `@backstage/plugin-search-common` +- `@backstage/techdocs-common` -> `@backstage/plugin-techdocs-node` + +## Security Fixes + +This release does not contain any security fixes. + +## Upgrade path + +We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for [keeping Backstage updated](https://backstage.io/docs/getting-started/keeping-backstage-updated). + +## Links and References + +Below you can find a list of links and references to help you learn about and start using this new release. + +- [Backstage official website](https://backstage.io/), [documentation](https://backstage.io/docs/), and [getting started guide](https://backstage.io/docs/getting-started/) +- [GitHub repository](https://github.com/backstage/backstage) +- Backstage's [versioning and support policy](https://backstage.io/docs/overview/versioning-policy) +- [Community Discord](https://discord.gg/bFESRKVt) for discussions and support +- [Changelog](https://github.com/backstage/backstage/releases/tag/v1.0.0) for this release +- Backstage [Demos](https://backstage.io/demos), [Blog](https://backstage.io/blog), [Roadmap](https://backstage.io/docs/overview/roadmap) and [Plugins](https://backstage.io/plugins) + +Sign up for our [newsletter](https://mailchi.mp/spotify/backstage-community) if you want to be informed about what is happening in the world of Backstage. From 5048bd85757585a53eb5043b75ee52963b50bee0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Mar 2022 10:41:12 +0100 Subject: [PATCH 079/410] microsite: shrink banner and provide padding for close button Signed-off-by: Patrik Oldsberg --- microsite/static/css/custom.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/microsite/static/css/custom.css b/microsite/static/css/custom.css index 139fa7b1d2..a7033e952b 100644 --- a/microsite/static/css/custom.css +++ b/microsite/static/css/custom.css @@ -1073,11 +1073,13 @@ code { .Banner { position: relative; padding: 14px; + padding-right: 50px; /* space for the dismiss button */ margin: 14px 20px; border-radius: 4px; background-color: $primaryColor; font-family: Helvetica Neue, sans-serif; color: #000; + display: inline-block; } .Banner--hidden { From bbb7932c1ac8cdc833cce1562d5ff2e9c0ad68a1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Mar 2022 10:41:32 +0100 Subject: [PATCH 080/410] microsite: move newsletter cta to dismissable banner Signed-off-by: Patrik Oldsberg --- microsite/pages/en/index.js | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/microsite/pages/en/index.js b/microsite/pages/en/index.js index 3804c45478..7bc14e7ec8 100644 --- a/microsite/pages/en/index.js +++ b/microsite/pages/en/index.js @@ -21,16 +21,12 @@ class Index extends React.Component { return (
    - - 🚀 Feature updates!{' '} - - Software Templates - {' '} - and{' '} - - TechDocs - {' '} - are now in beta. + + 🗞️ Want to stay up to date with Backstage? Sign up for our{' '} + + Newsletter + + ! From 9201d27e942fe161bacdec702fa347a929b72124 Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Wed, 16 Mar 2022 14:41:39 +0100 Subject: [PATCH 081/410] tldr Signed-off-by: Vincenzo Scamporlino --- microsite/blog/2022-03-16-backstage-turns-two.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/blog/2022-03-16-backstage-turns-two.md b/microsite/blog/2022-03-16-backstage-turns-two.md index 626b1a3d5f..5388e05526 100644 --- a/microsite/blog/2022-03-16-backstage-turns-two.md +++ b/microsite/blog/2022-03-16-backstage-turns-two.md @@ -7,7 +7,7 @@ authorImageURL: https://avatars1.githubusercontent.com/u/1236238?s=460&v=4 ![A cake celebrating Backstage’s second birthday](assets/22-03-16/backstage-2nd-birthday.gif) -_TLDR;_ Backstage has turned two. Of course, this is software, so we expect things to move fast. But when you have a passionate, worldwide community building together, we’ve now seen firsthand just how fast that can be. We’re marking our second year as a community by becoming a CNCF incubating project, reaching 100 public adopters, releasing version 1.0 of the core app, and other very nice birthday gifts. Rather than a toddler finding their feet, Backstage today is beginning to look awfully grown-up for a two-year-old. +**TLDR:** Backstage has turned two. Of course, this is software, so we expect things to move fast. But when you have a passionate, worldwide community building together, we’ve now seen firsthand just how fast that can be. We’re marking our second year as a community by becoming a CNCF incubating project, reaching 100 public adopters, releasing version 1.0 of the core app, and other very nice birthday gifts. Rather than a toddler finding their feet, Backstage today is beginning to look awfully grown-up for a two-year-old. From cb380156081bae5497c2e85798335b13b86b39e6 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Wed, 16 Mar 2022 15:05:44 +0100 Subject: [PATCH 082/410] microsite: document release bump option Signed-off-by: Johan Haals --- docs/getting-started/keeping-backstage-updated.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/getting-started/keeping-backstage-updated.md b/docs/getting-started/keeping-backstage-updated.md index f16c62e28a..64f78c0997 100644 --- a/docs/getting-started/keeping-backstage-updated.md +++ b/docs/getting-started/keeping-backstage-updated.md @@ -22,6 +22,12 @@ yarn backstage-cli versions:bump The reason for bumping all `@backstage` packages at once is to maintain the dependencies that they have between each other. +By default the bump command will upgrade `@backstage` packages to the latest `main` release line which is released monthly. For those in a hurry that want to track the `next` release line which releases weekly can do so using the `--release next` option. + +```bash +yarn backstage-cli versions:bump --release next +``` + If you are using other plugins you can pass in the `--pattern` option to update more than just the `@backstage/*` dependencies. From c689d7a94c95eb6ee12dca7857149b63d9afc791 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Mar 2022 13:43:20 +0100 Subject: [PATCH 083/410] catalog: group, rename, and move filter components to catalog-react Signed-off-by: Patrik Oldsberg --- .changeset/lucky-scissors-play.md | 9 ++++++ .changeset/nasty-chefs-dream.md | 16 ++++++++++ .changeset/nice-seals-decide.md | 6 ++++ .../software-catalog/catalog-customization.md | 24 +++++++-------- .../DefaultApiExplorerPage.tsx | 21 +++++--------- plugins/catalog-react/api-report.md | 7 +++++ plugins/catalog-react/package.json | 1 + .../CatalogFilterLayout.tsx} | 29 ++++++++++++++++--- .../components/CatalogFilterLayout/index.ts} | 12 +------- plugins/catalog-react/src/components/index.ts | 1 + plugins/catalog/api-report.md | 22 +++++++------- .../CatalogPage/DefaultCatalogPage.tsx | 18 +++++------- .../FilteredEntityLayout.tsx | 27 ----------------- .../components/FilteredEntityLayout/index.ts | 24 +++++++++++++-- plugins/techdocs/package.json | 1 - .../home/components/DefaultTechDocsHome.tsx | 18 +++++------- 16 files changed, 131 insertions(+), 105 deletions(-) create mode 100644 .changeset/lucky-scissors-play.md create mode 100644 .changeset/nasty-chefs-dream.md create mode 100644 .changeset/nice-seals-decide.md rename plugins/{catalog/src/components/FilteredEntityLayout/FilterContainer.tsx => catalog-react/src/components/CatalogFilterLayout/CatalogFilterLayout.tsx} (78%) rename plugins/{catalog/src/components/FilteredEntityLayout/EntityListContainer.tsx => catalog-react/src/components/CatalogFilterLayout/index.ts} (71%) delete mode 100644 plugins/catalog/src/components/FilteredEntityLayout/FilteredEntityLayout.tsx diff --git a/.changeset/lucky-scissors-play.md b/.changeset/lucky-scissors-play.md new file mode 100644 index 0000000000..dca966d515 --- /dev/null +++ b/.changeset/lucky-scissors-play.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-catalog': patch +--- + +**DEPRECATION**: The `FilteredEntityLayout` and related components have been moved to `@backstage/plugin-catalog-react` and renamed. The original components are now deprecated and should be replaced as follows: + +- `FilteredEntityLayout` -> `CatalogFilterLayout` +- `FilterContainer` -> `CatalogFilterLayout.Filters` +- `EntityListContainer` -> `CatalogFilterLayout.Content` diff --git a/.changeset/nasty-chefs-dream.md b/.changeset/nasty-chefs-dream.md new file mode 100644 index 0000000000..198f280fcc --- /dev/null +++ b/.changeset/nasty-chefs-dream.md @@ -0,0 +1,16 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Added `CatalogFilterLayout`, which replaces `FilteredEntityLayout` from `@backstage/plugin-catalog`, as well as `FilterContainer` and `EntityListContainer`. It is used like this: + +```tsx + + + {/* filter drawer, for example and friends */} + + + {/* content view, for example a */} + + +``` diff --git a/.changeset/nice-seals-decide.md b/.changeset/nice-seals-decide.md new file mode 100644 index 0000000000..999b2db6a5 --- /dev/null +++ b/.changeset/nice-seals-decide.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-api-docs': patch +'@backstage/plugin-techdocs': patch +--- + +Switched to using `CatalogFilterLayout` from `@backstage/plugin-catalog-react`. diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index 80c9458aee..1b5535a464 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -41,16 +41,16 @@ export const CustomCatalogPage = ({ All your software catalog entities - - + + - - + + - - + + @@ -151,18 +151,18 @@ export const CustomCatalogPage = ({ return ( ... - - + + + + ... }; diff --git a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.tsx b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.tsx index d38383f004..9fc6b2c3c2 100644 --- a/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.tsx +++ b/plugins/api-docs/src/components/ApiExplorerPage/DefaultApiExplorerPage.tsx @@ -24,13 +24,7 @@ import { TableProps, } from '@backstage/core-components'; import { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; -import { - CatalogTable, - CatalogTableRow, - FilteredEntityLayout, - EntityListContainer, - FilterContainer, -} from '@backstage/plugin-catalog'; +import { CatalogTable, CatalogTableRow } from '@backstage/plugin-catalog'; import { EntityKindPicker, EntityLifecyclePicker, @@ -40,6 +34,7 @@ import { EntityTypePicker, UserListFilterKind, UserListPicker, + CatalogFilterLayout, } from '@backstage/plugin-catalog-react'; import React from 'react'; import { registerComponentRouteRef } from '../../routes'; @@ -95,22 +90,22 @@ export const DefaultApiExplorerPage = ({ All your APIs - - + + - + + - - + + diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 265fce417d..a1541b555e 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -63,6 +63,13 @@ export { CatalogApi }; // @public export const catalogApiRef: ApiRef; +// @public (undocumented) +export const CatalogFilterLayout: { + (props: { children: React_2.ReactNode }): JSX.Element; + Filters: (props: { children: React_2.ReactNode }) => JSX.Element; + Content: (props: { children: React_2.ReactNode }) => JSX.Element; +}; + // @public (undocumented) export type CatalogReactComponentsNameToClassKey = { CatalogReactUserListPicker: CatalogReactUserListPickerClassKey; diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 5ba52e8ac7..39180ad5fb 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -42,6 +42,7 @@ "@backstage/integration": "^0.8.0", "@backstage/plugin-permission-common": "^0.5.2", "@backstage/plugin-permission-react": "^0.3.3", + "@backstage/theme": "^0.2.15", "@backstage/types": "^0.1.3", "@backstage/version-bridge": "^0.1.2", "@material-ui/core": "^4.12.2", diff --git a/plugins/catalog/src/components/FilteredEntityLayout/FilterContainer.tsx b/plugins/catalog-react/src/components/CatalogFilterLayout/CatalogFilterLayout.tsx similarity index 78% rename from plugins/catalog/src/components/FilteredEntityLayout/FilterContainer.tsx rename to plugins/catalog-react/src/components/CatalogFilterLayout/CatalogFilterLayout.tsx index 4c0d17599d..751eb35f1d 100644 --- a/plugins/catalog/src/components/FilteredEntityLayout/FilterContainer.tsx +++ b/plugins/catalog-react/src/components/CatalogFilterLayout/CatalogFilterLayout.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { BackstageTheme } from '@backstage/theme'; +import React, { useState } from 'react'; import { Box, Button, @@ -25,10 +25,10 @@ import { useTheme, } from '@material-ui/core'; import FilterListIcon from '@material-ui/icons/FilterList'; -import React, { useState } from 'react'; +import { BackstageTheme } from '@backstage/theme'; /** @public */ -export function FilterContainer(props: { children: React.ReactNode }) { +export const Filters = (props: { children: React.ReactNode }) => { const isMidSizeScreen = useMediaQuery(theme => theme.breakpoints.down('md'), ); @@ -69,4 +69,25 @@ export function FilterContainer(props: { children: React.ReactNode }) { {props.children} ); -} +}; + +/** @public */ +export const Content = (props: { children: React.ReactNode }) => { + return ( + + {props.children} + + ); +}; + +/** @public */ +export const CatalogFilterLayout = (props: { children: React.ReactNode }) => { + return ( + + {props.children} + + ); +}; + +CatalogFilterLayout.Filters = Filters; +CatalogFilterLayout.Content = Content; diff --git a/plugins/catalog/src/components/FilteredEntityLayout/EntityListContainer.tsx b/plugins/catalog-react/src/components/CatalogFilterLayout/index.ts similarity index 71% rename from plugins/catalog/src/components/FilteredEntityLayout/EntityListContainer.tsx rename to plugins/catalog-react/src/components/CatalogFilterLayout/index.ts index d210d551fb..b69aab56ed 100644 --- a/plugins/catalog/src/components/FilteredEntityLayout/EntityListContainer.tsx +++ b/plugins/catalog-react/src/components/CatalogFilterLayout/index.ts @@ -14,14 +14,4 @@ * limitations under the License. */ -import { Grid } from '@material-ui/core'; -import React from 'react'; - -/** @public */ -export function EntityListContainer(props: { children: React.ReactNode }) { - return ( - - {props.children} - - ); -} +export { CatalogFilterLayout } from './CatalogFilterLayout'; diff --git a/plugins/catalog-react/src/components/index.ts b/plugins/catalog-react/src/components/index.ts index 807d6bb702..7a26a72bf9 100644 --- a/plugins/catalog-react/src/components/index.ts +++ b/plugins/catalog-react/src/components/index.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +export * from './CatalogFilterLayout'; export * from './EntityKindPicker'; export * from './EntityLifecyclePicker'; export * from './EntityOwnerPicker'; diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 43cde23c57..eddbe913d7 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -283,10 +283,10 @@ export interface EntityLinksCardProps { // @public (undocumented) export type EntityLinksEmptyStateClassKey = 'code'; -// @public (undocumented) -export function EntityListContainer(props: { - children: React_2.ReactNode; -}): JSX.Element; +// @public @deprecated (undocumented) +export const EntityListContainer: (props: { + children: ReactNode; +}) => JSX.Element; // @public export function EntityOrphanWarning(): JSX.Element; @@ -319,15 +319,13 @@ export interface EntitySwitchProps { children: ReactNode; } -// @public (undocumented) -export function FilterContainer(props: { - children: React_2.ReactNode; -}): JSX.Element; +// @public @deprecated (undocumented) +export const FilterContainer: (props: { children: ReactNode }) => JSX.Element; -// @public (undocumented) -export function FilteredEntityLayout(props: { - children: React_2.ReactNode; -}): JSX.Element; +// @public @deprecated (undocumented) +export const FilteredEntityLayout: (props: { + children: React.ReactNode; +}) => JSX.Element; // @public export function hasCatalogProcessingErrors( diff --git a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx index 8bb9bae764..2a2861ac29 100644 --- a/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx +++ b/plugins/catalog/src/components/CatalogPage/DefaultCatalogPage.tsx @@ -25,6 +25,7 @@ import { } from '@backstage/core-components'; import { configApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api'; import { + CatalogFilterLayout, EntityLifecyclePicker, EntityListProvider, EntityOwnerPicker, @@ -36,11 +37,6 @@ import { import React from 'react'; import { createComponentRouteRef } from '../../routes'; import { CatalogTable, CatalogTableRow } from '../CatalogTable'; -import { - FilteredEntityLayout, - EntityListContainer, - FilterContainer, -} from '../FilteredEntityLayout'; import { CatalogKindHeader } from '../CatalogKindHeader'; /** @@ -71,18 +67,18 @@ export function DefaultCatalogPage(props: DefaultCatalogPageProps) { /> All your software catalog entities - - + + - - + + - - + + diff --git a/plugins/catalog/src/components/FilteredEntityLayout/FilteredEntityLayout.tsx b/plugins/catalog/src/components/FilteredEntityLayout/FilteredEntityLayout.tsx deleted file mode 100644 index 8e595fe5cd..0000000000 --- a/plugins/catalog/src/components/FilteredEntityLayout/FilteredEntityLayout.tsx +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Grid } from '@material-ui/core'; -import React from 'react'; - -/** @public */ -export function FilteredEntityLayout(props: { children: React.ReactNode }) { - return ( - - {props.children} - - ); -} diff --git a/plugins/catalog/src/components/FilteredEntityLayout/index.ts b/plugins/catalog/src/components/FilteredEntityLayout/index.ts index ded61a4edc..892aa34147 100644 --- a/plugins/catalog/src/components/FilteredEntityLayout/index.ts +++ b/plugins/catalog/src/components/FilteredEntityLayout/index.ts @@ -14,6 +14,24 @@ * limitations under the License. */ -export { FilteredEntityLayout } from './FilteredEntityLayout'; -export { FilterContainer } from './FilterContainer'; -export { EntityListContainer } from './EntityListContainer'; +import { CatalogFilterLayout } from '@backstage/plugin-catalog-react'; + +/** + * @public + * @deprecated Use `FilteredCatalogLayout` from `@backstage/plugin-catalog-react` instead. + */ +export const FilteredEntityLayout = CatalogFilterLayout as (props: { + children: React.ReactNode; +}) => JSX.Element; + +/** + * @public + * @deprecated Use `FilteredCatalogLayout.Filters` from `@backstage/plugin-catalog-react` instead. + */ +export const FilterContainer = CatalogFilterLayout.Filters; + +/** + * @public + * @deprecated Use `FilteredCatalogLayout.Content` from `@backstage/plugin-catalog-react` instead. + */ +export const EntityListContainer = CatalogFilterLayout.Content; diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index e02e4e1fa1..54e8aa4c28 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -42,7 +42,6 @@ "@backstage/errors": "^0.2.2", "@backstage/integration": "^0.8.0", "@backstage/integration-react": "^0.1.25", - "@backstage/plugin-catalog": "^0.10.0", "@backstage/plugin-catalog-react": "^0.9.0", "@backstage/plugin-search": "^0.7.3", "@backstage/theme": "^0.2.15", diff --git a/plugins/techdocs/src/home/components/DefaultTechDocsHome.tsx b/plugins/techdocs/src/home/components/DefaultTechDocsHome.tsx index 4dcff501ed..bdbb4877ac 100644 --- a/plugins/techdocs/src/home/components/DefaultTechDocsHome.tsx +++ b/plugins/techdocs/src/home/components/DefaultTechDocsHome.tsx @@ -23,11 +23,7 @@ import { TableProps, } from '@backstage/core-components'; import { - EntityListContainer, - FilterContainer, - FilteredEntityLayout, -} from '@backstage/plugin-catalog'; -import { + CatalogFilterLayout, EntityListProvider, EntityOwnerPicker, EntityTagPicker, @@ -65,17 +61,17 @@ export const DefaultTechDocsHome = (props: DefaultTechDocsHomeProps) => { - - + + - - + + - - + + From 20a262c2147c8ab95b5803008376b6ec553be1e1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Mar 2022 14:22:16 +0100 Subject: [PATCH 084/410] scaffolder: use CatalogFilterLayout Signed-off-by: Patrik Oldsberg --- .changeset/healthy-lions-sin.md | 5 ++++ .../ScaffolderPage/ScaffolderPage.tsx | 24 ++++++------------- 2 files changed, 12 insertions(+), 17 deletions(-) create mode 100644 .changeset/healthy-lions-sin.md diff --git a/.changeset/healthy-lions-sin.md b/.changeset/healthy-lions-sin.md new file mode 100644 index 0000000000..632b87067c --- /dev/null +++ b/.changeset/healthy-lions-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +The `ScaffolderPage` now uses the `CatalogFilterLayout`, which means the filters are put in a drawer on smaller screens. diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index 0b3fccc07c..75c04d98d9 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -27,13 +27,13 @@ import { Entity } from '@backstage/catalog-model'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import { useRouteRef } from '@backstage/core-plugin-api'; import { + CatalogFilterLayout, EntityKindPicker, EntityListProvider, EntitySearchBar, EntityTagPicker, UserListPicker, } from '@backstage/plugin-catalog-react'; -import { makeStyles } from '@material-ui/core'; import React, { ComponentType } from 'react'; import { registerComponentRouteRef } from '../../routes'; import { TemplateList } from '../TemplateList'; @@ -41,15 +41,6 @@ import { TemplateTypePicker } from '../TemplateTypePicker'; import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common'; import { usePermission } from '@backstage/plugin-permission-react'; -const useStyles = makeStyles(theme => ({ - contentWrapper: { - display: 'grid', - gridTemplateAreas: "'filters' 'grid'", - gridTemplateColumns: '250px 1fr', - gridColumnGap: theme.spacing(2), - }, -})); - export type ScaffolderPageProps = { TemplateCardComponent?: | ComponentType<{ template: TemplateEntityV1beta3 }> @@ -66,7 +57,6 @@ export const ScaffolderPageContents = ({ TemplateCardComponent, groups, }: ScaffolderPageProps) => { - const styles = useStyles(); const registerComponentLink = useRouteRef(registerComponentRouteRef); const otherTemplatesGroup = { title: groups ? 'Other Templates' : 'Templates', @@ -104,8 +94,8 @@ export const ScaffolderPageContents = ({ -
    -
    + +
    -
    + + {groups && groups.map((group, index) => ( -
    -
    + + ); From e3ab2aeecb056b7247b6cbec2b17db4633c8a4a7 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Mar 2022 15:17:08 +0100 Subject: [PATCH 085/410] chore: updating youtube video id Signed-off-by: blam --- microsite/blog/2022-03-16-backstage-turns-two.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/blog/2022-03-16-backstage-turns-two.md b/microsite/blog/2022-03-16-backstage-turns-two.md index 5388e05526..172fb7b971 100644 --- a/microsite/blog/2022-03-16-backstage-turns-two.md +++ b/microsite/blog/2022-03-16-backstage-turns-two.md @@ -49,7 +49,7 @@ The Backstage community is truly global with adopters and contributors from almo We asked a few contributors and maintainers to share their thoughts around this two-year milestone. - + Warms the heart, doesn’t it? Thanks again to all our contributors for making this possible. Seriously. We’re proud of what the community has accomplished and how we’ve accomplished it. All along, it’s your enthusiasm and warm/collaborative/positive vibes that have carried us and this project through. From d8716924d65ef2f3a92f1c9cacbc9e7d749bd981 Mon Sep 17 00:00:00 2001 From: Phil Kuang Date: Sat, 26 Feb 2022 16:47:45 -0500 Subject: [PATCH 086/410] feat(TemplatePreviewPage): implement a view for previewing template form UIs Signed-off-by: Phil Kuang --- .changeset/ten-otters-act.md | 5 + packages/app/src/App.tsx | 2 + .../scaffolder/defaultPreviewTemplate.ts | 54 ++++ plugins/scaffolder/api-report.md | 1 + plugins/scaffolder/package.json | 7 +- .../MultistepJsonForm/MultistepJsonForm.tsx | 8 +- plugins/scaffolder/src/components/Router.tsx | 15 +- .../src/components/TemplatePage/index.ts | 2 +- .../TemplatePreviewPage.tsx | 269 ++++++++++++++++++ .../components/TemplatePreviewPage/index.ts | 16 ++ yarn.lock | 235 +++++++++++++-- 11 files changed, 584 insertions(+), 30 deletions(-) create mode 100644 .changeset/ten-otters-act.md create mode 100644 packages/app/src/components/scaffolder/defaultPreviewTemplate.ts create mode 100644 plugins/scaffolder/src/components/TemplatePreviewPage/TemplatePreviewPage.tsx create mode 100644 plugins/scaffolder/src/components/TemplatePreviewPage/index.ts diff --git a/.changeset/ten-otters-act.md b/.changeset/ten-otters-act.md new file mode 100644 index 0000000000..c9c755820c --- /dev/null +++ b/.changeset/ten-otters-act.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Implement a template preview page (`/create/preview`) to test creating form UIs diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index befd3274f3..ce765bd312 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -79,6 +79,7 @@ import { entityPage } from './components/catalog/EntityPage'; import { homePage } from './components/home/HomePage'; import { Root } from './components/Root'; import { LowerCaseValuePickerFieldExtension } from './components/scaffolder/customScaffolderExtensions'; +import { defaultPreviewTemplate } from './components/scaffolder/defaultPreviewTemplate'; import { searchPage } from './components/search/SearchPage'; import { providers } from './identityProviders'; import * as plugins from './plugins'; @@ -179,6 +180,7 @@ const routes = ( path="/create" element={ boolean; }>; + defaultPreviewTemplate?: string; }; // @public diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index dcdeeac1c9..8293d086ef 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -34,7 +34,6 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@types/json-schema": "^7.0.9", "@backstage/catalog-client": "^0.9.0", "@backstage/catalog-model": "^0.13.0", "@backstage/config": "^0.1.15", @@ -49,11 +48,16 @@ "@backstage/plugin-scaffolder-common": "^0.3.0", "@backstage/theme": "^0.2.15", "@backstage/types": "^0.1.3", + "@codemirror/legacy-modes": "^0.19.0", + "@codemirror/panel": "^0.19.1", + "@codemirror/stream-parser": "^0.19.6", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", "@rjsf/core": "^3.2.1", "@rjsf/material-ui": "^3.2.1", + "@types/json-schema": "^7.0.9", + "@uiw/react-codemirror": "^4.5.1", "classnames": "^2.2.6", "git-url-parse": "^11.6.0", "humanize-duration": "^3.25.1", @@ -66,6 +70,7 @@ "react-router-dom": "6.0.0-beta.0", "react-use": "^17.2.4", "use-immer": "^0.6.0", + "yaml": "^1.9.2", "zen-observable": "^0.8.15" }, "peerDependencies": { diff --git a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx index 4d37eafee4..a868c50d7a 100644 --- a/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx +++ b/plugins/scaffolder/src/components/MultistepJsonForm/MultistepJsonForm.tsx @@ -51,7 +51,7 @@ type Props = { formData: Record; onChange: (e: IChangeEvent) => void; onReset: () => void; - onFinish: () => Promise; + onFinish?: () => Promise; widgets?: FormProps['widgets']; fields?: FormProps['fields']; }; @@ -163,6 +163,10 @@ export const MultistepJsonForm = (props: Props) => { }; const handleBack = () => setActiveStep(Math.max(activeStep - 1, 0)); const handleCreate = async () => { + if (!onFinish) { + return; + } + setDisableButtons(true); try { await onFinish(); @@ -232,7 +236,7 @@ export const MultistepJsonForm = (props: Props) => { variant="contained" color="primary" onClick={handleCreate} - disabled={disableButtons} + disabled={!onFinish || disableButtons} > Create diff --git a/plugins/scaffolder/src/components/Router.tsx b/plugins/scaffolder/src/components/Router.tsx index 261556d638..ef4f373ef2 100644 --- a/plugins/scaffolder/src/components/Router.tsx +++ b/plugins/scaffolder/src/components/Router.tsx @@ -23,6 +23,7 @@ import { TemplatePage } from './TemplatePage'; import { TaskPage } from './TaskPage'; import { ActionsPage } from './ActionsPage'; import { SecretsContextProvider } from './secrets/SecretsContext'; +import { TemplatePreviewPage } from './TemplatePreviewPage'; import { FieldExtensionOptions, @@ -48,6 +49,7 @@ export type RouterProps = { titleComponent?: React.ReactNode; filter: (entity: Entity) => boolean; }>; + defaultPreviewTemplate?: string; }; /** @@ -56,7 +58,7 @@ export type RouterProps = { * @public */ export const Router = (props: RouterProps) => { - const { groups, components = {} } = props; + const { groups, components = {}, defaultPreviewTemplate } = props; const { TemplateCardComponent, TaskPageComponent } = components; @@ -104,6 +106,17 @@ export const Router = (props: RouterProps) => { /> } /> } /> + + + + } + /> ); }; diff --git a/plugins/scaffolder/src/components/TemplatePage/index.ts b/plugins/scaffolder/src/components/TemplatePage/index.ts index f796bd6500..b01da032e5 100644 --- a/plugins/scaffolder/src/components/TemplatePage/index.ts +++ b/plugins/scaffolder/src/components/TemplatePage/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { TemplatePage } from './TemplatePage'; +export { createValidator, TemplatePage } from './TemplatePage'; diff --git a/plugins/scaffolder/src/components/TemplatePreviewPage/TemplatePreviewPage.tsx b/plugins/scaffolder/src/components/TemplatePreviewPage/TemplatePreviewPage.tsx new file mode 100644 index 0000000000..cb4f8e9896 --- /dev/null +++ b/plugins/scaffolder/src/components/TemplatePreviewPage/TemplatePreviewPage.tsx @@ -0,0 +1,269 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useCallback, useState } from 'react'; +import useAsync from 'react-use/lib/useAsync'; +import useDebounce from 'react-use/lib/useDebounce'; +import { Entity } from '@backstage/catalog-model'; +import { Content, Header, InfoCard, Page } from '@backstage/core-components'; +import { alertApiRef, useApi, useApiHolder } from '@backstage/core-plugin-api'; +import { + catalogApiRef, + humanizeEntityRef, +} from '@backstage/plugin-catalog-react'; +import { JsonObject } from '@backstage/types'; +import { yaml as yamlSupport } from '@codemirror/legacy-modes/mode/yaml'; +import { showPanel } from '@codemirror/panel'; +import { StreamLanguage } from '@codemirror/stream-parser'; +import { + FormControl, + Grid, + InputLabel, + LinearProgress, + makeStyles, + MenuItem, + Select, +} from '@material-ui/core'; +import { IChangeEvent } from '@rjsf/core'; +import CodeMirror from '@uiw/react-codemirror'; +import yaml from 'yaml'; +import { FieldExtensionOptions } from '../../extensions'; +import { TemplateParameterSchema } from '../../types'; +import { MultistepJsonForm } from '../MultistepJsonForm'; +import { createValidator } from '../TemplatePage'; + +const EXAMPLE_TEMPLATE_PARAMS_YAML = `# Edit the template parameters below to see how they will render in the scaffolder form UI +parameters: + - title: Fill in some steps + required: + - name + properties: + name: + title: Name + type: string + description: Unique name of the component + owner: + title: Owner + type: string + description: Owner of the component + ui:field: OwnerPicker + ui:options: + allowedKinds: + - Group + - title: Choose a location + required: + - repoUrl + properties: + repoUrl: + title: Repository Location + type: string + ui:field: RepoUrlPicker + ui:options: + allowedHosts: + - github.com +`; + +type TemplateOption = { + label: string; + value: Entity; +}; + +const useStyles = makeStyles({ + templateSelect: { + marginBottom: '10px', + }, + grid: { + height: '100%', + }, + codeMirror: { + height: '95%', + }, +}); + +export const TemplatePreviewPage = ({ + defaultPreviewTemplate = EXAMPLE_TEMPLATE_PARAMS_YAML, + customFieldExtensions = [], +}: { + defaultPreviewTemplate?: string; + customFieldExtensions?: FieldExtensionOptions[]; +}) => { + const classes = useStyles(); + const alertApi = useApi(alertApiRef); + const catalogApi = useApi(catalogApiRef); + const apiHolder = useApiHolder(); + const [selectedTemplate, setSelectedTemplate] = useState(''); + const [schema, setSchema] = useState({ + title: '', + steps: [], + }); + const [templateOptions, setTemplateOptions] = useState([]); + const [templateYaml, setTemplateYaml] = useState(defaultPreviewTemplate); + const [formState, setFormState] = useState({}); + + const { loading } = useAsync( + () => + catalogApi + .getEntities({ + filter: { kind: 'template' }, + fields: [ + 'kind', + 'metadata.namespace', + 'metadata.name', + 'metadata.title', + 'spec.parameters', + ], + }) + .then(({ items }) => + setTemplateOptions( + items.map(template => ({ + label: + template.metadata.title ?? + humanizeEntityRef(template, { defaultKind: 'template' }), + value: template, + })), + ), + ) + .catch(e => + alertApi.post({ + message: `Error loading exisiting templates: ${e.message}`, + severity: 'error', + }), + ), + [catalogApi], + ); + + const errorPanel = document.createElement('div'); + errorPanel.style.color = 'red'; + + useDebounce( + () => { + try { + const parsedTemplate = yaml.parse(templateYaml); + + setSchema({ + title: 'Preview', + steps: parsedTemplate.parameters.map((param: JsonObject) => ({ + title: param.title, + schema: param, + })), + }); + setFormState({}); + } catch (e) { + errorPanel.textContent = e.message; + } + }, + 250, + [setFormState, setSchema, templateYaml], + ); + + const handleSelectChange = useCallback( + selected => { + setSelectedTemplate(selected); + setTemplateYaml(yaml.stringify(selected.spec)); + }, + [setTemplateYaml], + ); + + const handleFormReset = () => setFormState({}); + const handleFormChange = useCallback( + (e: IChangeEvent) => setFormState(e.formData), + [setFormState], + ); + + const handleCodeChange = useCallback( + (code: string) => { + setTemplateYaml(code); + }, + [setTemplateYaml], + ); + + const customFieldComponents = Object.fromEntries( + customFieldExtensions.map(({ name, component }) => [name, component]), + ); + + const customFieldValidators = Object.fromEntries( + customFieldExtensions.map(({ name, validation }) => [name, validation]), + ); + + return ( + +
    + + {loading && } + + + + + Load Existing Template + + + + ({ dom: errorPanel, top: true })), + ]} + onChange={handleCodeChange} + /> + + + {schema && ( + + { + return { + ...step, + validate: createValidator( + step.schema, + customFieldValidators, + { apiHolder }, + ), + }; + })} + /> + + )} + + + + + ); +}; diff --git a/plugins/scaffolder/src/components/TemplatePreviewPage/index.ts b/plugins/scaffolder/src/components/TemplatePreviewPage/index.ts new file mode 100644 index 0000000000..cdf7bd1e82 --- /dev/null +++ b/plugins/scaffolder/src/components/TemplatePreviewPage/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { TemplatePreviewPage } from './TemplatePreviewPage'; diff --git a/yarn.lock b/yarn.lock index 2e597e6ede..ca437689f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1295,10 +1295,10 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.17.2" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.17.7" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" + integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA== dependencies: regenerator-runtime "^0.13.4" @@ -1568,6 +1568,91 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@codemirror/autocomplete@^0.19.0": + version "0.19.14" + resolved "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-0.19.14.tgz#5f61b0fced56e7960791063d03b21d11a63f0ec5" + integrity sha512-4PqJG7GGTePc+FQF387RFebDV4ERvKj23gQBmzNtu64ZSHlYEGulwP5EIIfulBiaWEmei9TYVaMFmTdNfofpRQ== + dependencies: + "@codemirror/language" "^0.19.0" + "@codemirror/state" "^0.19.4" + "@codemirror/text" "^0.19.2" + "@codemirror/tooltip" "^0.19.12" + "@codemirror/view" "^0.19.0" + "@lezer/common" "^0.15.0" + +"@codemirror/basic-setup@^0.19.1": + version "0.19.1" + resolved "https://registry.npmjs.org/@codemirror/basic-setup/-/basic-setup-0.19.1.tgz#17b27d02f15c628eb62a85d01e3e1b1958933eb4" + integrity sha512-gLjD7YgZU/we6BzS/ecCmD3viw83dsgv5ZUaSydYbYx9X4w4w9RqYnckcJ+0GDyHfNr5Jtfv2Z5ZtFQnBj0UDA== + dependencies: + "@codemirror/autocomplete" "^0.19.0" + "@codemirror/closebrackets" "^0.19.0" + "@codemirror/commands" "^0.19.0" + "@codemirror/comment" "^0.19.0" + "@codemirror/fold" "^0.19.0" + "@codemirror/gutter" "^0.19.0" + "@codemirror/highlight" "^0.19.0" + "@codemirror/history" "^0.19.0" + "@codemirror/language" "^0.19.0" + "@codemirror/lint" "^0.19.0" + "@codemirror/matchbrackets" "^0.19.0" + "@codemirror/rectangular-selection" "^0.19.0" + "@codemirror/search" "^0.19.0" + "@codemirror/state" "^0.19.0" + "@codemirror/view" "^0.19.31" + +"@codemirror/closebrackets@^0.19.0": + version "0.19.1" + resolved "https://registry.npmjs.org/@codemirror/closebrackets/-/closebrackets-0.19.1.tgz#c93219d6800c27a880e569135b468cf4a05d903f" + integrity sha512-ZiLXT6u+VuBK5QnfBbt/Vmfd9Pg6449wn1DIOWFZHUOldg5eFn3VGGjYY2XWuHQz5WuK+7dXamV2KE885O1gyA== + dependencies: + "@codemirror/language" "^0.19.0" + "@codemirror/rangeset" "^0.19.0" + "@codemirror/state" "^0.19.2" + "@codemirror/text" "^0.19.0" + "@codemirror/view" "^0.19.44" + +"@codemirror/commands@^0.19.0": + version "0.19.8" + resolved "https://registry.npmjs.org/@codemirror/commands/-/commands-0.19.8.tgz#1f99c1a8bf200d17c4d6997379099459f3678107" + integrity sha512-65LIMSGUGGpY3oH6mzV46YWRrgao6NmfJ+AuC7jNz3K5NPnH6GCV1H5I6SwOFyVbkiygGyd0EFwrWqywTBD1aw== + dependencies: + "@codemirror/language" "^0.19.0" + "@codemirror/matchbrackets" "^0.19.0" + "@codemirror/state" "^0.19.2" + "@codemirror/text" "^0.19.6" + "@codemirror/view" "^0.19.22" + "@lezer/common" "^0.15.0" + +"@codemirror/comment@^0.19.0": + version "0.19.1" + resolved "https://registry.npmjs.org/@codemirror/comment/-/comment-0.19.1.tgz#7def8345eeb9095ef1ef33676fbde1ab4fe33fad" + integrity sha512-uGKteBuVWAC6fW+Yt8u27DOnXMT/xV4Ekk2Z5mRsiADCZDqYvryrJd6PLL5+8t64BVyocwQwNfz1UswYS2CtFQ== + dependencies: + "@codemirror/state" "^0.19.9" + "@codemirror/text" "^0.19.0" + "@codemirror/view" "^0.19.0" + +"@codemirror/fold@^0.19.0": + version "0.19.3" + resolved "https://registry.npmjs.org/@codemirror/fold/-/fold-0.19.3.tgz#de55d44a7313f2a8920aefb6ebf9eff34715d8d4" + integrity sha512-8hT+Eq2G68mL0yPRvSD2ewhnLQAX6sbUJmtGVKFcj8oAXtfpYCX8LIcfXsuI19Qs7gZkOSpqZvn+KKj8IhZoAw== + dependencies: + "@codemirror/gutter" "^0.19.0" + "@codemirror/language" "^0.19.0" + "@codemirror/rangeset" "^0.19.0" + "@codemirror/state" "^0.19.0" + "@codemirror/view" "^0.19.22" + +"@codemirror/gutter@^0.19.0", "@codemirror/gutter@^0.19.4": + version "0.19.9" + resolved "https://registry.npmjs.org/@codemirror/gutter/-/gutter-0.19.9.tgz#bbb69f4d49570d9c1b3f3df5d134980c516cd42b" + integrity sha512-PFrtmilahin1g6uL27aG5tM/rqR9DZzZYZsIrCXA5Uc2OFTFqx4owuhoU9hqfYxHp5ovfvBwQ+txFzqS4vog6Q== + dependencies: + "@codemirror/rangeset" "^0.19.0" + "@codemirror/state" "^0.19.0" + "@codemirror/view" "^0.19.23" + "@codemirror/highlight@^0.19.0": version "0.19.6" resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.6.tgz#7f2e066f83f5649e8e0748a3abe0aaeaf64b8ac2" @@ -1580,6 +1665,14 @@ "@lezer/common" "^0.15.0" style-mod "^4.0.0" +"@codemirror/history@^0.19.0": + version "0.19.2" + resolved "https://registry.npmjs.org/@codemirror/history/-/history-0.19.2.tgz#25e3fda755f77ac1223a6ae6e9d7899f5919265e" + integrity sha512-unhP4t3N2smzmHoo/Yio6ueWi+il8gm9VKrvi6wlcdGH5fOfVDNkmjHQ495SiR+EdOG35+3iNebSPYww0vN7ow== + dependencies: + "@codemirror/state" "^0.19.2" + "@codemirror/view" "^0.19.0" + "@codemirror/language@^0.19.0": version "0.19.7" resolved "https://registry.npmjs.org/@codemirror/language/-/language-0.19.7.tgz#9eef8e827692d93a701b18db9d46a42be34ecca6" @@ -1591,24 +1684,83 @@ "@lezer/common" "^0.15.5" "@lezer/lr" "^0.15.0" -"@codemirror/rangeset@^0.19.0": - version "0.19.2" - resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.2.tgz#d7a999e4273c00fecef4aba8535a426073cdcddf" - integrity sha512-5d+X8LtmeZtfFtKrSx57bIHRUpKv2HD0b74clp4fGA7qJLLfYehF6FGkJJxJb8lKsqAga1gdjjWr0jiypmIxoQ== +"@codemirror/legacy-modes@^0.19.0": + version "0.19.1" + resolved "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-0.19.1.tgz#7dc3b5df1842060648f75764ab6919fcfce3ea1a" + integrity sha512-vYPLsD/ON+3SXhlGj9Qb3fpFNNU3Ya/AtDiv/g3OyqVzhh5vs5rAnOvk8xopGWRwppdhlNPD9VyXjiOmZUQtmQ== + dependencies: + "@codemirror/stream-parser" "^0.19.0" + +"@codemirror/lint@^0.19.0": + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/lint/-/lint-0.19.6.tgz#0379688da3e16739db4a6304c73db857ca85d7ec" + integrity sha512-Pbw1Y5kHVs2J+itQ0uez3dI4qY9ApYVap7eNfV81x1/3/BXgBkKfadaw0gqJ4h4FDG7OnJwb0VbPsjJQllHjaA== + dependencies: + "@codemirror/gutter" "^0.19.4" + "@codemirror/panel" "^0.19.0" + "@codemirror/rangeset" "^0.19.1" + "@codemirror/state" "^0.19.4" + "@codemirror/tooltip" "^0.19.16" + "@codemirror/view" "^0.19.22" + crelt "^1.0.5" + +"@codemirror/matchbrackets@^0.19.0": + version "0.19.4" + resolved "https://registry.npmjs.org/@codemirror/matchbrackets/-/matchbrackets-0.19.4.tgz#50b5188eb2d53f32598dca906bf5fd66626a9ebc" + integrity sha512-VFkaOKPNudAA5sGP1zikRHCEKU0hjYmkKpr04pybUpQvfTvNJXlReCyP0rvH/1iEwAGPL990ZTT+QrLdu4MeEA== + dependencies: + "@codemirror/language" "^0.19.0" + "@codemirror/state" "^0.19.0" + "@codemirror/view" "^0.19.0" + "@lezer/common" "^0.15.0" + +"@codemirror/panel@^0.19.0", "@codemirror/panel@^0.19.1": + version "0.19.1" + resolved "https://registry.npmjs.org/@codemirror/panel/-/panel-0.19.1.tgz#bf77d27b962cf16357139e50864d0eb69d634441" + integrity sha512-sYeOCMA3KRYxZYJYn5PNlt9yNsjy3zTNTrbYSfVgjgL9QomIVgOJWPO5hZ2sTN8lufO6lw0vTBsIPL9MSidmBg== + dependencies: + "@codemirror/state" "^0.19.0" + "@codemirror/view" "^0.19.0" + +"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.1", "@codemirror/rangeset@^0.19.5": + version "0.19.9" + resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz#e80895de93c39dc7899f5be31d368c9d88aa4efc" + integrity sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ== dependencies: "@codemirror/state" "^0.19.0" -"@codemirror/state@^0.19.0", "@codemirror/state@^0.19.3": - version "0.19.6" - resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.6.tgz#d631f041d39ce41b7891b099fca26cb1fdb9763e" - integrity sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw== +"@codemirror/rectangular-selection@^0.19.0": + version "0.19.1" + resolved "https://registry.npmjs.org/@codemirror/rectangular-selection/-/rectangular-selection-0.19.1.tgz#5a88ece4fb68ce5682539497db8a64fc015aae63" + integrity sha512-9ElnqOg3mpZIWe0prPRd1SZ48Q9QB3bR8Aocq8UtjboJSUG8ABhRrbuTZMW/rMqpBPSjVpCe9xkCCkEQMYQVmw== + dependencies: + "@codemirror/state" "^0.19.0" + "@codemirror/text" "^0.19.4" + "@codemirror/view" "^0.19.0" + +"@codemirror/search@^0.19.0": + version "0.19.9" + resolved "https://registry.npmjs.org/@codemirror/search/-/search-0.19.9.tgz#b9548dfeb2028e6d5ecd1965f8f0ee50e2925603" + integrity sha512-h3MuwbUbiyOp6Np3IB5r4LH0w4inZvbtLO1Ipmz8RhElcGRiYr11Q6Bim8ocLfe08RmZT6B5EkTj1E8eNlugQQ== + dependencies: + "@codemirror/panel" "^0.19.0" + "@codemirror/rangeset" "^0.19.0" + "@codemirror/state" "^0.19.3" + "@codemirror/text" "^0.19.0" + "@codemirror/view" "^0.19.34" + crelt "^1.0.5" + +"@codemirror/state@^0.19.0", "@codemirror/state@^0.19.2", "@codemirror/state@^0.19.3", "@codemirror/state@^0.19.4", "@codemirror/state@^0.19.9": + version "0.19.9" + resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz#b797f9fbc204d6dc7975485e231693c09001b0dd" + integrity sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw== dependencies: "@codemirror/text" "^0.19.0" -"@codemirror/stream-parser@^0.19.2": - version "0.19.2" - resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.2.tgz#793428e55aa7b9daa64cb733973e5d5e3d9a2306" - integrity sha512-hBKRQlyu8GUOrY33xZ6/1kAfNZ8ZUm6cX9a7mPx8zAAqnpz/fpksC/qJRrkg1mPMBwxm+JG4fqAwDGJ3gLVniQ== +"@codemirror/stream-parser@^0.19.0", "@codemirror/stream-parser@^0.19.2", "@codemirror/stream-parser@^0.19.6": + version "0.19.7" + resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.7.tgz#99a9696307b90677f6e3abe29ea6d77c1c0a8db5" + integrity sha512-4ExcbKksmU4PIT8s11/dPESgMNLQqlMlbQzRQ1CyMcmygcuQk+58zQ84nv/X17OCUd2ephZ1DKEaHHACifzCiA== dependencies: "@codemirror/highlight" "^0.19.0" "@codemirror/language" "^0.19.0" @@ -1617,17 +1769,34 @@ "@lezer/common" "^0.15.0" "@lezer/lr" "^0.15.0" -"@codemirror/text@^0.19.0": - version "0.19.5" - resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.5.tgz#75033af2476214e79eae22b81ada618815441c18" - integrity sha512-Syu5Xc7tZzeUAM/y4fETkT0zgGr48rDG+w4U38bPwSIUr+L9S/7w2wDE1WGNzjaZPz12F6gb1gxWiSTg9ocLow== +"@codemirror/text@^0.19.0", "@codemirror/text@^0.19.2", "@codemirror/text@^0.19.4", "@codemirror/text@^0.19.6": + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz#9adcbd8137f69b75518eacd30ddb16fd67bbac45" + integrity sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA== -"@codemirror/view@^0.19.0": - version "0.19.27" - resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.27.tgz#76e5dc19ecb4ce53e9fef1d29245040d7ff64183" - integrity sha512-Uz/LecEf7CyvMWaQBlKtbJCYn0hRnEZ2yYvuZVy9YMhmvGmES6ec7FaKw7lDFFOMLwLbBThc9kfw4DCHreHN1w== +"@codemirror/theme-one-dark@^0.19.1": + version "0.19.1" + resolved "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-0.19.1.tgz#648b9cbe37186a2b7bd2a83fb483dc7aa18ce218" + integrity sha512-8gc4c2k2o/EhyHoWkghCxp5vyDT96JaFGtRy35PHwIom0LZdx7aU4AbDUnITvwiFB+0+i54VO+WQjBqgTyJvqg== dependencies: - "@codemirror/rangeset" "^0.19.0" + "@codemirror/highlight" "^0.19.0" + "@codemirror/state" "^0.19.0" + "@codemirror/view" "^0.19.0" + +"@codemirror/tooltip@^0.19.12", "@codemirror/tooltip@^0.19.16": + version "0.19.16" + resolved "https://registry.npmjs.org/@codemirror/tooltip/-/tooltip-0.19.16.tgz#6ba2c43f9d8e3d943d9d7bbae22bf800f7726a22" + integrity sha512-zxKDHryUV5/RS45AQL+wOeN+i7/l81wK56OMnUPoTSzCWNITfxHn7BToDsjtrRKbzHqUxKYmBnn/4hPjpZ4WJQ== + dependencies: + "@codemirror/state" "^0.19.0" + "@codemirror/view" "^0.19.0" + +"@codemirror/view@^0.19.0", "@codemirror/view@^0.19.22", "@codemirror/view@^0.19.23", "@codemirror/view@^0.19.31", "@codemirror/view@^0.19.34", "@codemirror/view@^0.19.44", "@codemirror/view@^0.19.45": + version "0.19.47" + resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.47.tgz#2163c3016d7680bf50dd695c0e3abdaf80f45363" + integrity sha512-SfbagKvJQl5dtt+9wYpo9sa3ZkMgUxTq+/hXDf0KVwIx+zu3cJIqfEm9xSx6yXkq7it7RsPGHaPasApNffF/8g== + dependencies: + "@codemirror/rangeset" "^0.19.5" "@codemirror/state" "^0.19.3" "@codemirror/text" "^0.19.0" style-mod "^4.0.0" @@ -6757,6 +6926,17 @@ "@typescript-eslint/types" "5.9.0" eslint-visitor-keys "^3.0.0" +"@uiw/react-codemirror@^4.5.1": + version "4.5.1" + resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.5.1.tgz#f2af4e761f13b729a3ec7c7c858b34432cdf46a7" + integrity sha512-90SNE89uJOQgcZwV0fuZjCgDeH7pjagCqwOcYHvDG5Qedp2nKmb4/2mgDCtLBxTGKxb73ktUOkbdu3L05ck1Yg== + dependencies: + "@babel/runtime" "^7.17.2" + "@codemirror/basic-setup" "^0.19.1" + "@codemirror/state" "^0.19.9" + "@codemirror/theme-one-dark" "^0.19.1" + "@codemirror/view" "^0.19.45" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -9658,6 +9838,11 @@ create-require@^1.1.0: resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +crelt@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94" + integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA== + cron@^1.8.2: version "1.8.2" resolved "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz#4ac5e3c55ba8c163d84f3407bde94632da8370ce" From 2bc854cb397ff7a395505481ac3da353109f750c Mon Sep 17 00:00:00 2001 From: Francesco Corti Date: Wed, 16 Mar 2022 15:41:58 +0100 Subject: [PATCH 087/410] Blog post for the 1.0 release. Signed-off-by: Francesco Corti --- microsite/blog/2022-03-17-backstage-1.0.md | 54 ++++++++++++++++++ .../blog/assets/22-03-16/release.1.0.gif | Bin 0 -> 655560 bytes 2 files changed, 54 insertions(+) create mode 100644 microsite/blog/2022-03-17-backstage-1.0.md create mode 100644 microsite/blog/assets/22-03-16/release.1.0.gif diff --git a/microsite/blog/2022-03-17-backstage-1.0.md b/microsite/blog/2022-03-17-backstage-1.0.md new file mode 100644 index 0000000000..f8f5b97cee --- /dev/null +++ b/microsite/blog/2022-03-17-backstage-1.0.md @@ -0,0 +1,54 @@ +--- +title: New release: Backstage 1.0 +author: Francesco Corti, Spotify +authorURL: https://github.com/fcorti/ +authorImageURL: https://avatars.githubusercontent.com/u/6010860?v=4 +—-- + +![backstage header](assets/22-03-16/release.1.0.gif) + +_TLDR;_ If you’ve been waiting for Backstage to come out of beta, we’re excited to announce that Backstage 1.0 is here! + + + +It’s been two years since Spotify [open sourced Backstage](https://backstage.io/blog/2020/03/16/announcing-backstage) so companies of all shapes and sizes — and in every industry all over the world — could build highly extensible and customized developer portals to best suit their organization’s needs and culture. Now hundreds of adopters are using Backstage as the single pane of glass for their core development, managing millions of components and technical documentation, and helping hundreds of thousands of developers be more productive and happy. + +This milestone demonstrates Backstage’s maturity and the incredible effort from the core maintainers, contributors, and adopters. In a short time, we’ve seen a global community grow rapidly with people bringing their passion to this project and our goal of empowering developers. Because, yes, this is also your goal and your time to celebrate. + +# So what is Backstage 1.0? + +If you’re thinking “what is Backstage 1.0, and what does it include?” You’re not alone, so let’s get into it. + +To start, let’s define Backstage: it’s an open platform for building developer portals, mainly defined by a set of libraries together with plugins that can be added, removed, or customized so that the final behavior of the developer portal product is what an adopter wants. For the past two years, the open source platform has been in beta. With Backstage 1.0, we're coming out of beta and into production with regular versioning and release cycle commitments. So, if your company requires production-ready software, you can now use Backstage and join [over 100 other public adopters](https://github.com/backstage/backstage/blob/master/ADOPTERS.md)! + +Our definition of Backstage 1.0 includes: +- Backstage Core 1.0 libraries as the set of libraries to make the platform work +- [Backstage Software Catalog](https://backstage.io/docs/features/software-catalog/software-catalog-overview) 1.0 +- [Backstage Software Templates](https://backstage.io/docs/features/software-templates/software-templates-index) 1.0 +- [Backstage TechDocs](https://backstage.io/docs/features/techdocs/techdocs-overview) 1.0 + +Coming soon: [Backstage Search](https://backstage.io/docs/features/search/search-overview) 1.0 will be included in the near future as part of the regular releases to the Backstage platform. + +In terms of features, the maintainers will not be shipping new stuff as part of the major release but instead: +- Refactoring the code packaging to better reflect the release numbering +- Removal of deprecated services to reduce the risk of introducing breaking changes +- Establishing clarity on the release lifecycle, numbering, and cadence as well as the support model +- Improvements to Backstage.io documentation + +# The road ahead + +In terms of maturity and stability, the road ahead for Backstage is bright and busy. The goal is to bring Backstage to the next level of maturity and continue improving it, according to adopter growth, feature set, and identified use cases. + +You can read more about Backstage’s roadmap [here](https://backstage.io/docs/overview/roadmap), but in terms of maturity and stability we would like to highlight the following: +- CNCF incubation: The Backstage project [recently moved from Sandbox to Incubation](https://www.cncf.io/blog/2022/03/15/backstage-project-joins-the-cncf-incubator/) phase within the [CNCF maturity levels](https://www.cncf.io/projects/#:~:text=Maturity%20levels,should%20be%20adopting%20different%20projects.). +- Security auditing and strategy: With the CNCF’s support,, the project maintainers are working on a security audit initiative to make the platform more secure and will share more details soon. The audit is part of an overall security strategy being developed this quarter. +- Paid plugins for advanced and enterprise use cases: Last year, [Spotify announced its work on paid plugins](https://backstage.spotify.com/blog/paid-plugins-announcement/) built on top of the Backstage open source platform. This is another example of the platform’s maturity and Spotify’s continued commitment to the project, with a focus on customers and use cases requiring enterprise-focused support and plugins developed and proven by Spotify. + +# Some links to peruse + +If you want to know more about this first major release, check out the following links to learn more about this release effort and receive support. +- [Release notes](https://backstage.io/docs/releases/v1.0.0) and [Changelog](https://github.com/backstage/backstage/releases/tag/v1.0.0). +- [Backstage official documentation](https://backstage.io/docs/) and [backstage.spotify.com](https://backstage.spotify.com/). +- [Discord channel](https://discord.gg/EUaBAS58) +- [Backstage repository on GitHub](https://github.com/backstage/backstage). +- [List of public adopters](https://github.com/backstage/backstage/blob/master/ADOPTERS.md). \ No newline at end of file diff --git a/microsite/blog/assets/22-03-16/release.1.0.gif b/microsite/blog/assets/22-03-16/release.1.0.gif new file mode 100644 index 0000000000000000000000000000000000000000..71e4a46358b718dd4b5a9d29c87c7ad85f9710ad GIT binary patch literal 655560 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 z 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

  • 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%0DT55R)^;N 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 z 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%0DQF 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

    h>)ZW+qWYEjjl5- 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

    xEVJnDwDURrc664 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òyP%0LRSVYRb`{YVJ%-0rTF3*aoO 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 SVSxxbaf-u(8Tf=40suP`dnMlh literal 0 HcmV?d00001 From 5f7d1e303d46c5f03657188e1b678e9e8cbd394a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 16 Mar 2022 15:52:02 +0100 Subject: [PATCH 088/410] badges: use useAsyncEntity Signed-off-by: Patrik Oldsberg --- .changeset/quiet-dots-raise.md | 5 +++++ plugins/badges/src/components/EntityBadgesDialog.tsx | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/quiet-dots-raise.md diff --git a/.changeset/quiet-dots-raise.md b/.changeset/quiet-dots-raise.md new file mode 100644 index 0000000000..237cf47c81 --- /dev/null +++ b/.changeset/quiet-dots-raise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-badges': patch +--- + +Fixed an error caused by the `EntityBadgesDialog` trying to access the entity before it is loaded. diff --git a/plugins/badges/src/components/EntityBadgesDialog.tsx b/plugins/badges/src/components/EntityBadgesDialog.tsx index 1ae5f69326..422dbc96a3 100644 --- a/plugins/badges/src/components/EntityBadgesDialog.tsx +++ b/plugins/badges/src/components/EntityBadgesDialog.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { useEntity } from '@backstage/plugin-catalog-react'; +import { useAsyncEntity } from '@backstage/plugin-catalog-react'; import { Box, Button, @@ -44,7 +44,7 @@ type Props = { export const EntityBadgesDialog = ({ open, onClose }: Props) => { const theme = useTheme(); - const { entity } = useEntity(); + const { entity } = useAsyncEntity(); const fullScreen = useMediaQuery(theme.breakpoints.down('sm')); const badgesApi = useApi(badgesApiRef); From 3ef123bbf05258351c0952ecfc1ffb27ad059e8c Mon Sep 17 00:00:00 2001 From: Iain Billett Date: Wed, 16 Mar 2022 15:40:49 +0000 Subject: [PATCH 089/410] Add changeset Signed-off-by: Iain Billett --- .changeset/olive-geese-chew.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .changeset/olive-geese-chew.md diff --git a/.changeset/olive-geese-chew.md b/.changeset/olive-geese-chew.md new file mode 100644 index 0000000000..a08b73b4a7 --- /dev/null +++ b/.changeset/olive-geese-chew.md @@ -0,0 +1,10 @@ +--- +'@backstage/backend-common': patch +'@backstage/integration': patch +--- + +Support external ID when assuming roles in S3 integration + +In order to assume a role created by a 3rd party as external +ID is needed. This change adds an optional field to the s3 +integration configuration and consumes that in the AwsS3UrlReader. From 1fc19dd3ecfa7795c63ec6f1f40f04030165f209 Mon Sep 17 00:00:00 2001 From: Iain Billett Date: Wed, 16 Mar 2022 15:56:41 +0000 Subject: [PATCH 090/410] Add docs Signed-off-by: Iain Billett --- docs/integrations/aws-s3/locations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/integrations/aws-s3/locations.md b/docs/integrations/aws-s3/locations.md index b0c6829e2c..9bac28f906 100644 --- a/docs/integrations/aws-s3/locations.md +++ b/docs/integrations/aws-s3/locations.md @@ -37,6 +37,7 @@ integrations: - accessKeyId: ${AWS_ACCESS_KEY_ID} secretAccessKey: ${AWS_SECRET_ACCESS_KEY} roleArn: 'arn:aws:iam::xxxxxxxxxxxx:role/example-role' + externalId: 'some-id' # optional ``` Configuration allows specifying custom S3 endpoint, along with From 06ce6d19d52acc10d1aa9b3981ae675853de5bfa Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 4 Feb 2022 15:42:56 +0100 Subject: [PATCH 091/410] feat: added new simple router with some tests Signed-off-by: blam --- .../src/next/Router/Router.test.tsx | 83 +++++++++++++++++++ plugins/scaffolder/src/next/Router/Router.tsx | 81 ++++++++++++++++++ plugins/scaffolder/src/next/Router/index.ts | 16 ++++ 3 files changed, 180 insertions(+) create mode 100644 plugins/scaffolder/src/next/Router/Router.test.tsx create mode 100644 plugins/scaffolder/src/next/Router/Router.tsx create mode 100644 plugins/scaffolder/src/next/Router/index.ts diff --git a/plugins/scaffolder/src/next/Router/Router.test.tsx b/plugins/scaffolder/src/next/Router/Router.test.tsx new file mode 100644 index 0000000000..5094c786e0 --- /dev/null +++ b/plugins/scaffolder/src/next/Router/Router.test.tsx @@ -0,0 +1,83 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { TemplateListPage } from '../TemplateListPage'; +import { TemplateWizardPage } from '../TemplateWizardPage'; +import { Router } from './Router'; +import { renderInTestApp } from '@backstage/test-utils'; +import { + createScaffolderFieldExtension, + ScaffolderFieldExtensions, +} from '../../extensions'; +import { scaffolderPlugin } from '../../plugin'; + +jest.mock('../TemplateListPage', () => ({ + TemplateListPage: jest.fn(() => null), +})); + +jest.mock('../TemplateWizardPage', () => ({ + TemplateWizardPage: jest.fn(() => null), +})); + +describe('Router', () => { + beforeEach(() => { + (TemplateWizardPage as jest.Mock).mockClear(); + (TemplateListPage as jest.Mock).mockClear(); + }); + describe('/', () => { + it('should render the TemplateListPage', async () => { + await renderInTestApp(); + + expect(TemplateListPage).toHaveBeenCalled(); + }); + }); + + describe('/templates/:templateName', () => { + it('should render the TemplateWizard page', async () => { + await renderInTestApp(, { routeEntries: ['/templates/foo'] }); + + expect(TemplateWizardPage).toHaveBeenCalled(); + }); + + it('should extract the fieldExtensions and pass them through', async () => { + const mockComponent = () => null; + const CustomFieldExtension = scaffolderPlugin.provide( + createScaffolderFieldExtension({ + name: 'custom', + component: mockComponent, + }), + ); + + await renderInTestApp( + + + + + , + { routeEntries: ['/templates/foo'] }, + ); + + const mock = TemplateWizardPage as jest.Mock; + const [{ customFieldExtensions }] = mock.mock.calls[0]; + + expect(customFieldExtensions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: 'custom', component: mockComponent }), + ]), + ); + }); + }); +}); diff --git a/plugins/scaffolder/src/next/Router/Router.tsx b/plugins/scaffolder/src/next/Router/Router.tsx new file mode 100644 index 0000000000..8ab9755ab2 --- /dev/null +++ b/plugins/scaffolder/src/next/Router/Router.tsx @@ -0,0 +1,81 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { PropsWithChildren } from 'react'; +import { Routes, Route, useOutlet } from 'react-router'; +import { TemplateListPage } from '../TemplateListPage'; +import { SecretsContextProvider } from '../TemplateWizardPage/SecretsContext'; +import { TemplateWizardPage } from '../TemplateWizardPage'; +import { + FieldExtensionOptions, + FIELD_EXTENSION_WRAPPER_KEY, + FIELD_EXTENSION_KEY, + DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS, +} from '../../extensions'; + +import { useElementFilter } from '@backstage/core-plugin-api'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; + +export type RouterProps = { + TemplateCardComponent?: React.ComponentType<{ + template: TemplateEntityV1beta3; + }>; +}; + +export const Router = (props: PropsWithChildren) => { + const { TemplateCardComponent } = props; + + const outlet = useOutlet() || props.children; + + const customFieldExtensions = useElementFilter(outlet, elements => + elements + .selectByComponentData({ + key: FIELD_EXTENSION_WRAPPER_KEY, + }) + .findComponentData({ + key: FIELD_EXTENSION_KEY, + }), + ); + + const fieldExtensions = [ + ...customFieldExtensions, + ...DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS.filter( + ({ name }) => + !customFieldExtensions.some( + customFieldExtension => customFieldExtension.name === name, + ), + ), + ]; + + return ( + + + } + /> + + + + + } + /> + + ); +}; diff --git a/plugins/scaffolder/src/next/Router/index.ts b/plugins/scaffolder/src/next/Router/index.ts new file mode 100644 index 0000000000..5ad2ae6e6a --- /dev/null +++ b/plugins/scaffolder/src/next/Router/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { Router } from './Router'; From 8afeb82cc35d0b7528b5231b4f9d656fe597525f Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 4 Feb 2022 15:43:20 +0100 Subject: [PATCH 092/410] feat: adding a new TemplateListPage and CategoryPicker with tests Signed-off-by: blam --- .../TemplateListPage/CategoryPicker.test.tsx | 130 ++++++++++++++++++ .../next/TemplateListPage/CategoryPicker.tsx | 81 +++++++++++ .../TemplateListPage/TemplateListPage.tsx | 121 ++++++++++++++++ .../src/next/TemplateListPage/index.ts | 16 +++ 4 files changed, 348 insertions(+) create mode 100644 plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.test.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/index.ts diff --git a/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.test.tsx new file mode 100644 index 0000000000..a04d382445 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.test.tsx @@ -0,0 +1,130 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { useEntityTypeFilter } from '@backstage/plugin-catalog-react'; +import { CategoryPicker } from './CategoryPicker'; +import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; +import { alertApiRef } from '@backstage/core-plugin-api'; +import { fireEvent } from '@testing-library/react'; + +jest.mock('@backstage/plugin-catalog-react', () => ({ + useEntityTypeFilter: jest.fn(), +})); + +describe('CategoryPicker', () => { + const mockAlertApi = { post: jest.fn() }; + + beforeEach(() => { + mockAlertApi.post.mockClear(); + }); + + it('should post the error to errorApi if an errors is returned', async () => { + (useEntityTypeFilter as jest.Mock).mockReturnValue({ + error: new Error('something broked'), + }); + + await renderInTestApp( + + + , + ); + + expect(mockAlertApi.post).toHaveBeenCalledWith({ + message: expect.stringContaining('something broked'), + severity: 'error', + }); + }); + + it('should render loading if the hook is loading', async () => { + (useEntityTypeFilter as jest.Mock).mockReturnValue({ + loading: true, + }); + + const { findByTestId } = await renderInTestApp( + + + , + ); + + expect(await findByTestId('progress')).toBeInTheDocument(); + }); + + it('should not render if there is no available types', async () => { + (useEntityTypeFilter as jest.Mock).mockReturnValue({ + availableTypes: null, + }); + + const { queryByText } = await renderInTestApp( + + + , + ); + + expect(queryByText('Categories')).not.toBeInTheDocument(); + }); + + it('renders the autocomplete with the availableTypes', async () => { + const mockAvailableTypes = ['foo', 'bar']; + + (useEntityTypeFilter as jest.Mock).mockReturnValue({ + availableTypes: mockAvailableTypes, + }); + + const { getByRole } = await renderInTestApp( + + + , + ); + + const openButton = getByRole('button', { name: 'Open' }); + openButton.click(); + + expect(getByRole('checkbox', { name: 'Foo' })).toBeInTheDocument(); + expect(getByRole('checkbox', { name: 'Bar' })).toBeInTheDocument(); + }); + + it('should call setSelectedTypes when one of the options are called', async () => { + const mockAvailableTypes = ['foo', 'bar']; + const mockSetSelectedTypes = jest.fn(); + + (useEntityTypeFilter as jest.Mock).mockReturnValue({ + availableTypes: mockAvailableTypes, + setSelectedTypes: mockSetSelectedTypes, + }); + + const { getByRole } = await renderInTestApp( + + + , + ); + + const openButton = getByRole('button', { name: 'Open' }); + await fireEvent(openButton, new MouseEvent('click', { bubbles: true })); + + const fooCheckbox = getByRole('checkbox', { name: 'Foo' }); + await fireEvent(fooCheckbox, new MouseEvent('click', { bubbles: true })); + + expect(mockSetSelectedTypes).toHaveBeenCalledWith(['foo']); + + await fireEvent(openButton, new MouseEvent('click', { bubbles: true })); + + const barCheckbox = getByRole('checkbox', { name: 'Bar' }); + await fireEvent(barCheckbox, new MouseEvent('click', { bubbles: true })); + + expect(mockSetSelectedTypes).toHaveBeenCalledWith(['foo', 'bar']); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.tsx b/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.tsx new file mode 100644 index 0000000000..94f0df2565 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.tsx @@ -0,0 +1,81 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import capitalize from 'lodash/capitalize'; +import { Progress } from '@backstage/core-components'; +import { + Box, + Checkbox, + FormControlLabel, + TextField, + Typography, +} from '@material-ui/core'; +import CheckBoxIcon from '@material-ui/icons/CheckBox'; +import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; +import { Autocomplete } from '@material-ui/lab'; +import { useEntityTypeFilter } from '@backstage/plugin-catalog-react'; +import { alertApiRef, useApi } from '@backstage/core-plugin-api'; + +const icon = ; +const checkedIcon = ; + +export const CategoryPicker = () => { + const alertApi = useApi(alertApiRef); + const { error, loading, availableTypes, selectedTypes, setSelectedTypes } = + useEntityTypeFilter(); + + if (loading) return ; + + if (error) { + alertApi.post({ + message: `Failed to load entity types with error: ${error}`, + severity: 'error', + }); + return null; + } + + if (!availableTypes) return null; + + return ( + + Categories + setSelectedTypes(value)} + renderOption={(option, { selected }) => ( + + } + label={capitalize(option)} + /> + )} + size="small" + popupIcon={} + renderInput={params => } + /> + + ); +}; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx new file mode 100644 index 0000000000..dc736408ac --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx @@ -0,0 +1,121 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; +import { Entity } from '@backstage/catalog-model'; +import { makeStyles } from '@material-ui/core'; +import { + Content, + ContentHeader, + CreateButton, + Header, + Lifecycle, + Page, + SupportButton, +} from '@backstage/core-components'; +import { + EntityKindPicker, + EntityListProvider, + EntitySearchBar, + EntityTagPicker, + UserListPicker, +} from '@backstage/plugin-catalog-react'; +import { CategoryPicker } from './CategoryPicker'; + +export type TemplateListGroup = { + title?: string; + titleComponent?: React.ReactNode; + filter: (entity: Entity) => boolean; +}; + +export type TemplateListPageProps = { + TemplateCardComponent?: React.ComponentType<{ + template: TemplateEntityV1beta3; + }>; + groups?: TemplateListGroup[]; +}; + +const useStyles = makeStyles(theme => ({ + contentWrapper: { + display: 'grid', + gridTemplateAreas: "'filters' 'grid'", + gridTemplateColumns: '250px 1fr', + gridColumnGap: theme.spacing(2), + }, +})); + +export const TemplateListPage = (props: TemplateListPageProps) => { + const styles = useStyles(); + return ( + + +

    + Create a New Component + + } + subtitle="Create new software components using standard templates" + /> + + + {/* {allowed && ( + + )} */} + + Create new software components using standard templates. Different + templates create different kinds of components (services, + websites, documentation, ...). + + + +
    +
    + +
    +
    + {/* {groups && + groups.map((group, index) => ( + + ))} + */} +
    +
    +
    + + + ); +}; diff --git a/plugins/scaffolder/src/next/TemplateListPage/index.ts b/plugins/scaffolder/src/next/TemplateListPage/index.ts new file mode 100644 index 0000000000..efe9f13d08 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { TemplateListPage } from './TemplateListPage'; From 44f44f6408b2f4d7d565846038800c7ed194e887 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 4 Feb 2022 15:50:55 +0100 Subject: [PATCH 093/410] chore: added a test that the selected types are rendered in the document Signed-off-by: blam --- .../TemplateListPage/CategoryPicker.test.tsx | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.test.tsx index a04d382445..f02ca51354 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.test.tsx @@ -127,4 +127,26 @@ describe('CategoryPicker', () => { expect(mockSetSelectedTypes).toHaveBeenCalledWith(['foo', 'bar']); }); + + it('should render the selectedTypes already in the document', async () => { + const mockAvailableTypes = ['foo', 'bar']; + const mockSelectedTypes = ['foo']; + + (useEntityTypeFilter as jest.Mock).mockReturnValue({ + availableTypes: mockAvailableTypes, + selectedTypes: mockSelectedTypes, + }); + + const { getByRole } = await renderInTestApp( + + + , + ); + + const openButton = getByRole('button', { name: 'Open' }); + await fireEvent(openButton, new MouseEvent('click', { bubbles: true })); + + const fooCheckbox = getByRole('checkbox', { name: 'Foo' }); + expect(fooCheckbox).toBeChecked(); + }); }); From a4ad1ddcb67abbb07db85aeae6842f51bab8505e Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 4 Feb 2022 19:22:26 +0100 Subject: [PATCH 094/410] chore: added deprecation to create button, doesn't belong in core-components Signed-off-by: blam --- .../src/components/CreateButton/CreateButton.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/core-components/src/components/CreateButton/CreateButton.tsx b/packages/core-components/src/components/CreateButton/CreateButton.tsx index d5d7080851..056ead5811 100644 --- a/packages/core-components/src/components/CreateButton/CreateButton.tsx +++ b/packages/core-components/src/components/CreateButton/CreateButton.tsx @@ -25,6 +25,7 @@ import AddCircleOutline from '@material-ui/icons/AddCircleOutline'; /** * Properties for {@link CreateButton} * + * @deprecated * @public */ export type CreateButtonProps = { @@ -35,6 +36,9 @@ export type CreateButtonProps = { * Responsive Button giving consistent UX for creation of different things * * @public + * + * @deprecated Please use IconButton directly and have your own implementation of this component. + * It doesn't really fit as a core-component. */ export function CreateButton(props: CreateButtonProps) { const { title, to } = props; From 8db4dc297a13d6f325d18960f57e76f4bafb559b Mon Sep 17 00:00:00 2001 From: blam Date: Sat, 5 Feb 2022 04:48:49 +0100 Subject: [PATCH 095/410] feat: added some nice tests for the TemplateListPage Signed-off-by: blam --- .../RegisterExistingButton.test.tsx | 57 +++++++++++++++ .../RegisterExistingButton.tsx | 66 +++++++++++++++++ .../TemplateListPage.test.tsx | 73 +++++++++++++++++++ .../TemplateListPage/TemplateListPage.tsx | 15 ++-- .../SecretsContext/SecretsContext.test.tsx | 43 +++++++++++ .../SecretsContext/SecretsContext.tsx | 73 +++++++++++++++++++ .../SecretsContext/index.ts | 20 +++++ .../TemplateWizardPage/TemplateWizardPage.tsx | 16 ++++ .../src/next/TemplateWizardPage/index.ts | 17 +++++ 9 files changed, 374 insertions(+), 6 deletions(-) create mode 100644 plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.test.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/SecretsContext.test.tsx create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/SecretsContext.tsx create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/index.ts create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx create mode 100644 plugins/scaffolder/src/next/TemplateWizardPage/index.ts diff --git a/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.test.tsx new file mode 100644 index 0000000000..e6022d16fb --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.test.tsx @@ -0,0 +1,57 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { renderInTestApp } from '@backstage/test-utils'; +import React from 'react'; +import { RegisterExistingButton } from './RegisterExistingButton'; +import { usePermission } from '@backstage/plugin-permission-react'; + +jest.mock('@backstage/plugin-permission-react', () => ({ + usePermission: jest.fn(), +})); + +describe('RegisterExistingButton', () => { + beforeEach(() => { + (usePermission as jest.Mock).mockClear(); + }); + + it('should not render if to is unset', async () => { + (usePermission as jest.Mock).mockReturnValue({ allowed: true }); + + const { queryByText } = await renderInTestApp( + , + ); + + expect(await queryByText('Pick me')).not.toBeInTheDocument(); + }); + + it('should not render if permissions are not allowed', async () => { + (usePermission as jest.Mock).mockReturnValue({ allowed: false }); + const { queryByText } = await renderInTestApp( + , + ); + + expect(await queryByText('Pick me')).not.toBeInTheDocument(); + }); + + it('should render the button with the text', async () => { + (usePermission as jest.Mock).mockReturnValue({ allowed: true }); + const { queryByText } = await renderInTestApp( + , + ); + + expect(await queryByText('Pick me')).toBeInTheDocument(); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.tsx b/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.tsx new file mode 100644 index 0000000000..be6b496a6c --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.tsx @@ -0,0 +1,66 @@ +/* + * Copyright 2021 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BackstageTheme } from '@backstage/theme'; +import Button from '@material-ui/core/Button'; +import IconButton from '@material-ui/core/IconButton'; +import useMediaQuery from '@material-ui/core/useMediaQuery'; +import React from 'react'; +import { Link as RouterLink, LinkProps } from 'react-router-dom'; +import AddCircleOutline from '@material-ui/icons/AddCircleOutline'; +import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common'; +import { usePermission } from '@backstage/plugin-permission-react'; + +/** + * Properties for {@link RegisterExistingButton} + * + * @public + */ +export type RegisterExistingButtonProps = { + title: string; +} & Partial>; + +/** + * A button that helps users to register an existing component. + * @public + */ +export const RegisterExistingButton = (props: RegisterExistingButtonProps) => { + const { title, to } = props; + const { allowed } = usePermission(catalogEntityCreatePermission); + const isXSScreen = useMediaQuery(theme => + theme.breakpoints.down('xs'), + ); + + if (!to || !allowed) { + return null; + } + + return isXSScreen ? ( + + + + ) : ( + + ); +}; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx new file mode 100644 index 0000000000..48ee53cdb7 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx @@ -0,0 +1,73 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + catalogApiRef, + DefaultStarredEntitiesApi, + starredEntitiesApiRef, +} from '@backstage/plugin-catalog-react'; +import { permissionApiRef } from '@backstage/plugin-permission-react'; +import { + MockStorageApi, + renderInTestApp, + TestApiProvider, +} from '@backstage/test-utils'; +import React from 'react'; +import { TemplateListPage } from './TemplateListPage'; + +describe('TemplateListPage', () => { + it('should render the search bar for templates', async () => { + const { getByPlaceholderText } = await renderInTestApp( + + + , + ); + + expect(getByPlaceholderText('Search')).toBeInTheDocument(); + }); + + it('should render the all and starred filters', async () => { + const { getByRole } = await renderInTestApp( + + + , + ); + + expect(getByRole('menuitem', { name: 'All' })).toBeInTheDocument(); + expect(getByRole('menuitem', { name: 'Starred' })).toBeInTheDocument(); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx index dc736408ac..25441a6812 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx @@ -35,6 +35,9 @@ import { UserListPicker, } from '@backstage/plugin-catalog-react'; import { CategoryPicker } from './CategoryPicker'; +import { RegisterExistingButton } from './RegisterExistingButton'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { registerComponentRouteRef } from '../../routes'; export type TemplateListGroup = { title?: string; @@ -60,6 +63,8 @@ const useStyles = makeStyles(theme => ({ export const TemplateListPage = (props: TemplateListPageProps) => { const styles = useStyles(); + const registerComponentLink = useRouteRef(registerComponentRouteRef); + return ( @@ -74,12 +79,10 @@ export const TemplateListPage = (props: TemplateListPageProps) => { /> - {/* {allowed && ( - - )} */} + Create new software components using standard templates. Different templates create different kinds of components (services, diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/SecretsContext.test.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/SecretsContext.test.tsx new file mode 100644 index 0000000000..37d35c9015 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/SecretsContext.test.tsx @@ -0,0 +1,43 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useContext } from 'react'; +import { + useTemplateSecrets, + SecretsContextProvider, + SecretsContext, +} from './SecretsContext'; +import { renderHook, act } from '@testing-library/react-hooks'; + +describe('SecretsContext', () => { + it('should allow the setting of secrets in the context', async () => { + const { result } = renderHook( + () => ({ + hook: useTemplateSecrets(), + context: useContext(SecretsContext), + }), + { + wrapper: ({ children }) => ( + {children} + ), + }, + ); + expect(result.current.context?.secrets.foo).toEqual(undefined); + + act(() => result.current.hook.setSecret({ foo: 'bar' })); + + expect(result.current.context?.secrets.foo).toEqual('bar'); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/SecretsContext.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/SecretsContext.tsx new file mode 100644 index 0000000000..6570f9d901 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/SecretsContext.tsx @@ -0,0 +1,73 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { + useState, + useCallback, + useContext, + createContext, + PropsWithChildren, +} from 'react'; + +type SecretsContextContents = { + secrets: Record; + setSecrets: React.Dispatch>>; +}; + +/** + * The actual context object. + */ +export const SecretsContext = createContext( + undefined, +); + +/** + * The Context Provider that holds the state for the secrets. + * + * @public + */ +export const SecretsContextProvider = ({ children }: PropsWithChildren<{}>) => { + const [secrets, setSecrets] = useState>({}); + + return ( + + {children} + + ); +}; + +/** + * Hook to access the secrets context. + * @public + */ +export const useTemplateSecrets = () => { + const value = useContext(SecretsContext); + if (!value) { + throw new Error( + 'useTemplateSecrets must be used within a SecretsContextProvider', + ); + } + + const { setSecrets } = value; + + const setSecret = useCallback( + (input: Record) => { + setSecrets(currentSecrets => ({ ...currentSecrets, ...input })); + }, + [setSecrets], + ); + + return { setSecret }; +}; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/index.ts b/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/index.ts new file mode 100644 index 0000000000..65b530dea1 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/SecretsContext/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { + useTemplateSecrets, + SecretsContext, + SecretsContextProvider, +} from './SecretsContext'; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx new file mode 100644 index 0000000000..94f592eb60 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx @@ -0,0 +1,16 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const TemplateWizardPage = () => {}; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/index.ts b/plugins/scaffolder/src/next/TemplateWizardPage/index.ts new file mode 100644 index 0000000000..84ecf6b3d5 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateWizardPage/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { TemplateWizardPage } from './TemplateWizardPage'; +export { useTemplateSecrets } from './SecretsContext'; From df0d2e7d97b9b2ba97e2f58512cdf32c98673f93 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 7 Feb 2022 17:17:21 +0100 Subject: [PATCH 096/410] feat: added some more steps towards rewriting the scaffodler-frontend Signed-off-by: blam --- app-config.yaml | 3 +++ packages/app/src/App.tsx | 4 ++-- .../EntitySearchBar/EntitySearchBar.tsx | 1 + plugins/scaffolder/src/index.ts | 1 + .../TemplateListPage.test.tsx | 21 +++++++++++++++++++ plugins/scaffolder/src/plugin.ts | 8 +++++++ 6 files changed, 36 insertions(+), 2 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index b3ca3c7203..597073fede 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -283,6 +283,9 @@ catalog: # Backstage end-to-end tests of TechDocs - type: file target: ../../cypress/e2e-fixture.catalog.info.yaml + + - type: url + target: https://github.com/benjdlambert/software-templates/blob/main/scaffolder-templates/react-ssr-template/template.yaml scaffolder: # Use to customize default commit author info used when new components are created # defaultAuthor: diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index befd3274f3..e17e0e80a8 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -59,7 +59,7 @@ import { LighthousePage } from '@backstage/plugin-lighthouse'; import { NewRelicPage } from '@backstage/plugin-newrelic'; import { ScaffolderFieldExtensions, - ScaffolderPage, + NextScaffolderPage, scaffolderPlugin, } from '@backstage/plugin-scaffolder'; import { SearchPage } from '@backstage/plugin-search'; @@ -178,7 +178,7 @@ const routes = ( { { expect(getByRole('menuitem', { name: 'All' })).toBeInTheDocument(); expect(getByRole('menuitem', { name: 'Starred' })).toBeInTheDocument(); }); + + it('should render the category picker', () => { + const { getByText } = await renderInTestApp( + + + , + ); + + expect(getByText('Categories')).toBeInTheDocument(); + }); }); diff --git a/plugins/scaffolder/src/plugin.ts b/plugins/scaffolder/src/plugin.ts index ffa0efaaa0..9b79ea8381 100644 --- a/plugins/scaffolder/src/plugin.ts +++ b/plugins/scaffolder/src/plugin.ts @@ -150,3 +150,11 @@ export const EntityTagsPickerFieldExtension = scaffolderPlugin.provide( name: 'EntityTagsPicker', }), ); + +export const NextScaffolderPage = scaffolderPlugin.provide( + createRoutableExtension({ + name: 'NextScaffolderPage', + component: () => import('./next/Router').then(m => m.Router), + mountPoint: rootRouteRef, + }), +); From 1c05488c9209c19d89d3f8f488a0c41ccf6583e2 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 25 Feb 2022 13:52:56 +0100 Subject: [PATCH 097/410] chore: added some more tests for the TemplateListPage Signed-off-by: blam --- .../TemplateListPage.test.tsx | 36 ++++++++++++++++++- .../TemplateListPage/TemplateListPage.tsx | 1 - 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx index 3cc865b95c..1f6c60237c 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx @@ -71,7 +71,7 @@ describe('TemplateListPage', () => { expect(getByRole('menuitem', { name: 'Starred' })).toBeInTheDocument(); }); - it('should render the category picker', () => { + it('should render the category picker', async () => { const { getByText } = await renderInTestApp( { expect(getByText('Categories')).toBeInTheDocument(); }); + + it('should render the EntityTag picker', async () => { + const { getByText } = await renderInTestApp( + ({ + items: [ + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'blob', tags: ['blob'] }, + }, + ], + }), + }, + ], + [ + starredEntitiesApiRef, + new DefaultStarredEntitiesApi({ + storageApi: MockStorageApi.create(), + }), + ], + [permissionApiRef, {}], + ]} + > + + , + ); + + expect(getByText('Tags')).toBeInTheDocument(); + }); }); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx index 25441a6812..aab72f3cdf 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx @@ -21,7 +21,6 @@ import { makeStyles } from '@material-ui/core'; import { Content, ContentHeader, - CreateButton, Header, Lifecycle, Page, From 671cba631cb99fe93f32cee422fdbbe1ed40b2ff Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 25 Feb 2022 15:42:48 +0100 Subject: [PATCH 098/410] chore: working on writing some more components for all this stuff Signed-off-by: blam --- plugins/scaffolder/src/next/Router/Router.tsx | 12 ++-- .../next/TemplateListPage/TemplateCard.tsx | 26 +++++++ .../next/TemplateListPage/TemplateGroup.tsx | 70 +++++++++++++++++++ .../next/TemplateListPage/TemplateGroups.tsx | 37 ++++++++++ .../TemplateListPage/TemplateListPage.tsx | 38 ++++------ 5 files changed, 154 insertions(+), 29 deletions(-) create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateCard.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx diff --git a/plugins/scaffolder/src/next/Router/Router.tsx b/plugins/scaffolder/src/next/Router/Router.tsx index 8ab9755ab2..b199abc8bb 100644 --- a/plugins/scaffolder/src/next/Router/Router.tsx +++ b/plugins/scaffolder/src/next/Router/Router.tsx @@ -29,13 +29,17 @@ import { useElementFilter } from '@backstage/core-plugin-api'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; export type RouterProps = { - TemplateCardComponent?: React.ComponentType<{ - template: TemplateEntityV1beta3; - }>; + components: { + TemplateCardComponent?: React.ComponentType<{ + template: TemplateEntityV1beta3; + }>; + TaskPageComponent?: React.ComponentType<{}>; + }; }; export const Router = (props: PropsWithChildren) => { - const { TemplateCardComponent } = props; + const { components: { TaskPageComponent, TemplateCardComponent } = {} } = + props; const outlet = useOutlet() || props.children; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard.tsx new file mode 100644 index 0000000000..53ea12d4d6 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard.tsx @@ -0,0 +1,26 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; + +export interface TemplateCardProps { + template: TemplateEntityV1beta3; + deprecated?: boolean; +} + +export const TemplateCard = (props: TemplateCardProps) => { + return null; +}; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx new file mode 100644 index 0000000000..8af551d562 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx @@ -0,0 +1,70 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; +import React from 'react'; +import { + Content, + ContentHeader, + ItemCardGrid, + Link, +} from '@backstage/core-components'; +import { Typography } from '@material-ui/core'; +import { TemplateCard, TemplateCardProps } from './TemplateCard'; +import { stringifyEntityRef } from '@backstage/catalog-model'; + +export interface TemplateGroupProps { + templates: TemplateEntityV1beta3[]; + title?: string; + components?: { + titleComponent?: React.ReactNode; + CardComponent?: React.ComponentType; + }; +} + +export const TemplateGroup = (props: TemplateGroupProps) => { + const { + templates, + title, + components: { titleComponent, CardComponent } = {}, + } = props; + + if (templates.length === 0) { + return ( + + No templates found that match your filter. Learn more about{' '} + + adding templates + + . + + ); + } + + const titleFragment = titleComponent || ; + + const Card = CardComponent || TemplateCard; + + return ( + + {titleFragment} + + {templates.map(template => ( + + ))} + + + ); +}; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx new file mode 100644 index 0000000000..17790729b1 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx @@ -0,0 +1,37 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { TemplateGroup } from './TemplateGroup'; +import { Entity } from '@backstage/catalog-model'; +import { useEntityList } from '@backstage/plugin-catalog-react'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; + +export type TemplateGroupFilter = { + title?: string; + titleComponent?: React.ReactNode; + filter: (entity: Entity) => boolean; +}; + +export interface TemplateGroupsProps { + groups: TemplateGroupFilter[]; + TemplateCardComponent?: React.ComponentType<{ + template: TemplateEntityV1beta3; + }>; +} + +export const TemplateGroups = (props: TemplateGroupsProps) => { + const { loading, error, entities } = useEntityList(); + return null; +}; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx index aab72f3cdf..497f78594c 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; -import { Entity } from '@backstage/catalog-model'; + import { makeStyles } from '@material-ui/core'; import { Content, @@ -37,18 +37,13 @@ import { CategoryPicker } from './CategoryPicker'; import { RegisterExistingButton } from './RegisterExistingButton'; import { useRouteRef } from '@backstage/core-plugin-api'; import { registerComponentRouteRef } from '../../routes'; - -export type TemplateListGroup = { - title?: string; - titleComponent?: React.ReactNode; - filter: (entity: Entity) => boolean; -}; +import { TemplateGroupFilter, TemplateGroups } from './TemplateGroups'; export type TemplateListPageProps = { TemplateCardComponent?: React.ComponentType<{ template: TemplateEntityV1beta3; }>; - groups?: TemplateListGroup[]; + groups?: TemplateGroupFilter[]; }; const useStyles = makeStyles(theme => ({ @@ -60,20 +55,22 @@ const useStyles = makeStyles(theme => ({ }, })); +const defaultGroup: TemplateGroupFilter = { + title: 'All Templates', + filter: () => true, +}; + export const TemplateListPage = (props: TemplateListPageProps) => { const styles = useStyles(); const registerComponentLink = useRouteRef(registerComponentRouteRef); + const { TemplateCardComponent, groups = [defaultGroup] } = props; return (
    - Create a New Component - - } + title="Create a New Component" subtitle="Create new software components using standard templates" /> @@ -101,19 +98,10 @@ export const TemplateListPage = (props: TemplateListPageProps) => {
    - {/* {groups && - groups.map((group, index) => ( - - ))} - */} + />
    From 7b133cd34ce64250106dbaec00c349331ced1749 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 25 Feb 2022 17:37:11 +0100 Subject: [PATCH 099/410] chore: reworking the types to be a little more user friendly Signed-off-by: blam --- .../src/next/TemplateListPage/TemplateGroup.tsx | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx index 8af551d562..389ec83231 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx @@ -27,19 +27,14 @@ import { stringifyEntityRef } from '@backstage/catalog-model'; export interface TemplateGroupProps { templates: TemplateEntityV1beta3[]; - title?: string; + title: React.ReactNode; components?: { - titleComponent?: React.ReactNode; CardComponent?: React.ComponentType; }; } export const TemplateGroup = (props: TemplateGroupProps) => { - const { - templates, - title, - components: { titleComponent, CardComponent } = {}, - } = props; + const { templates, title, components: { CardComponent } = {} } = props; if (templates.length === 0) { return ( @@ -53,13 +48,14 @@ export const TemplateGroup = (props: TemplateGroupProps) => { ); } - const titleFragment = titleComponent || ; + const titleComponent = + typeof title === 'string' ? : title; const Card = CardComponent || TemplateCard; return ( - {titleFragment} + {titleComponent} {templates.map(template => ( From 4ef2db835a9ab3f47ea65fa1fc54e2bbf690840a Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 25 Feb 2022 18:22:03 +0100 Subject: [PATCH 100/410] chore: starting to add tests for the TemplateGroups components Signed-off-by: blam --- .../TemplateListPage/TemplateGroups.test.tsx | 40 +++++++++++++++++++ .../next/TemplateListPage/TemplateGroups.tsx | 29 +++++++++++++- .../TemplateListPage.test.tsx | 39 ++++++++++-------- .../TemplateListPage/TemplateListPage.tsx | 1 - 4 files changed, 89 insertions(+), 20 deletions(-) create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx new file mode 100644 index 0000000000..35f878a5d1 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx @@ -0,0 +1,40 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +jest.mock('@backstage/plugin-catalog-react', () => ({ + useEntityList: jest.fn(), +})); + +import React from 'react'; +import { render } from '@testing-library/react'; +import { useEntityList } from '@backstage/plugin-catalog-react'; +import { TemplateGroups } from './TemplateGroups'; +import { TestApiProvider } from '@backstage/test-utils'; +import { errorApiRef } from '@backstage/core-plugin-api'; + +describe('TemplateGroups', () => { + it('should return progress if the hook is loading', async () => { + (useEntityList as jest.Mock).mockReturnValue({ loading: true }); + + const { findByTestId } = render( + + + , + ); + + expect(await findByTestId('progress')).toBeInTheDocument(); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx index 17790729b1..59abe8c34c 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx @@ -13,14 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import React from 'react'; import { TemplateGroup } from './TemplateGroup'; import { Entity } from '@backstage/catalog-model'; import { useEntityList } from '@backstage/plugin-catalog-react'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; +import { Progress, Link } from '@backstage/core-components'; +import { Typography } from '@material-ui/core'; +import { errorApiRef, useApi } from '@backstage/core-plugin-api'; export type TemplateGroupFilter = { - title?: string; - titleComponent?: React.ReactNode; + title?: React.ReactNode; filter: (entity: Entity) => boolean; }; @@ -33,5 +36,27 @@ export interface TemplateGroupsProps { export const TemplateGroups = (props: TemplateGroupsProps) => { const { loading, error, entities } = useEntityList(); + const errorApi = useApi(errorApiRef); + + if (loading) { + return ; + } + + if (error) { + errorApi.post(error); + } + + if (!entities) { + return ( + + No templates found that match your filter. Learn more about{' '} + + adding templates + + . + + ); + } + return null; }; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx index 1f6c60237c..7aee8cc397 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx @@ -28,11 +28,29 @@ import React from 'react'; import { TemplateListPage } from './TemplateListPage'; describe('TemplateListPage', () => { + const mockCatalogApi = { + getEntities: async () => ({ + items: [ + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'blob', tags: ['blob'] }, + spec: { + type: 'service', + }, + }, + ], + }), + getEntityFacets: async () => ({ + facets: { 'spec.type': [{ value: 'service', count: 1 }] }, + }), + }; + it('should render the search bar for templates', async () => { const { getByPlaceholderText } = await renderInTestApp( { const { getByRole } = await renderInTestApp( { const { getByText } = await renderInTestApp( { const { getByText } = await renderInTestApp( ({ - items: [ - { - apiVersion: 'scaffolder.backstage.io/v1beta3', - kind: 'Template', - metadata: { name: 'blob', tags: ['blob'] }, - }, - ], - }), - }, - ], + [catalogApiRef, mockCatalogApi], [ starredEntitiesApiRef, new DefaultStarredEntitiesApi({ diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx index 497f78594c..9f7961a077 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.tsx @@ -22,7 +22,6 @@ import { Content, ContentHeader, Header, - Lifecycle, Page, SupportButton, } from '@backstage/core-components'; From 71543c9a91d3d4141d94a1c4194d7d590246d5a0 Mon Sep 17 00:00:00 2001 From: blam Date: Sun, 27 Feb 2022 17:21:53 +0100 Subject: [PATCH 101/410] chore: added some more tests for the TemplateGroups Signed-off-by: blam --- .../TemplateListPage/TemplateGroups.test.tsx | 132 ++++++++++++++++++ .../next/TemplateListPage/TemplateGroups.tsx | 19 ++- 2 files changed, 149 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx index 35f878a5d1..2d8cdc3150 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.test.tsx @@ -18,12 +18,17 @@ jest.mock('@backstage/plugin-catalog-react', () => ({ useEntityList: jest.fn(), })); +jest.mock('./TemplateGroup', () => ({ + TemplateGroup: jest.fn(() => null), +})); + import React from 'react'; import { render } from '@testing-library/react'; import { useEntityList } from '@backstage/plugin-catalog-react'; import { TemplateGroups } from './TemplateGroups'; import { TestApiProvider } from '@backstage/test-utils'; import { errorApiRef } from '@backstage/core-plugin-api'; +import { TemplateGroup } from './TemplateGroup'; describe('TemplateGroups', () => { it('should return progress if the hook is loading', async () => { @@ -37,4 +42,131 @@ describe('TemplateGroups', () => { expect(await findByTestId('progress')).toBeInTheDocument(); }); + + it('should use the error api if there is an error with the retrieval of entitylist', async () => { + const mockError = new Error('tings went poop'); + (useEntityList as jest.Mock).mockReturnValue({ + error: mockError, + }); + const errorApi = { + post: jest.fn(), + }; + render( + + + , + ); + + expect(errorApi.post).toHaveBeenCalledWith(mockError); + }); + + it('should return a no templates message if entities is unset', async () => { + (useEntityList as jest.Mock).mockReturnValue({ + entities: null, + loading: false, + error: null, + }); + + const { findByText } = render( + + + , + ); + + expect(await findByText(/No templates found/)).toBeInTheDocument(); + }); + + it('should return a no templates message if entities has no values in it', async () => { + (useEntityList as jest.Mock).mockReturnValue({ + entities: [], + loading: false, + error: null, + }); + + const { findByText } = render( + + + , + ); + + expect(await findByText(/No templates found/)).toBeInTheDocument(); + }); + + it('should call the template group with the components', async () => { + const mockEntities = [ + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { + name: 't1', + }, + spec: {}, + }, + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { + name: 't2', + }, + spec: {}, + }, + ]; + + (useEntityList as jest.Mock).mockReturnValue({ + entities: mockEntities, + loading: false, + error: null, + }); + + render( + + true }]} /> + , + ); + + expect(TemplateGroup).toHaveBeenCalledWith( + expect.objectContaining({ templates: mockEntities }), + {}, + ); + }); + + it('should apply the filter for each group', async () => { + const mockEntities = [ + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { + name: 't1', + }, + spec: {}, + }, + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { + name: 't2', + }, + spec: {}, + }, + ]; + + (useEntityList as jest.Mock).mockReturnValue({ + entities: mockEntities, + loading: false, + error: null, + }); + + render( + + e.metadata.name === 't1' }]} + /> + , + ); + + expect(TemplateGroup).toHaveBeenCalledWith( + expect.objectContaining({ templates: [mockEntities[0]] }), + {}, + ); + }); }); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx index 59abe8c34c..6b85270f9c 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroups.tsx @@ -36,6 +36,7 @@ export interface TemplateGroupsProps { export const TemplateGroups = (props: TemplateGroupsProps) => { const { loading, error, entities } = useEntityList(); + const { groups, TemplateCardComponent } = props; const errorApi = useApi(errorApiRef); if (loading) { @@ -44,9 +45,10 @@ export const TemplateGroups = (props: TemplateGroupsProps) => { if (error) { errorApi.post(error); + return null; } - if (!entities) { + if (!entities || !entities.length) { return ( No templates found that match your filter. Learn more about{' '} @@ -58,5 +60,18 @@ export const TemplateGroups = (props: TemplateGroupsProps) => { ); } - return null; + return ( + <> + {groups.map(({ title, filter }, index) => ( + + filter(e), + )} + title={title} + components={{ CardComponent: TemplateCardComponent }} + /> + ))} + + ); }; From e8134f3536f46f15b7a2c5c037f7496be5169514 Mon Sep 17 00:00:00 2001 From: blam Date: Sun, 27 Feb 2022 17:43:55 +0100 Subject: [PATCH 102/410] chore: added a break as to where we are at now Signed-off-by: blam --- .../TemplateListPage/TemplateGroup.test.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx new file mode 100644 index 0000000000..f6c4e99183 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx @@ -0,0 +1,18 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +describe('TemplateGroup', () => { + // this is where we are at now +}); From 447f665bd71cdbc0025fa6ee51a7ec552f14b8bd Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 2 Mar 2022 14:30:30 +0100 Subject: [PATCH 103/410] chore: added some more tests Signed-off-by: blam --- .../TemplateListPage/TemplateGroup.test.tsx | 96 ++++++++++++++++++- 1 file changed, 95 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx index f6c4e99183..0644e23e37 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx @@ -13,6 +13,100 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +jest.mock('./TemplateCard', () => ({ TemplateCard: jest.fn(() => null) })); + +import React from 'react'; +import { TemplateGroup } from './TemplateGroup'; +import { render } from '@testing-library/react'; +import { TemplateCard } from './TemplateCard'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; + describe('TemplateGroup', () => { - // this is where we are at now + it('should return a message when no templates are passed in', async () => { + const { getByText } = render(); + + expect( + getByText(/No templates found that match your filter/), + ).toBeInTheDocument(); + }); + + it('should render a card for each template with the template being passed as a prop', () => { + const mockTemplates: TemplateEntityV1beta3[] = [ + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'test' }, + spec: { + parameters: [], + steps: [], + type: 'website', + }, + }, + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'test2' }, + spec: { + parameters: [], + steps: [], + type: 'service', + }, + }, + ]; + + render(); + + expect(TemplateCard).toHaveBeenCalledTimes(2); + + for (const template of mockTemplates) { + expect(TemplateCard).toHaveBeenCalledWith( + expect.objectContaining({ template }), + {}, + ); + } + }); + + it('should use the passed in TemplateCard prop to render the template card', () => { + const mockTemplateCardComponent = jest.fn(() => null); + + const mockTemplates: TemplateEntityV1beta3[] = [ + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'test' }, + spec: { + parameters: [], + steps: [], + type: 'website', + }, + }, + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'test2' }, + spec: { + parameters: [], + steps: [], + type: 'service', + }, + }, + ]; + + render( + , + ); + + expect(mockTemplateCardComponent).toHaveBeenCalledTimes(2); + + for (const template of mockTemplates) { + expect(mockTemplateCardComponent).toHaveBeenCalledWith( + expect.objectContaining({ template }), + {}, + ); + } + }); }); From 1e323ab305046c4e0f2718b3b94832f171cf4111 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 3 Mar 2022 09:56:16 +0100 Subject: [PATCH 104/410] chore: added some more tests for the start of the template Card Signed-off-by: blam --- .../next/TemplateListPage/CategoryPicker.tsx | 4 ++ .../TemplateCard/CardHeader.test.tsx | 39 ++++++++++++++ .../TemplateCard/CardHeader.tsx | 54 +++++++++++++++++++ .../TemplateCard/TemplateCard.tsx | 43 +++++++++++++++ .../index.ts} | 12 +---- .../TemplateListPage/TemplateGroup.test.tsx | 31 +++++++++++ .../next/TemplateListPage/TemplateGroup.tsx | 22 ++++---- 7 files changed, 184 insertions(+), 21 deletions(-) create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx rename plugins/scaffolder/src/next/TemplateListPage/{TemplateCard.tsx => TemplateCard/index.ts} (70%) diff --git a/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.tsx b/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.tsx index 94f0df2565..483751f2e2 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/CategoryPicker.tsx @@ -34,6 +34,10 @@ import { alertApiRef, useApi } from '@backstage/core-plugin-api'; const icon = ; const checkedIcon = ; +/** + * The Category Picker that is rendered on the left side for picking + * categories and filtering the template list. + */ export const CategoryPicker = () => { const alertApi = useApi(alertApiRef); const { error, loading, availableTypes, selectedTypes, setSelectedTypes } = diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx new file mode 100644 index 0000000000..460a41e092 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx @@ -0,0 +1,39 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { render } from '@testing-library/react'; +import { CardHeader } from './CardHeader'; +import { ThemeProvider } from '@material-ui/core'; +import { lightTheme } from '@backstage/theme'; + +describe('CardHeader', () => { + it('should select the correct theme from the theme provider from the header', () => { + // Can't really test what we want here. + // But we can check that we call the getPage theme with the right type of template at least. + const mockTheme = { + ...lightTheme, + getPageTheme: jest.fn(lightTheme.getPageTheme), + }; + + const { container } = render( + + + , + ); + + expect(mockTheme.getPageTheme).toHaveBeenCalledWith({ themeId: 'service' }); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx new file mode 100644 index 0000000000..da1a1cb661 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx @@ -0,0 +1,54 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { makeStyles, useTheme } from '@material-ui/core'; +import { ItemCardHeader } from '@backstage/core-components'; +import { BackstageTheme } from '@backstage/theme'; + +const useStyles = makeStyles<{}, { cardBackgroundImage: string }>(theme => ({ + header: { + backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage, + }, +})); + +/** + * Props for the CardHeader component + */ +export interface CardHeaderProps { + type?: string; + title: string; +} + +/** + * The Card Header with the background for the TemplateCard. + */ +export const CardHeader = (props: CardHeaderProps) => { + const { type = 'other', title } = props; + const { getPageTheme } = useTheme(); + const themeForType = getPageTheme({ themeId: type }); + const styles = useStyles({ + cardBackgroundImage: themeForType.backgroundImage, + }); + + return ( + + ); +}; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx new file mode 100644 index 0000000000..86cb5dc050 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx @@ -0,0 +1,43 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; +import { Card } from '@material-ui/core'; +import { CardHeader } from './CardHeader'; +/** + * The Props for the Template Card component + * @public + */ +export interface TemplateCardProps { + template: TemplateEntityV1beta3; + deprecated?: boolean; +} + +/** + * The Template Card component that is rendered in a list for each template + * @public + */ +export const TemplateCard = (props: TemplateCardProps) => { + const { template } = props; + return ( + + + + ); +}; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/index.ts similarity index 70% rename from plugins/scaffolder/src/next/TemplateListPage/TemplateCard.tsx rename to plugins/scaffolder/src/next/TemplateListPage/TemplateCard/index.ts index 53ea12d4d6..738c3fc5d4 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/index.ts @@ -13,14 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; - -export interface TemplateCardProps { - template: TemplateEntityV1beta3; - deprecated?: boolean; -} - -export const TemplateCard = (props: TemplateCardProps) => { - return null; -}; +export { TemplateCard } from './TemplateCard'; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx index 0644e23e37..59c6989c0d 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.test.tsx @@ -109,4 +109,35 @@ describe('TemplateGroup', () => { ); } }); + + it('should render the title when no templates passed', () => { + const { getByText } = render(); + expect(getByText('Test')).toBeInTheDocument(); + }); + + it('should render the title when there are templates in the list', () => { + const mockTemplates: TemplateEntityV1beta3[] = [ + { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'test' }, + spec: { parameters: [], steps: [], type: 'website' }, + }, + ]; + + const { getByText } = render( + , + ); + + expect(getByText('Test')).toBeInTheDocument(); + }); + + it('should allow for passing through a user given title component', () => { + const TitleComponent =

    Im a custom header

    ; + const { getByText } = render( + , + ); + + expect(getByText('Im a custom header')).toBeInTheDocument(); + }); }); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx index 389ec83231..4344c195ae 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateGroup.tsx @@ -35,22 +35,24 @@ export interface TemplateGroupProps { export const TemplateGroup = (props: TemplateGroupProps) => { const { templates, title, components: { CardComponent } = {} } = props; + const titleComponent = + typeof title === 'string' ? : title; if (templates.length === 0) { return ( - - No templates found that match your filter. Learn more about{' '} - - adding templates - - . - + + {titleComponent} + + No templates found that match your filter. Learn more about{' '} + + adding templates + + . + + ); } - const titleComponent = - typeof title === 'string' ? : title; - const Card = CardComponent || TemplateCard; return ( From 1850d45b8cebae3f1fa92f7e67eef2c46c933e3e Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 4 Mar 2022 08:36:12 +0100 Subject: [PATCH 105/410] chore: added a favorite icon back to the card header with flex Signed-off-by: blam --- app-config.yaml | 3 ++ .../TemplateCard/CardHeader.tsx | 51 ++++++++++++++----- .../TemplateCard/TemplateCard.tsx | 5 +- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 597073fede..b8506429b4 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -284,6 +284,9 @@ catalog: - type: file target: ../../cypress/e2e-fixture.catalog.info.yaml + - type: file + target: '../../template-test.yaml' + - type: url target: https://github.com/benjdlambert/software-templates/blob/main/scaffolder-templates/react-ssr-template/template.yaml scaffolder: diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx index da1a1cb661..42dec6f87f 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx @@ -15,39 +15,66 @@ */ import React from 'react'; -import { makeStyles, useTheme } from '@material-ui/core'; -import { ItemCardHeader } from '@backstage/core-components'; +import { + Link, + makeStyles, + Tooltip, + Typography, + useTheme, +} from '@material-ui/core'; +import { ItemCardHeader, WarningIcon } from '@backstage/core-components'; import { BackstageTheme } from '@backstage/theme'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; +import { FavoriteEntity } from '@backstage/plugin-catalog-react'; -const useStyles = makeStyles<{}, { cardBackgroundImage: string }>(theme => ({ - header: { - backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage, - }, -})); +const useStyles = makeStyles( + theme => ({ + header: { + backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage, + }, + subtitleWrapper: { + display: 'flex', + justifyContent: 'space-between', + }, + }), +); /** * Props for the CardHeader component */ export interface CardHeaderProps { - type?: string; - title: string; + template: TemplateEntityV1beta3; } /** * The Card Header with the background for the TemplateCard. */ export const CardHeader = (props: CardHeaderProps) => { - const { type = 'other', title } = props; + const { + template: { + metadata: { title, name }, + spec: { type }, + }, + } = props; const { getPageTheme } = useTheme(); const themeForType = getPageTheme({ themeId: type }); const styles = useStyles({ cardBackgroundImage: themeForType.backgroundImage, }); + const SubtitleComponent = ( +
    +
    {type}
    +
    + +
    +
    + ); + return ( ); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx index 86cb5dc050..60860c567b 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx @@ -34,10 +34,7 @@ export const TemplateCard = (props: TemplateCardProps) => { const { template } = props; return ( - + ); }; From 2624e676dcea65333f611385e53626975581d9c9 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 8 Mar 2022 13:50:08 +0100 Subject: [PATCH 106/410] chore: save the current state Signed-off-by: blam --- .../TemplateCard/CardHeader.test.tsx | 14 ++++++++++++-- .../TemplateListPage/TemplateCard/CardHeader.tsx | 10 ++-------- .../next/TemplateListPage/TemplateCard/index.ts | 1 + .../next/TemplateWizardPage/TemplateWizardPage.tsx | 7 ++++++- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx index 460a41e092..eeac119810 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx @@ -28,9 +28,19 @@ describe('CardHeader', () => { getPageTheme: jest.fn(lightTheme.getPageTheme), }; - const { container } = render( + render( - + , ); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx index 42dec6f87f..2e1fdeac00 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx @@ -15,14 +15,8 @@ */ import React from 'react'; -import { - Link, - makeStyles, - Tooltip, - Typography, - useTheme, -} from '@material-ui/core'; -import { ItemCardHeader, WarningIcon } from '@backstage/core-components'; +import { makeStyles, useTheme } from '@material-ui/core'; +import { ItemCardHeader } from '@backstage/core-components'; import { BackstageTheme } from '@backstage/theme'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import { FavoriteEntity } from '@backstage/plugin-catalog-react'; diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/index.ts b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/index.ts index 738c3fc5d4..99af0cbb50 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/index.ts +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/index.ts @@ -14,3 +14,4 @@ * limitations under the License. */ export { TemplateCard } from './TemplateCard'; +export type { TemplateCardProps } from './TemplateCard'; diff --git a/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx b/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx index 94f592eb60..fb5f49b9f8 100644 --- a/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx +++ b/plugins/scaffolder/src/next/TemplateWizardPage/TemplateWizardPage.tsx @@ -13,4 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export const TemplateWizardPage = () => {}; +export interface TemplateWizardPageProps { + customFieldExtensions: any; +} +export const TemplateWizardPage = (props: TemplateWizardPageProps) => { + return null; +}; From 8e638059917c0b820149f2d8fdbc565df77fc139 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 8 Mar 2022 14:12:47 +0100 Subject: [PATCH 107/410] chore: start adding tests Signed-off-by: blam --- .../TemplateCard/CardHeader.test.tsx | 18 ++++++++++++++++++ .../TemplateCard/CardHeader.tsx | 1 + 2 files changed, 19 insertions(+) diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx index eeac119810..4f227be508 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx @@ -46,4 +46,22 @@ describe('CardHeader', () => { expect(mockTheme.getPageTheme).toHaveBeenCalledWith({ themeId: 'service' }); }); + + it('should render the type', () => { + const { getByText } = render( + , + ); + + expect(getByText('Service')).toBeInTheDocument(); + }); }); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx index 2e1fdeac00..db134bb18e 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx @@ -52,6 +52,7 @@ export const CardHeader = (props: CardHeaderProps) => { } = props; const { getPageTheme } = useTheme(); const themeForType = getPageTheme({ themeId: type }); + const styles = useStyles({ cardBackgroundImage: themeForType.backgroundImage, }); From 04a2821d83b5fcf40a74c95ecec1cd1e86205f80 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 8 Mar 2022 14:56:10 +0100 Subject: [PATCH 108/410] chore: added another output for thi Signed-off-by: blam --- .../TemplateCard/CardHeader.test.tsx | 71 +++++++++++++------ .../TemplateListPage.test.tsx | 4 +- 2 files changed, 52 insertions(+), 23 deletions(-) diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx index 4f227be508..1fe55b7b02 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx @@ -18,6 +18,13 @@ import { render } from '@testing-library/react'; import { CardHeader } from './CardHeader'; import { ThemeProvider } from '@material-ui/core'; import { lightTheme } from '@backstage/theme'; +import { + MockStorageApi, + renderInTestApp, + TestApiProvider, +} from '@backstage/test-utils'; +import { starredEntitiesApiRef } from '@backstage/plugin-catalog-react'; +import { DefaultStarredEntitiesApi } from '@backstage/plugin-catalog'; describe('CardHeader', () => { it('should select the correct theme from the theme provider from the header', () => { @@ -29,7 +36,47 @@ describe('CardHeader', () => { }; render( - + + + + + , + ); + + expect(mockTheme.getPageTheme).toHaveBeenCalledWith({ themeId: 'service' }); + }); + + it('should render the type', async () => { + const { getByText } = await renderInTestApp( + { }, }} /> - , +
    , ); - expect(mockTheme.getPageTheme).toHaveBeenCalledWith({ themeId: 'service' }); - }); - - it('should render the type', () => { - const { getByText } = render( - , - ); - - expect(getByText('Service')).toBeInTheDocument(); + expect(getByText('service')).toBeInTheDocument(); }); }); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx index 7aee8cc397..4f12bde863 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateListPage.test.tsx @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { DefaultStarredEntitiesApi } from '@backstage/plugin-catalog'; import { catalogApiRef, - DefaultStarredEntitiesApi, starredEntitiesApiRef, } from '@backstage/plugin-catalog-react'; import { permissionApiRef } from '@backstage/plugin-permission-react'; @@ -110,7 +110,7 @@ describe('TemplateListPage', () => { expect(getByText('Categories')).toBeInTheDocument(); }); - it('should render the EntityTag picker', async () => { + it.skip('should render the EntityTag picker', async () => { const { getByText } = await renderInTestApp( Date: Wed, 9 Mar 2022 16:30:18 +0100 Subject: [PATCH 109/410] chore: added some more tests to favoriting Signed-off-by: blam --- .../FavoriteEntity/FavoriteEntity.tsx | 1 + .../TemplateCard/CardHeader.test.tsx | 94 ++++++++++++++++++- .../TemplateCard/CardHeader.tsx | 2 +- 3 files changed, 95 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx b/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx index e055f4056f..163d819a35 100644 --- a/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx +++ b/plugins/catalog-react/src/components/FavoriteEntity/FavoriteEntity.tsx @@ -43,6 +43,7 @@ export const FavoriteEntity = (props: FavoriteEntityProps) => { ); return ( toggleStarredEntity()} diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx index 1fe55b7b02..287d813ca7 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.test.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import React from 'react'; -import { render } from '@testing-library/react'; +import { fireEvent, render } from '@testing-library/react'; import { CardHeader } from './CardHeader'; import { ThemeProvider } from '@material-ui/core'; import { lightTheme } from '@backstage/theme'; @@ -25,6 +25,9 @@ import { } from '@backstage/test-utils'; import { starredEntitiesApiRef } from '@backstage/plugin-catalog-react'; import { DefaultStarredEntitiesApi } from '@backstage/plugin-catalog'; +import Observable from 'zen-observable'; +import { stringifyEntityRef } from '@backstage/catalog-model'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; describe('CardHeader', () => { it('should select the correct theme from the theme provider from the header', () => { @@ -93,4 +96,93 @@ describe('CardHeader', () => { expect(getByText('service')).toBeInTheDocument(); }); + + it('should enable favoriting of the entity', async () => { + const starredEntitiesApi = { + starredEntitie$: () => new Observable(() => {}), + toggleStarred: jest.fn(async () => {}), + }; + + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob' }, + spec: { + steps: [], + type: 'service', + }, + }; + + const { getByRole } = await renderInTestApp( + + + , + ); + + const favorite = getByRole('button', { name: 'favorite' }); + + await fireEvent.click(favorite); + + expect(starredEntitiesApi.toggleStarred).toHaveBeenCalledWith( + stringifyEntityRef(mockTemplate), + ); + }); + + it('should render the name of the entity', async () => { + const { getByText } = await renderInTestApp( + + + , + ); + + expect(getByText('bob')).toBeInTheDocument(); + }); + + it('should render the title of the entity in favor of the name if it is provided', async () => { + const { getByText } = await renderInTestApp( + + + , + ); + + expect(getByText('Iamtitle')).toBeInTheDocument(); + }); }); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx index db134bb18e..3a5785a4f6 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/CardHeader.tsx @@ -22,7 +22,7 @@ import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; import { FavoriteEntity } from '@backstage/plugin-catalog-react'; const useStyles = makeStyles( - theme => ({ + () => ({ header: { backgroundImage: ({ cardBackgroundImage }) => cardBackgroundImage, }, From 910e34dd936c0bffe5caf1477c0601ce5ef3b2d4 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 10 Mar 2022 18:09:52 +0100 Subject: [PATCH 110/410] chore: making the TemplateCards pretty Signed-off-by: blam --- plugins/scaffolder/src/next/Router/Router.tsx | 12 ++- .../TemplateCard/TemplateCard.tsx | 87 ++++++++++++++++++- 2 files changed, 94 insertions(+), 5 deletions(-) diff --git a/plugins/scaffolder/src/next/Router/Router.tsx b/plugins/scaffolder/src/next/Router/Router.tsx index b199abc8bb..5aa55440e6 100644 --- a/plugins/scaffolder/src/next/Router/Router.tsx +++ b/plugins/scaffolder/src/next/Router/Router.tsx @@ -27,19 +27,20 @@ import { import { useElementFilter } from '@backstage/core-plugin-api'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; +import { TemplateGroupFilter } from '../TemplateListPage/TemplateGroups'; export type RouterProps = { - components: { + components?: { TemplateCardComponent?: React.ComponentType<{ template: TemplateEntityV1beta3; }>; TaskPageComponent?: React.ComponentType<{}>; }; + groups?: TemplateGroupFilter[]; }; export const Router = (props: PropsWithChildren) => { - const { components: { TaskPageComponent, TemplateCardComponent } = {} } = - props; + const { components: { TemplateCardComponent } = {} } = props; const outlet = useOutlet() || props.children; @@ -68,7 +69,10 @@ export const Router = (props: PropsWithChildren) => { + } /> diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx index 60860c567b..53e6f0320f 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx @@ -15,8 +15,64 @@ */ import React from 'react'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; -import { Card } from '@material-ui/core'; +import { + Box, + Card, + CardActions, + CardContent, + Chip, + Divider, + makeStyles, +} from '@material-ui/core'; import { CardHeader } from './CardHeader'; +import { MarkdownContent, UserIcon, Button } from '@backstage/core-components'; +import { RELATION_OWNED_BY } from '@backstage/catalog-model'; +import { + EntityRefLinks, + getEntityRelations, +} from '@backstage/plugin-catalog-react'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { selectedTemplateRouteRef } from '../../../routes'; +import { BackstageTheme } from '@backstage/theme'; + +const useStyles = makeStyles(theme => ({ + box: { + overflow: 'hidden', + textOverflow: 'ellipsis', + display: '-webkit-box', + '-webkit-line-clamp': 10, + '-webkit-box-orient': 'vertical', + /** to make the styles for React Markdown not leak into the description */ + '& p:first-child': { + marginTop: 0, + marginBottom: theme.spacing(2), + }, + }, + label: { + color: theme.palette.text.secondary, + textTransform: 'uppercase', + fontWeight: 'bold', + letterSpacing: 0.5, + lineHeight: 1, + fontSize: '0.75rem', + }, + margin: { + marginBottom: theme.spacing(2), + }, + footer: { + display: 'flex', + justifyContent: 'space-between', + flex: 1, + alignItems: 'center', + }, + ownedBy: { + display: 'flex', + alignItems: 'center', + flex: 1, + color: theme.palette.link, + }, +})); + /** * The Props for the Template Card component * @public @@ -32,9 +88,38 @@ export interface TemplateCardProps { */ export const TemplateCard = (props: TemplateCardProps) => { const { template } = props; + const styles = useStyles(); + const ownedByRelations = getEntityRelations(template, RELATION_OWNED_BY); + const templateRoute = useRouteRef(selectedTemplateRouteRef); + const href = templateRoute({ templateName: template.metadata.name }); + return ( + + + + + + + {template.metadata.tags?.map(tag => ( + + ))} + + + +
    +
    + + +
    + +
    +
    ); }; From 412877f94357c42e993824b79a043b65056ce95b Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 11 Mar 2022 13:29:22 +0100 Subject: [PATCH 111/410] chore: added final test for the template card Signed-off-by: blam --- .../TemplateCard/TemplateCard.test.tsx | 249 ++++++++++++++++++ .../TemplateCard/TemplateCard.tsx | 27 +- 2 files changed, 268 insertions(+), 8 deletions(-) create mode 100644 plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.test.tsx diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.test.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.test.tsx new file mode 100644 index 0000000000..088727a5a0 --- /dev/null +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.test.tsx @@ -0,0 +1,249 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { DefaultStarredEntitiesApi } from '@backstage/plugin-catalog'; +import { + entityRouteRef, + starredEntitiesApiRef, +} from '@backstage/plugin-catalog-react'; +import { + MockStorageApi, + renderInTestApp, + TestApiProvider, +} from '@backstage/test-utils'; +import { TemplateCard } from './TemplateCard'; +import React from 'react'; +import { rootRouteRef } from '../../../routes'; +import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; +import { RELATION_OWNED_BY } from '@backstage/catalog-model'; + +describe('TemplateCard', () => { + it('should render the card title', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob' }, + spec: { + steps: [], + type: 'service', + }, + }; + + const { getByText } = await renderInTestApp( + + + , + { mountedRoutes: { '/': rootRouteRef } }, + ); + + expect(getByText('bob')).toBeInTheDocument(); + }); + + it('should render the description as markdown', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob', description: 'hello **test**' }, + spec: { + steps: [], + type: 'service', + }, + }; + + const { getByText } = await renderInTestApp( + + + , + { mountedRoutes: { '/': rootRouteRef } }, + ); + + const description = getByText('hello'); + expect(description.querySelector('strong')).toBeInTheDocument(); + }); + + it('should render no descroption if none is provided through the template', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob' }, + spec: { + steps: [], + type: 'service', + }, + }; + + const { getByText } = await renderInTestApp( + + + , + { mountedRoutes: { '/': rootRouteRef } }, + ); + + expect(getByText('No description')).toBeInTheDocument(); + }); + + it('should render the tags', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob', tags: ['cpp', 'react'] }, + spec: { + steps: [], + type: 'service', + }, + }; + + const { getByText } = await renderInTestApp( + + + , + { mountedRoutes: { '/': rootRouteRef } }, + ); + + for (const tag of mockTemplate.metadata.tags!) { + expect(getByText(tag)).toBeInTheDocument(); + } + }); + + it('should render a link to the owner', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob', tags: ['cpp', 'react'] }, + spec: { + steps: [], + type: 'service', + }, + relations: [ + { + targetRef: 'group:default/my-test-user', + type: RELATION_OWNED_BY, + /** remove when target is removed as it's deprecated */ + target: { kind: 'User', name: 'my-test-user', namespace: 'default' }, + }, + ], + }; + + const { getByRole } = await renderInTestApp( + + + , + { + mountedRoutes: { + '/': rootRouteRef, + '/catalog/:kind/:namespace/:name': entityRouteRef, + }, + }, + ); + + expect(getByRole('link', { name: 'my-test-user' })).toBeInTheDocument(); + expect(getByRole('link', { name: 'my-test-user' })).toHaveAttribute( + 'href', + '/catalog/group/default/my-test-user', + ); + }); + + it('should render the choose button to navigate to the selected template', async () => { + const mockTemplate: TemplateEntityV1beta3 = { + apiVersion: 'scaffolder.backstage.io/v1beta3', + kind: 'Template', + metadata: { name: 'bob', tags: ['cpp', 'react'] }, + spec: { + steps: [], + type: 'service', + }, + relations: [ + { + targetRef: 'group:default/my-test-user', + type: RELATION_OWNED_BY, + /** remove when target is removed as it's deprecated */ + target: { kind: 'User', name: 'my-test-user', namespace: 'default' }, + }, + ], + }; + + const { getByRole } = await renderInTestApp( + + + , + { + mountedRoutes: { + '/': rootRouteRef, + '/catalog/:kind/:namespace/:name': entityRouteRef, + }, + }, + ); + + expect(getByRole('button', { name: 'Choose' })).toBeInTheDocument(); + expect(getByRole('button', { name: 'Choose' })).toHaveAttribute( + 'href', + '/templates/bob', + ); + }); +}); diff --git a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx index 53e6f0320f..26f74ac053 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/TemplateCard/TemplateCard.tsx @@ -102,18 +102,29 @@ export const TemplateCard = (props: TemplateCardProps) => { content={template.metadata.description ?? 'No description'} /> - - - {template.metadata.tags?.map(tag => ( - - ))} - + {template.metadata.tags?.length ? ( + <> + + + {template.metadata.tags?.map(tag => ( + + ))} + + + ) : null}
    - - + {ownedByRelations.length ? ( + <> + + + + ) : null}
    More
    diff --git a/microsite/pages/en/index.js b/microsite/pages/en/index.js index 90dbb88a5f..ba84d7d774 100644 --- a/microsite/pages/en/index.js +++ b/microsite/pages/en/index.js @@ -533,7 +533,7 @@ class Index extends React.Component { Cloud Native Computing Foundation {' '} - sandbox project + incubation project
    From 704d190c85a1339c54b23d57ab2cd858275f65c3 Mon Sep 17 00:00:00 2001 From: Shailendra Ahir Date: Wed, 23 Mar 2022 08:50:05 +0530 Subject: [PATCH 259/410] #8850 Added prop types and test cases Signed-off-by: Shailendra Ahir --- .../EntityRelationsGraph.test.tsx | 47 +++++++++++++++++++ .../EntityRelationsGraph.tsx | 6 +-- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx index 2bf303bb92..5d9e9b18a6 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.test.tsx @@ -21,6 +21,7 @@ import { RELATION_OWNER_OF, RELATION_PART_OF, } from '@backstage/catalog-model'; +import { DependencyGraphTypes } from '@backstage/core-components'; import { CatalogApi, catalogApiRef } from '@backstage/plugin-catalog-react'; import { renderInTestApp, TestApiProvider } from '@backstage/test-utils'; import userEvent from '@testing-library/user-event'; @@ -30,6 +31,7 @@ import { EntityRelationsGraph } from './EntityRelationsGraph'; describe('', () => { let Wrapper: FunctionComponent; let catalog: jest.Mocked; + const CUSTOM_TEST_ID = 'custom-test-id'; beforeAll(() => { Object.defineProperty(window.SVGElement.prototype, 'getBBox', { @@ -378,4 +380,49 @@ describe('', () => { userEvent.click(await findByText('k:d/a1')); expect(onNodeClick).toBeCalledTimes(1); }); + + test('render custom node', async () => { + const renderNode = (props: DependencyGraphTypes.RenderNodeProps) => ( + + {props.node.id} + + + ); + + const { findAllByTestId, container } = await renderInTestApp( + + + , + ); + + const node = await findAllByTestId(CUSTOM_TEST_ID); + expect(node[0]).toBeInTheDocument(); + expect(container.querySelector('circle')).toBeInTheDocument(); + }); + + test('render custom label', async () => { + const renderLabel = (props: DependencyGraphTypes.RenderLabelProps) => ( + + {`Test-Label${props.edge.label}`} + + + ); + + const { findAllByTestId, findAllByText, container } = await renderInTestApp( + + + , + ); + const node = await findAllByTestId(CUSTOM_TEST_ID); + expect(node[0]).toBeInTheDocument(); + expect(container.querySelector('circle')).toBeInTheDocument(); + const labels = await findAllByText('Test-Labelvisible'); + expect(labels[0]).toBeInTheDocument(); + }); }); diff --git a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.tsx b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.tsx index 19ca5398a6..bf3fbf8f3a 100644 --- a/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.tsx +++ b/plugins/catalog-graph/src/components/EntityRelationsGraph/EntityRelationsGraph.tsx @@ -28,7 +28,7 @@ import React, { MouseEvent, useEffect, useMemo } from 'react'; import { CustomLabel } from './CustomLabel'; import { CustomNode } from './CustomNode'; import { ALL_RELATION_PAIRS, RelationPairs } from './relations'; -import { Direction, EntityNode } from './types'; +import { Direction, EntityEdge, EntityNode } from './types'; import { useEntityRelationNodesAndEdges } from './useEntityRelationNodesAndEdges'; const useStyles = makeStyles(theme => ({ @@ -93,8 +93,8 @@ export const EntityRelationsGraph = ({ relationPairs?: RelationPairs; className?: string; zoom?: 'enabled' | 'disabled' | 'enable-on-click'; - renderNode?: any; - renderLabel?: any; + renderNode?: DependencyGraphTypes.RenderNodeFunction; + renderLabel?: DependencyGraphTypes.RenderLabelFunction; }) => { const theme = useTheme(); const classes = useStyles(); From ac25b953cf7b22fb4a3410970bf69bf54f59cc74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 04:08:31 +0000 Subject: [PATCH 260/410] build(deps): bump @azure/storage-blob from 12.5.0 to 12.9.0 Bumps [@azure/storage-blob](https://github.com/Azure/azure-sdk-for-js) from 12.5.0 to 12.9.0. - [Release notes](https://github.com/Azure/azure-sdk-for-js/releases) - [Commits](https://github.com/Azure/azure-sdk-for-js/compare/@azure/storage-blob_12.5.0...@azure/storage-blob_12.9.0) --- updated-dependencies: - dependency-name: "@azure/storage-blob" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 96 +++++++++++++++++-------------------------------------- 1 file changed, 30 insertions(+), 66 deletions(-) diff --git a/yarn.lock b/yarn.lock index ef5d447dda..ec6f9828fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -114,7 +114,7 @@ resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== -"@azure/core-auth@^1.1.3", "@azure/core-auth@^1.3.0": +"@azure/core-auth@^1.3.0": version "1.3.2" resolved "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== @@ -135,36 +135,36 @@ "@azure/logger" "^1.0.0" tslib "^2.2.0" -"@azure/core-http@^1.2.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-1.2.2.tgz#a6f7717184fd2657d3acabd1d64dfdc0bd531ce3" - integrity sha512-9eu2OcbR7e44gqBy4U1Uv8NTWgLIMwKXMEGgO2MahsJy5rdTiAhs5fJHQffPq8uX2MFh21iBODwO9R/Xlov88A== +"@azure/core-http@^2.0.0": + version "2.2.4" + resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-2.2.4.tgz#df5a5b4138dbbc4299879f2fc6f257d0a5f0401e" + integrity sha512-QmmJmexXKtPyc3/rsZR/YTLDvMatzbzAypJmLzvlfxgz/SkgnqV/D4f6F2LsK6tBj1qhyp8BoXiOebiej0zz3A== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-auth" "^1.1.3" - "@azure/core-tracing" "1.0.0-preview.9" + "@azure/core-asynciterator-polyfill" "^1.0.0" + "@azure/core-auth" "^1.3.0" + "@azure/core-tracing" "1.0.0-preview.13" "@azure/logger" "^1.0.0" - "@opentelemetry/api" "^0.10.2" "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" + "@types/tunnel" "^0.0.3" + form-data "^4.0.0" + node-fetch "^2.6.7" process "^0.11.10" tough-cookie "^4.0.0" - tslib "^2.0.0" + tslib "^2.2.0" tunnel "^0.0.6" uuid "^8.3.0" xml2js "^0.4.19" -"@azure/core-lro@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-1.0.3.tgz#1ddfb4ecdb81ce87b5f5d972ffe2acbbc46e524e" - integrity sha512-Py2crJ84qx1rXkzIwfKw5Ni4WJuzVU7KAF6i1yP3ce8fbynUeu8eEWS4JGtSQgU7xv02G55iPDROifmSDbxeHA== +"@azure/core-lro@^2.2.0": + version "2.2.4" + resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.4.tgz#42fbf4ae98093c59005206a4437ddcd057c57ca1" + integrity sha512-e1I2v2CZM0mQo8+RSix0x091Av493e4bnT22ds2fcQGslTHzM2oTbswkB65nP4iEpCxBrFxOSDPKExmTmjCVtQ== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^1.2.0" - events "^3.0.0" - tslib "^2.0.0" + "@azure/core-tracing" "1.0.0-preview.13" + "@azure/logger" "^1.0.0" + tslib "^2.2.0" "@azure/core-paging@^1.1.1": version "1.1.3" @@ -188,15 +188,6 @@ tslib "^2.2.0" uuid "^8.3.0" -"@azure/core-tracing@1.0.0-preview.10": - version "1.0.0-preview.10" - resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.10.tgz#e7060272145dddad4486765030d1b037cd52a8ea" - integrity sha512-iIwjtMwQnsxB7cYkugMx+s4W1nfy3+pT/ceo+uW1fv4YDgYe84nh+QP0fEC9IH/3UATLSWbIBemdMHzk2APUrw== - dependencies: - "@opencensus/web-types" "0.0.7" - "@opentelemetry/api" "^0.10.2" - tslib "^2.0.0" - "@azure/core-tracing@1.0.0-preview.13": version "1.0.0-preview.13" resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644" @@ -205,15 +196,6 @@ "@opentelemetry/api" "^1.0.1" tslib "^2.2.0" -"@azure/core-tracing@1.0.0-preview.9": - version "1.0.0-preview.9" - resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.9.tgz#84f3b85572013f9d9b85e1e5d89787aa180787eb" - integrity sha512-zczolCLJ5QG42AEPQ+Qg9SRYNUyB+yZ5dzof4YEc+dyWczO9G2sBqbAjLB7IqrsdHN2apkiB2oXeDKCsq48jug== - dependencies: - "@opencensus/web-types" "0.0.7" - "@opentelemetry/api" "^0.10.2" - tslib "^2.0.0" - "@azure/core-util@^1.0.0-beta.1": version "1.0.0-beta.1" resolved "https://registry.npmjs.org/@azure/core-util/-/core-util-1.0.0-beta.1.tgz#2efd2c74b4b0a38180369f50fe274a3c4cd36e98" @@ -290,19 +272,18 @@ uuid "^8.3.0" "@azure/storage-blob@^12.5.0": - version "12.5.0" - resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.5.0.tgz#1ddd8837d9a15ebe355e795375d13b406f2cb496" - integrity sha512-DgoefgODst2IPkkQsNdhtYdyJgSsAZC1pEujO6aD5y7uFy5GnzhYliobSrp204jYRyK5XeJ9iiePmy/SPtTbLA== + version "12.9.0" + resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.9.0.tgz#4cbd8b4c7a47dd064867430db892f4ef2d8f17ab" + integrity sha512-ank38FdCLfJ+EoeMzCz3hkYJuZAd63ARvDKkxZYRDb+beBYf+/+gx8jNTqkq/hfyUl4dJQ/a7tECU0Y0F98CHg== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^1.2.0" - "@azure/core-lro" "^1.0.2" + "@azure/core-http" "^2.0.0" + "@azure/core-lro" "^2.2.0" "@azure/core-paging" "^1.1.1" - "@azure/core-tracing" "1.0.0-preview.10" + "@azure/core-tracing" "1.0.0-preview.13" "@azure/logger" "^1.0.0" - "@opentelemetry/api" "^0.10.2" events "^3.0.0" - tslib "^2.0.0" + tslib "^2.2.0" "@babel/code-frame@7.0.0": version "7.0.0" @@ -4857,28 +4838,11 @@ fast-deep-equal "^3.1.3" lodash.clonedeep "^4.5.0" -"@opencensus/web-types@0.0.7": - version "0.0.7" - resolved "https://registry.npmjs.org/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a" - integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g== - -"@opentelemetry/api@^0.10.2": - version "0.10.2" - resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-0.10.2.tgz#9647b881f3e1654089ff7ea59d587b2d35060654" - integrity sha512-GtpMGd6vkzDMYcpu2t9LlhEgMy/SzBwRnz48EejlRArYqZzqSzAsKmegUK7zHgl+EOIaK9mKHhnRaQu3qw20cA== - dependencies: - "@opentelemetry/context-base" "^0.10.2" - "@opentelemetry/api@^1.0.1": version "1.0.4" resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924" integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog== -"@opentelemetry/context-base@^0.10.2": - version "0.10.2" - resolved "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.10.2.tgz#55bea904b2b91aa8a8675df9eaba5961bddb1def" - integrity sha512-hZNKjKOYsckoOEgBziGMnBcX0M7EtstnCmwz5jZUOUYwlZ+/xxX6z3jPu1XVO2Jivk0eLfuP9GP+vFD49CMetw== - "@panva/asn1.js@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" @@ -6764,10 +6728,10 @@ resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== +"@types/tunnel@^0.0.3": + version "0.0.3" + resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9" + integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA== dependencies: "@types/node" "*" From cea7076d83f22357c8535e2df9f40a89cd981c4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 04:09:00 +0000 Subject: [PATCH 261/410] build(deps): bump css-loader from 6.6.0 to 6.7.1 Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.6.0 to 6.7.1. - [Release notes](https://github.com/webpack-contrib/css-loader/releases) - [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.6.0...v6.7.1) --- updated-dependencies: - dependency-name: css-loader dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index ef5d447dda..3695022c81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10106,12 +10106,12 @@ css-in-js-utils@^2.0.0: isobject "^3.0.1" css-loader@^6.5.1: - version "6.6.0" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" - integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== + version "6.7.1" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== dependencies: icss-utils "^5.1.0" - postcss "^8.4.5" + postcss "^8.4.7" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -20144,10 +20144,10 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.1.0, postcss@^8.4.5: - version "8.4.7" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8" - integrity sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A== +postcss@^8.1.0, postcss@^8.4.7: + version "8.4.12" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" + integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== dependencies: nanoid "^3.3.1" picocolors "^1.0.0" From c54ce828bdca20357b97df453194d173a22335d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 04:09:44 +0000 Subject: [PATCH 262/410] build(deps): bump eslint-plugin-jest from 25.3.4 to 26.1.2 Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 25.3.4 to 26.1.2. - [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases) - [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v25.3.4...v26.1.2) --- updated-dependencies: - dependency-name: eslint-plugin-jest dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-05b19b9.md | 5 +++++ packages/cli/package.json | 2 +- yarn.lock | 22 +++++++++++++++++----- 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 .changeset/dependabot-05b19b9.md diff --git a/.changeset/dependabot-05b19b9.md b/.changeset/dependabot-05b19b9.md new file mode 100644 index 0000000000..97845bb77d --- /dev/null +++ b/.changeset/dependabot-05b19b9.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +build(deps): bump `eslint-plugin-jest` from 25.3.4 to 26.1.2 diff --git a/packages/cli/package.json b/packages/cli/package.json index 59a9809670..c1649bc66a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -72,7 +72,7 @@ "eslint-formatter-friendly": "^7.0.0", "eslint-plugin-deprecation": "^1.3.2", "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^25.3.4", + "eslint-plugin-jest": "^26.1.2", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-monorepo": "^0.3.2", "eslint-plugin-react": "^7.28.0", diff --git a/yarn.lock b/yarn.lock index ef5d447dda..01247e79be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7027,6 +7027,18 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" +"@typescript-eslint/utils@^5.10.0": + version "5.16.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz#42218b459d6d66418a4eb199a382bdc261650679" + integrity sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.16.0" + "@typescript-eslint/types" "5.16.0" + "@typescript-eslint/typescript-estree" "5.16.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + "@typescript-eslint/visitor-keys@5.14.0": version "5.14.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986" @@ -11775,12 +11787,12 @@ eslint-plugin-import@^2.25.4: resolve "^1.20.0" tsconfig-paths "^3.12.0" -eslint-plugin-jest@^25.3.4: - version "25.3.4" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.3.4.tgz#2031dfe495be1463330f8b80096ddc91f8e6387f" - integrity sha512-CCnwG71wvabmwq/qkz0HWIqBHQxw6pXB1uqt24dxqJ9WB34pVg49bL1sjXphlJHgTMWGhBjN1PicdyxDxrfP5A== +eslint-plugin-jest@^26.1.2: + version "26.1.2" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.1.2.tgz#0f1a15c62889fffc3f78a773749d672f1bedb15f" + integrity sha512-1bXCoRODPkGN06n9KAMls4Jm0eyS+0Q/LWcIxhqWR2ycV0Z7lnx2c10idk4dtFIJY5xStgiIr5snC6/rxcXpbw== dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" + "@typescript-eslint/utils" "^5.10.0" eslint-plugin-jsx-a11y@^6.5.1: version "6.5.1" From fc4ac32bfe84461735f05d1928be2692c067a778 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 04:10:52 +0000 Subject: [PATCH 263/410] build(deps): bump react-syntax-highlighter from 15.4.5 to 15.5.0 Bumps [react-syntax-highlighter](https://github.com/react-syntax-highlighter/react-syntax-highlighter) from 15.4.5 to 15.5.0. - [Release notes](https://github.com/react-syntax-highlighter/react-syntax-highlighter/releases) - [Changelog](https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/CHANGELOG.MD) - [Commits](https://github.com/react-syntax-highlighter/react-syntax-highlighter/compare/v15.4.5...15.5.0) --- updated-dependencies: - dependency-name: react-syntax-highlighter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/yarn.lock b/yarn.lock index ef5d447dda..bb68bb1b85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20272,7 +20272,7 @@ printj@~1.1.0: resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== -prismjs@^1.25.0, prismjs@~1.27.0: +prismjs@^1.27.0, prismjs@~1.27.0: version "1.27.0" resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== @@ -20978,15 +20978,15 @@ react-sparklines@^1.7.0: prop-types "^15.5.10" react-syntax-highlighter@^15.4.5: - version "15.4.5" - resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.4.5.tgz#db900d411d32a65c8e90c39cd64555bf463e712e" - integrity sha512-RC90KQTxZ/b7+9iE6s9nmiFLFjWswUcfULi4GwVzdFVKVMQySkJWBuOmJFfjwjMVCo0IUUuJrWebNKyviKpwLQ== + version "15.5.0" + resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20" + integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== dependencies: "@babel/runtime" "^7.3.1" highlight.js "^10.4.1" lowlight "^1.17.0" - prismjs "^1.25.0" - refractor "^3.2.0" + prismjs "^1.27.0" + refractor "^3.6.0" react-test-renderer@^16.13.1: version "16.13.1" @@ -21379,7 +21379,7 @@ reflect-metadata@^0.1.13: resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -refractor@^3.2.0: +refractor@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== From 7e7ba704bebf8d405d82f54d8b36a778a3a6cbab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 04:11:29 +0000 Subject: [PATCH 264/410] build(deps): bump @spotify/eslint-config-base from 12.0.0 to 13.0.0 Bumps [@spotify/eslint-config-base](https://github.com/spotify/web-scripts) from 12.0.0 to 13.0.0. - [Release notes](https://github.com/spotify/web-scripts/releases) - [Changelog](https://github.com/spotify/web-scripts/blob/master/CHANGELOG.md) - [Commits](https://github.com/spotify/web-scripts/compare/v12.0.0...v13.0.0) --- updated-dependencies: - dependency-name: "@spotify/eslint-config-base" dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-84caed8.md | 5 +++++ packages/cli/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/dependabot-84caed8.md diff --git a/.changeset/dependabot-84caed8.md b/.changeset/dependabot-84caed8.md new file mode 100644 index 0000000000..d4806431a0 --- /dev/null +++ b/.changeset/dependabot-84caed8.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +build(deps): bump `@spotify/eslint-config-base` from 12.0.0 to 13.0.0 diff --git a/packages/cli/package.json b/packages/cli/package.json index 59a9809670..c04972093d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -45,7 +45,7 @@ "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.0", "@rollup/plugin-yaml": "^3.1.0", - "@spotify/eslint-config-base": "^12.0.0", + "@spotify/eslint-config-base": "^13.0.0", "@spotify/eslint-config-react": "^12.0.0", "@spotify/eslint-config-typescript": "^12.0.0", "@sucrase/jest-plugin": "^2.1.1", diff --git a/yarn.lock b/yarn.lock index ef5d447dda..573a83e268 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5214,10 +5214,10 @@ resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@spotify/eslint-config-base@^12.0.0": - version "12.0.0" - resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-12.0.0.tgz#0b1e41bb436d5c1c20714703629514d64c3c0f06" - integrity sha512-5Uud/TmzakqmdUNCZpD8JFQRa2VG3dVd3DanSMpU/nVdu6K5LyX8EMU3Tz1vGP18Wih8iAu/sBSJhntNzw7e6w== +"@spotify/eslint-config-base@^13.0.0": + version "13.0.0" + resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-13.0.0.tgz#bb748bb2b705ffb5085f873aa0daf94dfad59985" + integrity sha512-BrnexUcUQkp6XUw8HWSmE4LpWtJGgEC6A7vrSkgpgKJtZaYkpw8O+Xnk60DA266ecbFHYbQD6ngqKHlvjNB+pA== "@spotify/eslint-config-react@^12.0.0": version "12.0.0" From cb938e2b7f93dfae6517ac26a4b5ffa12b0abafa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 04:12:06 +0000 Subject: [PATCH 265/410] build(deps): bump @gitbeaker/node from 35.4.0 to 35.5.0 Bumps [@gitbeaker/node](https://github.com/jdalrymple/gitbeaker) from 35.4.0 to 35.5.0. - [Release notes](https://github.com/jdalrymple/gitbeaker/releases) - [Changelog](https://github.com/jdalrymple/gitbeaker/blob/master/CHANGELOG.md) - [Commits](https://github.com/jdalrymple/gitbeaker/compare/35.4.0...35.5.0) --- updated-dependencies: - dependency-name: "@gitbeaker/node" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index ef5d447dda..df0fd53721 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2082,12 +2082,12 @@ query-string "^7.0.0" xcase "^2.0.1" -"@gitbeaker/core@^35.4.0": - version "35.4.0" - resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-35.4.0.tgz#ebc3e46f9d8e17f85f81ccfe163cffdcd429545a" - integrity sha512-VjRmC/j1umhn0+f+DbrbxXDAc0uvGd32tJ4MCFQYkxw9ndr/0Rlg8iYvYN/zWyqtgr3SeTxMyS3Z9MtbWWhjBA== +"@gitbeaker/core@^35.5.0": + version "35.5.0" + resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-35.5.0.tgz#e744ca9115133f8070a40b3bbfedf5a11801d341" + integrity sha512-ExAIDoUWmaY/QBNoUNkxEvvg79kF9ccFkEoFnHdKYvrqX2517OJCSoWoslGt9/XaSEcE9sTm7lYZrCmqExXsWg== dependencies: - "@gitbeaker/requester-utils" "^35.4.0" + "@gitbeaker/requester-utils" "^35.5.0" form-data "^4.0.0" li "^1.3.0" mime "^3.0.0" @@ -2095,12 +2095,12 @@ xcase "^2.0.1" "@gitbeaker/node@^35.1.0": - version "35.4.0" - resolved "https://registry.npmjs.org/@gitbeaker/node/-/node-35.4.0.tgz#096a28fd936dad9220625a917502063adf566acf" - integrity sha512-5isY4/ePtjIs7uFwVW8U5oNNwntyCa3eTs3+tb6CywtLGdlnenk0eNJjZ2Srn8xJOKsOCCpQkT5hP1AOKSAlAQ== + version "35.5.0" + resolved "https://registry.npmjs.org/@gitbeaker/node/-/node-35.5.0.tgz#9cb38c6532cf8cb32e0de7fa8dac6327adaca471" + integrity sha512-gjGSqnNLNz4aP28dX8Cy97n7MtGUaSewoc+oJAkPDgpA0y4gWhgxpzEEwXrhhPsQA4Cxig0CLpPHMTi1Q1fVvg== dependencies: - "@gitbeaker/core" "^35.4.0" - "@gitbeaker/requester-utils" "^35.4.0" + "@gitbeaker/core" "^35.5.0" + "@gitbeaker/requester-utils" "^35.5.0" delay "^5.0.0" got "11.8.3" xcase "^2.0.1" @@ -2114,10 +2114,10 @@ qs "^6.10.1" xcase "^2.0.1" -"@gitbeaker/requester-utils@^35.4.0": - version "35.4.0" - resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-35.4.0.tgz#918be27441024c841d3f9e09c498e6b24de291e2" - integrity sha512-NkJ55oMM7TNMWUNnzeYLdLOIUFv1LBBN/PCM2u7J5+67gpck03YfWAkgrODIqBePFyrfm19pdka3SUlNBP0G2g== +"@gitbeaker/requester-utils@^35.5.0": + version "35.5.0" + resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-35.5.0.tgz#22fb09698da018607c9ce70a62114747bd92752e" + integrity sha512-5weE7X7kfIuUHGWl0XfSt68kFMVXUg3SrUZW7MOS2Y0w2tj/H+6eomzJ7mYcJmI7ttNGIDGYhqxftPh8zLpi0w== dependencies: form-data "^4.0.0" qs "^6.10.1" From 803e4a99f0e6a602c64b8837810d90d4c5772964 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 04:12:42 +0000 Subject: [PATCH 266/410] build(deps): bump apollo-server-express from 3.6.4 to 3.6.5 Bumps [apollo-server-express](https://github.com/apollographql/apollo-server/tree/HEAD/packages/apollo-server-express) from 3.6.4 to 3.6.5. - [Release notes](https://github.com/apollographql/apollo-server/releases) - [Changelog](https://github.com/apollographql/apollo-server/blob/main/CHANGELOG.md) - [Commits](https://github.com/apollographql/apollo-server/commits/apollo-server-express@3.6.5/packages/apollo-server-express) --- updated-dependencies: - dependency-name: apollo-server-express dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/yarn.lock b/yarn.lock index ef5d447dda..4195413f0e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7517,10 +7517,10 @@ apollo-datasource@^3.3.1: apollo-server-caching "^3.3.0" apollo-server-env "^4.2.1" -apollo-reporting-protobuf@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.0.tgz#2fc0f7508e488851eda8a6e7c8cc3b5a156ab44b" - integrity sha512-51Jwrg0NvHJfKz7TIGU8+Os3rUAqWtXeKRsRtKYtTeMSBPNhzz8UoGjAB3XyVmUXRE3IRmLtDPDRFL7qbxMI/w== +apollo-reporting-protobuf@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.1.tgz#8c8761f9ac4375fd8490262d6144057cec6ce0b3" + integrity sha512-tyvj3Vj71TCh6c8PtdHOLgHHBSJ05DF/A/Po3q8yfHTBkOPcOJZE/GGN/PT/pwKg7HHxKcAeHDw7+xciVvGx0w== dependencies: "@apollo/protobufjs" "1.2.2" @@ -7531,10 +7531,10 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" -apollo-server-core@^3.6.4: - version "3.6.4" - resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.4.tgz#dcf3925173a8e9a501ed3975654cb2ed58af3710" - integrity sha512-zttpu/3IeDGhRgIGK84z9HwTgvETDl9zntXiQ0G1tBJgOhDvehSkMiOmy+FKR1HW9+94ao1Olz6ZIyhP0dvzSg== +apollo-server-core@^3.6.4, apollo-server-core@^3.6.5: + version "3.6.5" + resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.5.tgz#f8a30bab49d7ccbd9500b85968accae0d8631927" + integrity sha512-9lOTHnJnPV4TiVwt4DMl3HDWGebHxoJIU2tonOuIkRxOUjwCjsDsHfkIrPA3vutmXIb7R3OPxh/mofdDpm7DjQ== dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" @@ -7542,12 +7542,12 @@ apollo-server-core@^3.6.4: "@graphql-tools/schema" "^8.0.0" "@josephg/resolvable" "^1.0.0" apollo-datasource "^3.3.1" - apollo-reporting-protobuf "^3.3.0" + apollo-reporting-protobuf "^3.3.1" apollo-server-caching "^3.3.0" apollo-server-env "^4.2.1" apollo-server-errors "^3.3.1" - apollo-server-plugin-base "^3.5.1" - apollo-server-types "^3.5.1" + apollo-server-plugin-base "^3.5.2" + apollo-server-types "^3.5.2" async-retry "^1.2.1" fast-json-stable-stringify "^2.1.0" graphql-tag "^2.11.0" @@ -7570,9 +7570,9 @@ apollo-server-errors@^3.3.1: integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== apollo-server-express@^3.0.0, apollo-server-express@^3.6.4: - version "3.6.4" - resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.4.tgz#759b64047a41068deb3af068ce02381404e3d6d0" - integrity sha512-lN73Ka7UZJINJzvMeRFIFn7898hGjTxVtRQwAzzmw5XSpWZZHZkTcAkoDxUs0GwU6h2LE14ogu2WJ4G8AZVl1Q== + version "3.6.5" + resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.5.tgz#e623ee6f2e2d4cc2b4075baf7624a899a21ec1a6" + integrity sha512-mV1Dif//BUq1WFlCWfaSlhsuxhcJ/gGD8HdQ6/s3JEspStS7SgmeSUIwJYl3vw8IA/8j7GNg/EINkc57x2UbdA== dependencies: "@types/accepts" "^1.3.5" "@types/body-parser" "1.19.2" @@ -7580,25 +7580,25 @@ apollo-server-express@^3.0.0, apollo-server-express@^3.6.4: "@types/express" "4.17.13" "@types/express-serve-static-core" "4.17.28" accepts "^1.3.5" - apollo-server-core "^3.6.4" - apollo-server-types "^3.5.1" + apollo-server-core "^3.6.5" + apollo-server-types "^3.5.2" body-parser "^1.19.0" cors "^2.8.5" parseurl "^1.3.3" -apollo-server-plugin-base@^3.5.1: - version "3.5.1" - resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.1.tgz#73fc1591522e36e32eff3d033975333e30cf1a7c" - integrity sha512-wgDHz3lLrCqpecDky3z6AOQ0vik0qs0Cya/Ti6n3ESYXJ9MdK3jE/QunATIrOYYJaa+NKl9V7YwU+/bojNfFuQ== +apollo-server-plugin-base@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.2.tgz#18a08353f5ea207a07f2c1e66dd7ef2335ce8c84" + integrity sha512-SwIf1waDmNDb0kmn57QR++InwK6Iv/X2slpm/aFIoqFBe91r6uJfakJvQZuh8dLEgk68gxqFsT8zHRpxBclE+g== dependencies: - apollo-server-types "^3.5.1" + apollo-server-types "^3.5.2" -apollo-server-types@^3.5.1: - version "3.5.1" - resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.1.tgz#73fc8aa82b3175fde3906fa3d6786ee4d3e8c982" - integrity sha512-zG7xLl4mmHuZMAYOfjWKHY/IC/GgIkJ3HnYuR7FRrnPpRA9Yt5Kf1M1rjm1Esuqzpb/dt8pM7cX40QaIQObCYQ== +apollo-server-types@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.2.tgz#903d499a70b9010764cbab4d704ddb8c086aa06f" + integrity sha512-vhcbIWsBkoNibABOym4AAPBoNDjokhjUQokKYdwZMeqrb850PMQdNJFrGyXT5onP408Ghv4O8PfgBuPQmeJhVQ== dependencies: - apollo-reporting-protobuf "^3.3.0" + apollo-reporting-protobuf "^3.3.1" apollo-server-caching "^3.3.0" apollo-server-env "^4.2.1" From 2e37989aa26bb7eefe20262f83ea286a616b21fb Mon Sep 17 00:00:00 2001 From: Suzanne Daniels Date: Wed, 23 Mar 2022 08:34:39 +0100 Subject: [PATCH 267/410] removing duplicated start lines Signed-off-by: Suzanne Daniels --- docs/overview/support.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/overview/support.md b/docs/overview/support.md index 98450e5add..9eb2700cc8 100644 --- a/docs/overview/support.md +++ b/docs/overview/support.md @@ -32,7 +32,6 @@ with your recording's information. Example: ```yaml --- ---- title: # name of the meetup date: February 23, 2022 # date, format: Month day, year. This is the index field. category: Meetup # Can be Event, Meetup, Webinar @@ -50,7 +49,6 @@ with your meetup's information. Example: ```yaml --- ---- title: # name of the meetup date: February 23, 2022 # date, format: Month day, year. This is the index field. category: Upcoming # Should be "Upcoming" From 1d1e052583a7c3177517e7a0ee4bf57794b09214 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 23 Mar 2022 10:05:51 +0100 Subject: [PATCH 268/410] We are 1.x now, so it's `minor` changeset Signed-off-by: blam --- .changeset/angry-pens-begin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/angry-pens-begin.md b/.changeset/angry-pens-begin.md index b8d6f80292..ed5bbf4c4e 100644 --- a/.changeset/angry-pens-begin.md +++ b/.changeset/angry-pens-begin.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-scaffolder-backend': patch +'@backstage/plugin-scaffolder-backend': minor --- Override default commit message and author details in GitLab action From b58ce42200d949d394134e9919a14afba9427417 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 23 Mar 2022 10:38:14 +0100 Subject: [PATCH 269/410] bump past vulnerable minimist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- cypress/yarn.lock | 6 +++--- microsite/yarn.lock | 6 +++--- storybook/yarn.lock | 6 +++--- yarn.lock | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cypress/yarn.lock b/cypress/yarn.lock index 96bc765d0d..f301e87d3a 100644 --- a/cypress/yarn.lock +++ b/cypress/yarn.lock @@ -907,9 +907,9 @@ minimatch@^3.0.4: brace-expansion "^1.1.7" minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== mkdirp@^0.5.4: version "0.5.5" diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 45143bafb4..e854dc9b09 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -4375,9 +4375,9 @@ minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2: brace-expansion "^1.1.7" minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== mixin-deep@^1.1.3, mixin-deep@^1.2.0: version "1.3.2" diff --git a/storybook/yarn.lock b/storybook/yarn.lock index deac652f9d..fabc3b643d 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -6016,9 +6016,9 @@ minimatch@^3.0.2, minimatch@^3.0.4: brace-expansion "^1.1.7" minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== minipass-collect@^1.0.2: version "1.0.2" diff --git a/yarn.lock b/yarn.lock index bfeb7fd87f..3da34cc881 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17809,9 +17809,9 @@ minimist-options@4.1.0, minimist-options@^4.0.2: kind-of "^6.0.3" minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== minimisted@^2.0.0: version "2.0.1" From aaacf4483419eb777d1e4691c6a3d70311e772d6 Mon Sep 17 00:00:00 2001 From: Suzanne Daniels Date: Wed, 23 Mar 2022 10:38:18 +0100 Subject: [PATCH 270/410] - Adding past community sessions - Updated upcoming session with better img - Fixing sort mechanism for on-demand - Improving text on /community - Updating instructions to reflect changes in sorting Signed-off-by: Suzanne Daniels --- docs/overview/support.md | 8 ++++---- microsite/data/on-demand/20211117-01.yaml | 7 +++++++ microsite/data/on-demand/20211118-01.yaml | 7 +++++++ microsite/data/on-demand/20211215-01.yaml | 7 +++++++ microsite/data/on-demand/20211216-01.yaml | 7 +++++++ microsite/data/on-demand/20220323.yaml | 2 +- microsite/pages/en/community.js | 4 ++-- microsite/pages/en/on-demand.js | 2 +- 8 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 microsite/data/on-demand/20211117-01.yaml create mode 100644 microsite/data/on-demand/20211118-01.yaml create mode 100644 microsite/data/on-demand/20211215-01.yaml create mode 100644 microsite/data/on-demand/20211216-01.yaml diff --git a/docs/overview/support.md b/docs/overview/support.md index 9eb2700cc8..5122a1c9ff 100644 --- a/docs/overview/support.md +++ b/docs/overview/support.md @@ -28,12 +28,12 @@ Check out the Backstage.io [Backstage Community Hub](https://backstage.io/commun To add a new recording to the [meetup page](https://backstage.io/on-demand) create a file in [`microsite/data/on-demand`](https://github.com/backstage/backstage/tree/master/microsite/data/on-demand) -with your recording's information. Example: +with your recording's information. Filenames should be in the format `yyyymmdd-xx.yaml`. The page will sort using the filename. Example file content: ```yaml --- title: # name of the meetup -date: February 23, 2022 # date, format: Month day, year. This is the index field. +date: February 23, 2022 # date, format: Month day, year. category: Meetup # Can be Event, Meetup, Webinar description: # description, summary youtubeUrl: # Url to youtube video @@ -45,12 +45,12 @@ youtubeImgUrl: # Url to the preview image, for Youtube this is the format: https To add an upcoming meetup to the [meetup page](https://backstage.io/on-demand) create a file in [`microsite/data/on-demand`](https://github.com/backstage/backstage/tree/master/microsite/data/on-demand) -with your meetup's information. Example: +with your meetup's information. Filenames should be in the format `yyyymmdd-xx.yaml`, the page will sort using the filename. Example file content: ```yaml --- title: # name of the meetup -date: February 23, 2022 # date, format: Month day, year. This is the index field. +date: February 23, 2022 # date, format: Month day, year. category: Upcoming # Should be "Upcoming" description: # description, summary youtubeUrl: # Url to youtube video diff --git a/microsite/data/on-demand/20211117-01.yaml b/microsite/data/on-demand/20211117-01.yaml new file mode 100644 index 0000000000..21410fc85f --- /dev/null +++ b/microsite/data/on-demand/20211117-01.yaml @@ -0,0 +1,7 @@ +--- +title: Community Sessions +date: November 17, 2021 +category: Meetup +description: At this month’s adopters session, get the scoop on Spotify’s plan for paid plugins, a first look at Box’s DevPortal, and answers to big questions, like “How will I know if Backstage will work at a large company like mine?” +youtubeUrl: https://youtu.be/apCDT3_DmFk +youtubeImgUrl: https://i1.ytimg.com/vi/apCDT3_DmFk/mqdefault.jpg diff --git a/microsite/data/on-demand/20211118-01.yaml b/microsite/data/on-demand/20211118-01.yaml new file mode 100644 index 0000000000..645e375757 --- /dev/null +++ b/microsite/data/on-demand/20211118-01.yaml @@ -0,0 +1,7 @@ +--- +title: Community Sessions +date: November 18, 2021 +category: Meetup +description: In the contributors track for this month’s community session, hear about upcoming deprecations, the fruits of Hacktoberfest, the future of both the Kubernetes plugin and the Tech Insights plugin, tips on contributing, and more. . +youtubeUrl: https://youtu.be/n1OWGwYAOiI +youtubeImgUrl: https://i1.ytimg.com/vi/n1OWGwYAOiI/mqdefault.jpg diff --git a/microsite/data/on-demand/20211215-01.yaml b/microsite/data/on-demand/20211215-01.yaml new file mode 100644 index 0000000000..ce51fe3a9c --- /dev/null +++ b/microsite/data/on-demand/20211215-01.yaml @@ -0,0 +1,7 @@ +--- +title: Community Sessions +date: December 15, 2021 +category: Meetup +description: At our final adopters session of 2021, the community received a grab bag of end-of-year treats, including eye-catching infographics, a presentation from finance startup Brex about their path to adopting Backstage, and tips on branding your Backstage portal. Plus, get your official Backstage Zoom background. But first up, a quick look back at the year that was. +youtubeUrl: https://youtu.be/0QMQYSTKAx0 +youtubeImgUrl: https://i1.ytimg.com/vi/0QMQYSTKAx0/mqdefault.jpg diff --git a/microsite/data/on-demand/20211216-01.yaml b/microsite/data/on-demand/20211216-01.yaml new file mode 100644 index 0000000000..9600a5f13b --- /dev/null +++ b/microsite/data/on-demand/20211216-01.yaml @@ -0,0 +1,7 @@ +--- +title: Community Sessions +date: December 16, 2021 +category: Meetup +description: At our final contributors session of 2021, see how the new Backstage Upgrade Helper works and enjoy smoother upgrades, hear updates from the maintainers, and meet our contributor of the month. As in the adopters session, first we celebrate the year’s milestones and share a few resources you can use to spread the word about Backstage. +youtubeUrl: https://youtu.be/nYjI2j-lWEM +youtubeImgUrl: https://i1.ytimg.com/vi/nYjI2j-lWEM/mqdefault.jpg diff --git a/microsite/data/on-demand/20220323.yaml b/microsite/data/on-demand/20220323.yaml index 4a55111c3e..d18c795bf1 100644 --- a/microsite/data/on-demand/20220323.yaml +++ b/microsite/data/on-demand/20220323.yaml @@ -4,6 +4,6 @@ date: March 23, 2022 category: Upcoming description: Join the maintainers and contributors for the Contributor Community Sessions youtubeUrl: https://youtu.be/evf_LV0KzIk -youtubeImgUrl: https://i1.ytimg.com/vi/evf_LV0KzIk/mqdefault.jpg +youtubeImgUrl: http://localhost:3000/img/b-sessions.png rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com eventUrl: https://github.com/backstage/community/issues diff --git a/microsite/pages/en/community.js b/microsite/pages/en/community.js index 35eb6d766c..e5a15d1bd2 100644 --- a/microsite/pages/en/community.js +++ b/microsite/pages/en/community.js @@ -22,7 +22,7 @@ const Background = props => { What's the use of having fun if you can't share it? Exactly. Join the vibrant community around the Backstage project. Be it on GitHub, social media, Discord... You'll find a welcoming - environment, to ensure this we follow the{' '} + environment. To ensure this, we follow the{' '} {' '} CNCF Code of Conduct @@ -74,7 +74,7 @@ const Background = props => { Backstage (Backstage of Backstage? Backerstage?). An open discussion with maintainers and contributors of Backstage. - Watch now + Meetups yaml.load(fs.readFileSync(`./data/on-demand/${file}`, 'utf8'))) - .sort((b, a) => a.date.toLowerCase().localeCompare(b.date.toLowerCase())); + .reverse(); const truncate = text => text.length > 170 ? text.substr(0, 170) + '...' : text; From 11045d68a9500ebf44fdba5527af2dc2245823ce Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 11:03:10 +0100 Subject: [PATCH 271/410] workflows: changeset feedback automation tweaks Signed-off-by: Patrik Oldsberg --- .github/workflows/automate_changeset_feedback.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index 468606709b..0a95c6a7d9 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -1,4 +1,4 @@ -name: Automate Changeset Feedback +name: Automate changeset feedback on: pull_request: types: @@ -29,9 +29,11 @@ jobs: - name: Post Feedback uses: actions/github-script@v5 + if: github.event.pull_request.user.login != 'backstage-service' env: ISSUE_NUMBER: ${{ github.event.pull_request.number }} with: + github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} script: | const owner = "backstage"; const repo = "backstage"; @@ -56,8 +58,8 @@ jobs: if (existingComment.body !== body) { console.log(`updating existing comment in #${issue_number}`); await github.rest.issues.updateComment({ - repo, owner, + repo, comment_id: existingComment.id, body, }); @@ -67,8 +69,8 @@ jobs: } else { console.log(`removing comment from #${issue_number}`); await github.rest.issues.deleteComment({ - repo, owner, + repo, comment_id: existingComment.id, body, }); @@ -76,8 +78,8 @@ jobs: } else if (body) { console.log(`creating comment for #${issue_number}`); await github.rest.issues.createComment({ - repo, owner, + repo, issue_number, body, }); From 70181cddd58e8589567c0f5a4bcae70c27d346c9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 12:43:03 +0100 Subject: [PATCH 272/410] workflows: skip changeset feedback back to bot account Signed-off-by: Patrik Oldsberg --- .github/workflows/automate_changeset_feedback.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index 0a95c6a7d9..f666978b77 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -7,6 +7,7 @@ on: permissions: issues: write + pull-requests: write jobs: feedback: @@ -33,7 +34,6 @@ jobs: env: ISSUE_NUMBER: ${{ github.event.pull_request.number }} with: - github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} script: | const owner = "backstage"; const repo = "backstage"; From 7cdc9ecc07f3ff44a791318d8abdedbf3eebae3b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 12:43:34 +0100 Subject: [PATCH 273/410] workflows: make changeset feedback diff only PR contents Signed-off-by: Patrik Oldsberg --- .github/workflows/automate_changeset_feedback.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index f666978b77..fff6e95071 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -16,17 +16,19 @@ jobs: steps: - uses: actions/checkout@v2 with: - ref: ${{ github.head_ref }} + # Fetch the commit that's merged into the base rather than the target ref + # This will let us diff only the contents of the PR, without fetching more history + ref: 'refs/pull/${{ github.event.pull_request.number }}/merge' - name: fetch base - run: git fetch origin ${{ github.base_ref }} + run: git fetch --depth 1 origin ${{ github.base_ref }} # We avoid using the in-source script since this workflow has elevated permissions that we don't want to expose - name: Generate Feedback id: generate-feedback run: | wget -O generate.js https://raw.githubusercontent.com/backstage/backstage/master/scripts/generate-changeset-feedback.js 1>&2 - node generate.js origin/${{ github.base_ref }} > feedback.txt + node generate.js FETCH_HEAD > feedback.txt - name: Post Feedback uses: actions/github-script@v5 From d392e27f5c0ec44d887ef92b1046161bab787941 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 12:44:00 +0100 Subject: [PATCH 274/410] workflows: changeset feedback no longer breaks when changesets are removed Signed-off-by: Patrik Oldsberg --- scripts/generate-changeset-feedback.js | 46 +++++++++++++++----------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/scripts/generate-changeset-feedback.js b/scripts/generate-changeset-feedback.js index ca29e15530..588b13654c 100644 --- a/scripts/generate-changeset-feedback.js +++ b/scripts/generate-changeset-feedback.js @@ -80,35 +80,41 @@ async function listPackages() { })); } -async function parseChangesets(filePaths) { +async function loadChangesets(filePaths) { const changesets = []; for (const filePath of filePaths) { if (!filePath.startsWith('.changeset/') || !filePath.endsWith('.md')) { continue; } - const content = await fs.promises.readFile(filePath, 'utf8'); - let lines = content.split(/\r?\n/); + try { + const content = await fs.promises.readFile(filePath, 'utf8'); + let lines = content.split(/\r?\n/); - lines = lines.slice(lines.findIndex(line => line === '---') + 1); - lines = lines.slice( - 0, - lines.findIndex(line => line === '---'), - ); + lines = lines.slice(lines.findIndex(line => line === '---') + 1); + lines = lines.slice( + 0, + lines.findIndex(line => line === '---'), + ); - const bumps = new Map(); - for (const line of lines) { - const match = line.match(/^'(.*)': (patch|minor|major)$/); - if (!match) { - throw new Error(`Invalid changeset line: ${line}`); + const bumps = new Map(); + for (const line of lines) { + const match = line.match(/^'(.*)': (patch|minor|major)$/); + if (!match) { + throw new Error(`Invalid changeset line: ${line}`); + } + + bumps.set(match[1], match[2]); } - bumps.set(match[1], match[2]); + changesets.push({ + filePath, + bumps, + }); + } catch (error) { + if (error.code !== 'ENOENT') { + throw error; + } } - - changesets.push({ - filePath, - bumps, - }); } return changesets; @@ -247,7 +253,7 @@ async function main() { const changedFiles = await listChangedFiles(diffRef); const packages = await listPackages(); - const changesets = await parseChangesets(changedFiles); + const changesets = await loadChangesets(changedFiles); const changedPackages = await listChangedPackages(changedFiles, packages); process.stderr.write( From a0941d5fc3f41f65df410ab18b9a1d2786845501 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 15:23:45 +0100 Subject: [PATCH 275/410] workflows: switch changeset feedback back to service account Signed-off-by: Patrik Oldsberg --- .github/workflows/automate_changeset_feedback.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index fff6e95071..7afa66d4b9 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -5,10 +5,6 @@ on: - opened - synchronize -permissions: - issues: write - pull-requests: write - jobs: feedback: if: github.repository == 'backstage/backstage' # prevent running on forks @@ -23,7 +19,7 @@ jobs: - name: fetch base run: git fetch --depth 1 origin ${{ github.base_ref }} - # We avoid using the in-source script since this workflow has elevated permissions that we don't want to expose + # We avoid using the in-source script just in case - name: Generate Feedback id: generate-feedback run: | @@ -36,6 +32,7 @@ jobs: env: ISSUE_NUMBER: ${{ github.event.pull_request.number }} with: + github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} script: | const owner = "backstage"; const repo = "backstage"; From b6178776a833de193fef1de72a0e41dced873fff Mon Sep 17 00:00:00 2001 From: Suzanne Daniels Date: Wed, 23 Mar 2022 16:42:39 +0100 Subject: [PATCH 276/410] - adding upcoming meetups - changing sort to sort the readdirfilesync - preparing /live page for adopters meetup - changing embed of livepage to correct domain - fix small typos - removing . . in recording 20211118 Signed-off-by: Suzanne Daniels --- microsite/data/on-demand/20211118-01.yaml | 2 +- microsite/data/on-demand/20220323.yaml | 2 +- microsite/data/on-demand/20220420-1.yaml | 9 +++++++++ microsite/data/on-demand/20220427-1.yaml | 9 +++++++++ microsite/pages/en/community.js | 4 ++-- microsite/pages/en/live.js | 4 ++-- microsite/pages/en/on-demand.js | 5 +++-- 7 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 microsite/data/on-demand/20220420-1.yaml create mode 100644 microsite/data/on-demand/20220427-1.yaml diff --git a/microsite/data/on-demand/20211118-01.yaml b/microsite/data/on-demand/20211118-01.yaml index 645e375757..754344a62e 100644 --- a/microsite/data/on-demand/20211118-01.yaml +++ b/microsite/data/on-demand/20211118-01.yaml @@ -2,6 +2,6 @@ title: Community Sessions date: November 18, 2021 category: Meetup -description: In the contributors track for this month’s community session, hear about upcoming deprecations, the fruits of Hacktoberfest, the future of both the Kubernetes plugin and the Tech Insights plugin, tips on contributing, and more. . +description: In the contributors track for this month’s community session, hear about upcoming deprecations, the fruits of Hacktoberfest, the future of both the Kubernetes plugin and the Tech Insights plugin, tips on contributing, and more. youtubeUrl: https://youtu.be/n1OWGwYAOiI youtubeImgUrl: https://i1.ytimg.com/vi/n1OWGwYAOiI/mqdefault.jpg diff --git a/microsite/data/on-demand/20220323.yaml b/microsite/data/on-demand/20220323.yaml index d18c795bf1..4306eaefdf 100644 --- a/microsite/data/on-demand/20220323.yaml +++ b/microsite/data/on-demand/20220323.yaml @@ -4,6 +4,6 @@ date: March 23, 2022 category: Upcoming description: Join the maintainers and contributors for the Contributor Community Sessions youtubeUrl: https://youtu.be/evf_LV0KzIk -youtubeImgUrl: http://localhost:3000/img/b-sessions.png +youtubeImgUrl: https://backstage.io/img/b-sessions.png rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com eventUrl: https://github.com/backstage/community/issues diff --git a/microsite/data/on-demand/20220420-1.yaml b/microsite/data/on-demand/20220420-1.yaml new file mode 100644 index 0000000000..a32402aa68 --- /dev/null +++ b/microsite/data/on-demand/20220420-1.yaml @@ -0,0 +1,9 @@ +--- +title: Adopters Community Sessions +date: April 20, 2022 +category: Upcoming +description: Adopters Community Session ✨. It's the monthly meetup where we all come together to listen to the latest maintainer updates, learn from each other about adopting, share exciting new demos or discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. +youtubeUrl: https://youtu.be/mFi_X58igzk +youtubeImgUrl: https://backstage.io/img/b-sessions.png +rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com +eventUrl: https://github.com/backstage/community/issues diff --git a/microsite/data/on-demand/20220427-1.yaml b/microsite/data/on-demand/20220427-1.yaml new file mode 100644 index 0000000000..f6b8873bb8 --- /dev/null +++ b/microsite/data/on-demand/20220427-1.yaml @@ -0,0 +1,9 @@ +--- +title: Contributor Community Sessions +date: April 27, 2022 +category: Upcoming +description: Join the maintainers and contributors for the Contributor Community Sessions +youtubeUrl: https://youtu.be/evf_LV0KzIk +youtubeImgUrl: https://backstage.io/img/b-sessions.png +rsvpUrl: https://calendar.google.com/calendar/embed?src=c_qup9gbhn9sqpuao6trttd8mk5s@group.calendar.google.com +eventUrl: https://github.com/backstage/community/issues diff --git a/microsite/pages/en/community.js b/microsite/pages/en/community.js index e5a15d1bd2..a6795e2c24 100644 --- a/microsite/pages/en/community.js +++ b/microsite/pages/en/community.js @@ -62,8 +62,8 @@ const Background = props => {
    Backstage Community Sessions is the monthly meetup where we all come together to listen to the latest maintainer updates, learn - from eachother about adopting, share exciting new demos or discuss - any relevat topic like developer effectiveness, developer + from each other about adopting, share exciting new demos or + discuss any relevant topic like developer effectiveness, developer experience, developer portals, etc. diff --git a/microsite/pages/en/live.js b/microsite/pages/en/live.js index 583ba5af10..0cde700697 100644 --- a/microsite/pages/en/live.js +++ b/microsite/pages/en/live.js @@ -36,7 +36,7 @@ const Background = props => { diff --git a/microsite/pages/en/on-demand.js b/microsite/pages/en/on-demand.js index 9fa58fa902..41a730205b 100644 --- a/microsite/pages/en/on-demand.js +++ b/microsite/pages/en/on-demand.js @@ -16,8 +16,9 @@ const { const ondemandDirectory = require('path').join(process.cwd(), 'data/on-demand'); const ondemandMetadata = fs .readdirSync(ondemandDirectory) - .map(file => yaml.load(fs.readFileSync(`./data/on-demand/${file}`, 'utf8'))) - .reverse(); + .sort() + .reverse() + .map(file => yaml.load(fs.readFileSync(`./data/on-demand/${file}`, 'utf8'))); const truncate = text => text.length > 170 ? text.substr(0, 170) + '...' : text; From 8c8bee47f4a74ea82049dd5c2006661807ee0fdd Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Tue, 8 Mar 2022 10:08:32 +0000 Subject: [PATCH 277/410] catalog-common: add CatalogEntityPermission convenience type Signed-off-by: Mike Lewis --- .changeset/rare-waves-hammer.md | 5 +++++ plugins/catalog-common/api-report.md | 5 +++++ plugins/catalog-common/src/index.ts | 1 + plugins/catalog-common/src/permissions.ts | 14 +++++++++++++- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .changeset/rare-waves-hammer.md diff --git a/.changeset/rare-waves-hammer.md b/.changeset/rare-waves-hammer.md new file mode 100644 index 0000000000..9981b20440 --- /dev/null +++ b/.changeset/rare-waves-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-common': patch +--- + +Add `CatalogEntityPermission` convenience type. diff --git a/plugins/catalog-common/api-report.md b/plugins/catalog-common/api-report.md index 12ad6af751..c15cbae103 100644 --- a/plugins/catalog-common/api-report.md +++ b/plugins/catalog-common/api-report.md @@ -29,6 +29,11 @@ export interface CatalogEntityDocument extends IndexableDocument { type: string; } +// @alpha +export type CatalogEntityPermission = ResourcePermission< + typeof RESOURCE_TYPE_CATALOG_ENTITY +>; + // @alpha export const catalogEntityReadPermission: ResourcePermission<'catalog-entity'>; diff --git a/plugins/catalog-common/src/index.ts b/plugins/catalog-common/src/index.ts index 08184eb871..dfa90c448b 100644 --- a/plugins/catalog-common/src/index.ts +++ b/plugins/catalog-common/src/index.ts @@ -31,5 +31,6 @@ export { catalogLocationCreatePermission, catalogLocationDeletePermission, } from './permissions'; +export type { CatalogEntityPermission } from './permissions'; export * from './search'; diff --git a/plugins/catalog-common/src/permissions.ts b/plugins/catalog-common/src/permissions.ts index 51a15bb85e..aa95e8c00f 100644 --- a/plugins/catalog-common/src/permissions.ts +++ b/plugins/catalog-common/src/permissions.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { createPermission } from '@backstage/plugin-permission-common'; +import { + createPermission, + ResourcePermission, +} from '@backstage/plugin-permission-common'; /** * Permission resource type which corresponds to catalog entities. @@ -24,6 +27,15 @@ import { createPermission } from '@backstage/plugin-permission-common'; */ export const RESOURCE_TYPE_CATALOG_ENTITY = 'catalog-entity'; +/** + * Convenience type for catalog entity + * {@link @backstage/plugin-permission-common#ResourcePermission}s. + * @alpha + */ +export type CatalogEntityPermission = ResourcePermission< + typeof RESOURCE_TYPE_CATALOG_ENTITY +>; + /** * This permission is used to authorize actions that involve reading one or more * entities from the catalog. From 0ffd88a90e06f3fa12ae3ffc32da9d4ec9bda432 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Mon, 7 Mar 2022 17:38:17 +0000 Subject: [PATCH 278/410] catalog-react: require CatalogEntityPermission in useEntityPermission Now that we have stricter typing for permissions, we can restrict the useEntityPermission hook to only be used with permissions of type `CatalogEntityPermission`. Signed-off-by: Mike Lewis --- .changeset/clever-donuts-teach.md | 5 +++++ plugins/catalog-react/api-report.md | 4 ++-- plugins/catalog-react/package.json | 1 + plugins/catalog-react/src/hooks/useEntityPermission.ts | 6 +++--- 4 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 .changeset/clever-donuts-teach.md diff --git a/.changeset/clever-donuts-teach.md b/.changeset/clever-donuts-teach.md new file mode 100644 index 0000000000..eb828dfa4e --- /dev/null +++ b/.changeset/clever-donuts-teach.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Prevent permissions with types other than `CatalogEntityPermission` from being used with the `useEntityPermission` hook. diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index b90072beba..e25c3c92bd 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -8,6 +8,7 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { CATALOG_FILTER_EXISTS } from '@backstage/catalog-client'; import { CatalogApi } from '@backstage/catalog-client'; +import { CatalogEntityPermission } from '@backstage/plugin-catalog-common'; import { ComponentEntity } from '@backstage/catalog-model'; import { ComponentProps } from 'react'; import { CompoundEntityRef } from '@backstage/catalog-model'; @@ -16,7 +17,6 @@ import { IconButton } from '@material-ui/core'; import { LinkProps } from '@backstage/core-components'; import { Observable } from '@backstage/types'; import { Overrides } from '@material-ui/core/styles/overrides'; -import { Permission } from '@backstage/plugin-permission-common'; import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { ReactNode } from 'react'; @@ -489,7 +489,7 @@ export function useEntityOwnership(): { }; // @alpha -export function useEntityPermission(permission: Permission): { +export function useEntityPermission(permission: CatalogEntityPermission): { loading: boolean; allowed: boolean; error?: Error; diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 336052a88e..62b101d909 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -40,6 +40,7 @@ "@backstage/core-plugin-api": "^1.0.0", "@backstage/errors": "^1.0.0", "@backstage/integration": "^1.0.1-next.0", + "@backstage/plugin-catalog-common": "^1.0.1-next.0", "@backstage/plugin-permission-common": "^0.5.3", "@backstage/plugin-permission-react": "^0.3.4", "@backstage/theme": "^0.2.15", diff --git a/plugins/catalog-react/src/hooks/useEntityPermission.ts b/plugins/catalog-react/src/hooks/useEntityPermission.ts index 55d863726e..bd8f565ecb 100644 --- a/plugins/catalog-react/src/hooks/useEntityPermission.ts +++ b/plugins/catalog-react/src/hooks/useEntityPermission.ts @@ -15,7 +15,7 @@ */ import { stringifyEntityRef } from '@backstage/catalog-model'; -import { Permission } from '@backstage/plugin-permission-common'; +import { CatalogEntityPermission } from '@backstage/plugin-catalog-common'; import { usePermission } from '@backstage/plugin-permission-react'; import { useAsyncEntity } from './useEntity'; @@ -23,14 +23,14 @@ import { useAsyncEntity } from './useEntity'; * A thin wrapper around the * {@link @backstage/plugin-permission-react#usePermission} hook which uses the * current entity in context to make an authorization request for the given - * permission. + * {@link @backstage/plugin-catalog-common#CatalogEntityPermission}. * * Note: this hook blocks the permission request until the entity has loaded in * context. If you have the entityRef and need concurrent requests, use the * `usePermission` hook directly. * @alpha */ -export function useEntityPermission(permission: Permission): { +export function useEntityPermission(permission: CatalogEntityPermission): { loading: boolean; allowed: boolean; error?: Error; From 8cb7acd781aa2a424cfa7870065b53d43ffd36d5 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Fri, 11 Mar 2022 09:21:58 +0000 Subject: [PATCH 279/410] catalog-react: stop using CatalogEntityPermission convenience type There's currently an issue with importing alpha exports from other packages in the monorepo. This works around the issue for now by skipping the use of the `CatalogEntityPermission` convenience type, using `ResourcePermission<'catalog-entity'>` directly instead. cf. https://github.com/backstage/backstage/pull/10128 Signed-off-by: Mike Lewis --- .changeset/clever-donuts-teach.md | 2 +- plugins/catalog-react/api-report.md | 6 ++++-- plugins/catalog-react/src/hooks/useEntityPermission.ts | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.changeset/clever-donuts-teach.md b/.changeset/clever-donuts-teach.md index eb828dfa4e..2304de1137 100644 --- a/.changeset/clever-donuts-teach.md +++ b/.changeset/clever-donuts-teach.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog-react': patch --- -Prevent permissions with types other than `CatalogEntityPermission` from being used with the `useEntityPermission` hook. +Prevent permissions with types other than `ResourcePermission<'catalog-entity'>` from being used with the `useEntityPermission` hook. diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index e25c3c92bd..71ba6452da 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -8,7 +8,6 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { CATALOG_FILTER_EXISTS } from '@backstage/catalog-client'; import { CatalogApi } from '@backstage/catalog-client'; -import { CatalogEntityPermission } from '@backstage/plugin-catalog-common'; import { ComponentEntity } from '@backstage/catalog-model'; import { ComponentProps } from 'react'; import { CompoundEntityRef } from '@backstage/catalog-model'; @@ -20,6 +19,7 @@ import { Overrides } from '@material-ui/core/styles/overrides'; import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { ReactNode } from 'react'; +import { ResourcePermission } from '@backstage/plugin-permission-common'; import { RouteRef } from '@backstage/core-plugin-api'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { StyleRules } from '@material-ui/core/styles/withStyles'; @@ -489,7 +489,9 @@ export function useEntityOwnership(): { }; // @alpha -export function useEntityPermission(permission: CatalogEntityPermission): { +export function useEntityPermission( + permission: ResourcePermission<'catalog-entity'>, +): { loading: boolean; allowed: boolean; error?: Error; diff --git a/plugins/catalog-react/src/hooks/useEntityPermission.ts b/plugins/catalog-react/src/hooks/useEntityPermission.ts index bd8f565ecb..e9fdbaaa6a 100644 --- a/plugins/catalog-react/src/hooks/useEntityPermission.ts +++ b/plugins/catalog-react/src/hooks/useEntityPermission.ts @@ -15,7 +15,7 @@ */ import { stringifyEntityRef } from '@backstage/catalog-model'; -import { CatalogEntityPermission } from '@backstage/plugin-catalog-common'; +import { ResourcePermission } from '@backstage/plugin-permission-common'; import { usePermission } from '@backstage/plugin-permission-react'; import { useAsyncEntity } from './useEntity'; @@ -30,7 +30,9 @@ import { useAsyncEntity } from './useEntity'; * `usePermission` hook directly. * @alpha */ -export function useEntityPermission(permission: CatalogEntityPermission): { +export function useEntityPermission( + permission: ResourcePermission<'catalog-entity'>, +): { loading: boolean; allowed: boolean; error?: Error; From 146ea2117b4eff25ce0cf174347710719a6985a5 Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Fri, 18 Mar 2022 14:26:16 +0000 Subject: [PATCH 280/410] catalog-common: mention that CatalogEntityPermission type is alpha in changeset Signed-off-by: MT Lewis --- .changeset/rare-waves-hammer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/rare-waves-hammer.md b/.changeset/rare-waves-hammer.md index 9981b20440..5b9f7c845d 100644 --- a/.changeset/rare-waves-hammer.md +++ b/.changeset/rare-waves-hammer.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog-common': patch --- -Add `CatalogEntityPermission` convenience type. +Add `@alpha` `CatalogEntityPermission` convenience type, available for import from `@backstage/plugin-catalog-common/alpha`. From 1e0dbd4fb5bcd627488af70dbe7c9bd2680fd925 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Tue, 22 Mar 2022 20:11:20 -0400 Subject: [PATCH 281/410] Add todo Signed-off-by: Joe Porpeglia --- plugins/catalog-react/src/hooks/useEntityPermission.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/catalog-react/src/hooks/useEntityPermission.ts b/plugins/catalog-react/src/hooks/useEntityPermission.ts index e9fdbaaa6a..e1a8d2e420 100644 --- a/plugins/catalog-react/src/hooks/useEntityPermission.ts +++ b/plugins/catalog-react/src/hooks/useEntityPermission.ts @@ -31,6 +31,8 @@ import { useAsyncEntity } from './useEntity'; * @alpha */ export function useEntityPermission( + // TODO(joeporpeglia) Replace with `CatalogEntityPermission` when the issue described in + // https://github.com/backstage/backstage/pull/10128 is fixed. permission: ResourcePermission<'catalog-entity'>, ): { loading: boolean; From 30f98843591195ac92b7f1ba9292fd81572881d1 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Tue, 8 Mar 2022 09:48:18 +0000 Subject: [PATCH 282/410] search: check for non-resource permissions when authorizing results Now that we can differentiate between ResourcePermissions and other kinds of permissions, we can skip authorizing result-by-result when the permission for a given document type is not a ResourcePermission. Signed-off-by: Mike Lewis --- .changeset/big-mayflies-sin.md | 5 +++++ .../src/service/AuthorizedSearchEngine.test.ts | 4 ++++ .../search-backend/src/service/AuthorizedSearchEngine.ts | 7 ++++++- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/big-mayflies-sin.md diff --git a/.changeset/big-mayflies-sin.md b/.changeset/big-mayflies-sin.md new file mode 100644 index 0000000000..6aa18fc9c5 --- /dev/null +++ b/.changeset/big-mayflies-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search-backend': patch +--- + +Check for non-resource permissions when authorizing result-by-result in AuthorizedSearchEngine. diff --git a/plugins/search-backend/src/service/AuthorizedSearchEngine.test.ts b/plugins/search-backend/src/service/AuthorizedSearchEngine.test.ts index 76b3cf5184..4198730947 100644 --- a/plugins/search-backend/src/service/AuthorizedSearchEngine.test.ts +++ b/plugins/search-backend/src/service/AuthorizedSearchEngine.test.ts @@ -82,24 +82,28 @@ describe('AuthorizedSearchEngine', () => { visibilityPermission: createPermission({ name: 'search.users.read', attributes: { action: 'read' }, + resourceType: 'test-user', }), }, [typeTemplates]: { visibilityPermission: createPermission({ name: 'search.templates.read', attributes: { action: 'read' }, + resourceType: 'test-template', }), }, [typeServices]: { visibilityPermission: createPermission({ name: 'search.services.read', attributes: { action: 'read' }, + resourceType: 'test-service', }), }, [typeGroups]: { visibilityPermission: createPermission({ name: 'search.groups.read', attributes: { action: 'read' }, + resourceType: 'test-group', }), }, }; diff --git a/plugins/search-backend/src/service/AuthorizedSearchEngine.ts b/plugins/search-backend/src/service/AuthorizedSearchEngine.ts index 2a5fc471f5..cba5f0eca8 100644 --- a/plugins/search-backend/src/service/AuthorizedSearchEngine.ts +++ b/plugins/search-backend/src/service/AuthorizedSearchEngine.ts @@ -21,6 +21,7 @@ import { AuthorizeDecision, AuthorizeQuery, AuthorizeResult, + isResourcePermission, PermissionAuthorizer, } from '@backstage/plugin-permission-common'; import { @@ -197,7 +198,11 @@ export class AuthorizedSearchEngine implements SearchEngine { const permission = this.types[result.type]?.visibilityPermission; const resourceRef = result.document.authorization?.resourceRef; - if (!permission || !resourceRef) { + if ( + !permission || + !isResourcePermission(permission) || + !resourceRef + ) { return result; } From 9da18e47153c412ae254b83428007fefbdf5ab0c Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Fri, 18 Mar 2022 14:17:46 +0000 Subject: [PATCH 283/410] search: throw error for unexpected non-resource permissions when authorizing result-by-result We only reach this point in the code for types where the initial authorization returned CONDITIONAL -- ALLOWs return early immediately above, and types where the decision was DENY get filtered out entirely when querying. This means the call to isResourcePermission here is mostly about narrowing the types, since the only way for it to be false is if the PermissionPolicy returned a CONDITIONAL decision for a non-resource permission, which can't happen - it would throw an error during validation in the permission-backend. Signed-off-by: MT Lewis --- .../src/service/AuthorizedSearchEngine.ts | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/plugins/search-backend/src/service/AuthorizedSearchEngine.ts b/plugins/search-backend/src/service/AuthorizedSearchEngine.ts index cba5f0eca8..3e7dc6e147 100644 --- a/plugins/search-backend/src/service/AuthorizedSearchEngine.ts +++ b/plugins/search-backend/src/service/AuthorizedSearchEngine.ts @@ -198,14 +198,27 @@ export class AuthorizedSearchEngine implements SearchEngine { const permission = this.types[result.type]?.visibilityPermission; const resourceRef = result.document.authorization?.resourceRef; - if ( - !permission || - !isResourcePermission(permission) || - !resourceRef - ) { + if (!permission || !resourceRef) { return result; } + // We only reach this point in the code for types where the initial + // authorization returned CONDITIONAL -- ALLOWs return early + // immediately above, and types where the decision was DENY get + // filtered out entirely when querying. + // + // This means the call to isResourcePermission here is mostly about + // narrowing the type of permission - the only way to get here with a + // non-resource permission is if the PermissionPolicy returns a + // CONDITIONAL decision for a non-resource permission, which can't + // happen - it would throw an error during validation in the + // permission-backend. + if (!isResourcePermission(permission)) { + throw new Error( + `Unexpected conditional decision returned for non-resource permission "${permission.name}"`, + ); + } + return authorizer .load({ permission, resourceRef }) .then(decision => From 5bdcb8c45d945ce23eae813e83b797f1c9abd013 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Mon, 7 Mar 2022 17:39:37 +0000 Subject: [PATCH 284/410] permission-react: more restrictive typing for usePermission and PermissionedRoute Signed-off-by: Mike Lewis --- .changeset/blue-beers-kiss.md | 5 +++ plugins/permission-react/api-report.md | 23 +++++++---- .../src/components/PermissionedRoute.tsx | 26 ++++++++++--- .../src/hooks/usePermission.ts | 38 ++++++++++++++----- 4 files changed, 70 insertions(+), 22 deletions(-) create mode 100644 .changeset/blue-beers-kiss.md diff --git a/.changeset/blue-beers-kiss.md b/.changeset/blue-beers-kiss.md new file mode 100644 index 0000000000..b05f99ebc9 --- /dev/null +++ b/.changeset/blue-beers-kiss.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-react': minor +--- + +**BREAKING**: More restrictive typing for `usePermission` hook and `PermissionedRoute` component. It's no longer possible to pass a `resourceRef` unless the permission is of type `ResourcPermission`. diff --git a/plugins/permission-react/api-report.md b/plugins/permission-react/api-report.md index 1bcb01fa32..81d9e09743 100644 --- a/plugins/permission-react/api-report.md +++ b/plugins/permission-react/api-report.md @@ -12,6 +12,7 @@ import { DiscoveryApi } from '@backstage/core-plugin-api'; import { IdentityApi } from '@backstage/core-plugin-api'; import { Permission } from '@backstage/plugin-permission-common'; import { ReactElement } from 'react'; +import { ResourcePermission } from '@backstage/plugin-permission-common'; import { Route } from 'react-router'; // @public (undocumented) @@ -44,17 +45,25 @@ export const permissionApiRef: ApiRef; // @public export const PermissionedRoute: ( props: ComponentProps & { - permission: Permission; - resourceRef?: string; errorComponent?: ReactElement | null; - }, + } & ( + | { + permission: Exclude; + resourceRef?: never; + } + | { + permission: ResourcePermission; + resourceRef: string | undefined; + } + ), ) => JSX.Element; // @public -export const usePermission: ( - permission: Permission, - resourceRef?: string | undefined, -) => AsyncPermissionResult; +export function usePermission( + ...[permission, resourceRef]: + | [ResourcePermission, string | undefined] + | [Exclude] +): AsyncPermissionResult; // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/permission-react/src/components/PermissionedRoute.tsx b/plugins/permission-react/src/components/PermissionedRoute.tsx index 76017308aa..92b1830eca 100644 --- a/plugins/permission-react/src/components/PermissionedRoute.tsx +++ b/plugins/permission-react/src/components/PermissionedRoute.tsx @@ -18,7 +18,11 @@ import React, { ComponentProps, ReactElement } from 'react'; import { Route } from 'react-router'; import { useApp } from '@backstage/core-plugin-api'; import { usePermission } from '../hooks'; -import { Permission } from '@backstage/plugin-permission-common'; +import { + isResourcePermission, + Permission, + ResourcePermission, +} from '@backstage/plugin-permission-common'; /** * Returns a React Router Route which only renders the element when authorized. If unauthorized, the Route will render a @@ -28,13 +32,25 @@ import { Permission } from '@backstage/plugin-permission-common'; */ export const PermissionedRoute = ( props: ComponentProps & { - permission: Permission; - resourceRef?: string; errorComponent?: ReactElement | null; - }, + } & ( + | { + permission: Exclude; + resourceRef?: never; + } + | { + permission: ResourcePermission; + resourceRef: string | undefined; + } + ), ) => { const { permission, resourceRef, errorComponent, ...otherProps } = props; - const permissionResult = usePermission(permission, resourceRef); + + const permissionResult = usePermission( + ...(isResourcePermission(permission) + ? [permission, resourceRef] + : [permission]), + ); const app = useApp(); const { NotFoundErrorPage } = app.getComponents(); diff --git a/plugins/permission-react/src/hooks/usePermission.ts b/plugins/permission-react/src/hooks/usePermission.ts index cc27f82c59..f2895ffdcb 100644 --- a/plugins/permission-react/src/hooks/usePermission.ts +++ b/plugins/permission-react/src/hooks/usePermission.ts @@ -17,8 +17,11 @@ import { useApi } from '@backstage/core-plugin-api'; import { permissionApiRef } from '../apis'; import { + AuthorizeQuery, AuthorizeResult, + isResourcePermission, Permission, + ResourcePermission, } from '@backstage/plugin-permission-common'; import useSWR from 'swr'; @@ -30,25 +33,40 @@ export type AsyncPermissionResult = { }; /** - * React hook utility for authorization. Given a - * {@link @backstage/plugin-permission-common#Permission} and an optional - * resourceRef, it will return whether or not access is allowed (for the given - * resource, if resourceRef is provided). See + * React hook utility for authorization. Given either a non-resource + * {@link @backstage/plugin-permission-common#Permission} or a + * {@link @backstage/plugin-permission-common#ResourcePermission} and an + * optional resourceRef, it will return whether or not access is allowed (for + * the given resource, if resourceRef is provided). See * {@link @backstage/plugin-permission-common/PermissionClient#authorize} for * more details. * + * The resourceRef parameter is optional to allow calling this hook with an + * entity that might be loading asynchronously, but when resourceRef is not + * supplied, the value of `allowed` will always be false. + * * Note: This hook uses stale-while-revalidate to help avoid flicker in UI * elements that would be conditionally rendered based on the `allowed` result * of this hook. * @public */ -export const usePermission = ( - permission: Permission, - resourceRef?: string, -): AsyncPermissionResult => { +export function usePermission( + ...[permission, resourceRef]: + | [ResourcePermission, string | undefined] + | [Exclude] +): AsyncPermissionResult { const permissionApi = useApi(permissionApiRef); const { data, error } = useSWR({ permission, resourceRef }, async args => { - const { result } = await permissionApi.authorize(args); + // We could make the resourceRef parameter required to avoid this check, but + // it would make using this hook difficult in situations where the entity + // must be asynchronously loaded, so instead we short-circuit to a deny when + // no resourceRef is supplied, on the assumption that the resourceRef is + // still loading outside the hook. + if (isResourcePermission(args.permission) && !args.resourceRef) { + return AuthorizeResult.DENY; + } + + const { result } = await permissionApi.authorize(args as AuthorizeQuery); return result; }); @@ -59,4 +77,4 @@ export const usePermission = ( return { loading: true, allowed: false }; } return { loading: false, allowed: data === AuthorizeResult.ALLOW }; -}; +} From d88b5b3009825614412c311caf24514c731fb35a Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Tue, 15 Mar 2022 10:52:53 +0000 Subject: [PATCH 285/410] permission-react: fix changeset typo Co-authored-by: Joe Porpeglia Signed-off-by: MT Lewis --- .changeset/blue-beers-kiss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/blue-beers-kiss.md b/.changeset/blue-beers-kiss.md index b05f99ebc9..15ea58efb4 100644 --- a/.changeset/blue-beers-kiss.md +++ b/.changeset/blue-beers-kiss.md @@ -2,4 +2,4 @@ '@backstage/plugin-permission-react': minor --- -**BREAKING**: More restrictive typing for `usePermission` hook and `PermissionedRoute` component. It's no longer possible to pass a `resourceRef` unless the permission is of type `ResourcPermission`. +**BREAKING**: More restrictive typing for `usePermission` hook and `PermissionedRoute` component. It's no longer possible to pass a `resourceRef` unless the permission is of type `ResourcePermission`. From 91703e8086287a882d1fdec8d2176da557bb0ec5 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Wed, 16 Mar 2022 17:14:07 -0400 Subject: [PATCH 286/410] permission-react: use object instead of tuple for usePermission args Co-authored-by: Mike Lewis Signed-off-by: Joe Porpeglia --- .../src/hooks/useEntityPermission.ts | 6 +++--- .../src/components/PermissionedRoute.tsx | 6 +++--- .../src/hooks/usePermission.ts | 19 ++++++++++++++----- .../ScaffolderPage/ScaffolderPage.tsx | 4 +++- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/plugins/catalog-react/src/hooks/useEntityPermission.ts b/plugins/catalog-react/src/hooks/useEntityPermission.ts index e1a8d2e420..3a2c12ff36 100644 --- a/plugins/catalog-react/src/hooks/useEntityPermission.ts +++ b/plugins/catalog-react/src/hooks/useEntityPermission.ts @@ -48,10 +48,10 @@ export function useEntityPermission( allowed, loading: loadingPermission, error: permissionError, - } = usePermission( + } = usePermission({ permission, - entity ? stringifyEntityRef(entity) : undefined, - ); + resourceRef: entity ? stringifyEntityRef(entity) : undefined, + }); if (loadingEntity || loadingPermission) { return { loading: true, allowed: false }; diff --git a/plugins/permission-react/src/components/PermissionedRoute.tsx b/plugins/permission-react/src/components/PermissionedRoute.tsx index 92b1830eca..dd39c5bb4f 100644 --- a/plugins/permission-react/src/components/PermissionedRoute.tsx +++ b/plugins/permission-react/src/components/PermissionedRoute.tsx @@ -47,9 +47,9 @@ export const PermissionedRoute = ( const { permission, resourceRef, errorComponent, ...otherProps } = props; const permissionResult = usePermission( - ...(isResourcePermission(permission) - ? [permission, resourceRef] - : [permission]), + isResourcePermission(permission) + ? { permission, resourceRef } + : { permission }, ); const app = useApp(); const { NotFoundErrorPage } = app.getComponents(); diff --git a/plugins/permission-react/src/hooks/usePermission.ts b/plugins/permission-react/src/hooks/usePermission.ts index f2895ffdcb..6a00e07663 100644 --- a/plugins/permission-react/src/hooks/usePermission.ts +++ b/plugins/permission-react/src/hooks/usePermission.ts @@ -32,6 +32,17 @@ export type AsyncPermissionResult = { error?: Error; }; +/** @public */ +export type UsePermissionProps = + | { + permission: Exclude; + resourceRef?: never; + } + | { + permission: ResourcePermission; + resourceRef: string | undefined; + }; + /** * React hook utility for authorization. Given either a non-resource * {@link @backstage/plugin-permission-common#Permission} or a @@ -41,7 +52,7 @@ export type AsyncPermissionResult = { * {@link @backstage/plugin-permission-common/PermissionClient#authorize} for * more details. * - * The resourceRef parameter is optional to allow calling this hook with an + * The resourceRef field is optional to allow calling this hook with an * entity that might be loading asynchronously, but when resourceRef is not * supplied, the value of `allowed` will always be false. * @@ -51,12 +62,10 @@ export type AsyncPermissionResult = { * @public */ export function usePermission( - ...[permission, resourceRef]: - | [ResourcePermission, string | undefined] - | [Exclude] + props: UsePermissionProps, ): AsyncPermissionResult { const permissionApi = useApi(permissionApiRef); - const { data, error } = useSWR({ permission, resourceRef }, async args => { + const { data, error } = useSWR(props, async (args: UsePermissionProps) => { // We could make the resourceRef parameter required to avoid this check, but // it would make using this hook difficult in situations where the entity // must be asynchronously loaded, so instead we short-circuit to a deny when diff --git a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx index a1ceec194d..a68e320c13 100644 --- a/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx +++ b/plugins/scaffolder/src/components/ScaffolderPage/ScaffolderPage.tsx @@ -63,7 +63,9 @@ export const ScaffolderPageContents = ({ }, }; - const { allowed } = usePermission(catalogEntityCreatePermission); + const { allowed } = usePermission({ + permission: catalogEntityCreatePermission, + }); return ( From 8c6129d3e09f168a035d092bdc1107d7408b101c Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Thu, 17 Mar 2022 12:16:35 +0000 Subject: [PATCH 287/410] permission-react: inline parameter type to clean up the api report a bit Signed-off-by: MT Lewis --- plugins/permission-react/api-report.md | 12 +++++++--- .../src/hooks/usePermission.ts | 23 ++++++++----------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/plugins/permission-react/api-report.md b/plugins/permission-react/api-report.md index 81d9e09743..6b66376cb7 100644 --- a/plugins/permission-react/api-report.md +++ b/plugins/permission-react/api-report.md @@ -60,9 +60,15 @@ export const PermissionedRoute: ( // @public export function usePermission( - ...[permission, resourceRef]: - | [ResourcePermission, string | undefined] - | [Exclude] + input: + | { + permission: Exclude; + resourceRef?: never; + } + | { + permission: ResourcePermission; + resourceRef: string | undefined; + }, ): AsyncPermissionResult; // (No @packageDocumentation comment for this package) diff --git a/plugins/permission-react/src/hooks/usePermission.ts b/plugins/permission-react/src/hooks/usePermission.ts index 6a00e07663..1e7f45129d 100644 --- a/plugins/permission-react/src/hooks/usePermission.ts +++ b/plugins/permission-react/src/hooks/usePermission.ts @@ -32,17 +32,6 @@ export type AsyncPermissionResult = { error?: Error; }; -/** @public */ -export type UsePermissionProps = - | { - permission: Exclude; - resourceRef?: never; - } - | { - permission: ResourcePermission; - resourceRef: string | undefined; - }; - /** * React hook utility for authorization. Given either a non-resource * {@link @backstage/plugin-permission-common#Permission} or a @@ -62,10 +51,18 @@ export type UsePermissionProps = * @public */ export function usePermission( - props: UsePermissionProps, + input: + | { + permission: Exclude; + resourceRef?: never; + } + | { + permission: ResourcePermission; + resourceRef: string | undefined; + }, ): AsyncPermissionResult { const permissionApi = useApi(permissionApiRef); - const { data, error } = useSWR(props, async (args: UsePermissionProps) => { + const { data, error } = useSWR(input, async (args: typeof input) => { // We could make the resourceRef parameter required to avoid this check, but // it would make using this hook difficult in situations where the entity // must be asynchronously loaded, so instead we short-circuit to a deny when From 3e0bbeda8b45e6131424bb012bed318b21d29510 Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Thu, 17 Mar 2022 12:16:48 +0000 Subject: [PATCH 288/410] permission-react: fix usePermission tests Signed-off-by: MT Lewis --- plugins/permission-react/src/hooks/usePermission.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/permission-react/src/hooks/usePermission.test.tsx b/plugins/permission-react/src/hooks/usePermission.test.tsx index f67f961dd2..2862b10f96 100644 --- a/plugins/permission-react/src/hooks/usePermission.test.tsx +++ b/plugins/permission-react/src/hooks/usePermission.test.tsx @@ -31,7 +31,7 @@ const permission = createPermission({ }); const TestComponent: FC = () => { - const { loading, allowed, error } = usePermission(permission); + const { loading, allowed, error } = usePermission({ permission }); return (
    {loading && 'loading'} From c84d4ad37326cc0dba88615d8952b639768c346b Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Tue, 22 Mar 2022 11:02:34 -0400 Subject: [PATCH 289/410] Fix usePermission usage Signed-off-by: Joe Porpeglia --- .../src/next/TemplateListPage/RegisterExistingButton.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.tsx b/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.tsx index 8269602703..16e0a355a3 100644 --- a/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.tsx +++ b/plugins/scaffolder/src/next/TemplateListPage/RegisterExistingButton.tsx @@ -39,7 +39,9 @@ export type RegisterExistingButtonProps = { */ export const RegisterExistingButton = (props: RegisterExistingButtonProps) => { const { title, to } = props; - const { allowed } = usePermission(catalogEntityCreatePermission); + const { allowed } = usePermission({ + permission: catalogEntityCreatePermission, + }); const isXSScreen = useMediaQuery(theme => theme.breakpoints.down('xs'), ); From 4431873583145df8d6c56f7fcccac5c878e308e0 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Wed, 23 Mar 2022 15:39:52 -0400 Subject: [PATCH 290/410] Add changeset Signed-off-by: Joe Porpeglia --- .changeset/thin-lizards-battle.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/thin-lizards-battle.md diff --git a/.changeset/thin-lizards-battle.md b/.changeset/thin-lizards-battle.md new file mode 100644 index 0000000000..de3658f042 --- /dev/null +++ b/.changeset/thin-lizards-battle.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Update `usePermission` usage. From e704667f01167eb9fc727bb9911c494df1dccd4a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 23:54:51 +0100 Subject: [PATCH 291/410] workflows: switch changeset feedback to pull_request_target Signed-off-by: Patrik Oldsberg --- .../workflows/automate_changeset_feedback.yml | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index 7afa66d4b9..5e42695f1f 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -1,9 +1,19 @@ name: Automate changeset feedback on: - pull_request: - types: - - opened - - synchronize + pull_request_target: + +permissions: + pull-requests: write + actions: none + checks: none + contents: none + deployments: none + issues: none + packages: none + pages: none + repository-projects: none + security-events: none + statuses: none jobs: feedback: @@ -19,7 +29,7 @@ jobs: - name: fetch base run: git fetch --depth 1 origin ${{ github.base_ref }} - # We avoid using the in-source script just in case + # We avoid using the in-source script since this workflow has elevated permissions that we don't want to expose - name: Generate Feedback id: generate-feedback run: | @@ -32,7 +42,6 @@ jobs: env: ISSUE_NUMBER: ${{ github.event.pull_request.number }} with: - github-token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} script: | const owner = "backstage"; const repo = "backstage"; From 8943792a3f67811dfa9326582f108c78beb1dfa7 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 23:55:21 +0100 Subject: [PATCH 292/410] workflows: avoid running changeset feedback on bot PRs altogether Signed-off-by: Patrik Oldsberg --- .github/workflows/automate_changeset_feedback.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index 5e42695f1f..7d1b286c3c 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -17,7 +17,8 @@ permissions: jobs: feedback: - if: github.repository == 'backstage/backstage' # prevent running on forks + # prevent running towards forks and version packages + if: github.repository == 'backstage/backstage' && github.event.pull_request.user.login != 'backstage-service' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -38,7 +39,6 @@ jobs: - name: Post Feedback uses: actions/github-script@v5 - if: github.event.pull_request.user.login != 'backstage-service' env: ISSUE_NUMBER: ${{ github.event.pull_request.number }} with: From 918d695c62fafcafbb75b19f56ce45b70f82b827 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 00:17:04 +0100 Subject: [PATCH 293/410] workflows: make sure no existing feedback generate script exists Signed-off-by: Patrik Oldsberg --- .github/workflows/automate_changeset_feedback.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/automate_changeset_feedback.yml b/.github/workflows/automate_changeset_feedback.yml index 7d1b286c3c..efcbaf210b 100644 --- a/.github/workflows/automate_changeset_feedback.yml +++ b/.github/workflows/automate_changeset_feedback.yml @@ -34,6 +34,7 @@ jobs: - name: Generate Feedback id: generate-feedback run: | + rm -f generate.js wget -O generate.js https://raw.githubusercontent.com/backstage/backstage/master/scripts/generate-changeset-feedback.js 1>&2 node generate.js FETCH_HEAD > feedback.txt From e230f704dddaa344949afd90bb7042488158033d Mon Sep 17 00:00:00 2001 From: Shailendra Ahir Date: Thu, 24 Mar 2022 08:40:46 +0530 Subject: [PATCH 294/410] #8850 Updated api report Signed-off-by: Shailendra Ahir --- plugins/catalog-graph/api-report.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/catalog-graph/api-report.md b/plugins/catalog-graph/api-report.md index 82db1dac3b..d9d8019fd4 100644 --- a/plugins/catalog-graph/api-report.md +++ b/plugins/catalog-graph/api-report.md @@ -128,6 +128,8 @@ export const EntityRelationsGraph: ({ relationPairs, className, zoom, + renderNode, + renderLabel, }: { rootEntityNames: CompoundEntityRef | CompoundEntityRef[]; maxDepth?: number | undefined; @@ -142,6 +144,10 @@ export const EntityRelationsGraph: ({ relationPairs?: RelationPairs | undefined; className?: string | undefined; zoom?: 'disabled' | 'enabled' | 'enable-on-click' | undefined; + renderNode?: DependencyGraphTypes.RenderNodeFunction | undefined; + renderLabel?: + | DependencyGraphTypes.RenderLabelFunction + | undefined; }) => JSX.Element; // @public From ecd72391fb0501beb0b1894f73daedc59ca8fb9a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Mar 2022 04:08:09 +0000 Subject: [PATCH 295/410] build(deps): bump @spotify/eslint-config-typescript Bumps [@spotify/eslint-config-typescript](https://github.com/spotify/web-scripts) from 12.0.0 to 13.0.0. - [Release notes](https://github.com/spotify/web-scripts/releases) - [Changelog](https://github.com/spotify/web-scripts/blob/master/CHANGELOG.md) - [Commits](https://github.com/spotify/web-scripts/compare/v12.0.0...v13.0.0) --- updated-dependencies: - dependency-name: "@spotify/eslint-config-typescript" dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-c1fe92f.md | 5 +++++ packages/cli/package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 .changeset/dependabot-c1fe92f.md diff --git a/.changeset/dependabot-c1fe92f.md b/.changeset/dependabot-c1fe92f.md new file mode 100644 index 0000000000..8d106e3962 --- /dev/null +++ b/.changeset/dependabot-c1fe92f.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +build(deps): bump `@spotify/eslint-config-typescript` diff --git a/packages/cli/package.json b/packages/cli/package.json index fcf1f1346c..62a5f46a92 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -47,7 +47,7 @@ "@rollup/plugin-yaml": "^3.1.0", "@spotify/eslint-config-base": "^13.0.0", "@spotify/eslint-config-react": "^12.0.0", - "@spotify/eslint-config-typescript": "^12.0.0", + "@spotify/eslint-config-typescript": "^13.0.0", "@sucrase/jest-plugin": "^2.1.1", "@sucrase/webpack-loader": "^2.0.0", "@svgr/plugin-jsx": "6.2.x", diff --git a/yarn.lock b/yarn.lock index ef42dc9208..36068320ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5188,10 +5188,10 @@ resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-12.0.0.tgz#5b8d4bc3b81a8ec2824648f482f1f6c3cf711893" integrity sha512-lNHZRtJesNA273OJHBVUGAg2JYyVDZ+bsT7h3OwnX1HYgejJ3YcKPSziPM8TGFAN8DruH3tHFfaM63uAIA1+uw== -"@spotify/eslint-config-typescript@^12.0.0": - version "12.0.0" - resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz#4c7af3f74a47668bec0c860b72e2a0103e78a138" - integrity sha512-nMVll8ZkN/W8+IHn6Iz3YzCKW0qhrn3TVfyxkAr3qmXm5cex+GzyUdZEuxb8rdN2inZL6A1Il2NFfO5p/UKxog== +"@spotify/eslint-config-typescript@^13.0.0": + version "13.0.0" + resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz#908a51e05de7ec9d2e3b136f9831e0ddb36c7f89" + integrity sha512-pR9hptdnu39FCofS9y4SbLRJOgGNhBsX6N24HD3LxbLnVedSF2kpqMmgaBw3W2T932oXSrJlf5nsCePWVsUTjQ== "@spotify/prettier-config@^12.0.0": version "12.0.0" From f672b24272b04207a2c77f166719ce813a9b95da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Mar 2022 04:11:15 +0000 Subject: [PATCH 296/410] build(deps): bump @graphql-tools/schema from 8.3.1 to 8.3.5 Bumps [@graphql-tools/schema](https://github.com/ardatan/graphql-tools/tree/HEAD/packages/schema) from 8.3.1 to 8.3.5. - [Release notes](https://github.com/ardatan/graphql-tools/releases) - [Changelog](https://github.com/ardatan/graphql-tools/blob/master/packages/schema/CHANGELOG.md) - [Commits](https://github.com/ardatan/graphql-tools/commits/@graphql-tools/schema@8.3.5/packages/schema) --- updated-dependencies: - dependency-name: "@graphql-tools/schema" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index ef42dc9208..e2d1ab9985 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2504,6 +2504,14 @@ p-limit "3.1.0" tslib "~2.3.0" +"@graphql-tools/merge@8.2.6", "@graphql-tools/merge@^8.2.1": + version "8.2.6" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.6.tgz#7fb615fa9c143c3151ff025e501d52bd48186d19" + integrity sha512-dkwTm4czMISi/Io47IVvq2Fl9q4TIGKpJ0VZjuXYdEFkECyH6A5uwxZfPVandZG+gQs8ocFFoa6RisiUJLZrJw== + dependencies: + "@graphql-tools/utils" "8.6.5" + tslib "~2.3.0" + "@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.12": version "6.2.14" resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.14.tgz#694e2a2785ba47558e5665687feddd2935e9d94e" @@ -2513,14 +2521,6 @@ "@graphql-tools/utils" "^7.7.0" tslib "~2.2.0" -"@graphql-tools/merge@^8.2.1": - version "8.2.1" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.1.tgz#bf83aa06a0cfc6a839e52a58057a84498d0d51ff" - integrity sha512-Q240kcUszhXiAYudjuJgNuLgy9CryDP3wp83NOZQezfA6h3ByYKU7xI6DiKrdjyVaGpYN3ppUmdj0uf5GaXzMA== - dependencies: - "@graphql-tools/utils" "^8.5.1" - tslib "~2.3.0" - "@graphql-tools/mock@^8.1.2": version "8.5.1" resolved "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.5.1.tgz#379d18eafdcb65486beb8f9247b33b7b693c53aa" @@ -2573,7 +2573,7 @@ relay-compiler "12.0.0" tslib "~2.3.0" -"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": +"@graphql-tools/schema@8.3.1": version "8.3.1" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== @@ -2592,6 +2592,16 @@ tslib "~2.2.0" value-or-promise "1.0.6" +"@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": + version "8.3.5" + resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.5.tgz#ebec0c0c7f53e591d34375d6f81d0660852fcaca" + integrity sha512-3mJ/K7TdL+fnEUtCUqF4qkh1fcNMzaxgwKgO9fSYSTS7zyT16hbi5XSulSTshygHgaD2u+MO588iR4ZJcbZcIg== + dependencies: + "@graphql-tools/merge" "8.2.6" + "@graphql-tools/utils" "8.6.5" + tslib "~2.3.0" + value-or-promise "1.0.11" + "@graphql-tools/url-loader@^6.0.0": version "6.10.1" resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz#dc741e4299e0e7ddf435eba50a1f713b3e763b33" @@ -2649,13 +2659,20 @@ dependencies: tslib "~2.3.0" -"@graphql-tools/utils@8.6.2", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.6.0": +"@graphql-tools/utils@8.6.2": version "8.6.2" resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz#095408135f091aac68fe18a0a21b708e685500da" integrity sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA== dependencies: tslib "~2.3.0" +"@graphql-tools/utils@8.6.5", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.6.0": + version "8.6.5" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.5.tgz#ac04571b03f854c7a938b2ab700516a6c6d32335" + integrity sha512-mjOtaWiS2WIqRz/cq5gaeM3sVrllcu2xbtHROw1su1v3xWa3D3dKgn8Lrl7+tvWs5WUVySsBss/VZ3WdoPkCrA== + dependencies: + tslib "~2.3.0" + "@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.5.0", "@graphql-tools/utils@^7.7.0", "@graphql-tools/utils@^7.7.1", "@graphql-tools/utils@^7.8.1", "@graphql-tools/utils@^7.9.0": version "7.10.0" resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz#07a4cb5d1bec1ff1dc1d47a935919ee6abd38699" From f151dfee5a225522590a14c02e9517371f41e420 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Mar 2022 04:13:00 +0000 Subject: [PATCH 297/410] build(deps): bump eslint-webpack-plugin from 2.6.0 to 3.1.1 Bumps [eslint-webpack-plugin](https://github.com/webpack-contrib/eslint-webpack-plugin) from 2.6.0 to 3.1.1. - [Release notes](https://github.com/webpack-contrib/eslint-webpack-plugin/releases) - [Changelog](https://github.com/webpack-contrib/eslint-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/eslint-webpack-plugin/compare/v2.6.0...v3.1.1) --- updated-dependencies: - dependency-name: eslint-webpack-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .changeset/dependabot-6754062.md | 5 +++++ packages/cli/package.json | 2 +- yarn.lock | 19 +++++-------------- 3 files changed, 11 insertions(+), 15 deletions(-) create mode 100644 .changeset/dependabot-6754062.md diff --git a/.changeset/dependabot-6754062.md b/.changeset/dependabot-6754062.md new file mode 100644 index 0000000000..14d9648071 --- /dev/null +++ b/.changeset/dependabot-6754062.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +build(deps): bump `eslint-webpack-plugin` from 2.6.0 to 3.1.1 diff --git a/packages/cli/package.json b/packages/cli/package.json index fcf1f1346c..62ed41ab4d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -77,7 +77,7 @@ "eslint-plugin-monorepo": "^0.3.2", "eslint-plugin-react": "^7.28.0", "eslint-plugin-react-hooks": "^4.3.0", - "eslint-webpack-plugin": "^2.6.0", + "eslint-webpack-plugin": "^3.1.1", "express": "^4.17.1", "fork-ts-checker-webpack-plugin": "^7.0.0-alpha.8", "fs-extra": "10.0.1", diff --git a/yarn.lock b/yarn.lock index ef42dc9208..1b94eb69f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5817,15 +5817,7 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint@*": - version "6.1.8" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-6.1.8.tgz#7e868f89bc1e520323d405940e49cb912ede5bba" - integrity sha512-CJBhm9pYdUS8cFVbXACWlLxZWFBTQMiM0eI6RYxng3u9oQ9gHdQ5PN89DHPrK4RISRzX62nRsteUlbBgEIdSug== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/eslint@^7.28.2": +"@types/eslint@*", "@types/eslint@^7.28.2": version "7.29.0" resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== @@ -11856,13 +11848,12 @@ eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint-webpack-plugin@^2.6.0: - version "2.6.0" - resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd" - integrity sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ== +eslint-webpack-plugin@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz#83dad2395e5f572d6f4d919eedaa9cf902890fcb" + integrity sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg== dependencies: "@types/eslint" "^7.28.2" - arrify "^2.0.1" jest-worker "^27.3.1" micromatch "^4.0.4" normalize-path "^3.0.0" From 2566b48ebb6d303dfd9a8504c457333c50f4212d Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 17 Feb 2022 00:36:13 +0700 Subject: [PATCH 298/410] transitive ownership of entities for group kind Signed-off-by: Prasetya Aria Wibawa --- plugins/org/package.json | 1 + .../OwnershipCard/DirectRelationsGrid.tsx | 122 ++++++++ .../Cards/OwnershipCard/OwnershipCard.tsx | 261 ++++++------------ .../OwnershipCard/TransitiveRelationsGrid.tsx | 122 ++++++++ .../Cards/OwnershipCard/useDirectEntities.ts | 138 +++++++++ .../OwnershipCard/useTransitiveEntities.ts | 180 ++++++++++++ 6 files changed, 641 insertions(+), 183 deletions(-) create mode 100644 plugins/org/src/components/Cards/OwnershipCard/DirectRelationsGrid.tsx create mode 100644 plugins/org/src/components/Cards/OwnershipCard/TransitiveRelationsGrid.tsx create mode 100644 plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts create mode 100644 plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts diff --git a/plugins/org/package.json b/plugins/org/package.json index 11478bbe64..8b8c6709dc 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -34,6 +34,7 @@ "@material-ui/lab": "4.0.0-alpha.57", "pluralize": "^8.0.0", "qs": "^6.10.1", + "p-limit": "^3.1.0", "react-router": "6.0.0-beta.0", "react-router-dom": "6.0.0-beta.0", "react-use": "^17.2.4" diff --git a/plugins/org/src/components/Cards/OwnershipCard/DirectRelationsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/DirectRelationsGrid.tsx new file mode 100644 index 0000000000..a7cd521ecc --- /dev/null +++ b/plugins/org/src/components/Cards/OwnershipCard/DirectRelationsGrid.tsx @@ -0,0 +1,122 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity } from '@backstage/catalog-model'; +import { Link, Progress, ResponseErrorPanel } from '@backstage/core-components'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { BackstageTheme } from '@backstage/theme'; +import { + Box, + createStyles, + Grid, + makeStyles, + Typography, +} from '@material-ui/core'; +import React from 'react'; +import pluralize from 'pluralize'; +import { catalogIndexRouteRef } from '../../../routes'; +import { useDirectEntities } from './useDirectEntities'; + +const useStyles = makeStyles((theme: BackstageTheme) => + createStyles({ + card: { + border: `1px solid ${theme.palette.divider}`, + boxShadow: theme.shadows[2], + borderRadius: '4px', + padding: theme.spacing(2), + color: '#fff', + transition: `${theme.transitions.duration.standard}ms`, + '&:hover': { + boxShadow: theme.shadows[4], + }, + }, + bold: { + fontWeight: theme.typography.fontWeightBold, + }, + entityTypeBox: { + background: (props: { type: string }) => + theme.getPageTheme({ themeId: props.type }).backgroundImage, + }, + }), +); + +const EntityCountTile = ({ + counter, + type, + name, + url, +}: { + counter: number; + type: string; + name: string; + url: string; +}) => { + const classes = useStyles({ type }); + + return ( + + + + {counter} + + + {pluralize(name, counter)} + + + + ); +}; + +export const DirectRelationsGrid = ({ + entity, + entityFilterKind, +}: { + entity: Entity; + entityFilterKind?: string[]; +}) => { + const catalogLink = useRouteRef(catalogIndexRouteRef); + + const { componentsWithCounters, loading, error } = useDirectEntities( + entity, + entityFilterKind, + ); + + if (loading) { + return ; + } else if (error) { + return ; + } + + return ( + + {componentsWithCounters?.map(c => ( + + + + ))} + + ); +}; diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index fb49843e92..9ede02ce6e 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -14,122 +14,61 @@ * limitations under the License. */ -import { Entity, UserEntity } from '@backstage/catalog-model'; +import { Entity } from '@backstage/catalog-model'; +import { InfoCard, InfoCardVariants } from '@backstage/core-components'; +import { useEntity } from '@backstage/plugin-catalog-react'; import { - InfoCard, - InfoCardVariants, - Link, - Progress, - ResponseErrorPanel, -} from '@backstage/core-components'; -import { useApi, useRouteRef } from '@backstage/core-plugin-api'; -import { - catalogApiRef, - humanizeEntityRef, - isOwnerOf, - useEntity, -} from '@backstage/plugin-catalog-react'; -import { BackstageTheme } from '@backstage/theme'; -import { - Box, - createStyles, - Grid, + List, + ListItem, + ListItemSecondaryAction, + ListItemText, makeStyles, - Typography, + Switch, + Tooltip, } from '@material-ui/core'; -import qs from 'qs'; -import React from 'react'; -import pluralize from 'pluralize'; -import useAsync from 'react-use/lib/useAsync'; -import { catalogIndexRouteRef } from '../../../routes'; +import React, { useState } from 'react'; +import { DirectRelationsGrid } from './DirectRelationsGrid'; +import { TransitiveRelationsGrid } from './TransitiveRelationsGrid'; -type EntityTypeProps = { - kind: string; - type: string; - count: number; -}; - -const useStyles = makeStyles((theme: BackstageTheme) => - createStyles({ - card: { - border: `1px solid ${theme.palette.divider}`, - boxShadow: theme.shadows[2], - borderRadius: '4px', - padding: theme.spacing(2), - color: '#fff', - transition: `${theme.transitions.duration.standard}ms`, - '&:hover': { - boxShadow: theme.shadows[4], - }, +const useStyles = makeStyles(theme => ({ + list: { + [theme.breakpoints.down('xs')]: { + padding: `0 0 12px`, }, - bold: { - fontWeight: theme.typography.fontWeightBold, + }, + listItemText: { + [theme.breakpoints.down('xs')]: { + paddingRight: 0, + paddingLeft: 0, }, - entityTypeBox: { - background: (props: { type: string }) => - theme.getPageTheme({ themeId: props.type }).backgroundImage, + }, + listItemSecondaryAction: { + [theme.breakpoints.down('xs')]: { + width: '100%', + top: 'auto', + right: 'auto', + position: 'relative', + transform: 'unset', }, - }), -); - -const EntityCountTile = ({ - counter, - type, - name, - url, -}: { - counter: number; - type: string; - name: string; - url: string; -}) => { - const classes = useStyles({ type }); + }, +})); +const directRelationsGrid = (entity: Entity, entityFilterKind?: string[]) => { return ( - - - - {counter} - - - {pluralize(name, counter)} - - - + ); }; -const getQueryParams = ( - owner: Entity, - selectedEntity: EntityTypeProps, -): string => { - const ownerName = humanizeEntityRef(owner, { defaultKind: 'group' }); - const { kind, type } = selectedEntity; - const filters = { - kind, - type, - owners: [ownerName], - user: 'all', - }; - if (owner.kind === 'User') { - const user = owner as UserEntity; - filters.owners = [...filters.owners, ...(user.spec.memberOf ?? [])]; - } - const queryParams = qs.stringify( - { - filters, - }, - { - arrayFormat: 'repeat', - }, +const transitiveRelationsGrid = ( + entity: Entity, + entityFilterKind?: string[], +) => { + return ( + ); - - return queryParams; }; export const OwnershipCard = ({ @@ -139,90 +78,46 @@ export const OwnershipCard = ({ variant?: InfoCardVariants; entityFilterKind?: string[]; }) => { + const [relationsType, setRelationsType] = useState('direct'); + const classes = useStyles(); const { entity } = useEntity(); - const catalogApi = useApi(catalogApiRef); - const catalogLink = useRouteRef(catalogIndexRouteRef); - - const { - loading, - error, - value: componentsWithCounters, - } = useAsync(async () => { - const kinds = entityFilterKind ?? ['Component', 'API']; - const entitiesList = await catalogApi.getEntities({ - filter: { - kind: kinds, - }, - fields: [ - 'kind', - 'metadata.name', - 'metadata.namespace', - 'spec.type', - 'relations', - ], - }); - - const ownedEntitiesList = entitiesList.items.filter(component => - isOwnerOf(entity, component), - ); - - const counts = ownedEntitiesList.reduce( - (acc: EntityTypeProps[], ownedEntity) => { - const match = acc.find( - x => - x.kind === ownedEntity.kind && - x.type === (ownedEntity.spec?.type ?? ownedEntity.kind), - ); - if (match) { - match.count += 1; - } else { - acc.push({ - kind: ownedEntity.kind, - type: ownedEntity.spec?.type?.toString() ?? ownedEntity.kind, - count: 1, - }); - } - return acc; - }, - [], - ); - - // Return top N (six) entities to be displayed in ownership boxes - const topN = counts.sort((a, b) => b.count - a.count).slice(0, 6); - - return topN.map(topOwnedEntity => ({ - counter: topOwnedEntity.count, - type: topOwnedEntity.type, - name: topOwnedEntity.type.toLocaleUpperCase('en-US'), - queryParams: getQueryParams(entity, topOwnedEntity), - })) as Array<{ - counter: number; - type: string; - name: string; - queryParams: string; - }>; - }, [catalogApi, entity]); - - if (loading) { - return ; - } else if (error) { - return ; - } + const isGroup = entity.kind === 'Group'; + const renderedGrid = + relationsType !== 'direct' && isGroup + ? transitiveRelationsGrid(entity, entityFilterKind) + : directRelationsGrid(entity, entityFilterKind); return ( - - {componentsWithCounters?.map(c => ( - - - - ))} - + + + + + Direct Relations + + + relationsType === 'direct' + ? setRelationsType('transitive') + : setRelationsType('direct') + } + name="pin" + inputProps={{ 'aria-label': 'Pin Sidebar Switch' }} + disabled={!isGroup} + /> + + Transitive Relations + + + + {renderedGrid} ); }; diff --git a/plugins/org/src/components/Cards/OwnershipCard/TransitiveRelationsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/TransitiveRelationsGrid.tsx new file mode 100644 index 0000000000..8ed4d1c413 --- /dev/null +++ b/plugins/org/src/components/Cards/OwnershipCard/TransitiveRelationsGrid.tsx @@ -0,0 +1,122 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity } from '@backstage/catalog-model'; +import { Link, Progress, ResponseErrorPanel } from '@backstage/core-components'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { BackstageTheme } from '@backstage/theme'; +import { + Box, + createStyles, + Grid, + makeStyles, + Typography, +} from '@material-ui/core'; +import React from 'react'; +import pluralize from 'pluralize'; +import { catalogIndexRouteRef } from '../../../routes'; +import { useTransitiveEntities } from './useTransitiveEntities'; + +const useStyles = makeStyles((theme: BackstageTheme) => + createStyles({ + card: { + border: `1px solid ${theme.palette.divider}`, + boxShadow: theme.shadows[2], + borderRadius: '4px', + padding: theme.spacing(2), + color: '#fff', + transition: `${theme.transitions.duration.standard}ms`, + '&:hover': { + boxShadow: theme.shadows[4], + }, + }, + bold: { + fontWeight: theme.typography.fontWeightBold, + }, + entityTypeBox: { + background: (props: { type: string }) => + theme.getPageTheme({ themeId: props.type }).backgroundImage, + }, + }), +); + +const EntityCountTile = ({ + counter, + type, + name, + url, +}: { + counter: number; + type: string; + name: string; + url: string; +}) => { + const classes = useStyles({ type }); + + return ( + + + + {counter} + + + {pluralize(name, counter)} + + + + ); +}; + +// can only be used for group entity +export const TransitiveRelationsGrid = ({ + entity, + entityFilterKind, +}: { + entity: Entity; + entityFilterKind?: string[]; +}) => { + const catalogLink = useRouteRef(catalogIndexRouteRef); + const { componentsWithCounters, loading, error } = useTransitiveEntities( + entity, + entityFilterKind, + ); + + if (loading) { + return ; + } else if (error) { + return ; + } + + return ( + + {componentsWithCounters?.map(c => ( + + + + ))} + + ); +}; diff --git a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts new file mode 100644 index 0000000000..5e12d839de --- /dev/null +++ b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts @@ -0,0 +1,138 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity, UserEntity } from '@backstage/catalog-model'; +import { useApi } from '@backstage/core-plugin-api'; +import { + catalogApiRef, + formatEntityRefTitle, + isOwnerOf, +} from '@backstage/plugin-catalog-react'; +import qs from 'qs'; +import { useAsync } from 'react-use'; + +type EntityTypeProps = { + kind: string; + type: string; + count: number; +}; + +const getQueryParams = ( + owner: Entity, + selectedEntity: EntityTypeProps, +): string => { + const ownerName = formatEntityRefTitle(owner, { defaultKind: 'group' }); + const { kind, type } = selectedEntity; + const filters = { + kind, + type, + owners: [ownerName], + user: 'all', + }; + if (owner.kind === 'User') { + const user = owner as UserEntity; + filters.owners = [...filters.owners, ...user.spec.memberOf]; + } + const queryParams = qs.stringify({ + filters, + }); + + return queryParams; +}; + +export function useDirectEntities( + entity: Entity, + entityFilterKind?: string[], +): { + componentsWithCounters: + | { + counter: number; + type: string; + name: string; + queryParams: string; + }[] + | undefined; + loading: boolean; + error?: Error; +} { + const catalogApi = useApi(catalogApiRef); + + const { + loading, + error, + value: componentsWithCounters, + } = useAsync(async () => { + const kinds = entityFilterKind ?? ['Component', 'API', 'System']; + const entitiesList = await catalogApi.getEntities({ + filter: { + kind: kinds, + }, + fields: [ + 'kind', + 'metadata.name', + 'metadata.namespace', + 'spec.type', + 'relations', + ], + }); + + const ownedEntitiesList = entitiesList.items.filter(component => + isOwnerOf(entity, component), + ); + + const counts = ownedEntitiesList.reduce( + (acc: EntityTypeProps[], ownedEntity) => { + const match = acc.find( + x => + x.kind === ownedEntity.kind && + x.type === (ownedEntity.spec?.type ?? ownedEntity.kind), + ); + if (match) { + match.count += 1; + } else { + acc.push({ + kind: ownedEntity.kind, + type: ownedEntity.spec?.type?.toString() ?? ownedEntity.kind, + count: 1, + }); + } + return acc; + }, + [], + ); + + // Return top N (six) entities to be displayed in ownership boxes + const topN = counts.sort((a, b) => b.count - a.count).slice(0, 6); + + return topN.map(topOwnedEntity => ({ + counter: topOwnedEntity.count, + type: topOwnedEntity.type, + name: topOwnedEntity.type.toLocaleUpperCase('en-US'), + queryParams: getQueryParams(entity, topOwnedEntity), + })) as Array<{ + counter: number; + type: string; + name: string; + queryParams: string; + }>; + }, [catalogApi, entity]); + + return { + componentsWithCounters, + loading, + error, + }; +} diff --git a/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts new file mode 100644 index 0000000000..f2665ec798 --- /dev/null +++ b/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts @@ -0,0 +1,180 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity, RELATION_PARENT_OF } from '@backstage/catalog-model'; +import { + catalogApiRef, + getEntityRelations, +} from '@backstage/plugin-catalog-react'; +import limiterFactory from 'p-limit'; +import { useApi } from '@backstage/core-plugin-api'; +import { useAsync } from 'react-use'; +import { CatalogListResponse } from '@backstage/catalog-client'; +import qs from 'qs'; + +const limiter = limiterFactory(10); + +type EntityTypeProps = { + kind: string; + type: string; + count: number; +}; + +const getQueryParams = ( + owners: string[], + selectedEntity: EntityTypeProps, +): string => { + const { kind, type } = selectedEntity; + const filters = { + kind, + type, + owners, + user: 'all', + }; + const queryParams = qs.stringify({ + filters, + }); + + return queryParams; +}; + +export function useTransitiveEntities( + entity: Entity, + entityFilterKind?: string[], +): { + componentsWithCounters: + | { + counter: number; + type: string; + name: string; + queryParams: string; + }[] + | undefined; + loading: boolean; + error?: Error; +} { + const catalogApi = useApi(catalogApiRef); + const requestedEntities: Entity[] = []; + const outstandingEntities = new Map>(); + const processedEntities = new Set(); + requestedEntities.push(entity); + let isLoop = true; + let currentEntity = entity; + const kinds = entityFilterKind ?? ['Component', 'API', 'System']; + + const { + loading, + error, + value: componentsWithCounters, + } = useAsync(async () => { + while (isLoop) { + const childRelations = getEntityRelations( + currentEntity, + RELATION_PARENT_OF, + { + kind: 'Group', + }, + ); + + await Promise.all( + childRelations.map(childGroup => + limiter(async () => { + const promise = catalogApi.getEntityByName({ + kind: 'Group', + namespace: 'default', + name: childGroup.name, + }); + + outstandingEntities.set(childGroup.name, promise); + try { + const processedEntity = await promise; + if (processedEntity) { + requestedEntities.push(processedEntity); + } + } finally { + outstandingEntities.delete(childGroup.name); + } + }), + ), + ); + requestedEntities.shift(); + processedEntities.add(currentEntity.metadata.name); + currentEntity = requestedEntities[0]; + if (requestedEntities.length === 0) isLoop = false; + } + + const owners = Array.from(processedEntities); + + const ownedAggregationEntitiesList: CatalogListResponse = + await catalogApi.getEntities({ + filter: [ + { + kind: kinds, + 'spec.owner': owners, + }, + ], + fields: [ + 'kind', + 'metadata.name', + 'metadata.namespace', + 'spec.type', + 'relations', + ], + }); + + const counts = ownedAggregationEntitiesList.items.reduce( + (acc: EntityTypeProps[], ownedEntity) => { + const match = acc.find( + x => + x.kind === ownedEntity.kind && + x.type === (ownedEntity.spec?.type ?? ownedEntity.kind), + ); + if (match) { + match.count += 1; + } else { + acc.push({ + kind: ownedEntity.kind, + type: ownedEntity.spec?.type?.toString() ?? ownedEntity.kind, + count: 1, + }); + } + return acc; + }, + [], + ); + + // Return top N (six) entities to be displayed in ownership boxes + const topN = counts.sort((a, b) => b.count - a.count).slice(0, 6); + + return topN.map(topOwnedEntity => ({ + counter: topOwnedEntity.count, + type: topOwnedEntity.type, + name: topOwnedEntity.type.toLocaleUpperCase('en-US'), + queryParams: getQueryParams(owners, topOwnedEntity), + })) as Array<{ + counter: number; + type: string; + name: string; + queryParams: string; + }>; + }, [catalogApi, entity]); + + return { + componentsWithCounters, + loading, + error, + }; +} From 19fe9bfafb6b22d67ad437d959fde8e57ea34a12 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 17 Feb 2022 07:02:42 +0700 Subject: [PATCH 299/410] add checked props to switch component Signed-off-by: Prasetya Aria Wibawa --- .../org/src/components/Cards/OwnershipCard/OwnershipCard.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index 9ede02ce6e..d524c25c51 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -78,10 +78,10 @@ export const OwnershipCard = ({ variant?: InfoCardVariants; entityFilterKind?: string[]; }) => { - const [relationsType, setRelationsType] = useState('direct'); const classes = useStyles(); const { entity } = useEntity(); const isGroup = entity.kind === 'Group'; + const [relationsType, setRelationsType] = useState('direct'); const renderedGrid = relationsType !== 'direct' && isGroup ? transitiveRelationsGrid(entity, entityFilterKind) @@ -102,7 +102,7 @@ export const OwnershipCard = ({ > relationsType === 'direct' ? setRelationsType('transitive') From 111995470d715054cfaeb0083a17897e6deccfeb Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 17 Feb 2022 07:15:49 +0700 Subject: [PATCH 300/410] add changeset Signed-off-by: Prasetya Aria Wibawa --- .changeset/mighty-suns-drop.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/mighty-suns-drop.md diff --git a/.changeset/mighty-suns-drop.md b/.changeset/mighty-suns-drop.md new file mode 100644 index 0000000000..4f34ad14ad --- /dev/null +++ b/.changeset/mighty-suns-drop.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-org': patch +--- + +add transtive ownership type for kind group in OwnershipCard From 539a0d754c88d08c6f49abbfc2af857b7f791477 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 17 Feb 2022 07:30:18 +0700 Subject: [PATCH 301/410] remove catalogListResponse from import statement Signed-off-by: Prasetya Aria Wibawa --- .../OwnershipCard/useTransitiveEntities.ts | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts index f2665ec798..de03b4b617 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts @@ -22,7 +22,6 @@ import { import limiterFactory from 'p-limit'; import { useApi } from '@backstage/core-plugin-api'; import { useAsync } from 'react-use'; -import { CatalogListResponse } from '@backstage/catalog-client'; import qs from 'qs'; const limiter = limiterFactory(10); @@ -118,22 +117,21 @@ export function useTransitiveEntities( const owners = Array.from(processedEntities); - const ownedAggregationEntitiesList: CatalogListResponse = - await catalogApi.getEntities({ - filter: [ - { - kind: kinds, - 'spec.owner': owners, - }, - ], - fields: [ - 'kind', - 'metadata.name', - 'metadata.namespace', - 'spec.type', - 'relations', - ], - }); + const ownedAggregationEntitiesList = await catalogApi.getEntities({ + filter: [ + { + kind: kinds, + 'spec.owner': owners, + }, + ], + fields: [ + 'kind', + 'metadata.name', + 'metadata.namespace', + 'spec.type', + 'relations', + ], + }); const counts = ownedAggregationEntitiesList.items.reduce( (acc: EntityTypeProps[], ownedEntity) => { From b0dcb1289f16cd3103cd1d90ed7a33d33c6c61d8 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 17 Feb 2022 07:42:14 +0700 Subject: [PATCH 302/410] fix typo comment in changeset Signed-off-by: Prasetya Aria Wibawa --- .changeset/mighty-suns-drop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/mighty-suns-drop.md b/.changeset/mighty-suns-drop.md index 4f34ad14ad..80f7b88e2b 100644 --- a/.changeset/mighty-suns-drop.md +++ b/.changeset/mighty-suns-drop.md @@ -2,4 +2,4 @@ '@backstage/plugin-org': patch --- -add transtive ownership type for kind group in OwnershipCard +add transitive ownership type for kind group in OwnershipCard From 8e9ddcc5f04aecad14130ab73b8f033245ea0c12 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 17 Feb 2022 08:59:53 +0700 Subject: [PATCH 303/410] change label props Signed-off-by: Prasetya Aria Wibawa --- .../org/src/components/Cards/OwnershipCard/OwnershipCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index d524c25c51..18dd57cc1d 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -109,7 +109,7 @@ export const OwnershipCard = ({ : setRelationsType('direct') } name="pin" - inputProps={{ 'aria-label': 'Pin Sidebar Switch' }} + inputProps={{ 'aria-label': 'Ownership Type Switch' }} disabled={!isGroup} /> From 21f99270bbbc6b32387944dae816a944d59e95a7 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 18 Feb 2022 16:52:33 +0700 Subject: [PATCH 304/410] change transitive word to aggregated Signed-off-by: Prasetya Aria Wibawa --- .changeset/mighty-suns-drop.md | 2 +- ...lationsGrid.tsx => AggregatedRelationsGrid.tsx} | 6 +++--- .../Cards/OwnershipCard/OwnershipCard.tsx | 14 +++++++------- ...nsitiveEntities.ts => useAggregatedEntities.ts} | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) rename plugins/org/src/components/Cards/OwnershipCard/{TransitiveRelationsGrid.tsx => AggregatedRelationsGrid.tsx} (94%) rename plugins/org/src/components/Cards/OwnershipCard/{useTransitiveEntities.ts => useAggregatedEntities.ts} (99%) diff --git a/.changeset/mighty-suns-drop.md b/.changeset/mighty-suns-drop.md index 80f7b88e2b..f8bb686aaf 100644 --- a/.changeset/mighty-suns-drop.md +++ b/.changeset/mighty-suns-drop.md @@ -2,4 +2,4 @@ '@backstage/plugin-org': patch --- -add transitive ownership type for kind group in OwnershipCard +add aggregated ownership type for kind group in OwnershipCard diff --git a/plugins/org/src/components/Cards/OwnershipCard/TransitiveRelationsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/AggregatedRelationsGrid.tsx similarity index 94% rename from plugins/org/src/components/Cards/OwnershipCard/TransitiveRelationsGrid.tsx rename to plugins/org/src/components/Cards/OwnershipCard/AggregatedRelationsGrid.tsx index 8ed4d1c413..4839e4db56 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/TransitiveRelationsGrid.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/AggregatedRelationsGrid.tsx @@ -28,7 +28,7 @@ import { import React from 'react'; import pluralize from 'pluralize'; import { catalogIndexRouteRef } from '../../../routes'; -import { useTransitiveEntities } from './useTransitiveEntities'; +import { useAggregatedEntities } from './useAggregatedEntities'; const useStyles = makeStyles((theme: BackstageTheme) => createStyles({ @@ -86,7 +86,7 @@ const EntityCountTile = ({ }; // can only be used for group entity -export const TransitiveRelationsGrid = ({ +export const AggregatedRelationsGrid = ({ entity, entityFilterKind, }: { @@ -94,7 +94,7 @@ export const TransitiveRelationsGrid = ({ entityFilterKind?: string[]; }) => { const catalogLink = useRouteRef(catalogIndexRouteRef); - const { componentsWithCounters, loading, error } = useTransitiveEntities( + const { componentsWithCounters, loading, error } = useAggregatedEntities( entity, entityFilterKind, ); diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index 18dd57cc1d..4612fce931 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -28,7 +28,7 @@ import { } from '@material-ui/core'; import React, { useState } from 'react'; import { DirectRelationsGrid } from './DirectRelationsGrid'; -import { TransitiveRelationsGrid } from './TransitiveRelationsGrid'; +import { AggregatedRelationsGrid } from './AggregatedRelationsGrid'; const useStyles = makeStyles(theme => ({ list: { @@ -59,12 +59,12 @@ const directRelationsGrid = (entity: Entity, entityFilterKind?: string[]) => { ); }; -const transitiveRelationsGrid = ( +const aggregatedRelationsGrid = ( entity: Entity, entityFilterKind?: string[], ) => { return ( - @@ -84,7 +84,7 @@ export const OwnershipCard = ({ const [relationsType, setRelationsType] = useState('direct'); const renderedGrid = relationsType !== 'direct' && isGroup - ? transitiveRelationsGrid(entity, entityFilterKind) + ? aggregatedRelationsGrid(entity, entityFilterKind) : directRelationsGrid(entity, entityFilterKind); return ( @@ -97,7 +97,7 @@ export const OwnershipCard = ({ relationsType === 'direct' - ? setRelationsType('transitive') + ? setRelationsType('aggregated') : setRelationsType('direct') } name="pin" @@ -113,7 +113,7 @@ export const OwnershipCard = ({ disabled={!isGroup} /> - Transitive Relations + Aggregated Relations diff --git a/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts similarity index 99% rename from plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts rename to plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts index de03b4b617..2707ba70e7 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useTransitiveEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts @@ -50,7 +50,7 @@ const getQueryParams = ( return queryParams; }; -export function useTransitiveEntities( +export function useAggregatedEntities( entity: Entity, entityFilterKind?: string[], ): { From fce26e8204035629396e95fe9a2397da92952999 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 18 Feb 2022 22:05:40 +0700 Subject: [PATCH 305/410] change to use supported version of useAsync Signed-off-by: Prasetya Aria Wibawa --- .../src/components/Cards/OwnershipCard/useAggregatedEntities.ts | 2 +- .../org/src/components/Cards/OwnershipCard/useDirectEntities.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts index 2707ba70e7..e8fb2d52dc 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts @@ -21,7 +21,7 @@ import { } from '@backstage/plugin-catalog-react'; import limiterFactory from 'p-limit'; import { useApi } from '@backstage/core-plugin-api'; -import { useAsync } from 'react-use'; +import useAsync from 'react-use/lib/useAsync'; import qs from 'qs'; const limiter = limiterFactory(10); diff --git a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts index 5e12d839de..48e6c9d74b 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts @@ -22,7 +22,7 @@ import { isOwnerOf, } from '@backstage/plugin-catalog-react'; import qs from 'qs'; -import { useAsync } from 'react-use'; +import useAsync from 'react-use/lib/useAsync'; type EntityTypeProps = { kind: string; From 3e1a4ed473b1253a4612e0c55dc220fb1b6b0a2b Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 18 Feb 2022 22:31:13 +0700 Subject: [PATCH 306/410] use additional kind system for OwnershipCard test Signed-off-by: Prasetya Aria Wibawa --- .../src/components/Cards/OwnershipCard/OwnershipCard.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx index 483cf9744f..c48e06d7a7 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx @@ -160,7 +160,7 @@ describe('OwnershipCard', () => { ); expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: { kind: ['Component', 'API'] }, + filter: { kind: ['Component', 'API', 'System'] }, fields: [ 'kind', 'metadata.name', From 8183a00eae2bdf278b3129101f9ac62a33729ed5 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 18 Feb 2022 22:52:04 +0700 Subject: [PATCH 307/410] change system test expectation for displays entity counts case Signed-off-by: Prasetya Aria Wibawa --- .../src/components/Cards/OwnershipCard/OwnershipCard.test.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx index c48e06d7a7..911dd2fb68 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx @@ -182,7 +182,9 @@ describe('OwnershipCard', () => { expect( queryByText(getByText('LIBRARY').parentElement!, '1'), ).toBeInTheDocument(); - expect(() => getByText('SYSTEM')).toThrowError(); + expect( + queryByText(getByText('SYSTEM').parentElement!, '1'), + ).toBeInTheDocument(); }); it('applies CustomFilterDefinition', async () => { From 5606d6065b07e1efc4debd31b7703df65b29f3e9 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Wed, 2 Mar 2022 16:34:10 +0700 Subject: [PATCH 308/410] use getEntityRelations to get all memberOf groups Signed-off-by: Prasetya Aria Wibawa --- .../Cards/OwnershipCard/useDirectEntities.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts index 48e6c9d74b..9ad4843040 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts @@ -14,12 +14,13 @@ * limitations under the License. */ -import { Entity, UserEntity } from '@backstage/catalog-model'; +import { Entity, RELATION_MEMBER_OF } from '@backstage/catalog-model'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef, formatEntityRefTitle, isOwnerOf, + getEntityRelations, } from '@backstage/plugin-catalog-react'; import qs from 'qs'; import useAsync from 'react-use/lib/useAsync'; @@ -43,8 +44,11 @@ const getQueryParams = ( user: 'all', }; if (owner.kind === 'User') { - const user = owner as UserEntity; - filters.owners = [...filters.owners, ...user.spec.memberOf]; + const ownerGroups = getEntityRelations(owner, RELATION_MEMBER_OF, { + kind: 'Group', + }); + const ownerGroupsName = ownerGroups.map(ownerGroup => ownerGroup.name); + filters.owners = [...filters.owners, ...ownerGroupsName]; } const queryParams = qs.stringify({ filters, From b759a21c96ef61f1b70c5af1f48ac6e3a40359f2 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Wed, 2 Mar 2022 16:56:32 +0700 Subject: [PATCH 309/410] change isOwnerOf to use filter relations.ownedBy Signed-off-by: Prasetya Aria Wibawa --- .../Cards/OwnershipCard/useDirectEntities.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts index 9ad4843040..da50842fea 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts @@ -14,12 +14,15 @@ * limitations under the License. */ -import { Entity, RELATION_MEMBER_OF } from '@backstage/catalog-model'; +import { + Entity, + RELATION_MEMBER_OF, + stringifyEntityRef, +} from '@backstage/catalog-model'; import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef, formatEntityRefTitle, - isOwnerOf, getEntityRelations, } from '@backstage/plugin-catalog-react'; import qs from 'qs'; @@ -80,10 +83,13 @@ export function useDirectEntities( value: componentsWithCounters, } = useAsync(async () => { const kinds = entityFilterKind ?? ['Component', 'API', 'System']; - const entitiesList = await catalogApi.getEntities({ - filter: { - kind: kinds, - }, + const ownedEntitiesListResponse = await catalogApi.getEntities({ + filter: [ + { + kind: kinds, + 'relations.ownedBy': [stringifyEntityRef(entity)], + }, + ], fields: [ 'kind', 'metadata.name', @@ -93,11 +99,7 @@ export function useDirectEntities( ], }); - const ownedEntitiesList = entitiesList.items.filter(component => - isOwnerOf(entity, component), - ); - - const counts = ownedEntitiesList.reduce( + const counts = ownedEntitiesListResponse.items.reduce( (acc: EntityTypeProps[], ownedEntity) => { const match = acc.find( x => From d9497b9b6e62cbd11dfe063a3fde64d9bc9b5541 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Wed, 2 Mar 2022 18:38:35 +0700 Subject: [PATCH 310/410] change filterKinds in OwnershipCard test Signed-off-by: Prasetya Aria Wibawa --- .../Cards/OwnershipCard/OwnershipCard.test.tsx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx index 911dd2fb68..4314c280cf 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx @@ -112,9 +112,9 @@ const getEntitiesMock = ( request?: GetEntitiesRequest, ): Promise => { const filterKinds = - !Array.isArray(request?.filter) && Array.isArray(request?.filter?.kind) - ? request?.filter?.kind ?? [] - : []; // we expect the request to be like { filter: { kind: ['API','System'], .... }. If changed in OwnerShipCard, let's change in also here + Array.isArray(request?.filter) && Array.isArray(request?.filter[0].kind) + ? request?.filter[0].kind ?? [] + : []; // we expect the request to be like { filter: [{ kind: ['API','System'], 'relations.ownedBy': [group:default/my-team], .... }]. If changed in OwnerShipCard, let's change in also here return Promise.resolve({ items: items.filter(item => filterKinds.find(k => k === item.kind)), } as GetEntitiesResponse); @@ -160,7 +160,13 @@ describe('OwnershipCard', () => { ); expect(catalogApi.getEntities).toHaveBeenCalledWith({ - filter: { kind: ['Component', 'API', 'System'] }, + filter: [ + { + kind: ['Component', 'API', 'System'], + 'relations.ownedBy': ['group:default/my-team'], + }, + ], + // filter: { kind: ['Component', 'API', 'System'] }, fields: [ 'kind', 'metadata.name', @@ -182,6 +188,7 @@ describe('OwnershipCard', () => { expect( queryByText(getByText('LIBRARY').parentElement!, '1'), ).toBeInTheDocument(); + expect(getByText('SYSTEM')).toBeInTheDocument(); expect( queryByText(getByText('SYSTEM').parentElement!, '1'), ).toBeInTheDocument(); From 303bc1c7fbbecb333554500ae02e4ba4dc50720b Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 4 Mar 2022 09:22:11 +0700 Subject: [PATCH 311/410] use prettier Signed-off-by: Prasetya Aria Wibawa --- .../org/src/components/Cards/OwnershipCard/OwnershipCard.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index 4612fce931..37541a786a 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -97,8 +97,9 @@ export const OwnershipCard = ({ Date: Fri, 4 Mar 2022 10:59:10 +0700 Subject: [PATCH 312/410] change to use getEntityByRef Signed-off-by: Prasetya Aria Wibawa --- .../Cards/OwnershipCard/useAggregatedEntities.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts index e8fb2d52dc..45595acb78 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts @@ -91,12 +91,7 @@ export function useAggregatedEntities( await Promise.all( childRelations.map(childGroup => limiter(async () => { - const promise = catalogApi.getEntityByName({ - kind: 'Group', - namespace: 'default', - name: childGroup.name, - }); - + const promise = catalogApi.getEntityByRef(childGroup); outstandingEntities.set(childGroup.name, promise); try { const processedEntity = await promise; From da70c0ef1a038c02f7d3e498bf8161593e98ded4 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 4 Mar 2022 11:37:55 +0700 Subject: [PATCH 313/410] check looping from length of requestedEntities Signed-off-by: Prasetya Aria Wibawa --- .../components/Cards/OwnershipCard/useAggregatedEntities.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts index 45595acb78..e6ef55b32b 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts @@ -70,7 +70,6 @@ export function useAggregatedEntities( const outstandingEntities = new Map>(); const processedEntities = new Set(); requestedEntities.push(entity); - let isLoop = true; let currentEntity = entity; const kinds = entityFilterKind ?? ['Component', 'API', 'System']; @@ -79,7 +78,7 @@ export function useAggregatedEntities( error, value: componentsWithCounters, } = useAsync(async () => { - while (isLoop) { + while (requestedEntities.length > 0) { const childRelations = getEntityRelations( currentEntity, RELATION_PARENT_OF, @@ -106,12 +105,11 @@ export function useAggregatedEntities( ); requestedEntities.shift(); processedEntities.add(currentEntity.metadata.name); + // always set currentEntity to the first element of array requestedEntities currentEntity = requestedEntities[0]; - if (requestedEntities.length === 0) isLoop = false; } const owners = Array.from(processedEntities); - const ownedAggregationEntitiesList = await catalogApi.getEntities({ filter: [ { From 4a790094ee77817bfedf21ba06eba5a932c8e385 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 4 Mar 2022 11:38:41 +0700 Subject: [PATCH 314/410] use humanizeEntityRef Signed-off-by: Prasetya Aria Wibawa --- .../Cards/OwnershipCard/useDirectEntities.ts | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts index da50842fea..20d4c3a76d 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts @@ -22,8 +22,8 @@ import { import { useApi } from '@backstage/core-plugin-api'; import { catalogApiRef, - formatEntityRefTitle, getEntityRelations, + humanizeEntityRef, } from '@backstage/plugin-catalog-react'; import qs from 'qs'; import useAsync from 'react-use/lib/useAsync'; @@ -38,7 +38,7 @@ const getQueryParams = ( owner: Entity, selectedEntity: EntityTypeProps, ): string => { - const ownerName = formatEntityRefTitle(owner, { defaultKind: 'group' }); + const ownerName = humanizeEntityRef(owner, { defaultKind: 'group' }); const { kind, type } = selectedEntity; const filters = { kind, @@ -60,6 +60,24 @@ const getQueryParams = ( return queryParams; }; +const getOwnersEntityRef = (owner: Entity): string[] => { + let owners = [stringifyEntityRef(owner)]; + if (owner.kind === 'User') { + const ownerGroups = getEntityRelations(owner, RELATION_MEMBER_OF, { + kind: 'Group', + }); + const ownerGroupsName = ownerGroups.map(ownerGroup => + stringifyEntityRef({ + kind: ownerGroup.kind, + namespace: ownerGroup.namespace, + name: ownerGroup.name, + }), + ); + owners = [...owners, ...ownerGroupsName]; + } + return owners; +}; + export function useDirectEntities( entity: Entity, entityFilterKind?: string[], @@ -83,11 +101,12 @@ export function useDirectEntities( value: componentsWithCounters, } = useAsync(async () => { const kinds = entityFilterKind ?? ['Component', 'API', 'System']; - const ownedEntitiesListResponse = await catalogApi.getEntities({ + const owners = getOwnersEntityRef(entity); + const ownedEntitiesList = await catalogApi.getEntities({ filter: [ { kind: kinds, - 'relations.ownedBy': [stringifyEntityRef(entity)], + 'relations.ownedBy': owners, }, ], fields: [ @@ -99,7 +118,7 @@ export function useDirectEntities( ], }); - const counts = ownedEntitiesListResponse.items.reduce( + const counts = ownedEntitiesList.items.reduce( (acc: EntityTypeProps[], ownedEntity) => { const match = acc.find( x => From 80b47162be6cf8403c3aab7d42582481e5747e21 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 4 Mar 2022 12:09:41 +0700 Subject: [PATCH 315/410] fix failing test for links to the catalog with group filter Signed-off-by: Prasetya Aria Wibawa --- .../components/Cards/OwnershipCard/OwnershipCard.test.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx index 4314c280cf..6c9b25fd08 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx @@ -166,7 +166,6 @@ describe('OwnershipCard', () => { 'relations.ownedBy': ['group:default/my-team'], }, ], - // filter: { kind: ['Component', 'API', 'System'] }, fields: [ 'kind', 'metadata.name', @@ -247,7 +246,7 @@ describe('OwnershipCard', () => { expect(getByText('OPENAPI').closest('a')).toHaveAttribute( 'href', - '/create/?filters%5Bkind%5D=API&filters%5Btype%5D=openapi&filters%5Bowners%5D=my-team&filters%5Buser%5D=all', + '/create/?filters%5Bkind%5D=API&filters%5Btype%5D=openapi&filters%5Bowners%5D%5B0%5D=my-team&filters%5Buser%5D=all', ); }); @@ -289,7 +288,7 @@ describe('OwnershipCard', () => { expect(getByText('OPENAPI').closest('a')).toHaveAttribute( 'href', - '/create/?filters%5Bkind%5D=API&filters%5Btype%5D=openapi&filters%5Bowners%5D=user%3Athe-user&filters%5Bowners%5D=my-team&filters%5Buser%5D=all', + '/create/?filters%5Bkind%5D=API&filters%5Btype%5D=openapi&filters%5Bowners%5D%5B0%5D=user%3Athe-user&filters%5Bowners%5D%5B1%5D=my-team&filters%5Buser%5D=all', ); }); }); From e4d5b8c7fff92b0520cc7b346632277c76febc8b Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 4 Mar 2022 15:13:45 +0700 Subject: [PATCH 316/410] rename owner to ownerEntity for getQueryParams Signed-off-by: Prasetya Aria Wibawa --- .../components/Cards/OwnershipCard/useDirectEntities.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts index 20d4c3a76d..6b8886a5e6 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts @@ -35,10 +35,10 @@ type EntityTypeProps = { }; const getQueryParams = ( - owner: Entity, + ownerEntity: Entity, selectedEntity: EntityTypeProps, ): string => { - const ownerName = humanizeEntityRef(owner, { defaultKind: 'group' }); + const ownerName = humanizeEntityRef(ownerEntity, { defaultKind: 'group' }); const { kind, type } = selectedEntity; const filters = { kind, @@ -46,8 +46,8 @@ const getQueryParams = ( owners: [ownerName], user: 'all', }; - if (owner.kind === 'User') { - const ownerGroups = getEntityRelations(owner, RELATION_MEMBER_OF, { + if (ownerEntity.kind === 'User') { + const ownerGroups = getEntityRelations(ownerEntity, RELATION_MEMBER_OF, { kind: 'Group', }); const ownerGroupsName = ownerGroups.map(ownerGroup => ownerGroup.name); From 69d652f3cc4b6071a004ba816c52a503812853ba Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Fri, 4 Mar 2022 15:15:17 +0700 Subject: [PATCH 317/410] use relations.ownedBy for filter params in getEntities Signed-off-by: Prasetya Aria Wibawa --- .../OwnershipCard/useAggregatedEntities.ts | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts index e6ef55b32b..52390cccef 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts @@ -14,7 +14,11 @@ * limitations under the License. */ -import { Entity, RELATION_PARENT_OF } from '@backstage/catalog-model'; +import { + Entity, + RELATION_PARENT_OF, + stringifyEntityRef, +} from '@backstage/catalog-model'; import { catalogApiRef, getEntityRelations, @@ -33,10 +37,12 @@ type EntityTypeProps = { }; const getQueryParams = ( - owners: string[], + ownerEntitiesRef: string[], selectedEntity: EntityTypeProps, ): string => { const { kind, type } = selectedEntity; + // removing 'group:default/' from the string entity ref 'group:default/team-a' + const owners = ownerEntitiesRef.map(owner => owner.split('/')[1]); const filters = { kind, type, @@ -104,7 +110,13 @@ export function useAggregatedEntities( ), ); requestedEntities.shift(); - processedEntities.add(currentEntity.metadata.name); + processedEntities.add( + stringifyEntityRef({ + kind: currentEntity.kind, + namespace: currentEntity.metadata.namespace, + name: currentEntity.metadata.name, + }), + ); // always set currentEntity to the first element of array requestedEntities currentEntity = requestedEntities[0]; } @@ -114,7 +126,7 @@ export function useAggregatedEntities( filter: [ { kind: kinds, - 'spec.owner': owners, + 'relations.ownedBy': owners, }, ], fields: [ From 103b72b704acfe9b7eb259e0b444e8eccdd517b9 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 24 Mar 2022 14:20:20 +0700 Subject: [PATCH 318/410] update to just use one hooks and one component grid in ownership card Signed-off-by: Prasetya Aria Wibawa --- ...edRelationsGrid.tsx => ComponentsGrid.tsx} | 9 +- .../OwnershipCard/DirectRelationsGrid.tsx | 122 ------------ .../Cards/OwnershipCard/OwnershipCard.tsx | 32 +-- .../OwnershipCard/useAggregatedEntities.ts | 183 ------------------ ...useDirectEntities.ts => useGetEntities.ts} | 88 +++++++-- 5 files changed, 82 insertions(+), 352 deletions(-) rename plugins/org/src/components/Cards/OwnershipCard/{AggregatedRelationsGrid.tsx => ComponentsGrid.tsx} (93%) delete mode 100644 plugins/org/src/components/Cards/OwnershipCard/DirectRelationsGrid.tsx delete mode 100644 plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts rename plugins/org/src/components/Cards/OwnershipCard/{useDirectEntities.ts => useGetEntities.ts} (62%) diff --git a/plugins/org/src/components/Cards/OwnershipCard/AggregatedRelationsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx similarity index 93% rename from plugins/org/src/components/Cards/OwnershipCard/AggregatedRelationsGrid.tsx rename to plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx index 4839e4db56..e62013d688 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/AggregatedRelationsGrid.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx @@ -28,7 +28,7 @@ import { import React from 'react'; import pluralize from 'pluralize'; import { catalogIndexRouteRef } from '../../../routes'; -import { useAggregatedEntities } from './useAggregatedEntities'; +import { useGetEntities } from './useGetEntities'; const useStyles = makeStyles((theme: BackstageTheme) => createStyles({ @@ -86,16 +86,19 @@ const EntityCountTile = ({ }; // can only be used for group entity -export const AggregatedRelationsGrid = ({ +export const ComponentsGrid = ({ entity, + relationsType, entityFilterKind, }: { entity: Entity; + relationsType: string; entityFilterKind?: string[]; }) => { const catalogLink = useRouteRef(catalogIndexRouteRef); - const { componentsWithCounters, loading, error } = useAggregatedEntities( + const { componentsWithCounters, loading, error } = useGetEntities( entity, + relationsType, entityFilterKind, ); diff --git a/plugins/org/src/components/Cards/OwnershipCard/DirectRelationsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/DirectRelationsGrid.tsx deleted file mode 100644 index a7cd521ecc..0000000000 --- a/plugins/org/src/components/Cards/OwnershipCard/DirectRelationsGrid.tsx +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Entity } from '@backstage/catalog-model'; -import { Link, Progress, ResponseErrorPanel } from '@backstage/core-components'; -import { useRouteRef } from '@backstage/core-plugin-api'; -import { BackstageTheme } from '@backstage/theme'; -import { - Box, - createStyles, - Grid, - makeStyles, - Typography, -} from '@material-ui/core'; -import React from 'react'; -import pluralize from 'pluralize'; -import { catalogIndexRouteRef } from '../../../routes'; -import { useDirectEntities } from './useDirectEntities'; - -const useStyles = makeStyles((theme: BackstageTheme) => - createStyles({ - card: { - border: `1px solid ${theme.palette.divider}`, - boxShadow: theme.shadows[2], - borderRadius: '4px', - padding: theme.spacing(2), - color: '#fff', - transition: `${theme.transitions.duration.standard}ms`, - '&:hover': { - boxShadow: theme.shadows[4], - }, - }, - bold: { - fontWeight: theme.typography.fontWeightBold, - }, - entityTypeBox: { - background: (props: { type: string }) => - theme.getPageTheme({ themeId: props.type }).backgroundImage, - }, - }), -); - -const EntityCountTile = ({ - counter, - type, - name, - url, -}: { - counter: number; - type: string; - name: string; - url: string; -}) => { - const classes = useStyles({ type }); - - return ( - - - - {counter} - - - {pluralize(name, counter)} - - - - ); -}; - -export const DirectRelationsGrid = ({ - entity, - entityFilterKind, -}: { - entity: Entity; - entityFilterKind?: string[]; -}) => { - const catalogLink = useRouteRef(catalogIndexRouteRef); - - const { componentsWithCounters, loading, error } = useDirectEntities( - entity, - entityFilterKind, - ); - - if (loading) { - return ; - } else if (error) { - return ; - } - - return ( - - {componentsWithCounters?.map(c => ( - - - - ))} - - ); -}; diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index 37541a786a..f188e6de01 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -14,7 +14,6 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { InfoCard, InfoCardVariants } from '@backstage/core-components'; import { useEntity } from '@backstage/plugin-catalog-react'; import { @@ -27,8 +26,7 @@ import { Tooltip, } from '@material-ui/core'; import React, { useState } from 'react'; -import { DirectRelationsGrid } from './DirectRelationsGrid'; -import { AggregatedRelationsGrid } from './AggregatedRelationsGrid'; +import { ComponentsGrid } from './ComponentsGrid'; const useStyles = makeStyles(theme => ({ list: { @@ -53,24 +51,6 @@ const useStyles = makeStyles(theme => ({ }, })); -const directRelationsGrid = (entity: Entity, entityFilterKind?: string[]) => { - return ( - - ); -}; - -const aggregatedRelationsGrid = ( - entity: Entity, - entityFilterKind?: string[], -) => { - return ( - - ); -}; - export const OwnershipCard = ({ variant, entityFilterKind, @@ -82,10 +62,6 @@ export const OwnershipCard = ({ const { entity } = useEntity(); const isGroup = entity.kind === 'Group'; const [relationsType, setRelationsType] = useState('direct'); - const renderedGrid = - relationsType !== 'direct' && isGroup - ? aggregatedRelationsGrid(entity, entityFilterKind) - : directRelationsGrid(entity, entityFilterKind); return ( @@ -118,7 +94,11 @@ export const OwnershipCard = ({ - {renderedGrid} + ); }; diff --git a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts deleted file mode 100644 index 52390cccef..0000000000 --- a/plugins/org/src/components/Cards/OwnershipCard/useAggregatedEntities.ts +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - Entity, - RELATION_PARENT_OF, - stringifyEntityRef, -} from '@backstage/catalog-model'; -import { - catalogApiRef, - getEntityRelations, -} from '@backstage/plugin-catalog-react'; -import limiterFactory from 'p-limit'; -import { useApi } from '@backstage/core-plugin-api'; -import useAsync from 'react-use/lib/useAsync'; -import qs from 'qs'; - -const limiter = limiterFactory(10); - -type EntityTypeProps = { - kind: string; - type: string; - count: number; -}; - -const getQueryParams = ( - ownerEntitiesRef: string[], - selectedEntity: EntityTypeProps, -): string => { - const { kind, type } = selectedEntity; - // removing 'group:default/' from the string entity ref 'group:default/team-a' - const owners = ownerEntitiesRef.map(owner => owner.split('/')[1]); - const filters = { - kind, - type, - owners, - user: 'all', - }; - const queryParams = qs.stringify({ - filters, - }); - - return queryParams; -}; - -export function useAggregatedEntities( - entity: Entity, - entityFilterKind?: string[], -): { - componentsWithCounters: - | { - counter: number; - type: string; - name: string; - queryParams: string; - }[] - | undefined; - loading: boolean; - error?: Error; -} { - const catalogApi = useApi(catalogApiRef); - const requestedEntities: Entity[] = []; - const outstandingEntities = new Map>(); - const processedEntities = new Set(); - requestedEntities.push(entity); - let currentEntity = entity; - const kinds = entityFilterKind ?? ['Component', 'API', 'System']; - - const { - loading, - error, - value: componentsWithCounters, - } = useAsync(async () => { - while (requestedEntities.length > 0) { - const childRelations = getEntityRelations( - currentEntity, - RELATION_PARENT_OF, - { - kind: 'Group', - }, - ); - - await Promise.all( - childRelations.map(childGroup => - limiter(async () => { - const promise = catalogApi.getEntityByRef(childGroup); - outstandingEntities.set(childGroup.name, promise); - try { - const processedEntity = await promise; - if (processedEntity) { - requestedEntities.push(processedEntity); - } - } finally { - outstandingEntities.delete(childGroup.name); - } - }), - ), - ); - requestedEntities.shift(); - processedEntities.add( - stringifyEntityRef({ - kind: currentEntity.kind, - namespace: currentEntity.metadata.namespace, - name: currentEntity.metadata.name, - }), - ); - // always set currentEntity to the first element of array requestedEntities - currentEntity = requestedEntities[0]; - } - - const owners = Array.from(processedEntities); - const ownedAggregationEntitiesList = await catalogApi.getEntities({ - filter: [ - { - kind: kinds, - 'relations.ownedBy': owners, - }, - ], - fields: [ - 'kind', - 'metadata.name', - 'metadata.namespace', - 'spec.type', - 'relations', - ], - }); - - const counts = ownedAggregationEntitiesList.items.reduce( - (acc: EntityTypeProps[], ownedEntity) => { - const match = acc.find( - x => - x.kind === ownedEntity.kind && - x.type === (ownedEntity.spec?.type ?? ownedEntity.kind), - ); - if (match) { - match.count += 1; - } else { - acc.push({ - kind: ownedEntity.kind, - type: ownedEntity.spec?.type?.toString() ?? ownedEntity.kind, - count: 1, - }); - } - return acc; - }, - [], - ); - - // Return top N (six) entities to be displayed in ownership boxes - const topN = counts.sort((a, b) => b.count - a.count).slice(0, 6); - - return topN.map(topOwnedEntity => ({ - counter: topOwnedEntity.count, - type: topOwnedEntity.type, - name: topOwnedEntity.type.toLocaleUpperCase('en-US'), - queryParams: getQueryParams(owners, topOwnedEntity), - })) as Array<{ - counter: number; - type: string; - name: string; - queryParams: string; - }>; - }, [catalogApi, entity]); - - return { - componentsWithCounters, - loading, - error, - }; -} diff --git a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts similarity index 62% rename from plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts rename to plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts index 6b8886a5e6..d8a269c868 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useDirectEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts @@ -17,16 +17,20 @@ import { Entity, RELATION_MEMBER_OF, + RELATION_PARENT_OF, stringifyEntityRef, } from '@backstage/catalog-model'; -import { useApi } from '@backstage/core-plugin-api'; import { + CatalogApi, catalogApiRef, getEntityRelations, - humanizeEntityRef, } from '@backstage/plugin-catalog-react'; -import qs from 'qs'; +import limiterFactory from 'p-limit'; +import { useApi } from '@backstage/core-plugin-api'; import useAsync from 'react-use/lib/useAsync'; +import qs from 'qs'; + +const limiter = limiterFactory(10); type EntityTypeProps = { kind: string; @@ -35,24 +39,17 @@ type EntityTypeProps = { }; const getQueryParams = ( - ownerEntity: Entity, + ownersEntityRef: string[], selectedEntity: EntityTypeProps, ): string => { - const ownerName = humanizeEntityRef(ownerEntity, { defaultKind: 'group' }); const { kind, type } = selectedEntity; + const owners = ownersEntityRef.map(owner => owner.split('/')[1]); const filters = { kind, type, - owners: [ownerName], + owners, user: 'all', }; - if (ownerEntity.kind === 'User') { - const ownerGroups = getEntityRelations(ownerEntity, RELATION_MEMBER_OF, { - kind: 'Group', - }); - const ownerGroupsName = ownerGroups.map(ownerGroup => ownerGroup.name); - filters.owners = [...filters.owners, ...ownerGroupsName]; - } const queryParams = qs.stringify({ filters, }); @@ -78,8 +75,59 @@ const getOwnersEntityRef = (owner: Entity): string[] => { return owners; }; -export function useDirectEntities( +const getAggregatedOwnersEntityRef = async ( + parentGroup: Entity, + catalogApi: CatalogApi, +): Promise => { + const requestedEntities: Entity[] = []; + const outstandingEntities = new Map>(); + const processedEntities = new Set(); + requestedEntities.push(parentGroup); + let currentEntity = parentGroup; + + while (requestedEntities.length > 0) { + const childRelations = getEntityRelations( + currentEntity, + RELATION_PARENT_OF, + { + kind: 'Group', + }, + ); + + await Promise.all( + childRelations.map(childGroup => + limiter(async () => { + const promise = catalogApi.getEntityByRef(childGroup); + outstandingEntities.set(childGroup.name, promise); + try { + const processedEntity = await promise; + if (processedEntity) { + requestedEntities.push(processedEntity); + } + } finally { + outstandingEntities.delete(childGroup.name); + } + }), + ), + ); + requestedEntities.shift(); + processedEntities.add( + stringifyEntityRef({ + kind: currentEntity.kind, + namespace: currentEntity.metadata.namespace, + name: currentEntity.metadata.name, + }), + ); + // always set currentEntity to the first element of array requestedEntities + currentEntity = requestedEntities[0]; + } + + return Array.from(processedEntities); +}; + +export function useGetEntities( entity: Entity, + relationsType: string, entityFilterKind?: string[], ): { componentsWithCounters: @@ -94,14 +142,18 @@ export function useDirectEntities( error?: Error; } { const catalogApi = useApi(catalogApiRef); + const kinds = entityFilterKind ?? ['Component', 'API', 'System']; + const isGroup = entity.kind === 'Group'; const { loading, error, value: componentsWithCounters, } = useAsync(async () => { - const kinds = entityFilterKind ?? ['Component', 'API', 'System']; - const owners = getOwnersEntityRef(entity); + const owners = + relationsType === 'aggregated' && isGroup + ? await getAggregatedOwnersEntityRef(entity, catalogApi) + : getOwnersEntityRef(entity); const ownedEntitiesList = await catalogApi.getEntities({ filter: [ { @@ -146,14 +198,14 @@ export function useDirectEntities( counter: topOwnedEntity.count, type: topOwnedEntity.type, name: topOwnedEntity.type.toLocaleUpperCase('en-US'), - queryParams: getQueryParams(entity, topOwnedEntity), + queryParams: getQueryParams(owners, topOwnedEntity), })) as Array<{ counter: number; type: string; name: string; queryParams: string; }>; - }, [catalogApi, entity]); + }, [catalogApi, entity, relationsType]); return { componentsWithCounters, From 102e6efea595e583ab99619a63b5abf58455c147 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 24 Mar 2022 14:35:08 +0700 Subject: [PATCH 319/410] fix test ownership card Signed-off-by: Prasetya Aria Wibawa --- .../src/components/Cards/OwnershipCard/OwnershipCard.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx index 6c9b25fd08..dcaae2d4bf 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.test.tsx @@ -288,7 +288,7 @@ describe('OwnershipCard', () => { expect(getByText('OPENAPI').closest('a')).toHaveAttribute( 'href', - '/create/?filters%5Bkind%5D=API&filters%5Btype%5D=openapi&filters%5Bowners%5D%5B0%5D=user%3Athe-user&filters%5Bowners%5D%5B1%5D=my-team&filters%5Buser%5D=all', + '/create/?filters%5Bkind%5D=API&filters%5Btype%5D=openapi&filters%5Bowners%5D%5B0%5D=the-user&filters%5Bowners%5D%5B1%5D=my-team&filters%5Buser%5D=all', ); }); }); From f12cb33bd57949c0f6844f61de3423ffce542a3b Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 24 Mar 2022 14:56:43 +0700 Subject: [PATCH 320/410] passing down isGroup value from ownershipCard to useGetEntities Signed-off-by: Prasetya Aria Wibawa --- .../org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx | 3 +++ .../org/src/components/Cards/OwnershipCard/OwnershipCard.tsx | 1 + .../org/src/components/Cards/OwnershipCard/useGetEntities.ts | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx index e62013d688..4b14487a29 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx @@ -89,16 +89,19 @@ const EntityCountTile = ({ export const ComponentsGrid = ({ entity, relationsType, + isGroup, entityFilterKind, }: { entity: Entity; relationsType: string; + isGroup: boolean; entityFilterKind?: string[]; }) => { const catalogLink = useRouteRef(catalogIndexRouteRef); const { componentsWithCounters, loading, error } = useGetEntities( entity, relationsType, + isGroup, entityFilterKind, ); diff --git a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx index f188e6de01..13e8502b7a 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/OwnershipCard.tsx @@ -97,6 +97,7 @@ export const OwnershipCard = ({ diff --git a/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts b/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts index d8a269c868..48760002fa 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts +++ b/plugins/org/src/components/Cards/OwnershipCard/useGetEntities.ts @@ -128,6 +128,7 @@ const getAggregatedOwnersEntityRef = async ( export function useGetEntities( entity: Entity, relationsType: string, + isGroup: boolean, entityFilterKind?: string[], ): { componentsWithCounters: @@ -143,7 +144,6 @@ export function useGetEntities( } { const catalogApi = useApi(catalogApiRef); const kinds = entityFilterKind ?? ['Component', 'API', 'System']; - const isGroup = entity.kind === 'Group'; const { loading, From 0e5c9b2c8aaec700c7ce6d34b90d3999d65e98e3 Mon Sep 17 00:00:00 2001 From: Prasetya Aria Wibawa Date: Thu, 24 Mar 2022 16:14:16 +0700 Subject: [PATCH 321/410] remove unused comment Signed-off-by: Prasetya Aria Wibawa --- .../org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx index 4b14487a29..6f7680849c 100644 --- a/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx +++ b/plugins/org/src/components/Cards/OwnershipCard/ComponentsGrid.tsx @@ -85,7 +85,6 @@ const EntityCountTile = ({ ); }; -// can only be used for group entity export const ComponentsGrid = ({ entity, relationsType, From bf9ea11b3e54d4514c209d09bd2ef21fb47e0fc4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Mar 2022 10:48:27 +0000 Subject: [PATCH 322/410] build(deps): bump eslint from 8.10.0 to 8.11.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.10.0 to 8.11.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.10.0...v8.11.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/yarn.lock b/yarn.lock index 36068320ab..634c1b0b24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2024,16 +2024,16 @@ ts-node "^9" tslib "^2" -"@eslint/eslintrc@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz#7ce1547a5c46dfe56e1e45c3c9ed18038c721c6a" - integrity sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w== +"@eslint/eslintrc@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" + integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== dependencies: ajv "^6.12.4" debug "^4.3.2" espree "^9.3.1" globals "^13.9.0" - ignore "^4.0.6" + ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.0.4" @@ -11869,11 +11869,11 @@ eslint-webpack-plugin@^2.6.0: schema-utils "^3.1.1" eslint@^8.6.0: - version "8.10.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz#931be395eb60f900c01658b278e05b6dae47199d" - integrity sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw== + version "8.11.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz#88b91cfba1356fc10bb9eb592958457dfe09fb37" + integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA== dependencies: - "@eslint/eslintrc" "^1.2.0" + "@eslint/eslintrc" "^1.2.1" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -14134,11 +14134,6 @@ ignore@^3.3.5: resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" From b408d911fdfd725f6f1bbe0545c06f229f3195f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 24 Mar 2022 11:48:43 +0100 Subject: [PATCH 323/410] cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- yarn.lock | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/yarn.lock b/yarn.lock index e2d1ab9985..801c49206f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2495,12 +2495,12 @@ valid-url "1.0.9" "@graphql-tools/load@^7.3.0", "@graphql-tools/load@^7.4.1": - version "7.5.1" - resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz#8c7f846d2185ddc1d44fdfbf1ed9cb678f69e40b" - integrity sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg== + version "7.5.5" + resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.5.tgz#d61e5bdee59b6c8aa9631f74f0b2a70d512e5b31" + integrity sha512-qPasit140nwTbMQbFCfZcgaS7q/0+xMQGdkMGU11rtHt6/jMgJIKDUU8/fJGKltNY3EeHlEdVtZmggZD7Rr6bA== dependencies: - "@graphql-tools/schema" "8.3.1" - "@graphql-tools/utils" "^8.6.0" + "@graphql-tools/schema" "8.3.5" + "@graphql-tools/utils" "8.6.5" p-limit "3.1.0" tslib "~2.3.0" @@ -2573,13 +2573,13 @@ relay-compiler "12.0.0" tslib "~2.3.0" -"@graphql-tools/schema@8.3.1": - version "8.3.1" - resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" - integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== +"@graphql-tools/schema@8.3.5", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": + version "8.3.5" + resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.5.tgz#ebec0c0c7f53e591d34375d6f81d0660852fcaca" + integrity sha512-3mJ/K7TdL+fnEUtCUqF4qkh1fcNMzaxgwKgO9fSYSTS7zyT16hbi5XSulSTshygHgaD2u+MO588iR4ZJcbZcIg== dependencies: - "@graphql-tools/merge" "^8.2.1" - "@graphql-tools/utils" "^8.5.1" + "@graphql-tools/merge" "8.2.6" + "@graphql-tools/utils" "8.6.5" tslib "~2.3.0" value-or-promise "1.0.11" @@ -2592,16 +2592,6 @@ tslib "~2.2.0" value-or-promise "1.0.6" -"@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": - version "8.3.5" - resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.5.tgz#ebec0c0c7f53e591d34375d6f81d0660852fcaca" - integrity sha512-3mJ/K7TdL+fnEUtCUqF4qkh1fcNMzaxgwKgO9fSYSTS7zyT16hbi5XSulSTshygHgaD2u+MO588iR4ZJcbZcIg== - dependencies: - "@graphql-tools/merge" "8.2.6" - "@graphql-tools/utils" "8.6.5" - tslib "~2.3.0" - value-or-promise "1.0.11" - "@graphql-tools/url-loader@^6.0.0": version "6.10.1" resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz#dc741e4299e0e7ddf435eba50a1f713b3e763b33" From 0654c87cf2feac5ddd4588e9e8c813c6c5b1470e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 13:19:59 +0100 Subject: [PATCH 324/410] backend-test-utils: avoid cleanup if no databases are supported Signed-off-by: Patrik Oldsberg --- .changeset/pretty-ghosts-scream.md | 5 +++++ packages/backend-test-utils/src/database/TestDatabases.ts | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 .changeset/pretty-ghosts-scream.md diff --git a/.changeset/pretty-ghosts-scream.md b/.changeset/pretty-ghosts-scream.md new file mode 100644 index 0000000000..7a604d75b6 --- /dev/null +++ b/.changeset/pretty-ghosts-scream.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-test-utils': patch +--- + +`TestDatabases.create` will no longer set up an `afterAll` test handler if no databases are supported. diff --git a/packages/backend-test-utils/src/database/TestDatabases.ts b/packages/backend-test-utils/src/database/TestDatabases.ts index a7f5ceb344..76d12ce8f1 100644 --- a/packages/backend-test-utils/src/database/TestDatabases.ts +++ b/packages/backend-test-utils/src/database/TestDatabases.ts @@ -91,9 +91,11 @@ export class TestDatabases { const databases = new TestDatabases(supportedIds); - afterAll(async () => { - await databases.shutdown(); - }); + if (supportedIds.length > 0) { + afterAll(async () => { + await databases.shutdown(); + }); + } return databases; } From fe8ac3595cf110922055ca79580123e0df57be22 Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 24 Mar 2022 13:26:52 +0100 Subject: [PATCH 325/410] actions: add renovate Signed-off-by: Johan Haals --- .github/renovate.json5 | 3 + .../workflows/sync_renovate-changesets.yml | 97 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 .github/renovate.json5 create mode 100644 .github/workflows/sync_renovate-changesets.yml diff --git a/.github/renovate.json5 b/.github/renovate.json5 new file mode 100644 index 0000000000..a32a4bb9d2 --- /dev/null +++ b/.github/renovate.json5 @@ -0,0 +1,3 @@ +{ + extends: ['config:base', ':disableDependencyDashboard', ':gitSignOff'], +} diff --git a/.github/workflows/sync_renovate-changesets.yml b/.github/workflows/sync_renovate-changesets.yml new file mode 100644 index 0000000000..780972bd0f --- /dev/null +++ b/.github/workflows/sync_renovate-changesets.yml @@ -0,0 +1,97 @@ +name: Sync Renovate changeset +on: + pull_request_target: + paths: + - '.github/workflows/sync_renovate-changesets.yml' + - '**/yarn.lock' + +jobs: + generate-changeset: + runs-on: ubuntu-latest + if: github.actor == 'renovate[bot]' && github.repository == 'backstage/backstage' + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 2 + ref: ${{ github.head_ref }} + token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} + - name: Configure Git + run: | + git config --global user.email noreply@backstage.io + git config --global user.name 'Github changeset workflow' + - name: Generate changeset + uses: actions/github-script@v5 + with: + script: | + const { promises: fs } = require("fs"); + // Parses package.json files and returns the package names + async function getPackagesNames(files) { + const names = []; + for (const file of files) { + const data = JSON.parse(await fs.readFile(file, "utf8")); + if (!data.private) { + names.push(data.name); + } + } + return names; + } + + async function createChangeset(fileName, packageBumps, packages) { + let message = ""; + for (const [pkg, bump] of packageBumps) { + message = message + `Updated dependency \`${pkg}\` to \`${bump}\`.\n`; + } + + const pkgs = packages.map((pkg) => `'${pkg}': patch`).join("\n"); + const body = `---\n${pkgs}\n---\n\n${message}\n`; + await fs.writeFile(fileName, body); + } + + async function getBumps(files) { + const bumps = new Map(); + for (const file of files) { + const { stdout: changes } = await exec.getExecOutput("git", [ + "show", + file, + ]); + for (const change of changes.split("\n")) { + if (!change.startsWith("+ ")) { + continue; + } + const match = change.match(/"(.*?)"/g); + bumps.set(match[0].replace(/"/g, ""), match[1].replace(/"/g, "")); + } + } + return bumps; + } + + const branch = await exec.getExecOutput("git branch --show-current"); + if (!branch.stdout.startsWith("renovate/")) { + console.log("Not a renovate branch, skipping"); + return; + } + const diffOutput = await exec.getExecOutput("git diff --name-only HEAD~1"); + const diffFiles = diffOutput.stdout.split("\n"); + if (diffFiles.find((f) => f.startsWith(".changeset"))) { + console.log("Changeset already exists, skipping"); + return; + } + const files = diffFiles + .filter((file) => file !== "package.json") // skip root package.json + .filter((file) => file.includes("package.json")); + const packageNames = await getPackagesNames(files); + if (!packageNames.length) { + console.log("No package.json changes to published packages, skipping"); + return; + } + const { stdout: shortHash } = await exec.getExecOutput( + "git rev-parse --short HEAD" + ); + const fileName = `.changeset/renovate-${shortHash.trim()}.md`; + + const packageBumps = await getBumps(files); + await createChangeset(fileName, packageBumps, packageNames); + await exec.exec("git", ["add", fileName]); + await exec.exec("git commit -C HEAD --amend --no-edit"); + await exec.exec("git push --force"); From 26b0f39d8834023c9127e6fed2f1285afdb6529d Mon Sep 17 00:00:00 2001 From: Johan Haals Date: Thu, 24 Mar 2022 14:13:33 +0100 Subject: [PATCH 326/410] add label Signed-off-by: Johan Haals --- .github/renovate.json5 | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index a32a4bb9d2..47b10068cc 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,3 +1,4 @@ { + labels: ['dependencies'], extends: ['config:base', ':disableDependencyDashboard', ':gitSignOff'], } From 5b3079694e1eba89e6db1b525d666a60554b46c6 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 14:17:30 +0100 Subject: [PATCH 327/410] cli: stop logging stopped watcher Signed-off-by: Patrik Oldsberg --- .changeset/hip-poems-breathe.md | 5 +++++ packages/cli/src/lib/bundler/backend.ts | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .changeset/hip-poems-breathe.md diff --git a/.changeset/hip-poems-breathe.md b/.changeset/hip-poems-breathe.md new file mode 100644 index 0000000000..f8a507b2a7 --- /dev/null +++ b/.changeset/hip-poems-breathe.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Stop logging "Stopped watcher" when shutting down the development backend. diff --git a/packages/cli/src/lib/bundler/backend.ts b/packages/cli/src/lib/bundler/backend.ts index bd4ab42098..1b161976e3 100644 --- a/packages/cli/src/lib/bundler/backend.ts +++ b/packages/cli/src/lib/bundler/backend.ts @@ -35,9 +35,8 @@ export async function serveBackend(options: BackendServeOptions) { const waitForExit = async () => { for (const signal of ['SIGINT', 'SIGTERM'] as const) { process.on(signal, () => { - compiler.close(() => console.log('Stopped watcher')); // exit instead of resolve. The process is shutting down and resolving a promise here logs an error - process.exit(); + compiler.close(() => process.exit()); }); } From 3560397f6147ccb51921e8ecb9cb40d7dfd95299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 24 Mar 2022 14:34:17 +0100 Subject: [PATCH 328/410] changeset script typo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- scripts/generate-changeset-feedback.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate-changeset-feedback.js b/scripts/generate-changeset-feedback.js index 588b13654c..1d5fc630bb 100644 --- a/scripts/generate-changeset-feedback.js +++ b/scripts/generate-changeset-feedback.js @@ -181,7 +181,7 @@ The following package(s) are changed by this PR but do not have a changeset: } }, ` -See [CONTRIBUTION.md](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md#creating-changesets) for more information about how to add changesets. +See [CONTRIBUTING.md](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md#creating-changesets) for more information about how to add changesets. `, ); From b7436743cb8f331a9935422fc2cc7385003b5b61 Mon Sep 17 00:00:00 2001 From: Niklas Aronsson Date: Wed, 16 Mar 2022 15:11:47 +0100 Subject: [PATCH 329/410] GerritUrlReader added that implements "readUrl" The url used by "readUrl" is supposed to be human friendly url that can be opened in the browser. This makes the Gerrit configuration a bit more complicated since there is no built in support to browse a git in Gerrit. Instead this is handled by separate services that can be deployed at a different host then the Gerrit instance. This implementation supports Gitiles as the code browser tool. The dependency to Gitiles is optional, it is perfectly possible to integrate Gerrit with Backstage but it will not be possible to open the "human readable links" found in different places of the Backstage gui. A new optional config field has been added to Gerrit integration where the base url of the Gitiles installation can be set. This is needed to create a working link to some git content. A new "url reader" has been added that reads content from Gerrit, as of now only "readUrl" is implemented ("readTree" will soon follow). The format of url is the format used by Gitiles. Gerrit's "readUrl" is pretty simple, it's a single API call to Gerrit that returns the content base64 encoded. What is a bit different to other "urlReaders" is the predicate function in that is not matching the host of the Gerrrit API. The "host" variable in the config is the Gerrit host. The address where Gitiles is installed may be on the same host but it could be on a separate host. For example a Gerrit instance could be hosted on "gerrit-review.company.com" but the repos could be browsable on a separate host, e.g. "gerrit.company.com" and the human readable URL would then not point to the API host. Signed-off-by: Niklas Aronsson --- .changeset/nine-grapes-turn.md | 5 + .changeset/tidy-days-warn.md | 5 + .github/styles/vocab.txt | 1 + packages/backend-common/api-report.md | 18 ++ .../src/reading/GerritUrlReader.test.ts | 173 +++++++++++++++++ .../src/reading/GerritUrlReader.ts | 124 ++++++++++++ .../backend-common/src/reading/UrlReaders.ts | 2 + packages/backend-common/src/reading/index.ts | 1 + packages/integration/api-report.md | 15 ++ .../integration/src/gerrit/config.test.ts | 8 +- packages/integration/src/gerrit/config.ts | 19 ++ packages/integration/src/gerrit/core.test.ts | 177 ++++++++++++++++++ packages/integration/src/gerrit/core.ts | 165 ++++++++++++++++ packages/integration/src/gerrit/index.ts | 6 + 14 files changed, 718 insertions(+), 1 deletion(-) create mode 100644 .changeset/nine-grapes-turn.md create mode 100644 .changeset/tidy-days-warn.md create mode 100644 packages/backend-common/src/reading/GerritUrlReader.test.ts create mode 100644 packages/backend-common/src/reading/GerritUrlReader.ts create mode 100644 packages/integration/src/gerrit/core.test.ts create mode 100644 packages/integration/src/gerrit/core.ts diff --git a/.changeset/nine-grapes-turn.md b/.changeset/nine-grapes-turn.md new file mode 100644 index 0000000000..263618722c --- /dev/null +++ b/.changeset/nine-grapes-turn.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Added the GerritUrlReader that implements "readUrl". diff --git a/.changeset/tidy-days-warn.md b/.changeset/tidy-days-warn.md new file mode 100644 index 0000000000..e84d563f01 --- /dev/null +++ b/.changeset/tidy-days-warn.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': minor +--- + +Gerrit integration: Added an optional configuration to set the Gitiles base url. diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index a1d7397172..3910caccc6 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -108,6 +108,7 @@ Francesco Gerrit gitbeaker github +Gitiles gitlab GitLab Gource diff --git a/packages/backend-common/api-report.md b/packages/backend-common/api-report.md index 1b901ea5ac..cd4d08df87 100644 --- a/packages/backend-common/api-report.md +++ b/packages/backend-common/api-report.md @@ -17,6 +17,7 @@ import Docker from 'dockerode'; import { Duration } from 'luxon'; import { ErrorRequestHandler } from 'express'; import express from 'express'; +import { GerritIntegration } from '@backstage/integration'; import { GithubCredentialsProvider } from '@backstage/integration'; import { GitHubIntegration } from '@backstage/integration'; import { GitLabIntegration } from '@backstage/integration'; @@ -252,6 +253,23 @@ export type FromReadableArrayOptions = Array<{ path: string; }>; +// @public +export class GerritUrlReader implements UrlReader { + constructor(integration: GerritIntegration); + // (undocumented) + static factory: ReaderFactory; + // (undocumented) + read(url: string): Promise; + // (undocumented) + readTree(): Promise; + // (undocumented) + readUrl(url: string, options?: ReadUrlOptions): Promise; + // (undocumented) + search(): Promise; + // (undocumented) + toString(): string; +} + // @public export function getRootLogger(): winston.Logger; diff --git a/packages/backend-common/src/reading/GerritUrlReader.test.ts b/packages/backend-common/src/reading/GerritUrlReader.test.ts new file mode 100644 index 0000000000..bc88fdcb20 --- /dev/null +++ b/packages/backend-common/src/reading/GerritUrlReader.test.ts @@ -0,0 +1,173 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; +import { ConfigReader } from '@backstage/config'; +import { JsonObject } from '@backstage/types'; +import { getVoidLogger } from '../logging'; +import { DefaultReadTreeResponseFactory } from './tree'; +import { UrlReaderPredicateTuple } from './types'; +import { + GerritIntegration, + readGerritIntegrationConfig, +} from '@backstage/integration'; +import { GerritUrlReader } from './GerritUrlReader'; + +const treeResponseFactory = DefaultReadTreeResponseFactory.create({ + config: new ConfigReader({}), +}); + +const gerritProcessor = new GerritUrlReader( + new GerritIntegration( + readGerritIntegrationConfig( + new ConfigReader({ + host: 'gerrit.com', + }), + ), + ), +); + +const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => { + return GerritUrlReader.factory({ + config: new ConfigReader(config), + logger: getVoidLogger(), + treeResponseFactory, + }); +}; + +describe('GerritUrlReader', () => { + const worker = setupServer(); + setupRequestMockHandlers(worker); + + describe('reader factory', () => { + it('creates a reader.', () => { + const readers = createReader({ + integrations: { + gerrit: [{ host: 'gerrit.com' }], + }, + }); + expect(readers).toHaveLength(1); + }); + + it('should not create a default entry.', () => { + const readers = createReader({ + integrations: {}, + }); + expect(readers).toHaveLength(0); + }); + }); + + describe('predicates without Gitiles', () => { + const readers = createReader({ + integrations: { + gerrit: [{ host: 'gerrit.com' }], + }, + }); + const predicate = readers[0].predicate; + + it('returns true for the configured host', () => { + expect(predicate(new URL('https://gerrit.com/path'))).toBe(true); + }); + + it('returns false for a different host.', () => { + expect(predicate(new URL('https://github.com/path'))).toBe(false); + }); + }); + + describe('predicates with gitilesBaseUrl set.', () => { + const readers = createReader({ + integrations: { + gerrit: [ + { host: 'gerrit-review.com', gitilesBaseUrl: 'https://gerrit.com' }, + ], + }, + }); + const predicate = readers[0].predicate; + + it('returns false since gitilesBaseUrl is set to the api host.', () => { + expect(predicate(new URL('https://gerrit-review.com/path'))).toBe(false); + }); + + it('returns false for host.', () => { + expect(predicate(new URL('https://gerrit.com/path'))).toBe(true); + }); + }); + + describe('readUrl', () => { + const responseBuffer = Buffer.from('Apache License'); + it('should be able to read file contents', async () => { + worker.use( + rest.get( + 'https://gerrit.com/projects/web%2Fproject/branches/master/files/LICENSE/content', + (_, res, ctx) => { + return res( + ctx.status(200), + ctx.body(responseBuffer.toString('base64')), + ); + }, + ), + ); + + const result = await gerritProcessor.readUrl( + 'https://gerrit.com/web/project/+/refs/heads/master/LICENSE', + ); + const buffer = await result.buffer(); + expect(buffer.toString()).toBe(responseBuffer.toString()); + }); + + it('should raise NotFoundError on 404.', async () => { + worker.use( + rest.get( + 'https://gerrit.com/projects/web%2Fproject/branches/master/files/LICENSE/content', + (_, res, ctx) => { + return res(ctx.status(404, 'File not found.')); + }, + ), + ); + + await expect( + gerritProcessor.readUrl( + 'https://gerrit.com/web/project/+/refs/heads/master/LICENSE', + ), + ).rejects.toThrow( + 'File https://gerrit.com/web/project/+/refs/heads/master/LICENSE not found.', + ); + }); + + it('should throw an error on non 404 errors.', async () => { + worker.use( + rest.get( + 'https://gerrit.com/projects/web%2Fproject/branches/master/files/LICENSE/content', + (_, res, ctx) => { + return res(ctx.status(500, 'Error!!!')); + }, + ), + ); + + await expect( + gerritProcessor.readUrl( + 'https://gerrit.com/web/project/+/refs/heads/master/LICENSE', + ), + ).rejects.toThrow( + 'https://gerrit.com/web/project/+/refs/heads/master/LICENSE' + + ' could not be read as https://gerrit.com/projects/web%2Fproject' + + '/branches/master/files/LICENSE/content, 500 Error!!!', + ); + }); + }); +}); diff --git a/packages/backend-common/src/reading/GerritUrlReader.ts b/packages/backend-common/src/reading/GerritUrlReader.ts new file mode 100644 index 0000000000..7cc0b4731b --- /dev/null +++ b/packages/backend-common/src/reading/GerritUrlReader.ts @@ -0,0 +1,124 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { NotFoundError } from '@backstage/errors'; +import { + GerritIntegration, + getGerritFileContentsApiUrl, + getGerritRequestOptions, +} from '@backstage/integration'; +import fetch, { Response } from 'node-fetch'; +import { + ReaderFactory, + ReadTreeResponse, + ReadUrlOptions, + ReadUrlResponse, + SearchResponse, + UrlReader, +} from './types'; +import { ScmIntegrations } from '@backstage/integration'; + +/** + * Implements a {@link UrlReader} for files in Gerrit. + * + * @remarks + * To be able to link to Git contents for Gerrit providers in a user friendly + * way we are depending on that there is a Gitiles installation somewhere + * that we can link to. It is perfectly possible to integrate Gerrit with + * Backstage without Gitiles since all API calls goes directly to Gerrit. + * + * The "host" variable in the config is the Gerrit host. The address where + * Gitiles is installed may be on the same host but it could be on a + * separate host. For example a Gerrit instance could be hosted on + * "gerrit-review.company.com" but the repos could be browsable on a separate + * host, e.g. "gerrit.company.com" and the human readable URL would then + * not point to the API host. + * + * @public + */ +export class GerritUrlReader implements UrlReader { + static factory: ReaderFactory = ({ config }) => { + const integrations = ScmIntegrations.fromConfig(config); + if (!integrations.gerrit) { + return []; + } + return integrations.gerrit.list().map(integration => { + const reader = new GerritUrlReader(integration); + const predicate = (url: URL) => { + const gitilesUrl = new URL(integration.config.gitilesBaseUrl!); + // If gitilesUrl is not specfified it will default to + // "integration.config.host". + return url.host === gitilesUrl.host; + }; + return { reader, predicate }; + }); + }; + + constructor(private readonly integration: GerritIntegration) {} + + async read(url: string): Promise { + const response = await this.readUrl(url); + return response.buffer(); + } + + async readUrl( + url: string, + options?: ReadUrlOptions, + ): Promise { + const apiUrl = getGerritFileContentsApiUrl(this.integration.config, url); + let response: Response; + try { + response = await fetch(apiUrl, { + method: 'GET', + ...getGerritRequestOptions(this.integration.config), + // TODO(freben): The signal cast is there because pre-3.x versions of + // node-fetch have a very slightly deviating AbortSignal type signature. + // The difference does not affect us in practice however. The cast can + // be removed after we support ESM for CLI dependencies and migrate to + // version 3 of node-fetch. + // https://github.com/backstage/backstage/issues/8242 + signal: options?.signal as any, + }); + } catch (e) { + throw new Error(`Unable to read gerrit file ${url}, ${e}`); + } + if (response.ok) { + const responseBody = await response.text(); + return { + buffer: async () => Buffer.from(responseBody, 'base64'), + }; + } + if (response.status === 404) { + throw new NotFoundError(`File ${url} not found.`); + } + throw new Error( + `${url} could not be read as ${apiUrl}, ${response.status} ${response.statusText}`, + ); + } + + async readTree(): Promise { + throw new Error('GerritReader does not implement readTree'); + } + + async search(): Promise { + throw new Error('GerritReader does not implement search'); + } + + toString() { + const { host, password } = this.integration.config; + return `gerrit{host=${host},authed=${Boolean(password)}}`; + } +} diff --git a/packages/backend-common/src/reading/UrlReaders.ts b/packages/backend-common/src/reading/UrlReaders.ts index c0aae25808..e676d0e14c 100644 --- a/packages/backend-common/src/reading/UrlReaders.ts +++ b/packages/backend-common/src/reading/UrlReaders.ts @@ -20,6 +20,7 @@ import { ReaderFactory, UrlReader } from './types'; import { UrlReaderPredicateMux } from './UrlReaderPredicateMux'; import { AzureUrlReader } from './AzureUrlReader'; import { BitbucketUrlReader } from './BitbucketUrlReader'; +import { GerritUrlReader } from './GerritUrlReader'; import { GithubUrlReader } from './GithubUrlReader'; import { GitlabUrlReader } from './GitlabUrlReader'; import { DefaultReadTreeResponseFactory } from './tree'; @@ -82,6 +83,7 @@ export class UrlReaders { factories: factories.concat([ AzureUrlReader.factory, BitbucketUrlReader.factory, + GerritUrlReader.factory, GithubUrlReader.factory, GitlabUrlReader.factory, GoogleGcsUrlReader.factory, diff --git a/packages/backend-common/src/reading/index.ts b/packages/backend-common/src/reading/index.ts index 9c29bc93fe..c2c82e2bd5 100644 --- a/packages/backend-common/src/reading/index.ts +++ b/packages/backend-common/src/reading/index.ts @@ -16,6 +16,7 @@ export { AzureUrlReader } from './AzureUrlReader'; export { BitbucketUrlReader } from './BitbucketUrlReader'; +export { GerritUrlReader } from './GerritUrlReader'; export { GithubUrlReader } from './GithubUrlReader'; export { GitlabUrlReader } from './GitlabUrlReader'; export { AwsS3UrlReader } from './AwsS3UrlReader'; diff --git a/packages/integration/api-report.md b/packages/integration/api-report.md index d86acb291a..cdb260f089 100644 --- a/packages/integration/api-report.md +++ b/packages/integration/api-report.md @@ -138,6 +138,7 @@ export class GerritIntegration implements ScmIntegration { export type GerritIntegrationConfig = { host: string; baseUrl?: string; + gitilesBaseUrl?: string; username?: string; password?: string; }; @@ -184,6 +185,17 @@ export function getBitbucketRequestOptions( headers: Record; }; +// @public +export function getGerritFileContentsApiUrl( + config: GerritIntegrationConfig, + url: string, +): string; + +// @public +export function getGerritRequestOptions(config: GerritIntegrationConfig): { + headers?: Record; +}; + // @public export function getGitHubFileFetchUrl( url: string, @@ -330,6 +342,9 @@ export interface IntegrationsByType { gitlab: ScmIntegrationsGroup; } +// @public +export function parseGerritJsonResponse(response: Response): Promise; + // @public export function readAwsS3IntegrationConfig( config: Config, diff --git a/packages/integration/src/gerrit/config.test.ts b/packages/integration/src/gerrit/config.test.ts index ce1ddccd75..9c0d022548 100644 --- a/packages/integration/src/gerrit/config.test.ts +++ b/packages/integration/src/gerrit/config.test.ts @@ -56,6 +56,7 @@ describe('readGerritIntegrationConfig', () => { buildConfig({ host: 'a.com', baseUrl: 'https://a.com/api', + gitilesBaseUrl: 'https://a.com/git', username: 'u', password: 'p', }), @@ -63,6 +64,7 @@ describe('readGerritIntegrationConfig', () => { expect(output).toEqual({ host: 'a.com', baseUrl: 'https://a.com/api', + gitilesBaseUrl: 'https://a.com/git', username: 'u', password: 'p', }); @@ -77,6 +79,7 @@ describe('readGerritIntegrationConfig', () => { expect(output).toEqual({ host: 'a.com', baseUrl: 'https://a.com', + gitilesBaseUrl: 'https://a.com', username: undefined, password: undefined, }); @@ -107,6 +110,7 @@ describe('readGerritIntegrationConfig', () => { ).toEqual({ host: 'a.com', baseUrl: 'https://a.com/gerrit', + gitilesBaseUrl: 'https://a.com', }); }); }); @@ -116,7 +120,7 @@ describe('readGerritIntegrationConfigs', () => { return data.map(item => new ConfigReader(item)); } - it('reads all values', () => { + it('reads multiple configs', () => { const output = readGerritIntegrationConfigs( buildConfig([ { @@ -135,12 +139,14 @@ describe('readGerritIntegrationConfigs', () => { { host: 'a.com', baseUrl: 'https://a.com/api', + gitilesBaseUrl: 'https://a.com', username: 'u', password: 'p', }, { host: 'b.com', baseUrl: 'https://b.com/api', + gitilesBaseUrl: 'https://b.com', username: undefined, password: undefined, }, diff --git a/packages/integration/src/gerrit/config.ts b/packages/integration/src/gerrit/config.ts index 339b590c11..7dbb05d15b 100644 --- a/packages/integration/src/gerrit/config.ts +++ b/packages/integration/src/gerrit/config.ts @@ -38,6 +38,14 @@ export type GerritIntegrationConfig = { */ baseUrl?: string; + /** + * Optional base url for Gitiles. This is needed for creating a valid + * user-friendly url that can be used for browsing the content of the + * provider. If not set a default value will be created in the same way + * as the "baseUrl" option. + */ + gitilesBaseUrl?: string; + /** * The username to use for requests to gerrit. */ @@ -61,6 +69,7 @@ export function readGerritIntegrationConfig( ): GerritIntegrationConfig { const host = config.getString('host'); let baseUrl = config.getOptionalString('baseUrl'); + let gitilesBaseUrl = config.getOptionalString('gitilesBaseUrl'); const username = config.getOptionalString('username'); const password = config.getOptionalString('password'); @@ -72,16 +81,26 @@ export function readGerritIntegrationConfig( throw new Error( `Invalid Gerrit integration config, '${baseUrl}' is not a valid baseUrl`, ); + } else if (gitilesBaseUrl && !isValidUrl(gitilesBaseUrl)) { + throw new Error( + `Invalid Gerrit integration config, '${gitilesBaseUrl}' is not a valid gitilesBaseUrl`, + ); } if (baseUrl) { baseUrl = trimEnd(baseUrl, '/'); } else { baseUrl = `https://${host}`; } + if (gitilesBaseUrl) { + gitilesBaseUrl = trimEnd(gitilesBaseUrl, '/'); + } else { + gitilesBaseUrl = `https://${host}`; + } return { host, baseUrl, + gitilesBaseUrl, username, password, }; diff --git a/packages/integration/src/gerrit/core.test.ts b/packages/integration/src/gerrit/core.test.ts new file mode 100644 index 0000000000..b966a31b9e --- /dev/null +++ b/packages/integration/src/gerrit/core.test.ts @@ -0,0 +1,177 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { rest } from 'msw'; +import { setupServer } from 'msw/node'; +import fetch from 'cross-fetch'; +import { setupRequestMockHandlers } from '@backstage/test-utils'; +import { GerritIntegrationConfig } from './config'; +import { + getGerritRequestOptions, + parseGerritJsonResponse, + parseGitilesUrl, + getGerritFileContentsApiUrl, +} from './core'; + +describe('gerrit core', () => { + const worker = setupServer(); + setupRequestMockHandlers(worker); + + describe('getGerritRequestOptions', () => { + it('adds headers when a password is specified', () => { + const authRequest: GerritIntegrationConfig = { + host: 'gerrit.com', + username: 'U', + password: 'P', + }; + const anonymousRequest: GerritIntegrationConfig = { + host: 'gerrit.com', + }; + expect( + (getGerritRequestOptions(authRequest).headers as any).Authorization, + ).toEqual('Basic VTpQ'); + expect( + getGerritRequestOptions(anonymousRequest).headers as any, + ).toBeUndefined(); + }); + }); + + describe('parseGitilesUrl', () => { + it('can parse a valid gitiles urls.', () => { + const config: GerritIntegrationConfig = { + host: 'gerrit.com', + gitilesBaseUrl: 'https://gerrit.com/gitiles', + }; + const { branch, filePath, project } = parseGitilesUrl( + config, + 'https://gerrit.com/gitiles/web/project/+/refs/heads/master/README.md', + ); + expect(project).toEqual('web/project'); + expect(branch).toEqual('master'); + expect(filePath).toEqual('README.md'); + + const { filePath: rootPath } = parseGitilesUrl( + config, + 'https://gerrit.com/gitiles/web/project/+/refs/heads/master', + ); + expect(rootPath).toEqual('/'); + }); + it('throws on incorrect gitiles urls.', () => { + const config: GerritIntegrationConfig = { + host: 'gerrit.com', + gitilesBaseUrl: 'https://gerrit.com', + }; + expect(() => + parseGitilesUrl( + config, + 'https://gerrit.com/+/refs/heads/master/README.md', + ), + ).toThrow(/project/); + expect(() => + parseGitilesUrl( + config, + 'https://gerrit.com/web/project/+/refs/changes/1/11/master/README.md', + ), + ).toThrow(/branch/); + }); + }); + + describe('getGerritFileContentsApiUrl', () => { + it('can create an url for anonymous access to the file fetch api.', () => { + const config: GerritIntegrationConfig = { + host: 'gerrit.com', + baseUrl: 'https://gerrit.com', + gitilesBaseUrl: 'https://gerrit.com', + }; + const fileContentUrl = getGerritFileContentsApiUrl( + config, + 'https://gerrit.com/web/project/+/refs/heads/master/README.md', + ); + expect(fileContentUrl).toEqual( + 'https://gerrit.com/projects/web%2Fproject/branches/master/files/README.md/content', + ); + }); + it('can create an url for authenticated access to the file fetch api.', () => { + const authConfig: GerritIntegrationConfig = { + host: 'gerrit.com', + baseUrl: 'https://gerrit.com', + gitilesBaseUrl: 'https://gerrit.com', + username: 'u', + password: 'u', + }; + const authFileContentUrl = getGerritFileContentsApiUrl( + authConfig, + 'https://gerrit.com/web/project/+/refs/heads/master/README.md', + ); + expect(authFileContentUrl).toEqual( + 'https://gerrit.com/a/projects/web%2Fproject/branches/master/files/README.md/content', + ); + }); + }); + + describe('parseGerritJsonResponse', () => { + it('can strip the magic prefix from the response.', async () => { + const responseBody = ")]}'[]"; + const apiUrl = 'https://gerrit.com/projects/'; + worker.use( + rest.get(apiUrl, (_, res, ctx) => + res( + ctx.status(200), + ctx.set('Content-Type', 'application/json'), + ctx.text(responseBody), + ), + ), + ); + const response = await fetch(apiUrl, { method: 'GET' }); + const jsonData = await parseGerritJsonResponse(response); + expect(jsonData).toEqual([]); + }); + it('will throw if the magic prefix is missing from the response.', async () => { + const responseBody = '[]'; + const apiUrl = 'https://gerrit.com/projects/'; + worker.use( + rest.get(apiUrl, (_, res, ctx) => + res( + ctx.status(200), + ctx.set('Content-Type', 'application/json'), + ctx.text(responseBody), + ), + ), + ); + const response = await fetch(apiUrl, { method: 'GET' }); + await expect(parseGerritJsonResponse(response)).rejects.toThrow( + /body prefix missing/, + ); + }); + it('will throw on invalid json with the magic prefix.', async () => { + const responseBody = ")]}']{}["; + const apiUrl = 'https://gerrit.com/projects/'; + worker.use( + rest.get(apiUrl, (_, res, ctx) => + res( + ctx.status(200), + ctx.set('Content-Type', 'application/json'), + ctx.text(responseBody), + ), + ), + ); + const response = await fetch(apiUrl, { method: 'GET' }); + await expect(parseGerritJsonResponse(response)).rejects.toThrow( + /response from/, + ); + }); + }); +}); diff --git a/packages/integration/src/gerrit/core.ts b/packages/integration/src/gerrit/core.ts new file mode 100644 index 0000000000..517d27d3ec --- /dev/null +++ b/packages/integration/src/gerrit/core.ts @@ -0,0 +1,165 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { trimStart } from 'lodash'; +import { GerritIntegrationConfig } from '.'; + +const GERRIT_BODY_PREFIX = ")]}'"; + +type GitFile = { + branch: string; + filePath: string; + project: string; +}; + +/** + * Parse a Gitiles URL and return branch, file path and project. + * + * @remarks + * + * Gerrit only handles code reviews so it does not have a native way to browse + * or showing the content of gits. Image if Github only had the "pull requests" + * tab. + * + * Any source code browsing is instead handled by optional services outside + * Gerrit. The url format chosen for the Gerrit url reader is the one used by + * the Gitiles project. Gerrit will work perfectly with Backstage without + * having Gitiles installed but there are some places in the Backstage GUI + * with links to the url used by the url reader. These will not work unless + * the urls point to an actual Gitiles installation. + * + * Gitiles url: + * https://g.com/optional_path/{project}/+/refs/heads/{branch}/{filePath} + * + * + * @param url - An URL pointing to a file stored in git. + * @public + */ + +export function parseGitilesUrl( + config: GerritIntegrationConfig, + url: string, +): GitFile { + const urlPath = url.replace(config.gitilesBaseUrl!, ''); + const parts = urlPath.split('/').filter(p => !!p); + + const projectEndIndex = parts.indexOf('+'); + + if (projectEndIndex <= 0) { + throw new Error(`Unable to parse project from url: ${url}`); + } + const project = trimStart(parts.slice(0, projectEndIndex).join('/'), '/'); + + const branchIndex = parts.indexOf('heads'); + if (branchIndex <= 0) { + throw new Error(`Unable to parse branch from url: ${url}`); + } + const branch = parts[branchIndex + 1]; + const filePath = parts.slice(branchIndex + 2).join('/'); + + return { + branch, + filePath: filePath === '' ? '/' : filePath, + project, + }; +} + +/** + * Return the authentication prefix. + * + * @remarks + * + * To authenticate with a password the API url must be prefixed with "/a/". + * If no password is set anonymous access (without the prefix) will + * be used. + * + * @param config - A Gerrit provider config. + * @public + */ +export function getAuthenticationPrefix( + config: GerritIntegrationConfig, +): string { + return config.password ? '/a/' : '/'; +} + +/** + * Return the url to fetch the contents of a file using the Gerrit API. + * + * @param url - An url pointing to a file in git. + * @public + */ +export function getGerritFileContentsApiUrl( + config: GerritIntegrationConfig, + url: string, +) { + const { branch, filePath, project } = parseGitilesUrl(config, url); + + return `${config.baseUrl}${getAuthenticationPrefix( + config, + )}projects/${encodeURIComponent( + project, + )}/branches/${branch}/files/${encodeURIComponent(filePath)}/content`; +} + +/** + * Return request headers for a Gerrit provider. + * + * @param config - A Gerrit provider config + * @public + */ +export function getGerritRequestOptions(config: GerritIntegrationConfig): { + headers?: Record; +} { + const headers: Record = {}; + + if (!config.password) { + return headers; + } + const buffer = Buffer.from(`${config.username}:${config.password}`, 'utf8'); + headers.Authorization = `Basic ${buffer.toString('base64')}`; + return { + headers, + }; +} + +/** + * Parse the json response from Gerrit and strip the magic prefix. + * + * @remarks + * + * To prevent against XSSI attacks the JSON response body from Gerrit starts + * with a magic prefix that must be stripped before it can be fed to a JSON + * parser. + * + * @param response - An API response. + * @public + */ +export async function parseGerritJsonResponse( + response: Response, +): Promise { + const responseBody = await response.text(); + if (responseBody.startsWith(GERRIT_BODY_PREFIX)) { + try { + return JSON.parse(responseBody.slice(GERRIT_BODY_PREFIX.length)); + } catch (ex) { + throw new Error( + `Invalid response from Gerrit: ${responseBody.slice(0, 10)} - ${ex}`, + ); + } + } + throw new Error( + `Gerrit JSON body prefix missing. Found: ${responseBody.slice(0, 10)}`, + ); +} diff --git a/packages/integration/src/gerrit/index.ts b/packages/integration/src/gerrit/index.ts index baad597a22..75e9779dbc 100644 --- a/packages/integration/src/gerrit/index.ts +++ b/packages/integration/src/gerrit/index.ts @@ -18,4 +18,10 @@ export { readGerritIntegrationConfig, readGerritIntegrationConfigs, } from './config'; +export { + getGerritFileContentsApiUrl, + getGerritRequestOptions, + parseGerritJsonResponse, +} from './core'; + export type { GerritIntegrationConfig } from './config'; From e1f14f4be8f7c26712295b81f27651715b124129 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 15:00:55 +0100 Subject: [PATCH 330/410] scripts/generate-changeset-feedback: fix json output & path matching Signed-off-by: Patrik Oldsberg --- scripts/generate-changeset-feedback.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/generate-changeset-feedback.js b/scripts/generate-changeset-feedback.js index 1d5fc630bb..b614459a0e 100644 --- a/scripts/generate-changeset-feedback.js +++ b/scripts/generate-changeset-feedback.js @@ -97,6 +97,7 @@ async function loadChangesets(filePaths) { ); const bumps = new Map(); + bumps.toJSON = () => Object.fromEntries(bumps); for (const line of lines) { const match = line.match(/^'(.*)': (patch|minor|major)$/); if (!match) { @@ -124,7 +125,7 @@ async function listChangedPackages(changedFiles, packages) { const changedPackageMap = new Map(); for (const filePath of changedFiles) { for (const pkg of packages) { - if (filePath.startsWith(pkg.path)) { + if (filePath.startsWith(`${pkg.path}/`)) { const pkgPath = relativePath(pkg.path, filePath); if (!isPublishedPath(pkgPath)) { break; From 2f127f3aba0adf7919c27fe871b82c1af9feff96 Mon Sep 17 00:00:00 2001 From: Andrew Thal <467872+athal7@users.noreply.github.com> Date: Thu, 24 Mar 2022 10:01:49 -0400 Subject: [PATCH 331/410] Update 2U contacts in ADOPTERS.md Signed-off-by: GitHub --- ADOPTERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index 9a4e3de546..bce16dec9d 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -47,7 +47,7 @@ _If you're using Backstage in your organization, please try to add your company | [creditas.com](https://creditas.com/) | [@aureliosaraiva](https://github.com/aureliosaraiva) [@Creditas](https://github.com/creditas) | Centralization of all services, standards, documentation, etc. We started the deployment process. | | [Prisjakt](https://www.prisjakt.nu) / [PriceSpy](https://pricespy.co.uk) | [@kennylindahl](https://github.com/kennylindahl) | Internal developer portal - Documentation, scaffolding, software catalog, TechRadar, Gitlab org data integration | | [Powerspike](https://powerspike.tv/) | [@trelore](https://github.com/trelore) | Developer portal for documentation of core libraries and repositories. | -| [2U](https://2u.com) | [Andrew Thal](https://github.com/athal7) | Development team home-base, promoting service discoverability, resource dependencies, and tech radar | +| [2U](https://2u.com) | [@danielleEriksen](https://github.com/danielleEriksen), [@sbhatia](https://github.com/sbhatia) | Development team home-base, promoting service discoverability, resource dependencies, and tech radar | | [Taxfix](https://taxfix.de/) | [Sami Ur Rehman](https://github.com/samiurrehman92) | Developer's portal with software catalog at it's core. Hosts API Specs, Tech Docs, Tech Radar and some custom plugins. | | [Busuu](https://busuu.com/) | [Adam Tester](https://github.com/adamtester) | Developer portal with service catalog, API docs, Event docs, service templating, and cost insights. | | [Loadsmart](https://loadsmart.com/) | [Loadsmart](https://github.com/loadsmart) | Improve services visibility and operations for service owners and developers. | From 460c18f129242f45f2a9edb4bd29daab6ad172b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 24 Mar 2022 15:19:37 +0100 Subject: [PATCH 332/410] fix the PluginTaskManagerImpl race condition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../src/tasks/PluginTaskSchedulerImpl.test.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts index 95a9729018..3018ffb4ab 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts @@ -24,6 +24,14 @@ import { ConflictError, NotFoundError } from '@backstage/errors'; jest.useFakeTimers(); +function defer() { + let resolve = () => {}; + const promise = new Promise(_resolve => { + resolve = _resolve; + }); + return { promise, resolve }; +} + describe('PluginTaskManagerImpl', () => { const databases = TestDatabases.create({ ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], @@ -133,14 +141,19 @@ describe('PluginTaskManagerImpl', () => { async databaseId => { const { manager } = await init(databaseId); - const fn = jest.fn(); + const { promise, resolve } = defer(); + await manager.scheduleTask({ id: 'task1', timeout: Duration.fromMillis(5000), frequency: Duration.fromObject({ years: 1 }), - fn, + fn: async () => { + resolve(); + await new Promise(r => setTimeout(r, 20000)); + }, }); + await promise; await expect(() => manager.triggerTask('task1')).rejects.toThrow( ConflictError, ); From 1023ee635352e1cab402856cd50ad0464c24eceb Mon Sep 17 00:00:00 2001 From: Matthew Clarke Date: Thu, 24 Mar 2022 10:24:23 -0400 Subject: [PATCH 333/410] Export kubernetes components (#10401) * export Kubernetes components Signed-off-by: mclarke * changeset Signed-off-by: mclarke * api reports Signed-off-by: mclarke * fix deps Signed-off-by: mclarke * move dep from dev to regular Signed-off-by: mclarke --- .changeset/fresh-cobras-admire.md | 5 + plugins/kubernetes/api-report.md | 268 +++++++++++++++++- plugins/kubernetes/package.json | 3 +- .../src/components/KubernetesDrawer/index.ts | 17 ++ plugins/kubernetes/src/components/index.ts | 28 ++ plugins/kubernetes/src/hooks/index.ts | 1 + plugins/kubernetes/src/index.ts | 3 + .../src/kubernetes-auth-provider/index.ts | 4 + plugins/kubernetes/src/types/index.ts | 17 ++ 9 files changed, 344 insertions(+), 2 deletions(-) create mode 100644 .changeset/fresh-cobras-admire.md create mode 100644 plugins/kubernetes/src/components/KubernetesDrawer/index.ts create mode 100644 plugins/kubernetes/src/components/index.ts create mode 100644 plugins/kubernetes/src/types/index.ts diff --git a/.changeset/fresh-cobras-admire.md b/.changeset/fresh-cobras-admire.md new file mode 100644 index 0000000000..c73d4ab5d5 --- /dev/null +++ b/.changeset/fresh-cobras-admire.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes': patch +--- + +export kubernetes components diff --git a/plugins/kubernetes/api-report.md b/plugins/kubernetes/api-report.md index f635a61cef..e8a3da83a9 100644 --- a/plugins/kubernetes/api-report.md +++ b/plugins/kubernetes/api-report.md @@ -7,6 +7,9 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { ClientPodStatus } from '@backstage/plugin-kubernetes-common'; +import { ClusterAttributes } from '@backstage/plugin-kubernetes-common'; +import { ClusterObjects } from '@backstage/plugin-kubernetes-common'; import { DiscoveryApi } from '@backstage/core-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { IdentityApi } from '@backstage/core-plugin-api'; @@ -14,19 +17,119 @@ import type { JsonObject } from '@backstage/types'; import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common'; import { OAuthApi } from '@backstage/core-plugin-api'; import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common'; +import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; +import { V1ConfigMap } from '@kubernetes/client-node'; +import { V1CronJob } from '@kubernetes/client-node'; +import { V1Deployment } from '@kubernetes/client-node'; +import { V1HorizontalPodAutoscaler } from '@kubernetes/client-node'; +import { V1Ingress } from '@kubernetes/client-node'; +import { V1Job } from '@kubernetes/client-node'; +import { V1ObjectMeta } from '@kubernetes/client-node'; +import { V1Pod } from '@kubernetes/client-node'; +import { V1ReplicaSet } from '@kubernetes/client-node'; +import { V1Service } from '@kubernetes/client-node'; + +// Warning: (ae-forgotten-export) The symbol "KubernetesAuthProvider" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "AwsKubernetesAuthProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class AwsKubernetesAuthProvider implements KubernetesAuthProvider { + // (undocumented) + decorateRequestBodyForAuth( + requestBody: KubernetesRequestBody, + ): Promise; +} + +// Warning: (ae-forgotten-export) The symbol "ClusterProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "Cluster" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const Cluster: ({ + clusterObjects, + podsWithErrors, +}: ClusterProps) => JSX.Element; + +// Warning: (ae-missing-release-tag) "ClusterContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ClusterContext: React_2.Context; + +// Warning: (ae-missing-release-tag) "ClusterLinksFormatter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ClusterLinksFormatter = ( + options: ClusterLinksFormatterOptions, +) => URL; + +// Warning: (ae-missing-release-tag) "ClusterLinksFormatterOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface ClusterLinksFormatterOptions { + // (undocumented) + dashboardParameters?: JsonObject; + // (undocumented) + dashboardUrl?: URL; + // (undocumented) + kind: string; + // (undocumented) + object: any; +} -// Warning: (ae-forgotten-export) The symbol "ClusterLinksFormatter" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "clusterLinksFormatters" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export const clusterLinksFormatters: Record; +// Warning: (ae-forgotten-export) The symbol "CronJobsAccordionsProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "CronJobsAccordions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const CronJobsAccordions: ({}: CronJobsAccordionsProps) => JSX.Element; + +// Warning: (ae-forgotten-export) The symbol "CustomResourcesProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "CustomResources" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const CustomResources: ({}: CustomResourcesProps) => JSX.Element; + +// Warning: (ae-missing-release-tag) "DeploymentResources" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface DeploymentResources { + // (undocumented) + deployments: V1Deployment[]; + // (undocumented) + horizontalPodAutoscalers: V1HorizontalPodAutoscaler[]; + // (undocumented) + pods: V1Pod[]; + // (undocumented) + replicaSets: V1ReplicaSet[]; +} + // Warning: (ae-missing-release-tag) "EntityKubernetesContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export const EntityKubernetesContent: (_props: {}) => JSX.Element; +// Warning: (ae-forgotten-export) The symbol "ErrorPanelProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ErrorPanel" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ErrorPanel: ({ + entityName, + errorMessage, + clustersWithErrors, +}: ErrorPanelProps) => JSX.Element; + +// Warning: (ae-forgotten-export) The symbol "ErrorReportingProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ErrorReporting" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ErrorReporting: ({ + detectedErrors, +}: ErrorReportingProps) => JSX.Element; + // Warning: (ae-forgotten-export) The symbol "FormatClusterLinkOptions" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "formatClusterLink" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // @@ -35,11 +138,84 @@ export function formatClusterLink( options: FormatClusterLinkOptions, ): string | undefined; +// Warning: (ae-missing-release-tag) "GoogleKubernetesAuthProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class GoogleKubernetesAuthProvider implements KubernetesAuthProvider { + constructor(authProvider: OAuthApi); + // (undocumented) + authProvider: OAuthApi; + // (undocumented) + decorateRequestBodyForAuth( + requestBody: KubernetesRequestBody, + ): Promise; +} + +// Warning: (ae-missing-release-tag) "GoogleServiceAccountAuthProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class GoogleServiceAccountAuthProvider + implements KubernetesAuthProvider +{ + // (undocumented) + decorateRequestBodyForAuth( + requestBody: KubernetesRequestBody, + ): Promise; +} + +// Warning: (ae-missing-release-tag) "GroupedResponses" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface GroupedResponses extends DeploymentResources { + // (undocumented) + configMaps: V1ConfigMap[]; + // (undocumented) + cronJobs: V1CronJob[]; + // (undocumented) + customResources: any[]; + // (undocumented) + ingresses: V1Ingress[]; + // (undocumented) + jobs: V1Job[]; + // (undocumented) + services: V1Service[]; +} + +// Warning: (ae-missing-release-tag) "GroupedResponsesContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const GroupedResponsesContext: React_2.Context; + +// Warning: (ae-missing-release-tag) "HorizontalPodAutoscalerDrawer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const HorizontalPodAutoscalerDrawer: ({ + hpa, + expanded, + children, +}: { + hpa: V1HorizontalPodAutoscaler; + expanded?: boolean | undefined; + children?: React_2.ReactNode; +}) => JSX.Element; + +// Warning: (ae-forgotten-export) The symbol "IngressesAccordionsProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "IngressesAccordions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const IngressesAccordions: ({}: IngressesAccordionsProps) => JSX.Element; + // Warning: (ae-missing-release-tag) "isKubernetesAvailable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export const isKubernetesAvailable: (entity: Entity) => boolean; +// Warning: (ae-forgotten-export) The symbol "JobsAccordionsProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "JobsAccordions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const JobsAccordions: ({ jobs }: JobsAccordionsProps) => JSX.Element; + // Warning: (ae-missing-release-tag) "KubernetesApi" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -111,6 +287,38 @@ export class KubernetesBackendClient implements KubernetesApi { ): Promise; } +// Warning: (ae-forgotten-export) The symbol "KubernetesContentProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "KubernetesContent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const KubernetesContent: ({ + entity, +}: KubernetesContentProps) => JSX.Element; + +// Warning: (ae-forgotten-export) The symbol "KubernetesDrawerable" needs to be exported by the entry point index.d.ts +// Warning: (ae-forgotten-export) The symbol "KubernetesDrawerProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "KubernetesDrawer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const KubernetesDrawer: ({ + object, + renderObject, + kind, + buttonVariant, + expanded, + children, +}: KubernetesDrawerProps) => JSX.Element; + +// Warning: (ae-missing-release-tag) "KubernetesObjects" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export interface KubernetesObjects { + // (undocumented) + error: string | undefined; + // (undocumented) + kubernetesObjects: ObjectsByEntityResponse | undefined; +} + // Warning: (ae-missing-release-tag) "kubernetesPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -123,9 +331,67 @@ const kubernetesPlugin: BackstagePlugin< export { kubernetesPlugin }; export { kubernetesPlugin as plugin }; +// Warning: (ae-missing-release-tag) "PodDrawer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const PodDrawer: ({ + pod, + expanded, +}: { + pod: V1Pod; + expanded?: boolean | undefined; +}) => JSX.Element; + +// Warning: (ae-missing-release-tag) "PodNamesWithErrorsContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const PodNamesWithErrorsContext: React_2.Context>; + +// Warning: (ae-missing-release-tag) "PodNamesWithMetricsContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const PodNamesWithMetricsContext: React_2.Context< + Map +>; + +// Warning: (ae-forgotten-export) The symbol "PodsTablesProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "PodsTable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const PodsTable: ({ + pods, + extraColumns, +}: PodsTablesProps) => JSX.Element; + // Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "Router" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export const Router: (_props: Props) => JSX.Element; + +// Warning: (ae-missing-release-tag) "ServiceAccountKubernetesAuthProvider" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class ServiceAccountKubernetesAuthProvider + implements KubernetesAuthProvider +{ + // (undocumented) + decorateRequestBodyForAuth( + requestBody: KubernetesRequestBody, + ): Promise; +} + +// Warning: (ae-forgotten-export) The symbol "ServicesAccordionsProps" needs to be exported by the entry point index.d.ts +// Warning: (ae-missing-release-tag) "ServicesAccordions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const ServicesAccordions: ({}: ServicesAccordionsProps) => JSX.Element; + +// Warning: (ae-missing-release-tag) "useKubernetesObjects" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export const useKubernetesObjects: ( + entity: Entity, + intervalMs?: number, +) => KubernetesObjects; ``` diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 65ddd71dfe..32cfbc87f6 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -40,11 +40,12 @@ "@backstage/core-plugin-api": "^1.0.0", "@backstage/plugin-catalog-react": "^1.0.1-next.0", "@backstage/plugin-kubernetes-common": "^0.2.9-next.0", - "@kubernetes/client-node": "^0.16.0", "@backstage/theme": "^0.2.15", + "@kubernetes/client-node": "^0.16.0", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", + "@types/react": "^16.13.1 || ^17.0.0", "cronstrue": "^1.122.0", "js-yaml": "^4.0.0", "lodash": "^4.17.21", diff --git a/plugins/kubernetes/src/components/KubernetesDrawer/index.ts b/plugins/kubernetes/src/components/KubernetesDrawer/index.ts new file mode 100644 index 0000000000..ecd4b1b653 --- /dev/null +++ b/plugins/kubernetes/src/components/KubernetesDrawer/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './KubernetesDrawer'; diff --git a/plugins/kubernetes/src/components/index.ts b/plugins/kubernetes/src/components/index.ts new file mode 100644 index 0000000000..72a3cd3ee1 --- /dev/null +++ b/plugins/kubernetes/src/components/index.ts @@ -0,0 +1,28 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './Cluster'; +export * from './CronJobsAccordions'; +export * from './CustomResources'; +export * from './ErrorPanel'; +export * from './ErrorReporting'; +export * from './HorizontalPodAutoscalers'; +export * from './IngressesAccordions'; +export * from './JobsAccordions'; +export { KubernetesDrawer } from './KubernetesDrawer'; +export * from './Pods'; +export * from './ServicesAccordions'; +export * from './KubernetesContent'; diff --git a/plugins/kubernetes/src/hooks/index.ts b/plugins/kubernetes/src/hooks/index.ts index 88db2d8197..0a5835eee4 100644 --- a/plugins/kubernetes/src/hooks/index.ts +++ b/plugins/kubernetes/src/hooks/index.ts @@ -16,5 +16,6 @@ export * from './useKubernetesObjects'; export * from './PodNamesWithErrors'; +export * from './PodNamesWithMetrics'; export * from './GroupedResponses'; export * from './Cluster'; diff --git a/plugins/kubernetes/src/index.ts b/plugins/kubernetes/src/index.ts index 71e1779c84..688d52d7e1 100644 --- a/plugins/kubernetes/src/index.ts +++ b/plugins/kubernetes/src/index.ts @@ -29,3 +29,6 @@ export { Router, isKubernetesAvailable } from './Router'; export * from './api'; export * from './kubernetes-auth-provider'; export * from './utils/clusterLinks'; +export * from './components'; +export * from './hooks'; +export * from './types'; diff --git a/plugins/kubernetes/src/kubernetes-auth-provider/index.ts b/plugins/kubernetes/src/kubernetes-auth-provider/index.ts index f6a07d44a9..6f8e3f415f 100644 --- a/plugins/kubernetes/src/kubernetes-auth-provider/index.ts +++ b/plugins/kubernetes/src/kubernetes-auth-provider/index.ts @@ -17,3 +17,7 @@ export { kubernetesAuthProvidersApiRef } from './types'; export type { KubernetesAuthProvidersApi } from './types'; export { KubernetesAuthProviders } from './KubernetesAuthProviders'; +export { AwsKubernetesAuthProvider } from './AwsKubernetesAuthProvider'; +export { GoogleKubernetesAuthProvider } from './GoogleKubernetesAuthProvider'; +export { GoogleServiceAccountAuthProvider } from './GoogleServiceAccountAuthProvider'; +export { ServiceAccountKubernetesAuthProvider } from './ServiceAccountKubernetesAuthProvider'; diff --git a/plugins/kubernetes/src/types/index.ts b/plugins/kubernetes/src/types/index.ts new file mode 100644 index 0000000000..db229eae34 --- /dev/null +++ b/plugins/kubernetes/src/types/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './types'; From 9c68ffe5445ad98514cc02e64e09424f5e7a2d56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Mar 2022 04:08:29 +0000 Subject: [PATCH 334/410] build(deps): bump @microsoft/microsoft-graph-types from 2.15.0 to 2.16.0 Bumps [@microsoft/microsoft-graph-types](https://github.com/microsoftgraph/msgraph-typescript-typings) from 2.15.0 to 2.16.0. - [Release notes](https://github.com/microsoftgraph/msgraph-typescript-typings/releases) - [Commits](https://github.com/microsoftgraph/msgraph-typescript-typings/compare/2.15.0...2.16.0) --- updated-dependencies: - dependency-name: "@microsoft/microsoft-graph-types" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c837b63311..c0fe7e2e6a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4245,9 +4245,9 @@ integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== "@microsoft/microsoft-graph-types@^2.6.0": - version "2.15.0" - resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.15.0.tgz#1705ea1ce84c3de4705957392d7f0e3ae465c9f8" - integrity sha512-EyuOpZs55HUoC37Ujrp6IRgE5ghf/wtDrlWuJm7J/DKoB7B/Iek7eXdavTygx2uBeDZ5b4jXXvwl4PiDLlEcsw== + version "2.16.0" + resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.16.0.tgz#5329890d230c4fdd9f57f39e26dfade0882c94f3" + integrity sha512-Qvxv9mpXb/F4xlESEkSLjREHj3dAixTkH3LVO6Ct6sllc5RWrQxPxaSGqW9IpcLU6jI49f2XNSGLotVef3Irdg== "@microsoft/tsdoc-config@~0.15.2": version "0.15.2" From 296c172a3fe967c499761e3ce7f20f5092a04d8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Mar 2022 04:12:01 +0000 Subject: [PATCH 335/410] build(deps-dev): bump @types/puppeteer from 5.4.4 to 5.4.5 Bumps [@types/puppeteer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/puppeteer) from 5.4.4 to 5.4.5. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/puppeteer) --- updated-dependencies: - dependency-name: "@types/puppeteer" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c837b63311..581940f6a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6360,9 +6360,9 @@ integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== "@types/puppeteer@^5.4.4": - version "5.4.4" - resolved "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.4.tgz#e92abeccc4f46207c3e1b38934a1246be080ccd0" - integrity sha512-3Nau+qi69CN55VwZb0ATtdUAlYlqOOQ3OfQfq0Hqgc4JMFXiQT/XInlwQ9g6LbicDslE6loIFsXFklGh5XmI6Q== + version "5.4.5" + resolved "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.5.tgz#154e3850a77bfd3967f036680de8ddc88eb3a12b" + integrity sha512-lxCjpDEY+DZ66+W3x5Af4oHnEmUXt0HuaRzkBGE2UZiZEp/V1d3StpLPlmNVu/ea091bdNmVPl44lu8Wy/0ZCA== dependencies: "@types/node" "*" From dd131d95be588aef7f8075f718af11f8c05a7cc3 Mon Sep 17 00:00:00 2001 From: Gediminas Date: Thu, 24 Mar 2022 15:49:29 +0000 Subject: [PATCH 336/410] docs: update custom field extensions writing guide Signed-off-by: Gediminas --- .../software-templates/writing-custom-field-extensions.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/features/software-templates/writing-custom-field-extensions.md b/docs/features/software-templates/writing-custom-field-extensions.md index d5d4afbff2..3ff08e6e73 100644 --- a/docs/features/software-templates/writing-custom-field-extensions.md +++ b/docs/features/software-templates/writing-custom-field-extensions.md @@ -96,7 +96,7 @@ export const MyCustomFieldExtension = plugin.provide( ```tsx // packages/app/src/scaffolder/MyCustomExtension/index.ts -export { MyCustomFieldExtension } from './extension'; +export { MyCustomFieldExtension } from './extensions'; ``` Once all these files are in place, you then need to provide your custom @@ -119,6 +119,8 @@ Should look something like this instead: ```tsx import { MyCustomFieldExtension } from './scaffolder/MyCustomExtension'; +import { ScaffolderFieldExtensions } from '@backstage/plugin-scaffolder'; + const routes = ( ... From f13c7d517f7ef9c37cb2d67411047c25a36b515d Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 25 Mar 2022 11:06:24 +0100 Subject: [PATCH 337/410] restrict e2e test workflow to run on changes to specific paths Signed-off-by: Emma Indal --- .github/workflows/verify_e2e-techdocs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index 7caf880366..02f3653b82 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -1,6 +1,10 @@ name: E2E Test Techdocs on: pull_request: + paths: + - 'packages/techdocs-cli/**' + - 'packages/techdocs-cli-embedded-app/**' + - 'plugins/techdocs/**' paths-ignore: - '.changeset/**' - 'contrib/**' From e4d77a9c54dbc62160eb9e61859fedcbb957a980 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Sun, 20 Feb 2022 22:19:37 +0100 Subject: [PATCH 338/410] add new stack overflow plugin Signed-off-by: Emma Indal --- plugins/stack-overflow/.eslintrc.js | 3 + plugins/stack-overflow/README.md | 73 ++++++++++++++++ plugins/stack-overflow/package.json | 56 ++++++++++++ .../home/StackOverflowQuestions/Content.tsx | 85 +++++++++++++++++++ .../StackOverflowQuestions.stories.tsx | 62 ++++++++++++++ .../src/home/StackOverflowQuestions/index.ts | 17 ++++ plugins/stack-overflow/src/index.ts | 21 +++++ plugins/stack-overflow/src/plugin.test.ts | 22 +++++ plugins/stack-overflow/src/plugin.ts | 56 ++++++++++++ .../StackOverflowQuestionsCollator.tsx | 72 ++++++++++++++++ .../StackOverflowQuestionsCollator/index.ts | 17 ++++ ...ckOverflowSearchResultListItem.stories.tsx | 40 +++++++++ ...StackOverflowSearchResultListItem.test.tsx | 43 ++++++++++ .../StackOverflowSearchResultListItem.tsx | 59 +++++++++++++ .../index.ts | 17 ++++ plugins/stack-overflow/src/setupTests.ts | 17 ++++ plugins/stack-overflow/src/types.ts | 31 +++++++ 17 files changed, 691 insertions(+) create mode 100644 plugins/stack-overflow/.eslintrc.js create mode 100644 plugins/stack-overflow/README.md create mode 100644 plugins/stack-overflow/package.json create mode 100644 plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx create mode 100644 plugins/stack-overflow/src/home/StackOverflowQuestions/StackOverflowQuestions.stories.tsx create mode 100644 plugins/stack-overflow/src/home/StackOverflowQuestions/index.ts create mode 100644 plugins/stack-overflow/src/index.ts create mode 100644 plugins/stack-overflow/src/plugin.test.ts create mode 100644 plugins/stack-overflow/src/plugin.ts create mode 100644 plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/StackOverflowQuestionsCollator.tsx create mode 100644 plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/index.ts create mode 100644 plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.stories.tsx create mode 100644 plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.test.tsx create mode 100644 plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.tsx create mode 100644 plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/index.ts create mode 100644 plugins/stack-overflow/src/setupTests.ts create mode 100644 plugins/stack-overflow/src/types.ts diff --git a/plugins/stack-overflow/.eslintrc.js b/plugins/stack-overflow/.eslintrc.js new file mode 100644 index 0000000000..13573efa9c --- /dev/null +++ b/plugins/stack-overflow/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint')], +}; diff --git a/plugins/stack-overflow/README.md b/plugins/stack-overflow/README.md new file mode 100644 index 0000000000..cea63c41c4 --- /dev/null +++ b/plugins/stack-overflow/README.md @@ -0,0 +1,73 @@ +# Stack Overflow + +A plugin that provides stack overflow specific functionality that can be used in different ways (e.g. for homepage and search) to compose your Backstage App. + +## Getting started + +Before we begin, make sure: + +- You have created your own standalone Backstage app using @backstage/create-app and not using a fork of the backstage repository. If you haven't setup Backstage already, start [here](https://backstage.io/docs/getting-started/). + +To use any of the functionality this plugin provides, you need to start by configuring your App with the following config: + +```yaml +stackoverflow: + baseUrl: https://api.stackexchange.com/2.2 # alternative: your internal stack overflow instance +``` + +## Areas of Responsibility + +This search plugin is primarily responsible for the following: + +- Exposing various stack-overflow related components like `` which can be used for composing the searchpage, and `` which can be used for composing the homepage. +- Provides a `StackOverflowQuestionsCollator`, which can be used in the search backend to index stack overflow questions to your Backstage Search. + +### Index Stack Overflow Questions to search + +Before you are able to start index stack overflow questions to search, you need to go through the [search getting started guide](https://backstage.io/docs/features/search/getting-started). + +When you have your `packages/backend/src/plugins/search.ts` file ready to make modifications, add the following code snippet to add the `StackOverflowQuestionsCollator`. Note that you can modify the request params. + +```ts +indexBuilder.addCollator({ + defaultRefreshIntervalSeconds: 60, + collator: new StackOverflowQuestionsCollator({ + config, + requestParams: { + tagged: ['backstage'], + site: 'stackoverflow', + pagesize: 100, + }, + }), +}); +``` + +#### Use specific search result list item for Stack Overflow Question + +When you have your `packages/app/src/components/search/SearchPage.tsx` file ready to make modifications, add the following code snippet to add the `StackOverflowSearchResultListItem` when the type of the search results are `stack-overflow`. + +```tsx + case 'stack-overflow': + return ( + + ); +``` + +#### Use Stack Overflow Questions on your homepage + +Before you are able to add the stack overflow question component to your homepage, you need to go through the [homepage getting started guide](https://backstage.io/docs/getting-started/homepage). When its ready, add the following code snippet to your `packages/app/src/components/home/HomePage.tsx` file. + +```tsx + + + +``` diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json new file mode 100644 index 0000000000..350f4aa0ca --- /dev/null +++ b/plugins/stack-overflow/package.json @@ -0,0 +1,56 @@ +{ + "name": "@backstage/plugin-stack-overflow", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "publishConfig": { + "access": "public", + "main": "dist/index.esm.js", + "types": "dist/index.d.ts" + }, + "scripts": { + "build": "backstage-cli plugin:build", + "start": "backstage-cli plugin:serve", + "lint": "backstage-cli lint", + "test": "backstage-cli test", + "diff": "backstage-cli plugin:diff", + "prepack": "backstage-cli prepack", + "postpack": "backstage-cli postpack", + "clean": "backstage-cli clean" + }, + "dependencies": { + "@backstage/core-components": "^0.8.8", + "@backstage/plugin-home": "^0.4.15", + "@backstage/core-plugin-api": "^0.6.0", + "@backstage/search-common": "^0.2.2", + "@backstage/config": "^0.1.13", + "@backstage/theme": "^0.2.14", + "@material-ui/core": "^4.12.2", + "@material-ui/icons": "^4.9.1", + "@material-ui/lab": "4.0.0-alpha.57", + "qs": "^6.10.3", + "cross-fetch": "^3.0.6", + "lodash": "^4.17.21", + "react-use": "^17.2.4", + "@testing-library/jest-dom": "^5.10.1" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + }, + "devDependencies": { + "@backstage/cli": "^0.13.2-next.0", + "@backstage/core-app-api": "^0.5.2", + "@backstage/dev-utils": "^0.2.21-next.0", + "@backstage/test-utils": "^0.2.4", + "@testing-library/react": "^11.2.5", + "@testing-library/user-event": "^13.1.8", + "@types/jest": "*", + "@types/node": "*", + "msw": "^0.35.0", + "cross-fetch": "^3.0.6" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx b/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx new file mode 100644 index 0000000000..a0832fc1f1 --- /dev/null +++ b/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx @@ -0,0 +1,85 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { useApi, configApiRef } from '@backstage/core-plugin-api'; +import { Link } from '@backstage/core-components'; +import { + IconButton, + List, + ListItem, + ListItemText, + ListItemSecondaryAction, +} from '@material-ui/core'; +import OpenInNewIcon from '@material-ui/icons/OpenInNew'; +import { useAsync } from 'react-use'; +import qs from 'qs'; +import React from 'react'; +import { + StackOverflowQuestion, + StackOverflowQuestionsContentProps, +} from '../../types'; + +/** + * A component to display a list of stack overflow questions on the homepage. + * + * @public + */ + +export const Content = (props: StackOverflowQuestionsContentProps) => { + const { requestParams } = props; + const configApi = useApi(configApiRef); + const baseUrl = configApi.getOptionalString('stackoverflow.baseUrl'); + + const { value, loading, error } = useAsync(async (): Promise< + StackOverflowQuestion[] + > => { + const params = requestParams ? `?${qs.stringify(requestParams)}` : ''; + const response = await fetch(`${baseUrl}/questions${params}`); + const data = await response.json(); + return data.items; + }, []); + + if (loading) { + return

    loading...

    ; + } + + if (error || !value || !value.length) { + return

    could not load questions

    ; + } + + const getSecondaryText = (answer_count: Number) => + answer_count > 1 ? `${answer_count} answers` : `${answer_count} answer`; + + return ( + + {value.map(question => ( + + + + + + + + + + + ))} + + ); +}; diff --git a/plugins/stack-overflow/src/home/StackOverflowQuestions/StackOverflowQuestions.stories.tsx b/plugins/stack-overflow/src/home/StackOverflowQuestions/StackOverflowQuestions.stories.tsx new file mode 100644 index 0000000000..e19e0f807b --- /dev/null +++ b/plugins/stack-overflow/src/home/StackOverflowQuestions/StackOverflowQuestions.stories.tsx @@ -0,0 +1,62 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { HomePageStackOverflowQuestions } from '../../plugin'; +import { wrapInTestApp, TestApiProvider } from '@backstage/test-utils'; +import { configApiRef } from '@backstage/core-plugin-api'; +import { ConfigReader } from '@backstage/config'; +import { Grid } from '@material-ui/core'; +import React, { ComponentType } from 'react'; + +export default { + title: 'Plugins/Home/Components/StackOverflow', + component: HomePageStackOverflowQuestions, + decorators: [ + (Story: ComponentType<{}>) => + wrapInTestApp( + <> + + + + , + ), + ], +}; + +export const Default = () => { + return ( + + + + ); +}; diff --git a/plugins/stack-overflow/src/home/StackOverflowQuestions/index.ts b/plugins/stack-overflow/src/home/StackOverflowQuestions/index.ts new file mode 100644 index 0000000000..1faa9a2426 --- /dev/null +++ b/plugins/stack-overflow/src/home/StackOverflowQuestions/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { Content } from './Content'; diff --git a/plugins/stack-overflow/src/index.ts b/plugins/stack-overflow/src/index.ts new file mode 100644 index 0000000000..9e71988100 --- /dev/null +++ b/plugins/stack-overflow/src/index.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { + stackOverflowPlugin, + StackOverflowSearchResultListItem, + HomePageStackOverflowQuestions, +} from './plugin'; +export { StackOverflowQuestionsCollator } from './search/StackOverflowQuestionsCollator'; diff --git a/plugins/stack-overflow/src/plugin.test.ts b/plugins/stack-overflow/src/plugin.test.ts new file mode 100644 index 0000000000..b25cfe01ee --- /dev/null +++ b/plugins/stack-overflow/src/plugin.test.ts @@ -0,0 +1,22 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { stackOverflowPlugin } from './plugin'; + +describe('stack-overflow', () => { + it('should export plugin', () => { + expect(stackOverflowPlugin).toBeDefined(); + }); +}); diff --git a/plugins/stack-overflow/src/plugin.ts b/plugins/stack-overflow/src/plugin.ts new file mode 100644 index 0000000000..90a82da719 --- /dev/null +++ b/plugins/stack-overflow/src/plugin.ts @@ -0,0 +1,56 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + createPlugin, + createComponentExtension, +} from '@backstage/core-plugin-api'; +import { createCardExtension } from '@backstage/plugin-home'; +import { StackOverflowQuestionsContentProps } from './types'; + +export const stackOverflowPlugin = createPlugin({ + id: 'stack-overflow', +}); + +/** + * A component to display a stack overflow search result + * + * @public + */ + +export const StackOverflowSearchResultListItem = stackOverflowPlugin.provide( + createComponentExtension({ + name: 'StackOverflowResultListItem', + component: { + lazy: () => + import('./search/StackOverflowSearchResultListItem').then( + m => m.StackOverflowSearchResultListItem, + ), + }, + }), +); + +/** + * A component to display a list of stack overflow questions on the homepage. + * + * @public + */ +export const HomePageStackOverflowQuestions = stackOverflowPlugin.provide( + createCardExtension({ + name: 'HomePageStackOverflowQuestions', + title: 'Stack Overflow Questions', + components: () => import('./home/StackOverflowQuestions'), + }), +); diff --git a/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/StackOverflowQuestionsCollator.tsx b/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/StackOverflowQuestionsCollator.tsx new file mode 100644 index 0000000000..a44b2f4742 --- /dev/null +++ b/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/StackOverflowQuestionsCollator.tsx @@ -0,0 +1,72 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { IndexableDocument, DocumentCollator } from '@backstage/search-common'; +import { Config } from '@backstage/config'; +import fetch from 'cross-fetch'; +import qs from 'qs'; +import { + StackOverflowQuestion, + StackOverflowQuestionsRequestParams, +} from '../../types'; + +interface StackOverflowDocument extends IndexableDocument { + answers: number; + tags: string[]; +} + +export class StackOverflowQuestionsCollator implements DocumentCollator { + protected baseUrl: string; + protected requestParams: StackOverflowQuestionsRequestParams; + public readonly type: string = 'stack-overflow'; + + constructor({ + config, + requestParams, + }: { + config: Config; + requestParams: StackOverflowQuestionsRequestParams; + }) { + this.baseUrl = config.getString('stackoverflow.baseUrl'); + this.requestParams = requestParams; + } + + async execute() { + const params = this.requestParams + ? `?${qs.stringify(this.requestParams)}` + : ''; + const res = await fetch(`${this.baseUrl}/questions${params}`); + + const data = await res.json(); + return data.items.map( + ({ + title, + link, + owner: { display_name }, + tags, + answer_count, + }: StackOverflowQuestion): StackOverflowDocument => { + return { + title: title, + location: link, + text: display_name, + tags: tags, + answers: answer_count, + }; + }, + ); + } +} diff --git a/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/index.ts b/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/index.ts new file mode 100644 index 0000000000..d5fecd0dce --- /dev/null +++ b/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { StackOverflowQuestionsCollator } from './StackOverflowQuestionsCollator'; diff --git a/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.stories.tsx b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.stories.tsx new file mode 100644 index 0000000000..171a6203ef --- /dev/null +++ b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.stories.tsx @@ -0,0 +1,40 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { StackOverflowSearchResultListItem } from '../../plugin'; +import { wrapInTestApp } from '@backstage/test-utils'; +import React, { ComponentType } from 'react'; +import OpenInNewIcon from '@material-ui/icons/OpenInNew'; + +export default { + title: 'Plugins/Search/StackOverflowResultListItem', + component: StackOverflowSearchResultListItem, + decorators: [(Story: ComponentType<{}>) => wrapInTestApp()], +}; + +export const Default = () => { + return ( + + ); +}; diff --git a/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.test.tsx b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.test.tsx new file mode 100644 index 0000000000..61e901591e --- /dev/null +++ b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.test.tsx @@ -0,0 +1,43 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { renderInTestApp } from '@backstage/test-utils'; +import { screen } from '@testing-library/react'; +import { StackOverflowSearchResultListItem } from './StackOverflowSearchResultListItem'; + +describe('', () => { + it('should render without exploding', async () => { + await renderInTestApp( + , + ); + expect( + screen.getByText(/Customizing Spotify backstage UI/i), + ).toBeInTheDocument(); + expect(screen.getByText(/Tag: backstage/i)).toBeInTheDocument(); + expect( + screen.getByText(/Customizing Spotify backstage UI/i).closest('a'), + ).toHaveAttribute('href', 'https://stackoverflow.com/questions/7'); + }); +}); diff --git a/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.tsx b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.tsx new file mode 100644 index 0000000000..52c16eeb77 --- /dev/null +++ b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.tsx @@ -0,0 +1,59 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import _unescape from 'lodash/unescape'; +import { Link } from '@backstage/core-components'; +import { + Divider, + ListItem, + ListItemText, + ListItemIcon, + Box, + Chip, +} from '@material-ui/core'; + +type StackOverflowSearchResultListItemProps = { + result: any; // TODO(emmaindal): type to StackOverflowDocument. + icon?: React.ReactNode; +}; + +export const StackOverflowSearchResultListItem = ( + props: StackOverflowSearchResultListItemProps, +) => { + const { location, title, text, answers, tags } = props.result; + + return ( + + + {props.icon && {props.icon}} + + + + {tags && + tags.map((tag: string) => ( + + ))} + + + + + ); +}; diff --git a/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/index.ts b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/index.ts new file mode 100644 index 0000000000..499f7273aa --- /dev/null +++ b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { StackOverflowSearchResultListItem } from './StackOverflowSearchResultListItem'; diff --git a/plugins/stack-overflow/src/setupTests.ts b/plugins/stack-overflow/src/setupTests.ts new file mode 100644 index 0000000000..9bb3e72355 --- /dev/null +++ b/plugins/stack-overflow/src/setupTests.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import '@testing-library/jest-dom'; +import 'cross-fetch/polyfill'; diff --git a/plugins/stack-overflow/src/types.ts b/plugins/stack-overflow/src/types.ts new file mode 100644 index 0000000000..a23585ed3c --- /dev/null +++ b/plugins/stack-overflow/src/types.ts @@ -0,0 +1,31 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export type StackOverflowQuestion = { + title: string; + link: string; + owner: Record; + tags: string[]; + answer_count: number; +}; + +export type StackOverflowQuestionsContentProps = { + requestParams: StackOverflowQuestionsRequestParams; +}; + +export type StackOverflowQuestionsRequestParams = { + [key: string]: string | string[] | number; +}; From fa4d513332a58e62505b0c2510ae60e82eccff8e Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Sun, 20 Feb 2022 22:22:06 +0100 Subject: [PATCH 339/410] add stack overflow homepage component to default template Signed-off-by: Emma Indal --- .../src/templates/DefaultTemplate.stories.tsx | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/plugins/home/src/templates/DefaultTemplate.stories.tsx b/plugins/home/src/templates/DefaultTemplate.stories.tsx index c726294ba6..e2e570dcf6 100644 --- a/plugins/home/src/templates/DefaultTemplate.stories.tsx +++ b/plugins/home/src/templates/DefaultTemplate.stories.tsx @@ -28,12 +28,15 @@ import { MockStarredEntitiesApi, entityRouteRef, } from '@backstage/plugin-catalog-react'; +import { configApiRef } from '@backstage/core-plugin-api'; +import { ConfigReader } from '@backstage/config'; import { HomePageSearchBar, SearchContextProvider, searchApiRef, searchPlugin, } from '@backstage/plugin-search'; +import { HomePageStackOverflowQuestions } from '@backstage/plugin-stack-overflow'; import { Grid, makeStyles } from '@material-ui/core'; import React, { ComponentType } from 'react'; @@ -56,6 +59,14 @@ export default { starredEntitiesApi, ], [searchApiRef, { query: () => Promise.resolve({ results: [] }) }], + [ + configApiRef, + new ConfigReader({ + stackoverflow: { + baseUrl: 'https://api.stackexchange.com/2.2', + }, + }), + ], ]} > @@ -131,14 +142,17 @@ export const DefaultTemplate = () => { {/* placeholder for content */} -
    +
    - - {/* placeholder for content */} -
    - + From 5822cb1ddda96f83c627d4ba903f746290f9ee24 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Sun, 20 Feb 2022 22:22:22 +0100 Subject: [PATCH 340/410] add codeowners Signed-off-by: Emma Indal --- .github/CODEOWNERS | 1 + yarn.lock | 5900 ++++++++++++++++++++++++-------------------- 2 files changed, 3259 insertions(+), 2642 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 44c61f9348..62c4750911 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -44,6 +44,7 @@ /plugins/scaffolder-backend-module-yeoman @backstage/reviewers @pawelmitka /plugins/search @backstage/reviewers @backstage/techdocs-core /plugins/search-* @backstage/reviewers @backstage/techdocs-core +/plugins/stack-overflow @backstage/techdocs-core /plugins/sonarqube @backstage/reviewers @backstage/sda-se-reviewers /plugins/techdocs @backstage/reviewers @backstage/techdocs-core /plugins/techdocs-* @backstage/reviewers @backstage/techdocs-core diff --git a/yarn.lock b/yarn.lock index c837b63311..d9e4ffb198 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,14 +9,22 @@ dependencies: aws4 "^1.11.0" +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@apidevtools/json-schema-ref-parser@^9.0.6": - version "9.0.6" - resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" - integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== + version "9.0.9" + resolved "https://registry.npmjs.org/@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 "^3.13.1" + js-yaml "^4.1.0" "@apollo/protobufjs@1.2.2": version "1.2.2" @@ -103,16 +111,16 @@ integrity sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og== "@azure/abort-controller@^1.0.0": - version "1.0.2" - resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.2.tgz#822405c966b2aec16fb62c1b19d37eaccf231995" - integrity sha512-XUyTo+bcyxHEf+jlN2MXA7YU9nxVehaubngHV1MIZZaqYmZqykkoeAz/JMMEeR7t3TcyDwbFa3Zw8BZywmIx4g== + version "1.0.4" + resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" + integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== dependencies: tslib "^2.0.0" "@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" - integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== + version "1.0.2" + resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz#0dd3849fb8d97f062a39db0e5cadc9ffaf861fec" + integrity sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw== "@azure/core-auth@^1.3.0": version "1.3.2" @@ -157,9 +165,9 @@ xml2js "^0.4.19" "@azure/core-lro@^2.2.0": - version "2.2.4" - resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.4.tgz#42fbf4ae98093c59005206a4437ddcd057c57ca1" - integrity sha512-e1I2v2CZM0mQo8+RSix0x091Av493e4bnT22ds2fcQGslTHzM2oTbswkB65nP4iEpCxBrFxOSDPKExmTmjCVtQ== + version "2.2.3" + resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.3.tgz#3e245d37ede00f6410c1ea1fb76679dbdec627eb" + integrity sha512-UMdlR9NsqDCLTba3EUbRjfMF4gDmWvld196JmUjbz9WWhJ2XT00OR5MXeWiR+vmGT+ETiO4hHFCi2/eGO5YVtg== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-tracing" "1.0.0-preview.13" @@ -167,11 +175,12 @@ tslib "^2.2.0" "@azure/core-paging@^1.1.1": - version "1.1.3" - resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.1.3.tgz#3587c9898a0530cacb64bab216d7318468aa5efc" - integrity sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A== + version "1.2.1" + resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.2.1.tgz#1b884f563b6e49971e9a922da3c7a20931867b54" + integrity sha512-UtH5iMlYsvg+nQYIl4UHlvvSrsBjOlRF4fs0j7mxd3rWdAStrKYrh2durOpHs5C9yZbVhsVDaisoyaf/lL1EVA== dependencies: "@azure/core-asynciterator-polyfill" "^1.0.0" + tslib "^2.2.0" "@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.5.0": version "1.5.0" @@ -226,18 +235,18 @@ uuid "^8.3.0" "@azure/logger@^1.0.0": - version "1.0.1" - resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.1.tgz#19b333203d1b2931353d8879e814b64a7274837a" - integrity sha512-QYQeaJ+A5x6aMNu8BG5qdsVBnYBop9UMwgUvGihSjf1PdZZXB+c/oMdM2ajKwzobLBh9e9QuMQkN9iL+IxLBLA== + version "1.0.3" + resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96" + integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g== dependencies: - tslib "^2.0.0" + tslib "^2.2.0" "@azure/msal-browser@^2.16.0": - version "2.20.0" - resolved "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.20.0.tgz#78e34395048c4a8842400d4168b2fb3bdd3c854e" - integrity sha512-Fl8boo38fPNlEm84fRCulbTfHJo+Z/i+1gcdJTG+PqmrkMOUVTdpkwznGh6ZQdAM34uumEgzukmqMr8lVKrytA== + version "2.22.0" + resolved "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.22.0.tgz#acb3ef455d8ca7b143c7fde0a638097add11a218" + integrity sha512-ZpnbnzjYGRGHjWDPOLjSp47CQvhK927+W9avtLoNNCMudqs2dBfwj76lnJwObDE7TAKmCUueTiieglBiPb1mgQ== dependencies: - "@azure/msal-common" "^5.2.0" + "@azure/msal-common" "^6.1.0" "@azure/msal-common@^4.5.1": version "4.5.1" @@ -246,13 +255,6 @@ dependencies: debug "^4.1.1" -"@azure/msal-common@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-5.2.0.tgz#49440e04f4d0961fc5a1a1718fbe5e4eae2db5db" - integrity sha512-oVc4soy5MEZOp9NvCDqBk57mtiUTJXQQ8Z8S/4UiRQP8RG8snuCFQUs9xxdIfvl2FWIvgiBz+SMByyjTaRX42Q== - dependencies: - debug "^4.1.1" - "@azure/msal-common@^6.1.0": version "6.1.0" resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-6.1.0.tgz#00b0c625d10f4c8e48e7b48a353f7d8d20a5ceca" @@ -261,9 +263,9 @@ debug "^4.1.1" "@azure/msal-node@^1.1.0", "@azure/msal-node@^1.3.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.7.0.tgz#9026971b1fd953f15bfddde9c43e180356a80d77" - integrity sha512-qDkW+Z4b0SGkkYrM1x+0s5WJ3z96vgiNZ20iwpmtCUHVfSrDiGFB8s8REKVaz7JZJi2L1s0vQRbUahly8EoGnw== + version "1.6.0" + resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.6.0.tgz#59d6306979581fd9379d17d22047ada143ed56df" + integrity sha512-RCPXVWsjqYZh7NB1pAJLn4ypHlLBulOjw5nKPLsJiaJJIXnN8kc6SMkK3S9/80DZCEBstvoRMz6zF50QZJUeOQ== dependencies: "@azure/msal-common" "^6.1.0" axios "^0.21.4" @@ -272,9 +274,9 @@ uuid "^8.3.0" "@azure/storage-blob@^12.5.0": - version "12.9.0" - resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.9.0.tgz#4cbd8b4c7a47dd064867430db892f4ef2d8f17ab" - integrity sha512-ank38FdCLfJ+EoeMzCz3hkYJuZAd63ARvDKkxZYRDb+beBYf+/+gx8jNTqkq/hfyUl4dJQ/a7tECU0Y0F98CHg== + version "12.8.0" + resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.8.0.tgz#97b7ecc6c7b17bcbaf0281c79c16af6f512d6130" + integrity sha512-c8+Wz19xauW0bGkTCoqZH4dYfbtBniPiGiRQOn1ca6G5jsjr4azwaTk9gwjVY8r3vY2Taf95eivLzipfIfiS4A== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-http" "^2.0.0" @@ -299,38 +301,38 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" - integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" + integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== -"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": - version "7.16.12" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" - integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": + version "7.17.5" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" + integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== dependencies: + "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" + "@babel/generator" "^7.17.3" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.16.7" - "@babel/parser" "^7.16.12" + "@babel/helpers" "^7.17.2" + "@babel/parser" "^7.17.3" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.10" - "@babel/types" "^7.16.8" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" - source-map "^0.5.0" -"@babel/generator@^7.14.0", "@babel/generator@^7.16.0", "@babel/generator@^7.16.8": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" - integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== +"@babel/generator@^7.14.0", "@babel/generator@^7.17.3": + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" + integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== dependencies: - "@babel/types" "^7.16.8" + "@babel/types" "^7.17.0" jsesc "^2.5.1" source-map "^0.5.0" @@ -360,9 +362,9 @@ semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": - version "7.16.10" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" - integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg== + version "7.17.1" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" + integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -373,12 +375,12 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" - integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^4.7.1" + regexpu-core "^5.0.1" "@babel/helper-define-polyfill-provider@^0.3.1": version "0.3.1" @@ -408,7 +410,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.0", "@babel/helper-function-name@^7.16.7": +"@babel/helper-function-name@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== @@ -424,7 +426,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.16.0", "@babel/helper-hoist-variables@^7.16.7": +"@babel/helper-hoist-variables@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== @@ -505,14 +507,14 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.0", "@babel/helper-split-export-declaration@^7.16.7": +"@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.16.7": +"@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== @@ -532,14 +534,14 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" - integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== +"@babel/helpers@^7.17.2": + version "7.17.2" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" + integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" "@babel/highlight@^7.0.0", "@babel/highlight@^7.16.7": version "7.16.10" @@ -550,15 +552,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@7.16.4": - version "7.16.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" - integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== - -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.3", "@babel/parser@^7.16.7": - version "7.16.12" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" - integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.16.8", "@babel/parser@^7.17.3": + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" + integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -651,11 +648,11 @@ "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" - integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.0" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" @@ -889,9 +886,9 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" - integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" + integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -1030,7 +1027,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-constant-elements@^7.14.5": +"@babel/plugin-transform-react-constant-elements@^7.12.1", "@babel/plugin-transform-react-constant-elements@^7.14.5": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62" integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ== @@ -1052,15 +1049,15 @@ "@babel/plugin-transform-react-jsx" "^7.16.7" "@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" - integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" + integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/plugin-transform-react-pure-annotations@^7.16.7": version "7.16.7" @@ -1144,7 +1141,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.15.6": +"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.15.6": version "7.16.11" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== @@ -1244,7 +1241,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.14.5": +"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.14.5": version "7.16.7" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== @@ -1266,14 +1263,14 @@ "@babel/plugin-transform-typescript" "^7.16.7" "@babel/register@^7.13.16": - version "7.16.9" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz#fcfb23cfdd9ad95c9771e58183de83b513857806" - integrity sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g== + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz#8051e0b7cb71385be4909324f072599723a1f084" + integrity sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" make-dir "^2.1.0" - pirates "^4.0.0" + pirates "^4.0.5" source-map-support "^0.5.16" "@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.8": @@ -1284,7 +1281,14 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.17.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.17.2": version "7.17.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA== @@ -1300,53 +1304,53 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@7.16.3": - version "7.16.3" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" - integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.3" - "@babel/types" "^7.16.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.4.5": - version "7.16.10" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" - integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5": + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" + "@babel/generator" "^7.17.3" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.10" - "@babel/types" "^7.16.8" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@7.16.0": - version "7.16.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" - to-fast-properties "^2.0.0" - -"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" - integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@backstage/app-defaults@^0.2.1": + version "0.2.1" + resolved "https://registry.npmjs.org/@backstage/app-defaults/-/app-defaults-0.2.1.tgz#8a99245cef0bfd4cc1a864d80eee76eec2ed944e" + integrity sha512-4KjcvUqnUADCTIcRrc87VcwgtZmfAqusvhSIleo8jEXQ+kIddoah/1P6ttsWiECaFvnvJ9ERhprsvJIK119zkw== + dependencies: + "@backstage/core-app-api" "^0.6.0" + "@backstage/core-components" "^0.9.1" + "@backstage/core-plugin-api" "^0.8.0" + "@backstage/plugin-permission-react" "^0.3.3" + "@backstage/theme" "^0.2.15" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + react-router-dom "6.0.0-beta.0" + +"@backstage/catalog-client@^0.9.0": + version "0.9.0" + resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-0.9.0.tgz#3e1024fab13fd8e2000d33833d2463ea9be5df9d" + integrity sha512-mr2wrb+7uAPczOOYt07C4AbXIeX0mu+Iw6RPDNg67GvPvQVcbKCrjth9VEj8rScFGmJAn66ZcronbcZSS0MJww== + dependencies: + "@backstage/catalog-model" "^0.13.0" + "@backstage/errors" "^0.2.2" + cross-fetch "^3.1.5" + "@backstage/catalog-client@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-1.0.0.tgz#05f9ee3b771ca17e4800f5116d63bd183fe0c4d6" @@ -1356,6 +1360,19 @@ "@backstage/errors" "^1.0.0" cross-fetch "^3.1.5" +"@backstage/catalog-model@^0.13.0": + version "0.13.0" + resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.13.0.tgz#abeb91522ac7ef7907907ad5bc889803131db209" + integrity sha512-Q+0C0LJ8niNQ4TXduUNTycZ2PLMbhKmfgWywunJLO34DZAoFnTWJEAdEYF536YyLciHhLO0dHRUaHY29Sdr+Xg== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/errors" "^0.2.2" + "@backstage/types" "^0.1.3" + ajv "^7.0.3" + json-schema "^0.4.0" + lodash "^4.17.21" + uuid "^8.0.0" + "@backstage/catalog-model@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-1.0.0.tgz#0aa8694a3182aaf4232725842da751bf5f78bd68" @@ -1369,7 +1386,206 @@ lodash "^4.17.21" uuid "^8.0.0" -"@backstage/core-components@^0.9.0", "@backstage/core-components@^0.9.2": +"@backstage/cli@^0.13.2-next.0": + version "0.13.2" + resolved "https://registry.npmjs.org/@backstage/cli/-/cli-0.13.2.tgz#1ef427e847116822f9c3964aa2803a1abc419c91" + integrity sha512-GI1v5kkpfqu5X+aNcXLY5lX3BtiIBk0Tm+jyWSitOzFa/rw6QnFPieAw8F72jC92OTV08FVKEaJIt/Qg3eUNkA== + dependencies: + "@backstage/cli-common" "^0.1.6" + "@backstage/config" "^0.1.13" + "@backstage/config-loader" "^0.9.3" + "@backstage/errors" "^0.2.0" + "@backstage/release-manifests" "^0.0.1" + "@backstage/types" "^0.1.1" + "@hot-loader/react-dom" "^16.13.0" + "@manypkg/get-packages" "^1.1.3" + "@octokit/request" "^5.4.12" + "@rollup/plugin-commonjs" "^21.0.1" + "@rollup/plugin-json" "^4.1.0" + "@rollup/plugin-node-resolve" "^13.0.0" + "@rollup/plugin-yaml" "^3.1.0" + "@spotify/eslint-config-base" "^12.0.0" + "@spotify/eslint-config-react" "^12.0.0" + "@spotify/eslint-config-typescript" "^12.0.0" + "@sucrase/jest-plugin" "^2.1.1" + "@sucrase/webpack-loader" "^2.0.0" + "@svgr/plugin-jsx" "6.2.x" + "@svgr/plugin-svgo" "6.2.x" + "@svgr/rollup" "5.5.x" + "@svgr/webpack" "5.5.x" + "@types/webpack-env" "^1.15.2" + "@typescript-eslint/eslint-plugin" "^5.9.0" + "@typescript-eslint/parser" "^5.9.0" + "@yarnpkg/lockfile" "^1.1.0" + bfj "^7.0.2" + buffer "^6.0.3" + chalk "^4.0.0" + chokidar "^3.3.1" + commander "^6.1.0" + css-loader "^6.5.1" + diff "^5.0.0" + esbuild "^0.14.10" + esbuild-loader "^2.18.0" + eslint "^8.6.0" + eslint-config-prettier "^8.3.0" + eslint-formatter-friendly "^7.0.0" + eslint-plugin-import "^2.25.4" + eslint-plugin-jest "^25.3.4" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-monorepo "^0.3.2" + eslint-plugin-react "^7.28.0" + eslint-plugin-react-hooks "^4.3.0" + eslint-webpack-plugin "^2.6.0" + express "^4.17.1" + fork-ts-checker-webpack-plugin "^7.0.0-alpha.8" + fs-extra "9.1.0" + glob "^7.1.7" + handlebars "^4.7.3" + html-webpack-plugin "^5.3.1" + inquirer "^8.2.0" + jest "^26.0.1" + jest-css-modules "^2.1.0" + jest-transform-yaml "^1.0.0" + json-schema "^0.4.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.4.2" + minimatch "3.0.4" + node-libs-browser "^2.2.1" + npm-packlist "^3.0.0" + ora "^5.3.0" + postcss "^8.1.0" + process "^0.11.10" + react-dev-utils "^12.0.0-next.60" + react-hot-loader "^4.13.0" + recursive-readdir "^2.2.2" + replace-in-file "^6.0.0" + rollup "^2.60.2" + rollup-plugin-dts "^4.0.1" + rollup-plugin-esbuild "^4.7.2" + rollup-plugin-peer-deps-external "^2.2.2" + rollup-plugin-postcss "^4.0.0" + rollup-pluginutils "^2.8.2" + run-script-webpack-plugin "^0.0.11" + semver "^7.3.2" + style-loader "^3.3.1" + sucrase "^3.20.2" + tar "^6.1.2" + terser-webpack-plugin "^5.1.3" + util "^0.12.3" + webpack "^5.66.0" + webpack-dev-server "^4.7.3" + webpack-node-externals "^3.0.0" + yaml "^1.10.0" + yml-loader "^2.1.0" + yn "^4.0.0" + zod "^3.11.6" + +"@backstage/config-loader@^0.9.3": + version "0.9.7" + resolved "https://registry.npmjs.org/@backstage/config-loader/-/config-loader-0.9.7.tgz#b056f592b8ec1b21007eb9193ec595a9da3fb1b9" + integrity sha512-dt+z5MSRG4qGYPsmlxZioEpXpf4/6R6wD7NJodcV5JbXd109sPALwwxMG4KLDuBvhJnKlJmOK1ZhQGe/11jHjA== + dependencies: + "@backstage/cli-common" "^0.1.8" + "@backstage/config" "^0.1.15" + "@backstage/errors" "^0.2.2" + "@backstage/types" "^0.1.3" + "@types/json-schema" "^7.0.6" + ajv "^7.0.3" + chokidar "^3.5.2" + fs-extra "10.0.1" + json-schema "^0.4.0" + json-schema-merge-allof "^0.8.1" + json-schema-traverse "^1.0.0" + node-fetch "^2.6.7" + typescript-json-schema "^0.52.0" + yaml "^1.9.2" + yup "^0.32.9" + +"@backstage/config@^0.1.13", "@backstage/config@^0.1.14", "@backstage/config@^0.1.15": + version "0.1.15" + resolved "https://registry.npmjs.org/@backstage/config/-/config-0.1.15.tgz#4bad122ad861be5bd61a60639f92d2494fa245c5" + integrity sha512-eNJEYYSEu9MkrkBYiMpUBWEc3Bu64YgB9pZZGCMW7/9350tV2wbylEdoBJHslilJlJhiUyTXBckn8Ua7DOH7rw== + dependencies: + "@backstage/types" "^0.1.3" + lodash "^4.17.21" + +"@backstage/core-app-api@^0.5.2", "@backstage/core-app-api@^0.5.4": + version "0.5.4" + resolved "https://registry.npmjs.org/@backstage/core-app-api/-/core-app-api-0.5.4.tgz#9ee39828fdcba64a4eea20e9fe3da58c56c053d5" + integrity sha512-qH9XQpY8M3yMKUvu+pcAxOUwrazGaA3L1bbzRzCALjmjmve37k9AY3Wd89toGAzqOqwn6OhBfUg+y3kqj44fOw== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/core-plugin-api" "^0.7.0" + "@backstage/types" "^0.1.3" + "@backstage/version-bridge" "^0.1.2" + "@types/prop-types" "^15.7.3" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + react-use "^17.2.4" + zen-observable "^0.8.15" + zod "^3.11.6" + +"@backstage/core-app-api@^0.6.0": + version "0.6.0" + resolved "https://registry.npmjs.org/@backstage/core-app-api/-/core-app-api-0.6.0.tgz#691f0586d97682f1af67828ab2c67014397a530a" + integrity sha512-v1t1w/U/JHjm9eZupPmJpKH5WB0vysEFxRo6/Ia77VP6ZcPxszG4IG+d+S3Km5fM3lu4oosGiz+RaKUTLrttBA== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/core-plugin-api" "^0.8.0" + "@backstage/types" "^0.1.3" + "@backstage/version-bridge" "^0.1.2" + "@types/prop-types" "^15.7.3" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + react-use "^17.2.4" + zen-observable "^0.8.15" + zod "^3.11.6" + +"@backstage/core-components@^0.8.8": + version "0.8.10" + resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.8.10.tgz#6f79c46cdf507fc3a0d764848a4a8aa73af7ce93" + integrity sha512-gGyCPPSdgvzYHWMKlxe/H4yFmEYDQuAtaoT7Y/3+pilcJSIQi9d3oV104BDLC94bdkyOWDsA1tT+PGZtd0p/8g== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/core-plugin-api" "^0.7.0" + "@backstage/errors" "^0.2.2" + "@backstage/theme" "^0.2.15" + "@material-table/core" "^3.1.0" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + "@react-hookz/web" "^12.3.0" + "@types/react-sparklines" "^1.7.0" + "@types/react-text-truncate" "^0.14.0" + ansi-regex "^6.0.1" + classnames "^2.2.6" + d3-selection "^3.0.0" + d3-shape "^3.0.0" + d3-zoom "^3.0.0" + dagre "^0.8.5" + history "^5.0.0" + immer "^9.0.1" + lodash "^4.17.21" + pluralize "^8.0.0" + prop-types "^15.7.2" + qs "^6.9.4" + rc-progress "3.2.4" + react-helmet "6.1.0" + react-hook-form "^7.12.2" + react-markdown "^8.0.0" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + react-sparklines "^1.7.0" + react-syntax-highlighter "^15.4.5" + react-text-truncate "^0.17.0" + react-use "^17.3.2" + react-virtualized-auto-sizer "^1.0.6" + react-window "^1.8.6" + remark-gfm "^3.0.1" + zen-observable "^0.8.15" + zod "^3.11.6" + +"@backstage/core-components@^0.9.0", "@backstage/core-components@^0.9.1", "@backstage/core-components@^0.9.2": version "0.9.2" resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.9.2.tgz#9a3d79a15039256bbc007e5daa08c983050e0238" integrity sha512-kh0FB0FmjC55W+xSEkKrAc7D6hvbYLY7N1UUd6M4VBghYXD61Y8RrJFKmBM3bAfPgYaryQNjYgA0BsoTo53PJA== @@ -1413,6 +1629,94 @@ zen-observable "^0.8.15" zod "^3.11.6" +"@backstage/core-plugin-api@^0.6.0": + version "0.6.1" + resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.6.1.tgz#a6fb8110f384ab9405990450956b2c81b88e90b2" + integrity sha512-DtHY0eG2OQ4QAHVb5y8yDUQXZW9Ot7Fsr4Rpe3BbiLpkXA5hZLXPMThOyz1Y79ZOEC5eiyhUlXL1g6P7ylOKMw== + dependencies: + "@backstage/config" "^0.1.14" + "@backstage/types" "^0.1.2" + "@backstage/version-bridge" "^0.1.2" + history "^5.0.0" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + +"@backstage/core-plugin-api@^0.7.0": + version "0.7.0" + resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.7.0.tgz#e53f3aa5bbf074a70fcaf264b04402637008659c" + integrity sha512-SVzrJjvEjWzJgIqfFUjQjqW0RGCzj6zgLULpSgP53GQat70I0wje6E4n0blNU+/q7hpt6PoIT0lgZtqFOJrfYQ== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/types" "^0.1.3" + "@backstage/version-bridge" "^0.1.2" + history "^5.0.0" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + +"@backstage/core-plugin-api@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.8.0.tgz#e2096bff679183168a7f9b47ed27c50a01970e32" + integrity sha512-hHTrh0lui7TAUnLdqyvNznBuoh3PNEwHnlWCcnp2wfvLc7syG5bjnzorATknCixIiWsPfod5qtSSNeO4hQoFVQ== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/types" "^0.1.3" + "@backstage/version-bridge" "^0.1.2" + history "^5.0.0" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + +"@backstage/dev-utils@^0.2.21-next.0": + version "0.2.25" + resolved "https://registry.npmjs.org/@backstage/dev-utils/-/dev-utils-0.2.25.tgz#c841fc845dcb01e22b55ac93d12ab057cc48bd2e" + integrity sha512-MbatjRFaA5SIILSXBt+oq3S90dgGr9VZHKIqEX5voWK25dyGgUMxeb8M9rlJmaOQIdeUnHLl64Zqnt1dkukl0A== + dependencies: + "@backstage/app-defaults" "^0.2.1" + "@backstage/catalog-model" "^0.13.0" + "@backstage/core-app-api" "^0.6.0" + "@backstage/core-components" "^0.9.1" + "@backstage/core-plugin-api" "^0.8.0" + "@backstage/integration-react" "^0.1.25" + "@backstage/plugin-catalog-react" "^0.9.0" + "@backstage/test-utils" "^0.3.0" + "@backstage/theme" "^0.2.15" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@testing-library/jest-dom" "^5.10.1" + "@testing-library/react" "^11.2.5" + "@testing-library/user-event" "^13.1.8" + react-hot-loader "^4.13.0" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + react-use "^17.2.4" + zen-observable "^0.8.15" + +"@backstage/errors@^0.2.0", "@backstage/errors@^0.2.2": + version "0.2.2" + resolved "https://registry.npmjs.org/@backstage/errors/-/errors-0.2.2.tgz#2113e0bc859e645b8b59bfcb435f7535739b02f8" + integrity sha512-s6Ru3NL4oFiHwNsMY1uiwqNKuOu9KQWkpse3adWZsDu1fCQKOw2omQ2qBHZ4Uj1xJ6x9Ye0yNTJ4vfHfdwiaEg== + dependencies: + "@backstage/types" "^0.1.3" + cross-fetch "^3.1.5" + serialize-error "^8.0.1" + +"@backstage/integration-react@^0.1.25": + version "0.1.25" + resolved "https://registry.npmjs.org/@backstage/integration-react/-/integration-react-0.1.25.tgz#ebbdd30d66e1d210b7cd33a682ad2be0d5ea5fc0" + integrity sha512-WI0UuXcX3m1OotfvqCVtQgyish9Gk+YkLVyrwWbzHFZ0isbT2I2i6VD/iau1X55oZpaubxLZ5CzYzA4QcAdm4w== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/core-components" "^0.9.1" + "@backstage/core-plugin-api" "^0.8.0" + "@backstage/integration" "^0.8.0" + "@backstage/theme" "^0.2.15" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + react-use "^17.2.4" + "@backstage/integration-react@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/integration-react/-/integration-react-1.0.0.tgz#8075e65c6b5387631d27a9c242e7a4fff6f92417" @@ -1428,6 +1732,19 @@ "@material-ui/lab" "4.0.0-alpha.57" react-use "^17.2.4" +"@backstage/integration@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@backstage/integration/-/integration-0.8.0.tgz#d74131ad347272b4935973aa4bd098fad9548ce6" + integrity sha512-GfNJRdcU7NMFjVqUSJOFRRrqEjKRGmgsL+s3TDtqmqqji7XPttTKD43+Ou50hRf0dkIETe5m1XHr1Fd5ksMt9A== + dependencies: + "@backstage/config" "^0.1.15" + "@octokit/auth-app" "^3.4.0" + "@octokit/rest" "^18.5.3" + cross-fetch "^3.1.5" + git-url-parse "^11.6.0" + lodash "^4.17.21" + luxon "^2.0.2" + "@backstage/integration@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/integration/-/integration-1.0.0.tgz#e307cfddea014bfb0eb2281a5ae25ea0b742e9cf" @@ -1441,6 +1758,33 @@ lodash "^4.17.21" luxon "^2.0.2" +"@backstage/plugin-catalog-react@^0.9.0": + version "0.9.0" + resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-0.9.0.tgz#ff8c09ec455655fadb2c2fafd578908138b858bc" + integrity sha512-qSiz/q7B/IlkHkx3Tcrbokm+jIOPMGjSzxdnKWv5c6KcqF+XLiVr6TavLWcAjaxk81skF8N3RCDG68tA1lL0HA== + dependencies: + "@backstage/catalog-client" "^0.9.0" + "@backstage/catalog-model" "^0.13.0" + "@backstage/core-components" "^0.9.1" + "@backstage/core-plugin-api" "^0.8.0" + "@backstage/errors" "^0.2.2" + "@backstage/integration" "^0.8.0" + "@backstage/plugin-permission-common" "^0.5.2" + "@backstage/plugin-permission-react" "^0.3.3" + "@backstage/types" "^0.1.3" + "@backstage/version-bridge" "^0.1.2" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + classnames "^2.2.6" + jwt-decode "^3.1.0" + lodash "^4.17.21" + qs "^6.9.4" + react-router "6.0.0-beta.0" + react-use "^17.2.4" + yaml "^1.10.0" + zen-observable "^0.8.15" + "@backstage/plugin-catalog-react@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.0.0.tgz#4f42c070ffe5c9690e45a5288e18bacd8d4e0e66" @@ -1469,6 +1813,124 @@ yaml "^1.10.0" zen-observable "^0.8.15" +"@backstage/plugin-home@^0.4.15": + version "0.4.19" + resolved "https://registry.npmjs.org/@backstage/plugin-home/-/plugin-home-0.4.19.tgz#a68a594557db8afdc76c2b08de7457d65258d597" + integrity sha512-yDu+m2zWGMqUaXZwuZWQdE8/ENdLdcobvt8q1lP/+eUXG1yO3BuBcqlss+cPkdO0d0LeW1WoJZZ20ZpYLUJ+6w== + dependencies: + "@backstage/catalog-model" "^1.0.0" + "@backstage/core-components" "^0.9.2" + "@backstage/core-plugin-api" "^1.0.0" + "@backstage/plugin-catalog-react" "^1.0.0" + "@backstage/plugin-search" "^0.7.4" + "@backstage/theme" "^0.2.15" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + lodash "^4.17.21" + react-router "6.0.0-beta.0" + react-use "^17.2.4" + +"@backstage/plugin-search-common@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@backstage/plugin-search-common/-/plugin-search-common-0.3.2.tgz#15984ba4c14f8a9119168e8c79344ef8101863dc" + integrity sha512-7vcpRo+5MB/QW/M77zPfcqxw0LzcQCHNXql0uxF+qBwVPJSHz9QB+YBuzGyaAlqfm5UPFXuweLQGqtoB+0DMLg== + dependencies: + "@backstage/plugin-permission-common" "^0.5.3" + "@backstage/types" "^1.0.0" + +"@backstage/plugin-search@^0.7.4": + version "0.7.4" + resolved "https://registry.npmjs.org/@backstage/plugin-search/-/plugin-search-0.7.4.tgz#d6571da128342d122f80253a756ece0a702967f9" + integrity sha512-mZBNJ78pAbdRyHdSAzSInPT74XcE+FvemmDXZnXShugVuWvIsDt3j7S/UQdQcOINQkEOuo/MqDbuWqkxQFW98w== + dependencies: + "@backstage/catalog-model" "^1.0.0" + "@backstage/config" "^1.0.0" + "@backstage/core-components" "^0.9.2" + "@backstage/core-plugin-api" "^1.0.0" + "@backstage/errors" "^1.0.0" + "@backstage/plugin-catalog-react" "^1.0.0" + "@backstage/plugin-search-common" "^0.3.2" + "@backstage/theme" "^0.2.15" + "@backstage/types" "^1.0.0" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + qs "^6.9.4" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + react-text-truncate "^0.18.0" + react-use "^17.2.4" + +"@backstage/release-manifests@^0.0.1": + version "0.0.1" + resolved "https://registry.npmjs.org/@backstage/release-manifests/-/release-manifests-0.0.1.tgz#c84ef4c21d5d96c644fb9595106c6203b86ecf5c" + integrity sha512-FPB7Uvx5ajz9d+XoloCR4ZaJ4QoTlf6lYoyfSy5u0VjVZrqaPQsRAROYbXKhj+bOnH4zmLdaZsRndY/sGkvNNQ== + dependencies: + cross-fetch "^3.0.6" + +"@backstage/search-common@^0.2.2": + version "0.2.4" + resolved "https://registry.npmjs.org/@backstage/search-common/-/search-common-0.2.4.tgz#2fc8a13bebad14a8aad0594988e6f566bc30ec15" + integrity sha512-1h9lelwN5XRqvxAsm3QLCt3ONrSRLgQyoh2cssQ1bbUr9zR+pveeeCZ824jRfMVHF0xIJZ2YJGTtaZ9vF+77fQ== + dependencies: + "@backstage/plugin-permission-common" "^0.5.1" + "@backstage/types" "^0.1.3" + +"@backstage/test-utils@^0.2.4": + version "0.2.6" + resolved "https://registry.npmjs.org/@backstage/test-utils/-/test-utils-0.2.6.tgz#d271268196c1ec8804cdea240763032cdb36987d" + integrity sha512-vkWBWQxuFDEIrGVSXVdJzxYyGi7m+AVehbECeLFz7XIwPq4fkhOrGDCw1Ovkmp9IFLTysQBe2p0fI0Az7Xu38w== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/core-app-api" "^0.5.4" + "@backstage/core-plugin-api" "^0.7.0" + "@backstage/plugin-permission-common" "^0.5.1" + "@backstage/plugin-permission-react" "^0.3.2" + "@backstage/theme" "^0.2.15" + "@backstage/types" "^0.1.3" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.11.2" + "@testing-library/jest-dom" "^5.10.1" + "@testing-library/react" "^11.2.5" + "@testing-library/user-event" "^13.1.8" + cross-fetch "^3.1.5" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + +"@backstage/test-utils@^0.3.0": + version "0.3.0" + resolved "https://registry.npmjs.org/@backstage/test-utils/-/test-utils-0.3.0.tgz#9c47efd97cdfa3809fe8493a39795a59373d00bd" + integrity sha512-UmJE0dZhtZGKcl58Yru2whEApamY71eJaC4uV0APySUjh0Z39pPxOOkM8a9VKH0/oafqoS4LXUJ4vGDzmy11UQ== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/core-app-api" "^0.6.0" + "@backstage/core-plugin-api" "^0.8.0" + "@backstage/plugin-permission-common" "^0.5.2" + "@backstage/plugin-permission-react" "^0.3.3" + "@backstage/theme" "^0.2.15" + "@backstage/types" "^0.1.3" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.11.2" + "@testing-library/jest-dom" "^5.10.1" + "@testing-library/react" "^11.2.5" + "@testing-library/user-event" "^13.1.8" + cross-fetch "^3.1.5" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + +"@backstage/types@^0.1.1", "@backstage/types@^0.1.2", "@backstage/types@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@backstage/types/-/types-0.1.3.tgz#6613d8cbdf97d42d31cd1e66a833df533e7ccf14" + integrity sha512-fJVi4oVrlO+G3PRv1fYSll9/X4pE11HLnkI//Geare9sP6wSfp/2zXpLYfKVsG0e24jOl7Swkc8lwLkQ90zMaQ== + +"@backstage/version-bridge@^0.1.2": + version "0.1.2" + resolved "https://registry.npmjs.org/@backstage/version-bridge/-/version-bridge-0.1.2.tgz#a24f42e0f383d497576f8c9d43851c6538345c03" + integrity sha512-hwThlwfVCXaHva6IBakbHlWt3c1ev3KIwukpBlU3tDgi6tTvG8tPDe2aRwz7zzPHZRtgEw6JPvjA9gn9vSPbzQ== + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1765,13 +2227,13 @@ "@codemirror/view" "^0.19.23" "@codemirror/highlight@^0.19.0": - version "0.19.6" - resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.6.tgz#7f2e066f83f5649e8e0748a3abe0aaeaf64b8ac2" - integrity sha512-+eibu6on9quY8uN3xJ/n3rH+YIDLlpX7YulVmFvqAIz/ukRQ5tWaBmB7fMixHmnmRIRBRZgB8rNtonuMwZSAHQ== + version "0.19.7" + resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.7.tgz#91a0c9994c759f5f153861e3aae74ff9e7c7c35b" + integrity sha512-3W32hBCY0pbbv/xidismw+RDMKuIag+fo4kZIbD7WoRj+Ttcaxjf+vP6RttRHXLaaqbWh031lTeON8kMlDhMYw== dependencies: "@codemirror/language" "^0.19.0" "@codemirror/rangeset" "^0.19.0" - "@codemirror/state" "^0.19.0" + "@codemirror/state" "^0.19.3" "@codemirror/view" "^0.19.0" "@lezer/common" "^0.15.0" style-mod "^4.0.0" @@ -1833,7 +2295,14 @@ "@codemirror/state" "^0.19.0" "@codemirror/view" "^0.19.0" -"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.1", "@codemirror/rangeset@^0.19.5": +"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.5": + version "0.19.8" + resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.8.tgz#f9b572c287bcef08d150b4a539e0128db62b2091" + integrity sha512-1vusIkxSD0vK5KQ22JO/4Ejfww5268PgM/CpKNBSpTpWZEFlZbmOPyRiY4HXO2oEzOpypbA/walMiNInWnrT0Q== + dependencies: + "@codemirror/state" "^0.19.0" + +"@codemirror/rangeset@^0.19.1": version "0.19.9" resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz#e80895de93c39dc7899f5be31d368c9d88aa4efc" integrity sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ== @@ -1868,7 +2337,7 @@ dependencies: "@codemirror/text" "^0.19.0" -"@codemirror/stream-parser@^0.19.0", "@codemirror/stream-parser@^0.19.2", "@codemirror/stream-parser@^0.19.6": +"@codemirror/stream-parser@^0.19.0", "@codemirror/stream-parser@^0.19.6": version "0.19.7" resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.7.tgz#99a9696307b90677f6e3abe29ea6d77c1c0a8db5" integrity sha512-4ExcbKksmU4PIT8s11/dPESgMNLQqlMlbQzRQ1CyMcmygcuQk+58zQ84nv/X17OCUd2ephZ1DKEaHHACifzCiA== @@ -1880,6 +2349,18 @@ "@lezer/common" "^0.15.0" "@lezer/lr" "^0.15.0" +"@codemirror/stream-parser@^0.19.2": + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.6.tgz#3cfba836f4e5daf6d0e87213b39027791c1e6329" + integrity sha512-dmPtoz/MR3IphxAsgywEyvSjOJCb2ikAgqp6BGIlwBEJVRiap0wFK4b3f/3DKIHUG4GezWRYQumXNyb3GNQevw== + dependencies: + "@codemirror/highlight" "^0.19.0" + "@codemirror/language" "^0.19.0" + "@codemirror/state" "^0.19.0" + "@codemirror/text" "^0.19.0" + "@lezer/common" "^0.15.0" + "@lezer/lr" "^0.15.0" + "@codemirror/text@^0.19.0", "@codemirror/text@^0.19.2", "@codemirror/text@^0.19.4", "@codemirror/text@^0.19.6": version "0.19.6" resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz#9adcbd8137f69b75518eacd30ddb16fd67bbac45" @@ -1902,7 +2383,18 @@ "@codemirror/state" "^0.19.0" "@codemirror/view" "^0.19.0" -"@codemirror/view@^0.19.0", "@codemirror/view@^0.19.22", "@codemirror/view@^0.19.23", "@codemirror/view@^0.19.31", "@codemirror/view@^0.19.34", "@codemirror/view@^0.19.44", "@codemirror/view@^0.19.45": +"@codemirror/view@^0.19.0": + version "0.19.44" + resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.44.tgz#153301eda413e76d2b98dc3870307f918c05c646" + integrity sha512-vahNUE6hSXdjzs1gcztKPJQhZu+ZIwRpK4ZGZTSD81/CZUVqtlF75W3RCYVgEdjTI1l6ogJmIL6FM2Xj7ltn7Q== + dependencies: + "@codemirror/rangeset" "^0.19.5" + "@codemirror/state" "^0.19.3" + "@codemirror/text" "^0.19.0" + style-mod "^4.0.0" + w3c-keyname "^2.2.4" + +"@codemirror/view@^0.19.22", "@codemirror/view@^0.19.23", "@codemirror/view@^0.19.31", "@codemirror/view@^0.19.34", "@codemirror/view@^0.19.44", "@codemirror/view@^0.19.45": version "0.19.47" resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.47.tgz#2163c3016d7680bf50dd695c0e3abdaf80f45363" integrity sha512-SfbagKvJQl5dtt+9wYpo9sa3ZkMgUxTq+/hXDf0KVwIx+zu3cJIqfEm9xSx6yXkq7it7RsPGHaPasApNffF/8g== @@ -1913,6 +2405,11 @@ style-mod "^4.0.0" w3c-keyname "^2.2.4" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -1958,9 +2455,9 @@ lodash.once "^4.1.1" "@dabh/diagnostics@^2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" - integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== + version "2.0.3" + resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== dependencies: colorspace "1.1.x" enabled "2.0.x" @@ -2024,16 +2521,16 @@ ts-node "^9" tslib "^2" -"@eslint/eslintrc@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" - integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== +"@eslint/eslintrc@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3" + integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg== dependencies: ajv "^6.12.4" debug "^4.3.2" espree "^9.3.1" globals "^13.9.0" - ignore "^5.2.0" + ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.0.4" @@ -2047,16 +2544,16 @@ yaml-ast-parser "0.0.43" "@gar/promisify@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" - integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + version "1.1.3" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@gitbeaker/core@^34.6.0": - version "34.6.0" - resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-34.6.0.tgz#f774ea98ac079ba2edf495fdef738ac3f741178b" - integrity sha512-yKF+oxffPyzOnyuHCqLGJrBHhcFHuGHtcmqKhGKtnYPfqcNYA8rt4INAHaE5wMz4ILua9b4sB8p42fki+xn6WA== + version "34.7.0" + resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-34.7.0.tgz#2cd52f6c21127e9d8147ce34f0f4d98ba72acf16" + integrity sha512-D3JSvnD2PTm8pj+UJhYqOnEmszVN5ADP2LJAFe+eDnW46eEIK5Veq6kxrzy7Q6n3lvnUABKoPi8x4dnqJlmxoA== dependencies: - "@gitbeaker/requester-utils" "^34.6.0" + "@gitbeaker/requester-utils" "^34.7.0" form-data "^4.0.0" li "^1.3.0" mime "^3.0.0" @@ -2086,10 +2583,10 @@ got "11.8.3" xcase "^2.0.1" -"@gitbeaker/requester-utils@^34.6.0": - version "34.6.0" - resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-34.6.0.tgz#4489009b759ca6f9a83f244453f4f610f1ac7349" - integrity sha512-H8utxbSP1kEdX0KcyVYrTDTT0A3UcPwrIV1ahyufX9ZLybYSUsA56B8Wx5kJSbWGFT1ffu2f8H2YDMwNCKKsBg== +"@gitbeaker/requester-utils@^34.7.0": + version "34.7.0" + resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-34.7.0.tgz#85add7010663391e54d1b29f7c8d69da7e71d30d" + integrity sha512-SEvw6l9c+mRq33nsX/nyIIvZpUH/1CzK2tQAFj8io/5PeUWZ8oBRW1DUN7lW7uhbGdu3Sc3dA1S4H9OSvt679g== dependencies: form-data "^4.0.0" qs "^6.10.1" @@ -2104,10 +2601,10 @@ qs "^6.10.1" xcase "^2.0.1" -"@google-cloud/common@^3.7.0": - version "3.10.0" - resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.10.0.tgz#454d1155bb512109cd83c6183aabbd39f9aabda7" - integrity sha512-XMbJYMh/ZSaZnbnrrOFfR/oQrb0SxG4qh6hDisWCoEbFcBHV0qHQo4uXfeMCzolx2Mfkh6VDaOGg+hyJsmxrlw== +"@google-cloud/common@^3.8.1": + version "3.9.0" + resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.9.0.tgz#d93e62d13e66edacfad1cd25b20fdbbc11d9f6dd" + integrity sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg== dependencies: "@google-cloud/projectify" "^2.0.0" "@google-cloud/promisify" "^2.0.0" @@ -2115,7 +2612,7 @@ duplexify "^4.1.1" ent "^2.2.0" extend "^3.0.2" - google-auth-library "^7.14.0" + google-auth-library "^7.9.2" retry-request "^4.2.2" teeny-request "^7.0.0" @@ -2136,48 +2633,50 @@ google-gax "^2.24.1" protobufjs "^6.8.6" -"@google-cloud/paginator@^3.0.0": - version "3.0.5" - resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c" - integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw== +"@google-cloud/paginator@^3.0.7": + version "3.0.7" + resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" + integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ== dependencies: arrify "^2.0.0" extend "^3.0.2" "@google-cloud/projectify@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65" - integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ== + version "2.1.1" + resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" + integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== "@google-cloud/promisify@^2.0.0": - version "2.0.3" - resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8" - integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw== + version "2.0.4" + resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" + integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== "@google-cloud/storage@^5.6.0", "@google-cloud/storage@^5.8.0": - version "5.11.0" - resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.11.0.tgz#f2414358f093034410bb03410176a5dcabc7bdf8" - integrity sha512-UgdAwBelXpQhubYOHw0U/hDxCXIXFT2TqDc0JWUxtg+BeePZC0ohoFM/b/tJffE28AZW0urTQax5xbRNoDA1Sw== + version "5.18.2" + resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.18.2.tgz#0ded98a69323d253e6dd986650edc89b5c504bf9" + integrity sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg== dependencies: - "@google-cloud/common" "^3.7.0" - "@google-cloud/paginator" "^3.0.0" + "@google-cloud/common" "^3.8.1" + "@google-cloud/paginator" "^3.0.7" "@google-cloud/promisify" "^2.0.0" + abort-controller "^3.0.0" arrify "^2.0.0" - async-retry "^1.3.1" + async-retry "^1.3.3" compressible "^2.0.12" - date-and-time "^1.0.0" + configstore "^5.0.0" + date-and-time "^2.0.0" duplexify "^4.0.0" extend "^3.0.2" - gcs-resumable-upload "^3.3.0" + gaxios "^4.0.0" get-stream "^6.0.0" + google-auth-library "^7.0.0" hash-stream-validation "^0.2.2" - mime "^2.2.0" + mime "^3.0.0" mime-types "^2.0.8" - onetime "^5.1.0" p-limit "^3.0.1" pumpify "^2.0.0" snakeize "^0.1.0" - stream-events "^1.0.1" + stream-events "^1.0.4" xdg-basedir "^4.0.0" "@graphiql/toolkit@^0.4.2": @@ -2257,9 +2756,9 @@ tslib "~2.3.0" "@graphql-codegen/plugin-helpers@^2.3.2", "@graphql-codegen/plugin-helpers@^2.4.0", "@graphql-codegen/plugin-helpers@^2.4.1": - version "2.4.2" - resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.2.tgz#e4f6b74dddcf8a9974fef5ce48562ae0980f9fed" - integrity sha512-LJNvwAPv/sKtI3RnRDm+nPD+JeOfOuSOS4FFIpQCMUCyMnFcchV/CPTTv7tT12fLUpEg6XjuFfDBvOwndti30Q== + version "2.4.1" + resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.1.tgz#433845a89b0b4b3a2a0e959e0a2cfe444cf7aeac" + integrity sha512-OPMma7aUnES3Dh+M0BfiNBnJLmYuH60EnbULAhufxFDn/Y2OA0Ht/LQok9beX6VN4ASZEMCOAGItJezGJr5DJw== dependencies: "@graphql-tools/utils" "^8.5.2" change-case-all "1.0.14" @@ -2278,25 +2777,25 @@ tslib "~2.3.0" "@graphql-codegen/typescript-resolvers@^2.4.3": - version "2.6.1" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.6.1.tgz#5963da60de79cfb847b55b2433cd9f65a33d7aad" - integrity sha512-tb8qiIYRDbypHvEVBi04OlItABPeormhd6gh26Q0FO/dD+tLx1V85A6wnHC4jExWPP9+/3PwHJL1pq/0n1kxlA== + version "2.5.2" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.5.2.tgz#dc19cc4fd8b7750269651adfa331f9f5f6e33032" + integrity sha512-iYgAttxqE/1TFcKmApwC/VzPFiPa22WYXq6XKQH8eDZUQvG2O4yG+2RfBxfPNGM5DnNkiOGBPuGipTSxV7lmaA== dependencies: "@graphql-codegen/plugin-helpers" "^2.4.0" - "@graphql-codegen/typescript" "^2.4.8" - "@graphql-codegen/visitor-plugin-common" "2.7.4" + "@graphql-codegen/typescript" "^2.4.5" + "@graphql-codegen/visitor-plugin-common" "2.7.1" "@graphql-tools/utils" "^8.1.1" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/typescript@^2.4.2", "@graphql-codegen/typescript@^2.4.8": - version "2.4.8" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.8.tgz#e8110baba9713cde72d57a5c95aa27400363ed9a" - integrity sha512-tVsHIkuyenBany7c5IMU1yi4S1er2hgyXJGNY7PcyhpJMx0eChmbqz1VTiZxDEwi8mDBS2mn3TaSJMh6xuJM5g== +"@graphql-codegen/typescript@^2.4.2", "@graphql-codegen/typescript@^2.4.5": + version "2.4.5" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.5.tgz#80ca7a343511a27cd587c0b220b0a0dd99a4dc4b" + integrity sha512-Ytb8phNHKl/v/wxudsMOAV1dmzIbckWHm2J83PLNOvnu9CGEhgsd67vfe3ZoF95VU2BKSG8BXGa6uL9z2xDmuA== dependencies: "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-codegen/schema-ast" "^2.4.1" - "@graphql-codegen/visitor-plugin-common" "2.7.4" + "@graphql-codegen/visitor-plugin-common" "2.7.1" auto-bind "~4.0.0" tslib "~2.3.0" @@ -2316,29 +2815,13 @@ parse-filepath "^1.0.2" tslib "~2.3.0" -"@graphql-codegen/visitor-plugin-common@2.7.4": - version "2.7.4" - resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.4.tgz#fbc8aec9df0035b8f29fa64a6356cbb02062da5d" - integrity sha512-aaDoEudDD+B7DK/UwDSL2Fzej75N9hNJ3N8FQuTIeDyw6FNGWUxmkjVBLQGlzfnYfK8IYkdfYkrPn3Skq0pVxA== - dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" - "@graphql-tools/optimize" "^1.0.1" - "@graphql-tools/relay-operation-optimizer" "^6.3.7" - "@graphql-tools/utils" "^8.3.0" - auto-bind "~4.0.0" - change-case-all "1.0.14" - dependency-graph "^0.11.0" - graphql-tag "^2.11.0" - parse-filepath "^1.0.2" - tslib "~2.3.0" - "@graphql-tools/apollo-engine-loader@^7.0.5": - version "7.2.1" - resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.1.tgz#14e5d0b1032a7d882d22a7533c8969ee3fa797f2" - integrity sha512-Fj/A8+9SXPTXkpKqhcSq7O9WZuMdy5zynGrnMyewbCuw1kSfzgC4pJB76ILSPa5ajOcC5bBmmvXm+yVFVRgVMg== + version "7.2.2" + resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.2.tgz#1463f5d2d95b5ca2b602b35b4922b38935013860" + integrity sha512-jrtA1IvgbaHzla9nyBngNyvajudTcQAVE3//mgrK+DoN7UpUhtoXfxTOOq2tzZN67o4a6Bv/RJsxB3rSI3NLzg== dependencies: "@graphql-tools/utils" "^8.5.1" - cross-undici-fetch "^0.0.20" + cross-undici-fetch "^0.1.19" sync-fetch "0.3.1" tslib "~2.3.0" @@ -2386,15 +2869,16 @@ tslib "~2.2.0" value-or-promise "1.0.6" -"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.4.2": - version "8.4.2" - resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.4.2.tgz#a61d45719855720304e3656800342cfa17d82558" - integrity sha512-CjggOhiL4WtyG2I3kux+1/p8lQxSFHBj0gwa0NxnQ6Vsnpw7Ig5VP1ovPnitFuBv2k4QdC37Nj2xv2n7DRn8fw== +"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.5.0": + version "8.5.0" + resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.5.0.tgz#f835b413f9277a07dd6db09d401fbec1ee76af0b" + integrity sha512-P2LLahWpv8eFrqXQi9v/NDLxLBKAugd3rmB8lxeTnCqma19ZM/VaSpvGAgGyjjHKQe097mAeBEkM/7uYbG/NFg== dependencies: "@graphql-tools/batch-execute" "^8.3.1" "@graphql-tools/schema" "^8.3.1" - "@graphql-tools/utils" "^8.5.3" + "@graphql-tools/utils" "^8.5.4" dataloader "2.0.0" + graphql-executor "0.0.18" tslib "~2.3.0" value-or-promise "1.0.11" @@ -2411,13 +2895,13 @@ unixify "^1.0.0" "@graphql-tools/github-loader@^7.0.5": - version "7.2.1" - resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.2.1.tgz#53ce2bf215a0eb083ff985b213402a24f1302da2" - integrity sha512-vqwh2H11ZkAATDam/JqiP0CSqQRPUbjgCDxPdUu/xvST2QKyA4+uVXLBcpBRJc5kJCQjELijeRWVHSk9oN1q6g== + version "7.2.3" + resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.2.3.tgz#1195150078e48c1b49b5106973c5ec5c928b24c1" + integrity sha512-enbMT5lWtKaLGw0PB9RL9Xg/oc9y89e6ihuxD/ZnnNXo60J1JVNtTy3+gRgXvGOX9WtJgy3UDVudDefrOHsqaA== dependencies: "@graphql-tools/graphql-tag-pluck" "^7.1.3" "@graphql-tools/utils" "^8.5.1" - cross-undici-fetch "^0.0.20" + cross-undici-fetch "^0.1.19" sync-fetch "0.3.1" tslib "~2.3.0" @@ -2442,22 +2926,22 @@ unixify "^1.0.0" "@graphql-tools/graphql-tag-pluck@^7.1.3": - version "7.1.4" - resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.4.tgz#174b69d40988c3450d310173c5be5af894929c41" - integrity sha512-0V2AY68ip3YmJ9rnIwQGxXsokCeGD9FTQOeSLzpwG74U0VY6bphfaCp5KVGW+W5sGJchTj3HvnmvdmWZnEZWZA== + version "7.1.5" + resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.5.tgz#229ed40f38430cdea750f112cbfad89fbc29129c" + integrity sha512-NKbFcjlg7cbK+scLXc6eVxXIhX4k8QL6lZ/y5Ju7yrpIN18k2vA78dI6W3Qb5qdftxbDNuC+kDmScZfzzxVPjQ== dependencies: - "@babel/parser" "7.16.4" - "@babel/traverse" "7.16.3" - "@babel/types" "7.16.0" + "@babel/parser" "^7.16.8" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" "@graphql-tools/import@^6.2.6", "@graphql-tools/import@^6.5.7": - version "6.6.6" - resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.6.tgz#a4ff216e6b8a49c392bb8a4378d4e9caf2b303d7" - integrity sha512-a0aVajxqu1MsL8EwavA44Osw20lBOIhq8IM2ZIHFPP62cPAcOB26P+Sq57DHMsSyX5YQ0ab9XPM2o4e1dQhs0w== + version "6.6.5" + resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.5.tgz#e1ec593960288ceda7d5c56c0073c702b1bdcfa0" + integrity sha512-w0/cYuhrr2apn+iGoTToCqt65x2NN2iHQyqRNk/Zw1NJ+e8/C3eKVw0jmW4pYQvSocuPxL4UCSI56SdKO7m3+Q== dependencies: - "@graphql-tools/utils" "8.6.2" + "@graphql-tools/utils" "8.6.1" resolve-from "5.0.0" tslib "~2.3.0" @@ -2504,15 +2988,7 @@ p-limit "3.1.0" tslib "~2.3.0" -"@graphql-tools/merge@8.2.6", "@graphql-tools/merge@^8.2.1": - version "8.2.6" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.6.tgz#7fb615fa9c143c3151ff025e501d52bd48186d19" - integrity sha512-dkwTm4czMISi/Io47IVvq2Fl9q4TIGKpJ0VZjuXYdEFkECyH6A5uwxZfPVandZG+gQs8ocFFoa6RisiUJLZrJw== - dependencies: - "@graphql-tools/utils" "8.6.5" - tslib "~2.3.0" - -"@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.12": +"@graphql-tools/merge@6.0.0 - 6.2.14": version "6.2.14" resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.14.tgz#694e2a2785ba47558e5665687feddd2935e9d94e" integrity sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow== @@ -2521,6 +2997,31 @@ "@graphql-tools/utils" "^7.7.0" tslib "~2.2.0" +"@graphql-tools/merge@8.2.6": + version "8.2.6" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.6.tgz#7fb615fa9c143c3151ff025e501d52bd48186d19" + integrity sha512-dkwTm4czMISi/Io47IVvq2Fl9q4TIGKpJ0VZjuXYdEFkECyH6A5uwxZfPVandZG+gQs8ocFFoa6RisiUJLZrJw== + dependencies: + "@graphql-tools/utils" "8.6.5" + tslib "~2.3.0" + +"@graphql-tools/merge@^6.2.12": + version "6.2.17" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.17.tgz#4dedf87d8435a5e1091d7cc8d4f371ed1e029f1f" + integrity sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow== + dependencies: + "@graphql-tools/schema" "^8.0.2" + "@graphql-tools/utils" "8.0.2" + tslib "~2.3.0" + +"@graphql-tools/merge@^8.2.1": + version "8.2.2" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.2.tgz#433566c662a33f5a9c3cc5f3ce3753fb0019477a" + integrity sha512-2DyqhIOMUMKbCPqo8p6xSdll2OBcBxGdOrxlJJlFQvinsSaYqp/ct3dhAxNtzaIcvSVgXvttQqfD7O2ziFtE7Q== + dependencies: + "@graphql-tools/utils" "^8.5.1" + tslib "~2.3.0" + "@graphql-tools/mock@^8.1.2": version "8.5.1" resolved "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.5.1.tgz#379d18eafdcb65486beb8f9247b33b7b693c53aa" @@ -2532,11 +3033,11 @@ tslib "~2.3.0" "@graphql-tools/optimize@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.0.1.tgz#9933fffc5a3c63f95102b1cb6076fb16ac7bb22d" - integrity sha512-cRlUNsbErYoBtzzS6zXahXeTBZGPVlPHXCpnEZ0XiK/KY/sQL96cyzak0fM/Gk6qEI9/l32MYEICjasiBQrl5w== + version "1.2.0" + resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.2.0.tgz#292d0a269f95d04bc6d822c034569bb7e591fb26" + integrity sha512-l0PTqgHeorQdeOizUor6RB49eOAng9+abSxiC5/aHRo6hMmXVaqv5eqndlmxCpx9BkgNb3URQbK+ZZHVktkP/g== dependencies: - tslib "~2.0.1" + tslib "~2.3.0" "@graphql-tools/prisma-loader@^7.0.6": version "7.1.1" @@ -2573,7 +3074,7 @@ relay-compiler "12.0.0" tslib "~2.3.0" -"@graphql-tools/schema@8.3.5", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": +"@graphql-tools/schema@8.3.5": version "8.3.5" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.5.tgz#ebec0c0c7f53e591d34375d6f81d0660852fcaca" integrity sha512-3mJ/K7TdL+fnEUtCUqF4qkh1fcNMzaxgwKgO9fSYSTS7zyT16hbi5XSulSTshygHgaD2u+MO588iR4ZJcbZcIg== @@ -2592,6 +3093,16 @@ tslib "~2.2.0" value-or-promise "1.0.6" +"@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.0.2", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": + version "8.3.1" + resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" + integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== + dependencies: + "@graphql-tools/merge" "^8.2.1" + "@graphql-tools/utils" "^8.5.1" + tslib "~2.3.0" + value-or-promise "1.0.11" + "@graphql-tools/url-loader@^6.0.0": version "6.10.1" resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz#dc741e4299e0e7ddf435eba50a1f713b3e763b33" @@ -2618,9 +3129,9 @@ ws "7.4.5" "@graphql-tools/url-loader@^7.0.11", "@graphql-tools/url-loader@^7.4.2": - version "7.7.0" - resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.0.tgz#504f0030c75b61bca4ac07da49e8cd872c316972" - integrity sha512-mBBb+aJqI4E0MVEzyfi76Pi/G6lGxGTVt/tP1YtKJly7UnonNoWOtDusdL3zIVAGhGgLsNrLbGhLDbwSd6TV6A== + version "7.7.1" + resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.1.tgz#2faabdc1d2c47edc8edc9cc938eee2767189869f" + integrity sha512-K/5amdeHtKYI976HVd/AXdSNvLL7vx5QVjMlwN0OHeYyxSgC+UOH+KkS7cshYgL13SekGu0Mxbg9ABfgQ34ECA== dependencies: "@graphql-tools/delegate" "^8.4.1" "@graphql-tools/utils" "^8.5.1" @@ -2628,7 +3139,7 @@ "@n1ru4l/graphql-live-query" "^0.9.0" "@types/websocket" "^1.0.4" "@types/ws" "^8.0.0" - cross-undici-fetch "^0.1.4" + cross-undici-fetch "^0.1.19" dset "^3.1.0" extract-files "^11.0.0" graphql-sse "^1.0.1" @@ -2642,17 +3153,17 @@ value-or-promise "^1.0.11" ws "^8.3.0" -"@graphql-tools/utils@8.6.1": - version "8.6.1" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" - integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== +"@graphql-tools/utils@8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.0.2.tgz#795a8383cdfdc89855707d62491c576f439f3c51" + integrity sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ== dependencies: tslib "~2.3.0" -"@graphql-tools/utils@8.6.2": - version "8.6.2" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz#095408135f091aac68fe18a0a21b708e685500da" - integrity sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA== +"@graphql-tools/utils@8.6.1", "@graphql-tools/utils@^8.5.4": + version "8.6.1" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" + integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== dependencies: tslib "~2.3.0" @@ -2684,11 +3195,11 @@ value-or-promise "1.0.6" "@graphql-tools/wrap@^8.3.1": - version "8.3.2" - resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.3.2.tgz#d3bcecb7529d071e4ecc4dfc75b9566e3da79d4f" - integrity sha512-7DcOBFB+Dd84x9dxSm7qS4iJONMyfLnCJb8A19vGPffpu4SMJ3sFcgwibKFu5l6mMUiigKgXna2RRgWI+02bKQ== + version "8.4.0" + resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.4.0.tgz#8fb2aa950ab68abe1fb63b6d62fc5b8fc4f8b025" + integrity sha512-fPB3+UnxLIPWDfMvAfBQnGmm8rrejeQjmCy7h9avWHBbkEELcvtrSWnKAvoKowe+WR9PVDM15XQ/PQvcddV0kQ== dependencies: - "@graphql-tools/delegate" "^8.4.2" + "@graphql-tools/delegate" "^8.5.0" "@graphql-tools/schema" "^8.3.1" "@graphql-tools/utils" "^8.5.3" tslib "~2.3.0" @@ -2699,38 +3210,39 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== -"@grpc/grpc-js@~1.4.0": - version "1.4.5" - resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.5.tgz#0cd840b47180624eeedf066f2cdc422d052401f8" - integrity sha512-A6cOzSu7dqXZ7rzvh/9JZf+Jg/MOpLEMP0IdT8pT8hrWJZ6TB4ydN/MRuqOtAugInJe/VQ9F8BPricUpYZSaZA== +"@grpc/grpc-js@~1.5.0": + version "1.5.5" + resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.5.tgz#f850a1bb7de8a1d0bb4821aabd3655d1c928d4c6" + integrity sha512-FTd27ItHlsSG/7hp62xgI9YnqSwRbHRSVmDVR8DwOoC+6t8JhHRXe2JL0U8N9GLc0jS0HrtEbO/KP5+G0ebjLQ== dependencies: "@grpc/proto-loader" "^0.6.4" "@types/node" ">=12.12.47" "@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4": - version "0.6.7" - resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.7.tgz#e62a202f4cf5897bdd0e244dec1dbc80d84bdfa1" - integrity sha512-QzTPIyJxU0u+r2qGe8VMl3j/W2ryhEvBv7hc42OjYfthSj370fUrb7na65rG6w3YLZS/fb8p89iTBobfWGDgdw== + version "0.6.9" + resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7" + integrity sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg== dependencies: "@types/long" "^4.0.1" lodash.camelcase "^4.3.0" long "^4.0.0" protobufjs "^6.10.0" - yargs "^16.1.1" + yargs "^16.2.0" "@hapi/hoek@^9.0.0": - version "9.0.4" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz#e80ad4e8e8d2adc6c77d985f698447e8628b6010" - integrity sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw== + version "9.2.1" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" + integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== "@hapi/topo@^5.0.0": - version "5.0.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" - integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== + version "5.1.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== dependencies: "@hapi/hoek" "^9.0.0" -"@hot-loader/react-dom-v16@npm:@hot-loader/react-dom@^16.0.2": +"@hot-loader/react-dom-v16@npm:@hot-loader/react-dom@^16.0.2", "@hot-loader/react-dom@^16.13.0": + name "@hot-loader/react-dom-v16" version "16.14.0" resolved "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-16.14.0.tgz#3cfc64e40bb78fa623e59b582b8f09dcdaad648a" integrity sha512-EN9czvcLsMYmSDo5yRKZOAq3ZGRlDpad1gPtX0NdMMomJXcPE3yFSeFzE94X/NjOaiSVimB7LuqPYpkWVaIi4Q== @@ -2750,9 +3262,9 @@ scheduler "^0.20.2" "@humanwhocodes/config-array@^0.9.2": - version "0.9.2" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" - integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== + version "0.9.3" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e" + integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -2779,19 +3291,20 @@ integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" find-up "^4.1.0" + get-package-type "^0.1.0" js-yaml "^3.13.1" resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^26.6.2": version "26.6.2" @@ -2964,17 +3477,6 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.2.5": - version "27.2.5" - resolved "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132" - integrity sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - "@jimp/bmp@^0.10.3": version "0.10.3" resolved "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz#79a23678e8389865c62e77b0dccc3e069dfc27f0" @@ -3300,6 +3802,24 @@ resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" @@ -4017,14 +4537,14 @@ write-file-atomic "^3.0.3" "@lezer/common@^0.15.0", "@lezer/common@^0.15.5": - version "0.15.10" - resolved "https://registry.npmjs.org/@lezer/common/-/common-0.15.10.tgz#662da668f46244fb20bfaada67b43b3d0463b344" - integrity sha512-vlr+be73zTDoQBIknBVOh/633tmbQcjxUu9PIeVeYESeBK3V6TuBW96RRFg93Y2cyK9lglz241gOgSn452HFvA== + version "0.15.11" + resolved "https://registry.npmjs.org/@lezer/common/-/common-0.15.11.tgz#965b5067036305f12e8a3efc344076850be1d3a8" + integrity sha512-vv0nSdIaVCRcJ8rPuDdsrNVfBOYe/4Szr/LhF929XyDmBndLDuWiCCHooGlGlJfzELyO608AyDhVsuX/ZG36NA== "@lezer/lr@^0.15.0": - version "0.15.5" - resolved "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.5.tgz#4bce44169c441d9dda7be398f5202ea65c5f1138" - integrity sha512-DEcLyhdmBxD1foQe7RegLrSlfS/XaTMGLkO5evkzHWAQKh/JnFWp7j7iNB7s2EpxzRrBCh0U+W7JDCeFhv2mng== + version "0.15.8" + resolved "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" + integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== dependencies: "@lezer/common" "^0.15.0" @@ -4051,24 +4571,24 @@ read-yaml-file "^1.1.0" "@mapbox/node-pre-gyp@^1.0.0": - version "1.0.5" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" - integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== + version "1.0.8" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz#32abc8a5c624bc4e46c43d84dfb8b26d33a96f58" + integrity sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg== dependencies: detect-libc "^1.0.3" https-proxy-agent "^5.0.0" make-dir "^3.1.0" - node-fetch "^2.6.1" + node-fetch "^2.6.5" nopt "^5.0.0" - npmlog "^4.1.2" + npmlog "^5.0.1" rimraf "^3.0.2" - semver "^7.3.4" - tar "^6.1.0" + semver "^7.3.5" + tar "^6.1.11" "@material-table/core@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@material-table/core/-/core-3.1.0.tgz#4fc3bd1553359e628413437a4102d8469852c253" - integrity sha512-46vpm1q9v2B5t/VgaEq2JmnftTBYle1yNAX3cfdQsTRZ1iWkpG34qBkNHx/hbOauQPsm5hmeUo1KJJZdwtGL1g== + version "3.2.5" + resolved "https://registry.npmjs.org/@material-table/core/-/core-3.2.5.tgz#37b3c665bed3ded6c147ad74adb330bf49efb213" + integrity sha512-TmVN/In15faabezW3COb4Ve5+YhqxFEQnf2Q2Cz3FVXXCFqJvtu3pkRLi+7N9UJ5bvistszz6wfHeiZZY1Rf9Q== dependencies: "@babel/runtime" "^7.12.5" "@date-io/date-fns" "^1.3.13" @@ -4081,6 +4601,7 @@ prop-types "^15.7.2" react-beautiful-dnd "^13.0.0" react-double-scrollbar "0.0.15" + uuid "^3.4.0" "@material-ui/core@^4.11.0", "@material-ui/core@^4.11.3", "@material-ui/core@^4.12.1", "@material-ui/core@^4.12.2", "@material-ui/core@^4.9.13": version "4.12.3" @@ -4200,9 +4721,9 @@ "@types/gapi.client" "*" "@microsoft/api-documenter@^7.15.0": - version "7.15.0" - resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.15.0.tgz#e6cf24fc0e2f18a71dcf4c5c8100cc083167a81e" - integrity sha512-0KvwFamTIGZk6VE71F5gdDLxszLet0A1PEeb87RTdxr4KC0/yVFQvDyj+ck+HVr5+Exf6RyzIHfou0sgJl9SDA== + version "7.15.3" + resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.15.3.tgz#2aeeb9ef95a59ad2328e7b7a3de66fa715c7eee0" + integrity sha512-tehv1f/aKwGBQp0sheQofz5NQfa61mvTdAe4IHQnVavsyyK71r+P+CVXWewznPYkqFzzVXaTdrCuNGPU5Yd3mg== dependencies: "@microsoft/api-extractor-model" "7.15.3" "@microsoft/tsdoc" "0.13.2" @@ -4245,9 +4766,9 @@ integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== "@microsoft/microsoft-graph-types@^2.6.0": - version "2.15.0" - resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.15.0.tgz#1705ea1ce84c3de4705957392d7f0e3ae465c9f8" - integrity sha512-EyuOpZs55HUoC37Ujrp6IRgE5ghf/wtDrlWuJm7J/DKoB7B/Iek7eXdavTygx2uBeDZ5b4jXXvwl4PiDLlEcsw== + version "2.14.0" + resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.14.0.tgz#5c9ba1ad153b4a1ddeb330099e9ac55e379882c4" + integrity sha512-O4vcX6+2ivfUhDiZm/p4SIxGv+SQFe3qROcmvZpPluNAqL/Ho5/6LXysgjexvtUtNOUYXN/ZtfZdY30tlwQy+w== "@microsoft/tsdoc-config@~0.15.2": version "0.15.2" @@ -4290,29 +4811,29 @@ integrity sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg== "@n1ru4l/push-pull-async-iterable-iterator@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.1.0.tgz#be450c97d1c7cd6af1a992d53232704454345df9" - integrity sha512-K4scWxGhdQM0masHHy4gIQs2iGiLEXCrXttumknyPJqtdl4J179BjpibWSSQ1fxKdCcHgIlCTKXJU6cMM6D6Wg== + version "3.2.0" + resolved "https://registry.npmjs.org/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.2.0.tgz#c15791112db68dd9315d329d652b7e797f737655" + integrity sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q== -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" "@npmcli/arborist@^4.0.4": @@ -4354,19 +4875,19 @@ walk-up-path "^1.0.0" "@npmcli/ci-detect@^1.0.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" - integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== + version "1.4.0" + resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" + integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== "@npmcli/fs@^1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" - integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== + version "1.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/git@^2.0.1", "@npmcli/git@^2.1.0": +"@npmcli/git@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== @@ -4389,14 +4910,14 @@ npm-normalize-package-bin "^1.0.1" "@npmcli/map-workspaces@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.0.tgz#e342efbbdd0dad1bba5d7723b674ca668bf8ac5a" - integrity sha512-QBJfpCY1NOAkkW3lFfru9VTdqvMB2TN0/vrevl5xBCv5Fi0XDVcA6rqqSau4Ysi4Iw3fBzyXV7hzyTBDfadf7g== + version "2.0.1" + resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.1.tgz#da8b4d2e1f4cef30efcc81e425bd11a9bf5489f2" + integrity sha512-awwkB/tSWWaCD8F0IbawBdmoPFlbXMaEPN9LyTuJcyJz404/QhB4B/vhQntpk6uxOAkM+bxR7qWMJghYg0tcYQ== dependencies: "@npmcli/name-from-folder" "^1.0.1" - glob "^7.1.6" - minimatch "^3.0.4" - read-package-json-fast "^2.0.1" + glob "^7.2.0" + minimatch "^5.0.0" + read-package-json-fast "^2.0.3" "@npmcli/metavuln-calculator@^2.0.0": version "2.0.0" @@ -4408,14 +4929,7 @@ pacote "^12.0.0" semver "^7.3.2" -"@npmcli/move-file@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" - integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== - dependencies: - mkdirp "^1.0.4" - -"@npmcli/move-file@^1.1.0": +"@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0": version "1.1.2" resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== @@ -4448,15 +4962,13 @@ infer-owner "^1.0.4" "@npmcli/run-script@^1.8.2": - version "1.8.3" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz#07f440ed492400bb1114369bc37315eeaaae2bb3" - integrity sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ== + version "1.8.6" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" + integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" - infer-owner "^1.0.4" node-gyp "^7.1.0" - puka "^1.0.1" read-package-json-fast "^2.0.1" "@npmcli/run-script@^2.0.0": @@ -4482,7 +4994,7 @@ "@octokit/types" "^6.27.1" "@octokit/webhooks" "^9.0.1" -"@octokit/auth-app@^3.3.0": +"@octokit/auth-app@^3.3.0", "@octokit/auth-app@^3.4.0": version "3.6.1" resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.6.1.tgz#aa5b02cc211175cbc28ce6c03c73373c1206d632" integrity sha512-6oa6CFphIYI7NxxHrdVOzhG7hkcKyGyYocg7lNDSJVauVOLtylg8hNJzoUyPAYKKK0yUeoZamE/lMs2tG+S+JA== @@ -4498,22 +5010,6 @@ universal-github-app-jwt "^1.0.1" universal-user-agent "^6.0.0" -"@octokit/auth-app@^3.4.0": - version "3.4.0" - resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.4.0.tgz#af9f68512e7b8dd071b49e1470a1ddf88ff6a3a3" - integrity sha512-zBVgTnLJb0uoNMGCpcDkkAbPeavHX7oAjJkaDv2nqMmsXSsCw4AbUhjl99EtJQG/JqFY/kLFHM9330Wn0k70+g== - dependencies: - "@octokit/auth-oauth-app" "^4.1.0" - "@octokit/auth-oauth-user" "^1.2.3" - "@octokit/request" "^5.4.11" - "@octokit/request-error" "^2.0.0" - "@octokit/types" "^6.0.3" - "@types/lru-cache" "^5.1.0" - deprecation "^2.3.1" - lru-cache "^6.0.0" - universal-github-app-jwt "^1.0.1" - universal-user-agent "^6.0.0" - "@octokit/auth-oauth-app@^4.0.0", "@octokit/auth-oauth-app@^4.3.0": version "4.3.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.3.0.tgz#de02f184360ffd7cfccef861053784fc4410e7ea" @@ -4527,42 +5023,17 @@ btoa-lite "^1.0.0" universal-user-agent "^6.0.0" -"@octokit/auth-oauth-app@^4.1.0": - version "4.1.2" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.1.2.tgz#bf3ff30c260e6e9f10b950386f279befb8fe907d" - integrity sha512-bdNGNRmuDJjKoHla3mUGtkk/xcxKngnQfBEnyk+7VwMqrABKvQB1wQRSrwSWkPPUX7Lcj2ttkPAPG7+iBkMRnw== - dependencies: - "@octokit/auth-oauth-device" "^3.1.1" - "@octokit/auth-oauth-user" "^1.2.1" - "@octokit/request" "^5.3.0" - "@octokit/types" "^6.0.3" - "@types/btoa-lite" "^1.0.0" - btoa-lite "^1.0.0" - universal-user-agent "^6.0.0" - "@octokit/auth-oauth-device@^3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.1.tgz#380499f9a850425e2c7bdeb62afc070181c536a9" - integrity sha512-ykDZROilszXZJ6pYdl6SZ15UZniCs0zDcKgwOZpMz3U0QDHPUhFGXjHToBCAIHwbncMu+jLt4/Nw4lq3FwAw/w== + version "3.1.2" + resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.2.tgz#d299f51f491669f37fe7af8738f5ac921e63973c" + integrity sha512-w7Po4Ck6N2aAn2VQyKLuojruiyKROTBv4qs6IwE5rbwF7HhBXXp4A/NKmkpoFIZkiXQtM+N8QtkSck4ApYWdGg== dependencies: "@octokit/oauth-methods" "^1.1.0" "@octokit/request" "^5.4.14" "@octokit/types" "^6.10.0" universal-user-agent "^6.0.0" -"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3": - version "1.2.4" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.2.4.tgz#3594eb7d40cb462240e7e90849781dfa0045aed5" - integrity sha512-efOajupCZBP1veqx5w59Qey0lIud1rDUgxTRjjkQDU3eOBmkAasY1pXemDsQwW0I85jb1P/gn2dMejedVxf9kw== - dependencies: - "@octokit/auth-oauth-device" "^3.1.1" - "@octokit/oauth-methods" "^1.1.0" - "@octokit/request" "^5.4.14" - "@octokit/types" "^6.12.2" - btoa-lite "^1.0.0" - universal-user-agent "^6.0.0" - -"@octokit/auth-oauth-user@^1.3.0": +"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3", "@octokit/auth-oauth-user@^1.3.0": version "1.3.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.3.0.tgz#da4e4529145181a6aa717ae858afb76ebd6e3360" integrity sha512-3QC/TAdk7onnxfyZ24BnJRfZv8TRzQK7SEFUS9vLng4Vv6Hv6I64ujdk/CUkREec8lhrwU764SZ/d+yrjjqhaQ== @@ -4575,11 +5046,11 @@ universal-user-agent "^6.0.0" "@octokit/auth-token@^2.4.4": - version "2.4.4" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz#ee31c69b01d0378c12fd3ffe406030f3d94d3b56" - integrity sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q== + version "2.5.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: - "@octokit/types" "^6.0.0" + "@octokit/types" "^6.0.3" "@octokit/auth-unauthenticated@^2.0.0", "@octokit/auth-unauthenticated@^2.0.4": version "2.1.0" @@ -4589,18 +5060,6 @@ "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.0.3" -"@octokit/core@^3.2.3": - version "3.2.4" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz#5791256057a962eca972e31818f02454897fd106" - integrity sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.4.12" - "@octokit/types" "^6.0.3" - before-after-hook "^2.1.0" - universal-user-agent "^6.0.0" - "@octokit/core@^3.3.2", "@octokit/core@^3.4.0", "@octokit/core@^3.5.1": version "3.5.1" resolved "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" @@ -4615,18 +5074,18 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.3" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz#dd09b599662d7e1b66374a177ab620d8cdf73487" - integrity sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg== + version "6.0.12" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" + integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== dependencies: - "@octokit/types" "^5.0.0" - is-plain-object "^3.0.0" - universal-user-agent "^5.0.0" + "@octokit/types" "^6.0.3" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" "@octokit/graphql@^4.5.8": - version "4.7.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.7.0.tgz#cbe12edc2bc61e9eaa5f9e5d092644c92b6fcb74" - integrity sha512-diY0qMPyQjfu4rDu3kDhJ9qIZadIm4IISO3RJSv9ajYUWJUCO0AykbgzLcg1xclxtXgzY583u3gAv66M6zz5SA== + version "4.8.0" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" + integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" @@ -4647,28 +5106,12 @@ fromentries "^1.3.1" universal-user-agent "^6.0.0" -"@octokit/oauth-authorization-url@^4.2.1": +"@octokit/oauth-authorization-url@^4.2.1", "@octokit/oauth-authorization-url@^4.3.1": version "4.3.3" resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.3.tgz#6a6ef38f243086fec882b62744f39b517528dfb9" integrity sha512-lhP/t0i8EwTmayHG4dqLXgU+uPVys4WD/qUNvC+HfB1S1dyqULm5Yx9uKc1x79aP66U1Cb4OZeW8QU/RA9A4XA== -"@octokit/oauth-authorization-url@^4.3.1": - version "4.3.1" - resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.1.tgz#008d09bf427a7f61c70b5283040d60a456011a51" - integrity sha512-sI/SOEAvzRhqdzj+kJl+2ifblRve2XU6ZB36Lq25Su8R31zE3GoKToSLh64nWFnKePNi2RrdcMm94UEIQZslOw== - -"@octokit/oauth-methods@^1.1.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.2.tgz#3d98c548aa2ace36ad8d0ce6593fd49dcbe103cc" - integrity sha512-CFMUMn9DdPLMcpffhKgkwIIClfv0ZToJM4qcg4O0egCoHMYkVlxl22bBoo9qCnuF1U/xn871KEXuozKIX+bA2w== - dependencies: - "@octokit/oauth-authorization-url" "^4.3.1" - "@octokit/request" "^5.4.14" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.12.2" - btoa-lite "^1.0.0" - -"@octokit/oauth-methods@^1.2.2": +"@octokit/oauth-methods@^1.1.0", "@octokit/oauth-methods@^1.2.2": version "1.2.6" resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.6.tgz#b9ac65e374b2cc55ee9dd8dcdd16558550438ea7" integrity sha512-nImHQoOtKnSNn05uk2o76om1tJWiAo4lOu2xMAHYsNr0fwopP+Dv+2MlGvaMMlFjoqVd3fF3X5ZDTKCsqgmUaQ== @@ -4684,11 +5127,6 @@ resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== -"@octokit/openapi-types@^7.3.2": - version "7.3.2" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-7.3.2.tgz#065ce49b338043ec7f741316ce06afd4d459d944" - integrity sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA== - "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" @@ -4701,31 +5139,11 @@ dependencies: "@octokit/types" "^6.34.0" -"@octokit/plugin-paginate-rest@^2.6.2": - version "2.7.0" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.7.0.tgz#6bb7b043c246e0654119a6ec4e72a172c9e2c7f3" - integrity sha512-+zARyncLjt9b0FjqPAbJo4ss7HOlBi1nprq+cPlw5vu2+qjy7WvlXhtXFdRHQbSL1Pt+bfAKaLADEkkvg8sP8w== - dependencies: - "@octokit/types" "^6.0.1" - -"@octokit/plugin-request-log@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz#394d59ec734cd2f122431fbaf05099861ece3c44" - integrity sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg== - "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@5.3.1": - version "5.3.1" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.1.tgz#deddce769b4ec3179170709ab42e4e9e6195aaa9" - integrity sha512-3B2iguGmkh6bQQaVOtCsS0gixrz8Lg0v4JuXPqBcFqLKuJtxAUf3K88RxMEf/naDOI73spD+goJ/o7Ie7Cvdjg== - dependencies: - "@octokit/types" "^6.16.2" - deprecation "^2.3.1" - "@octokit/plugin-rest-endpoint-methods@^5.12.0": version "5.13.0" resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" @@ -4750,7 +5168,7 @@ "@octokit/types" "^6.0.1" bottleneck "^2.15.3" -"@octokit/request-error@^2.0.0", "@octokit/request-error@^2.0.2", "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": +"@octokit/request-error@^2.0.2", "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== @@ -4759,29 +5177,19 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.3.0", "@octokit/request@^5.4.11", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": - version "5.6.0" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672" - integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA== +"@octokit/request@^5.3.0", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": + version "5.6.3" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" + integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.16.1" is-plain-object "^5.0.0" - node-fetch "^2.6.1" + node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@^18.1.0", "@octokit/rest@^18.5.3": - version "18.5.6" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.5.6.tgz#8c9a7c9329c7bbf478af20df78ddeab0d21f6d89" - integrity sha512-8HdG6ZjQdZytU6tCt8BQ2XLC7EJ5m4RrbyU/EARSkAM1/HP3ceOzMG/9atEfe17EDMer3IVdHWLedz2wDi73YQ== - dependencies: - "@octokit/core" "^3.2.3" - "@octokit/plugin-paginate-rest" "^2.6.2" - "@octokit/plugin-request-log" "^1.0.2" - "@octokit/plugin-rest-endpoint-methods" "5.3.1" - -"@octokit/rest@^18.12.0": +"@octokit/rest@^18.1.0", "@octokit/rest@^18.12.0", "@octokit/rest@^18.5.3": version "18.12.0" resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== @@ -4791,21 +5199,14 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": +"@octokit/types@^5.0.1": version "5.5.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz#e5f06e8db21246ca102aa28444cdb13ae17a139b" integrity sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ== dependencies: "@types/node" ">= 8" -"@octokit/types@^6.0.0", "@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.14.2", "@octokit/types@^6.16.1", "@octokit/types@^6.16.2", "@octokit/types@^6.8.2": - version "6.16.4" - resolved "https://registry.npmjs.org/@octokit/types/-/types-6.16.4.tgz#d24f5e1bacd2fe96d61854b5bda0e88cf8288dfe" - integrity sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A== - dependencies: - "@octokit/openapi-types" "^7.3.2" - -"@octokit/types@^6.26.0", "@octokit/types@^6.27.1", "@octokit/types@^6.34.0": +"@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.14.2", "@octokit/types@^6.16.1", "@octokit/types@^6.26.0", "@octokit/types@^6.27.1", "@octokit/types@^6.34.0", "@octokit/types@^6.8.2": version "6.34.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== @@ -4838,12 +5239,11 @@ integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== "@openapi-contrib/openapi-schema-to-json-schema@^3.0.0": - version "3.0.3" - resolved "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.0.3.tgz#c626eab186938f2751ee54ec68b345133bc0065c" - integrity sha512-/WX/Jos8n7CxvtWPmhlKl9qCAAW0I+VR+V4yXfQxCmB8wmjiz6lPLTGjNk5zD15qi2MGv58++hQLLdow89KdkA== + version "3.1.1" + resolved "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.1.1.tgz#e43b09680e652bf1b9e135db3f8648e979b76c07" + integrity sha512-FMvdhv9Jr9tULjJAQaQzhCmNYYj2vQFVnl7CGlLAImZvJal71oedXMGszpPaZTLftAk5TCHqjnirig+P6LZxug== dependencies: fast-deep-equal "^3.1.3" - lodash.clonedeep "^4.5.0" "@opentelemetry/api@^1.0.1": version "1.0.4" @@ -4913,6 +5313,13 @@ resolved "https://registry.npmjs.org/@react-hookz/deep-equal/-/deep-equal-1.0.1.tgz#1e9aad97b964879b54a3909f36f0727befa13e1f" integrity sha512-6k/pU2jNlgYvKOy84vpCAZ8MGVwybvAdjzrh4UicCVOCPxz0LSBws1OE6O5TO4sPHaSw+yLfNzNK8RicGFc1Kw== +"@react-hookz/web@^12.3.0": + version "12.3.0" + resolved "https://registry.npmjs.org/@react-hookz/web/-/web-12.3.0.tgz#a9a1311a15171a57d68a3db61492f913d4fd455a" + integrity sha512-Uujp2RfX/oDEtAbdkV0W/nhiQ5ZYVH+MEq04T7/8TstyiwoIlvsRbEic6c6gQA6sQ/lw93cZ8NP8R7AYjiqDvg== + dependencies: + "@react-hookz/deep-equal" "^1.0.1" + "@react-hookz/web@^13.0.0": version "13.0.0" resolved "https://registry.npmjs.org/@react-hookz/web/-/web-13.0.0.tgz#7c4d54fb4c1edf885879914d719e35086964e46e" @@ -5076,9 +5483,9 @@ picomatch "^2.2.2" "@rollup/pluginutils@^4.1.1": - version "4.1.1" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" - integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== + version "4.1.2" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751" + integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ== dependencies: estree-walker "^2.0.1" picomatch "^2.2.2" @@ -5117,16 +5524,16 @@ string-argv "~0.3.1" "@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== + version "0.3.1" + resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" + integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== dependencies: any-observable "^0.3.0" -"@sideway/address@^4.1.0": - version "4.1.1" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" - integrity sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ== +"@sideway/address@^4.1.3": + version "4.1.3" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" + integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== dependencies: "@hapi/hoek" "^9.0.0" @@ -5146,9 +5553,9 @@ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sindresorhus/is@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" - integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== + version "4.4.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.4.0.tgz#e277e5bdbdf7cb1e20d320f02f5e2ed113cd3185" + integrity sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ== "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": version "1.8.3" @@ -5157,6 +5564,13 @@ dependencies: type-detect "4.0.8" +"@sinonjs/fake-timers@>=5": + version "9.1.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.0.tgz#8c92c56f195e0bed4c893ba59c8e3d55831ca0df" + integrity sha512-M8vapsv9qQupMdzrVzkn5rb9jG7aUTEPAZdMtME2PuBaefksFZVE2C1g4LBRTkF/k3nRDNbDc5tp5NFC1PEYxA== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@sinonjs/fake-timers@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" @@ -5164,7 +5578,7 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/fake-timers@^7.0.4", "@sinonjs/fake-timers@^7.1.0": +"@sinonjs/fake-timers@^7.1.2": version "7.1.2" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== @@ -5172,9 +5586,9 @@ "@sinonjs/commons" "^1.7.0" "@sinonjs/samsam@^6.0.2": - version "6.0.2" - resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.0.2.tgz#a0117d823260f282c04bff5f8704bdc2ac6910bb" - integrity sha512-jxPRPp9n93ci7b8hMfJOFDPRLFYadN6FSpeROFTR4UNF4i5b+EK6m4QXPO46BDhFgRy1JuS87zAnFOzCUwMJcQ== + version "6.1.1" + resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz#627f7f4cbdb56e6419fa2c1a3e4751ce4f6a00b1" + integrity sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA== dependencies: "@sinonjs/commons" "^1.6.0" lodash.get "^4.4.2" @@ -5185,6 +5599,11 @@ resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== +"@spotify/eslint-config-base@^12.0.0": + version "12.0.0" + resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-12.0.0.tgz#0b1e41bb436d5c1c20714703629514d64c3c0f06" + integrity sha512-5Uud/TmzakqmdUNCZpD8JFQRa2VG3dVd3DanSMpU/nVdu6K5LyX8EMU3Tz1vGP18Wih8iAu/sBSJhntNzw7e6w== + "@spotify/eslint-config-base@^13.0.0": version "13.0.0" resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-13.0.0.tgz#bb748bb2b705ffb5085f873aa0daf94dfad59985" @@ -5195,6 +5614,11 @@ resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-12.0.0.tgz#5b8d4bc3b81a8ec2824648f482f1f6c3cf711893" integrity sha512-lNHZRtJesNA273OJHBVUGAg2JYyVDZ+bsT7h3OwnX1HYgejJ3YcKPSziPM8TGFAN8DruH3tHFfaM63uAIA1+uw== +"@spotify/eslint-config-typescript@^12.0.0": + version "12.0.0" + resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz#4c7af3f74a47668bec0c860b72e2a0103e78a138" + integrity sha512-nMVll8ZkN/W8+IHn6Iz3YzCKW0qhrn3TVfyxkAr3qmXm5cex+GzyUdZEuxb8rdN2inZL6A1Il2NFfO5p/UKxog== + "@spotify/eslint-config-typescript@^13.0.0": version "13.0.0" resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz#908a51e05de7ec9d2e3b136f9831e0ddb36c7f89" @@ -5219,46 +5643,100 @@ dependencies: loader-utils "^1.1.0" +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + "@svgr/babel-plugin-add-jsx-attribute@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + "@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + "@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + "@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + "@svgr/babel-plugin-svg-dynamic-title@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + "@svgr/babel-plugin-svg-em-dimensions@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + "@svgr/babel-plugin-transform-react-native-svg@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + "@svgr/babel-plugin-transform-svg-component@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" integrity sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg== +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + "@svgr/babel-preset@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" @@ -5273,6 +5751,15 @@ "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" "@svgr/babel-plugin-transform-svg-component" "^6.2.0" +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + "@svgr/core@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" @@ -5282,6 +5769,13 @@ camelcase "^6.2.0" cosmiconfig "^7.0.1" +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + "@svgr/hast-util-to-babel-ast@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" @@ -5300,6 +5794,16 @@ "@svgr/hast-util-to-babel-ast" "^6.2.1" svg-parser "^2.0.2" +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + "@svgr/plugin-svgo@6.2.x", "@svgr/plugin-svgo@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" @@ -5309,6 +5813,29 @@ deepmerge "^4.2.2" svgo "^2.5.0" +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/rollup@5.5.x": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/rollup/-/rollup-5.5.0.tgz#9ceaaa6d463916e69aff8a9e10b3bb8fbb94688a" + integrity sha512-EiZmH2VTr+Xzyb6Ga8XtGa9MEbiU3WQnB5vHmqhwAUqibU3uwuwr7MN+QwIh/gtBk1ucMim8BCfcRTlLVREM8A== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + rollup-pluginutils "^2.8.2" + "@svgr/rollup@6.2.x": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/rollup/-/rollup-6.2.1.tgz#23ac3173d2bd85842ca8858d3435332af1f064ab" @@ -5324,6 +5851,20 @@ "@svgr/plugin-svgo" "^6.2.0" rollup-pluginutils "^2.8.2" +"@svgr/webpack@5.5.x": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + "@svgr/webpack@6.2.x": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" @@ -5346,9 +5887,9 @@ defer-to-connect "^1.0.1" "@szmarczak/http-timer@^4.0.5": - version "4.0.5" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" - integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== + version "4.0.6" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" @@ -5360,6 +5901,20 @@ "@babel/runtime" "^7.14.6" "@testing-library/dom" "^8.1.0" +"@testing-library/dom@^7.28.1": + version "7.31.2" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" + integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + chalk "^4.1.0" + dom-accessibility-api "^0.5.6" + lz-string "^1.4.4" + pretty-format "^26.6.2" + "@testing-library/dom@^8.0.0", "@testing-library/dom@^8.1.0": version "8.11.3" resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.3.tgz#38fd63cbfe14557021e88982d931e33fb7c1a808" @@ -5400,6 +5955,14 @@ "@types/react-test-renderer" ">=16.9.0" react-error-boundary "^3.1.0" +"@testing-library/react@^11.2.5": + version "11.2.7" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" + integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^7.28.1" + "@testing-library/react@^12.1.3": version "12.1.4" resolved "https://registry.npmjs.org/@testing-library/react/-/react-12.1.4.tgz#09674b117e550af713db3f4ec4c0942aa8bbf2c0" @@ -5493,9 +6056,9 @@ integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== "@types/aria-query@^4.2.0": - version "4.2.0" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" - integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== + version "4.2.2" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== "@types/aws-lambda@^8.10.83": version "8.10.92" @@ -5510,9 +6073,9 @@ "@types/node" "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.9" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== + version "7.1.18" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" + integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -5521,24 +6084,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + version "7.6.4" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.2" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + version "7.4.1" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== + version "7.14.2" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== dependencies: "@babel/types" "^7.3.0" @@ -5563,9 +6126,9 @@ integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg== "@types/cacheable-request@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" - integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== + version "6.0.2" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" @@ -5598,7 +6161,7 @@ dependencies: "@types/color-name" "*" -"@types/color-name@*", "@types/color-name@^1.1.1": +"@types/color-name@*": version "1.1.1" resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== @@ -5645,9 +6208,9 @@ "@types/node" "*" "@types/connect@*": - version "3.4.33" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" - integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + version "3.4.35" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" @@ -5664,9 +6227,9 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cookiejar@*": - version "2.1.1" - resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" - integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== + version "2.1.2" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" + integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== "@types/core-js@^2.5.4": version "2.5.5" @@ -5697,9 +6260,9 @@ integrity sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w== "@types/d3-force@^2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.1.tgz#a18b6f029d056eb0f8f84a09471e6228e4469b14" - integrity sha512-3r+CQv2K/uDTAVg0DGxsbBjV02vgOxb8RhPIv3gd6cp3pdPAZ7wEXpDjUZSoqycAQLSDOxG/AZ54Vx6YXZSbmQ== + version "2.1.4" + resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.4.tgz#98919b87db8a0ca5011d189c598d69251d20344d" + integrity sha512-1XVRc2QbeUSL1FRVE53Irdz7jY+drTwESHIMVirCwkAAMB/yVC8ezAfx/1Alq0t0uOnphoyhRle1ht5CuPgSJQ== "@types/d3-interpolate@*": version "3.0.1" @@ -5743,9 +6306,9 @@ integrity sha512-d29EDd0iUBrRoKhPndhDY6U/PYxOWqgIZwKTooy2UkBfU7TNZNpRho0yLWPxlatQrFWk2mnTu71IZQ4+LRgKlQ== "@types/d3-shape@^1": - version "1.3.5" - resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.5.tgz#c0164c1be1429473016f855871d487f806c4e968" - integrity sha512-aPEax03owTAKynoK8ZkmkZEDZvvT4Y5pWgii4Jp4oQt0gH45j6siDl9gNDVC5kl64XHN2goN9jbYoHK88tFAcA== + version "1.3.8" + resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz#c3c15ec7436b4ce24e38de517586850f1fea8e89" + integrity sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg== dependencies: "@types/d3-path" "^1" @@ -5824,7 +6387,15 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint@*", "@types/eslint@^7.28.2": +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint@^7.28.2": version "7.29.0" resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== @@ -5918,9 +6489,9 @@ integrity sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA== "@types/glob@*": - version "7.1.3" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -5931,9 +6502,9 @@ integrity sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw== "@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + version "4.1.5" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" @@ -5965,9 +6536,9 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@*": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" - integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== + version "4.0.1" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== "@types/http-errors@^1.6.3": version "1.8.2" @@ -6019,9 +6590,9 @@ ci-info "^3.1.0" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" @@ -6031,9 +6602,9 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" @@ -6045,16 +6616,24 @@ "@types/node" "*" "@types/jest-when@^2.7.2": - version "2.7.2" - resolved "https://registry.npmjs.org/@types/jest-when/-/jest-when-2.7.2.tgz#619fbc5f623bcd0b29efde0e4993c7f0d50d026d" - integrity sha512-vOtj0cev6vO1VX7Jbfg/qvy+sfLI64STsHbKVkggK+1kd11rcMGzFpZKBxUvQfsm4JRULCBISu+qrfs7fYZFGg== + version "2.7.4" + resolved "https://registry.npmjs.org/@types/jest-when/-/jest-when-2.7.4.tgz#1bedac232f4a54c1a1c01cc641c03ecfd0dad0ec" + integrity sha512-2OC69oyaD33tmSaOjtxvy7ZpBO85OWIw1AbpWVziL4bek5mr795H59qK5EKDpp4dLhtH1QIs54tXpoHEb2mE/A== dependencies: "@types/jest" "*" -"@types/jest@*", "@types/jest@^26.0.7": - version "26.0.22" - resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.22.tgz#8308a1debdf1b807aa47be2838acdcd91e88fbe6" - integrity sha512-eeWwWjlqxvBxc4oQdkueW5OF/gtfSceKk4OnOAGlUSwS/liBRtZppbJuz1YkgbrbfGOoeBHun9fOvXnjNwrSOw== +"@types/jest@*": + version "27.4.0" + resolved "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" + integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ== + dependencies: + jest-diff "^27.0.0" + pretty-format "^27.0.0" + +"@types/jest@^26.0.7": + version "26.0.24" + resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" + integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== dependencies: jest-diff "^26.0.0" pretty-format "^26.0.0" @@ -6067,14 +6646,14 @@ "@types/sizzle" "*" "@types/js-cookie@^2.2.6": - version "2.2.6" - resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" - integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== + version "2.2.7" + resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" + integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== "@types/js-levenshtein@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.0.tgz#9541eec4ad6e3ec5633270a3a2b55d981edc44a9" - integrity sha512-14t0v1ICYRtRVcHASzes0v/O+TIeASb8aD55cWF1PidtInhFWSXcmhzhHqGjUWf9SUq1w70cvd1cWKUULubAfQ== + version "1.1.1" + resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz#ba05426a43f9e4e30b631941e0aa17bf0c890ed5" + integrity sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g== "@types/js-yaml@^4.0.0", "@types/js-yaml@^4.0.1": version "4.0.5" @@ -6101,10 +6680,15 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23" integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== +"@types/json-schema@7.0.9": + version "7.0.9" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "@types/json-stable-stringify@^1.0.32": - version "1.0.32" - resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e" - integrity sha512-q9Q6+eUEGwQkv4Sbst3J4PNgDOvpuVuKj79Hl/qnmBMEIPzB5QoFRUtjcgcg2xNUZyYUGXBk5wYIBKHt0A+Mxw== + version "1.0.33" + resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.33.tgz#099b0712d824d15e2660c20e1c16e6a8381f308c" + integrity sha512-qEWiQff6q2tA5gcJGWwzplQcXdJtm+0oy6IHGHzlOf3eFAkGE/FIPXZK9ofWgNSHVp8AFFI33PJJshS0ei3Gvw== "@types/json5@^0.0.29": version "0.0.29" @@ -6112,9 +6696,9 @@ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/jsonwebtoken@^8.3.3", "@types/jsonwebtoken@^8.5.0": - version "8.5.0" - resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5" - integrity sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg== + version "8.5.8" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44" + integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A== dependencies: "@types/node" "*" @@ -6126,9 +6710,9 @@ jwt-decode "*" "@types/keyv@*": - version "3.1.1" - resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" - integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== + version "3.1.3" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" + integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== dependencies: "@types/node" "*" @@ -6150,24 +6734,24 @@ integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== "@types/lru-cache@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" - integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== + version "5.1.1" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== "@types/lunr@^2.3.3": - version "2.3.3" - resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.3.tgz#ec985618fd2712c010f8edab4f1ae7784ad7c583" - integrity sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw== + version "2.3.4" + resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz#728f445855818fb17776d10ef4678f278072eb03" + integrity sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g== "@types/luxon@^2.0.4", "@types/luxon@^2.0.5", "@types/luxon@^2.0.9": version "2.3.0" resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.3.0.tgz#0f4d912c385e47890374cb694da9bc93bacbe2b0" integrity sha512-mWXdRlg+5dWvxU+uaijB2RY5NrJtMEXR6j+D6W66hPuezSVXrQqQvWa/JNHntgEYgjzeoVRrQVmMWAbKjUJiFQ== -"@types/mdast@^3.0.0", "@types/mdast@^3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" - integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== +"@types/mdast@^3.0.0": + version "3.0.10" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: "@types/unist" "*" @@ -6197,9 +6781,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/minipass@*": - version "2.2.0" - resolved "https://registry.npmjs.org/@types/minipass/-/minipass-2.2.0.tgz#51ad404e8eb1fa961f75ec61205796807b6f9651" - integrity sha512-wuzZksN4w4kyfoOv/dlpov4NOunwutLA/q7uc00xU02ZyUY+aoM5PWIXEKBMnm0NHd4a+N71BMjq+x7+2Af1fg== + version "3.1.2" + resolved "https://registry.npmjs.org/@types/minipass/-/minipass-3.1.2.tgz#e2d7f9df0698aff421dcf145b4fc05b8183b9030" + integrity sha512-foLGjgrJkUjLG/o2t2ymlZGEoBNBa/TfoUZ7oCTkOjP1T43UGBJspovJou/l3ZuHvye2ewR5cZNtp2zyWgILMA== dependencies: "@types/node" "*" @@ -6223,42 +6807,52 @@ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/node-fetch@^2.5.0", "@types/node-fetch@^2.5.12", "@types/node-fetch@^2.5.7": - version "2.5.12" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== + version "2.6.1" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" + integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^16.9.2": - version "16.11.6" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" - integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== +"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "17.0.18" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074" + integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== -"@types/node@12.20.24", "@types/node@^12.7.1": +"@types/node@12.20.24": version "12.20.24" resolved "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== "@types/node@^10.1.0", "@types/node@^10.12.0": - version "10.17.13" - resolved "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c" - integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg== + version "10.17.60" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.7.1": + version "12.20.46" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.46.tgz#7e49dee4c54fd19584e6a9e0da5f3dc2e9136bc7" + integrity sha512-cPjLXj8d6anFPzFvOPxS3fvly3Shm5nTfl6g8X5smexixbuGUf7hfr21J5tX9JW+UPStp/5P5R8qrKL5IyVJ+A== "@types/node@^14.14.31", "@types/node@^14.14.32": - version "14.17.8" - resolved "https://registry.npmjs.org/@types/node/-/node-14.17.8.tgz#813b73ab7d82ac06ddfd2458b13c88459a3b319f" - integrity sha512-0CHLt50GbUmH/6MrlBIKNdWCglvlyQKkorRf08/0DIi0ryuTPP+ijWLSI19SbDTHSKaagGDELiImY4BSikt61w== + version "14.18.12" + resolved "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz#0d4557fd3b94497d793efd4e7d92df2f83b4ef24" + integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== "@types/node@^15.6.1": version "15.14.9" resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== +"@types/node@^16.9.2": + version "16.11.25" + resolved "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz#bb812b58bacbd060ce85921250d8b4ca553cd4a2" + integrity sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ== + "@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + version "2.4.1" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/npm-packlist@^3.0.0": version "3.0.0" @@ -6313,9 +6907,9 @@ "@types/passport-oauth2" "*" "@types/passport-oauth2@*": - version "1.4.9" - resolved "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.9.tgz#134007c4b505a82548c9cb19094c5baeb2205c92" - integrity sha512-QP0q+NVQOaIu2r0e10QWkiUA0Ya5mOBHRJN0UrI+LolMLOP1/VN4EVIpJ3xVwFo+xqNFRoFvFwJhBvKnk7kpUA== + version "1.4.11" + resolved "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.11.tgz#fbca527ecb44258774d17bcb251630c321515fa9" + integrity sha512-KUNwmGhe/3xPbjkzkPwwcPmyFwfyiSgtV1qOrPBLaU4i4q9GSCdAOyCbkFG0gUxAyEmYwqo9OAF/rjPjJ6ImdA== dependencies: "@types/express" "*" "@types/oauth" "*" @@ -6350,9 +6944,9 @@ integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== "@types/prettier@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" - integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== + version "2.4.4" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" + integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== "@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.4" @@ -6366,15 +6960,20 @@ dependencies: "@types/node" "*" +"@types/q@^1.5.1": + version "1.5.5" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + "@types/qs@*": - version "6.9.6" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" - integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== + version "6.9.7" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": - version "1.2.3" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + version "1.2.4" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/react-dom@*", "@types/react-dom@>=16.9.0": version "17.0.11" @@ -6390,10 +6989,10 @@ dependencies: "@types/react" "*" -"@types/react-redux@^7.1.16": - version "7.1.19" - resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.19.tgz#477bd0a9b01bae6d6bf809418cdfa7d3c16d4c62" - integrity sha512-L37dSCT0aoJnCgpR8Iuginlbxoh7qhWOXiaDqEsxVMrER1CmVhFD+63NxgJeT4pkmEM28oX0NH4S4f+sXHTZjA== +"@types/react-redux@^7.1.20": + version "7.1.22" + resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.22.tgz#0eab76a37ef477cc4b53665aeaf29cb60631b72a" + integrity sha512-GxIA1kM7ClU73I6wg9IRTVwSO9GS+SAKZKe0Enj+82HMU6aoESFU2HNAdNi3+J53IaOHPiUfT3kSG4L828joDQ== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" @@ -6415,9 +7014,9 @@ "@types/react" "*" "@types/react-test-renderer@>=16.9.0": - version "16.9.2" - resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.2.tgz#e1c408831e8183e5ad748fdece02214a7c2ab6c5" - integrity sha512-4eJr1JFLIAlWhzDkBCkhrOIWOvOxcCAfQh+jiKg7l/nNZcCIL2MHl2dZhogIFKyHzedVWHaVP1Yydq/Ruu4agw== + version "17.0.1" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b" + integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw== dependencies: "@types/react" "*" @@ -6429,9 +7028,9 @@ "@types/react" "*" "@types/react-transition-group@^4.2.0": - version "4.2.4" - resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.4.tgz#c7416225987ccdb719262766c1483da8f826838d" - integrity sha512-8DMUaDqh0S70TjkqU0DxOu80tFUiiaS9rxkWip/nb7gtvAsbqOXm02UCmR8zdcjWujgeYPiPNTVpVpKzUDotwA== + version "4.4.4" + resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" + integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== dependencies: "@types/react" "*" @@ -6479,9 +7078,9 @@ integrity sha512-i7KOGl6xdkfpq5+p2ooC+/XFIRUMkYymZ29SD8p+Ko9lesKGUsh6860ey3YM7Y+ZG7kEDGcjzyLO3sOhozqEeA== "@types/request@^2.47.1": - version "2.48.5" - resolved "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz#019b8536b402069f6d11bee1b2c03e7f232937a0" - integrity sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ== + version "2.48.8" + resolved "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c" + integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== dependencies: "@types/caseless" "*" "@types/node" "*" @@ -6508,9 +7107,9 @@ "@types/node" "*" "@types/retry@^0.12.0": - version "0.12.0" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + version "0.12.1" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== "@types/rollup-plugin-peer-deps-external@^2.2.0": version "2.2.1" @@ -6535,14 +7134,14 @@ htmlparser2 "^6.0.0" "@types/scheduler@*": - version "0.16.1" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" - integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== + version "0.16.2" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/semver@^6.0.0": - version "6.2.1" - resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba" - integrity sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== + version "6.2.3" + resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" + integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== "@types/semver@^7.3.8": version "7.3.9" @@ -6564,17 +7163,17 @@ "@types/express" "*" "@types/serve-static@*": - version "1.13.9" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" - integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== + version "1.13.10" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/set-cookie-parser@^2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.0.tgz#10cc0446bad372827671a5195fbd14ebce4a9baf" - integrity sha512-w7BFUq81sy7H/0jN0K5cax8MwRN6NOSURpY4YuO4+mOgoicxCZ33BUYz+gyF/sUf7uDl2We2yGJfppxzEXoAXQ== + version "2.4.2" + resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz#b6a955219b54151bfebd4521170723df5e13caad" + integrity sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w== dependencies: "@types/node" "*" @@ -6584,9 +7183,9 @@ integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@*", "@types/sizzle@^2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" - integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== + version "2.3.3" + resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" + integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== "@types/sockjs@^0.3.33": version "0.3.33" @@ -6596,32 +7195,24 @@ "@types/node" "*" "@types/ssh2-streams@*": - version "0.1.8" - resolved "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz#142af404dae059931aea7fcd1511b5478964feb6" - integrity sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA== + version "0.1.9" + resolved "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.9.tgz#8ca51b26f08750a780f82ee75ff18d7160c07a87" + integrity sha512-I2J9jKqfmvXLR5GomDiCoHrEJ58hAOmFrekfFqmCFd+A6gaEStvWnPykoWUwld1PNg4G5ag1LwdA+Lz1doRJqg== dependencies: "@types/node" "*" -"@types/ssh2@*": - version "0.5.47" - resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.47.tgz#67a8b35a0527b2bb668f6dea4c84be6ff1abdc19" - integrity sha512-ZhqJg8BRV7OsCi0KVqPr27lUMMmLEeHYw1VXUNGGDlQEDq9HTsKx+wYvi8E6oNC6gRZ7PV99ZMZmMr5vztcYYA== - dependencies: - "@types/node" "*" - "@types/ssh2-streams" "*" - -"@types/ssh2@^0.5.48": - version "0.5.48" - resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.48.tgz#0d9e8654a76eaaf4cfeaeb88d74c4489cfcf7aea" - integrity sha512-cmQu0gp/6RtDXe1r2xXGgi0V0TeCdueDSRMEvBX8cTRT/sSREkUpgCYZLyh+iI8Ql+VNV8Az9toQoYa/IdgHbQ== +"@types/ssh2@*", "@types/ssh2@^0.5.48": + version "0.5.51" + resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.51.tgz#8fd9f9d7d3e8973b5227878f8f1e2b4eda1716b3" + integrity sha512-aIq7ownezauW/+VWYaeXwd5J1Evnn4EXyeKi7bT3H6ZLBLoqsmhdvkHYPLpnZPM6unKKKsxTHIyQAVOZnPiJBw== dependencies: "@types/node" "*" "@types/ssh2-streams" "*" "@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + version "2.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/stoppable@^1.1.0": version "1.1.1" @@ -6631,23 +7222,23 @@ "@types/node" "*" "@types/stream-buffers@^3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.3.tgz#34e565bf64e3e4bdeee23fd4aa58d4636014a02b" - integrity sha512-NeFeX7YfFZDYsCfbuaOmFQ0OjSmHreKBpp7MQ4alWQBHeh2USLsj7qyMyn9t82kjqIX516CR/5SRHnARduRtbQ== + version "3.0.4" + resolved "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz#bf128182da7bc62722ca0ddf5458a9c65f76e648" + integrity sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w== dependencies: "@types/node" "*" "@types/styled-jsx@^2.2.8": - version "2.2.8" - resolved "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.8.tgz#b50d13d8a3c34036282d65194554cf186bab7234" - integrity sha512-Yjye9VwMdYeXfS71ihueWRSxrruuXTwKCbzue4+5b2rjnQ//AtyM7myZ1BEhNhBQ/nL/RE7bdToUoLln2miKvg== + version "2.2.9" + resolved "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.9.tgz#e50b3f868c055bcbf9bc353eca6c10fdad32a53f" + integrity sha512-W/iTlIkGEyTBGTEvZCey8EgQlQ5l0DwMqi3iOXlLs2kyBwYTXHKEiU6IZ5EwoRwngL8/dGYuzezSup89ttVHLw== dependencies: "@types/react" "*" "@types/superagent@*": - version "4.1.7" - resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.7.tgz#a7d92d98c490ee0f802a127fdf149b9a114f77a5" - integrity sha512-JSwNPgRYjIC4pIeOqLwWwfGj6iP1n5NE6kNBEbGx2V8H78xCPwx7QpNp9plaI30+W3cFEzJO7BIIsXE+dbtaGg== + version "4.1.15" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz#63297de457eba5e2bc502a7609426c4cceab434a" + integrity sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ== dependencies: "@types/cookiejar" "*" "@types/node" "*" @@ -6690,9 +7281,9 @@ "@types/node" "*" "@types/tern@*": - version "0.23.3" - resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" - integrity sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w== + version "0.23.4" + resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" + integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== dependencies: "@types/estree" "*" @@ -6718,9 +7309,9 @@ "@types/node" "*" "@types/tough-cookie@*": - version "4.0.0" - resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d" - integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A== + version "4.0.1" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" + integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== "@types/trusted-types@*": version "2.0.2" @@ -6735,9 +7326,9 @@ "@types/node" "*" "@types/underscore@^1.8.9": - version "1.10.23" - resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.10.23.tgz#cc672e8864000d288e1e39c609fd9cab84391ff3" - integrity sha512-vX1NPekXhrLquFWskH2thcvFAha187F/lM6xYOoEMZWwJ/6alSk0/ttmGP/YRqcqtCv0TMbZjYAdZyHAEcuU4g== + version "1.11.4" + resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" + integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== "@types/unist@*", "@types/unist@^2.0.0": version "2.0.6" @@ -6786,9 +7377,9 @@ "@types/node" "*" "@types/websocket@^1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" - integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== + version "1.0.5" + resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" + integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== dependencies: "@types/node" "*" @@ -6800,9 +7391,9 @@ "@types/node" "*" "@types/ws@^8.0.0", "@types/ws@^8.2.2": - version "8.2.2" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz#7c5be4decb19500ae6b3d563043cd407bf366c21" - integrity sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg== + version "8.2.3" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.2.3.tgz#0bca6b03ba2f41e0fab782d4a573fe284aa907ae" + integrity sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ== dependencies: "@types/node" "*" @@ -6814,21 +7405,14 @@ "@types/node" "*" "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "20.2.1" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== "@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + version "15.0.14" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== dependencies: "@types/yargs-parser" "*" @@ -6855,13 +7439,13 @@ integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== "@typescript-eslint/eslint-plugin@^5.9.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.14.0.tgz#5119b67152356231a0e24b998035288a9cd21335" - integrity sha512-ir0wYI4FfFUDfLcuwKzIH7sMVA+db7WYen47iRSaCGl+HMAZI9fpBwfDo45ZALD3A45ZGyHWDNLhbg8tZrMX4w== + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz#bb46dd7ce7015c0928b98af1e602118e97df6c70" + integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== dependencies: - "@typescript-eslint/scope-manager" "5.14.0" - "@typescript-eslint/type-utils" "5.14.0" - "@typescript-eslint/utils" "5.14.0" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/type-utils" "5.12.0" + "@typescript-eslint/utils" "5.12.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -6870,34 +7454,29 @@ tsutils "^3.21.0" "@typescript-eslint/experimental-utils@^5.0.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz#652762d37d6565ef07af285021b8347b6c79a827" - integrity sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g== + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.12.0.tgz#b97c599a281f14a68015c25ee24966cb54ba9fc5" + integrity sha512-iFVADWH2CmiDF+E9kFK2r474BO2JILDKw1NVD5ytqHrM3ezsfdu5uo6B+77DH0suM7iUC/yOayHNziuiI9BPbQ== dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.9.0" - "@typescript-eslint/types" "5.9.0" - "@typescript-eslint/typescript-estree" "5.9.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "@typescript-eslint/utils" "5.12.0" "@typescript-eslint/parser@^5.9.0": - version "5.16.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.16.0.tgz#e4de1bde4b4dad5b6124d3da227347616ed55508" - integrity sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA== + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" + integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== dependencies: - "@typescript-eslint/scope-manager" "5.16.0" - "@typescript-eslint/types" "5.16.0" - "@typescript-eslint/typescript-estree" "5.16.0" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/typescript-estree" "5.12.0" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.14.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz#ea518962b42db8ed0a55152ea959c218cb53ca7b" - integrity sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw== +"@typescript-eslint/scope-manager@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" + integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== dependencies: - "@typescript-eslint/types" "5.14.0" - "@typescript-eslint/visitor-keys" "5.14.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/visitor-keys" "5.12.0" "@typescript-eslint/scope-manager@5.16.0": version "5.16.0" @@ -6907,45 +7486,32 @@ "@typescript-eslint/types" "5.16.0" "@typescript-eslint/visitor-keys" "5.16.0" -"@typescript-eslint/scope-manager@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117" - integrity sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg== +"@typescript-eslint/type-utils@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" + integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== dependencies: - "@typescript-eslint/types" "5.9.0" - "@typescript-eslint/visitor-keys" "5.9.0" - -"@typescript-eslint/type-utils@5.14.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.14.0.tgz#711f08105860b12988454e91df433567205a8f0b" - integrity sha512-d4PTJxsqaUpv8iERTDSQBKUCV7Q5yyXjqXUl3XF7Sd9ogNLuKLkxz82qxokqQ4jXdTPZudWpmNtr/JjbbvUixw== - dependencies: - "@typescript-eslint/utils" "5.14.0" + "@typescript-eslint/utils" "5.12.0" debug "^4.3.2" tsutils "^3.21.0" -"@typescript-eslint/types@5.14.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11" - integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw== +"@typescript-eslint/types@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" + integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== "@typescript-eslint/types@5.16.0": version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz#5827b011982950ed350f075eaecb7f47d3c643ee" integrity sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g== -"@typescript-eslint/types@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3" - integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg== - -"@typescript-eslint/typescript-estree@5.14.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz#78b7f7385d5b6f2748aacea5c9b7f6ae62058314" - integrity sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA== +"@typescript-eslint/typescript-estree@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" + integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== dependencies: - "@typescript-eslint/types" "5.14.0" - "@typescript-eslint/visitor-keys" "5.14.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/visitor-keys" "5.12.0" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" @@ -6965,28 +7531,15 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f" - integrity sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw== - dependencies: - "@typescript-eslint/types" "5.9.0" - "@typescript-eslint/visitor-keys" "5.9.0" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.14.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.14.0.tgz#6c8bc4f384298cbbb32b3629ba7415f9f80dc8c4" - integrity sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w== +"@typescript-eslint/utils@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" + integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.14.0" - "@typescript-eslint/types" "5.14.0" - "@typescript-eslint/typescript-estree" "5.14.0" + "@typescript-eslint/scope-manager" "5.12.0" + "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/typescript-estree" "5.12.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -7002,12 +7555,12 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.14.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986" - integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw== +"@typescript-eslint/visitor-keys@5.12.0": + version "5.12.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" + integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== dependencies: - "@typescript-eslint/types" "5.14.0" + "@typescript-eslint/types" "5.12.0" eslint-visitor-keys "^3.0.0" "@typescript-eslint/visitor-keys@5.16.0": @@ -7018,14 +7571,6 @@ "@typescript-eslint/types" "5.16.0" eslint-visitor-keys "^3.0.0" -"@typescript-eslint/visitor-keys@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6" - integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw== - dependencies: - "@typescript-eslint/types" "5.9.0" - eslint-visitor-keys "^3.0.0" - "@uiw/react-codemirror@^4.5.1": version "4.5.1" resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.5.1.tgz#f2af4e761f13b729a3ec7c7c858b34432cdf46a7" @@ -7214,9 +7759,9 @@ abort-controller@3.0.0, abort-controller@^3.0.0: event-target-shim "^5.0.0" abstract-logging@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.0.tgz#08a85814946c98ef06f4256ad470aba1886d4490" - integrity sha512-/oA9z7JszpIioo6J6dB79LVUgJ3eD3cxkAmdCkvWWS+Y9tPtALs1rLqOekLUXUbYqM2fB9TTK0ibAyZJJOP/CA== + version "2.0.1" + resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" + integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" @@ -7235,19 +7780,19 @@ acorn-globals@^6.0.0: acorn-walk "^7.1.1" acorn-import-assertions@^1.7.6: - version "1.7.6" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" - integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA== + version "1.8.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== + version "7.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" @@ -7259,7 +7804,7 @@ acorn@^7.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.0: version "8.7.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== @@ -7322,7 +7867,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5, ajv@^6.7.0, ajv@~6.12.6: +ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0, ajv@~6.12.6: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -7352,11 +7897,6 @@ ajv@^8.0.0, ajv@^8.10.0, ajv@^8.8.0: require-from-string "^2.0.2" uri-js "^4.2.2" -alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - already@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/already/-/already-3.3.0.tgz#a5e5becd167cf537b45f8f1c23d331488ed77003" @@ -7370,11 +7910,11 @@ anafanafo@2.0.0: char-width-table-consumer "^1.0.0" ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - string-width "^3.0.0" + string-width "^4.1.0" ansi-colors@^4.1.1: version "4.1.1" @@ -7387,11 +7927,11 @@ ansi-escapes@^3.0.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-html-community@^0.0.8: version "0.0.8" @@ -7436,11 +7976,10 @@ ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" ansi-styles@^5.0.0: @@ -7647,9 +8186,9 @@ are-we-there-yet@^3.0.0: readable-stream "^3.6.0" are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + version "1.1.7" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -7714,11 +8253,6 @@ array-differ@^3.0.0: resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -7734,7 +8268,7 @@ array-ify@^1.0.0: resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.1.2, array-includes@^3.1.3, array-includes@^3.1.4: +array-includes@^3.1.3, array-includes@^3.1.4: version "3.1.4" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== @@ -7805,19 +8339,20 @@ asap@^2.0.0, asap@^2.0.3, asap@~2.0.3: resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" asn1@^0.2.4, asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" @@ -7857,16 +8392,16 @@ astral-regex@^2.0.0: integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-lock@^1.1.0: - version "1.2.4" - resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.2.4.tgz#80d0d612383045dd0c30eb5aad08510c1397cb91" - integrity sha512-UBQJC2pbeyGutIfYmErGc9RaJYnpZ1FHaxuKwb0ahvGiiCkPUf3p67Io+YLPmmv3RHY+mF6JEtNW8FlHsraAaA== - -async-retry@^1.2.1, async-retry@^1.3.1: version "1.3.1" - resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" - integrity sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA== + resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.3.1.tgz#f2301c200600cde97acc386453b7126fa8aced3c" + integrity sha512-zK7xap9UnttfbE23JmcrNIyueAn6jWshihJqA33U/hEnKprF/lVGBDsBv/bqLm2YMMl1DnpHhUY044eA0t1TUw== + +async-retry@^1.2.1, async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== dependencies: - retry "0.12.0" + retry "0.13.1" async@0.9.x: version "0.9.2" @@ -7911,18 +8446,16 @@ auto-bind@~4.0.0: integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== autolinker@^3.11.0: - version "3.14.1" - resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.14.1.tgz#6ae4b812b6eaf42d4d68138b9e67757cbf2bc1e4" - integrity sha512-yvsRHIaY51EYDml6MGlbqyJGfl4n7zezGYf+R7gvM8c5LNpRGc4SISkvgAswSS8SWxk/OrGCylKV9mJyVstz7w== + version "3.14.3" + resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.14.3.tgz#c61c424bc6077bcf2fc62803803ec2f58e15a7ec" + integrity sha512-t81i2bCpS+s+5FIhatoww9DmpjhbdiimuU9ATEuLxtZMQ7jLv9fyFn7SWNG8IkEfD4AmYyirL1ss9k1aqVWRvg== dependencies: tslib "^1.9.3" -available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sdk-mock@^5.2.1: version "5.6.2" @@ -7934,9 +8467,9 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.840.0, aws-sdk@^2.928.0, aws-sdk@^2.948.0: - version "2.1095.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1095.0.tgz#7847493b09a326a0613010ed9db53302f760edf6" - integrity sha512-OrZq2pTDsnfOJYsAdRlw+NXTGLQYqWldSZR3HugW8JT4JPWyFZrgB2yPP2ElFHX+4J4SZg5QvkAXl/7s9gLTgA== + version "2.1077.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1077.0.tgz#d4a391d38ede867fe9a88f31555f09a338dfdf4e" + integrity sha512-orJvJROs8hJaQRfHsX7Zl5PxEgrD/uTXyqXz9Yu9Io5VVxzvnOty9oHmvEMSlgTIf1qd01gnev/vpvP1HgzKtw== dependencies: buffer "4.9.2" events "1.1.1" @@ -7959,9 +8492,9 @@ aws4@^1.11.0, aws4@^1.8.0: integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axe-core@^4.3.5: - version "4.3.5" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" - integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== + version "4.4.1" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" + integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== axios-cached-dns-resolve@0.5.2: version "0.5.2" @@ -8022,14 +8555,14 @@ babel-plugin-dynamic-import-node@^2.3.3: object.assign "^4.1.0" babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" babel-plugin-jest-hoist@^26.6.2: @@ -8052,12 +8585,12 @@ babel-plugin-polyfill-corejs2@^0.3.0: semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.1" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060" - integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A== + version "0.5.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.20.0" + core-js-compat "^3.21.0" babel-plugin-polyfill-regenerator@^0.3.0: version "0.3.1" @@ -8081,9 +8614,9 @@ babel-polyfill@^6.26.0: regenerator-runtime "^0.10.5" babel-preset-current-node-syntax@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" - integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -8168,9 +8701,9 @@ badge-maker@^3.3.0: css-color-converter "^2.0.0" bail@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz#d676736373a374058a935aec81b94c12ba815771" - integrity sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA== + version "2.0.2" + resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== balanced-match@^0.4.2: version "0.4.2" @@ -8239,7 +8772,7 @@ bdd-lazy-var@^2.6.0: resolved "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz#ca03fb36d68c5a507c0ba9a4d53160b899e6b7cb" integrity sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A== -before-after-hook@^2.1.0, before-after-hook@^2.2.0: +before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== @@ -8280,9 +8813,9 @@ big.js@^5.2.2: integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== bignumber.js@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" - integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== + version "9.0.2" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== bin-links@^3.0.0: version "3.0.0" @@ -8297,9 +8830,9 @@ bin-links@^3.0.0: write-file-atomic "^4.0.0" binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== binary-search@^1.3.5: version "1.3.6" @@ -8365,11 +8898,16 @@ bmp-js@^0.1.0: resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM= -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + body-parser@1.19.2, body-parser@^1.19.0: version "1.19.2" resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" @@ -8398,7 +8936,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@^1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -8522,26 +9060,28 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -8550,15 +9090,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: - version "4.19.1" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" - integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: + version "4.19.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" + integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== dependencies: - caniuse-lite "^1.0.30001286" - electron-to-chromium "^1.4.17" + caniuse-lite "^1.0.30001312" + electron-to-chromium "^1.4.71" escalade "^3.1.1" - node-releases "^2.0.1" + node-releases "^2.0.2" picocolors "^1.0.0" bser@2.1.1: @@ -8594,9 +9134,9 @@ buffer-equal@0.0.1: integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof-polyfill@~1.0.0: version "1.0.2" @@ -8649,9 +9189,9 @@ buffers@~0.1.1: integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + version "3.2.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== builtin-status-codes@^3.0.0: version "3.0.0" @@ -8669,9 +9209,9 @@ byline@^5.0.0: integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= byte-size@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" - integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== + version "7.0.1" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" + integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== bytes@3.0.0: version "3.0.0" @@ -8723,9 +9263,9 @@ cache-base@^1.0.1: unset-value "^1.0.0" cacheable-lookup@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" - integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== + version "5.0.4" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-request@^6.0.0: version "6.1.0" @@ -8833,10 +9373,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: - version "1.0.30001315" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001315.tgz#f1b1efd1171ee1170d52709a7252632dacbd7c77" - integrity sha512-5v7LFQU4Sb/qvkz7JcZkvtSH1Ko+1x2kgo3ocdBeMGZSOFpuE1kkm0kpTwLtWeFrw5qw08ulLxJjVIXIS8MkiQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001312: + version "1.0.30001312" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" + integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== canvas@^2.6.1: version "2.9.0" @@ -8869,9 +9409,9 @@ caseless@~0.12.0: integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= ccount@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz#3d6fb55803832766a24c6f339abc507297eb5d25" - integrity sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA== + version "2.0.1" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== chainsaw@~0.1.0: version "0.1.0" @@ -8975,31 +9515,21 @@ character-entities-legacy@^1.0.0: resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== -character-entities-legacy@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz#57f4d00974c696e8f74e9f493e7fcb75b44d7ee7" - integrity sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA== - character-entities@^1.0.0: version "1.2.4" resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== character-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz#508355fcc8c73893e0909efc1a44d28da2b6fdf3" - integrity sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA== + version "2.0.1" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7" + integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ== character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -character-reference-invalid@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz#a0bdeb89c051fe7ed5d3158b2f06af06984f2813" - integrity sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g== - chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -9041,11 +9571,9 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" + version "1.0.3" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^2.0.0: version "2.0.0" @@ -9093,9 +9621,9 @@ classnames@*, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== clean-css@^5.2.2: - version "5.2.2" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" - integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== + version "5.2.4" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" + integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== dependencies: source-map "~0.6.0" @@ -9129,9 +9657,9 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" - integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== + version "2.6.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-table3@~0.6.1: version "0.6.1" @@ -9143,9 +9671,9 @@ cli-table3@~0.6.1: colors "1.4.0" cli-table@^0.3.1: - version "0.3.6" - resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" - integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== + version "0.3.11" + resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" + integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== dependencies: colors "1.0.3" @@ -9272,6 +9800,15 @@ co@^4.6.0: resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + code-error-fragment@0.0.230: version "0.0.230" resolved "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7" @@ -9282,18 +9819,18 @@ code-point-at@^1.0.0: resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -codemirror-graphql@^1.2.13: - version "1.2.13" - resolved "https://registry.npmjs.org/codemirror-graphql/-/codemirror-graphql-1.2.13.tgz#2525141b2ea8e54b78aea91cc8b85693bbcb17d9" - integrity sha512-7I2qPHxoTndvDNBkaoYYbL2S6A6JAMXBA17ZFcIWAj7A0V/NEg0aPSxhwNRK1yLmC+3XI9OR4BjZTiPxrA2gBA== +codemirror-graphql@^1.2.12: + version "1.2.12" + resolved "https://registry.npmjs.org/codemirror-graphql/-/codemirror-graphql-1.2.12.tgz#59cf88ae254d5dabd4e596028977a7ec305cddb7" + integrity sha512-irP+E8HOWtgIdU3PNTU77bNmpEXQYADRRDmKqkjh3w1m0welbxl6HtZgp+c+Mkkz+FXY1+3+gF6nEEj+eJ1xdg== dependencies: "@codemirror/stream-parser" "^0.19.2" - graphql-language-service "^5.0.0" + graphql-language-service "^4.1.5" codemirror@^5.58.2: - version "5.63.3" - resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.63.3.tgz#97042a242027fe0c87c09b36bc01931d37b76527" - integrity sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw== + version "5.65.1" + resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.65.1.tgz#5988a812c974c467f964bcc1a00c944e373de502" + integrity sha512-s6aac+DD+4O2u1aBmdxhB7yz2XU7tG3snOyQ05Kxifahz7hoxnfxIRHxiCSEv3TUC38dIVH8G+lZH9UWSfGQxA== codeowners-utils@^1.0.2: version "1.0.2" @@ -9306,9 +9843,9 @@ codeowners-utils@^1.0.2: locate-path "^5.0.0" collect-v8-coverage@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" - integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== + version "1.0.1" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== collection-visit@^1.0.0: version "1.0.0" @@ -9323,7 +9860,7 @@ color-convert@^0.5.2: resolved "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -9347,7 +9884,7 @@ color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.2, color-string@^1.9.0: +color-string@^1.6.0, color-string@^1.9.0: version "1.9.0" resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== @@ -9360,13 +9897,13 @@ color-support@^1.1.2: resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color@3.0.x: - version "3.0.0" - resolved "https://registry.npmjs.org/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" - integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== +color@^3.1.3: + version "3.2.1" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" + color-convert "^1.9.3" + color-string "^1.6.0" color@^4.0.1: version "4.2.1" @@ -9377,9 +9914,9 @@ color@^4.0.1: color-string "^1.9.0" colord@^2.9.1: - version "2.9.1" - resolved "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" - integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== + version "2.9.2" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== colorette@2.0.16, colorette@^2.0.10, colorette@^2.0.16: version "2.0.16" @@ -9402,19 +9939,19 @@ colors@~1.2.1: integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== colorspace@1.1.x: - version "1.1.2" - resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" - integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ== + version "1.1.4" + resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== dependencies: - color "3.0.x" + color "^3.1.3" text-hex "1.0.x" columnify@^1.5.4: - version "1.5.4" - resolved "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + version "1.6.0" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: - strip-ansi "^3.0.0" + strip-ansi "^6.0.1" wcwidth "^1.0.0" combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: @@ -9439,10 +9976,10 @@ command-exists@^1.2.9: resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@*, commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@*: + version "9.0.0" + resolved "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40" + integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw== commander@7.1.0: version "7.1.0" @@ -9474,6 +10011,11 @@ commander@^7.2.0: resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -9518,12 +10060,12 @@ component-inherit@0.0.3: integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= compress-commons@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz#25ec7a4528852ccd1d441a7d4353cd0ece11371b" - integrity sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA== + version "4.1.1" + resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== dependencies: buffer-crc32 "^0.2.13" - crc32-stream "^4.0.1" + crc32-stream "^4.0.2" normalize-path "^3.0.0" readable-stream "^3.6.0" @@ -9603,9 +10145,9 @@ concurrently@^7.0.0: yargs "^16.2.0" config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + version "1.1.13" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -9669,9 +10211,9 @@ content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== conventional-changelog-angular@^5.0.12: - version "5.0.12" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" - integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== + version "5.0.13" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" + integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== dependencies: compare-func "^2.0.0" q "^1.5.1" @@ -9725,9 +10267,9 @@ conventional-commits-filter@^2.0.7: modify-values "^1.0.0" conventional-commits-parser@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" - integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== + version "3.2.4" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" @@ -9735,7 +10277,6 @@ conventional-commits-parser@^3.2.0: meow "^8.0.0" split2 "^3.0.0" through2 "^4.0.0" - trim-off-newlines "^1.0.0" conventional-recommended-bump@^6.1.0: version "6.1.0" @@ -9752,18 +10293,18 @@ conventional-recommended-bump@^6.1.0: q "^1.5.1" convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + version "1.8.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" cookie-parser@^1.4.5: - version "1.4.5" - resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" - integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== + version "1.4.6" + resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594" + integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== dependencies: - cookie "0.4.0" + cookie "0.4.1" cookie-signature "1.0.6" cookie-signature@1.0.6: @@ -9771,11 +10312,6 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - cookie@0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" @@ -9803,10 +10339,10 @@ copy-to-clipboard@^3, copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.20.0, core-js-compat@^3.20.2: - version "3.20.3" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" - integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.21.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" + integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== dependencies: browserslist "^4.19.1" semver "7.0.0" @@ -9826,11 +10362,16 @@ core-js@^3.4.1, core-js@^3.6.5: resolved "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cors@^2.8.5: version "2.8.5" resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -9887,30 +10428,30 @@ cpu-features@0.0.2: nan "^2.14.1" crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" - integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== + version "1.2.1" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz#436d2bcaad27bcb6bd073a2587139d3024a16460" + integrity sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w== dependencies: exit-on-epipe "~1.0.1" - printj "~1.1.0" + printj "~1.3.1" -crc32-stream@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.1.tgz#0f047d74041737f8a55e86837a1b826bd8ab0067" - integrity sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw== +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== dependencies: crc-32 "^1.2.0" readable-stream "^3.4.0" create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -9921,7 +10462,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -9969,7 +10510,7 @@ cross-fetch@3.1.4: dependencies: node-fetch "2.6.1" -cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.5: +cross-fetch@3.1.5, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -10005,20 +10546,10 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cross-undici-fetch@^0.0.20: - version "0.0.20" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.20.tgz#6b7c5ac82a3601edd439f37275ac0319d77a120a" - integrity sha512-5d3WBC4VRHpFndECK9bx4TngXrw0OUXdhX561Ty1ZoqMASz9uf55BblhTC1CO6GhMWnvk9SOqYEXQliq6D2P4A== - dependencies: - abort-controller "^3.0.0" - form-data "^4.0.0" - node-fetch "^2.6.5" - undici "^4.9.3" - -cross-undici-fetch@^0.1.4: - version "0.1.25" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.25.tgz#8c6826dd0ffbb45fcb1a554be5984e0eaef7f3ba" - integrity sha512-KS6hm/VuRO+3jIrg4uidz3mQ8NWvCbiTTOg3yoH30zuGVUvjqZlnXw66h0kuzyfP21hDkrdIbufXCW6BAQdSNw== +cross-undici-fetch@^0.1.19: + version "0.1.24" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.24.tgz#2ad23d096ba07cfa1260b1aeb9a78d2132ea3385" + integrity sha512-83KDV6+8pYCn51zSM2cFAwqQ5UQtDaPm89RkUwHxEMDq/cdqYgqo1q+2eM/Xhmd8HeAsGTtecsC4crrQkCn0zg== dependencies: abort-controller "^3.0.0" form-data-encoder "^1.7.1" @@ -10066,9 +10597,9 @@ css-color-converter@^2.0.0: css-unit-converter "^1.1.2" css-declaration-sorter@^6.0.3: - version "6.1.3" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" - integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA== + version "6.1.4" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" + integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== dependencies: timsort "^0.3.0" @@ -10094,16 +10625,39 @@ css-loader@^6.5.1: postcss-value-parser "^4.2.0" semver "^7.3.5" -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== dependencies: boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.2.1" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" @@ -10126,7 +10680,12 @@ css-vendor@^2.0.8: "@babel/runtime" "^7.8.3" is-in-browser "^1.0.2" -css-what@^5.0.0: +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== @@ -10155,57 +10714,56 @@ cssfilter@0.0.10: resolved "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= -cssnano-preset-default@^5.1.7: - version "5.1.7" - resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.7.tgz#68c3ad1ec6a810482ec7d06b2d70fc34b6b0d70c" - integrity sha512-bWDjtTY+BOqrqBtsSQIbN0RLGD2Yr2CnecpP0ydHNafh9ZUEre8c8VYTaH9FEbyOt0eIfEUAYYk5zj92ioO8LA== +cssnano-preset-default@^5.1.12: + version "5.1.12" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.12.tgz#64e2ad8e27a279e1413d2d2383ef89a41c909be9" + integrity sha512-rO/JZYyjW1QNkWBxMGV28DW7d98UDLaF759frhli58QFehZ+D/LSmwQ2z/ylBAe2hUlsIWTq6NYGfQPq65EF9w== dependencies: css-declaration-sorter "^6.0.3" - cssnano-utils "^2.0.1" - postcss-calc "^8.0.0" - postcss-colormin "^5.2.1" - postcss-convert-values "^5.0.2" - postcss-discard-comments "^5.0.1" - postcss-discard-duplicates "^5.0.1" - postcss-discard-empty "^5.0.1" - postcss-discard-overridden "^5.0.1" - postcss-merge-longhand "^5.0.4" - postcss-merge-rules "^5.0.3" - postcss-minify-font-values "^5.0.1" - postcss-minify-gradients "^5.0.3" - postcss-minify-params "^5.0.2" - postcss-minify-selectors "^5.1.0" - postcss-normalize-charset "^5.0.1" - postcss-normalize-display-values "^5.0.1" - postcss-normalize-positions "^5.0.1" - postcss-normalize-repeat-style "^5.0.1" - postcss-normalize-string "^5.0.1" - postcss-normalize-timing-functions "^5.0.1" - postcss-normalize-unicode "^5.0.1" - postcss-normalize-url "^5.0.3" - postcss-normalize-whitespace "^5.0.1" - postcss-ordered-values "^5.0.2" - postcss-reduce-initial "^5.0.1" - postcss-reduce-transforms "^5.0.1" - postcss-svgo "^5.0.3" - postcss-unique-selectors "^5.0.2" + cssnano-utils "^3.0.2" + postcss-calc "^8.2.0" + postcss-colormin "^5.2.5" + postcss-convert-values "^5.0.4" + postcss-discard-comments "^5.0.3" + postcss-discard-duplicates "^5.0.3" + postcss-discard-empty "^5.0.3" + postcss-discard-overridden "^5.0.4" + postcss-merge-longhand "^5.0.6" + postcss-merge-rules "^5.0.6" + postcss-minify-font-values "^5.0.4" + postcss-minify-gradients "^5.0.6" + postcss-minify-params "^5.0.5" + postcss-minify-selectors "^5.1.3" + postcss-normalize-charset "^5.0.3" + postcss-normalize-display-values "^5.0.3" + postcss-normalize-positions "^5.0.4" + postcss-normalize-repeat-style "^5.0.4" + postcss-normalize-string "^5.0.4" + postcss-normalize-timing-functions "^5.0.3" + postcss-normalize-unicode "^5.0.4" + postcss-normalize-url "^5.0.5" + postcss-normalize-whitespace "^5.0.4" + postcss-ordered-values "^5.0.5" + postcss-reduce-initial "^5.0.3" + postcss-reduce-transforms "^5.0.4" + postcss-svgo "^5.0.4" + postcss-unique-selectors "^5.0.4" -cssnano-utils@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" - integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== +cssnano-utils@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.0.2.tgz#d82b4991a27ba6fec644b39bab35fe027137f516" + integrity sha512-KhprijuQv2sP4kT92sSQwhlK3SJTbDIsxcfIEySB0O+3m9esFOai7dP9bMx5enHAh2MwarVIcnwiWoOm01RIbQ== cssnano@^5.0.1: - version "5.0.11" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.11.tgz#743397a05e04cb87e9df44b7659850adfafc3646" - integrity sha512-5SHM31NAAe29jvy0MJqK40zZ/8dGlnlzcfHKw00bWMVFp8LWqtuyPSFwbaoIoxvt71KWJOfg8HMRGrBR3PExCg== + version "5.0.17" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.17.tgz#ff45713c05cfc780a1aeb3e663b6f224d091cabf" + integrity sha512-fmjLP7k8kL18xSspeXTzRhaFtRI7DL9b8IcXR80JgtnWBpvAzHT7sCR/6qdn0tnxIaINUN6OEQu83wF57Gs3Xw== dependencies: - cssnano-preset-default "^5.1.7" - is-resolvable "^1.1.0" + cssnano-preset-default "^5.1.12" lilconfig "^2.0.3" yaml "^1.10.2" -csso@^4.2.0: +csso@^4.0.2, csso@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== @@ -10229,40 +10787,40 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^2.5.2, csstype@^2.6.7: - version "2.6.17" - resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e" - integrity sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A== +csstype@^2.5.2: + version "2.6.19" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa" + integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ== csstype@^3.0.2, csstype@^3.0.6: - version "3.0.7" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" - integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== + version "3.0.10" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" + integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== -csv-generate@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.2.4.tgz#440dab9177339ee0676c9e5c16f50e2b3463c019" - integrity sha512-qNM9eqlxd53TWJeGtY1IQPj90b563Zx49eZs8e0uMyEvPgvNVmX1uZDtdzAcflB3PniuH9creAzcFOdyJ9YGvA== +csv-generate@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" + integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== -csv-parse@^4.8.8: - version "4.12.0" - resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.12.0.tgz#fd42d6291bbaadd51d3009f6cadbb3e53b4ce026" - integrity sha512-wPQl3H79vWLPI8cgKFcQXl0NBgYYEqVnT1i6/So7OjMpsI540oD7p93r3w6fDSyPvwkTepG05F69/7AViX2lXg== +csv-parse@^4.16.3: + version "4.16.3" + resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" + integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== -csv-stringify@^5.3.6: - version "5.5.1" - resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.5.1.tgz#f42cdd379b0f7f142933a11f674b1a91ebd0fcd0" - integrity sha512-HM0/86Ks8OwFbaYLd495tqTs1NhscZL52dC4ieKYumy8+nawQYC0xZ63w1NqLf0M148T2YLYqowoImc1giPn0g== +csv-stringify@^5.6.5: + version "5.6.5" + resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" + integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== csv@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/csv/-/csv-5.3.2.tgz#50b344e25dfbb8c62684a1bcec18c22468b2161e" - integrity sha512-odDyucr9OgJTdGM2wrMbJXbOkJx3nnUX3Pt8SFOwlAMOpsUQlz1dywvLMXJWX/4Ib0rjfOsaawuuwfI5ucqBGQ== + version "5.5.3" + resolved "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" + integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== dependencies: - csv-generate "^3.2.4" - csv-parse "^4.8.8" - csv-stringify "^5.3.6" - stream-transform "^2.0.1" + csv-generate "^3.4.3" + csv-parse "^4.16.3" + csv-stringify "^5.6.5" + stream-transform "^2.1.3" cypress-plugin-snapshots@^1.4.4: version "1.4.4" @@ -10564,9 +11122,9 @@ dagre@^0.8.5: lodash "^4.17.15" damerau-levenshtein@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== + version "1.0.8" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== dargs@^7.0.0: version "7.0.0" @@ -10594,10 +11152,10 @@ dataloader@2.0.0, dataloader@^2.0.0: resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== -date-and-time@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-1.0.0.tgz#0062394bdf6f44e961f0db00511cb19cdf3cc0a5" - integrity sha512-477D7ypIiqlXBkxhU7YtG9wWZJEQ+RUpujt2quTfgf4+E8g5fNUkB0QIL0bVyP5/TKBg8y55Hfa1R/c4bt3dEw== +date-and-time@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-2.1.2.tgz#5b0e71296bbdd66ff1ce0e456c77d40f1479db5a" + integrity sha512-YlQUtuqYGPR58I7jzx4TIjknN9wCKjwewiylIp+P4xMuO23mlZje3Qe9gYCKp/6ncbeNpU8ZnPdhQNZnVphveQ== date-fns@^1.27.2: version "1.30.1" @@ -10605,9 +11163,9 @@ date-fns@^1.27.2: integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== date-fns@^2.16.1, date-fns@^2.18.0: - version "2.19.0" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1" - integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg== + version "2.28.0" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== dateformat@^3.0.0, dateformat@^3.0.3: version "3.0.3" @@ -10615,19 +11173,19 @@ dateformat@^3.0.0, dateformat@^3.0.3: integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== dateformat@^4.5.0: - version "4.5.1" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c" - integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q== + version "4.6.3" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== dayjs@^1.10.4: - version "1.10.4" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" - integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== + version "1.10.7" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" + integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== debounce@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" - integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + version "1.2.1" + resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" @@ -10690,9 +11248,9 @@ decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decimal.js-light@^2.4.1: - version "2.5.0" - resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348" - integrity sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg== + version "2.5.1" + resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" + integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== decimal.js@^10.2.1: version "10.3.1" @@ -10755,9 +11313,9 @@ deep-extend@0.6.0, deep-extend@^0.6.0: integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2, deepmerge@~4.2.2: version "4.2.2" @@ -10784,9 +11342,9 @@ defer-to-connect@^1.0.1: integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== defer-to-connect@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" - integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== + version "2.0.1" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== define-lazy-prop@^2.0.0: version "2.0.0" @@ -10905,9 +11463,9 @@ detect-indent@^5.0.0: integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + version "6.1.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== detect-libc@^1.0.3: version "1.0.3" @@ -10924,12 +11482,7 @@ detect-newline@^3.0.0: resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -detect-node@^2.1.0: +detect-node@^2.0.4, detect-node@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== @@ -10960,6 +11513,11 @@ diff-sequences@^26.6.2: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + diff2html@^2.7.0: version "2.12.2" resolved "https://registry.npmjs.org/diff2html/-/diff2html-2.12.2.tgz#356d35f9c87c42ebd11558bedf1c99c5b00886e8" @@ -11034,9 +11592,9 @@ dns-txt@^2.0.2: buffer-indexof "^1.0.0" docker-compose@^0.23.13: - version "0.23.13" - resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.13.tgz#77d37bd05b6a966345f631e6d05e961c79514f06" - integrity sha512-/9fYC4g3AO+qsqxIZhmbVnFvJJPcYEV2yJbAPPXH+6AytU3urIY8lUAXOlvY8sl4u25pdKu1JrOfAmWC7lJDJg== + version "0.23.17" + resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.17.tgz#8816bef82562d9417dc8c790aa4871350f93a2ba" + integrity sha512-YJV18YoYIcxOdJKeFcCFihE6F4M2NExWM/d4S1ITcS9samHKnNUihz9kjggr0dNtsrbpFNc7/Yzd19DWs+m1xg== dependencies: yaml "^1.10.2" @@ -11073,9 +11631,9 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.13" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b" - integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw== + version "0.5.11" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.11.tgz#79d5846c4f90eba3e617d9031e921de9324f84ed" + integrity sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw== dom-converter@^0.2.0: version "0.2.0" @@ -11092,32 +11650,45 @@ dom-helpers@^3.4.0: "@babel/runtime" "^7.1.2" dom-helpers@^5.0.1: - version "5.1.4" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" - integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== + version "5.2.1" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== dependencies: "@babel/runtime" "^7.8.7" - csstype "^2.6.7" + csstype "^3.0.2" -dom-serializer@^1.0.1: - version "1.2.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" - integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: domelementtype "^2.0.1" - domhandler "^4.0.0" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" entities "^2.0.0" dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= + version "0.1.2" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" @@ -11130,7 +11701,7 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^4.0.0, domhandler@^4.2.0: +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== @@ -11147,7 +11718,15 @@ dompurify@^2.2.7, dompurify@^2.2.9, dompurify@^2.3.6: resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875" integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg== -domutils@^2.5.2, domutils@^2.6.0: +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -11184,9 +11763,9 @@ dotenv@^10.0.0: integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== dset@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/dset/-/dset-3.1.0.tgz#23feb6df93816ea452566308b1374d6e869b0d7b" - integrity sha512-7xTQ5DzyE59Nn+7ZgXDXjKAGSGmXZHqttMVVz1r4QNfmGpyj+cm2YtI3II0c/+4zS4a9yq2mBhgdeq2QnpcYlw== + version "3.1.1" + resolved "https://registry.npmjs.org/dset/-/dset-3.1.1.tgz#07de5af7a8d03eab337ad1a8ba77fe17bba61a8c" + integrity sha512-hYf+jZNNqJBD2GiMYb+5mqOIX4R4RRHXU3qWMWYN+rqcR2/YpRL2bUHr8C8fU+5DNvqYjJ8YvMGSLuVPWU1cNg== duplexer2@~0.1.4: version "0.1.4" @@ -11200,20 +11779,15 @@ duplexer3@^0.1.4: resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1, duplexer@~0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexer@^0.1.2: +duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^4.0.0, duplexify@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" - integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== + version "4.1.2" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== dependencies: end-of-stream "^1.4.1" inherits "^2.0.3" @@ -11267,17 +11841,17 @@ elastic-builder@^2.16.0: lodash.isstring "^4.0.1" lodash.omit "^4.5.0" -electron-to-chromium@^1.4.17: - version "1.4.35" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.35.tgz#69aabb73d7030733e71c1e970ec16f5ceefbaea4" - integrity sha512-wzTOMh6HGFWeALMI3bif0mzgRrVGyP1BdFRx7IvWukFrSC5QVQELENuy+Fm2dCrAdQH9T3nuqr07n94nPDFBWA== +electron-to-chromium@^1.4.71: + version "1.4.71" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" + integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= -elliptic@^6.0.0: +elliptic@^6.5.3: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -11291,14 +11865,9 @@ elliptic@^6.0.0: minimalistic-crypto-utils "^1.0.1" emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + version "0.7.2" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== emoji-regex@^8.0.0: version "8.0.0" @@ -11399,25 +11968,30 @@ ent@^2.2.0: resolved "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= -entities@^2.0.0, entities@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== entities@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.4: - version "7.7.4" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" - integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== + version "7.8.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== eol@^0.9.1: version "0.9.1" @@ -11437,9 +12011,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" error-stack-parser@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" - integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + version "2.0.7" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" + integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== dependencies: stackframe "^1.1.1" @@ -11448,7 +12022,7 @@ error@^10.4.0: resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== -es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.19.0, es-abstract@^1.19.1: +es-abstract@^1.17.2, es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== @@ -11474,7 +12048,7 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" -es-module-lexer@^0.9.0: +es-module-lexer@^0.9.0, es-module-lexer@^0.9.3: version "0.9.3" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== @@ -11488,75 +12062,70 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz#b868bbd9955a92309c69df628d8dd1945478b45c" - integrity sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ== +esbuild-android-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz#c89b3c50b4f47668dcbeb0b34ee4615258818e71" + integrity sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw== -esbuild-android-arm64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz#e7d6430555e8e9c505fd87266bbc709f25f1825c" - integrity sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ== +esbuild-darwin-64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz#1c131e8cb133ed935ca32f824349a117c896a15b" + integrity sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug== -esbuild-darwin-64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz#4dc7484127564e89b4445c0a560a3cb50b3d68e1" - integrity sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g== +esbuild-darwin-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz#3c6245a50109dd84953f53d7833bd3b4f0e8c6fa" + integrity sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw== -esbuild-darwin-arm64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz#469e59c665f84a8ed323166624c5e7b9b2d22ac1" - integrity sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ== +esbuild-freebsd-64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz#0cdc54e72d3dd9cd992f9c2960055e68a7f8650c" + integrity sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA== -esbuild-freebsd-64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz#895df03bf5f87094a56c9a5815bf92e591903d70" - integrity sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA== +esbuild-freebsd-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz#1d11faed3a0c429e99b7dddef84103eb509788b2" + integrity sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg== -esbuild-freebsd-arm64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz#0b72a41a6b8655e9a8c5608f2ec1afdcf6958441" - integrity sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA== +esbuild-linux-32@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz#fd9f033fc27dcab61100cb1eb1c936893a68c841" + integrity sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ== -esbuild-linux-32@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz#43b8ba3803b0bbe7f051869c6a8bf6de1e95de28" - integrity sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw== +esbuild-linux-64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz#c04c438514f1359ecb1529205d0c836d4165f198" + integrity sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ== -esbuild-linux-64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz#dc8072097327ecfadba1735562824ce8c05dd0bd" - integrity sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg== +esbuild-linux-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz#d1b3ab2988ab0734886eb9e811726f7db099ab96" + integrity sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g== -esbuild-linux-arm64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz#c52b58cbe948426b1559910f521b0a3f396f10b8" - integrity sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ== +esbuild-linux-arm@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz#df7558b6a5076f5eb9fd387c8704f768b61d97fb" + integrity sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw== -esbuild-linux-arm@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz#df869dbd67d4ee3a04b3c7273b6bd2b233e78a18" - integrity sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw== +esbuild-linux-mips64le@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz#bb4c47fccc9493d460ffeb1f88e8a97a98a14f8b" + integrity sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw== -esbuild-linux-mips64le@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz#a2b646d9df368b01aa970a7b8968be6dd6b01d19" - integrity sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A== +esbuild-linux-ppc64le@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz#a332dbc8a1b4e30cfe1261bfaa5cef57c9c8c02a" + integrity sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag== -esbuild-linux-ppc64le@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz#9a21af766a0292578a3009c7408b8509cac7cefd" - integrity sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA== +esbuild-linux-riscv64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz#85675f3f931f5cd7cfb238fd82f77a62ffcb6d86" + integrity sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg== -esbuild-linux-riscv64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz#344a27f91568056a5903ad5841b447e00e78d740" - integrity sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg== - -esbuild-linux-s390x@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz#73a7309bd648a07ef58f069658f989a5096130db" - integrity sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg== +esbuild-linux-s390x@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz#a526282a696e6d846f4c628f5315475518c0c0f0" + integrity sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA== esbuild-loader@^2.18.0: version "2.18.0" @@ -11570,61 +12139,60 @@ esbuild-loader@^2.18.0: tapable "^2.2.0" webpack-sources "^2.2.0" -esbuild-netbsd-64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz#482a587cdbd18a6c264a05136596927deb46c30a" - integrity sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q== +esbuild-netbsd-64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz#8e456605694719aa1be4be266d6cd569c06dfaf5" + integrity sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g== -esbuild-openbsd-64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz#e99f8cdc63f1628747b63edd124d53cf7796468d" - integrity sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw== +esbuild-openbsd-64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz#f2fc51714b4ddabc86e4eb30ca101dd325db2f7d" + integrity sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA== -esbuild-sunos-64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz#8611d825bcb8239c78d57452e83253a71942f45c" - integrity sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg== +esbuild-sunos-64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz#a408f33ea20e215909e20173a0fd78b1aaad1f8e" + integrity sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g== -esbuild-windows-32@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz#c06374206d4d92dd31d4fda299b09f51a35e82f6" - integrity sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw== +esbuild-windows-32@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz#b9005bbff54dac3975ff355d5de2b5e37165d128" + integrity sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA== -esbuild-windows-64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz#756631c1d301dfc0d1a887deed2459ce4079582f" - integrity sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg== +esbuild-windows-64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz#2b5a99befeaca6aefdad32d738b945730a60a060" + integrity sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g== -esbuild-windows-arm64@0.14.27: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz#ad7e187193dcd18768b16065a950f4441d7173f4" - integrity sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg== +esbuild-windows-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz#edc560bbadb097eb45fc235aeacb942cb94a38c0" + integrity sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw== esbuild@^0.14.1, esbuild@^0.14.10, esbuild@^0.14.6: - version "0.14.27" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz#41fe0f1b6b68b9f77cac025009bc54bb96e616f1" - integrity sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q== + version "0.14.23" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz#95e842cb22bc0c7d82c140adc16788aac91469fe" + integrity sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig== optionalDependencies: - esbuild-android-64 "0.14.27" - esbuild-android-arm64 "0.14.27" - esbuild-darwin-64 "0.14.27" - esbuild-darwin-arm64 "0.14.27" - esbuild-freebsd-64 "0.14.27" - esbuild-freebsd-arm64 "0.14.27" - esbuild-linux-32 "0.14.27" - esbuild-linux-64 "0.14.27" - esbuild-linux-arm "0.14.27" - esbuild-linux-arm64 "0.14.27" - esbuild-linux-mips64le "0.14.27" - esbuild-linux-ppc64le "0.14.27" - esbuild-linux-riscv64 "0.14.27" - esbuild-linux-s390x "0.14.27" - esbuild-netbsd-64 "0.14.27" - esbuild-openbsd-64 "0.14.27" - esbuild-sunos-64 "0.14.27" - esbuild-windows-32 "0.14.27" - esbuild-windows-64 "0.14.27" - esbuild-windows-arm64 "0.14.27" + esbuild-android-arm64 "0.14.23" + esbuild-darwin-64 "0.14.23" + esbuild-darwin-arm64 "0.14.23" + esbuild-freebsd-64 "0.14.23" + esbuild-freebsd-arm64 "0.14.23" + esbuild-linux-32 "0.14.23" + esbuild-linux-64 "0.14.23" + esbuild-linux-arm "0.14.23" + esbuild-linux-arm64 "0.14.23" + esbuild-linux-mips64le "0.14.23" + esbuild-linux-ppc64le "0.14.23" + esbuild-linux-riscv64 "0.14.23" + esbuild-linux-s390x "0.14.23" + esbuild-netbsd-64 "0.14.23" + esbuild-openbsd-64 "0.14.23" + esbuild-sunos-64 "0.14.23" + esbuild-windows-32 "0.14.23" + esbuild-windows-64 "0.14.23" + esbuild-windows-arm64 "0.14.23" escalade@^3.1.1: version "3.1.1" @@ -11674,9 +12242,9 @@ escodegen@^2.0.0: source-map "~0.6.1" eslint-config-prettier@^8.3.0: - version "8.5.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + version "8.4.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz#8e6d17c7436649e98c4c2189868562921ef563de" + integrity sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw== eslint-formatter-friendly@^7.0.0: version "7.0.0" @@ -11750,6 +12318,13 @@ eslint-plugin-import@^2.25.4: resolve "^1.20.0" tsconfig-paths "^3.12.0" +eslint-plugin-jest@^25.3.4: + version "25.7.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + eslint-plugin-jest@^26.1.2: version "26.1.2" resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.1.2.tgz#0f1a15c62889fffc3f78a773749d672f1bedb15f" @@ -11846,15 +12421,27 @@ eslint-utils@^3.0.0: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint-webpack-plugin@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd" + integrity sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ== + dependencies: + "@types/eslint" "^7.28.2" + arrify "^2.0.1" + jest-worker "^27.3.1" + micromatch "^4.0.4" + normalize-path "^3.0.0" + schema-utils "^3.1.1" + eslint-webpack-plugin@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz#83dad2395e5f572d6f4d919eedaa9cf902890fcb" @@ -11867,11 +12454,11 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^3.1.1" eslint@^8.6.0: - version "8.11.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz#88b91cfba1356fc10bb9eb592958457dfe09fb37" - integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA== + version "8.9.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb" + integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q== dependencies: - "@eslint/eslintrc" "^1.2.1" + "@eslint/eslintrc" "^1.1.0" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -11961,9 +12548,9 @@ estree-walker@^1.0.1: integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== estree-walker@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" - integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" @@ -12102,9 +12689,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: zen-observable "^0.8.15" exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + version "0.3.6" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== execa@4.1.0, execa@^4.0.0: version "4.1.0" @@ -12365,9 +12952,9 @@ extsprintf@1.3.0: integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-decode-uri-component@^1.0.1: version "1.0.1" @@ -12384,17 +12971,16 @@ fast-equals@^2.0.0: resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.4.tgz#3add9410585e2d7364c2deeb6a707beadb24b927" integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w== -fast-glob@^3.1.1: - version "3.2.2" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" - integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== +fast-glob@^3.1.1, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" fast-json-parse@^1.0.3: version "1.0.3" @@ -12402,9 +12988,9 @@ fast-json-parse@^1.0.3: integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== fast-json-patch@^3.0.0-1: - version "3.0.0-1" - resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz#4c68f2e7acfbab6d29d1719c44be51899c93dabb" - integrity sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw== + version "3.1.0" + resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz#ec8cd9b9c4c564250ec8b9140ef7a55f70acaee6" + integrity sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA== fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" @@ -12449,9 +13035,9 @@ fastest-stable-stringify@^2.0.2: integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== fastq@^1.6.0: - version "1.6.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" - integrity sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw== + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" @@ -12463,9 +13049,9 @@ fault@^1.0.0: format "^0.2.0" faye-websocket@^0.11.3: - version "0.11.3" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + version "0.11.4" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -12482,17 +13068,17 @@ fbjs-css-vars@^1.0.0: integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== fbjs@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" - integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== + version "3.0.4" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== dependencies: - cross-fetch "^3.0.4" + cross-fetch "^3.1.5" fbjs-css-vars "^1.0.0" loose-envify "^1.0.0" object-assign "^4.1.0" promise "^7.1.1" setimmediate "^1.0.5" - ua-parser-js "^0.7.18" + ua-parser-js "^0.7.30" fd-slicer@~1.1.0: version "1.1.0" @@ -12502,9 +13088,9 @@ fd-slicer@~1.1.0: pend "~1.2.0" fecha@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" - integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== + version "4.2.1" + resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" + integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== figures@^1.7.0: version "1.7.0" @@ -12562,9 +13148,9 @@ filelist@^1.0.1: minimatch "^3.0.4" filesize@^8.0.6: - version "8.0.6" - resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.6.tgz#5f0c27aa1b507fa7d9f72c912a774ca6a44111b1" - integrity sha512-sHvRqTiwdmcuzqet7iVwsbwF6UrV3wIgDf2SHNdY1Hgl8PC45HZg/0xtdw6U2izIV4lccnrY9ftl6wZFNdjYMg== + version "8.0.7" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== fill-range@^4.0.0: version "4.0.0" @@ -12701,14 +13287,14 @@ flatstr@^1.0.12: integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + version "3.2.5" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== flow-parser@0.*: - version "0.152.0" - resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.152.0.tgz#a627aec1fdcfa243e2016469e44284a98169b996" - integrity sha512-qRXGE3ztuhyI2ovi4Ixwq7/GUYvKX9wmFdwBof2q5pWHteuveexFrlbwZxSonC0dWz2znA6sW+vce4RXgYLnnQ== + version "0.172.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.172.0.tgz#9f5ee62ebf6bad689d5de0b6b98445d8cf030a2f" + integrity sha512-WWqgvuJgD9Y1n2su9D73m0g5kQ4XVl8Dwk6DeW5V6bjt4XMtVLzSHg35s3iiZOvShY+7w7l8FzlK81PGXRcIYQ== fn.name@1.x.x: version "1.1.0" @@ -12716,9 +13302,9 @@ fn.name@1.x.x: integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== follow-redirects@^1.0.0, follow-redirects@^1.14.0: - version "1.14.8" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== + version "1.14.9" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== for-in@^1.0.2: version "1.0.2" @@ -12795,9 +13381,9 @@ form-data@^2.3.2, form-data@^2.5.0: mime-types "^2.1.12" form-data@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" - integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -12817,15 +13403,7 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= -formdata-node@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.0.tgz#77be2add9092cbd1e1f4d35bc3293a89be117a04" - integrity sha512-TwqhWUZd2jB5l0kUhhcy1XYNsXq46NH6k60zmiu7xsxMztul+cCMuPSAQrSDV62zznhBKJdA9O+zeWj5i5Pbfg== - dependencies: - node-domexception "1.0.0" - web-streams-polyfill "4.0.0-beta.1" - -formdata-node@^4.3.1: +formdata-node@^4.0.0, formdata-node@^4.3.1: version "4.3.2" resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.2.tgz#0262e94931e36db7239c2b08bdb6aaf18ec47d21" integrity sha512-k7lYJyzDOSL6h917favP8j1L0/wNyylzU+x+1w4p5haGVHNlP58dbpdJhiCUsDbWsa9HwEtLp89obQgXl2e0qg== @@ -12892,6 +13470,16 @@ fs-extra@10.0.1, fs-extra@^10.0.0, fs-extra@^10.0.1: jsonfile "^6.0.1" universalify "^2.0.0" +fs-extra@9.1.0, fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^7.0.1, fs-extra@~7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -12910,16 +13498,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -12985,9 +13563,9 @@ gauge@^3.0.0: wide-align "^1.1.2" gauge@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" - integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== + version "4.0.1" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.1.tgz#82984bc08c90357d60b0a46c03a296beb1affec4" + integrity sha512-zJ4jePUHR8cceduZ53b6temRalyGpkC2Kc2r3ecNphmL+uWNoJ3YcOcUjpbG6WwoE/Ef6/+aEZz63neI2WIa1Q== dependencies: ansi-regex "^5.0.1" aproba "^1.0.3 || ^2.0.0" @@ -13014,37 +13592,24 @@ gauge@~2.7.3: wide-align "^1.1.0" gaxios@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz#bc7b205a89d883452822cc75e138620c35e3291e" - integrity sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ== + version "4.3.2" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz#845827c2dc25a0213c8ab4155c7a28910f5be83f" + integrity sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q== dependencies: abort-controller "^3.0.0" extend "^3.0.2" https-proxy-agent "^5.0.0" is-stream "^2.0.0" - node-fetch "^2.3.0" + node-fetch "^2.6.1" gcp-metadata@^4.2.0: - version "4.2.1" - resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62" - integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw== + version "4.3.1" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" + integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== dependencies: gaxios "^4.0.0" json-bigint "^1.0.0" -gcs-resumable-upload@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.3.0.tgz#d1a866173f9b47e045d4406cafaa658dbb01e624" - integrity sha512-MQKWi+9hOSTyg5/SI1NBW4gAjL1wlkoevHefvr1PCBBXH4uKYLsug5qRrcotWKolDPLfWS51cWaHRN0CTtQNZw== - dependencies: - abort-controller "^3.0.0" - configstore "^5.0.0" - extend "^3.0.2" - gaxios "^4.0.0" - google-auth-library "^7.0.0" - pumpify "^2.0.0" - stream-events "^1.0.4" - generate-function@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" @@ -13052,12 +13617,12 @@ generate-function@^2.3.1: dependencies: is-property "^1.0.2" -generic-names@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" - integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== +generic-names@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" + integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== dependencies: - loader-utils "^1.1.0" + loader-utils "^3.2.0" gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -13091,6 +13656,11 @@ get-monorepo-packages@^1.1.0: globby "^7.1.1" load-json-file "^4.0.0" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-pkg-repo@^4.0.0: version "4.2.1" resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" @@ -13119,16 +13689,16 @@ get-stream@^4.0.0, get-stream@^4.1.0: pump "^3.0.0" get-stream@^5.0.0, get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + version "5.2.0" + resolved "https://registry.npmjs.org/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: - version "6.0.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: version "1.0.0" @@ -13163,9 +13733,9 @@ getpass@^0.1.1: assert-plus "^1.0.0" git-raw-commits@^2.0.8: - version "2.0.10" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" - integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== + version "2.0.11" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: dargs "^7.0.0" lodash "^4.17.15" @@ -13190,12 +13760,12 @@ git-semver-tags@^4.1.1: semver "^6.0.0" git-up@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" - integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + version "4.0.5" + resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" + integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== dependencies: is-ssh "^1.3.0" - parse-url "^5.0.0" + parse-url "^6.0.0" git-url-parse@^11.4.4, git-url-parse@^11.6.0: version "11.6.0" @@ -13216,7 +13786,7 @@ github-from-package@0.0.0: resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.2: +glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -13296,9 +13866,9 @@ globals@^11.1.0, globals@^11.12.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.9.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" - integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== + version "13.12.1" + resolved "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" + integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== dependencies: type-fest "^0.20.2" @@ -13315,15 +13885,15 @@ globby@11.0.3: slash "^3.0.0" globby@^11.0.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: - version "11.0.4" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" globby@^7.1.1: @@ -13338,10 +13908,10 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -google-auth-library@^7.0.0, google-auth-library@^7.14.0, google-auth-library@^7.6.1: - version "7.14.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.0.tgz#9d6a20592f7b4d4c463cd3e93934c4b1711d5dc6" - integrity sha512-or8r7qUqGVI3W8lVSdPh0ZpeFyQHeE73g5c0p+bLNTTUFXJ+GSeDQmZRZ2p4H8cF/RJYa4PNvi/A1ar1uVNLFA== +google-auth-library@^7.0.0, google-auth-library@^7.6.1, google-auth-library@^7.9.2: + version "7.12.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" + integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== dependencies: arrify "^2.0.0" base64-js "^1.3.0" @@ -13354,11 +13924,11 @@ google-auth-library@^7.0.0, google-auth-library@^7.14.0, google-auth-library@^7. lru-cache "^6.0.0" google-gax@^2.24.1: - version "2.28.1" - resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz#99bc234b5769d901d70959d40bd1651729eb4a34" - integrity sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g== + version "2.29.7" + resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.29.7.tgz#d238dad424f40f6809205dee3c7d4d6e61511e8b" + integrity sha512-yC0Q4OqX6s081jV72Idt9sxZnuRHOjg0SR0FFH15gT3LDE2u/78xqLjZwa3VuprBvaOLM29jzU19Vv4I7E8ETQ== dependencies: - "@grpc/grpc-js" "~1.4.0" + "@grpc/grpc-js" "~1.5.0" "@grpc/proto-loader" "^0.6.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" @@ -13368,11 +13938,11 @@ google-gax@^2.24.1: is-stream-ended "^0.1.4" node-fetch "^2.6.1" object-hash "^2.1.1" - proto3-json-serializer "^0.1.5" + proto3-json-serializer "^0.1.8" protobufjs "6.11.2" retry-request "^4.0.0" -google-p12-pem@^3.0.3: +google-p12-pem@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz#5497998798ee86c2fc1f4bb1f92b7729baf37537" integrity sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ== @@ -13424,18 +13994,18 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12: - version "1.7.1" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.7.1.tgz#426afa0379c8d5424493fce69b678ee5c94e0e33" - integrity sha512-diEftHKsFtONUy90v1bZYgjCsJmRRVlnS72kYdv2lTETr1jgWN8V1nLepGl47xoQg8j0Bw9Er3v0wHnOdB5JxA== + version "1.5.20" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.5.20.tgz#6d85f7e921676cced881b1a2ea22caa211ed9c1d" + integrity sha512-cHXWN8W1npsQxY0N0hxfPzqWyP572Xiz04O1KANslS9uvlCaQ0YBfmUExRnPr85qI1a4s701wlkFwUViQHukoQ== dependencies: "@graphiql/toolkit" "^0.4.2" codemirror "^5.58.2" - codemirror-graphql "^1.2.13" + codemirror-graphql "^1.2.12" copy-to-clipboard "^3.2.0" dset "^3.1.0" entities "^2.0.0" escape-html "^1.0.3" - graphql-language-service "^5.0.0" + graphql-language-service "^4.1.5" markdown-it "^12.2.0" graphlib@^2.1.8: @@ -13446,15 +14016,15 @@ graphlib@^2.1.8: lodash "^4.17.15" graphql-config@^3.0.2: - version "3.3.0" - resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.3.0.tgz#24c3672a427cb67c0c717ca3b9d70e9f0c9e752b" - integrity sha512-mSQIsPMssr7QrgqhnjI+CyVH6oQgCrgS6irHsTvwf7RFDRnR2k9kqpQOQgVoOytBSn0DOYryS0w0SAg9xor/Jw== + version "3.4.1" + resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.4.1.tgz#59f937a1b4d3a3c2dcdb27ddf5b4d4d4b2c6e9e1" + integrity sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw== dependencies: "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2" "@graphql-tools/graphql-file-loader" "^6.0.0" "@graphql-tools/json-file-loader" "^6.0.0" "@graphql-tools/load" "^6.0.0" - "@graphql-tools/merge" "^6.0.0" + "@graphql-tools/merge" "6.0.0 - 6.2.14" "@graphql-tools/url-loader" "^6.0.0" "@graphql-tools/utils" "^7.0.0" cosmiconfig "7.0.0" @@ -13479,15 +14049,56 @@ graphql-config@^4.1.0: minimatch "3.0.4" string-env-interpolation "1.0.1" -graphql-language-service@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/graphql-language-service/-/graphql-language-service-5.0.0.tgz#52dad53135f06551eee4c4dc57057c61eb10c460" - integrity sha512-3tbJOApOJk8FQFVV+hKSs3gEWqqt3gQ5l3iEOUl7ofhyTmpRlbkYp+/dVLMF/p29iwZ5a8wqSXl+DDnHI6RMXQ== +graphql-executor@0.0.18: + version "0.0.18" + resolved "https://registry.npmjs.org/graphql-executor/-/graphql-executor-0.0.18.tgz#6aa4b39e1ca773e159c2a602621e90606df0109a" + integrity sha512-upUSl7tfZCZ5dWG1XkOvpG70Yk3duZKcCoi/uJso4WxJVT6KIrcK4nZ4+2X/hzx46pL8wAukgYHY6iNmocRN+g== + +graphql-language-service-interface@^2.10.2: + version "2.10.2" + resolved "https://registry.npmjs.org/graphql-language-service-interface/-/graphql-language-service-interface-2.10.2.tgz#de9386f699e446320256175e215cdc10ccf9f9b7" + integrity sha512-RKIEBPhRMWdXY3fxRs99XysTDnEgAvNbu8ov/5iOlnkZsWQNzitjtd0O0l1CutQOQt3iXoHde7w8uhCnKL4tcg== dependencies: graphql-config "^4.1.0" - nullthrows "^1.0.0" + graphql-language-service-parser "^1.10.4" + graphql-language-service-types "^1.8.7" + graphql-language-service-utils "^2.7.1" vscode-languageserver-types "^3.15.1" +graphql-language-service-parser@^1.10.4: + version "1.10.4" + resolved "https://registry.npmjs.org/graphql-language-service-parser/-/graphql-language-service-parser-1.10.4.tgz#b2979deefc5c0df571dacd409b2d5fbf1cdf7a9d" + integrity sha512-duDE+0aeKLFVrb9Kf28U84ZEHhHcvTjWIT6dJbIAQJWBaDoht0D4BK9EIhd94I3DtKRc1JCJb2+70y1lvP/hiA== + dependencies: + graphql-language-service-types "^1.8.7" + +graphql-language-service-types@^1.8.7: + version "1.8.7" + resolved "https://registry.npmjs.org/graphql-language-service-types/-/graphql-language-service-types-1.8.7.tgz#f5e909e6d9334ea2d8d1f7281b695b6f5602c07f" + integrity sha512-LP/Mx0nFBshYEyD0Ny6EVGfacJAGVx+qXtlJP4hLzUdBNOGimfDNtMVIdZANBXHXcM41MDgMHTnyEx2g6/Ttbw== + dependencies: + graphql-config "^4.1.0" + vscode-languageserver-types "^3.15.1" + +graphql-language-service-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.npmjs.org/graphql-language-service-utils/-/graphql-language-service-utils-2.7.1.tgz#c97c8d744a761480aba7e03e4a42adf28b6fce39" + integrity sha512-Wci5MbrQj+6d7rfvbORrA9uDlfMysBWYaG49ST5TKylNaXYFf3ixFOa74iM1KtM9eidosUbI3E1JlWi0JaidJA== + dependencies: + "@types/json-schema" "7.0.9" + graphql-language-service-types "^1.8.7" + nullthrows "^1.0.0" + +graphql-language-service@^4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/graphql-language-service/-/graphql-language-service-4.1.5.tgz#26964e4fcc62e2d850f2b931bef03b91bdf9a6df" + integrity sha512-6vvZ+4L1xMNpQdlt6a9BaEzZD3ZIiaTmFdjKu81UTIVRh02QKfbW6tcz4UJNTY+4LsTWjR1rNtG3H4pVNrKJ2Q== + dependencies: + graphql-language-service-interface "^2.10.2" + graphql-language-service-parser "^1.10.4" + graphql-language-service-types "^1.8.7" + graphql-language-service-utils "^2.7.1" + graphql-modules@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/graphql-modules/-/graphql-modules-2.0.0.tgz#5f710d86eb7295da83769c8cd6d61a049d999800" @@ -13499,9 +14110,9 @@ graphql-modules@^2.0.0: ramda "^0.27.1" graphql-request@^3.3.0: - version "3.4.0" - resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.4.0.tgz#3a400cd5511eb3c064b1873afb059196bbea9c2b" - integrity sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg== + version "3.7.0" + resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz#c7406e537084f8b9788541e3e6704340ca13055b" + integrity sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ== dependencies: cross-fetch "^3.0.6" extract-files "^9.0.0" @@ -13525,14 +14136,14 @@ graphql-type-json@^0.3.2: integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== graphql-ws@^4.4.1: - version "4.7.0" - resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.7.0.tgz#b323fbf35a3736eed85dac24c0054d6d10c93e62" - integrity sha512-Md8SsmC9ZlsogFPd3Ot8HbIAAqsHh8Xoq7j4AmcIat1Bh6k91tjVyQvA0Au1/BolXSYq+RDvib6rATU2Hcf1Xw== + version "4.9.0" + resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c" + integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== graphql-ws@^5.4.1: - version "5.5.5" - resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.5.5.tgz#f375486d3f196e2a2527b503644693ae3a8670a9" - integrity sha512-hvyIS71vs4Tu/yUYHPvGXsTgo0t3arU820+lT5VjZS2go0ewp2LqyCgxEN56CzOG7Iys52eRhHBiD1gGRdiQtw== + version "5.6.0" + resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.6.0.tgz#8914d0c0a7be0cc3e8fd486ea8a148e500b2ff29" + integrity sha512-Kz/4z1u9yGKWMtzlvia9wW8AJGjx68OyCCV40dabYq1OeyUxgU9t8Ll43vLAje7TYiLwZSwGbvtHviHaPyGYxw== graphql@^15.5.1: version "15.8.0" @@ -13555,14 +14166,13 @@ growly@^1.3.0: integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= gtoken@^5.0.4: - version "5.1.0" - resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.1.0.tgz#4ba8d2fc9a8459098f76e7e8fd7beaa39fda9fe4" - integrity sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg== + version "5.3.2" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" + integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== dependencies: gaxios "^4.0.0" - google-p12-pem "^3.0.3" + google-p12-pem "^3.1.3" jws "^4.0.0" - mime "^2.2.0" gzip-size@^6.0.0: version "6.0.0" @@ -13572,9 +14182,9 @@ gzip-size@^6.0.0: duplexer "^0.1.2" handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== handlebars@^4.7.3, handlebars@^4.7.7: version "4.7.7" @@ -13594,11 +14204,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" hard-rejection@^2.1.0: @@ -13607,9 +14217,9 @@ hard-rejection@^2.1.0: integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== harmony-reflect@^1.4.6: - version "1.6.1" - resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" - integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + version "1.6.2" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-ansi@^2.0.0: version "2.0.0" @@ -13706,12 +14316,13 @@ has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash-it@^5.0.0: version "5.0.2" @@ -13732,9 +14343,9 @@ hash.js@^1.0.0, hash.js@^1.0.3: minimalistic-assert "^1.0.1" hast-util-parse-selector@^2.0.0: - version "2.2.4" - resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" - integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== + version "2.2.5" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== hast-util-whitespace@^2.0.0: version "2.0.0" @@ -13826,13 +14437,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^3.0.6: - version "3.0.8" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" - integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== - dependencies: - lru-cache "^6.0.0" - hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" @@ -13868,9 +14472,9 @@ html-entities@^2.3.2: integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== html-escaper@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" - integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^6.0.2: version "6.1.0" @@ -13927,7 +14531,7 @@ http-errors@1.8.1: statuses ">= 1.5.0 < 2" toidentifier "1.0.1" -http-errors@2.0.0, http-errors@^2.0.0: +http-errors@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== @@ -13949,11 +14553,11 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + version "0.5.5" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== -http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: +http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== @@ -14010,9 +14614,9 @@ http-signature@~1.3.6: sshpk "^1.14.1" http2-wrapper@^1.0.0-beta.5.2: - version "1.0.0-beta.5.2" - resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" - integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== + version "1.0.3" + resolved "https://registry.npmjs.org/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" @@ -14063,9 +14667,9 @@ husky@^7.0.4: integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" - integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== + version "1.0.4" + resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -14114,9 +14718,9 @@ ignore-by-default@^1.0.1: integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= ignore-walk@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + version "3.0.4" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: minimatch "^3.0.4" @@ -14132,6 +14736,11 @@ ignore@^3.3.5: resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -14170,9 +14779,9 @@ import-cwd@^3.0.0: import-from "^3.0.0" import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -14200,9 +14809,9 @@ import-lazy@~4.0.0: integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -14212,13 +14821,6 @@ imurmurhash@^0.1.4: resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indefinite-observable@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400" - integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ== - dependencies: - symbol-observable "1.2.0" - indent-string@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -14229,11 +14831,6 @@ indent-string@^4.0.0: resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - indexof@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" @@ -14278,16 +14875,15 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.2.tgz#d81a7e6775af9b618f20bba288e440b8d1ce05f3" - integrity sha512-PO64kVeArePvhX7Ff0jVWkpnE1DfGRvaWcStYrPugcJz9twQGYibagKJuIMHCX7ENcp0M6LJlcjLBuLD5KeJMg== + version "2.0.5" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" + integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== dependencies: - glob "^7.1.1" - npm-package-arg "^8.1.0" + npm-package-arg "^8.1.5" promzard "^0.3.0" read "~1.0.1" - read-package-json "^3.0.0" - semver "^7.3.2" + read-package-json "^4.1.1" + semver "^7.3.5" validate-npm-package-license "^3.0.4" validate-npm-package-name "^3.0.0" @@ -14297,9 +14893,9 @@ inline-style-parser@0.1.1: integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== inline-style-prefixer@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.0.tgz#f73d5dbf2855733d6b153a4d24b7b47a73e9770b" - integrity sha512-XTHvRUS4ZJNzC1GixJRmOlWSS45fSt+DJoyQC9ytj0WxQfcgofQtDtyKKYxHUqEsWCs+LIWftPF1ie7+i012Fg== + version "6.0.1" + resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" + integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== dependencies: css-in-js-utils "^2.0.0" @@ -14418,11 +15014,6 @@ ipaddr.js@^2.0.1: resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -14450,11 +15041,6 @@ is-alphabetical@^1.0.0: resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -is-alphabetical@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz#ef6e2caea57c63450fffc7abb6cbdafc5eb96e96" - integrity sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w== - is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -14463,18 +15049,13 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-alphanumerical@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz#0fbfeb6a72d21d91143b3d182bf6cf5909ee66f6" - integrity sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ== - dependencies: - is-alphabetical "^2.0.0" - is-decimal "^2.0.0" - is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" @@ -14487,9 +15068,11 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" @@ -14499,11 +15082,12 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-buffer@^1.1.5: version "1.1.6" @@ -14511,9 +15095,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: - version "2.0.4" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" @@ -14534,7 +15118,7 @@ is-ci@^3.0.0, is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.8.0: +is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -14556,20 +15140,17 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-decimal@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz#db1140337809fd043a056ae40a9bd1cdc563034c" - integrity sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw== - is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -14651,9 +15232,11 @@ is-generator-fn@^2.0.0: integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: - version "1.0.8" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" - integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== + version "1.0.10" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" is-glob@4.0.1: version "4.0.1" @@ -14674,11 +15257,6 @@ is-hexadecimal@^1.0.0: resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-hexadecimal@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz#8e1ec9f48fe3eabd90161109856a23e0907a65d5" - integrity sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug== - is-in-browser@^1.0.2, is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" @@ -14715,9 +15293,9 @@ is-module@^1.0.0: integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-node-process@^1.0.1: version "1.0.1" @@ -14730,9 +15308,11 @@ is-npm@^5.0.0: integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + version "1.0.6" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" is-number@^3.0.0: version "3.0.0" @@ -14752,9 +15332,9 @@ is-obj@^2.0.0: integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + version "1.0.2" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== is-observable@^1.1.0: version "1.1.0" @@ -14800,13 +15380,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" - is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" @@ -14854,11 +15427,6 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-resolvable@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - is-root@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" @@ -14877,9 +15445,9 @@ is-shared-array-buffer@^1.0.1: integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== is-ssh@^1.3.0: - version "1.3.1" - resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" - integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + version "1.3.3" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" + integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== dependencies: protocols "^1.1.0" @@ -14894,9 +15462,9 @@ is-stream@^1.1.0: integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" @@ -14906,18 +15474,18 @@ is-string@^1.0.5, is-string@^1.0.7: has-tostringtag "^1.0.0" is-subdir@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.1.1.tgz#423e66902f9c5f159b9cc4826c820df083059538" - integrity sha512-VYpq0S7gPBVkkmfwkvGnx1EL9UVIo87NQyNcgMiNUdQCws3CJm5wj2nB+XPL7zigvjxhuZgp3bl2yBcKkSIj1w== + version "1.2.0" + resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" + integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== dependencies: better-path-resolve "1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" is-text-path@^1.0.1: version "1.0.1" @@ -14926,16 +15494,16 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.3: - version "1.1.5" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" - integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== +is-typed-array@^1.1.3, is-typed-array@^1.1.7: + version "1.1.8" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" + integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== dependencies: - available-typed-arrays "^1.0.2" + available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.18.0-next.2" + es-abstract "^1.18.5" foreach "^2.0.5" - has-symbols "^1.0.1" + has-tostringtag "^1.0.0" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -14967,11 +15535,11 @@ is-utf8@^0.2.0, is-utf8@^0.2.1: integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" is-window@^1.0.2: version "1.0.2" @@ -15032,11 +15600,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - isomorphic-dompurify@^0.13.0: version "0.13.0" resolved "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-0.13.0.tgz#a4dde357e8531018a85ebb2dd56c4794b6739ba3" @@ -15062,9 +15625,9 @@ isomorphic-form-data@^2.0.0: form-data "^2.3.2" isomorphic-git@^1.8.0: - version "1.13.1" - resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.13.1.tgz#66d9d1f24178f24230844dd70effb9d569214222" - integrity sha512-Hyc/KCCZAqTD5oyn90K5bRbCvRt1vj60OFKKmBZZwGrdzGvXu4FBBaqUrgWnd7N07M8soCOXibkDLq0lGWjNOQ== + version "1.11.2" + resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.11.2.tgz#58fd47f3e797ed9cc1364bb2cae02355499d6bea" + integrity sha512-7gSW+dMftHYyDufoeLCOagxlN0KsAYvR/qddSke9pnPH8vwL4OwqQ2BvkG0O02OnEFqg1pZXyIzBPFBfOMYXUA== dependencies: async-lock "^1.1.0" clean-git-ref "^2.0.1" @@ -15088,12 +15651,12 @@ isstream@~0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: +istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -15103,6 +15666,17 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" +istanbul-lib-instrument@^5.0.4: + version "5.1.0" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -15113,9 +15687,9 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" @@ -15220,6 +15794,16 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" +jest-diff@^27.0.0: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" @@ -15268,6 +15852,11 @@ jest-get-type@^26.3.0: resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -15534,10 +16123,10 @@ jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.3.1, jest-worker@^27.4.1: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" - integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== +jest-worker@^27.3.1, jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -15580,13 +16169,13 @@ jmespath@^0.15.0: integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= joi@^17.4.0: - version "17.4.2" - resolved "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7" - integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw== + version "17.6.0" + resolved "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" + "@sideway/address" "^4.1.3" "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" @@ -15605,9 +16194,9 @@ jose@^2.0.5: "@panva/asn1.js" "^1.0.0" joycon@^3.0.1: - version "3.1.0" - resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.0.tgz#33bb2b6b5a6849a1e251bed623bdf610f477d49f" - integrity sha512-5Y/YJghKF/IzaUXTut0JtbQyHfBShTaIsH7hHhGXEzYO07zWdWZm5hr3Q6miqhrwsRqqm3mgOnUEZdn+1aRxKQ== + version "3.1.1" + resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== jpeg-js@^0.3.4: version "0.3.7" @@ -15786,9 +16375,9 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-pointer@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz#3c6caa6ac139e2599f5a1659d39852154015054d" - integrity sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q== + version "0.6.2" + resolved "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== dependencies: foreach "^2.0.4" @@ -15911,11 +16500,11 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -15986,85 +16575,76 @@ jsprim@^2.0.2: verror "1.10.0" jss-plugin-camel-case@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz#93d2cd704bf0c4af70cc40fb52d74b8a2554b170" - integrity sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz#4921b568b38d893f39736ee8c4c5f1c64670aaf7" + integrity sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww== dependencies: "@babel/runtime" "^7.3.1" hyphenate-style-name "^1.0.3" - jss "10.6.0" + jss "10.9.0" jss-plugin-default-unit@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.6.0.tgz#af47972486819b375f0f3a9e0213403a84b5ef3b" - integrity sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz#bb23a48f075bc0ce852b4b4d3f7582bc002df991" + integrity sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" jss-plugin-global@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.6.0.tgz#3e8011f760f399cbadcca7f10a485b729c50e3ed" - integrity sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz#fc07a0086ac97aca174e37edb480b69277f3931f" + integrity sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" jss-plugin-nested@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.6.0.tgz#5f83c5c337d3b38004834e8426957715a0251641" - integrity sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz#cc1c7d63ad542c3ccc6e2c66c8328c6b6b00f4b3" + integrity sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" tiny-warning "^1.0.2" jss-plugin-props-sort@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.6.0.tgz#297879f35f9fe21196448579fee37bcde28ce6bc" - integrity sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz#30e9567ef9479043feb6e5e59db09b4de687c47d" + integrity sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" jss-plugin-rule-value-function@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.6.0.tgz#3c1a557236a139d0151e70a82c810ccce1c1c5ea" - integrity sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz#379fd2732c0746fe45168011fe25544c1a295d67" + integrity sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg== dependencies: "@babel/runtime" "^7.3.1" - jss "10.6.0" + jss "10.9.0" tiny-warning "^1.0.2" jss-plugin-vendor-prefixer@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.6.0.tgz#e1fcd499352846890c38085b11dbd7aa1c4f2c78" - integrity sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ== + version "10.9.0" + resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz#aa9df98abfb3f75f7ed59a3ec50a5452461a206a" + integrity sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA== dependencies: "@babel/runtime" "^7.3.1" css-vendor "^2.0.8" - jss "10.6.0" + jss "10.9.0" -jss@10.6.0, jss@^10.5.1: - version "10.6.0" - resolved "https://registry.npmjs.org/jss/-/jss-10.6.0.tgz#d92ff9d0f214f65ca1718591b68e107be4774149" - integrity sha512-n7SHdCozmxnzYGXBHe0NsO0eUf9TvsHVq2MXvi4JmTn3x5raynodDVE/9VQmBdWFyyj9HpHZ2B4xNZ7MMy7lkw== +jss@10.9.0, jss@^10.5.1: + version "10.9.0" + resolved "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz#7583ee2cdc904a83c872ba695d1baab4b59c141b" + integrity sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw== dependencies: "@babel/runtime" "^7.3.1" csstype "^3.0.2" - indefinite-observable "^2.0.1" is-in-browser "^1.1.3" tiny-warning "^1.0.2" -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.2.0" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" - integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== - dependencies: - array-includes "^3.1.2" - object.assign "^4.1.2" - -jsx-ast-utils@^3.2.1: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== @@ -16188,9 +16768,9 @@ kleur@^4.0.3: integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== knex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/knex/-/knex-1.0.2.tgz#1b79273f39f587a631c1a5515482c203d5971781" - integrity sha512-RuDKTylj6X/3nYomnsFV8sOdxTcehLHczOd3yrUdULE4pQR8jVlZxYt3vvIU04otJF0Cw9DCtRt05S4PN4kDpw== + version "1.0.3" + resolved "https://registry.npmjs.org/knex/-/knex-1.0.3.tgz#a5f97aa98e5e036cfd0209a90d53b2a411280e84" + integrity sha512-rY1T7cgTQGHAUD9TshMka37bd+SEK+koPXXvZQEIoE8yjJ/E8ShsenaAmr3oaNNzqXuKD/SC0qlYtp7Js8tAXA== dependencies: colorette "2.0.16" commander "^8.3.0" @@ -16236,9 +16816,9 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + version "1.0.1" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== dependencies: readable-stream "^2.0.5" @@ -16343,47 +16923,47 @@ li@^1.3.0: integrity sha1-IsWbyu+qmo7zWc91l4TkvxBq6hs= libnpmaccess@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.1.tgz#17e842e03bef759854adf6eb6c2ede32e782639f" - integrity sha512-ZiAgvfUbvmkHoMTzdwmNWCrQRsDkOC+aM5BDfO0C9aOSwF3R1LdFDBD+Rer1KWtsoQYO35nXgmMR7OUHpDRxyA== + version "4.0.3" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" + integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== dependencies: aproba "^2.0.0" minipass "^3.1.1" - npm-package-arg "^8.0.0" - npm-registry-fetch "^9.0.0" + npm-package-arg "^8.1.2" + npm-registry-fetch "^11.0.0" libnpmpublish@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.0.tgz#ad6413914e0dfd78df868ce14ba3d3a4cc8b385b" - integrity sha512-2RwYXRfZAB1x/9udKpZmqEzSqNd7ouBRU52jyG14/xG8EF+O9A62d7/XVR3iABEQHf1iYhkm0Oq9iXjrL3tsXA== + version "4.0.2" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" + integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== dependencies: - normalize-package-data "^3.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" + normalize-package-data "^3.0.2" + npm-package-arg "^8.1.2" + npm-registry-fetch "^11.0.0" semver "^7.1.3" - ssri "^8.0.0" + ssri "^8.0.1" -lilconfig@2.0.4, lilconfig@^2.0.3: +lilconfig@2.0.4, lilconfig@^2.0.3, lilconfig@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== linkify-it@^3.0.1: - version "3.0.2" - resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8" - integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ== + version "3.0.3" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== dependencies: uc.micro "^1.0.1" lint-staged@^12.2.0: - version "12.3.3" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.3.tgz#0a465962fe53baa2b4b9da50801ead49a910e03b" - integrity sha512-OqcLsqcPOqzvsfkxjeBpZylgJ3SRG1RYqc9LxC6tkt6tNsq1bNVkAixBwX09f6CobcHswzqVOCBpFR1Fck0+ag== + version "12.3.4" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz#4b1ff8c394c3e6da436aaec5afd4db18b5dac360" + integrity sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" @@ -16448,16 +17028,16 @@ listr2@^3.8.3: wrap-ansi "^7.0.0" listr2@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.2.tgz#04d66f8c8694a14920d7df08ebe01568948fb500" - integrity sha512-YcgwfCWpvPbj9FLUGqvdFvd3hrFWKpOeuXznRgfWEJ7RNr8b/IKKIKZABHx3aU+4CWN/iSAFFSReziQG6vTeIA== + version "4.0.4" + resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz#d098a1c419284fb26e184b5d5889b235e8912245" + integrity sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg== dependencies: cli-truncate "^2.1.0" colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" rfdc "^1.3.0" - rxjs "^7.5.2" + rxjs "^7.5.4" through "^2.3.8" wrap-ansi "^7.0.0" @@ -16546,9 +17126,9 @@ loader-utils@^1.1.0: json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + version "2.0.2" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -16828,15 +17408,15 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -logform@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz#68babe6a74ab09a1fd15a9b1e6cbc7713d41cb5b" - integrity sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA== +logform@^2.3.2, logform@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe" + integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw== dependencies: - colors "1.4.0" + "@colors/colors" "1.5.0" fecha "^4.2.0" ms "^2.1.1" - safe-stable-stringify "^1.1.0" + safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" loglevel@^1.6.8: @@ -16850,9 +17430,9 @@ long@^4.0.0: integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== longest-streak@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz#f127e2bded83caa6a35ac5f7a2f2b2f94b36f3dc" - integrity sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw== + version "3.0.1" + resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d" + integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -16935,11 +17515,6 @@ lz-string@^1.4.4: resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= -macos-release@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" - integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== - magic-string@^0.25.7: version "0.25.7" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -16975,9 +17550,9 @@ make-error@^1, make-error@^1.1.1, make-error@^1.3.6: integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-fetch-happen@^10.0.1: - version "10.0.2" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.2.tgz#0afb38d2f951b17ebc482b0b16c8d77f39dfe389" - integrity sha512-JSFLK53NJP22FL/eAGOyKsWbc2G3v+toPMD7Dq9PJKQCvK0i3t8hGkKxe+3YZzwYa+c0kxRHu7uxH3fvO+rsaA== + version "10.0.3" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.3.tgz#94bbe675cf62a811dbab59668052388a078beaf2" + integrity sha512-CzarPHynPpHjhF5in/YapnO44rSZeYX5VCMfdXa99+gLwpbfFLh20CWa6dP/taV9Net9PWJwXNKtp/4ZTCQnag== dependencies: agentkeepalive "^4.2.0" cacache "^15.3.0" @@ -17017,7 +17592,7 @@ make-fetch-happen@^8.0.9: socks-proxy-agent "^5.0.0" ssri "^8.0.0" -make-fetch-happen@^9.1.0: +make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -17039,12 +17614,12 @@ make-fetch-happen@^9.1.0: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - tmpl "1.0.x" + tmpl "1.0.5" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" @@ -17085,14 +17660,14 @@ markdown-it@^12.2.0: uc.micro "^1.0.5" markdown-table@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.1.tgz#88c48957aaf2a8014ccb2ba026776a1d736fe3dc" - integrity sha512-CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A== + version "3.0.2" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c" + integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== marked@^4.0.10: - version "4.0.10" - resolved "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz#423e295385cc0c3a70fa495e0df68b007b879423" - integrity sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw== + version "4.0.12" + resolved "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" + integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== match-sorter@^6.0.2: version "6.3.1" @@ -17121,9 +17696,9 @@ material-ui-search-bar@^1.0.0: prop-types "^15.5.8" math-expression-evaluator@^1.2.14: - version "1.2.22" - resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e" - integrity sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ== + version "1.3.14" + resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.14.tgz#0ebeaccf65fea0f6f5a626f88df41814e5fcd9bf" + integrity sha512-M6AMrvq9bO8uL42KvQHPA2/SbAobA0R7gviUmPrcTcGfdwpaLitz4q2Euzx2lP9Oy88vxK3HOrsISgSwKsYS4A== md5.js@^1.3.4: version "1.3.5" @@ -17153,12 +17728,13 @@ mdast-util-find-and-replace@^2.0.0: unist-util-visit-parents "^4.0.0" mdast-util-from-markdown@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.2.tgz#7c793bb96b053d12f032e37382ae989efb70ee66" - integrity sha512-gXaxv/5fGdrr9TqSMlQK7FmshK8yR9DvW3+NapMBDm44inORxIZVJa1D3yjrUT9ISu8tB/jjblEkUzyzclquNg== + version "1.2.0" + resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" + integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" mdast-util-to-string "^3.1.0" micromark "^3.0.0" micromark-util-decode-numeric-character-reference "^1.0.0" @@ -17166,8 +17742,8 @@ mdast-util-from-markdown@^1.0.0: micromark-util-normalize-identifier "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - parse-entities "^3.0.0" unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" mdast-util-gfm-autolink-literal@^1.0.0: version "1.0.2" @@ -17180,38 +17756,37 @@ mdast-util-gfm-autolink-literal@^1.0.0: micromark-util-character "^1.0.0" mdast-util-gfm-footnote@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.0.tgz#355c1e8dc9e17e871d1b3fa5da8824923fc756e0" - integrity sha512-qeg9YoS2YYP6OBmMyUFxKXb6BLwAsbGidIxgwDAXHIMYZQhIwe52L9BSJs+zP29Jp5nSERPkmG3tSwAN23/ZbQ== + version "1.0.1" + resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe" + integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw== dependencies: "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" micromark-util-normalize-identifier "^1.0.0" - unist-util-visit "^4.0.0" mdast-util-gfm-strikethrough@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.0.tgz#6cc72ef5d9539f4cee76af3f15dd0daa9e3af40f" - integrity sha512-gM9ipBUdRxYa6Yq1Hd8Otg6jEn/dRxFZ1F9ZX4QHosHOexLGqNZO2dh0A+YFbUEd10RcKjnjb4jOfJJzoXXUew== + version "1.0.1" + resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789" + integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg== dependencies: - "@types/mdast" "^3.0.3" - mdast-util-to-markdown "^1.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" mdast-util-gfm-table@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.1.tgz#07c269a219d66ec2deb6de38aed0ba1d1f9442df" - integrity sha512-NByKuaSg5+M6r9DZBPXFUmhMHGFf9u+WE76EeStN01ghi8hpnydiWBXr+qj0XCRWI7SAMNtEjGvip6zci9axQA== + version "1.0.3" + resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.3.tgz#5f880aa6ecd1a9307cd7127f3d94c631ea88da07" + integrity sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg== dependencies: markdown-table "^3.0.0" - mdast-util-to-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" mdast-util-gfm-task-list-item@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.0.tgz#a0aa2a00c893f9f006d13ba096cbc64608559c7f" - integrity sha512-dwkzOTjQe8JCCHVE3Cb0pLHTYLudf7t9WCAnb20jI8/dW+VHjgWhjtIUVA3oigNkssgjEwX+i+3XesUdCnXGyA== + version "1.0.1" + resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c" + integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA== dependencies: - "@types/mdast" "^3.0.3" - mdast-util-to-markdown "^1.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" mdast-util-gfm@^2.0.0: version "2.0.0" @@ -17240,10 +17815,10 @@ mdast-util-to-hast@^12.1.0: unist-util-position "^4.0.0" unist-util-visit "^4.0.0" -mdast-util-to-markdown@^1.0.0: - version "1.2.3" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.3.tgz#2b3af92bf0e29080927eb59a8a10cd0a7398e093" - integrity sha512-040jJYtjOUdbvYAXCfPrpLJRdvMOmR33KRqlhT4r+fEbVM+jao1RMbA8RmGeRmw8RAj3vQ+HvhIaJPijvnOwCg== +mdast-util-to-markdown@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" + integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" @@ -17263,6 +17838,11 @@ mdn-data@2.0.14: resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + mdurl@^1.0.0, mdurl@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -17274,9 +17854,9 @@ media-typer@0.3.0: integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= "mem-fs-editor@^8.1.2 || ^9.0.0": - version "9.3.0" - resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.3.0.tgz#85ce80541b1961d1d9f433e275c7cee9d0a1c9a2" - integrity sha512-QKFbPwGCh1ypmc2H8BUYpbapwT/x2AOCYZQogzSui4rUNes7WVMagQXsirPIfp18EarX0SSY9Fpg426nSjew4Q== + version "9.4.0" + resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.4.0.tgz#0cc1cf61350e33c25fc364c97fb0551eb32b8c9b" + integrity sha512-HSSOLSVRrsDdui9I6i96dDtG+oAez/4EB2g4cjSrNhgNQ3M+L57/+22NuPdORSoxvOHjIg/xeOE+C0wwF91D2g== dependencies: binaryextensions "^4.16.0" commondir "^1.0.1" @@ -17360,10 +17940,10 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== merge@^1.2.1: version "1.2.1" @@ -17408,14 +17988,15 @@ micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: uvu "^0.5.0" micromark-extension-gfm-autolink-literal@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.0.tgz#1a49a62bfcb00f9dff87ab39f3b21a108612dc24" - integrity sha512-t+K0aPK32mXypVTEKV+WRfoT/Rb7MERDgHZVRr56NXpyQQhgMk72QnK4NljYUlrgbuesH+MxiPQwThzqRDIwvA== + version "1.0.3" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" + integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== dependencies: micromark-util-character "^1.0.0" micromark-util-sanitize-uri "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-extension-gfm-footnote@^1.0.0: version "1.0.3" @@ -17431,42 +18012,45 @@ micromark-extension-gfm-footnote@^1.0.0: uvu "^0.5.0" micromark-extension-gfm-strikethrough@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.1.tgz#9f53ab4f5dc8c0525a889850bae615f074a98a27" - integrity sha512-fzGYXWz9HPWH1uHqYwdyR8XpEtuoYVHUjTdPQTnl3ETVZOQe1NXMwE3RA7AMqeON52hG+kO9g1/P1+pLONBSMQ== + version "1.0.4" + resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" + integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== dependencies: micromark-util-chunked "^1.0.0" micromark-util-classify-character "^1.0.0" micromark-util-resolve-all "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-extension-gfm-table@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.0.tgz#f0d35dbf008b6182311049f9137323d34a54c7a0" - integrity sha512-OATRuHDgEAT/aaJJRSdU12V+s01kNSnJ0jumdfLq5mPy0F5DkR3zbTSFLH4tjVYM0/kEG6umxIhHY62mFe4z5Q== + version "1.0.5" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" + integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-extension-gfm-tagfilter@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.0.tgz#a38c7c462c2007b534fcb485e9310165879654a7" - integrity sha512-GGUZhzQrOdHR8RHU2ru6K+4LMlj+pBdNuXRtw5prOflDOk2hHqDB0xEgej1AHJ2VETeycX7tzQh2EmaTUOmSKg== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" + integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== dependencies: micromark-util-types "^1.0.0" micromark-extension-gfm-task-list-item@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.0.tgz#ab38b2b4ead4e746189d6323c32cacab2c63599d" - integrity sha512-3tkHCq1NNwijtwpjYba9+rl1yvQ4xYg8iQpUAfTJRyq8MtIEsBUF/vW6B9Gh8Qwy1hE2FmpyHhP4jnFAt61zLg== + version "1.0.3" + resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" + integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-extension-gfm@^2.0.0: version "2.0.1" @@ -17492,13 +18076,14 @@ micromark-factory-destination@^1.0.0: micromark-util-types "^1.0.0" micromark-factory-label@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz#b316ec479b474232973ff13b49b576f84a6f2cbb" - integrity sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== dependencies: micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-factory-space@^1.0.0: version "1.0.0" @@ -17509,14 +18094,15 @@ micromark-factory-space@^1.0.0: micromark-util-types "^1.0.0" micromark-factory-title@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz#708f7a8044f34a898c0efdb4f55e4da66b537273" - integrity sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-factory-whitespace@^1.0.0: version "1.0.0" @@ -17568,18 +18154,19 @@ micromark-util-decode-numeric-character-reference@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-decode-string@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.0.tgz#f97946825231d9c97df767875064401774578a6e" - integrity sha512-4g5UJ8P/J8wuRKUXCcB7udQuOBXpLyvBQSLSuznfBLCG+thKG6UTwFnXfHkrr/1wddprkUbPatCzxDjrJ+5zDg== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== dependencies: + decode-named-character-reference "^1.0.0" micromark-util-character "^1.0.0" micromark-util-decode-numeric-character-reference "^1.0.0" - parse-entities "^3.0.0" + micromark-util-symbol "^1.0.0" micromark-util-encode@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz#c409ecf751a28aa9564b599db35640fccec4c068" - integrity sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== micromark-util-html-tag-name@^1.0.0: version "1.0.0" @@ -17610,31 +18197,33 @@ micromark-util-sanitize-uri@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-subtokenize@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz#6f006fa719af92776c75a264daaede0fb3943c6a" - integrity sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== dependencies: micromark-util-chunked "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + uvu "^0.5.0" micromark-util-symbol@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz#91cdbcc9b2a827c0129a177d36241bcd3ccaa34d" - integrity sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz#8bb8a092d93d326bd29fe29602799f2d0d922fd4" - integrity sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA== + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== micromark@^3.0.0: - version "3.0.5" - resolved "https://registry.npmjs.org/micromark/-/micromark-3.0.5.tgz#d24792c8a06f201d5608c106dbfadef34c299684" - integrity sha512-QfjERBnPw0G9mxhOCkkbRP0n8SX8lIBLrEKeEVceviUukqVMv3hWE4AgNTOK/W6GWqtPvvIHg2Apl3j1Dxm6aQ== + version "3.0.10" + resolved "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" + integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg== dependencies: "@types/debug" "^4.0.0" debug "^4.0.0" + decode-named-character-reference "^1.0.0" micromark-core-commonmark "^1.0.1" micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" @@ -17648,7 +18237,7 @@ micromark@^3.0.0: micromark-util-subtokenize "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.1" - parse-entities "^3.0.0" + uvu "^0.5.0" micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -17719,7 +18308,7 @@ mime@1.6.0, mime@^1.3.4: resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.2.0, mime@^2.5.0: +mime@^2.5.0: version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== @@ -17762,9 +18351,9 @@ min-document@^2.19.0: dom-walk "^0.1.0" min-indent@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" - integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= + version "1.0.1" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== mini-css-extract-plugin@^2.4.2: version "2.6.0" @@ -17783,7 +18372,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -17797,6 +18386,13 @@ minimatch@5.0.1, minimatch@^5.0.0: dependencies: brace-expansion "^2.0.1" +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimatch@^4.0.0: version "4.2.1" resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" @@ -17915,12 +18511,7 @@ mixme@^0.5.1: resolved "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== -mkdirp-classic@^0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" - integrity sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g== - -mkdirp-classic@^0.5.3: +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== @@ -17939,7 +18530,7 @@ mkdirp@0.3.0: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5: +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -18126,9 +18717,9 @@ nan@^2.14.1, nan@^2.15.0: integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== nano-css@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.1.tgz#b709383e07ad3be61f64edffacb9d98250b87a1f" - integrity sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA== + version "5.3.4" + resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.4.tgz#40af6a83a76f84204f346e8ccaa9169cdae9167b" + integrity sha512-wfcviJB6NOxDIDfr7RFn/GlaN7I/Bhe4d39ZRCJ3xvZX60LVe2qZ+rDqM49nm4YT81gAjzS+ZklhKP/Gnfnubg== dependencies: css-tree "^1.1.2" csstype "^3.0.6" @@ -18199,12 +18790,12 @@ nice-try@^1.0.4: integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nise@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/nise/-/nise-5.1.0.tgz#713ef3ed138252daef20ec035ab62b7a28be645c" - integrity sha512-W5WlHu+wvo3PaKLsJJkgPup2LrsXCcm7AWwyNZkUnn5rwPkuPBi3Iwk5SQtN0mv+K65k7nKKjwNQ30wg3wLAQQ== + version "5.1.1" + resolved "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz#ac4237e0d785ecfcb83e20f389185975da5c31f3" + integrity sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A== dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/fake-timers" "^7.0.4" + "@sinonjs/commons" "^1.8.3" + "@sinonjs/fake-timers" ">=5" "@sinonjs/text-encoding" "^0.7.1" just-extend "^4.0.2" path-to-regexp "^1.7.0" @@ -18253,7 +18844,7 @@ node-fetch@2.6.1: resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -18266,9 +18857,9 @@ node-forge@^1.0.0, node-forge@^1.2.0: integrity sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA== node-gyp@^5.0.2: - version "5.1.0" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.0.tgz#8e31260a7af4a2e2f994b0673d4e0b3866156332" - integrity sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw== + version "5.1.1" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" + integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== dependencies: env-paths "^2.2.0" glob "^7.1.4" @@ -18353,11 +18944,6 @@ node-match-path@^0.6.3: resolved "https://registry.npmjs.org/node-match-path/-/node-match-path-0.6.3.tgz#55dd8443d547f066937a0752dce462ea7dc27551" integrity sha512-fB1reOHKLRZCJMAka28hIxCwQLxGmd7WewOCBDYKpyA1KXi68A7vaGgdZAPhY2E6SXoYt3KqYCCvXLJ+O0Fu/Q== -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - node-notifier@^8.0.0: version "8.0.2" resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" @@ -18370,10 +18956,10 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-releases@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== nodemon@^2.0.2: version "2.0.15" @@ -18423,14 +19009,14 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" - integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== +normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: - hosted-git-info "^3.0.6" - resolve "^1.17.0" - semver "^7.3.2" + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" validate-npm-package-license "^3.0.1" normalize-path@^2.1.1: @@ -18445,25 +19031,20 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - normalize-url@^4.1.0: version "4.5.1" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -normalize-url@^6.0.1: +normalize-url@^6.0.1, normalize-url@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-bundled@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + version "1.1.2" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" @@ -18503,9 +19084,9 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-pack validate-npm-package-name "^3.0.0" npm-packlist@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz#40e96b2b43787d0546a574542d01e066640d09da" - integrity sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw== + version "2.2.2" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" + integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== dependencies: glob "^7.1.6" ignore-walk "^3.0.3" @@ -18532,6 +19113,18 @@ npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: npm-package-arg "^8.1.2" semver "^7.3.4" +npm-registry-fetch@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" + integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== + dependencies: + make-fetch-happen "^9.0.1" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" + npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: version "12.0.2" resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" @@ -18602,7 +19195,14 @@ npmlog@^6.0.0: gauge "^4.0.0" set-blocking "^2.0.0" -nth-check@^2.0.0: +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== @@ -18673,9 +19273,12 @@ object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0: integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -18717,13 +19320,14 @@ object.fromentries@^2.0.5: define-properties "^1.1.3" es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.0.3: - version "2.1.0" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.3" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" + integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.19.1" object.hasown@^1.1.0: version "1.1.0" @@ -18740,7 +19344,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.5: +object.values@^1.1.0, object.values@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== @@ -18840,17 +19444,17 @@ open@^8.0.0, open@^8.0.9, open@^8.4.0: is-wsl "^2.2.0" openapi-sampler@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.1.1.tgz#7bba7000a03cd8a4630bfbe5b3ef258990c78400" - integrity sha512-WAFsl5SPYuhQwaMTDFOcKhnEY1G1rmamrMiPmJdqwfl1lr81g63/befcsN9BNi0w5/R0L+hfcUj13PANEBeLgg== + version "1.2.0" + resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.2.0.tgz#2e82e4e32c1506a42f370be726d759d5275a9d4d" + integrity sha512-Y0tFg2iH7NWnNHYnesxhMfkXc7wWXyJXYMUTTxkGkfpl0U9u/ZOf6BxrdEXBD4sgs9uMlVWsbWLDLesVmSUU7Q== dependencies: "@types/json-schema" "^7.0.7" json-pointer "^0.6.1" openid-client@^4.1.1, openid-client@^4.2.1: - version "4.9.0" - resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.9.0.tgz#bdfc9194435316df419f759ce177635146b43074" - integrity sha512-ThBbvRUUZwxUKBVK2UpDNIZ3eJkvtqWI8s5Dm+naV+gJdL+yRhT+8ywqct1gy5uL+xVS5+A/nhFcpJIisH2x6Q== + version "4.9.1" + resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.9.1.tgz#4f00a9d1566c0fa08f0dd5986cf0e6b1e5d14186" + integrity sha512-DYUF07AHjI3QDKqKbn2F7RqozT4hyi4JvmpodLrq0HHoNP7t/AjeG/uqiBK1/N2PZSAQEThVjDLHSmJN4iqu/w== dependencies: aggregate-error "^3.1.0" got "^11.8.0" @@ -18916,14 +19520,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-name@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -18958,14 +19554,14 @@ p-cancelable@^1.0.0: integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-cancelable@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" - integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== + version "2.1.1" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== + version "2.2.0" + resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-filter@^2.1.0: version "2.1.0" @@ -18999,9 +19595,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.2" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" @@ -19069,12 +19665,12 @@ p-reduce@^2.0.0, p-reduce@^2.1.0: integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-retry@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.5.0.tgz#6685336b3672f9ee8174d3769a660cb5e488521d" - integrity sha512-5Hwh4aVQSu6BEP+w2zKlVXtFAaYQe1qWuVADSgoeVlLjwe/Q/AMSoRR4MDeaAfu8llT+YNbEijWu/YF3m6avkg== + version "4.6.1" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" + integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== dependencies: "@types/retry" "^0.12.0" - retry "^0.12.0" + retry "^0.13.1" p-timeout@^3.2.0: version "3.2.0" @@ -19124,11 +19720,11 @@ packet-reader@1.0.0: integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== pacote@^11.2.6: - version "11.2.6" - resolved "https://registry.npmjs.org/pacote/-/pacote-11.2.6.tgz#c0426e5d5c8d33aeea3461a75e1390f1ba78f953" - integrity sha512-xCl++Hb3aBC7LaWMimbO4xUqZVsEbKDVc6KKDIIyAeBYrmMwY1yJC2nES/lsGd8sdQLUosgBxQyuVNncZ2Ru0w== + version "11.3.5" + resolved "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" + integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== dependencies: - "@npmcli/git" "^2.0.1" + "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" "@npmcli/run-script" "^1.8.2" @@ -19141,7 +19737,7 @@ pacote@^11.2.6: npm-package-arg "^8.0.1" npm-packlist "^2.1.4" npm-pick-manifest "^6.0.0" - npm-registry-fetch "^9.0.0" + npm-registry-fetch "^11.0.0" promise-retry "^2.0.1" read-package-json-fast "^2.0.1" rimraf "^3.0.2" @@ -19198,14 +19794,13 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" @@ -19249,18 +19844,6 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-entities@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz#9ed6d6569b6cfc95ade058d683ddef239dad60dc" - integrity sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ== - dependencies: - character-entities "^2.0.0" - character-entities-legacy "^2.0.0" - character-reference-invalid "^2.0.0" - is-alphanumerical "^2.0.0" - is-decimal "^2.0.0" - is-hexadecimal "^2.0.0" - parse-filepath@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -19291,13 +19874,13 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" parse-package-name@^0.1.0: @@ -19306,20 +19889,22 @@ parse-package-name@^0.1.0: integrity sha1-P0Tdg4/rTCvkvzGLrkR313BrreQ= parse-path@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" - integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + version "4.0.3" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" + integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== dependencies: is-ssh "^1.3.0" protocols "^1.4.0" + qs "^6.9.4" + query-string "^6.13.8" -parse-url@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" - integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== +parse-url@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" + integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== dependencies: is-ssh "^1.3.0" - normalize-url "^3.3.0" + normalize-url "^6.1.0" parse-path "^4.0.0" protocols "^1.4.0" @@ -19394,9 +19979,9 @@ passport-microsoft@^0.1.0: pkginfo "0.2.x" passport-oauth1@1.x.x: - version "1.1.0" - resolved "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.1.0.tgz#a7de988a211f9cf4687377130ea74df32730c918" - integrity sha1-p96YiiEfnPRoc3cTDqdN8ycwyRg= + version "1.2.0" + resolved "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.2.0.tgz#5229d431781bf5b265bec86ce9a9cce58a756cf9" + integrity sha512-Sv2YWodC6jN12M/OXwmR4BIXeeIHjjbwYTQw4kS6tHK4zYzSEpxBgSJJnknBjICA5cj0ju3FSnG1XmHgIhYnLg== dependencies: oauth "0.9.x" passport-strategy "1.x.x" @@ -19597,9 +20182,9 @@ pause@0.0.1: integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -19607,10 +20192,10 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -peek-readable@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" - integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== pend@~1.2.0: version "1.2.0" @@ -19667,11 +20252,11 @@ pg@^8.3.0, pg@^8.4.0: pgpass "1.x" pgpass@1.x: - version "1.0.2" - resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" - integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= + version "1.0.5" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== dependencies: - split "^1.0.0" + split2 "^4.1.0" pgtools@^0.3.0: version "0.3.2" @@ -19694,9 +20279,9 @@ picocolors@^1.0.0: integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" @@ -19762,12 +20347,10 @@ pino@^5.12.2: quick-format-unescaped "^3.0.3" sonic-boom "^0.7.5" -pirates@^4.0.0, pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" +pirates@^4.0.1, pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pixelmatch@^4.0.2: version "4.0.2" @@ -19831,109 +20414,107 @@ posix-character-classes@^0.1.0: resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" - integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== +postcss-calc@^8.2.0: + version "8.2.4" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" -postcss-colormin@^5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz#6e444a806fd3c578827dbad022762df19334414d" - integrity sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA== +postcss-colormin@^5.2.5: + version "5.2.5" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.5.tgz#d1fc269ac2ad03fe641d462b5d1dada35c69968a" + integrity sha512-+X30aDaGYq81mFqwyPpnYInsZQnNpdxMX0ajlY7AExCexEFkPVV+KrO7kXwayqEWL2xwEbNQ4nUO0ZsRWGnevg== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" colord "^2.9.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-convert-values@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz#879b849dc3677c7d6bc94b6a2c1a3f0808798059" - integrity sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg== +postcss-convert-values@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.4.tgz#3e74dd97c581f475ae7b4500bc0a7c4fb3a6b1b6" + integrity sha512-bugzSAyjIexdObovsPZu/sBCTHccImJxLyFgeV0MmNBm/Lw5h5XnjfML6gzEmJ3A6nyfCW7hb1JXzcsA4Zfbdw== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" - integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== +postcss-discard-comments@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.3.tgz#011acb63418d600fdbe18804e1bbecb543ad2f87" + integrity sha512-6W5BemziRoqIdAKT+1QjM4bNcJAQ7z7zk073730NHg4cUXh3/rQHHj7pmYxUB9aGhuRhBiUf0pXvIHkRwhQP0Q== -postcss-discard-duplicates@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" - integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== +postcss-discard-duplicates@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.3.tgz#10f202a4cfe9d407b73dfea7a477054d21ea0c1f" + integrity sha512-vPtm1Mf+kp7iAENTG7jI1MN1lk+fBqL5y+qxyi4v3H+lzsXEdfS3dwUZD45KVhgzDEgduur8ycB4hMegyMTeRw== -postcss-discard-empty@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" - integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== +postcss-discard-empty@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.3.tgz#ec185af4a3710b88933b0ff751aa157b6041dd6a" + integrity sha512-xGJugpaXKakwKI7sSdZjUuN4V3zSzb2Y0LOlmTajFbNinEjTfVs9PFW2lmKBaC/E64WwYppfqLD03P8l9BuueA== -postcss-discard-overridden@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" - integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== +postcss-discard-overridden@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.4.tgz#cc999d6caf18ea16eff8b2b58f48ec3ddee35c9c" + integrity sha512-3j9QH0Qh1KkdxwiZOW82cId7zdwXVQv/gRXYDnwx5pBtR1sTkU4cXRK9lp5dSdiM0r0OICO/L8J6sV1/7m0kHg== postcss-load-config@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.0.1.tgz#d214bf9cfec1608ffaf0f4161b3ba20664ab64b9" - integrity sha512-/pDHe30UYZUD11IeG8GWx9lNtu1ToyTsZHnyy45B4Mrwr/Kb6NgYl7k753+05CJNKnjbwh4975amoPJ+TEjHNQ== + version "3.1.3" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz#21935b2c43b9a86e6581a576ca7ee1bde2bd1d23" + integrity sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw== dependencies: - cosmiconfig "^7.0.0" - import-cwd "^3.0.0" + lilconfig "^2.0.4" + yaml "^1.10.2" -postcss-merge-longhand@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz#41f4f3270282ea1a145ece078b7679f0cef21c32" - integrity sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw== +postcss-merge-longhand@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.6.tgz#090e60d5d3b3caad899f8774f8dccb33217d2166" + integrity sha512-rkmoPwQO6ymJSmWsX6l2hHeEBQa7C4kJb9jyi5fZB1sE8nSCv7sqchoYPixRwX/yvLoZP2y6FA5kcjiByeJqDg== dependencies: - postcss-value-parser "^4.1.0" - stylehacks "^5.0.1" + postcss-value-parser "^4.2.0" + stylehacks "^5.0.3" -postcss-merge-rules@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz#b5cae31f53129812a77e3eb1eeee448f8cf1a1db" - integrity sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg== +postcss-merge-rules@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.6.tgz#26b37411fe1e80202fcef61cab027265b8925f2b" + integrity sha512-nzJWJ9yXWp8AOEpn/HFAW72WKVGD2bsLiAmgw4hDchSij27bt6TF+sIK0cJUBAYT3SGcjtGGsOR89bwkkMuMgQ== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-utils "^2.0.1" + cssnano-utils "^3.0.2" postcss-selector-parser "^6.0.5" -postcss-minify-font-values@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" - integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== +postcss-minify-font-values@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.4.tgz#627d824406b0712243221891f40a44fffe1467fd" + integrity sha512-RN6q3tyuEesvyCYYFCRGJ41J1XFvgV+dvYGHr0CeHv8F00yILlN8Slf4t8XW4IghlfZYCeyRrANO6HpJ948ieA== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e" - integrity sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q== +postcss-minify-gradients@^5.0.6: + version "5.0.6" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.6.tgz#b07cef51a93f075e94053fd972ff1cba2eaf6503" + integrity sha512-E/dT6oVxB9nLGUTiY/rG5dX9taugv9cbLNTFad3dKxOO+BQg25Q/xo2z2ddG+ZB1CbkZYaVwx5blY8VC7R/43A== dependencies: colord "^2.9.1" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.0.2" + postcss-value-parser "^4.2.0" -postcss-minify-params@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz#1b644da903473fbbb18fbe07b8e239883684b85c" - integrity sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg== +postcss-minify-params@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.5.tgz#86cb624358cd45c21946f8c317893f0449396646" + integrity sha512-YBNuq3Rz5LfLFNHb9wrvm6t859b8qIqfXsWeK7wROm3jSKNpO1Y5e8cOyBv6Acji15TgSrAwb3JkVNCqNyLvBg== dependencies: - alphanum-sort "^1.0.2" browserslist "^4.16.6" - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.0.2" + postcss-value-parser "^4.2.0" -postcss-minify-selectors@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" - integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== +postcss-minify-selectors@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.3.tgz#6ac12d52aa661fd509469d87ab2cebb0a1e3a1b5" + integrity sha512-9RJfTiQEKA/kZhMaEXND893nBqmYQ8qYa/G+uPdVnXF6D/FzpfI6kwBtWEcHx5FqDbA79O9n6fQJfrIj6M8jvQ== dependencies: - alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: @@ -19965,11 +20546,11 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-modules@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.0.0.tgz#2bc7f276ab88f3f1b0fadf6cbd7772d43b5f3b9b" - integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw== + version "4.3.0" + resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.0.tgz#1cb32f16a8cfffe2b989598f8135eb6427106ec7" + integrity sha512-zoUttLDSsbWDinJM9jH37o7hulLRyEgH6fZm2PchxN7AZ8rkdWiALyNhnQ7+jg7cX9f10m6y5VhHsrjO0Mf/DA== dependencies: - generic-names "^2.0.1" + generic-names "^4.0.0" icss-replace-symbols "^1.1.0" lodash.camelcase "^4.3.0" postcss-modules-extract-imports "^3.0.0" @@ -19978,129 +20559,113 @@ postcss-modules@^4.0.0: postcss-modules-values "^4.0.0" string-hash "^1.1.1" -postcss-normalize-charset@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" - integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== - -postcss-normalize-display-values@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" - integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-positions@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" - integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-normalize-repeat-style@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" - integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-string@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" - integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== - dependencies: - postcss-value-parser "^4.1.0" - -postcss-normalize-timing-functions@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" - integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== - dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" - -postcss-normalize-unicode@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" - integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== - dependencies: - browserslist "^4.16.0" - postcss-value-parser "^4.1.0" - -postcss-normalize-url@^5.0.3: +postcss-normalize-charset@^5.0.3: version "5.0.3" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.3.tgz#42eca6ede57fe69075fab0f88ac8e48916ef931c" - integrity sha512-qWiUMbvkRx3kc1Dp5opzUwc7MBWZcSDK2yofCmdvFBCpx+zFPkxBC1FASQ59Pt+flYfj/nTZSkmF56+XG5elSg== + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.3.tgz#719fb9f9ca9835fcbd4fed8d6e0d72a79e7b5472" + integrity sha512-iKEplDBco9EfH7sx4ut7R2r/dwTnUqyfACf62Unc9UiyFuI7uUqZZtY+u+qp7g8Qszl/U28HIfcsI3pEABWFfA== + +postcss-normalize-display-values@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.3.tgz#94cc82e20c51cc4ffba6b36e9618adc1e50db8c1" + integrity sha512-FIV5FY/qs4Ja32jiDb5mVj5iWBlS3N8tFcw2yg98+8MkRgyhtnBgSC0lxU+16AMHbjX5fbSJgw5AXLMolonuRQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.4.tgz#4001f38c99675437b83277836fb4291887fcc6cc" + integrity sha512-qynirjBX0Lc73ROomZE3lzzmXXTu48/QiEzKgMeqh28+MfuHLsuqC9po4kj84igZqqFGovz8F8hf44hA3dPYmQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.4.tgz#d005adf9ee45fae78b673031a376c0c871315145" + integrity sha512-Innt+wctD7YpfeDR7r5Ik6krdyppyAg2HBRpX88fo5AYzC1Ut/l3xaxACG0KsbX49cO2n5EB13clPwuYVt8cMA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.4.tgz#b5e00a07597e7aa8a871817bfeac2bfaa59c3333" + integrity sha512-Dfk42l0+A1CDnVpgE606ENvdmksttLynEqTQf5FL3XGQOyqxjbo25+pglCUvziicTxjtI2NLUR6KkxyUWEVubQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.3.tgz#47210227bfcba5e52650d7a18654337090de7072" + integrity sha512-QRfjvFh11moN4PYnJ7hia4uJXeFotyK3t2jjg8lM9mswleGsNw2Lm3I5wO+l4k1FzK96EFwEVn8X8Ojrp2gP4g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.4.tgz#02866096937005cdb2c17116c690f29505a1623d" + integrity sha512-W79Regn+a+eXTzB+oV/8XJ33s3pDyFTND2yDuUCo0Xa3QSy1HtNIfRVPXNubHxjhlqmMFADr3FSCHT84ITW3ig== + dependencies: + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.5.tgz#c39efc12ff119f6f45f0b4f516902b12c8080e3a" + integrity sha512-Ws3tX+PcekYlXh+ycAt0wyzqGthkvVtZ9SZLutMVvHARxcpu4o7vvXcNoiNKyjKuWecnjS6HDI3fjBuDr5MQxQ== dependencies: - is-absolute-url "^3.0.3" normalize-url "^6.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" - integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== +postcss-normalize-whitespace@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.4.tgz#1d477e7da23fecef91fc4e37d462272c7b55c5ca" + integrity sha512-wsnuHolYZjMwWZJoTC9jeI2AcjA67v4UuidDrPN9RnX8KIZfE+r2Nd6XZRwHVwUiHmRvKQtxiqo64K+h8/imaw== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" - integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== +postcss-ordered-values@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.5.tgz#e878af822a130c3f3709737e24cb815ca7c6d040" + integrity sha512-mfY7lXpq+8bDEHfP+muqibDPhZ5eP9zgBEF9XRvoQgXcQe2Db3G1wcvjbnfjXG6wYsl+0UIjikqq4ym1V2jGMQ== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.0.2" + postcss-value-parser "^4.2.0" -postcss-reduce-initial@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" - integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== +postcss-reduce-initial@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.3.tgz#68891594defd648253703bbd8f1093162f19568d" + integrity sha512-c88TkSnQ/Dnwgb4OZbKPOBbCaauwEjbECP5uAuFPOzQ+XdjNjRH7SG0dteXrpp1LlIFEKK76iUGgmw2V0xeieA== dependencies: - browserslist "^4.16.0" + browserslist "^4.16.6" caniuse-api "^3.0.0" -postcss-reduce-transforms@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" - integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== +postcss-reduce-transforms@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.4.tgz#717e72d30befe857f7d2784dba10eb1157863712" + integrity sha512-VIJB9SFSaL8B/B7AXb7KHL6/GNNbbCHslgdzS9UDfBZYIA2nx8NLY7iD/BXFSO/1sRUILzBTfHCoW5inP37C5g== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.4" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.5: - version "6.0.6" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.9" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30" - integrity sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA== +postcss-svgo@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.4.tgz#cfa8682f47b88f7cd75108ec499e133b43102abf" + integrity sha512-yDKHvULbnZtIrRqhZoA+rxreWpee28JSRH/gy9727u0UCgtpv1M/9WEWY3xySlFa0zQJcqf6oCBJPR5NwkmYpg== dependencies: - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" svgo "^2.7.0" -postcss-unique-selectors@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz#5d6893daf534ae52626708e0d62250890108c0c1" - integrity sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA== +postcss-unique-selectors@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.4.tgz#08e188126b634ddfa615fb1d6c262bafdd64826e" + integrity sha512-5ampwoSDJCxDPoANBIlMgoBcYUHnhaiuLYJR5pj1DLnYQvMRVyFuTA5C3Bvt+aHtiqWpJkD/lXT50Vo1D0ZsAQ== dependencies: - alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-value-parser@^3.3.0: @@ -20108,7 +20673,7 @@ postcss-value-parser@^3.3.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -20133,9 +20698,9 @@ postgres-bytea@~1.0.0: integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= postgres-date@~1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz#710b27de5f27d550f6e80b5d34f7ba189213c2ee" - integrity sha512-pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA== + version "1.0.7" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== postgres-interval@^1.1.0: version "1.2.0" @@ -20226,31 +20791,25 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^27.0.2: - version "27.3.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5" - integrity sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA== +pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - "@jest/types" "^27.2.5" ansi-regex "^5.0.1" ansi-styles "^5.0.0" react-is "^17.0.1" -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== +printj@~1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz#9af6b1d55647a1587ac44f4c1654a4b95b8e12cb" + integrity sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg== prismjs@^1.27.0, prismjs@~1.27.0: version "1.27.0" resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -private@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - proc-log@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" @@ -20345,9 +20904,9 @@ properties-reader@^2.2.0: mkdirp "^1.0.4" property-expr@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910" - integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg== + version "2.0.5" + resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" + integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== property-information@^5.0.0: version "5.6.0" @@ -20357,19 +20916,19 @@ property-information@^5.0.0: xtend "^4.0.0" property-information@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz#7c668d9f2b9cb63bc3e105d8b8dfee7221a17800" - integrity sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg== + version "6.1.1" + resolved "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" + integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== proto-list@~1.2.1: version "1.2.4" resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -proto3-json-serializer@^0.1.5: - version "0.1.6" - resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.6.tgz#67cf3b8d5f4c8bebfc410698ad3b1ed64da39c7b" - integrity sha512-tGbV6m6Kad8NqxMh5hw87euPS0YoZSAOIfvR01zYkQV8Gpx1V/8yU/0gCKCvfCkhAJsjvzzhnnsdQxA1w7PSog== +proto3-json-serializer@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.8.tgz#f80f9afc1efe5ed9a9856bbbd17dc7cabd7ce9a3" + integrity sha512-ACilkB6s1U1gWnl5jtICpnDai4VCxmI9GFxuEaYdxtDG2oVI3sVFIUsvUZcQbJgtPM6p+zqKbjTKQZp6Y4FpQw== dependencies: protobufjs "^6.11.2" @@ -20393,9 +20952,9 @@ protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.8.6: long "^4.0.0" protocols@^1.1.0, protocols@^1.4.0: - version "1.4.7" - resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" - integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== + version "1.4.8" + resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" + integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== proxy-addr@~2.0.7: version "2.0.7" @@ -20449,11 +21008,6 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -puka@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz#a2df782b7eb4cf9564e4c93a5da422de0dfacc02" - integrity sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g== - pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -20511,7 +21065,7 @@ puppeteer@^13.1.1: unbzip2-stream "1.4.3" ws "8.5.0" -q@^1.5.1: +q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -20526,7 +21080,7 @@ qs@6.9.7: resolved "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== -qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: +qs@^6.10.1, qs@^6.10.2, qs@^6.10.3, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: version "6.10.3" resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== @@ -20534,14 +21088,24 @@ qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^6.13.8: + version "6.14.1" + resolved "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" query-string@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/query-string/-/query-string-7.0.0.tgz#aaad2c8d5c6a6d0c6afada877fecbd56af79e609" - integrity sha512-Iy7moLybliR5ZgrK/1R3vjrXq03S13Vz4Rbm5Jg3EFq1LUmQppto0qtXz4vqZ386MSRjZgnTSZ9QC+NZOSd/XA== + version "7.1.1" + resolved "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" + integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w== dependencies: decode-uri-component "^0.2.0" filter-obj "^1.1.0" @@ -20563,6 +21127,11 @@ querystringify@^2.1.1: resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + quick-format-unescaped@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz#fb3e468ac64c01d22305806c39f121ddac0d1fb9" @@ -20579,9 +21148,9 @@ quick-lru@^5.1.1: integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== raf-schd@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" - integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== + version "4.0.3" + resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a" + integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== raf@^3.4.0: version "3.4.1" @@ -20625,7 +21194,7 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.3: +raw-body@2.4.3, raw-body@^2.4.1: version "2.4.3" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== @@ -20635,16 +21204,6 @@ raw-body@2.4.3: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@^2.4.1: - version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - rc-progress@3.2.4: version "3.2.4" resolved "https://registry.npmjs.org/rc-progress/-/rc-progress-3.2.4.tgz#4036acdae2566438545bc4df2203248babaf7549" @@ -20655,9 +21214,9 @@ rc-progress@3.2.4: rc-util "^5.16.1" rc-util@^5.16.1: - version "5.16.1" - resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.16.1.tgz#374db7cb735512f05165ddc3d6b2c61c21b8b4e3" - integrity sha512-kSCyytvdb3aRxQacS/71ta6c+kBWvM1v8/2h9d/HaNWauc3qB8pLnF20PJ8NajkNN8gb+rR1l0eWO+D4Pz+LLQ== + version "5.18.1" + resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.18.1.tgz#80bd1450b5254655d2fbea63e3d34f6871e9be79" + integrity sha512-24xaSrMZUEKh1+suDOtJWfPe9E6YrwryViZcoPO0miJTKzP4qhUlV5AAlKQ82AJilz/AOHfi3l6HoX8qa1ye8w== dependencies: "@babel/runtime" "^7.12.5" react-is "^16.12.0" @@ -20674,15 +21233,15 @@ rc@^1.2.7, rc@^1.2.8: strip-json-comments "~2.0.1" react-beautiful-dnd@^13.0.0: - version "13.0.0" - resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40" - integrity sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg== + version "13.1.0" + resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.0.tgz#ec97c81093593526454b0de69852ae433783844d" + integrity sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA== dependencies: - "@babel/runtime" "^7.8.4" + "@babel/runtime" "^7.9.2" css-box-model "^1.2.0" memoize-one "^5.1.1" raf-schd "^4.0.2" - react-redux "^7.1.1" + react-redux "^7.2.0" redux "^4.0.4" use-memo-one "^1.1.1" @@ -20747,9 +21306,9 @@ react-double-scrollbar@0.0.15: integrity sha1-6RWrjLO5WYdwdfSUNt6/2wQoj+Q= react-error-boundary@^3.1.0: - version "3.1.3" - resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.3.tgz#276bfa05de8ac17b863587c9e0647522c25e2a0b" - integrity sha512-A+F9HHy9fvt9t8SNDlonq01prnU8AmkjvGKV4kk8seB9kU3xMEO8J/PQlLVmoOIDODl5U2kufSBs4vrWIqhsAA== + version "3.1.4" + resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" + integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== dependencies: "@babel/runtime" "^7.12.5" @@ -20823,7 +21382,7 @@ react-is@^16.10.2, react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.0, react-is@^17.0.1: +"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.0, react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -20862,17 +21421,17 @@ react-query@^3.34.16: broadcast-channel "^3.4.1" match-sorter "^6.0.2" -react-redux@^7.1.1, react-redux@^7.2.4: - version "7.2.5" - resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8" - integrity sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg== +react-redux@^7.2.0, react-redux@^7.2.4: + version "7.2.6" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" + integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== dependencies: - "@babel/runtime" "^7.12.1" - "@types/react-redux" "^7.1.16" + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" hoist-non-react-statics "^3.3.2" loose-envify "^1.4.0" prop-types "^15.7.2" - react-is "^16.13.1" + react-is "^17.0.2" react-resize-detector@^2.3.0: version "2.3.0" @@ -20916,14 +21475,14 @@ react-router@^6.0.0-beta.0: history "^5.2.0" react-side-effect@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz#1ce4a8b4445168c487ed24dab886421f74d380d3" - integrity sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg== + version "2.1.1" + resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" + integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== react-smooth@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.5.tgz#94ae161d7951cdd893ccb7099d031d342cb762ad" - integrity sha512-eW057HT0lFgCKh8ilr0y2JaH2YbNcuEdFpxyg7Gf/qDKk9hqGMyXryZJ8iMGJEuKH0+wxS0ccSsBBB3W8yCn8w== + version "1.0.6" + resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.6.tgz#18b964f123f7bca099e078324338cd8739346d0a" + integrity sha512-B2vL4trGpNSMSOzFiAul9kFAsxTukL9Wyy9EXtkQy3GJr6sZqW9e1nShdVOJ3hRYamPZ94O17r3Q0bjSw3UYtg== dependencies: lodash "~4.17.4" prop-types "^15.6.0" @@ -20958,15 +21517,22 @@ react-syntax-highlighter@^15.4.5: refractor "^3.6.0" react-test-renderer@^16.13.1: - version "16.13.1" - resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" - integrity sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ== + version "16.14.0" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" react-is "^16.8.6" scheduler "^0.19.1" +react-text-truncate@^0.17.0: + version "0.17.0" + resolved "https://registry.npmjs.org/react-text-truncate/-/react-text-truncate-0.17.0.tgz#a820bfd9d084caf85d900a011fe2ab4216fc3821" + integrity sha512-EUL7s47XApOgbR//t/9X+fXg1feS47RcTywNXEQZAlNL0vrCIYGye1C+mpUgGIIXKTkabweid6z7s16AkTo5sA== + dependencies: + prop-types "^15.5.7" + react-text-truncate@^0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/react-text-truncate/-/react-text-truncate-0.18.0.tgz#c65f4be660d24734badb903a4832467eddcf8058" @@ -20985,9 +21551,9 @@ react-transition-group@2.9.0, react-transition-group@^2.5.0: react-lifecycles-compat "^3.0.4" react-transition-group@^4.0.0, react-transition-group@^4.4.0: - version "4.4.1" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" - integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + version "4.4.2" + resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" @@ -21045,7 +21611,7 @@ read-cmd-shim@^2.0.0: resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== -read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: +read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -21054,21 +21620,29 @@ read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: npm-normalize-package-bin "^1.0.1" read-package-json@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" - integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== + version "2.1.2" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== dependencies: glob "^7.1.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" normalize-package-data "^2.0.0" npm-normalize-package-bin "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" read-package-json@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.0.tgz#2219328e77c9be34f035a4ce58d1fb8e2979adf9" - integrity sha512-4TnJZ5fnDs+/3deg1AuMExL4R1SFNRLQeOhV9c8oDKm3eoG6u8xU0r0mNNRJHi3K6B+jXmT7JOhwhAklWw9SSQ== + version "3.0.1" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" + integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^3.0.0" + npm-normalize-package-bin "^1.0.0" + +read-package-json@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" + integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== dependencies: glob "^7.1.1" json-parse-even-better-errors "^2.3.0" @@ -21208,9 +21782,9 @@ readdirp@~3.6.0: picomatch "^2.2.1" recast@^0.20.3, recast@^0.20.4: - version "0.20.4" - resolved "https://registry.npmjs.org/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" - integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== + version "0.20.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== dependencies: ast-types "0.14.2" esprima "~4.0.0" @@ -21242,9 +21816,9 @@ recharts@^1.8.5: reduce-css-calc "^1.3.0" recharts@^2.1.5: - version "2.1.8" - resolved "https://registry.npmjs.org/recharts/-/recharts-2.1.8.tgz#ca8774fcec5f5d7ec15dedd638db9ee12faf1c09" - integrity sha512-Wi7ufdDGyvy/BPf1za1Ok7VeWB2KtEejaewO9ulmlUhvn5l5RPS4AOkrUfhtMRTTjgJ4K6AbWMDpwtDjczUHJA== + version "2.1.9" + resolved "https://registry.npmjs.org/recharts/-/recharts-2.1.9.tgz#a52d411a7d822d118f7754cfc9c50db8fab46fb9" + integrity sha512-VozH5uznUvGqD7n224FGj7cmMAenlS0HPCs+7r2HeeHiQK6un6z0CTZfWVAB860xbcr4m+BN/EGMPZmYWd34Rg== dependencies: "@types/d3-interpolate" "^2.0.0" "@types/d3-scale" "^3.0.0" @@ -21357,17 +21931,17 @@ refractor@^3.6.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== dependencies: - regenerate "^1.4.0" + regenerate "^1.4.2" -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.10.5: version "0.10.5" @@ -21385,12 +21959,11 @@ regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + version "0.14.5" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -21413,22 +21986,22 @@ regexpp@^3.2.0: resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" registry-auth-token@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" - integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + version "4.2.1" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== dependencies: rc "^1.2.8" @@ -21439,15 +22012,15 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: jsesc "~0.5.0" @@ -21504,9 +22077,9 @@ remark-gfm@^3.0.1: unified "^10.0.0" remark-parse@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz#65e2b2b34d8581d36b97f12a2926bb2126961cb4" - integrity sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ== + version "10.0.1" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== dependencies: "@types/mdast" "^3.0.0" mdast-util-from-markdown "^1.0.0" @@ -21562,9 +22135,9 @@ renderkid@^3.0.0: strip-ansi "^6.0.1" repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" @@ -21659,9 +22232,9 @@ resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== resolve-alpn@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" - integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== + version "1.2.1" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-cwd@^3.0.0: version "3.0.0" @@ -21686,11 +22259,11 @@ resolve-url@^0.2.1: integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0: - version "1.21.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" - integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== + version "1.22.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: - is-core-module "^2.8.0" + is-core-module "^2.8.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -21765,7 +22338,12 @@ retry-request@^4.0.0, retry-request@^4.2.2: debug "^4.1.1" extend "^3.0.2" -retry@0.12.0, retry@^0.12.0: +retry@0.13.1, retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +retry@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= @@ -21776,9 +22354,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfc4648@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/rfc4648/-/rfc4648-1.4.0.tgz#c75b2856ad2e2d588b6ddb985d556f1f7f2a2abd" - integrity sha512-3qIzGhHlMHA6PoT6+cdPKZ+ZqtxkIvg8DZGKA5z6PQ33/uuhoJ+Ws/D/J9rXW6gXodgH8QYlz2UCl+sdUDmNIg== + version "1.5.1" + resolved "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.1.tgz#b0b16756e33d9de8c0c7833e94b28e627ec372a4" + integrity sha512-60e/YWs2/D3MV1ErdjhJHcmlgnyLUiG4X/14dgsfm9/zmCWLN16xI6YqJYSCd/OANM7bUNzJqPY5B8/02S9Ibw== rfdc@^1.3.0: version "1.3.0" @@ -21831,14 +22409,21 @@ rollup-plugin-dts@^4.0.1: "@babel/code-frame" "^7.16.7" rollup-plugin-esbuild@^4.7.2: - version "4.7.2" - resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.7.2.tgz#1a496a9f96257cdf5ed800e818932859232471f8" - integrity sha512-rBS2hTedtG+wL/yyIWQ84zju5rtfF15gkaCLN0vsWGmBdRd0UPm52meAwkmrsPQf3mB/H2o+k9Q8Ce8A66SE5A== + version "4.8.2" + resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.8.2.tgz#c097b93cd4b622e62206cadb5797589f548cf48c" + integrity sha512-wsaYNOjzTb6dN1qCIZsMZ7Q0LWiPJklYs2TDI8vJA2LUbvtPUY+17TC8C0vSat3jPMInfR9XWKdA7ttuwkjsGQ== dependencies: "@rollup/pluginutils" "^4.1.1" + debug "^4.3.3" + es-module-lexer "^0.9.3" joycon "^3.0.1" jsonc-parser "^3.0.0" +rollup-plugin-peer-deps-external@^2.2.2: + version "2.2.4" + resolved "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz#8a420bbfd6dccc30aeb68c9bf57011f2f109570d" + integrity sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g== + rollup-plugin-postcss@*, rollup-plugin-postcss@^4.0.0: version "4.0.2" resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" @@ -21886,23 +22471,23 @@ rsvp@^4.8.4: integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== rtl-css-js@^1.14.0: - version "1.14.0" - resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d" - integrity sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg== + version "1.15.0" + resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.15.0.tgz#680ed816e570a9ebccba9e1cd0f202c6a8bb2dc0" + integrity sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew== dependencies: "@babel/runtime" "^7.1.2" run-async@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" - integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== - dependencies: - is-promise "^2.1.0" + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" run-script-webpack-plugin@^0.0.11: version "0.0.11" @@ -21916,10 +22501,10 @@ rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.2: - version "7.5.5" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== +rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.4: + version "7.5.4" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" + integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== dependencies: tslib "^2.1.0" @@ -21935,7 +22520,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -21959,11 +22544,6 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -safe-stable-stringify@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz#c8a220ab525cd94e60ebf47ddc404d610dc5d84a" - integrity sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw== - safe-stable-stringify@^2.2.0, safe-stable-stringify@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" @@ -22001,7 +22581,7 @@ sax@1.2.1: resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= -sax@>=0.6.0: +sax@>=0.6.0, sax@~1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -22063,9 +22643,9 @@ scoped-regex@^2.0.0: integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== screenfull@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8" - integrity sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA== + version "5.2.0" + resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" + integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== scuid@^1.1.0: version "1.1.0" @@ -22368,12 +22948,12 @@ simple-swizzle@^0.2.2: is-arrayish "^0.3.1" sinon@^11.1.1: - version "11.1.1" - resolved "https://registry.npmjs.org/sinon/-/sinon-11.1.1.tgz#99a295a8b6f0fadbbb7e004076f3ae54fc6eab91" - integrity sha512-ZSSmlkSyhUWbkF01Z9tEbxZLF/5tRC9eojCdFh33gtQaP7ITQVaMWQHGuFM7Cuf/KEfihuh1tTl3/ABju3AQMg== + version "11.1.2" + resolved "https://registry.npmjs.org/sinon/-/sinon-11.1.2.tgz#9e78850c747241d5c59d1614d8f9cbe8840e8674" + integrity sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw== dependencies: "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" "^7.1.0" + "@sinonjs/fake-timers" "^7.1.2" "@sinonjs/samsam" "^6.0.2" diff "^5.0.0" nise "^5.1.0" @@ -22542,20 +23122,20 @@ socket.io@^2.2.0: socket.io-parser "~3.4.0" sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + version "0.3.24" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" - uuid "^3.4.0" + uuid "^8.3.2" websocket-driver "^0.7.4" socks-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" - integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== + version "5.0.1" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" + integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== dependencies: - agent-base "6" + agent-base "^6.0.2" debug "4" socks "^2.3.3" @@ -22636,9 +23216,9 @@ source-map-support@^0.5.10, source-map-support@^0.5.16, source-map-support@^0.5. source-map "^0.6.0" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + version "0.4.1" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== source-map@0.5.6: version "0.5.6" @@ -22689,30 +23269,30 @@ spawndamnit@^2.0.0: signal-exit "^3.0.2" spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.11" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== spdy-transport@^3.0.0: version "3.0.0" @@ -22761,6 +23341,11 @@ split2@^3.0.0: dependencies: readable-stream "^3.0.0" +split2@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" + integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== + split@0.3: version "0.3.3" resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -22801,9 +23386,9 @@ ssh-remote-port-forward@^1.0.4: ssh2 "^1.4.0" ssh2@^1.4.0: - version "1.5.0" - resolved "https://registry.npmjs.org/ssh2/-/ssh2-1.5.0.tgz#4dc559ba98a1cbb420e8d42998dfe35d0eda92bc" - integrity sha512-iUmRkhH9KGeszQwDW7YyyqjsMTf4z+0o48Cp4xOwlY5LjtbIAvyd3fwnsoUZW/hXmTCRA3yt7S/Jb9uVjErVlA== + version "1.6.0" + resolved "https://registry.npmjs.org/ssh2/-/ssh2-1.6.0.tgz#61aebc3a6910fe488f9c85cd8355bdf8d4724e05" + integrity sha512-lxc+uvXqOxyQ99N2M7k5o4pkYDO5GptOTYduWw7hIM41icxvoBcCNHcj+LTKrjkL0vFcAl+qfZekthoSFRJn2Q== dependencies: asn1 "^0.2.4" bcrypt-pbkdf "^1.0.2" @@ -22812,9 +23397,9 @@ ssh2@^1.4.0: nan "^2.15.0" sshpk@^1.14.1, sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -22851,16 +23436,16 @@ stack-trace@0.0.x: integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + version "2.0.5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== dependencies: escape-string-regexp "^2.0.0" stackframe@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" - integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== + version "1.2.1" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" + integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== stacktrace-gps@^3.0.4: version "3.0.4" @@ -22940,7 +23525,7 @@ stream-combiner@~0.0.4: dependencies: duplexer "~0.1.1" -stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: +stream-events@^1.0.4, stream-events@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== @@ -22963,7 +23548,7 @@ stream-shift@^1.0.0: resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -stream-transform@^2.0.1: +stream-transform@^2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3" integrity sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ== @@ -22998,9 +23583,9 @@ string-hash@^1.1.1: integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" @@ -23031,15 +23616,6 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3" @@ -23093,7 +23669,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@5.2.0, strip-ansi@^5.1.0: +strip-ansi@5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -23197,12 +23773,12 @@ strong-log-transformer@^2.1.0: through "^2.3.4" strtok3@^6.2.4: - version "6.2.4" - resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" - integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== + version "6.3.0" + resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== dependencies: "@tokenizer/token" "^0.3.0" - peek-readable "^4.0.1" + peek-readable "^4.1.0" stubs@^3.0.0: version "3.0.0" @@ -23231,18 +23807,18 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -stylehacks@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" - integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== +stylehacks@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.3.tgz#2ef3de567bfa2be716d29a93bf3d208c133e8d04" + integrity sha512-ENcUdpf4yO0E1rubu8rkxI+JGQk4CgjchynZ4bDBJDfqdy+uhTRSWb8/F3Jtu+Bw5MW45Po3/aQGeIyyxgQtxg== dependencies: - browserslist "^4.16.0" + browserslist "^4.16.6" postcss-selector-parser "^6.0.4" stylis@^4.0.6: - version "4.0.7" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.7.tgz#412a90c28079417f3d27c028035095e4232d2904" - integrity sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA== + version "4.0.13" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" + integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== subscriptions-transport-ws@^0.11.0: version "0.11.0" @@ -23335,9 +23911,9 @@ supports-color@^9.2.1: integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + version "2.2.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" @@ -23352,6 +23928,25 @@ svg-parser@^2.0.2: resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== +svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + svgo@^2.5.0, svgo@^2.7.0: version "2.8.0" resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" @@ -23386,9 +23981,9 @@ swagger-client@^3.18.4: url "~0.11.0" swagger-ui-react@^4.1.3: - version "4.6.1" - resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.6.1.tgz#25d0dc380f73fcba00df214f50adc940910f480c" - integrity sha512-NIVzdzzaHnoG6NxK15A0wpd7TiGPpcK4BBh5mgLq6/hCrytjpeQZrkSM1Yf0p1fD7+rkvKcI+b33w/6RCLt3yw== + version "4.5.1" + resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.5.1.tgz#8dd36f56a4bca47778539a1637d73578794ad1f6" + integrity sha512-nQ+erop7oiUvkYgUplGjDOs5LPBarnNNC4OW1IWqwo1avWFOhzATDlEOXbiE2SSDu5opC5HePX7cKIajBoQu9Q== dependencies: "@babel/runtime-corejs3" "^7.16.8" "@braintree/sanitize-url" "^5.0.2" @@ -23418,7 +24013,7 @@ swagger-ui-react@^4.1.3: serialize-error "^8.1.0" sha.js "^2.4.11" swagger-client "^3.18.4" - url-parse "^1.5.8" + url-parse "^1.5.6" xml "=1.0.1" xml-but-prettier "^1.0.1" zenscroll "^4.0.2" @@ -23435,7 +24030,7 @@ swr@^1.1.2: resolved "https://registry.npmjs.org/swr/-/swr-1.2.2.tgz#6cae09928d30593a7980d80f85823e57468fac5d" integrity sha512-ky0BskS/V47GpW8d6RU7CPsr6J8cr7mQD6+do5eky3bM0IyJaoi3vO8UhvrzJaObuTlGhPl2szodeB2dUd76Xw== -symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0: +symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -23564,11 +24159,11 @@ tdigest@^0.1.1: react-use "^17.2.4" teeny-request@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c" - integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw== + version "7.1.3" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.3.tgz#5a3d90c559a6c664a993477b138e331a518765ba" + integrity sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg== dependencies: - http-proxy-agent "^4.0.0" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" node-fetch "^2.6.1" stream-events "^1.0.5" @@ -23598,9 +24193,9 @@ temp@^0.8.4: rimraf "~2.6.2" term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + version "2.2.1" + resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terminal-link@^2.0.0: version "2.1.1" @@ -23611,22 +24206,21 @@ terminal-link@^2.0.0: supports-hyperlinks "^2.0.0" terser-webpack-plugin@*, terser-webpack-plugin@^5.1.3: - version "5.3.0" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" - integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== + version "5.3.1" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== dependencies: - jest-worker "^27.4.1" + jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" source-map "^0.6.1" terser "^5.7.2" terser@^5.10.0, terser@^5.7.2: - version "5.12.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a" - integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A== + version "5.10.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== dependencies: - acorn "^8.5.0" commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.20" @@ -23739,9 +24333,9 @@ tildify@2.0.0: integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + version "2.0.12" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" @@ -23756,9 +24350,9 @@ timsort@^0.3.0, timsort@~0.3.0: integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tiny-invariant@^1.0.6: - version "1.1.0" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + version "1.2.0" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" + integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== tiny-merge-patch@^0.1.2: version "0.1.2" @@ -23783,9 +24377,9 @@ title-case@^3.0.3: tslib "^2.0.3" tmp-promise@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" - integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== + version "3.0.3" + resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== dependencies: tmp "^0.2.0" @@ -23803,7 +24397,7 @@ tmp@^0.2.0, tmp@~0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.x: +tmpl@1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -23949,11 +24543,6 @@ trim-newlines@^3.0.0: resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-off-newlines@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz#8df24847fcb821b0ab27d58ab6efec9f2fe961a1" - integrity sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg== - triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" @@ -23982,14 +24571,14 @@ ts-easing@^0.2.0: integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== ts-interface-checker@^0.1.9: - version "0.1.10" - resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.10.tgz#b68a49e37e90a05797e590f08494dd528bf383cf" - integrity sha512-UJYuKET7ez7ry0CnvfY6fPIUIZDw+UI3qvTUQeS2MyI4TgEeWAUBqy185LeaHcdJ9zG2dgFpPJU/AecXU0Afug== + version "0.1.13" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== ts-log@^2.2.3: - version "2.2.3" - resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.3.tgz#4da5640fe25a9fb52642cd32391c886721318efb" - integrity sha512-XvB+OdKSJ708Dmf9ore4Uf/q62AYDTzFcAdxc8KNML1mmAWywRFVt/dn1KYJH8Agt5UJNujfM3znU5PxgAzA2w== + version "2.2.4" + resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.4.tgz#d672cf904b33735eaba67a7395c93d45fba475b3" + integrity sha512-DEQrfv6l7IvN2jlzc/VTdZJYsWUnQNCsueYjMkC/iXoEoi5fNan6MjeDqkvhfzbmHgdz9UxDUluX3V5HdjTydQ== ts-node@^10.0.0, ts-node@^10.2.1, ts-node@^10.4.0: version "10.7.0" @@ -24117,11 +24706,6 @@ type-detect@4.0.8, type-detect@^4.0.8: resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - type-fest@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" @@ -24137,6 +24721,11 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" @@ -24166,9 +24755,9 @@ type-is@~1.6.18: mime-types "~2.1.24" typed-rest-client@^1.8.4: - version "1.8.4" - resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz#ba3fb788e5b9322547406392533f12d660a5ced6" - integrity sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg== + version "1.8.6" + resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz#d8facd6abd98cbd8ad14cccf056ca5cc306919d7" + integrity sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA== dependencies: qs "^6.9.1" tunnel "0.0.6" @@ -24186,6 +24775,19 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript-json-schema@^0.52.0: + version "0.52.0" + resolved "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.52.0.tgz#954560ec90e5486e8f7a5b7706ec59286a708e29" + integrity sha512-3ZdHzx116gZ+D9LmMl5/+d1G3Rpt8baWngKzepYWHnXbAa8Winv64CmFRqLlMKneE1c40yugYDFcWdyX1FjGzQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@types/node" "^16.9.2" + glob "^7.1.7" + safe-stable-stringify "^2.2.0" + ts-node "^10.2.1" + typescript "~4.4.4" + yargs "^17.1.1" + typescript-json-schema@^0.53.0: version "0.53.0" resolved "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.53.0.tgz#ac5b89e4b0af55be422f475a041360e0556f88ea" @@ -24199,15 +24801,20 @@ typescript-json-schema@^0.53.0: typescript "~4.5.0" yargs "^17.1.1" +typescript@~4.4.4: + version "4.4.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" + integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== + typescript@~4.5.0, typescript@~4.5.2, typescript@~4.5.4: version "4.5.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== -ua-parser-js@^0.7.18: - version "0.7.28" - resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" - integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== +ua-parser-js@^0.7.30: + version "0.7.31" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -24215,9 +24822,9 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^3.1.4: - version "3.14.3" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" - integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== + version "3.15.1" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz#9403dc6fa5695a6172a91bc983ea39f0f7c9086d" + integrity sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ== uid-number@0.0.6: version "0.0.6" @@ -24231,11 +24838,16 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" -uid2@0.0.3, uid2@0.0.x: +uid2@0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= +uid2@0.0.x: + version "0.0.4" + resolved "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" + integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== + umask@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" @@ -24270,37 +24882,37 @@ undefsafe@^2.0.5: integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== underscore@^1.12.1, underscore@^1.9.1: - version "1.13.1" - resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" - integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== + version "1.13.2" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz#276cea1e8b9722a8dbed0100a407dda572125881" + integrity sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g== undici@^4.9.3: - version "4.11.0" - resolved "https://registry.npmjs.org/undici/-/undici-4.11.0.tgz#41fb4f944704d77e1c9fb472d40d2dbece64ccf2" - integrity sha512-gofXRqAdm81rzaZgPbMf98qvrNGd3ptJ26+mCcF3EXoC817p//MtL8XcDpTvHUXxdW27rAM2jvTae+KyAchorw== + version "4.14.1" + resolved "https://registry.npmjs.org/undici/-/undici-4.14.1.tgz#7633b143a8a10d6d63335e00511d071e8d52a1d9" + integrity sha512-WJ+g+XqiZcATcBaUeluCajqy4pEDcQfK1vy+Fo+bC4/mqXI9IIQD/XWHLS70fkGUT6P52Drm7IFslO651OdLPQ== -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== unidiff@1.0.2: version "1.0.2" @@ -24310,9 +24922,9 @@ unidiff@1.0.2: diff "^2.2.2" unified@^10.0.0: - version "10.1.0" - resolved "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz#4e65eb38fc2448b1c5ee573a472340f52b9346fe" - integrity sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g== + version "10.1.1" + resolved "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz#345e349e3ab353ab612878338eb9d57b4dea1d46" + integrity sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w== dependencies: "@types/unist" "^2.0.0" bail "^2.0.0" @@ -24332,11 +24944,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -24429,13 +25036,6 @@ universal-github-app-jwt@^1.0.1: "@types/jsonwebtoken" "^8.3.3" jsonwebtoken "^8.5.1" -universal-user-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" - integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== - dependencies: - os-name "^3.1.0" - universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" @@ -24446,11 +25046,6 @@ universalify@^0.1.0, universalify@^0.1.2: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - universalify@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -24476,6 +25071,11 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -24545,9 +25145,9 @@ upper-case@^2.0.2: tslib "^2.0.3" uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -24563,18 +25163,18 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.5.8: - version "1.5.10" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== +url-parse@^1.5.6: + version "1.5.9" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.9.tgz#05ff26484a0b5e4040ac64dcee4177223d74675e" + integrity sha512-HpOvhKBvre8wYez+QhHcYiVvVmeF6DVnuSOOPhe3cTum3BnqHhvKaZm8FU5yTiOu/Jut2ZpB2rA/SbBA1JIGlQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" url-value-parser@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.0.3.tgz#cd4b8d6754e458d65e8125260c09718d926e6e21" - integrity sha512-FjIX+Q9lYmDM9uYIGdMYfQW0uLbWVwN2NrL2ayAI7BTOvEwzH+VoDdNquwB9h4dFAx+u6mb0ONLa3sHD5DvyvA== + version "2.1.0" + resolved "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.1.0.tgz#fe1ae776122b2eea4bbf284896bbdcd7fc75e1fa" + integrity sha512-gIYPWXujdUdwd/9TGCHTf5Vvgw6lOxjE5Q/k+7WNByYyS0vW5WX0k+xuVlhvPq6gRNhzXVv/ezC+OfeAet5Kcw== url@0.10.3: version "0.10.3" @@ -24598,9 +25198,9 @@ use-immer@^0.6.0: integrity sha512-dFGRfvWCqPDTOt/S431ETYTg6+uxbpb7A1pptufwXVzGJY3RlXr38+3wyLNpc6SbbmAKjWl6+EP6uW74fkEsXQ== use-memo-one@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" - integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== + version "1.1.2" + resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz#0c8203a329f76e040047a35a1197defe342fab20" + integrity sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ== use-resize-observer@^7.0.0: version "7.1.0" @@ -24638,6 +25238,16 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3: version "0.10.3" resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -24705,14 +25315,14 @@ v8-compile-cache-lib@^3.0.0: integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + version "2.3.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" - integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== + version "7.1.2" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -24789,13 +25399,13 @@ vary@^1, vary@~1.1.2: integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vasync@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/vasync/-/vasync-2.2.0.tgz#cfde751860a15822db3b132bc59b116a4adaf01b" - integrity sha1-z951GGChWCLbOxMrxZsRakra8Bs= + version "2.2.1" + resolved "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz#d881379ff3685e4affa8e775cf0fd369262a201b" + integrity sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ== dependencies: verror "1.10.0" -verror@1.10.0, verror@^1.8.1: +verror@1.10.0: version "1.10.0" resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= @@ -24804,18 +25414,27 @@ verror@1.10.0, verror@^1.8.1: core-util-is "1.0.2" extsprintf "^1.2.0" +verror@^1.8.1: + version "1.10.1" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + vfile-message@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz#db7eaebe7fecb853010f2ef1664427f52baf8f74" - integrity sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww== + version "3.1.0" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.0.tgz#5437035aa43185ff4b9210d32fada6c640e59143" + integrity sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g== dependencies: "@types/unist" "^2.0.0" unist-util-stringify-position "^3.0.0" vfile@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz#18e78016f0f71e98d737d40f0fca921dc264a600" - integrity sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg== + version "5.3.0" + resolved "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz#4990c78cb3157005590ee8c930b71cd7fa6a006e" + integrity sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" @@ -24859,9 +25478,9 @@ vm2@^3.9.6: acorn-walk "^8.2.0" vscode-languageserver-types@^3.15.1: - version "3.15.1" - resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" - integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== + version "3.16.0" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" + integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== w3c-hr-time@^1.0.2: version "1.0.2" @@ -24904,11 +25523,11 @@ walk-up-path@^1.0.0: integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - makeerror "1.0.x" + makeerror "1.0.12" watchpack@^2.3.1: version "2.3.1" @@ -25130,17 +25749,16 @@ which-pm@2.0.0: path-exists "^4.0.0" which-typed-array@^1.1.2: - version "1.1.4" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" - integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + version "1.1.7" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" + integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.7" which@^1.2.9, which@^1.3.1: version "1.3.1" @@ -25175,14 +25793,7 @@ window-size@^0.2.0: resolved "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= -windows-release@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" - integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== - dependencies: - execa "^1.0.0" - -winston-transport@^4.4.2: +winston-transport@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== @@ -25192,20 +25803,20 @@ winston-transport@^4.4.2: triple-beam "^1.3.0" winston@^3.2.1: - version "3.5.1" - resolved "https://registry.npmjs.org/winston/-/winston-3.5.1.tgz#b25cc899d015836dbf8c583dec8c4c4483a0da2e" - integrity sha512-tbRtVy+vsSSCLcZq/8nXZaOie/S2tPXPFt4be/Q3vI/WtYwm7rrwidxVw2GRa38FIXcJ1kUM6MOZ9Jmnk3F3UA== + version "3.6.0" + resolved "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6" + integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w== dependencies: "@dabh/diagnostics" "^2.0.2" async "^3.2.3" is-stream "^2.0.0" - logform "^2.3.2" + logform "^2.4.0" one-time "^1.0.0" readable-stream "^3.4.0" safe-stable-stringify "^2.3.1" stack-trace "0.0.x" triple-beam "^1.3.0" - winston-transport "^4.4.2" + winston-transport "^4.5.0" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" @@ -25327,9 +25938,9 @@ ws@8.5.0, ws@^8.4.2: integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: - version "7.5.6" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" - integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== + version "7.5.7" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== ws@~7.4.2: version "7.4.6" @@ -25494,7 +26105,7 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2, yaml@^1.9.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.4, yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== @@ -25507,6 +26118,11 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" @@ -25537,7 +26153,7 @@ yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.1.1, yargs@^16.2.0: +yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== From 362d49a5213f3656575fb9a6c81ff6d61213e7f5 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Sun, 20 Feb 2022 22:23:02 +0100 Subject: [PATCH 341/410] publish stories from stack overflow plugin Signed-off-by: Emma Indal --- storybook/.storybook/main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/storybook/.storybook/main.js b/storybook/.storybook/main.js index bd58156d2d..2356e4e41b 100644 --- a/storybook/.storybook/main.js +++ b/storybook/.storybook/main.js @@ -9,6 +9,7 @@ const BACKSTAGE_CORE_STORIES = [ 'plugins/org', 'plugins/search', 'plugins/home', + 'plugins/stack-overflow', ]; module.exports = ({ args }) => { From a7825896c32da180e0d06482aa18f630d92ac39c Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Sun, 20 Feb 2022 22:51:23 +0100 Subject: [PATCH 342/410] fixups Signed-off-by: Emma Indal --- plugins/home/package.json | 2 + plugins/stack-overflow/README.md | 4 +- yarn.lock | 6644 ++++++++++++++++++------------ 3 files changed, 3993 insertions(+), 2657 deletions(-) diff --git a/plugins/home/package.json b/plugins/home/package.json index b787acfdfe..fd83c6ff28 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -39,7 +39,9 @@ "@backstage/core-plugin-api": "^1.0.0", "@backstage/plugin-catalog-react": "^1.0.1-next.0", "@backstage/plugin-search": "^0.7.5-next.0", + "@backstage/plugin-stack-overflow": "^0.0.0", "@backstage/theme": "^0.2.15", + "@backstage/config": "^0.1.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.57", diff --git a/plugins/stack-overflow/README.md b/plugins/stack-overflow/README.md index cea63c41c4..0a4fbea101 100644 --- a/plugins/stack-overflow/README.md +++ b/plugins/stack-overflow/README.md @@ -19,14 +19,14 @@ stackoverflow: This search plugin is primarily responsible for the following: -- Exposing various stack-overflow related components like `` which can be used for composing the searchpage, and `` which can be used for composing the homepage. +- Exposing various stack-overflow related components like `` which can be used for composing the search page, and `` which can be used for composing the homepage. - Provides a `StackOverflowQuestionsCollator`, which can be used in the search backend to index stack overflow questions to your Backstage Search. ### Index Stack Overflow Questions to search Before you are able to start index stack overflow questions to search, you need to go through the [search getting started guide](https://backstage.io/docs/features/search/getting-started). -When you have your `packages/backend/src/plugins/search.ts` file ready to make modifications, add the following code snippet to add the `StackOverflowQuestionsCollator`. Note that you can modify the request params. +When you have your `packages/backend/src/plugins/search.ts` file ready to make modifications, add the following code snippet to add the `StackOverflowQuestionsCollator`. Note that you can modify the `requestParams`. ```ts indexBuilder.addCollator({ diff --git a/yarn.lock b/yarn.lock index d9e4ffb198..7d354d74da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,14 +17,13 @@ "@jridgewell/trace-mapping" "^0.3.0" "@apidevtools/json-schema-ref-parser@^9.0.6": - version "9.0.9" - resolved "https://registry.npmjs.org/@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== + version "9.0.6" + resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" + integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== dependencies: "@jsdevtools/ono" "^7.1.3" - "@types/json-schema" "^7.0.6" call-me-maybe "^1.0.1" - js-yaml "^4.1.0" + js-yaml "^3.13.1" "@apollo/protobufjs@1.2.2": version "1.2.2" @@ -105,24 +104,24 @@ openapi-sampler "^1.1.0" use-resize-observer "^7.0.0" -"@asyncapi/specs@^2.13.0": - version "2.13.0" - resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.13.0.tgz#c0f46d00e8a67c1c9ea445eb3e8bca90f7dca795" - integrity sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og== +"@asyncapi/specs@^2.11.0": + version "2.12.0" + resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.12.0.tgz#15534ca9e518b561d33edfdfdbb234f9b274f261" + integrity sha512-X4Xkrl+9WXSk5EJhsueIxNx6ymHI5wpkw4ofetV+VRnPLNob/XO4trPSJClrL5hlknxbGADLvlrkI5d3XJ996g== "@azure/abort-controller@^1.0.0": - version "1.0.4" - resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.4.tgz#fd3c4d46c8ed67aace42498c8e2270960250eafd" - integrity sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw== + version "1.0.2" + resolved "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.2.tgz#822405c966b2aec16fb62c1b19d37eaccf231995" + integrity sha512-XUyTo+bcyxHEf+jlN2MXA7YU9nxVehaubngHV1MIZZaqYmZqykkoeAz/JMMEeR7t3TcyDwbFa3Zw8BZywmIx4g== dependencies: tslib "^2.0.0" "@azure/core-asynciterator-polyfill@^1.0.0": - version "1.0.2" - resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.2.tgz#0dd3849fb8d97f062a39db0e5cadc9ffaf861fec" - integrity sha512-3rkP4LnnlWawl0LZptJOdXNrT/fHp2eQMadoasa6afspXdpGrtPZuAQc2PD0cpgyuoXtUWyC3tv7xfntjGS5Dw== + version "1.0.0" + resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" + integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== -"@azure/core-auth@^1.3.0": +"@azure/core-auth@^1.1.3", "@azure/core-auth@^1.3.0": version "1.3.2" resolved "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== @@ -143,44 +142,43 @@ "@azure/logger" "^1.0.0" tslib "^2.2.0" -"@azure/core-http@^2.0.0": - version "2.2.4" - resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-2.2.4.tgz#df5a5b4138dbbc4299879f2fc6f257d0a5f0401e" - integrity sha512-QmmJmexXKtPyc3/rsZR/YTLDvMatzbzAypJmLzvlfxgz/SkgnqV/D4f6F2LsK6tBj1qhyp8BoXiOebiej0zz3A== +"@azure/core-http@^1.2.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-1.2.2.tgz#a6f7717184fd2657d3acabd1d64dfdc0bd531ce3" + integrity sha512-9eu2OcbR7e44gqBy4U1Uv8NTWgLIMwKXMEGgO2MahsJy5rdTiAhs5fJHQffPq8uX2MFh21iBODwO9R/Xlov88A== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-asynciterator-polyfill" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" + "@azure/core-auth" "^1.1.3" + "@azure/core-tracing" "1.0.0-preview.9" "@azure/logger" "^1.0.0" + "@opentelemetry/api" "^0.10.2" "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.3" - form-data "^4.0.0" - node-fetch "^2.6.7" + "@types/tunnel" "^0.0.1" + form-data "^3.0.0" + node-fetch "^2.6.0" process "^0.11.10" tough-cookie "^4.0.0" - tslib "^2.2.0" + tslib "^2.0.0" tunnel "^0.0.6" uuid "^8.3.0" xml2js "^0.4.19" -"@azure/core-lro@^2.2.0": - version "2.2.3" - resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.3.tgz#3e245d37ede00f6410c1ea1fb76679dbdec627eb" - integrity sha512-UMdlR9NsqDCLTba3EUbRjfMF4gDmWvld196JmUjbz9WWhJ2XT00OR5MXeWiR+vmGT+ETiO4hHFCi2/eGO5YVtg== +"@azure/core-lro@^1.0.2": + version "1.0.3" + resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-1.0.3.tgz#1ddfb4ecdb81ce87b5f5d972ffe2acbbc46e524e" + integrity sha512-Py2crJ84qx1rXkzIwfKw5Ni4WJuzVU7KAF6i1yP3ce8fbynUeu8eEWS4JGtSQgU7xv02G55iPDROifmSDbxeHA== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/logger" "^1.0.0" - tslib "^2.2.0" + "@azure/core-http" "^1.2.0" + events "^3.0.0" + tslib "^2.0.0" "@azure/core-paging@^1.1.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.2.1.tgz#1b884f563b6e49971e9a922da3c7a20931867b54" - integrity sha512-UtH5iMlYsvg+nQYIl4UHlvvSrsBjOlRF4fs0j7mxd3rWdAStrKYrh2durOpHs5C9yZbVhsVDaisoyaf/lL1EVA== + version "1.1.3" + resolved "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.1.3.tgz#3587c9898a0530cacb64bab216d7318468aa5efc" + integrity sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A== dependencies: "@azure/core-asynciterator-polyfill" "^1.0.0" - tslib "^2.2.0" "@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.5.0": version "1.5.0" @@ -197,6 +195,15 @@ tslib "^2.2.0" uuid "^8.3.0" +"@azure/core-tracing@1.0.0-preview.10": + version "1.0.0-preview.10" + resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.10.tgz#e7060272145dddad4486765030d1b037cd52a8ea" + integrity sha512-iIwjtMwQnsxB7cYkugMx+s4W1nfy3+pT/ceo+uW1fv4YDgYe84nh+QP0fEC9IH/3UATLSWbIBemdMHzk2APUrw== + dependencies: + "@opencensus/web-types" "0.0.7" + "@opentelemetry/api" "^0.10.2" + tslib "^2.0.0" + "@azure/core-tracing@1.0.0-preview.13": version "1.0.0-preview.13" resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644" @@ -205,6 +212,15 @@ "@opentelemetry/api" "^1.0.1" tslib "^2.2.0" +"@azure/core-tracing@1.0.0-preview.9": + version "1.0.0-preview.9" + resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.9.tgz#84f3b85572013f9d9b85e1e5d89787aa180787eb" + integrity sha512-zczolCLJ5QG42AEPQ+Qg9SRYNUyB+yZ5dzof4YEc+dyWczO9G2sBqbAjLB7IqrsdHN2apkiB2oXeDKCsq48jug== + dependencies: + "@opencensus/web-types" "0.0.7" + "@opentelemetry/api" "^0.10.2" + tslib "^2.0.0" + "@azure/core-util@^1.0.0-beta.1": version "1.0.0-beta.1" resolved "https://registry.npmjs.org/@azure/core-util/-/core-util-1.0.0-beta.1.tgz#2efd2c74b4b0a38180369f50fe274a3c4cd36e98" @@ -213,9 +229,9 @@ tslib "^2.0.0" "@azure/identity@^2.0.1": - version "2.0.4" - resolved "https://registry.npmjs.org/@azure/identity/-/identity-2.0.4.tgz#f5cfde0daf1b9ebaaff3ed6c504f50d7d7c939a5" - integrity sha512-ZgFubAsmo7dji63NLPaot6O7pmDfceAUPY57uphSCr0hmRj+Cakqb4SUz5SohCHFtscrhcmejRU903Fowz6iXg== + version "2.0.3" + resolved "https://registry.npmjs.org/@azure/identity/-/identity-2.0.3.tgz#286e7b145b29bee009ef10f3c2900122dcc1c947" + integrity sha512-MFW2QS5dWm2U8MDTSm0sHo7pcAQtQtJhKVVcN5wA2ownHzmHluXTGFK4WdFiXzUInhZtqYA5CH+OGHTGs6DTBA== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-auth" "^1.3.0" @@ -235,18 +251,18 @@ uuid "^8.3.0" "@azure/logger@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96" - integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g== + version "1.0.1" + resolved "https://registry.npmjs.org/@azure/logger/-/logger-1.0.1.tgz#19b333203d1b2931353d8879e814b64a7274837a" + integrity sha512-QYQeaJ+A5x6aMNu8BG5qdsVBnYBop9UMwgUvGihSjf1PdZZXB+c/oMdM2ajKwzobLBh9e9QuMQkN9iL+IxLBLA== dependencies: - tslib "^2.2.0" + tslib "^2.0.0" "@azure/msal-browser@^2.16.0": - version "2.22.0" - resolved "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.22.0.tgz#acb3ef455d8ca7b143c7fde0a638097add11a218" - integrity sha512-ZpnbnzjYGRGHjWDPOLjSp47CQvhK927+W9avtLoNNCMudqs2dBfwj76lnJwObDE7TAKmCUueTiieglBiPb1mgQ== + version "2.20.0" + resolved "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.20.0.tgz#78e34395048c4a8842400d4168b2fb3bdd3c854e" + integrity sha512-Fl8boo38fPNlEm84fRCulbTfHJo+Z/i+1gcdJTG+PqmrkMOUVTdpkwznGh6ZQdAM34uumEgzukmqMr8lVKrytA== dependencies: - "@azure/msal-common" "^6.1.0" + "@azure/msal-common" "^5.2.0" "@azure/msal-common@^4.5.1": version "4.5.1" @@ -255,37 +271,37 @@ dependencies: debug "^4.1.1" -"@azure/msal-common@^6.1.0": - version "6.1.0" - resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-6.1.0.tgz#00b0c625d10f4c8e48e7b48a353f7d8d20a5ceca" - integrity sha512-IGjAHttOgKDPQr0Qxx1NjABR635ZNuN7LHjxI0Y7SEA2thcaRGTccy+oaXTFabM/rZLt4F2VrPKUX4BnR9hW9g== +"@azure/msal-common@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-5.2.0.tgz#49440e04f4d0961fc5a1a1718fbe5e4eae2db5db" + integrity sha512-oVc4soy5MEZOp9NvCDqBk57mtiUTJXQQ8Z8S/4UiRQP8RG8snuCFQUs9xxdIfvl2FWIvgiBz+SMByyjTaRX42Q== dependencies: debug "^4.1.1" "@azure/msal-node@^1.1.0", "@azure/msal-node@^1.3.0": - version "1.6.0" - resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.6.0.tgz#59d6306979581fd9379d17d22047ada143ed56df" - integrity sha512-RCPXVWsjqYZh7NB1pAJLn4ypHlLBulOjw5nKPLsJiaJJIXnN8kc6SMkK3S9/80DZCEBstvoRMz6zF50QZJUeOQ== + version "1.4.0" + resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.4.0.tgz#660685804fbdc533b10cc699f16323e27ec582c6" + integrity sha512-Ek6hqOFUi5QEAxZ55awM8y1N+9SzS9Qh8ijF4RDLtFuHzqP7xXmMnVC1lae45FlH55DUOo7dg/smuDJnb4kw6g== dependencies: - "@azure/msal-common" "^6.1.0" + "@azure/msal-common" "^5.2.0" axios "^0.21.4" - https-proxy-agent "^5.0.0" jsonwebtoken "^8.5.1" uuid "^8.3.0" "@azure/storage-blob@^12.5.0": - version "12.8.0" - resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.8.0.tgz#97b7ecc6c7b17bcbaf0281c79c16af6f512d6130" - integrity sha512-c8+Wz19xauW0bGkTCoqZH4dYfbtBniPiGiRQOn1ca6G5jsjr4azwaTk9gwjVY8r3vY2Taf95eivLzipfIfiS4A== + version "12.5.0" + resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.5.0.tgz#1ddd8837d9a15ebe355e795375d13b406f2cb496" + integrity sha512-DgoefgODst2IPkkQsNdhtYdyJgSsAZC1pEujO6aD5y7uFy5GnzhYliobSrp204jYRyK5XeJ9iiePmy/SPtTbLA== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^2.0.0" - "@azure/core-lro" "^2.2.0" + "@azure/core-http" "^1.2.0" + "@azure/core-lro" "^1.0.2" "@azure/core-paging" "^1.1.1" - "@azure/core-tracing" "1.0.0-preview.13" + "@azure/core-tracing" "1.0.0-preview.10" "@azure/logger" "^1.0.0" + "@opentelemetry/api" "^0.10.2" events "^3.0.0" - tslib "^2.2.0" + tslib "^2.0.0" "@babel/code-frame@7.0.0": version "7.0.0" @@ -301,12 +317,33 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" - integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": + version "7.16.8" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" + integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": +"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": + version "7.16.12" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" + integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.16.7" + "@babel/parser" "^7.16.12" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.10" + "@babel/types" "^7.16.8" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.12.3": version "7.17.5" resolved "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== @@ -327,7 +364,16 @@ json5 "^2.1.2" semver "^6.3.0" -"@babel/generator@^7.14.0", "@babel/generator@^7.17.3": +"@babel/generator@^7.14.0", "@babel/generator@^7.16.0", "@babel/generator@^7.16.8": + version "7.16.8" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" + integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== + dependencies: + "@babel/types" "^7.16.8" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/generator@^7.17.3": version "7.17.3" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== @@ -362,9 +408,9 @@ semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": - version "7.17.1" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" - integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== + version "7.16.10" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" + integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -375,12 +421,12 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" + integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" + regexpu-core "^4.7.1" "@babel/helper-define-polyfill-provider@^0.3.1": version "0.3.1" @@ -410,7 +456,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.16.7": +"@babel/helper-function-name@^7.16.0", "@babel/helper-function-name@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== @@ -426,7 +472,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.16.7": +"@babel/helper-hoist-variables@^7.16.0", "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== @@ -507,14 +553,14 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.16.7": +"@babel/helper-split-export-declaration@^7.16.0", "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.16.7": +"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== @@ -534,6 +580,15 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" +"@babel/helpers@^7.16.7": + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" + integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helpers@^7.17.2": version "7.17.2" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" @@ -552,7 +607,17 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.16.8", "@babel/parser@^7.17.3": +"@babel/parser@7.16.4": + version "7.16.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" + integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== + +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.3", "@babel/parser@^7.16.7": + version "7.16.12" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" + integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== + +"@babel/parser@^7.17.3": version "7.17.3" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== @@ -648,11 +713,11 @@ "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" + integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== dependencies: - "@babel/compat-data" "^7.17.0" + "@babel/compat-data" "^7.16.4" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" @@ -886,9 +951,9 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" - integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" + integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -1049,15 +1114,15 @@ "@babel/plugin-transform-react-jsx" "^7.16.7" "@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.16.7": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" - integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4" + integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.17.0" + "@babel/types" "^7.16.7" "@babel/plugin-transform-react-pure-annotations@^7.16.7": version "7.16.7" @@ -1263,25 +1328,36 @@ "@babel/plugin-transform-typescript" "^7.16.7" "@babel/register@^7.13.16": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz#8051e0b7cb71385be4909324f072599723a1f084" - integrity sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg== + version "7.16.9" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz#fcfb23cfdd9ad95c9771e58183de83b513857806" + integrity sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" make-dir "^2.1.0" - pirates "^4.0.5" + pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.8": - version "7.17.2" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" - integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.3": + version "7.16.8" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz#ea533d96eda6fdc76b1812248e9fbd0c11d4a1a7" + integrity sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" +<<<<<<< HEAD "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +======= +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.16.7" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" + integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.7.2": +>>>>>>> 76d216e74b (fixups) version "7.17.2" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== @@ -1304,7 +1380,38 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5": +"@babel/traverse@7.16.3": + version "7.16.3" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" + integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.3" + "@babel/types" "^7.16.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.4.5": + version "7.16.10" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" + integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.8" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.16.10" + "@babel/types" "^7.16.8" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3": version "7.17.3" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== @@ -1320,7 +1427,23 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@7.16.0": + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + to-fast-properties "^2.0.0" + +"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.16.8" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" + integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@babel/types@^7.12.6", "@babel/types@^7.17.0": version "7.17.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== @@ -1941,16 +2064,16 @@ resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-5.0.2.tgz#b23080fa35520e993a8a37a0f5bca26aa4650a48" integrity sha512-NBEJlHWrhQucLhZGHtSxM2loSaNUMajC7KOYJLyfcdW/6goVoff2HoYI3bz8YCDN0wKGbxtUL0gx2dvHpvnWlw== -"@changesets/apply-release-plan@^5.0.5": - version "5.0.5" - resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-5.0.5.tgz#d67b1e022c876d18d887f3c475a3abcad9944b68" - integrity sha512-CxL9dkhzjHiVmXCyHgsLCQj7i/coFTMv/Yy0v6BC5cIWZkQml+lf7zvQqAcFXwY7b54HxRWZPku02XFB53Q0Uw== +"@changesets/apply-release-plan@^5.0.4": + version "5.0.4" + resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-5.0.4.tgz#fefffecf73b59dbee7ae905b3c6a2e64c489f0cb" + integrity sha512-czayDIrgC8qBnqwClvh9nxjCMem+XZG7xtfdYwq3dxpzA30qGppcI0i088VYug5RCFR+l1N+HUvkujSZuBK65w== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/config" "^1.7.0" + "@changesets/config" "^1.6.4" "@changesets/get-version-range-type" "^0.3.2" - "@changesets/git" "^1.3.1" - "@changesets/types" "^4.1.0" + "@changesets/git" "^1.3.0" + "@changesets/types" "^4.0.2" "@manypkg/get-packages" "^1.1.3" detect-indent "^6.0.0" fs-extra "^7.0.1" @@ -1960,44 +2083,36 @@ resolve-from "^5.0.0" semver "^5.4.1" -"@changesets/assemble-release-plan@^5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.1.0.tgz#0fcb18253998e3bc037a554874de43bcc58c4840" - integrity sha512-iYlqffCMhcwZ+6Cv8cimf10OBGYXQKufBI7J6htpRgCV2nT99RKXEjbYOtrXWKQqzu0XxOsk15apSEwjZN0JRw== +"@changesets/assemble-release-plan@^5.0.5": + version "5.0.5" + resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.0.5.tgz#60e4adc9bf458dd6ec38dee78d8f1bbeddfe3936" + integrity sha512-ejCVSM4I1jgaNi30we3/qltj2NQtS68w7C3H8Gvb6ZOvbIpAW/Tr0uMmPgRj4Vzkez5+fx0If02AvOdssz1btA== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.1" - "@changesets/types" "^4.1.0" + "@changesets/get-dependents-graph" "^1.3.0" + "@changesets/types" "^4.0.2" "@manypkg/get-packages" "^1.1.3" semver "^5.4.1" -"@changesets/changelog-git@^0.1.10": - version "0.1.10" - resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.10.tgz#df616e92671082a7976381280b4af98ff3a7067d" - integrity sha512-4t7zqPOv3aDZp4Y+AyDhiOG2ypaUXDpOz+MT1wOk3uSZNv78AaDByam0hdk5kfYuH1RlMecWU4/U5lO1ZL5eaA== - dependencies: - "@changesets/types" "^4.1.0" - "@changesets/cli@^2.14.0": - version "2.21.0" - resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.21.0.tgz#b689f91ed908150efc06e0985e6b4cfbd9aea3a3" - integrity sha512-cJXRg28MmF9VbQrlwSjpY4AJA2xZUbXFCpQ3kFmX0IeppO7wknZ2QfocAhIqwM828t8d3R4Zpi5xnvJ/crIcQw== + version "2.20.0" + resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.20.0.tgz#f24dbd38bd4bc47bf083e59b6bb9cbf531465808" + integrity sha512-IUYSgZKtS+wXPD5hxfnCfZ1JWCbBI0CRrhxpkgVKcXDwpxiRU8stCwuSuVj14kiYlThuH2zL0/ZuGvhF4r28Gg== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/apply-release-plan" "^5.0.5" - "@changesets/assemble-release-plan" "^5.1.0" - "@changesets/changelog-git" "^0.1.10" - "@changesets/config" "^1.7.0" + "@changesets/apply-release-plan" "^5.0.4" + "@changesets/assemble-release-plan" "^5.0.5" + "@changesets/config" "^1.6.4" "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.1" - "@changesets/get-release-plan" "^3.0.6" - "@changesets/git" "^1.3.1" + "@changesets/get-dependents-graph" "^1.3.0" + "@changesets/get-release-plan" "^3.0.5" + "@changesets/git" "^1.3.0" "@changesets/logger" "^0.0.5" - "@changesets/pre" "^1.0.10" - "@changesets/read" "^0.5.4" - "@changesets/types" "^4.1.0" - "@changesets/write" "^0.1.7" + "@changesets/pre" "^1.0.9" + "@changesets/read" "^0.5.3" + "@changesets/types" "^4.0.2" + "@changesets/write" "^0.1.6" "@manypkg/get-packages" "^1.1.3" "@types/is-ci" "^3.0.0" "@types/semver" "^6.0.0" @@ -2016,15 +2131,15 @@ term-size "^2.1.0" tty-table "^2.8.10" -"@changesets/config@^1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@changesets/config/-/config-1.7.0.tgz#18353f88ea8153d7f1fb7c321a3fe8667035eddb" - integrity sha512-Ctk6ZO5Ay6oZ95bbKXyA2a1QG0jQUePaGCY6BKkZtUG4PgysesfmiQOPgOY5OsRMt8exJeo6l+DJ75YiKmh0rQ== +"@changesets/config@^1.6.4": + version "1.6.4" + resolved "https://registry.npmjs.org/@changesets/config/-/config-1.6.4.tgz#c904c84f067b49c09b378618b751089dd29ed0b7" + integrity sha512-WWa8eR8GzS/p2atLc/+5UEDn7fsRCZ+/sShLkB/3efVbTkSTB1PwoKwQRXLYXM1DY289T7UnJT4HLZA3Gcreww== dependencies: "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.1" + "@changesets/get-dependents-graph" "^1.3.0" "@changesets/logger" "^0.0.5" - "@changesets/types" "^4.1.0" + "@changesets/types" "^4.0.2" "@manypkg/get-packages" "^1.1.3" fs-extra "^7.0.1" micromatch "^4.0.2" @@ -2036,28 +2151,28 @@ dependencies: extendable-error "^0.1.5" -"@changesets/get-dependents-graph@^1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.1.tgz#f1ebadbd4e17bb2b987c4542a588e0ee9f2e829a" - integrity sha512-HwUs8U0XK/ZqCQon1/80jJEyswS8JVmTiHTZslrTpuavyhhhxrSpO1eVCdKgaVHBRalOw3gRzdS3uzkmqYsQSQ== +"@changesets/get-dependents-graph@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.0.tgz#892bbb63406911baac1f77a31303620492d466ec" + integrity sha512-4VHQWEluWySPgDdkL94YNxrEjDb9nwNFw515sWDmVrlfpQN5qaP1hdaotrp4mJm4ky85t4cTlrWSP+CTY7IDbw== dependencies: - "@changesets/types" "^4.1.0" + "@changesets/types" "^4.0.2" "@manypkg/get-packages" "^1.1.3" chalk "^2.1.0" fs-extra "^7.0.1" semver "^5.4.1" -"@changesets/get-release-plan@^3.0.6": - version "3.0.6" - resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.6.tgz#15aac108b9d0f139841562c9372d8cfd738503dc" - integrity sha512-HpPyr8y6xkihy3rONLZ6OtfgYq88NotidPAuS3nwMeZjLHiIVLyejR2+/5q717f6HKcrATxAjTwMAcjl7X/uzA== +"@changesets/get-release-plan@^3.0.5": + version "3.0.5" + resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.5.tgz#c05cff031bba737c8dd236afe97e77b007ee44a3" + integrity sha512-67td3LA1RTJpY5Q+wJaTTRtAjZ2suAhDfj3VRjFv0gCgUPXs8rNx17n9UPbegPTQjeTS1r7hVRVifycmT0fQtA== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/assemble-release-plan" "^5.1.0" - "@changesets/config" "^1.7.0" - "@changesets/pre" "^1.0.10" - "@changesets/read" "^0.5.4" - "@changesets/types" "^4.1.0" + "@changesets/assemble-release-plan" "^5.0.5" + "@changesets/config" "^1.6.4" + "@changesets/pre" "^1.0.9" + "@changesets/read" "^0.5.3" + "@changesets/types" "^4.0.2" "@manypkg/get-packages" "^1.1.3" "@changesets/get-version-range-type@^0.3.2": @@ -2065,14 +2180,14 @@ resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67" integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== -"@changesets/git@^1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/@changesets/git/-/git-1.3.1.tgz#e86b4d2b28acdf9bc8949031027a9ac12420b99e" - integrity sha512-yg60QUi38VA0XGXdBy9SRYJhs8xJHE97Z1CaB/hFyByBlh5k1i+avFNBvvw66MsoT/aiml6y9scIG6sC8R5mfg== +"@changesets/git@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@changesets/git/-/git-1.3.0.tgz#7f62e1983552efecb738054db5178eef77f41241" + integrity sha512-Ydj4lWX33d2PCDaTXOMSbyTjgk1go1V6EyXjKTmOV7nB/qvgKdDZLSt+AexKWKp3Ac2FTrtVnl9G5gMNVYNmuQ== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^4.1.0" + "@changesets/types" "^4.0.2" "@manypkg/get-packages" "^1.1.3" is-subdir "^1.1.1" spawndamnit "^2.0.0" @@ -2084,51 +2199,51 @@ dependencies: chalk "^2.1.0" -"@changesets/parse@^0.3.12": - version "0.3.12" - resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.12.tgz#60569bb39ad4ffe47fc01d431613ce5c42e6590f" - integrity sha512-FOBz2L1dT9PcvyQU1Qp2sQ0B4Jw7EgRDAKFVzAQwhzXqCq03TcE7vgKU6VSksCJAioMYDowdVVHNnv/Uak6yZQ== +"@changesets/parse@^0.3.11": + version "0.3.11" + resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.11.tgz#b53485f36152e6e9a097b56fc46cafb6705ce2b5" + integrity sha512-w5/X8KijcCrvv5lHimXIBR9o35c78niiBoesBjBUlWeifwPz0DHc/lzVYJKRkA5w0BGqft6T/9hKI68GaYj5wA== dependencies: - "@changesets/types" "^4.1.0" + "@changesets/types" "^4.0.2" js-yaml "^3.13.1" -"@changesets/pre@^1.0.10": - version "1.0.10" - resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.10.tgz#e677031f271cdab8443b21e0b3cda036a3919c30" - integrity sha512-cZC1C1wTSC17/TcTWivAQ4LAXz5jEYDuy3UeZiBz1wnTTzMHyTHLLwJi60juhl4hawXunDLw0mwZkcpS8Ivitg== +"@changesets/pre@^1.0.9": + version "1.0.9" + resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.9.tgz#f1a0efea42733c25ef4a782377b2ac61023bd1b7" + integrity sha512-F3+qMun89KlynecBD15fEpwGT/KxbYb3WGeut6w1xhZb0u7V/jdcPy9b+kJ2xmBqFZLn1WteWIP96IjxS57H7A== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^4.1.0" + "@changesets/types" "^4.0.2" "@manypkg/get-packages" "^1.1.3" fs-extra "^7.0.1" -"@changesets/read@^0.5.4": - version "0.5.4" - resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.4.tgz#c6dc6ab00c4f70f2ce6766433d92eebde1b00e7a" - integrity sha512-12dTx+p5ztFs9QgJDGHRHR6HzTIbHct9S4lK2I/i6Qkz1cNfAPVIbdoMCdbPIWeLank9muMUjiiFmCWJD7tQIg== +"@changesets/read@^0.5.3": + version "0.5.3" + resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.3.tgz#5afb14ee0e806751c255e94fe8742843a9b12487" + integrity sha512-zoj5NjNR4AhiGXz6aHTxsBLojChHgDOSbz6VfAVxMKX7tF7UhyNYptG2VEbSjxeamNKABx6k1pkM2IyVVlOcbQ== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/git" "^1.3.1" + "@changesets/git" "^1.3.0" "@changesets/logger" "^0.0.5" - "@changesets/parse" "^0.3.12" - "@changesets/types" "^4.1.0" + "@changesets/parse" "^0.3.11" + "@changesets/types" "^4.0.2" chalk "^2.1.0" fs-extra "^7.0.1" p-filter "^2.1.0" -"@changesets/types@^4.0.1", "@changesets/types@^4.1.0": - version "4.1.0" - resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" - integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== +"@changesets/types@^4.0.1", "@changesets/types@^4.0.2": + version "4.0.2" + resolved "https://registry.npmjs.org/@changesets/types/-/types-4.0.2.tgz#d20e1e45bdc96a97cc509c655e708b53a9292465" + integrity sha512-OeDaB7D+WVy/ErymPzFm58IeGvz4DOl+oedyZETfnkfMezF/Uhrm1Ub6MHrO5LcAaQTW+ptDmr0fmaVyoTxgHw== -"@changesets/write@^0.1.7": - version "0.1.7" - resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.7.tgz#671def0d871cf5970c5b2f766f0ac4b19ecf1ddb" - integrity sha512-6r+tc6u2l5BBIwEAh7ivRYWFir+XKiw0q/6Hx6NJA4dSN5fNu9uyWRQ+IMHCllD9dBcsh+e79sOepc+xT8l28g== +"@changesets/write@^0.1.6": + version "0.1.6" + resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.6.tgz#798d882bada93f391902a854a17965f3b80a5201" + integrity sha512-JWE2gJs9eHhorxqembkf43fllKlCz+sp1TJKSheaWfhWILMHPdfa/xQG4+sMZkISo1qZ+IlJyiBLha6iGGjXyA== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/types" "^4.1.0" + "@changesets/types" "^4.0.2" fs-extra "^7.0.1" human-id "^1.0.2" prettier "^1.19.1" @@ -2227,13 +2342,13 @@ "@codemirror/view" "^0.19.23" "@codemirror/highlight@^0.19.0": - version "0.19.7" - resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.7.tgz#91a0c9994c759f5f153861e3aae74ff9e7c7c35b" - integrity sha512-3W32hBCY0pbbv/xidismw+RDMKuIag+fo4kZIbD7WoRj+Ttcaxjf+vP6RttRHXLaaqbWh031lTeON8kMlDhMYw== + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.6.tgz#7f2e066f83f5649e8e0748a3abe0aaeaf64b8ac2" + integrity sha512-+eibu6on9quY8uN3xJ/n3rH+YIDLlpX7YulVmFvqAIz/ukRQ5tWaBmB7fMixHmnmRIRBRZgB8rNtonuMwZSAHQ== dependencies: "@codemirror/language" "^0.19.0" "@codemirror/rangeset" "^0.19.0" - "@codemirror/state" "^0.19.3" + "@codemirror/state" "^0.19.0" "@codemirror/view" "^0.19.0" "@lezer/common" "^0.15.0" style-mod "^4.0.0" @@ -2257,6 +2372,7 @@ "@lezer/common" "^0.15.5" "@lezer/lr" "^0.15.0" +<<<<<<< HEAD "@codemirror/legacy-modes@^0.19.0": version "0.19.1" resolved "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-0.19.1.tgz#7dc3b5df1842060648f75764ab6919fcfce3ea1a" @@ -2334,6 +2450,19 @@ version "0.19.9" resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz#b797f9fbc204d6dc7975485e231693c09001b0dd" integrity sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw== +======= +"@codemirror/rangeset@^0.19.0": + version "0.19.2" + resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.2.tgz#d7a999e4273c00fecef4aba8535a426073cdcddf" + integrity sha512-5d+X8LtmeZtfFtKrSx57bIHRUpKv2HD0b74clp4fGA7qJLLfYehF6FGkJJxJb8lKsqAga1gdjjWr0jiypmIxoQ== + dependencies: + "@codemirror/state" "^0.19.0" + +"@codemirror/state@^0.19.0", "@codemirror/state@^0.19.3": + version "0.19.6" + resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.6.tgz#d631f041d39ce41b7891b099fca26cb1fdb9763e" + integrity sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw== +>>>>>>> f9b03ab02f (fixups) dependencies: "@codemirror/text" "^0.19.0" @@ -2350,9 +2479,9 @@ "@lezer/lr" "^0.15.0" "@codemirror/stream-parser@^0.19.2": - version "0.19.6" - resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.6.tgz#3cfba836f4e5daf6d0e87213b39027791c1e6329" - integrity sha512-dmPtoz/MR3IphxAsgywEyvSjOJCb2ikAgqp6BGIlwBEJVRiap0wFK4b3f/3DKIHUG4GezWRYQumXNyb3GNQevw== + version "0.19.2" + resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.2.tgz#793428e55aa7b9daa64cb733973e5d5e3d9a2306" + integrity sha512-hBKRQlyu8GUOrY33xZ6/1kAfNZ8ZUm6cX9a7mPx8zAAqnpz/fpksC/qJRrkg1mPMBwxm+JG4fqAwDGJ3gLVniQ== dependencies: "@codemirror/highlight" "^0.19.0" "@codemirror/language" "^0.19.0" @@ -2361,10 +2490,17 @@ "@lezer/common" "^0.15.0" "@lezer/lr" "^0.15.0" +<<<<<<< HEAD "@codemirror/text@^0.19.0", "@codemirror/text@^0.19.2", "@codemirror/text@^0.19.4", "@codemirror/text@^0.19.6": version "0.19.6" resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz#9adcbd8137f69b75518eacd30ddb16fd67bbac45" integrity sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA== +======= +"@codemirror/text@^0.19.0": + version "0.19.5" + resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.5.tgz#75033af2476214e79eae22b81ada618815441c18" + integrity sha512-Syu5Xc7tZzeUAM/y4fETkT0zgGr48rDG+w4U38bPwSIUr+L9S/7w2wDE1WGNzjaZPz12F6gb1gxWiSTg9ocLow== +>>>>>>> f9b03ab02f (fixups) "@codemirror/theme-one-dark@^0.19.1": version "0.19.1" @@ -2384,16 +2520,17 @@ "@codemirror/view" "^0.19.0" "@codemirror/view@^0.19.0": - version "0.19.44" - resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.44.tgz#153301eda413e76d2b98dc3870307f918c05c646" - integrity sha512-vahNUE6hSXdjzs1gcztKPJQhZu+ZIwRpK4ZGZTSD81/CZUVqtlF75W3RCYVgEdjTI1l6ogJmIL6FM2Xj7ltn7Q== + version "0.19.27" + resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.27.tgz#76e5dc19ecb4ce53e9fef1d29245040d7ff64183" + integrity sha512-Uz/LecEf7CyvMWaQBlKtbJCYn0hRnEZ2yYvuZVy9YMhmvGmES6ec7FaKw7lDFFOMLwLbBThc9kfw4DCHreHN1w== dependencies: - "@codemirror/rangeset" "^0.19.5" + "@codemirror/rangeset" "^0.19.0" "@codemirror/state" "^0.19.3" "@codemirror/text" "^0.19.0" style-mod "^4.0.0" w3c-keyname "^2.2.4" +<<<<<<< HEAD "@codemirror/view@^0.19.22", "@codemirror/view@^0.19.23", "@codemirror/view@^0.19.31", "@codemirror/view@^0.19.34", "@codemirror/view@^0.19.44", "@codemirror/view@^0.19.45": version "0.19.47" resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.47.tgz#2163c3016d7680bf50dd695c0e3abdaf80f45363" @@ -2410,6 +2547,8 @@ resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +======= +>>>>>>> f9b03ab02f (fixups) "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -2455,9 +2594,9 @@ lodash.once "^4.1.1" "@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + version "2.0.2" + resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" + integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== dependencies: colorspace "1.1.x" enabled "2.0.x" @@ -2521,14 +2660,14 @@ ts-node "^9" tslib "^2" -"@eslint/eslintrc@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz#583d12dbec5d4f22f333f9669f7d0b7c7815b4d3" - integrity sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg== +"@eslint/eslintrc@^1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" + integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.1" + espree "^9.2.0" globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" @@ -2544,16 +2683,16 @@ yaml-ast-parser "0.0.43" "@gar/promisify@^1.0.1": - version "1.1.3" - resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + version "1.1.2" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" + integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== "@gitbeaker/core@^34.6.0": - version "34.7.0" - resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-34.7.0.tgz#2cd52f6c21127e9d8147ce34f0f4d98ba72acf16" - integrity sha512-D3JSvnD2PTm8pj+UJhYqOnEmszVN5ADP2LJAFe+eDnW46eEIK5Veq6kxrzy7Q6n3lvnUABKoPi8x4dnqJlmxoA== + version "34.6.0" + resolved "https://registry.npmjs.org/@gitbeaker/core/-/core-34.6.0.tgz#f774ea98ac079ba2edf495fdef738ac3f741178b" + integrity sha512-yKF+oxffPyzOnyuHCqLGJrBHhcFHuGHtcmqKhGKtnYPfqcNYA8rt4INAHaE5wMz4ILua9b4sB8p42fki+xn6WA== dependencies: - "@gitbeaker/requester-utils" "^34.7.0" + "@gitbeaker/requester-utils" "^34.6.0" form-data "^4.0.0" li "^1.3.0" mime "^3.0.0" @@ -2583,10 +2722,10 @@ got "11.8.3" xcase "^2.0.1" -"@gitbeaker/requester-utils@^34.7.0": - version "34.7.0" - resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-34.7.0.tgz#85add7010663391e54d1b29f7c8d69da7e71d30d" - integrity sha512-SEvw6l9c+mRq33nsX/nyIIvZpUH/1CzK2tQAFj8io/5PeUWZ8oBRW1DUN7lW7uhbGdu3Sc3dA1S4H9OSvt679g== +"@gitbeaker/requester-utils@^34.6.0": + version "34.6.0" + resolved "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-34.6.0.tgz#4489009b759ca6f9a83f244453f4f610f1ac7349" + integrity sha512-H8utxbSP1kEdX0KcyVYrTDTT0A3UcPwrIV1ahyufX9ZLybYSUsA56B8Wx5kJSbWGFT1ffu2f8H2YDMwNCKKsBg== dependencies: form-data "^4.0.0" qs "^6.10.1" @@ -2601,10 +2740,10 @@ qs "^6.10.1" xcase "^2.0.1" -"@google-cloud/common@^3.8.1": - version "3.9.0" - resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.9.0.tgz#d93e62d13e66edacfad1cd25b20fdbbc11d9f6dd" - integrity sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg== +"@google-cloud/common@^3.7.0": + version "3.7.0" + resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.0.tgz#ee3fba75aeaa614978aebf8740380670026592aa" + integrity sha512-oFgpKLjH9JTOAyQd3kB36iSuH8wNSpDKb1TywlB6zcsG0xmJFxLutmfPhz03KUxRMNQOZ1K1Gc9BYvJifVnGVA== dependencies: "@google-cloud/projectify" "^2.0.0" "@google-cloud/promisify" "^2.0.0" @@ -2612,16 +2751,23 @@ duplexify "^4.1.1" ent "^2.2.0" extend "^3.0.2" - google-auth-library "^7.9.2" + google-auth-library "^7.0.2" retry-request "^4.2.2" teeny-request "^7.0.0" +<<<<<<< HEAD "@google-cloud/container@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@google-cloud/container/-/container-3.0.0.tgz#b28d086152ac19f22f2574b7e0a39774379fb885" integrity sha512-Jr+QKc6kZ9eehZunvemocB4hDd1nE3OBPo8zb0VX9lv7y+PPxksJl2RPEktFRNs32mQ9/kWLsvjLdGAHYsaOug== +======= +"@google-cloud/container@^2.2.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@google-cloud/container/-/container-2.3.0.tgz#a23f046948dbaf8cced008d419580cb600334efc" + integrity sha512-Tv8fR7JjlZr3oh476hMsf9yqGXbb/+81n0Va1Uc3reWjAdUXCYztH3/o/HMvh6yvd06j8VLLUxyBwAIb5PtW5g== +>>>>>>> 76d216e74b (fixups) dependencies: - google-gax "^2.24.1" + google-gax "^2.12.0" "@google-cloud/firestore@^5.0.2": version "5.0.2" @@ -2633,50 +2779,48 @@ google-gax "^2.24.1" protobufjs "^6.8.6" -"@google-cloud/paginator@^3.0.7": - version "3.0.7" - resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" - integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ== +"@google-cloud/paginator@^3.0.0": + version "3.0.5" + resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c" + integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw== dependencies: arrify "^2.0.0" extend "^3.0.2" "@google-cloud/projectify@^2.0.0": - version "2.1.1" - resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" - integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== + version "2.0.1" + resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65" + integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ== "@google-cloud/promisify@^2.0.0": - version "2.0.4" - resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" - integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== + version "2.0.3" + resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8" + integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw== "@google-cloud/storage@^5.6.0", "@google-cloud/storage@^5.8.0": - version "5.18.2" - resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.18.2.tgz#0ded98a69323d253e6dd986650edc89b5c504bf9" - integrity sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg== + version "5.11.0" + resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.11.0.tgz#f2414358f093034410bb03410176a5dcabc7bdf8" + integrity sha512-UgdAwBelXpQhubYOHw0U/hDxCXIXFT2TqDc0JWUxtg+BeePZC0ohoFM/b/tJffE28AZW0urTQax5xbRNoDA1Sw== dependencies: - "@google-cloud/common" "^3.8.1" - "@google-cloud/paginator" "^3.0.7" + "@google-cloud/common" "^3.7.0" + "@google-cloud/paginator" "^3.0.0" "@google-cloud/promisify" "^2.0.0" - abort-controller "^3.0.0" arrify "^2.0.0" - async-retry "^1.3.3" + async-retry "^1.3.1" compressible "^2.0.12" - configstore "^5.0.0" - date-and-time "^2.0.0" + date-and-time "^1.0.0" duplexify "^4.0.0" extend "^3.0.2" - gaxios "^4.0.0" + gcs-resumable-upload "^3.3.0" get-stream "^6.0.0" - google-auth-library "^7.0.0" hash-stream-validation "^0.2.2" - mime "^3.0.0" + mime "^2.2.0" mime-types "^2.0.8" + onetime "^5.1.0" p-limit "^3.0.1" pumpify "^2.0.0" snakeize "^0.1.0" - stream-events "^1.0.4" + stream-events "^1.0.1" xdg-basedir "^4.0.0" "@graphiql/toolkit@^0.4.2": @@ -2688,12 +2832,12 @@ meros "^1.1.4" "@graphql-codegen/cli@^2.3.1": - version "2.6.2" - resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.6.2.tgz#a9aa4656141ee0998cae8c7ad7d0bf9ca8e0c9ae" - integrity sha512-UO75msoVgvLEvfjCezM09cQQqp32+mR8Ma1ACsBpr7nroFvHbgcu2ulx1cMovg4sxDBCsvd9Eq/xOOMpARUxtw== + version "2.3.1" + resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.3.1.tgz#66083293b60e3182603d70031210d59e6f1a16e5" + integrity sha512-xMSvYqFtnRXOp/sVJSyqiFTm70X8ouLXiq5o/R/D3yQtA6NNudAC+Q4oxg9/LZKnRDL6pehwdC8CNnQk0Tf7Sw== dependencies: - "@graphql-codegen/core" "2.5.1" - "@graphql-codegen/plugin-helpers" "^2.4.1" + "@graphql-codegen/core" "2.4.0" + "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-tools/apollo-engine-loader" "^7.0.5" "@graphql-tools/code-file-loader" "^7.0.6" "@graphql-tools/git-loader" "^7.0.5" @@ -2723,7 +2867,7 @@ listr "^0.14.3" listr-update-renderer "^0.5.0" log-symbols "^4.0.0" - minimatch "^4.0.0" + minimatch "^3.0.4" mkdirp "^1.0.4" string-env-interpolation "^1.0.1" ts-log "^2.2.3" @@ -2733,32 +2877,32 @@ yaml "^1.10.0" yargs "^17.0.0" -"@graphql-codegen/core@2.5.1": - version "2.5.1" - resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.5.1.tgz#e3d50d3449b8c58b74ea08e97faf656a1b7fc8a1" - integrity sha512-alctBVl2hMnBXDLwkgmnFPrZVIiBDsWJSmxJcM4GKg1PB23+xuov35GE47YAyAhQItE1B1fbYnbb1PtGiDZ4LA== +"@graphql-codegen/core@2.4.0": + version "2.4.0" + resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.4.0.tgz#d94dcc088b5e117c847ce5b10c4fe1eb7325e180" + integrity sha512-5RiYE1+07jayp/3w/bkyaCXtfKNeKmRabpPP4aRi369WeH2cH37l2K8NbhkIU+zhpnhoqMID61TO56x2fKldZQ== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-tools/schema" "^8.1.2" "@graphql-tools/utils" "^8.1.1" tslib "~2.3.0" "@graphql-codegen/graphql-modules-preset@^2.3.2": - version "2.3.5" - resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.5.tgz#07ef9ef6e66d4fbb76767097a7cc3cace34f8d08" - integrity sha512-y1PcTFr483Imzd346YdmNSvW3FlN4iYj4sRWCRys+WXpiFcXq+D7+1dFZvs75/9bIHoOEeQtusHHuRPy9qJVkA== + version "2.3.2" + resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.2.tgz#df88431e4cff656799b1ab0324e0795606162389" + integrity sha512-O3PPDQejqf3rF9sHqlrl00M+BSIKJAovFWt2zkDr/D3I/XwntR4QdQDKyY9zTotHfPpgJKyxyMzthpdqPD5XUA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" - "@graphql-codegen/visitor-plugin-common" "2.7.1" - "@graphql-tools/utils" "8.6.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/visitor-plugin-common" "2.5.2" + "@graphql-tools/utils" "8.5.5" change-case-all "1.0.14" parse-filepath "^1.0.2" tslib "~2.3.0" -"@graphql-codegen/plugin-helpers@^2.3.2", "@graphql-codegen/plugin-helpers@^2.4.0", "@graphql-codegen/plugin-helpers@^2.4.1": - version "2.4.1" - resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.1.tgz#433845a89b0b4b3a2a0e959e0a2cfe444cf7aeac" - integrity sha512-OPMma7aUnES3Dh+M0BfiNBnJLmYuH60EnbULAhufxFDn/Y2OA0Ht/LQok9beX6VN4ASZEMCOAGItJezGJr5DJw== +"@graphql-codegen/plugin-helpers@^2.3.2": + version "2.3.2" + resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.3.2.tgz#3f9ba625791901d19be733db1dfc9a3dbd0dac44" + integrity sha512-19qFA5XMAWaAY64sBljjDPYfHjE+QMk/+oalCyY13WjSlcLDvYPfmFlCNgFSsydArDELlHR8T1GMbA7C42M8TA== dependencies: "@graphql-tools/utils" "^8.5.2" change-case-all "1.0.14" @@ -2777,34 +2921,34 @@ tslib "~2.3.0" "@graphql-codegen/typescript-resolvers@^2.4.3": - version "2.5.2" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.5.2.tgz#dc19cc4fd8b7750269651adfa331f9f5f6e33032" - integrity sha512-iYgAttxqE/1TFcKmApwC/VzPFiPa22WYXq6XKQH8eDZUQvG2O4yG+2RfBxfPNGM5DnNkiOGBPuGipTSxV7lmaA== + version "2.4.3" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.4.3.tgz#556dbaf23eac0ff9c321d3ce7126d96a839f793f" + integrity sha512-4m3E0zKLSXjGirZcYHHaZ0bxjy/gxvuumShFCKFmYTkHwTfqBaeh/pMhWqLkwC9wimrH6mQoPIYSQHLaF6Eqng== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" - "@graphql-codegen/typescript" "^2.4.5" - "@graphql-codegen/visitor-plugin-common" "2.7.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/typescript" "^2.4.2" + "@graphql-codegen/visitor-plugin-common" "2.5.2" "@graphql-tools/utils" "^8.1.1" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/typescript@^2.4.2", "@graphql-codegen/typescript@^2.4.5": - version "2.4.5" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.5.tgz#80ca7a343511a27cd587c0b220b0a0dd99a4dc4b" - integrity sha512-Ytb8phNHKl/v/wxudsMOAV1dmzIbckWHm2J83PLNOvnu9CGEhgsd67vfe3ZoF95VU2BKSG8BXGa6uL9z2xDmuA== +"@graphql-codegen/typescript@^2.4.2": + version "2.4.2" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.2.tgz#a239d5fd8f11140d5d4c81cfae7ff02054b724dc" + integrity sha512-8ajWidiFqF1KNAywtb/692SjwTyjzrDHo1sf2Q7Z+rh9qDEIrh83VHB8naT/1CefOvxj3MS6GbcsvJMizaE/AQ== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-codegen/schema-ast" "^2.4.1" - "@graphql-codegen/visitor-plugin-common" "2.7.1" + "@graphql-codegen/visitor-plugin-common" "2.5.2" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/visitor-plugin-common@2.7.1": - version "2.7.1" - resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.1.tgz#bdcded24d1d6f329d32b90704397d6001374b893" - integrity sha512-Ew/+0GwGwL3ZSXS0cYz6lVvE7S5SkbTr7caRpLa4FpAdLGNskCgdA1n6W5tX5c7qsaYstqlxp30hJTfgTsYS6A== +"@graphql-codegen/visitor-plugin-common@2.5.2": + version "2.5.2" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.5.2.tgz#90aa4add41e17bca83f1c7c8ad674f2a06065efd" + integrity sha512-qDMraPmumG+vEGAz42/asRkdgIRmQWH5HTc320UX+I6CY6eE/Ey85cgzoqeQGLV8gu4sj3UkNx/3/r79eX4u+Q== dependencies: - "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-tools/optimize" "^1.0.1" "@graphql-tools/relay-operation-optimizer" "^6.3.7" "@graphql-tools/utils" "^8.3.0" @@ -2816,12 +2960,12 @@ tslib "~2.3.0" "@graphql-tools/apollo-engine-loader@^7.0.5": - version "7.2.2" - resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.2.tgz#1463f5d2d95b5ca2b602b35b4922b38935013860" - integrity sha512-jrtA1IvgbaHzla9nyBngNyvajudTcQAVE3//mgrK+DoN7UpUhtoXfxTOOq2tzZN67o4a6Bv/RJsxB3rSI3NLzg== + version "7.2.1" + resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.1.tgz#14e5d0b1032a7d882d22a7533c8969ee3fa797f2" + integrity sha512-Fj/A8+9SXPTXkpKqhcSq7O9WZuMdy5zynGrnMyewbCuw1kSfzgC4pJB76ILSPa5ajOcC5bBmmvXm+yVFVRgVMg== dependencies: "@graphql-tools/utils" "^8.5.1" - cross-undici-fetch "^0.1.19" + cross-undici-fetch "^0.0.20" sync-fetch "0.3.1" tslib "~2.3.0" @@ -2869,16 +3013,15 @@ tslib "~2.2.0" value-or-promise "1.0.6" -"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.5.0": - version "8.5.0" - resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.5.0.tgz#f835b413f9277a07dd6db09d401fbec1ee76af0b" - integrity sha512-P2LLahWpv8eFrqXQi9v/NDLxLBKAugd3rmB8lxeTnCqma19ZM/VaSpvGAgGyjjHKQe097mAeBEkM/7uYbG/NFg== +"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.4.2": + version "8.4.2" + resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-8.4.2.tgz#a61d45719855720304e3656800342cfa17d82558" + integrity sha512-CjggOhiL4WtyG2I3kux+1/p8lQxSFHBj0gwa0NxnQ6Vsnpw7Ig5VP1ovPnitFuBv2k4QdC37Nj2xv2n7DRn8fw== dependencies: "@graphql-tools/batch-execute" "^8.3.1" "@graphql-tools/schema" "^8.3.1" - "@graphql-tools/utils" "^8.5.4" + "@graphql-tools/utils" "^8.5.3" dataloader "2.0.0" - graphql-executor "0.0.18" tslib "~2.3.0" value-or-promise "1.0.11" @@ -2895,13 +3038,13 @@ unixify "^1.0.0" "@graphql-tools/github-loader@^7.0.5": - version "7.2.3" - resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.2.3.tgz#1195150078e48c1b49b5106973c5ec5c928b24c1" - integrity sha512-enbMT5lWtKaLGw0PB9RL9Xg/oc9y89e6ihuxD/ZnnNXo60J1JVNtTy3+gRgXvGOX9WtJgy3UDVudDefrOHsqaA== + version "7.2.1" + resolved "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-7.2.1.tgz#53ce2bf215a0eb083ff985b213402a24f1302da2" + integrity sha512-vqwh2H11ZkAATDam/JqiP0CSqQRPUbjgCDxPdUu/xvST2QKyA4+uVXLBcpBRJc5kJCQjELijeRWVHSk9oN1q6g== dependencies: "@graphql-tools/graphql-tag-pluck" "^7.1.3" "@graphql-tools/utils" "^8.5.1" - cross-undici-fetch "^0.1.19" + cross-undici-fetch "^0.0.20" sync-fetch "0.3.1" tslib "~2.3.0" @@ -2926,22 +3069,30 @@ unixify "^1.0.0" "@graphql-tools/graphql-tag-pluck@^7.1.3": - version "7.1.5" - resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.5.tgz#229ed40f38430cdea750f112cbfad89fbc29129c" - integrity sha512-NKbFcjlg7cbK+scLXc6eVxXIhX4k8QL6lZ/y5Ju7yrpIN18k2vA78dI6W3Qb5qdftxbDNuC+kDmScZfzzxVPjQ== + version "7.1.4" + resolved "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.4.tgz#174b69d40988c3450d310173c5be5af894929c41" + integrity sha512-0V2AY68ip3YmJ9rnIwQGxXsokCeGD9FTQOeSLzpwG74U0VY6bphfaCp5KVGW+W5sGJchTj3HvnmvdmWZnEZWZA== dependencies: - "@babel/parser" "^7.16.8" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" + "@babel/parser" "7.16.4" + "@babel/traverse" "7.16.3" + "@babel/types" "7.16.0" "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" -"@graphql-tools/import@^6.2.6", "@graphql-tools/import@^6.5.7": - version "6.6.5" - resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.5.tgz#e1ec593960288ceda7d5c56c0073c702b1bdcfa0" - integrity sha512-w0/cYuhrr2apn+iGoTToCqt65x2NN2iHQyqRNk/Zw1NJ+e8/C3eKVw0jmW4pYQvSocuPxL4UCSI56SdKO7m3+Q== +"@graphql-tools/import@^6.2.6": + version "6.3.1" + resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz#731c47ab6c6ac9f7994d75c76b6c2fa127d2d483" + integrity sha512-1szR19JI6WPibjYurMLdadHKZoG9C//8I/FZ0Dt4vJSbrMdVNp8WFxg4QnZrDeMG4MzZc90etsyF5ofKjcC+jw== dependencies: - "@graphql-tools/utils" "8.6.1" + resolve-from "5.0.0" + tslib "~2.2.0" + +"@graphql-tools/import@^6.5.7": + version "6.6.1" + resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.1.tgz#2a7e1ceda10103ffeb8652a48ddc47150b035485" + integrity sha512-i9WA6k+erJMci822o9w9DoX+uncVBK60LGGYW8mdbhX0l7wEubUpA000thJ1aarCusYh0u+ZT9qX0HyVPXu25Q== + dependencies: + "@graphql-tools/utils" "8.5.3" resolve-from "5.0.0" tslib "~2.3.0" @@ -2978,17 +3129,34 @@ unixify "1.0.0" valid-url "1.0.9" +<<<<<<< HEAD "@graphql-tools/load@^7.3.0", "@graphql-tools/load@^7.4.1": version "7.5.5" resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.5.tgz#d61e5bdee59b6c8aa9631f74f0b2a70d512e5b31" integrity sha512-qPasit140nwTbMQbFCfZcgaS7q/0+xMQGdkMGU11rtHt6/jMgJIKDUU8/fJGKltNY3EeHlEdVtZmggZD7Rr6bA== +======= +"@graphql-tools/load@^7.3.0": + version "7.5.1" + resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz#8c7f846d2185ddc1d44fdfbf1ed9cb678f69e40b" + integrity sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg== +>>>>>>> f9b03ab02f (fixups) dependencies: "@graphql-tools/schema" "8.3.5" "@graphql-tools/utils" "8.6.5" p-limit "3.1.0" tslib "~2.3.0" -"@graphql-tools/merge@6.0.0 - 6.2.14": +"@graphql-tools/load@^7.4.1": + version "7.4.1" + resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.4.1.tgz#aa572fcef11d6028097b6ef39c13fa9d62e5a441" + integrity sha512-UvBodW5hRHpgBUBVz5K5VIhJDOTFIbRRAGD6sQ2l9J5FDKBEs3u/6JjZDzbdL96br94D5cEd2Tk6auaHpTn7mQ== + dependencies: + "@graphql-tools/schema" "8.3.1" + "@graphql-tools/utils" "^8.5.1" + p-limit "3.1.0" + tslib "~2.3.0" + +"@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.12": version "6.2.14" resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.14.tgz#694e2a2785ba47558e5665687feddd2935e9d94e" integrity sha512-RWT4Td0ROJai2eR66NHejgf8UwnXJqZxXgDWDI+7hua5vNA2OW8Mf9K1Wav1ZkjWnuRp4ztNtkZGie5ISw55ow== @@ -2997,6 +3165,7 @@ "@graphql-tools/utils" "^7.7.0" tslib "~2.2.0" +<<<<<<< HEAD "@graphql-tools/merge@8.2.6": version "8.2.6" resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.6.tgz#7fb615fa9c143c3151ff025e501d52bd48186d19" @@ -3014,10 +3183,12 @@ "@graphql-tools/utils" "8.0.2" tslib "~2.3.0" +======= +>>>>>>> f9b03ab02f (fixups) "@graphql-tools/merge@^8.2.1": - version "8.2.2" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.2.tgz#433566c662a33f5a9c3cc5f3ce3753fb0019477a" - integrity sha512-2DyqhIOMUMKbCPqo8p6xSdll2OBcBxGdOrxlJJlFQvinsSaYqp/ct3dhAxNtzaIcvSVgXvttQqfD7O2ziFtE7Q== + version "8.2.1" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.1.tgz#bf83aa06a0cfc6a839e52a58057a84498d0d51ff" + integrity sha512-Q240kcUszhXiAYudjuJgNuLgy9CryDP3wp83NOZQezfA6h3ByYKU7xI6DiKrdjyVaGpYN3ppUmdj0uf5GaXzMA== dependencies: "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" @@ -3033,11 +3204,11 @@ tslib "~2.3.0" "@graphql-tools/optimize@^1.0.1": - version "1.2.0" - resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.2.0.tgz#292d0a269f95d04bc6d822c034569bb7e591fb26" - integrity sha512-l0PTqgHeorQdeOizUor6RB49eOAng9+abSxiC5/aHRo6hMmXVaqv5eqndlmxCpx9BkgNb3URQbK+ZZHVktkP/g== + version "1.0.1" + resolved "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.0.1.tgz#9933fffc5a3c63f95102b1cb6076fb16ac7bb22d" + integrity sha512-cRlUNsbErYoBtzzS6zXahXeTBZGPVlPHXCpnEZ0XiK/KY/sQL96cyzak0fM/Gk6qEI9/l32MYEICjasiBQrl5w== dependencies: - tslib "~2.3.0" + tslib "~2.0.1" "@graphql-tools/prisma-loader@^7.0.6": version "7.1.1" @@ -3074,10 +3245,17 @@ relay-compiler "12.0.0" tslib "~2.3.0" +<<<<<<< HEAD "@graphql-tools/schema@8.3.5": version "8.3.5" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.5.tgz#ebec0c0c7f53e591d34375d6f81d0660852fcaca" integrity sha512-3mJ/K7TdL+fnEUtCUqF4qkh1fcNMzaxgwKgO9fSYSTS7zyT16hbi5XSulSTshygHgaD2u+MO588iR4ZJcbZcIg== +======= +"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": + version "8.3.1" + resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" + integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== +>>>>>>> f9b03ab02f (fixups) dependencies: "@graphql-tools/merge" "8.2.6" "@graphql-tools/utils" "8.6.5" @@ -3128,10 +3306,10 @@ valid-url "1.0.9" ws "7.4.5" -"@graphql-tools/url-loader@^7.0.11", "@graphql-tools/url-loader@^7.4.2": - version "7.7.1" - resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.1.tgz#2faabdc1d2c47edc8edc9cc938eee2767189869f" - integrity sha512-K/5amdeHtKYI976HVd/AXdSNvLL7vx5QVjMlwN0OHeYyxSgC+UOH+KkS7cshYgL13SekGu0Mxbg9ABfgQ34ECA== +"@graphql-tools/url-loader@^7.0.11": + version "7.7.0" + resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.0.tgz#504f0030c75b61bca4ac07da49e8cd872c316972" + integrity sha512-mBBb+aJqI4E0MVEzyfi76Pi/G6lGxGTVt/tP1YtKJly7UnonNoWOtDusdL3zIVAGhGgLsNrLbGhLDbwSd6TV6A== dependencies: "@graphql-tools/delegate" "^8.4.1" "@graphql-tools/utils" "^8.5.1" @@ -3139,7 +3317,7 @@ "@n1ru4l/graphql-live-query" "^0.9.0" "@types/websocket" "^1.0.4" "@types/ws" "^8.0.0" - cross-undici-fetch "^0.1.19" + cross-undici-fetch "^0.1.4" dset "^3.1.0" extract-files "^11.0.0" graphql-sse "^1.0.1" @@ -3153,17 +3331,49 @@ value-or-promise "^1.0.11" ws "^8.3.0" -"@graphql-tools/utils@8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.0.2.tgz#795a8383cdfdc89855707d62491c576f439f3c51" - integrity sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ== +"@graphql-tools/url-loader@^7.4.2": + version "7.5.3" + resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.5.3.tgz#a594be40e3bc68d22f76746356e7f0b8117b7137" + integrity sha512-VKMRJ4TOeVIdulkCLGSBUr4stRRwOGcVRXDeoUF+86K32Ufo0H2V0lz7QwS/bCl8GXV19FMgHZCDl4BMJyOXEA== + dependencies: + "@graphql-tools/delegate" "^8.4.1" + "@graphql-tools/utils" "^8.5.1" + "@graphql-tools/wrap" "^8.3.1" + "@n1ru4l/graphql-live-query" "0.9.0" + "@types/websocket" "1.0.4" + "@types/ws" "^8.0.0" + cross-undici-fetch "^0.0.26" + dset "^3.1.0" + extract-files "11.0.0" + graphql-sse "^1.0.1" + graphql-ws "^5.4.1" + isomorphic-ws "4.0.1" + meros "1.1.4" + subscriptions-transport-ws "^0.11.0" + sync-fetch "0.3.1" + tslib "~2.3.0" + valid-url "1.0.9" + value-or-promise "1.0.11" + ws "8.3.0" + +"@graphql-tools/utils@8.5.3", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.3": + version "8.5.3" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.5.3.tgz#404062e62cae9453501197039687749c4885356e" + integrity sha512-HDNGWFVa8QQkoQB0H1lftvaO1X5xUaUDk1zr1qDe0xN1NL0E/CrQdJ5UKLqOvH4hkqVUPxQsyOoAZFkaH6rLHg== dependencies: tslib "~2.3.0" +<<<<<<< HEAD "@graphql-tools/utils@8.6.1", "@graphql-tools/utils@^8.5.4": version "8.6.1" resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== +======= +"@graphql-tools/utils@8.5.5": + version "8.5.5" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.5.5.tgz#019ddb99719feb19602afdb537c06e463df674a9" + integrity sha512-y7zRXWIUI73X+9/rf/0KzrNFMlpRKFfzLiwdbIeWwgLs+NV9vfUOoVkX8luXX6LwQxhSypHATMiwZGM2ro/wJA== +>>>>>>> f9b03ab02f (fixups) dependencies: tslib "~2.3.0" @@ -3183,6 +3393,20 @@ camel-case "4.1.2" tslib "~2.2.0" +"@graphql-tools/utils@^8.0.0": + version "8.6.1" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" + integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== + dependencies: + tslib "~2.3.0" + +"@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.6.0": + version "8.6.0" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.0.tgz#f424256a1f3b87d1dcf6f9f675739b2d3627be33" + integrity sha512-rnk+RHaOCeWnfekeQGRh5ycXK1ZAI7Nm0pbeLjA3SiysTdqhWyxNCp5ON4Mvtlid84OY/KB253fQq/2rotznCA== + dependencies: + tslib "~2.3.0" + "@graphql-tools/wrap@^7.0.4": version "7.0.8" resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50" @@ -3195,11 +3419,11 @@ value-or-promise "1.0.6" "@graphql-tools/wrap@^8.3.1": - version "8.4.0" - resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.4.0.tgz#8fb2aa950ab68abe1fb63b6d62fc5b8fc4f8b025" - integrity sha512-fPB3+UnxLIPWDfMvAfBQnGmm8rrejeQjmCy7h9avWHBbkEELcvtrSWnKAvoKowe+WR9PVDM15XQ/PQvcddV0kQ== + version "8.3.2" + resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-8.3.2.tgz#d3bcecb7529d071e4ecc4dfc75b9566e3da79d4f" + integrity sha512-7DcOBFB+Dd84x9dxSm7qS4iJONMyfLnCJb8A19vGPffpu4SMJ3sFcgwibKFu5l6mMUiigKgXna2RRgWI+02bKQ== dependencies: - "@graphql-tools/delegate" "^8.5.0" + "@graphql-tools/delegate" "^8.4.2" "@graphql-tools/schema" "^8.3.1" "@graphql-tools/utils" "^8.5.3" tslib "~2.3.0" @@ -3210,34 +3434,34 @@ resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== -"@grpc/grpc-js@~1.5.0": - version "1.5.5" - resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.5.5.tgz#f850a1bb7de8a1d0bb4821aabd3655d1c928d4c6" - integrity sha512-FTd27ItHlsSG/7hp62xgI9YnqSwRbHRSVmDVR8DwOoC+6t8JhHRXe2JL0U8N9GLc0jS0HrtEbO/KP5+G0ebjLQ== +"@grpc/grpc-js@~1.4.0": + version "1.4.5" + resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.4.5.tgz#0cd840b47180624eeedf066f2cdc422d052401f8" + integrity sha512-A6cOzSu7dqXZ7rzvh/9JZf+Jg/MOpLEMP0IdT8pT8hrWJZ6TB4ydN/MRuqOtAugInJe/VQ9F8BPricUpYZSaZA== dependencies: "@grpc/proto-loader" "^0.6.4" "@types/node" ">=12.12.47" "@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4": - version "0.6.9" - resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7" - integrity sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg== + version "0.6.7" + resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.7.tgz#e62a202f4cf5897bdd0e244dec1dbc80d84bdfa1" + integrity sha512-QzTPIyJxU0u+r2qGe8VMl3j/W2ryhEvBv7hc42OjYfthSj370fUrb7na65rG6w3YLZS/fb8p89iTBobfWGDgdw== dependencies: "@types/long" "^4.0.1" lodash.camelcase "^4.3.0" long "^4.0.0" protobufjs "^6.10.0" - yargs "^16.2.0" + yargs "^16.1.1" "@hapi/hoek@^9.0.0": - version "9.2.1" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" - integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== + version "9.0.4" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz#e80ad4e8e8d2adc6c77d985f698447e8628b6010" + integrity sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw== "@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + version "5.0.0" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== dependencies: "@hapi/hoek" "^9.0.0" @@ -3262,9 +3486,9 @@ scheduler "^0.20.2" "@humanwhocodes/config-array@^0.9.2": - version "0.9.3" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e" - integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ== + version "0.9.2" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" + integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -3291,20 +3515,19 @@ integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== "@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + version "1.0.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== dependencies: camelcase "^5.3.1" find-up "^4.1.0" - get-package-type "^0.1.0" js-yaml "^3.13.1" resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + version "0.1.2" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== "@jest/console@^26.6.2": version "26.6.2" @@ -3477,6 +3700,17 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jest/types@^27.2.5": + version "27.2.5" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132" + integrity sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + "@jimp/bmp@^0.10.3": version "0.10.3" resolved "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz#79a23678e8389865c62e77b0dccc3e069dfc27f0" @@ -3838,9 +4072,9 @@ ioredis "^4.28.5" "@kubernetes/client-node@^0.16.0": - version "0.16.3" - resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.3.tgz#a26a5abbd6e45603b4f75f0baff00e19853e5be7" - integrity sha512-L7IckuyuPfhd+/Urib8MRas9D6sfKEq8IaITYcaE6LlU+Y8MeD7MTbuW6Yb2WdeRuFN8HPSS47mxPnOUNYBXEg== + version "0.16.1" + resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.1.tgz#c78ef667579777c1a532983922807e228dbc9b90" + integrity sha512-/Ah+3gFSjXFeqDMGGTyYBKug44Eu2D2qowKLdiZqxCkHdSNgy+CNk6FU1Vy80WrTvGkF/CZr4az6O5AopAiJEw== dependencies: "@types/js-yaml" "^4.0.1" "@types/node" "^10.12.0" @@ -3857,9 +4091,9 @@ openid-client "^4.1.1" request "^2.88.0" rfc4648 "^1.3.0" - shelljs "^0.8.5" + shelljs "^0.8.4" stream-buffers "^3.0.2" - tar "^6.1.11" + tar "^6.0.2" tmp-promise "^3.0.2" tslib "^1.9.3" underscore "^1.9.1" @@ -4537,14 +4771,14 @@ write-file-atomic "^3.0.3" "@lezer/common@^0.15.0", "@lezer/common@^0.15.5": - version "0.15.11" - resolved "https://registry.npmjs.org/@lezer/common/-/common-0.15.11.tgz#965b5067036305f12e8a3efc344076850be1d3a8" - integrity sha512-vv0nSdIaVCRcJ8rPuDdsrNVfBOYe/4Szr/LhF929XyDmBndLDuWiCCHooGlGlJfzELyO608AyDhVsuX/ZG36NA== + version "0.15.10" + resolved "https://registry.npmjs.org/@lezer/common/-/common-0.15.10.tgz#662da668f46244fb20bfaada67b43b3d0463b344" + integrity sha512-vlr+be73zTDoQBIknBVOh/633tmbQcjxUu9PIeVeYESeBK3V6TuBW96RRFg93Y2cyK9lglz241gOgSn452HFvA== "@lezer/lr@^0.15.0": - version "0.15.8" - resolved "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" - integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== + version "0.15.5" + resolved "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.5.tgz#4bce44169c441d9dda7be398f5202ea65c5f1138" + integrity sha512-DEcLyhdmBxD1foQe7RegLrSlfS/XaTMGLkO5evkzHWAQKh/JnFWp7j7iNB7s2EpxzRrBCh0U+W7JDCeFhv2mng== dependencies: "@lezer/common" "^0.15.0" @@ -4571,24 +4805,24 @@ read-yaml-file "^1.1.0" "@mapbox/node-pre-gyp@^1.0.0": - version "1.0.8" - resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz#32abc8a5c624bc4e46c43d84dfb8b26d33a96f58" - integrity sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg== + version "1.0.5" + resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" + integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== dependencies: detect-libc "^1.0.3" https-proxy-agent "^5.0.0" make-dir "^3.1.0" - node-fetch "^2.6.5" + node-fetch "^2.6.1" nopt "^5.0.0" - npmlog "^5.0.1" + npmlog "^4.1.2" rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" + semver "^7.3.4" + tar "^6.1.0" "@material-table/core@^3.1.0": - version "3.2.5" - resolved "https://registry.npmjs.org/@material-table/core/-/core-3.2.5.tgz#37b3c665bed3ded6c147ad74adb330bf49efb213" - integrity sha512-TmVN/In15faabezW3COb4Ve5+YhqxFEQnf2Q2Cz3FVXXCFqJvtu3pkRLi+7N9UJ5bvistszz6wfHeiZZY1Rf9Q== + version "3.1.0" + resolved "https://registry.npmjs.org/@material-table/core/-/core-3.1.0.tgz#4fc3bd1553359e628413437a4102d8469852c253" + integrity sha512-46vpm1q9v2B5t/VgaEq2JmnftTBYle1yNAX3cfdQsTRZ1iWkpG34qBkNHx/hbOauQPsm5hmeUo1KJJZdwtGL1g== dependencies: "@babel/runtime" "^7.12.5" "@date-io/date-fns" "^1.3.13" @@ -4601,7 +4835,6 @@ prop-types "^15.7.2" react-beautiful-dnd "^13.0.0" react-double-scrollbar "0.0.15" - uuid "^3.4.0" "@material-ui/core@^4.11.0", "@material-ui/core@^4.11.3", "@material-ui/core@^4.12.1", "@material-ui/core@^4.12.2", "@material-ui/core@^4.9.13": version "4.12.3" @@ -4721,9 +4954,9 @@ "@types/gapi.client" "*" "@microsoft/api-documenter@^7.15.0": - version "7.15.3" - resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.15.3.tgz#2aeeb9ef95a59ad2328e7b7a3de66fa715c7eee0" - integrity sha512-tehv1f/aKwGBQp0sheQofz5NQfa61mvTdAe4IHQnVavsyyK71r+P+CVXWewznPYkqFzzVXaTdrCuNGPU5Yd3mg== + version "7.15.0" + resolved "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.15.0.tgz#e6cf24fc0e2f18a71dcf4c5c8100cc083167a81e" + integrity sha512-0KvwFamTIGZk6VE71F5gdDLxszLet0A1PEeb87RTdxr4KC0/yVFQvDyj+ck+HVr5+Exf6RyzIHfou0sgJl9SDA== dependencies: "@microsoft/api-extractor-model" "7.15.3" "@microsoft/tsdoc" "0.13.2" @@ -4766,9 +4999,9 @@ integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== "@microsoft/microsoft-graph-types@^2.6.0": - version "2.14.0" - resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.14.0.tgz#5c9ba1ad153b4a1ddeb330099e9ac55e379882c4" - integrity sha512-O4vcX6+2ivfUhDiZm/p4SIxGv+SQFe3qROcmvZpPluNAqL/Ho5/6LXysgjexvtUtNOUYXN/ZtfZdY30tlwQy+w== + version "2.13.0" + resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.13.0.tgz#aa584e4897665df5a9c8869a226264cd6ec5882b" + integrity sha512-63FfWBLcyNo8tMP4oPcdqHQvk4ehuWpiUMjVLD7zJXPENIowpdwudP969AALkKzlwsjWImamdivGKd2Zc8Z1Uw== "@microsoft/tsdoc-config@~0.15.2": version "0.15.2" @@ -4785,10 +5018,10 @@ resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== -"@mswjs/cookies@^0.1.6", "@mswjs/cookies@^0.1.7": - version "0.1.7" - resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.7.tgz#d334081b2c51057a61c1dd7b76ca3cac02251651" - integrity sha512-bDg1ReMBx+PYDB4Pk7y1Q07Zz1iKIEUWQpkEXiA2lEWg9gvOZ8UBmGXilCEUvyYoRFlmr/9iXTRR69TrgSwX/Q== +"@mswjs/cookies@^0.1.6": + version "0.1.6" + resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.6.tgz#176f77034ab6d7373ae5c94bcbac36fee8869249" + integrity sha512-A53XD5TOfwhpqAmwKdPtg1dva5wrng2gH5xMvklzbd9WLTSVU953eCRa8rtrrm6G7Cy60BOGsBRN89YQK0mlKA== dependencies: "@types/set-cookie-parser" "^2.4.0" set-cookie-parser "^2.4.6" @@ -4805,35 +5038,35 @@ outvariant "^1.2.0" strict-event-emitter "^0.2.0" -"@n1ru4l/graphql-live-query@^0.9.0": +"@n1ru4l/graphql-live-query@0.9.0", "@n1ru4l/graphql-live-query@^0.9.0": version "0.9.0" resolved "https://registry.npmjs.org/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz#defaebdd31f625bee49e6745934f36312532b2bc" integrity sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg== "@n1ru4l/push-pull-async-iterable-iterator@^3.1.0": - version "3.2.0" - resolved "https://registry.npmjs.org/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.2.0.tgz#c15791112db68dd9315d329d652b7e797f737655" - integrity sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q== + version "3.1.0" + resolved "https://registry.npmjs.org/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.1.0.tgz#be450c97d1c7cd6af1a992d53232704454345df9" + integrity sha512-K4scWxGhdQM0masHHy4gIQs2iGiLEXCrXttumknyPJqtdl4J179BjpibWSSQ1fxKdCcHgIlCTKXJU6cMM6D6Wg== -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: - "@nodelib/fs.stat" "2.0.5" + "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== "@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + version "1.2.4" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: - "@nodelib/fs.scandir" "2.1.5" + "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" "@npmcli/arborist@^4.0.4": @@ -4875,19 +5108,19 @@ walk-up-path "^1.0.0" "@npmcli/ci-detect@^1.0.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" - integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== + version "1.3.0" + resolved "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" + integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== "@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + version "1.0.0" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" + integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/git@^2.1.0": +"@npmcli/git@^2.0.1", "@npmcli/git@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== @@ -4910,14 +5143,14 @@ npm-normalize-package-bin "^1.0.1" "@npmcli/map-workspaces@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.1.tgz#da8b4d2e1f4cef30efcc81e425bd11a9bf5489f2" - integrity sha512-awwkB/tSWWaCD8F0IbawBdmoPFlbXMaEPN9LyTuJcyJz404/QhB4B/vhQntpk6uxOAkM+bxR7qWMJghYg0tcYQ== + version "2.0.0" + resolved "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-2.0.0.tgz#e342efbbdd0dad1bba5d7723b674ca668bf8ac5a" + integrity sha512-QBJfpCY1NOAkkW3lFfru9VTdqvMB2TN0/vrevl5xBCv5Fi0XDVcA6rqqSau4Ysi4Iw3fBzyXV7hzyTBDfadf7g== dependencies: "@npmcli/name-from-folder" "^1.0.1" - glob "^7.2.0" - minimatch "^5.0.0" - read-package-json-fast "^2.0.3" + glob "^7.1.6" + minimatch "^3.0.4" + read-package-json-fast "^2.0.1" "@npmcli/metavuln-calculator@^2.0.0": version "2.0.0" @@ -4929,7 +5162,14 @@ pacote "^12.0.0" semver "^7.3.2" -"@npmcli/move-file@^1.0.1", "@npmcli/move-file@^1.1.0": +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@npmcli/move-file@^1.1.0": version "1.1.2" resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== @@ -4962,13 +5202,15 @@ infer-owner "^1.0.4" "@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== + version "1.8.3" + resolved "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz#07f440ed492400bb1114369bc37315eeaaae2bb3" + integrity sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" + infer-owner "^1.0.4" node-gyp "^7.1.0" + puka "^1.0.1" read-package-json-fast "^2.0.1" "@npmcli/run-script@^2.0.0": @@ -4994,7 +5236,7 @@ "@octokit/types" "^6.27.1" "@octokit/webhooks" "^9.0.1" -"@octokit/auth-app@^3.3.0", "@octokit/auth-app@^3.4.0": +"@octokit/auth-app@^3.3.0": version "3.6.1" resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.6.1.tgz#aa5b02cc211175cbc28ce6c03c73373c1206d632" integrity sha512-6oa6CFphIYI7NxxHrdVOzhG7hkcKyGyYocg7lNDSJVauVOLtylg8hNJzoUyPAYKKK0yUeoZamE/lMs2tG+S+JA== @@ -5010,6 +5252,22 @@ universal-github-app-jwt "^1.0.1" universal-user-agent "^6.0.0" +"@octokit/auth-app@^3.4.0": + version "3.4.0" + resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.4.0.tgz#af9f68512e7b8dd071b49e1470a1ddf88ff6a3a3" + integrity sha512-zBVgTnLJb0uoNMGCpcDkkAbPeavHX7oAjJkaDv2nqMmsXSsCw4AbUhjl99EtJQG/JqFY/kLFHM9330Wn0k70+g== + dependencies: + "@octokit/auth-oauth-app" "^4.1.0" + "@octokit/auth-oauth-user" "^1.2.3" + "@octokit/request" "^5.4.11" + "@octokit/request-error" "^2.0.0" + "@octokit/types" "^6.0.3" + "@types/lru-cache" "^5.1.0" + deprecation "^2.3.1" + lru-cache "^6.0.0" + universal-github-app-jwt "^1.0.1" + universal-user-agent "^6.0.0" + "@octokit/auth-oauth-app@^4.0.0", "@octokit/auth-oauth-app@^4.3.0": version "4.3.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.3.0.tgz#de02f184360ffd7cfccef861053784fc4410e7ea" @@ -5023,17 +5281,42 @@ btoa-lite "^1.0.0" universal-user-agent "^6.0.0" +"@octokit/auth-oauth-app@^4.1.0": + version "4.1.2" + resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.1.2.tgz#bf3ff30c260e6e9f10b950386f279befb8fe907d" + integrity sha512-bdNGNRmuDJjKoHla3mUGtkk/xcxKngnQfBEnyk+7VwMqrABKvQB1wQRSrwSWkPPUX7Lcj2ttkPAPG7+iBkMRnw== + dependencies: + "@octokit/auth-oauth-device" "^3.1.1" + "@octokit/auth-oauth-user" "^1.2.1" + "@octokit/request" "^5.3.0" + "@octokit/types" "^6.0.3" + "@types/btoa-lite" "^1.0.0" + btoa-lite "^1.0.0" + universal-user-agent "^6.0.0" + "@octokit/auth-oauth-device@^3.1.1": - version "3.1.2" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.2.tgz#d299f51f491669f37fe7af8738f5ac921e63973c" - integrity sha512-w7Po4Ck6N2aAn2VQyKLuojruiyKROTBv4qs6IwE5rbwF7HhBXXp4A/NKmkpoFIZkiXQtM+N8QtkSck4ApYWdGg== + version "3.1.1" + resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.1.tgz#380499f9a850425e2c7bdeb62afc070181c536a9" + integrity sha512-ykDZROilszXZJ6pYdl6SZ15UZniCs0zDcKgwOZpMz3U0QDHPUhFGXjHToBCAIHwbncMu+jLt4/Nw4lq3FwAw/w== dependencies: "@octokit/oauth-methods" "^1.1.0" "@octokit/request" "^5.4.14" "@octokit/types" "^6.10.0" universal-user-agent "^6.0.0" -"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3", "@octokit/auth-oauth-user@^1.3.0": +"@octokit/auth-oauth-user@^1.2.1", "@octokit/auth-oauth-user@^1.2.3": + version "1.2.4" + resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.2.4.tgz#3594eb7d40cb462240e7e90849781dfa0045aed5" + integrity sha512-efOajupCZBP1veqx5w59Qey0lIud1rDUgxTRjjkQDU3eOBmkAasY1pXemDsQwW0I85jb1P/gn2dMejedVxf9kw== + dependencies: + "@octokit/auth-oauth-device" "^3.1.1" + "@octokit/oauth-methods" "^1.1.0" + "@octokit/request" "^5.4.14" + "@octokit/types" "^6.12.2" + btoa-lite "^1.0.0" + universal-user-agent "^6.0.0" + +"@octokit/auth-oauth-user@^1.3.0": version "1.3.0" resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.3.0.tgz#da4e4529145181a6aa717ae858afb76ebd6e3360" integrity sha512-3QC/TAdk7onnxfyZ24BnJRfZv8TRzQK7SEFUS9vLng4Vv6Hv6I64ujdk/CUkREec8lhrwU764SZ/d+yrjjqhaQ== @@ -5046,11 +5329,11 @@ universal-user-agent "^6.0.0" "@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== + version "2.4.4" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.4.tgz#ee31c69b01d0378c12fd3ffe406030f3d94d3b56" + integrity sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q== dependencies: - "@octokit/types" "^6.0.3" + "@octokit/types" "^6.0.0" "@octokit/auth-unauthenticated@^2.0.0", "@octokit/auth-unauthenticated@^2.0.4": version "2.1.0" @@ -5060,6 +5343,18 @@ "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.0.3" +"@octokit/core@^3.2.3": + version "3.2.4" + resolved "https://registry.npmjs.org/@octokit/core/-/core-3.2.4.tgz#5791256057a962eca972e31818f02454897fd106" + integrity sha512-d9dTsqdePBqOn7aGkyRFe7pQpCXdibSJ5SFnrTr0axevObZrpz3qkWm7t/NjYv5a66z6vhfteriaq4FRz3e0Qg== + dependencies: + "@octokit/auth-token" "^2.4.4" + "@octokit/graphql" "^4.5.8" + "@octokit/request" "^5.4.12" + "@octokit/types" "^6.0.3" + before-after-hook "^2.1.0" + universal-user-agent "^6.0.0" + "@octokit/core@^3.3.2", "@octokit/core@^3.4.0", "@octokit/core@^3.5.1": version "3.5.1" resolved "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" @@ -5074,18 +5369,18 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== + version "6.0.3" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz#dd09b599662d7e1b66374a177ab620d8cdf73487" + integrity sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg== dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" + "@octokit/types" "^5.0.0" + is-plain-object "^3.0.0" + universal-user-agent "^5.0.0" "@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== + version "4.7.0" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.7.0.tgz#cbe12edc2bc61e9eaa5f9e5d092644c92b6fcb74" + integrity sha512-diY0qMPyQjfu4rDu3kDhJ9qIZadIm4IISO3RJSv9ajYUWJUCO0AykbgzLcg1xclxtXgzY583u3gAv66M6zz5SA== dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" @@ -5106,12 +5401,28 @@ fromentries "^1.3.1" universal-user-agent "^6.0.0" -"@octokit/oauth-authorization-url@^4.2.1", "@octokit/oauth-authorization-url@^4.3.1": +"@octokit/oauth-authorization-url@^4.2.1": version "4.3.3" resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.3.tgz#6a6ef38f243086fec882b62744f39b517528dfb9" integrity sha512-lhP/t0i8EwTmayHG4dqLXgU+uPVys4WD/qUNvC+HfB1S1dyqULm5Yx9uKc1x79aP66U1Cb4OZeW8QU/RA9A4XA== -"@octokit/oauth-methods@^1.1.0", "@octokit/oauth-methods@^1.2.2": +"@octokit/oauth-authorization-url@^4.3.1": + version "4.3.1" + resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.1.tgz#008d09bf427a7f61c70b5283040d60a456011a51" + integrity sha512-sI/SOEAvzRhqdzj+kJl+2ifblRve2XU6ZB36Lq25Su8R31zE3GoKToSLh64nWFnKePNi2RrdcMm94UEIQZslOw== + +"@octokit/oauth-methods@^1.1.0": + version "1.2.2" + resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.2.tgz#3d98c548aa2ace36ad8d0ce6593fd49dcbe103cc" + integrity sha512-CFMUMn9DdPLMcpffhKgkwIIClfv0ZToJM4qcg4O0egCoHMYkVlxl22bBoo9qCnuF1U/xn871KEXuozKIX+bA2w== + dependencies: + "@octokit/oauth-authorization-url" "^4.3.1" + "@octokit/request" "^5.4.14" + "@octokit/request-error" "^2.0.5" + "@octokit/types" "^6.12.2" + btoa-lite "^1.0.0" + +"@octokit/oauth-methods@^1.2.2": version "1.2.6" resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.6.tgz#b9ac65e374b2cc55ee9dd8dcdd16558550438ea7" integrity sha512-nImHQoOtKnSNn05uk2o76om1tJWiAo4lOu2xMAHYsNr0fwopP+Dv+2MlGvaMMlFjoqVd3fF3X5ZDTKCsqgmUaQ== @@ -5127,6 +5438,11 @@ resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== +"@octokit/openapi-types@^7.3.2": + version "7.3.2" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-7.3.2.tgz#065ce49b338043ec7f741316ce06afd4d459d944" + integrity sha512-oJhK/yhl9Gt430OrZOzAl2wJqR0No9445vmZ9Ey8GjUZUpwuu/vmEFP0TDhDXdpGDoxD6/EIFHJEcY8nHXpDTA== + "@octokit/plugin-enterprise-rest@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" @@ -5139,11 +5455,31 @@ dependencies: "@octokit/types" "^6.34.0" +"@octokit/plugin-paginate-rest@^2.6.2": + version "2.7.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.7.0.tgz#6bb7b043c246e0654119a6ec4e72a172c9e2c7f3" + integrity sha512-+zARyncLjt9b0FjqPAbJo4ss7HOlBi1nprq+cPlw5vu2+qjy7WvlXhtXFdRHQbSL1Pt+bfAKaLADEkkvg8sP8w== + dependencies: + "@octokit/types" "^6.0.1" + +"@octokit/plugin-request-log@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz#394d59ec734cd2f122431fbaf05099861ece3c44" + integrity sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg== + "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== +"@octokit/plugin-rest-endpoint-methods@5.3.1": + version "5.3.1" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.1.tgz#deddce769b4ec3179170709ab42e4e9e6195aaa9" + integrity sha512-3B2iguGmkh6bQQaVOtCsS0gixrz8Lg0v4JuXPqBcFqLKuJtxAUf3K88RxMEf/naDOI73spD+goJ/o7Ie7Cvdjg== + dependencies: + "@octokit/types" "^6.16.2" + deprecation "^2.3.1" + "@octokit/plugin-rest-endpoint-methods@^5.12.0": version "5.13.0" resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" @@ -5168,7 +5504,7 @@ "@octokit/types" "^6.0.1" bottleneck "^2.15.3" -"@octokit/request-error@^2.0.2", "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": +"@octokit/request-error@^2.0.0", "@octokit/request-error@^2.0.2", "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== @@ -5177,19 +5513,29 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.3.0", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": - version "5.6.3" - resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== +"@octokit/request@^5.3.0", "@octokit/request@^5.4.11", "@octokit/request@^5.4.12", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": + version "5.6.0" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672" + integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.16.1" is-plain-object "^5.0.0" - node-fetch "^2.6.7" + node-fetch "^2.6.1" universal-user-agent "^6.0.0" -"@octokit/rest@^18.1.0", "@octokit/rest@^18.12.0", "@octokit/rest@^18.5.3": +"@octokit/rest@^18.1.0", "@octokit/rest@^18.5.3": + version "18.5.6" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.5.6.tgz#8c9a7c9329c7bbf478af20df78ddeab0d21f6d89" + integrity sha512-8HdG6ZjQdZytU6tCt8BQ2XLC7EJ5m4RrbyU/EARSkAM1/HP3ceOzMG/9atEfe17EDMer3IVdHWLedz2wDi73YQ== + dependencies: + "@octokit/core" "^3.2.3" + "@octokit/plugin-paginate-rest" "^2.6.2" + "@octokit/plugin-request-log" "^1.0.2" + "@octokit/plugin-rest-endpoint-methods" "5.3.1" + +"@octokit/rest@^18.12.0": version "18.12.0" resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== @@ -5199,14 +5545,21 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@octokit/types@^5.0.1": +"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": version "5.5.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz#e5f06e8db21246ca102aa28444cdb13ae17a139b" integrity sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ== dependencies: "@types/node" ">= 8" -"@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.14.2", "@octokit/types@^6.16.1", "@octokit/types@^6.26.0", "@octokit/types@^6.27.1", "@octokit/types@^6.34.0", "@octokit/types@^6.8.2": +"@octokit/types@^6.0.0", "@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.14.2", "@octokit/types@^6.16.1", "@octokit/types@^6.16.2", "@octokit/types@^6.8.2": + version "6.16.4" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.16.4.tgz#d24f5e1bacd2fe96d61854b5bda0e88cf8288dfe" + integrity sha512-UxhWCdSzloULfUyamfOg4dJxV9B+XjgrIZscI0VCbp4eNrjmorGEw+4qdwcpTsu6DIrm9tQsFQS2pK5QkqQ04A== + dependencies: + "@octokit/openapi-types" "^7.3.2" + +"@octokit/types@^6.26.0", "@octokit/types@^6.27.1", "@octokit/types@^6.34.0": version "6.34.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== @@ -5239,17 +5592,35 @@ integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== "@openapi-contrib/openapi-schema-to-json-schema@^3.0.0": - version "3.1.1" - resolved "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.1.1.tgz#e43b09680e652bf1b9e135db3f8648e979b76c07" - integrity sha512-FMvdhv9Jr9tULjJAQaQzhCmNYYj2vQFVnl7CGlLAImZvJal71oedXMGszpPaZTLftAk5TCHqjnirig+P6LZxug== + version "3.0.3" + resolved "https://registry.npmjs.org/@openapi-contrib/openapi-schema-to-json-schema/-/openapi-schema-to-json-schema-3.0.3.tgz#c626eab186938f2751ee54ec68b345133bc0065c" + integrity sha512-/WX/Jos8n7CxvtWPmhlKl9qCAAW0I+VR+V4yXfQxCmB8wmjiz6lPLTGjNk5zD15qi2MGv58++hQLLdow89KdkA== dependencies: fast-deep-equal "^3.1.3" + lodash.clonedeep "^4.5.0" + +"@opencensus/web-types@0.0.7": + version "0.0.7" + resolved "https://registry.npmjs.org/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a" + integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g== + +"@opentelemetry/api@^0.10.2": + version "0.10.2" + resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-0.10.2.tgz#9647b881f3e1654089ff7ea59d587b2d35060654" + integrity sha512-GtpMGd6vkzDMYcpu2t9LlhEgMy/SzBwRnz48EejlRArYqZzqSzAsKmegUK7zHgl+EOIaK9mKHhnRaQu3qw20cA== + dependencies: + "@opentelemetry/context-base" "^0.10.2" "@opentelemetry/api@^1.0.1": version "1.0.4" resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924" integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog== +"@opentelemetry/context-base@^0.10.2": + version "0.10.2" + resolved "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.10.2.tgz#55bea904b2b91aa8a8675df9eaba5961bddb1def" + integrity sha512-hZNKjKOYsckoOEgBziGMnBcX0M7EtstnCmwz5jZUOUYwlZ+/xxX6z3jPu1XVO2Jivk0eLfuP9GP+vFD49CMetw== + "@panva/asn1.js@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" @@ -5483,9 +5854,9 @@ picomatch "^2.2.2" "@rollup/pluginutils@^4.1.1": - version "4.1.2" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751" - integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ== + version "4.1.1" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" + integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== dependencies: estree-walker "^2.0.1" picomatch "^2.2.2" @@ -5524,16 +5895,16 @@ string-argv "~0.3.1" "@samverschueren/stream-to-observable@^0.3.0": - version "0.3.1" - resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" - integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== + version "0.3.0" + resolved "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== dependencies: any-observable "^0.3.0" -"@sideway/address@^4.1.3": - version "4.1.3" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" - integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== +"@sideway/address@^4.1.0": + version "4.1.1" + resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" + integrity sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ== dependencies: "@hapi/hoek" "^9.0.0" @@ -5553,23 +5924,23 @@ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sindresorhus/is@^4.0.0": - version "4.4.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.4.0.tgz#e277e5bdbdf7cb1e20d320f02f5e2ed113cd3185" - integrity sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ== + version "4.0.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" + integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": +"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.8.3": version "1.8.3" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@>=5": - version "9.1.0" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.0.tgz#8c92c56f195e0bed4c893ba59c8e3d55831ca0df" - integrity sha512-M8vapsv9qQupMdzrVzkn5rb9jG7aUTEPAZdMtME2PuBaefksFZVE2C1g4LBRTkF/k3nRDNbDc5tp5NFC1PEYxA== +"@sinonjs/commons@^1.7.0": + version "1.7.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" + integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== dependencies: - "@sinonjs/commons" "^1.7.0" + type-detect "4.0.8" "@sinonjs/fake-timers@^6.0.1": version "6.0.1" @@ -5578,7 +5949,7 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/fake-timers@^7.1.2": +"@sinonjs/fake-timers@^7.0.4", "@sinonjs/fake-timers@^7.1.0": version "7.1.2" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== @@ -5586,9 +5957,9 @@ "@sinonjs/commons" "^1.7.0" "@sinonjs/samsam@^6.0.2": - version "6.1.1" - resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz#627f7f4cbdb56e6419fa2c1a3e4751ce4f6a00b1" - integrity sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA== + version "6.0.2" + resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.0.2.tgz#a0117d823260f282c04bff5f8704bdc2ac6910bb" + integrity sha512-jxPRPp9n93ci7b8hMfJOFDPRLFYadN6FSpeROFTR4UNF4i5b+EK6m4QXPO46BDhFgRy1JuS87zAnFOzCUwMJcQ== dependencies: "@sinonjs/commons" "^1.6.0" lodash.get "^4.4.2" @@ -5776,7 +6147,7 @@ dependencies: "@babel/types" "^7.12.6" -"@svgr/hast-util-to-babel-ast@^6.2.1": +"@svgr/hast-util-to-babel-ast@^6.0.0", "@svgr/hast-util-to-babel-ast@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== @@ -5784,14 +6155,14 @@ "@babel/types" "^7.15.6" entities "^3.0.1" -"@svgr/plugin-jsx@6.2.x", "@svgr/plugin-jsx@^6.2.1": - version "6.2.1" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" - integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== +"@svgr/plugin-jsx@6.2.x": + version "6.2.0" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.0.tgz#5e41a75b12b34cb66509e63e535606161770ff42" + integrity sha512-QJDEe7K5Hkd4Eewu4pcjiOKTCtjB47Ol6lDLXVhf+jEewi+EKJAaAmM+bNixfW6LSNEg8RwOYQN3GZcprqKfHw== dependencies: "@babel/core" "^7.15.5" "@svgr/babel-preset" "^6.2.0" - "@svgr/hast-util-to-babel-ast" "^6.2.1" + "@svgr/hast-util-to-babel-ast" "^6.0.0" svg-parser "^2.0.2" "@svgr/plugin-jsx@^5.5.0": @@ -5804,6 +6175,16 @@ "@svgr/hast-util-to-babel-ast" "^5.5.0" svg-parser "^2.0.2" +"@svgr/plugin-jsx@^6.2.1": + version "6.2.1" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" + integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== + dependencies: + "@babel/core" "^7.15.5" + "@svgr/babel-preset" "^6.2.0" + "@svgr/hast-util-to-babel-ast" "^6.2.1" + svg-parser "^2.0.2" + "@svgr/plugin-svgo@6.2.x", "@svgr/plugin-svgo@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" @@ -5887,9 +6268,9 @@ defer-to-connect "^1.0.1" "@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + version "4.0.5" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" + integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== dependencies: defer-to-connect "^2.0.0" @@ -5901,6 +6282,7 @@ "@babel/runtime" "^7.14.6" "@testing-library/dom" "^8.1.0" +<<<<<<< HEAD "@testing-library/dom@^7.28.1": version "7.31.2" resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" @@ -5915,10 +6297,33 @@ lz-string "^1.4.4" pretty-format "^26.6.2" +======= +<<<<<<< HEAD +>>>>>>> f9b03ab02f (fixups) "@testing-library/dom@^8.0.0", "@testing-library/dom@^8.1.0": version "8.11.3" resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.3.tgz#38fd63cbfe14557021e88982d931e33fb7c1a808" integrity sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA== +======= +"@testing-library/dom@^7.28.1": + version "7.29.6" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.6.tgz#eb37844fb431186db7960a7ff6749ea65a19617c" + integrity sha512-vzTsAXa439ptdvav/4lsKRcGpAQX7b6wBIqia7+iNzqGJ5zjswApxA6jDAsexrc6ue9krWcbh8o+LYkBXW+GCQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + chalk "^4.1.0" + dom-accessibility-api "^0.5.4" + lz-string "^1.4.4" + pretty-format "^26.6.2" + +"@testing-library/dom@^8.1.0": + version "8.11.1" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.1.tgz#03fa2684aa09ade589b460db46b4c7be9fc69753" + integrity sha512-3KQDyx9r0RKYailW2MiYrSSKEfH0GTkI51UGEvJenvcoDoeRYs0PZpi2SXqtnMClQvCqdtTTpOfFETDTVADpAg== +>>>>>>> 76d216e74b (fixups) dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -5930,13 +6335,13 @@ pretty-format "^27.0.2" "@testing-library/jest-dom@^5.10.1": - version "5.16.2" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" - integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== + version "5.14.1" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" + integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^5.0.0" + aria-query "^4.2.2" chalk "^3.0.0" css "^3.0.0" css.escape "^1.5.1" @@ -5956,9 +6361,9 @@ react-error-boundary "^3.1.0" "@testing-library/react@^11.2.5": - version "11.2.7" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" - integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== + version "11.2.6" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.6.tgz#586a23adc63615985d85be0c903f374dab19200b" + integrity sha512-TXMCg0jT8xmuU8BkKMtp8l7Z50Ykew5WNX8UoIKTaLFwKkP2+1YDhOLA2Ga3wY4x29jyntk7EWfum0kjlYiSjQ== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^7.28.1" @@ -5973,9 +6378,9 @@ "@types/react-dom" "*" "@testing-library/user-event@^13.1.8": - version "13.5.0" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" - integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + version "13.1.8" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.1.8.tgz#9cbf342b88d837ee188f9f9f4df6d1beaaf179c2" + integrity sha512-M04HgOlJvxILf5xyrkJaEQfFOtcvhy3usLldQIEg9zgFIYQofSmFGVfFlS7BWowqlBGLrItwGMlPXCoBgoHSiw== dependencies: "@babel/runtime" "^7.12.5" @@ -6056,9 +6461,9 @@ integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== "@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + version "4.2.0" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" + integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== "@types/aws-lambda@^8.10.83": version "8.10.92" @@ -6073,9 +6478,9 @@ "@types/node" "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.18" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" - integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== + version "7.1.9" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" + integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -6084,24 +6489,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + version "7.6.1" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + version "7.0.2" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + version "7.0.15" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" + integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== dependencies: "@babel/types" "^7.3.0" @@ -6126,9 +6531,9 @@ integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg== "@types/cacheable-request@^6.0.1": - version "6.0.2" - resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" - integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== + version "6.0.1" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" + integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" @@ -6161,15 +6566,15 @@ dependencies: "@types/color-name" "*" -"@types/color-name@*": +"@types/color-name@*", "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== "@types/color@^3.0.1": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz#e6d8d72b7aaef4bb9fe80847c26c7c786191016d" - integrity sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA== + version "3.0.2" + resolved "https://registry.npmjs.org/@types/color/-/color-3.0.2.tgz#3779043e782f562aa9157b5fc6bd07e14fd8e7f3" + integrity sha512-INiJl6sfNn8iyC5paxVzqiVUEj2boIlFki02uRTAkKwAj++7aAF+ZfEv/XrIeBa0XI/fTZuDHW8rEEcEVnON+Q== dependencies: "@types/color-convert" "*" @@ -6208,9 +6613,9 @@ "@types/node" "*" "@types/connect@*": - version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + version "3.4.33" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== dependencies: "@types/node" "*" @@ -6227,9 +6632,9 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cookiejar@*": - version "2.1.2" - resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz#66ad9331f63fe8a3d3d9d8c6e3906dd10f6446e8" - integrity sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog== + version "2.1.1" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.1.tgz#90b68446364baf9efd8e8349bb36bd3852b75b80" + integrity sha512-aRnpPa7ysx3aNW60hTiCtLHlQaIFsXFCgQlpakNgDNVFzbtusSY8PwjAQgRWfSk0ekNoBjO51eQRB6upA9uuyw== "@types/core-js@^2.5.4": version "2.5.5" @@ -6260,9 +6665,9 @@ integrity sha512-+0EtEjBfKEDtH9Rk3u3kLOUXM5F+iZK+WvASPb0MhIZl8J8NUvGeZRwKCXl+P3HkYx5TdU4YtcibpqHkSR9n7w== "@types/d3-force@^2.1.1": - version "2.1.4" - resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.4.tgz#98919b87db8a0ca5011d189c598d69251d20344d" - integrity sha512-1XVRc2QbeUSL1FRVE53Irdz7jY+drTwESHIMVirCwkAAMB/yVC8ezAfx/1Alq0t0uOnphoyhRle1ht5CuPgSJQ== + version "2.1.1" + resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-2.1.1.tgz#a18b6f029d056eb0f8f84a09471e6228e4469b14" + integrity sha512-3r+CQv2K/uDTAVg0DGxsbBjV02vgOxb8RhPIv3gd6cp3pdPAZ7wEXpDjUZSoqycAQLSDOxG/AZ54Vx6YXZSbmQ== "@types/d3-interpolate@*": version "3.0.1" @@ -6306,9 +6711,9 @@ integrity sha512-d29EDd0iUBrRoKhPndhDY6U/PYxOWqgIZwKTooy2UkBfU7TNZNpRho0yLWPxlatQrFWk2mnTu71IZQ4+LRgKlQ== "@types/d3-shape@^1": - version "1.3.8" - resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz#c3c15ec7436b4ce24e38de517586850f1fea8e89" - integrity sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg== + version "1.3.5" + resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.5.tgz#c0164c1be1429473016f855871d487f806c4e968" + integrity sha512-aPEax03owTAKynoK8ZkmkZEDZvvT4Y5pWgii4Jp4oQt0gH45j6siDl9gNDVC5kl64XHN2goN9jbYoHK88tFAcA== dependencies: "@types/d3-path" "^1" @@ -6388,9 +6793,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.1" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" - integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + version "6.1.8" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-6.1.8.tgz#7e868f89bc1e520323d405940e49cb912ede5bba" + integrity sha512-CJBhm9pYdUS8cFVbXACWlLxZWFBTQMiM0eI6RYxng3u9oQ9gHdQ5PN89DHPrK4RISRzX62nRsteUlbBgEIdSug== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -6418,7 +6823,7 @@ resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.28", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": version "4.17.28" resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== @@ -6427,6 +6832,15 @@ "@types/qs" "*" "@types/range-parser" "*" +"@types/express-serve-static-core@4.17.27": + version "4.17.27" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401" + integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/express-session@^1.17.2": version "1.17.4" resolved "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.4.tgz#97a30a35e853a61bdd26e727453b8ed314d6166b" @@ -6442,7 +6856,7 @@ "@types/express" "*" "@types/xml2js" "*" -"@types/express@*", "@types/express@4.17.13", "@types/express@^4.17.13", "@types/express@^4.17.6": +"@types/express@*", "@types/express@4.17.13", "@types/express@^4.17.6": version "4.17.13" resolved "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== @@ -6452,7 +6866,14 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5", "@types/fs-extra@^9.0.6": +"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5": + version "9.0.8" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" + integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== + dependencies: + "@types/node" "*" + +"@types/fs-extra@^9.0.6": version "9.0.13" resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== @@ -6484,14 +6905,14 @@ integrity sha512-tmHO66z/f91JZCDqinj/nNvQEszsz/hBT4+MvCSKT5sDzl5Ld/oXZ8WaecCBjRLw2uWKUInUHM9MhEXWkOiNjw== "@types/git-url-parse@^9.0.0": - version "9.0.1" - resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.1.tgz#1c7cc89527ca8b5afcf260ead3b0e4e373c43938" - integrity sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA== + version "9.0.0" + resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.0.tgz#aac1315a44fa4ed5a52c3820f6c3c2fb79cbd12d" + integrity sha512-kA2RxBT/r/ZuDDKwMl+vFWn1Z0lfm1/Ik6Qb91wnSzyzCDa/fkM8gIOq6ruB7xfr37n6Mj5dyivileUVKsidlg== "@types/glob@*": - version "7.2.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + version "7.1.3" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -6502,9 +6923,9 @@ integrity sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw== "@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + version "4.1.3" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" + integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== dependencies: "@types/node" "*" @@ -6536,9 +6957,9 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + version "4.0.0" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" + integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== "@types/http-errors@^1.6.3": version "1.8.2" @@ -6561,7 +6982,17 @@ dependencies: "@types/node" "*" -"@types/humanize-duration@^3.18.1", "@types/humanize-duration@^3.25.1", "@types/humanize-duration@^3.27.1": +"@types/humanize-duration@^3.18.1": + version "3.18.1" + resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.18.1.tgz#10090d596053703e7de0ac43a37b96cd9fc78309" + integrity sha512-MUgbY3CF7hg/a/jogixmAufLjJBQT7WEf8Q+kYJkOc47ytngg1IuZobCngdTjAgY83JWEogippge5O5fplaQlw== + +"@types/humanize-duration@^3.25.1": + version "3.25.1" + resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.25.1.tgz#b6140d5fc00ff3917b3f521784abef4bc0387ccc" + integrity sha512-WZU/4bb+lvzyDmZzjJtp++9mfKy6B3lH6gGISgkcz6SU8hMILKRM0vi08TxIsb0dQB4Gzo68MWLmctu6xqUi9g== + +"@types/humanize-duration@^3.27.1": version "3.27.1" resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz#f14740d1f585a0a8e3f46359b62fda8b0eaa31e7" integrity sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w== @@ -6575,9 +7006,9 @@ rxjs "^6.4.0" "@types/inquirer@^8.1.3": - version "8.2.0" - resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.0.tgz#b9566d048f5ff65159f2ed97aff45fe0f00b35ec" - integrity sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ== + version "8.1.3" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz#dfda4c97cdbe304e4dceb378a80f79448ea5c8fe" + integrity sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ== dependencies: "@types/through" "*" rxjs "^7.2.0" @@ -6590,9 +7021,9 @@ ci-info "^3.1.0" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== "@types/istanbul-lib-report@*": version "3.0.0" @@ -6602,9 +7033,9 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== dependencies: "@types/istanbul-lib-report" "*" @@ -6616,24 +7047,16 @@ "@types/node" "*" "@types/jest-when@^2.7.2": - version "2.7.4" - resolved "https://registry.npmjs.org/@types/jest-when/-/jest-when-2.7.4.tgz#1bedac232f4a54c1a1c01cc641c03ecfd0dad0ec" - integrity sha512-2OC69oyaD33tmSaOjtxvy7ZpBO85OWIw1AbpWVziL4bek5mr795H59qK5EKDpp4dLhtH1QIs54tXpoHEb2mE/A== + version "2.7.2" + resolved "https://registry.npmjs.org/@types/jest-when/-/jest-when-2.7.2.tgz#619fbc5f623bcd0b29efde0e4993c7f0d50d026d" + integrity sha512-vOtj0cev6vO1VX7Jbfg/qvy+sfLI64STsHbKVkggK+1kd11rcMGzFpZKBxUvQfsm4JRULCBISu+qrfs7fYZFGg== dependencies: "@types/jest" "*" -"@types/jest@*": - version "27.4.0" - resolved "https://registry.npmjs.org/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" - integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ== - dependencies: - jest-diff "^27.0.0" - pretty-format "^27.0.0" - -"@types/jest@^26.0.7": - version "26.0.24" - resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" - integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w== +"@types/jest@*", "@types/jest@^26.0.7": + version "26.0.22" + resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.22.tgz#8308a1debdf1b807aa47be2838acdcd91e88fbe6" + integrity sha512-eeWwWjlqxvBxc4oQdkueW5OF/gtfSceKk4OnOAGlUSwS/liBRtZppbJuz1YkgbrbfGOoeBHun9fOvXnjNwrSOw== dependencies: jest-diff "^26.0.0" pretty-format "^26.0.0" @@ -6646,14 +7069,14 @@ "@types/sizzle" "*" "@types/js-cookie@^2.2.6": - version "2.2.7" - resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" - integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== + version "2.2.6" + resolved "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f" + integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw== "@types/js-levenshtein@^1.1.0": - version "1.1.1" - resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz#ba05426a43f9e4e30b631941e0aa17bf0c890ed5" - integrity sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g== + version "1.1.0" + resolved "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.0.tgz#9541eec4ad6e3ec5633270a3a2b55d981edc44a9" + integrity sha512-14t0v1ICYRtRVcHASzes0v/O+TIeASb8aD55cWF1PidtInhFWSXcmhzhHqGjUWf9SUq1w70cvd1cWKUULubAfQ== "@types/js-yaml@^4.0.0", "@types/js-yaml@^4.0.1": version "4.0.5" @@ -6686,9 +7109,9 @@ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/json-stable-stringify@^1.0.32": - version "1.0.33" - resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.33.tgz#099b0712d824d15e2660c20e1c16e6a8381f308c" - integrity sha512-qEWiQff6q2tA5gcJGWwzplQcXdJtm+0oy6IHGHzlOf3eFAkGE/FIPXZK9ofWgNSHVp8AFFI33PJJshS0ei3Gvw== + version "1.0.32" + resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e" + integrity sha512-q9Q6+eUEGwQkv4Sbst3J4PNgDOvpuVuKj79Hl/qnmBMEIPzB5QoFRUtjcgcg2xNUZyYUGXBk5wYIBKHt0A+Mxw== "@types/json5@^0.0.29": version "0.0.29" @@ -6696,9 +7119,9 @@ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/jsonwebtoken@^8.3.3", "@types/jsonwebtoken@^8.5.0": - version "8.5.8" - resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44" - integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A== + version "8.5.0" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5" + integrity sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg== dependencies: "@types/node" "*" @@ -6710,9 +7133,9 @@ jwt-decode "*" "@types/keyv@*": - version "3.1.3" - resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" - integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== + version "3.1.1" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" + integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== dependencies: "@types/node" "*" @@ -6734,24 +7157,41 @@ integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== "@types/lru-cache@^5.1.0": - version "5.1.1" - resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" - integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + version "5.1.0" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" + integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== "@types/lunr@^2.3.3": - version "2.3.4" - resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.4.tgz#728f445855818fb17776d10ef4678f278072eb03" - integrity sha512-j4x4XJwZvorEUbA519VdQ5b9AOU9TSvfi8tvxMAfP8XzNLtFex7A8vFQwqOx3WACbV0KMXbACV3cZl4/gynQ7g== + version "2.3.3" + resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.3.tgz#ec985618fd2712c010f8edab4f1ae7784ad7c583" + integrity sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw== +<<<<<<< HEAD "@types/luxon@^2.0.4", "@types/luxon@^2.0.5", "@types/luxon@^2.0.9": version "2.3.0" resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.3.0.tgz#0f4d912c385e47890374cb694da9bc93bacbe2b0" integrity sha512-mWXdRlg+5dWvxU+uaijB2RY5NrJtMEXR6j+D6W66hPuezSVXrQqQvWa/JNHntgEYgjzeoVRrQVmMWAbKjUJiFQ== +======= +"@types/luxon@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.4.tgz#f7b5a86ccd843c0ccaddfaedd9ee1081bc1cde3b" + integrity sha512-l3xuhmyF2kBldy15SeY6d6HbK2BacEcSK1qTF1ISPtPHr29JH0C1fndz9ExXLKpGl0J6pZi+dGp1i5xesMt60Q== -"@types/mdast@^3.0.0": - version "3.0.10" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" - integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== +"@types/luxon@^2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.5.tgz#29d3b095d55ee50df8f4cf109b16009334d9828e" + integrity sha512-GKrG5v16BOs9XGpouu33hOkAFaiSDi3ZaDXG9F2yAoyzHRBtksZnI60VWY5aM/yAENCccBejrxw8jDY+9OVlxw== + +"@types/luxon@^2.0.9": + version "2.0.9" + resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.9.tgz#782a0edfa6d699191292c13168bd496cd66b87c6" + integrity sha512-ZuzIc7aN+i2ZDMWIiSmMdubR9EMMSTdEzF6R+FckP4p6xdnOYKqknTo/k+xXQvciSXlNGIwA4OPU5X7JIFzYdA== +>>>>>>> 76d216e74b (fixups) + +"@types/mdast@^3.0.0", "@types/mdast@^3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" + integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== dependencies: "@types/unist" "*" @@ -6770,7 +7210,12 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@*", "@types/minimatch@^3.0.3", "@types/minimatch@^3.0.5": +"@types/minimatch@*", "@types/minimatch@^3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/minimatch@^3.0.5": version "3.0.5" resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -6781,9 +7226,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/minipass@*": - version "3.1.2" - resolved "https://registry.npmjs.org/@types/minipass/-/minipass-3.1.2.tgz#e2d7f9df0698aff421dcf145b4fc05b8183b9030" - integrity sha512-foLGjgrJkUjLG/o2t2ymlZGEoBNBa/TfoUZ7oCTkOjP1T43UGBJspovJou/l3ZuHvye2ewR5cZNtp2zyWgILMA== + version "2.2.0" + resolved "https://registry.npmjs.org/@types/minipass/-/minipass-2.2.0.tgz#51ad404e8eb1fa961f75ec61205796807b6f9651" + integrity sha512-wuzZksN4w4kyfoOv/dlpov4NOunwutLA/q7uc00xU02ZyUY+aoM5PWIXEKBMnm0NHd4a+N71BMjq+x7+2Af1fg== dependencies: "@types/node" "*" @@ -6807,52 +7252,42 @@ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/node-fetch@^2.5.0", "@types/node-fetch@^2.5.12", "@types/node-fetch@^2.5.7": - version "2.6.1" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" - integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== + version "2.5.12" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" + integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "17.0.18" - resolved "https://registry.npmjs.org/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074" - integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== +"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^16.9.2": + version "16.11.6" + resolved "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz#6bef7a2a0ad684cf6e90fcfe31cecabd9ce0a3ae" + integrity sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w== -"@types/node@12.20.24": +"@types/node@12.20.24", "@types/node@^12.7.1": version "12.20.24" resolved "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== "@types/node@^10.1.0", "@types/node@^10.12.0": - version "10.17.60" - resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - -"@types/node@^12.7.1": - version "12.20.46" - resolved "https://registry.npmjs.org/@types/node/-/node-12.20.46.tgz#7e49dee4c54fd19584e6a9e0da5f3dc2e9136bc7" - integrity sha512-cPjLXj8d6anFPzFvOPxS3fvly3Shm5nTfl6g8X5smexixbuGUf7hfr21J5tX9JW+UPStp/5P5R8qrKL5IyVJ+A== + version "10.17.13" + resolved "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz#ccebcdb990bd6139cd16e84c39dc2fb1023ca90c" + integrity sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg== "@types/node@^14.14.31", "@types/node@^14.14.32": - version "14.18.12" - resolved "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz#0d4557fd3b94497d793efd4e7d92df2f83b4ef24" - integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== + version "14.17.8" + resolved "https://registry.npmjs.org/@types/node/-/node-14.17.8.tgz#813b73ab7d82ac06ddfd2458b13c88459a3b319f" + integrity sha512-0CHLt50GbUmH/6MrlBIKNdWCglvlyQKkorRf08/0DIi0ryuTPP+ijWLSI19SbDTHSKaagGDELiImY4BSikt61w== "@types/node@^15.6.1": version "15.14.9" resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== -"@types/node@^16.9.2": - version "16.11.25" - resolved "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz#bb812b58bacbd060ce85921250d8b4ca553cd4a2" - integrity sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ== - "@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + version "2.4.0" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== "@types/npm-packlist@^3.0.0": version "3.0.0" @@ -6907,9 +7342,9 @@ "@types/passport-oauth2" "*" "@types/passport-oauth2@*": - version "1.4.11" - resolved "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.11.tgz#fbca527ecb44258774d17bcb251630c321515fa9" - integrity sha512-KUNwmGhe/3xPbjkzkPwwcPmyFwfyiSgtV1qOrPBLaU4i4q9GSCdAOyCbkFG0gUxAyEmYwqo9OAF/rjPjJ6ImdA== + version "1.4.9" + resolved "https://registry.npmjs.org/@types/passport-oauth2/-/passport-oauth2-1.4.9.tgz#134007c4b505a82548c9cb19094c5baeb2205c92" + integrity sha512-QP0q+NVQOaIu2r0e10QWkiUA0Ya5mOBHRJN0UrI+LolMLOP1/VN4EVIpJ3xVwFo+xqNFRoFvFwJhBvKnk7kpUA== dependencies: "@types/express" "*" "@types/oauth" "*" @@ -6944,9 +7379,9 @@ integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== "@types/prettier@^2.0.0": - version "2.4.4" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" - integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== + version "2.0.0" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" + integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== "@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.4" @@ -6966,19 +7401,19 @@ integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== "@types/qs@*": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + version "6.9.6" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" + integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== "@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + version "1.2.3" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== "@types/react-dom@*", "@types/react-dom@>=16.9.0": - version "17.0.11" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" - integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== + version "17.0.9" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" + integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== dependencies: "@types/react" "*" @@ -6989,10 +7424,10 @@ dependencies: "@types/react" "*" -"@types/react-redux@^7.1.20": - version "7.1.22" - resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.22.tgz#0eab76a37ef477cc4b53665aeaf29cb60631b72a" - integrity sha512-GxIA1kM7ClU73I6wg9IRTVwSO9GS+SAKZKe0Enj+82HMU6aoESFU2HNAdNi3+J53IaOHPiUfT3kSG4L828joDQ== +"@types/react-redux@^7.1.16": + version "7.1.19" + resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.19.tgz#477bd0a9b01bae6d6bf809418cdfa7d3c16d4c62" + integrity sha512-L37dSCT0aoJnCgpR8Iuginlbxoh7qhWOXiaDqEsxVMrER1CmVhFD+63NxgJeT4pkmEM28oX0NH4S4f+sXHTZjA== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" @@ -7000,9 +7435,9 @@ redux "^4.0.0" "@types/react-sparklines@^1.7.0": - version "1.7.2" - resolved "https://registry.npmjs.org/@types/react-sparklines/-/react-sparklines-1.7.2.tgz#c14e80623abd3669a10f18d13f6fb9fbdc322f70" - integrity sha512-N1GwO7Ri5C5fE8+CxhiDntuSw1qYdGytBuedKrCxWpaojXm4WnfygbdBdc5sXGX7feMxDXBy9MNhxoUTwrMl4A== + version "1.7.0" + resolved "https://registry.npmjs.org/@types/react-sparklines/-/react-sparklines-1.7.0.tgz#f956d0f7b0e746ad445ce1cd250fe81f8a384684" + integrity sha512-Vd+cME7+Yy3kFNhnid9EBIKiyCQ/at8nqDczIs0UYfIB8AtaRJPqekigv02biOsIbQCvxyvIAIjiTKOC+hHNbA== dependencies: "@types/react" "*" @@ -7014,9 +7449,9 @@ "@types/react" "*" "@types/react-test-renderer@>=16.9.0": - version "17.0.1" - resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b" - integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw== + version "16.9.2" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.2.tgz#e1c408831e8183e5ad748fdece02214a7c2ab6c5" + integrity sha512-4eJr1JFLIAlWhzDkBCkhrOIWOvOxcCAfQh+jiKg7l/nNZcCIL2MHl2dZhogIFKyHzedVWHaVP1Yydq/Ruu4agw== dependencies: "@types/react" "*" @@ -7028,9 +7463,9 @@ "@types/react" "*" "@types/react-transition-group@^4.2.0": - version "4.4.4" - resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" - integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== + version "4.2.4" + resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.2.4.tgz#c7416225987ccdb719262766c1483da8f826838d" + integrity sha512-8DMUaDqh0S70TjkqU0DxOu80tFUiiaS9rxkWip/nb7gtvAsbqOXm02UCmR8zdcjWujgeYPiPNTVpVpKzUDotwA== dependencies: "@types/react" "*" @@ -7078,9 +7513,9 @@ integrity sha512-i7KOGl6xdkfpq5+p2ooC+/XFIRUMkYymZ29SD8p+Ko9lesKGUsh6860ey3YM7Y+ZG7kEDGcjzyLO3sOhozqEeA== "@types/request@^2.47.1": - version "2.48.8" - resolved "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz#0b90fde3b655ab50976cb8c5ac00faca22f5a82c" - integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== + version "2.48.5" + resolved "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz#019b8536b402069f6d11bee1b2c03e7f232937a0" + integrity sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ== dependencies: "@types/caseless" "*" "@types/node" "*" @@ -7107,9 +7542,9 @@ "@types/node" "*" "@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== + version "0.12.0" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/rollup-plugin-peer-deps-external@^2.2.0": version "2.2.1" @@ -7134,14 +7569,14 @@ htmlparser2 "^6.0.0" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + version "0.16.1" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275" + integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA== "@types/semver@^6.0.0": - version "6.2.3" - resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" - integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== + version "6.2.1" + resolved "https://registry.npmjs.org/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba" + integrity sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== "@types/semver@^7.3.8": version "7.3.9" @@ -7163,17 +7598,17 @@ "@types/express" "*" "@types/serve-static@*": - version "1.13.10" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + version "1.13.9" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" + integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/set-cookie-parser@^2.4.0": - version "2.4.2" - resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz#b6a955219b54151bfebd4521170723df5e13caad" - integrity sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w== + version "2.4.0" + resolved "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.0.tgz#10cc0446bad372827671a5195fbd14ebce4a9baf" + integrity sha512-w7BFUq81sy7H/0jN0K5cax8MwRN6NOSURpY4YuO4+mOgoicxCZ33BUYz+gyF/sUf7uDl2We2yGJfppxzEXoAXQ== dependencies: "@types/node" "*" @@ -7183,9 +7618,9 @@ integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@*", "@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + version "2.3.2" + resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" + integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== "@types/sockjs@^0.3.33": version "0.3.33" @@ -7195,24 +7630,32 @@ "@types/node" "*" "@types/ssh2-streams@*": - version "0.1.9" - resolved "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.9.tgz#8ca51b26f08750a780f82ee75ff18d7160c07a87" - integrity sha512-I2J9jKqfmvXLR5GomDiCoHrEJ58hAOmFrekfFqmCFd+A6gaEStvWnPykoWUwld1PNg4G5ag1LwdA+Lz1doRJqg== + version "0.1.8" + resolved "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz#142af404dae059931aea7fcd1511b5478964feb6" + integrity sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA== dependencies: "@types/node" "*" -"@types/ssh2@*", "@types/ssh2@^0.5.48": - version "0.5.51" - resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.51.tgz#8fd9f9d7d3e8973b5227878f8f1e2b4eda1716b3" - integrity sha512-aIq7ownezauW/+VWYaeXwd5J1Evnn4EXyeKi7bT3H6ZLBLoqsmhdvkHYPLpnZPM6unKKKsxTHIyQAVOZnPiJBw== +"@types/ssh2@*": + version "0.5.47" + resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.47.tgz#67a8b35a0527b2bb668f6dea4c84be6ff1abdc19" + integrity sha512-ZhqJg8BRV7OsCi0KVqPr27lUMMmLEeHYw1VXUNGGDlQEDq9HTsKx+wYvi8E6oNC6gRZ7PV99ZMZmMr5vztcYYA== + dependencies: + "@types/node" "*" + "@types/ssh2-streams" "*" + +"@types/ssh2@^0.5.48": + version "0.5.48" + resolved "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.48.tgz#0d9e8654a76eaaf4cfeaeb88d74c4489cfcf7aea" + integrity sha512-cmQu0gp/6RtDXe1r2xXGgi0V0TeCdueDSRMEvBX8cTRT/sSREkUpgCYZLyh+iI8Ql+VNV8Az9toQoYa/IdgHbQ== dependencies: "@types/node" "*" "@types/ssh2-streams" "*" "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.0" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/stoppable@^1.1.0": version "1.1.1" @@ -7222,23 +7665,23 @@ "@types/node" "*" "@types/stream-buffers@^3.0.3": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz#bf128182da7bc62722ca0ddf5458a9c65f76e648" - integrity sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w== + version "3.0.3" + resolved "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.3.tgz#34e565bf64e3e4bdeee23fd4aa58d4636014a02b" + integrity sha512-NeFeX7YfFZDYsCfbuaOmFQ0OjSmHreKBpp7MQ4alWQBHeh2USLsj7qyMyn9t82kjqIX516CR/5SRHnARduRtbQ== dependencies: "@types/node" "*" "@types/styled-jsx@^2.2.8": - version "2.2.9" - resolved "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.9.tgz#e50b3f868c055bcbf9bc353eca6c10fdad32a53f" - integrity sha512-W/iTlIkGEyTBGTEvZCey8EgQlQ5l0DwMqi3iOXlLs2kyBwYTXHKEiU6IZ5EwoRwngL8/dGYuzezSup89ttVHLw== + version "2.2.8" + resolved "https://registry.npmjs.org/@types/styled-jsx/-/styled-jsx-2.2.8.tgz#b50d13d8a3c34036282d65194554cf186bab7234" + integrity sha512-Yjye9VwMdYeXfS71ihueWRSxrruuXTwKCbzue4+5b2rjnQ//AtyM7myZ1BEhNhBQ/nL/RE7bdToUoLln2miKvg== dependencies: "@types/react" "*" "@types/superagent@*": - version "4.1.15" - resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz#63297de457eba5e2bc502a7609426c4cceab434a" - integrity sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ== + version "4.1.7" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.7.tgz#a7d92d98c490ee0f802a127fdf149b9a114f77a5" + integrity sha512-JSwNPgRYjIC4pIeOqLwWwfGj6iP1n5NE6kNBEbGx2V8H78xCPwx7QpNp9plaI30+W3cFEzJO7BIIsXE+dbtaGg== dependencies: "@types/cookiejar" "*" "@types/node" "*" @@ -7281,9 +7724,9 @@ "@types/node" "*" "@types/tern@*": - version "0.23.4" - resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" - integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== + version "0.23.3" + resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" + integrity sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w== dependencies: "@types/estree" "*" @@ -7309,26 +7752,26 @@ "@types/node" "*" "@types/tough-cookie@*": - version "4.0.1" - resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz#8f80dd965ad81f3e1bc26d6f5c727e132721ff40" - integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== + version "4.0.0" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d" + integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A== "@types/trusted-types@*": version "2.0.2" resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== -"@types/tunnel@^0.0.3": - version "0.0.3" - resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9" - integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA== +"@types/tunnel@^0.0.1": + version "0.0.1" + resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" + integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== dependencies: "@types/node" "*" "@types/underscore@^1.8.9": - version "1.11.4" - resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== + version "1.10.23" + resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.10.23.tgz#cc672e8864000d288e1e39c609fd9cab84391ff3" + integrity sha512-vX1NPekXhrLquFWskH2thcvFAha187F/lM6xYOoEMZWwJ/6alSk0/ttmGP/YRqcqtCv0TMbZjYAdZyHAEcuU4g== "@types/unist@*", "@types/unist@^2.0.0": version "2.0.6" @@ -7343,9 +7786,9 @@ "@types/node" "*" "@types/uuid@^8.0.0": - version "8.3.4" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + version "8.3.0" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" + integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== "@types/vinyl@^2.0.4": version "2.0.6" @@ -7376,10 +7819,10 @@ dependencies: "@types/node" "*" -"@types/websocket@^1.0.4": - version "1.0.5" - resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz#3fb80ed8e07f88e51961211cd3682a3a4a81569c" - integrity sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ== +"@types/websocket@1.0.4", "@types/websocket@^1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" + integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== dependencies: "@types/node" "*" @@ -7391,28 +7834,35 @@ "@types/node" "*" "@types/ws@^8.0.0", "@types/ws@^8.2.2": - version "8.2.3" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.2.3.tgz#0bca6b03ba2f41e0fab782d4a573fe284aa907ae" - integrity sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ== + version "8.2.2" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz#7c5be4decb19500ae6b3d563043cd407bf366c21" + integrity sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg== dependencies: "@types/node" "*" "@types/xml2js@*", "@types/xml2js@^0.4.7": - version "0.4.9" - resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.9.tgz#a38267d8c2fe121c96922b12ee3bd89a58a6e20e" - integrity sha512-CHiCKIihl1pychwR2RNX5mAYmJDACgFVCMT5OArMaO3erzwXVcBqPcusr+Vl8yeeXukxZqtF8mZioqX+mpjjdw== + version "0.4.8" + resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.8.tgz#84c120c864a5976d0b5cf2f930a75d850fc2b03a" + integrity sha512-EyvT83ezOdec7BhDaEcsklWy7RSIdi6CNe95tmOAK0yx/Lm30C9K75snT3fYayK59ApC2oyW+rcHErdG05FHJA== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "20.2.1" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" - integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== + version "15.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + version "15.0.4" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" + integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== dependencies: "@types/yargs-parser" "*" @@ -7439,13 +7889,13 @@ integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== "@typescript-eslint/eslint-plugin@^5.9.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.0.tgz#bb46dd7ce7015c0928b98af1e602118e97df6c70" - integrity sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ== + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz#382182d5cb062f52aac54434cfc47c28898c8006" + integrity sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ== dependencies: - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/type-utils" "5.12.0" - "@typescript-eslint/utils" "5.12.0" + "@typescript-eslint/experimental-utils" "5.9.0" + "@typescript-eslint/scope-manager" "5.9.0" + "@typescript-eslint/type-utils" "5.9.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -7453,31 +7903,45 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@^5.0.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.12.0.tgz#b97c599a281f14a68015c25ee24966cb54ba9fc5" - integrity sha512-iFVADWH2CmiDF+E9kFK2r474BO2JILDKw1NVD5ytqHrM3ezsfdu5uo6B+77DH0suM7iUC/yOayHNziuiI9BPbQ== +"@typescript-eslint/experimental-utils@5.9.0", "@typescript-eslint/experimental-utils@^5.0.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz#652762d37d6565ef07af285021b8347b6c79a827" + integrity sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g== dependencies: - "@typescript-eslint/utils" "5.12.0" + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.9.0" + "@typescript-eslint/types" "5.9.0" + "@typescript-eslint/typescript-estree" "5.9.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" "@typescript-eslint/parser@^5.9.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.0.tgz#0ca669861813df99ce54916f66f524c625ed2434" - integrity sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog== + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz#b114011010a87e17b3265ca715e16c76a9834cef" + integrity sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g== dependencies: - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/typescript-estree" "5.12.0" + "@typescript-eslint/scope-manager" "5.9.1" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/typescript-estree" "5.9.1" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" - integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== +"@typescript-eslint/scope-manager@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117" + integrity sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg== dependencies: - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/visitor-keys" "5.12.0" + "@typescript-eslint/types" "5.9.0" + "@typescript-eslint/visitor-keys" "5.9.0" +"@typescript-eslint/scope-manager@5.9.1": + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz#6c27be89f1a9409f284d95dfa08ee3400166fe69" + integrity sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ== + dependencies: + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/visitor-keys" "5.9.1" + +<<<<<<< HEAD "@typescript-eslint/scope-manager@5.16.0": version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz#7e7909d64bd0c4d8aef629cdc764b9d3e1d3a69a" @@ -7490,16 +7954,41 @@ version "5.12.0" resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== +======= +"@typescript-eslint/type-utils@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz#fd5963ead04bc9b7af9c3a8e534d8d39f1ce5f93" + integrity sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ== +>>>>>>> f9b03ab02f (fixups) dependencies: - "@typescript-eslint/utils" "5.12.0" + "@typescript-eslint/experimental-utils" "5.9.0" debug "^4.3.2" tsutils "^3.21.0" -"@typescript-eslint/types@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" - integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== +"@typescript-eslint/types@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3" + integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg== +"@typescript-eslint/types@5.9.1": + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz#1bef8f238a2fb32ebc6ff6d75020d9f47a1593c6" + integrity sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ== + +"@typescript-eslint/typescript-estree@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f" + integrity sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw== + dependencies: + "@typescript-eslint/types" "5.9.0" + "@typescript-eslint/visitor-keys" "5.9.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +<<<<<<< HEAD "@typescript-eslint/types@5.16.0": version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz#5827b011982950ed350f075eaecb7f47d3c643ee" @@ -7509,15 +7998,22 @@ version "5.12.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== +======= +"@typescript-eslint/typescript-estree@5.9.1": + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz#d5b996f49476495070d2b8dd354861cf33c005d6" + integrity sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A== +>>>>>>> f9b03ab02f (fixups) dependencies: - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/visitor-keys" "5.12.0" + "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/visitor-keys" "5.9.1" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" +<<<<<<< HEAD "@typescript-eslint/typescript-estree@5.16.0": version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz#32259459ec62f5feddca66adc695342f30101f61" @@ -7535,14 +8031,17 @@ version "5.12.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== +======= +"@typescript-eslint/visitor-keys@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6" + integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw== +>>>>>>> f9b03ab02f (fixups) dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.12.0" - "@typescript-eslint/types" "5.12.0" - "@typescript-eslint/typescript-estree" "5.12.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "@typescript-eslint/types" "5.9.0" + eslint-visitor-keys "^3.0.0" +<<<<<<< HEAD "@typescript-eslint/utils@^5.10.0": version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz#42218b459d6d66418a4eb199a382bdc261650679" @@ -7559,8 +8058,14 @@ version "5.12.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== +======= +"@typescript-eslint/visitor-keys@5.9.1": + version "5.9.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz#f52206f38128dd4f675cf28070a41596eee985b7" + integrity sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg== +>>>>>>> f9b03ab02f (fixups) dependencies: - "@typescript-eslint/types" "5.12.0" + "@typescript-eslint/types" "5.9.1" eslint-visitor-keys "^3.0.0" "@typescript-eslint/visitor-keys@5.16.0": @@ -7741,7 +8246,12 @@ a-sync-waterfall@^1.0.0: resolved "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== -abab@^2.0.3, abab@^2.0.5: +abab@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +abab@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -7759,9 +8269,9 @@ abort-controller@3.0.0, abort-controller@^3.0.0: event-target-shim "^5.0.0" abstract-logging@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" - integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== + version "2.0.0" + resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.0.tgz#08a85814946c98ef06f4256ad470aba1886d4490" + integrity sha512-/oA9z7JszpIioo6J6dB79LVUgJ3eD3cxkAmdCkvWWS+Y9tPtALs1rLqOekLUXUbYqM2fB9TTK0ibAyZJJOP/CA== accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" @@ -7780,19 +8290,19 @@ acorn-globals@^6.0.0: acorn-walk "^7.1.1" acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + version "1.7.6" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" + integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA== acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + version "5.3.1" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + version "7.1.1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" + integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" @@ -7824,7 +8334,14 @@ after@0.8.2: resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -agent-base@6, agent-base@^6.0.2: +agent-base@6: + version "6.0.1" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" + integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== + dependencies: + debug "4" + +agent-base@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -7867,7 +8384,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.7.0, ajv@~6.12.6: +ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5, ajv@^6.7.0, ajv@~6.12.6: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -7878,25 +8395,37 @@ ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, aj uri-js "^4.2.2" ajv@^7.0.3: - version "7.2.4" - resolved "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz#8e239d4d56cf884bccca8cca362f508446dc160f" - integrity sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A== + version "7.0.3" + resolved "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" +<<<<<<< HEAD ajv@^8.0.0, ajv@^8.10.0, ajv@^8.8.0: version "8.10.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== +======= +ajv@^8.0.0, ajv@^8.8.0: + version "8.9.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" + integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== +>>>>>>> f9b03ab02f (fixups) dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" +alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + already@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/already/-/already-3.3.0.tgz#a5e5becd167cf537b45f8f1c23d331488ed77003" @@ -7910,11 +8439,11 @@ anafanafo@2.0.0: char-width-table-consumer "^1.0.0" ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + version "3.0.0" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== dependencies: - string-width "^4.1.0" + string-width "^3.0.0" ansi-colors@^4.1.1: version "4.1.1" @@ -7927,11 +8456,11 @@ ansi-escapes@^3.0.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: - version "4.3.2" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + version "4.3.1" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: - type-fest "^0.21.3" + type-fest "^0.11.0" ansi-html-community@^0.0.8: version "0.0.8" @@ -7976,10 +8505,11 @@ ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + version "4.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== dependencies: + "@types/color-name" "^1.1.1" color-convert "^2.0.1" ansi-styles@^5.0.0: @@ -8023,13 +8553,13 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-datasource@^3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.1.tgz#a1168dd68371930de3ed4245ad12fa8600efe2cc" - integrity sha512-Z3a8rEUXVPIZ1p8xrFL8bcNhWmhOmovgDArvwIwmJOBnh093ZpRfO+ESJEDAN4KswmyzCLDAwjsW4zQOONdRUw== +apollo-datasource@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.0.tgz#ee84a802c45818e6a21a5f2d427f94851a4f9ebe" + integrity sha512-It8POTZTOCAnedRj2izEVeySN06LIfojigZjWaOY7voLe0DIgtvhql91xr27fuIWsR/Ew9twO3dLBjjvy34J4Q== dependencies: apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.1" + apollo-server-env "^4.2.0" apollo-reporting-protobuf@^3.3.1: version "3.3.1" @@ -8045,16 +8575,25 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" +<<<<<<< HEAD apollo-server-core@^3.6.4, apollo-server-core@^3.6.5: version "3.6.5" resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.5.tgz#f8a30bab49d7ccbd9500b85968accae0d8631927" integrity sha512-9lOTHnJnPV4TiVwt4DMl3HDWGebHxoJIU2tonOuIkRxOUjwCjsDsHfkIrPA3vutmXIb7R3OPxh/mofdDpm7DjQ== +======= +apollo-server-core@^3.6.1: + version "3.6.1" + resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.1.tgz#e835198a2eda5bcb61d2a1174d44ecb0ac414d15" + integrity sha512-V2Us5x7d+w8dVdyFLxEygMgaQ3KZ6Z59HpaQBNHQ7C5wVZhjUXIsgbehBtfzQbMpyMx0z5/8Z8eIrC4zNoGJDw== +>>>>>>> f9b03ab02f (fixups) dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" "@graphql-tools/mock" "^8.1.2" "@graphql-tools/schema" "^8.0.0" + "@graphql-tools/utils" "^8.0.0" "@josephg/resolvable" "^1.0.0" +<<<<<<< HEAD apollo-datasource "^3.3.1" apollo-reporting-protobuf "^3.3.1" apollo-server-caching "^3.3.0" @@ -8062,6 +8601,15 @@ apollo-server-core@^3.6.4, apollo-server-core@^3.6.5: apollo-server-errors "^3.3.1" apollo-server-plugin-base "^3.5.2" apollo-server-types "^3.5.2" +======= + apollo-datasource "^3.3.0" + apollo-reporting-protobuf "^3.3.0" + apollo-server-caching "^3.3.0" + apollo-server-env "^4.2.0" + apollo-server-errors "^3.3.0" + apollo-server-plugin-base "^3.5.0" + apollo-server-types "^3.5.0" +>>>>>>> f9b03ab02f (fixups) async-retry "^1.2.1" fast-json-stable-stringify "^2.1.0" graphql-tag "^2.11.0" @@ -8071,35 +8619,48 @@ apollo-server-core@^3.6.4, apollo-server-core@^3.6.5: sha.js "^2.4.11" uuid "^8.0.0" -apollo-server-env@^4.2.1: - version "4.2.1" - resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" - integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== +apollo-server-env@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.0.tgz#d7cb08a81cee3025cd47b08be80b359d61d85913" + integrity sha512-4xJ+PCoWsFLj4rU6iXrIhqD7nI42goi4Iqrhsof9680ljSzkzd+PCwZsja3mHOFXKUQQUvJ7StVSgwaiRu45+A== dependencies: - node-fetch "^2.6.7" + node-fetch "^2.6.1" -apollo-server-errors@^3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" - integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== +apollo-server-errors@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.0.tgz#ac8ceb1400064312f983d8d70195693fbcf2be3c" + integrity sha512-9/MNlPZBbEjcCdJcUSbKbVEBT9xZS8GSpX7T/TyzcxHSbsXJszSDSipQNGC+PRKTKAUnv61IONScVyLKEZ5XEQ== +<<<<<<< HEAD apollo-server-express@^3.0.0, apollo-server-express@^3.6.4: version "3.6.5" resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.5.tgz#e623ee6f2e2d4cc2b4075baf7624a899a21ec1a6" integrity sha512-mV1Dif//BUq1WFlCWfaSlhsuxhcJ/gGD8HdQ6/s3JEspStS7SgmeSUIwJYl3vw8IA/8j7GNg/EINkc57x2UbdA== +======= +apollo-server-express@^3.0.0, apollo-server-express@^3.6.1: + version "3.6.1" + resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.1.tgz#b8bda303e05c551ac76c9c0b26bc651ca1466912" + integrity sha512-29imWvRPn5GsQq02Akt0+jejpWzpOIZfUmgoiFm4YB7somvhDNw15Pu7fv4sISK8ehNIDF68IpLd2cpY8sCkYQ== +>>>>>>> f9b03ab02f (fixups) dependencies: "@types/accepts" "^1.3.5" "@types/body-parser" "1.19.2" "@types/cors" "2.8.12" "@types/express" "4.17.13" - "@types/express-serve-static-core" "4.17.28" + "@types/express-serve-static-core" "4.17.27" accepts "^1.3.5" +<<<<<<< HEAD apollo-server-core "^3.6.5" apollo-server-types "^3.5.2" +======= + apollo-server-core "^3.6.1" + apollo-server-types "^3.5.0" +>>>>>>> f9b03ab02f (fixups) body-parser "^1.19.0" cors "^2.8.5" parseurl "^1.3.3" +<<<<<<< HEAD apollo-server-plugin-base@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.2.tgz#18a08353f5ea207a07f2c1e66dd7ef2335ce8c84" @@ -8111,18 +8672,40 @@ apollo-server-types@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.2.tgz#903d499a70b9010764cbab4d704ddb8c086aa06f" integrity sha512-vhcbIWsBkoNibABOym4AAPBoNDjokhjUQokKYdwZMeqrb850PMQdNJFrGyXT5onP408Ghv4O8PfgBuPQmeJhVQ== +======= +apollo-server-plugin-base@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.0.tgz#f3cb4f677152b60113f06f8d23b6234ecff847b4" + integrity sha512-dpi+W6wexT4H3cjIhxC9SJABkR8TCfxycoHK+U4jxQXUdg50da+KnMgoWlQbF1tuXtUs4gnJtij1RjuGtKwBhw== + dependencies: + apollo-server-types "^3.5.0" + +apollo-server-types@^3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.0.tgz#82f912d7765152fe1fde86cea8a076e9a0831a9d" + integrity sha512-4JaZNu1kjrzIbppgc78hhIe2DFe+XONf8grprcjTOe0v8dIsuV0tFUnl+awTvTpHU1sdjRCKwnj382BebiL+qw== +>>>>>>> f9b03ab02f (fixups) dependencies: apollo-reporting-protobuf "^3.3.1" apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.1" + apollo-server-env "^4.2.0" apollo-server@^3.0.0: +<<<<<<< HEAD version "3.6.4" resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.4.tgz#e1bc966eb7d03944274056af4b17b380f0ac8696" integrity sha512-PIEDWtfiiiKt0uEMJ7/qiyULPat/ichDN/h9GrrroOFiz/tfU/yJXuHpoq8R/uzVyn4GpEc4OoibC2zOr59zig== dependencies: apollo-server-core "^3.6.4" apollo-server-express "^3.6.4" +======= + version "3.6.1" + resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.1.tgz#29420b1c0cddbf2e18147a3ca7299485f17137a2" + integrity sha512-Y2MY2/WvaTiofVoIR5ZIYt6c6wX8klZRaXI9x+7JBiFV9HMcOuLLpU3+P4r2EVXuN1LLe82m1PgiAYr+a1OmQg== + dependencies: + apollo-server-core "^3.6.1" + apollo-server-express "^3.6.1" +>>>>>>> f9b03ab02f (fixups) express "^4.17.1" aproba@^1.0.3: @@ -8186,9 +8769,9 @@ are-we-there-yet@^3.0.0: readable-stream "^3.6.0" are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + version "1.1.5" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -8253,6 +8836,11 @@ array-differ@^3.0.0: resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -8268,7 +8856,7 @@ array-ify@^1.0.0: resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.1.3, array-includes@^3.1.4: +array-includes@^3.1.2, array-includes@^3.1.3, array-includes@^3.1.4: version "3.1.4" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== @@ -8339,20 +8927,19 @@ asap@^2.0.0, asap@^2.0.3, asap@~2.0.3: resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" asn1@^0.2.4, asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + version "0.2.4" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" @@ -8392,16 +8979,16 @@ astral-regex@^2.0.0: integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-lock@^1.1.0: - version "1.3.1" - resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.3.1.tgz#f2301c200600cde97acc386453b7126fa8aced3c" - integrity sha512-zK7xap9UnttfbE23JmcrNIyueAn6jWshihJqA33U/hEnKprF/lVGBDsBv/bqLm2YMMl1DnpHhUY044eA0t1TUw== + version "1.2.4" + resolved "https://registry.npmjs.org/async-lock/-/async-lock-1.2.4.tgz#80d0d612383045dd0c30eb5aad08510c1397cb91" + integrity sha512-UBQJC2pbeyGutIfYmErGc9RaJYnpZ1FHaxuKwb0ahvGiiCkPUf3p67Io+YLPmmv3RHY+mF6JEtNW8FlHsraAaA== -async-retry@^1.2.1, async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== +async-retry@^1.2.1, async-retry@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" + integrity sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA== dependencies: - retry "0.13.1" + retry "0.12.0" async@0.9.x: version "0.9.2" @@ -8446,30 +9033,32 @@ auto-bind@~4.0.0: integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== autolinker@^3.11.0: - version "3.14.3" - resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.14.3.tgz#c61c424bc6077bcf2fc62803803ec2f58e15a7ec" - integrity sha512-t81i2bCpS+s+5FIhatoww9DmpjhbdiimuU9ATEuLxtZMQ7jLv9fyFn7SWNG8IkEfD4AmYyirL1ss9k1aqVWRvg== + version "3.14.1" + resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.14.1.tgz#6ae4b812b6eaf42d4d68138b9e67757cbf2bc1e4" + integrity sha512-yvsRHIaY51EYDml6MGlbqyJGfl4n7zezGYf+R7gvM8c5LNpRGc4SISkvgAswSS8SWxk/OrGCylKV9mJyVstz7w== dependencies: tslib "^1.9.3" -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" aws-sdk-mock@^5.2.1: - version "5.6.2" - resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.6.2.tgz#664771462953ca8d3806d5a50a63b4a6dbd5290f" - integrity sha512-GRJg8kjRJFLm2aLiPkYSqe/RreHqlqncAeFtWdAbtSxzBdct9EaV6rqSqjyWXKNJG45Rzn2Ojo3F6qVIgkQnSg== + version "5.2.1" + resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.2.1.tgz#126d4d5362c96b7d1d0bd87708a99d626c19ffd4" + integrity sha512-dY7zA1p/lX335V4/aOJ2L8ggXC3a5zokTJFZlZVW3uU+Zej7u+V7WrEcN5TVaJAnk4auT263T6EK/OHW4WjKhw== dependencies: aws-sdk "^2.928.0" sinon "^11.1.1" traverse "^0.6.6" aws-sdk@^2.840.0, aws-sdk@^2.928.0, aws-sdk@^2.948.0: - version "2.1077.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1077.0.tgz#d4a391d38ede867fe9a88f31555f09a338dfdf4e" - integrity sha512-orJvJROs8hJaQRfHsX7Zl5PxEgrD/uTXyqXz9Yu9Io5VVxzvnOty9oHmvEMSlgTIf1qd01gnev/vpvP1HgzKtw== + version "2.1065.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1065.0.tgz#82b6e4e2a6fbccb1767339e309edd4f0daa958e6" + integrity sha512-OFvpXoL104dTFKpU14ILcLDPAlDbkJNIKXnnG2pK+2x++CvzIRJeNyERtUuEo7QMUOwq5U4nIQJKSPt5fBC/HA== dependencies: buffer "4.9.2" events "1.1.1" @@ -8492,9 +9081,9 @@ aws4@^1.11.0, aws4@^1.8.0: integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axe-core@^4.3.5: - version "4.4.1" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== + version "4.3.5" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5" + integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== axios-cached-dns-resolve@0.5.2: version "0.5.2" @@ -8555,14 +9144,14 @@ babel-plugin-dynamic-import-node@^2.3.3: object.assign "^4.1.0" babel-plugin-istanbul@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + version "6.0.0" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" + istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" babel-plugin-jest-hoist@^26.6.2: @@ -8585,12 +9174,12 @@ babel-plugin-polyfill-corejs2@^0.3.0: semver "^6.1.1" babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + version "0.5.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz#d66183bf10976ea677f4149a7fcc4d8df43d4060" + integrity sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" + core-js-compat "^3.20.0" babel-plugin-polyfill-regenerator@^0.3.0: version "0.3.1" @@ -8614,9 +9203,9 @@ babel-polyfill@^6.26.0: regenerator-runtime "^0.10.5" babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + version "1.0.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" + integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -8701,9 +9290,9 @@ badge-maker@^3.3.0: css-color-converter "^2.0.0" bail@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" - integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + version "2.0.1" + resolved "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz#d676736373a374058a935aec81b94c12ba815771" + integrity sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA== balanced-match@^0.4.2: version "0.4.2" @@ -8772,6 +9361,11 @@ bdd-lazy-var@^2.6.0: resolved "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz#ca03fb36d68c5a507c0ba9a4d53160b899e6b7cb" integrity sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A== +before-after-hook@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" + integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== + before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" @@ -8802,10 +9396,17 @@ bfj@^7.0.2: hoopy "^0.1.4" tryer "^1.0.1" +<<<<<<< HEAD big-integer@^1.6.16, big-integer@^1.6.17: version "1.6.51" resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== +======= +big-integer@^1.6.17: + version "1.6.48" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" + integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== +>>>>>>> 76d216e74b (fixups) big.js@^5.2.2: version "5.2.2" @@ -8813,9 +9414,9 @@ big.js@^5.2.2: integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== bignumber.js@^9.0.0: - version "9.0.2" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + version "9.0.1" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== bin-links@^3.0.0: version "3.0.0" @@ -8830,9 +9431,9 @@ bin-links@^3.0.0: write-file-atomic "^4.0.0" binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + version "2.0.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== binary-search@^1.3.5: version "1.3.6" @@ -8898,16 +9499,11 @@ bmp-js@^0.1.0: resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM= -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - body-parser@1.19.2, body-parser@^1.19.0: version "1.19.2" resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" @@ -9060,28 +9656,26 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: - bn.js "^5.0.0" + bn.js "^4.1.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + version "4.0.4" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -9090,15 +9684,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: - version "4.19.3" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" - integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.18.1, browserslist@^4.19.1: + version "4.19.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== dependencies: - caniuse-lite "^1.0.30001312" - electron-to-chromium "^1.4.71" + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" escalade "^3.1.1" - node-releases "^2.0.2" + node-releases "^2.0.1" picocolors "^1.0.0" bser@2.1.1: @@ -9134,9 +9728,9 @@ buffer-equal@0.0.1: integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-indexof-polyfill@~1.0.0: version "1.0.2" @@ -9189,9 +9783,9 @@ buffers@~0.1.1: integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + version "3.1.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== builtin-status-codes@^3.0.0: version "3.0.0" @@ -9209,15 +9803,20 @@ byline@^5.0.0: integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= byte-size@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" - integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== + version "7.0.0" + resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" + integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== bytes@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== + bytes@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -9263,9 +9862,9 @@ cache-base@^1.0.1: unset-value "^1.0.0" cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + version "5.0.3" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" + integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== cacheable-request@^6.0.0: version "6.1.0" @@ -9334,11 +9933,11 @@ camelcase-keys@^6.2.2: quick-lru "^4.0.1" camelcase-keys@^7.0.1: - version "7.0.2" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252" - integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg== + version "7.0.1" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.1.tgz#5a57e6dfb3f6c7929dad15599ee4476a7e9a3b2d" + integrity sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA== dependencies: - camelcase "^6.3.0" + camelcase "^6.2.0" map-obj "^4.1.0" quick-lru "^5.1.1" type-fest "^1.2.1" @@ -9358,10 +9957,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-api@^3.0.0: version "3.0.0" @@ -9373,10 +9972,15 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001312: - version "1.0.30001312" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" - integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.0: + version "1.0.30001282" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd" + integrity sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg== + +caniuse-lite@^1.0.30001286: + version "1.0.30001296" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8" + integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q== canvas@^2.6.1: version "2.9.0" @@ -9409,9 +10013,9 @@ caseless@~0.12.0: integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + version "2.0.0" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz#3d6fb55803832766a24c6f339abc507297eb5d25" + integrity sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA== chainsaw@~0.1.0: version "0.1.0" @@ -9515,21 +10119,31 @@ character-entities-legacy@^1.0.0: resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== +character-entities-legacy@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz#57f4d00974c696e8f74e9f493e7fcb75b44d7ee7" + integrity sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA== + character-entities@^1.0.0: version "1.2.4" resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== character-entities@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.1.tgz#98724833e1e27990dee0bd0f2b8a859c3476aac7" - integrity sha512-OzmutCf2Kmc+6DrFrrPS8/tDh2+DpnrfzdICHWhcVC9eOd0N1PXmQEE1a8iM4IziIAG+8tmTq3K+oo0ubH6RRQ== + version "2.0.0" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz#508355fcc8c73893e0909efc1a44d28da2b6fdf3" + integrity sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA== character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +character-reference-invalid@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz#a0bdeb89c051fe7ed5d3158b2f06af06984f2813" + integrity sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -9571,9 +10185,11 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + version "1.0.2" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" ci-info@^2.0.0: version "2.0.0" @@ -9621,9 +10237,9 @@ classnames@*, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== clean-css@^5.2.2: - version "5.2.4" - resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" - integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== + version "5.2.2" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" + integrity sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w== dependencies: source-map "~0.6.0" @@ -9657,9 +10273,9 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.5.0: - version "2.6.1" - resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + version "2.5.0" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" + integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== cli-table3@~0.6.1: version "0.6.1" @@ -9671,9 +10287,9 @@ cli-table3@~0.6.1: colors "1.4.0" cli-table@^0.3.1: - version "0.3.11" - resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" - integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== + version "0.3.6" + resolved "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" + integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== dependencies: colors "1.0.3" @@ -9819,18 +10435,18 @@ code-point-at@^1.0.0: resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -codemirror-graphql@^1.2.12: - version "1.2.12" - resolved "https://registry.npmjs.org/codemirror-graphql/-/codemirror-graphql-1.2.12.tgz#59cf88ae254d5dabd4e596028977a7ec305cddb7" - integrity sha512-irP+E8HOWtgIdU3PNTU77bNmpEXQYADRRDmKqkjh3w1m0welbxl6HtZgp+c+Mkkz+FXY1+3+gF6nEEj+eJ1xdg== +codemirror-graphql@^1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/codemirror-graphql/-/codemirror-graphql-1.2.11.tgz#337b9348ec649e08627fcb158c6c497a2c1a3d57" + integrity sha512-pB3LVgrwj+qfO1vaVvnzTYBKhkms1hU/t0fiOM7tiov/Kq+l1BXCgYJyh5/muGDxpz7hqzg/fWJwIYNi40kLiA== dependencies: "@codemirror/stream-parser" "^0.19.2" - graphql-language-service "^4.1.5" + graphql-language-service "^4.1.4" codemirror@^5.58.2: - version "5.65.1" - resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.65.1.tgz#5988a812c974c467f964bcc1a00c944e373de502" - integrity sha512-s6aac+DD+4O2u1aBmdxhB7yz2XU7tG3snOyQ05Kxifahz7hoxnfxIRHxiCSEv3TUC38dIVH8G+lZH9UWSfGQxA== + version "5.63.3" + resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.63.3.tgz#97042a242027fe0c87c09b36bc01931d37b76527" + integrity sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw== codeowners-utils@^1.0.2: version "1.0.2" @@ -9843,9 +10459,9 @@ codeowners-utils@^1.0.2: locate-path "^5.0.0" collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + version "1.0.0" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" + integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== collection-visit@^1.0.0: version "1.0.0" @@ -9860,7 +10476,7 @@ color-convert@^0.5.2: resolved "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= -color-convert@^1.9.0, color-convert@^1.9.3: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -9884,10 +10500,10 @@ color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.6.0, color-string@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" - integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== +color-string@^1.5.2, color-string@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" + integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -9897,26 +10513,26 @@ color-support@^1.1.2: resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color@^3.1.3: - version "3.2.1" - resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== +color@3.0.x: + version "3.0.0" + resolved "https://registry.npmjs.org/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" + integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" + color-convert "^1.9.1" + color-string "^1.5.2" color@^4.0.1: - version "4.2.1" - resolved "https://registry.npmjs.org/color/-/color-4.2.1.tgz#498aee5fce7fc982606c8875cab080ac0547c884" - integrity sha512-MFJr0uY4RvTQUKvPq7dh9grVOTYSFeXja2mBXioCGjnjJoXrAp9jJ1NQTDR73c9nwBSAQiNKloKl5zq9WB9UPw== + version "4.0.1" + resolved "https://registry.npmjs.org/color/-/color-4.0.1.tgz#21df44cd10245a91b1ccf5ba031609b0e10e7d67" + integrity sha512-rpZjOKN5O7naJxkH2Rx1sZzzBgaiWECc6BYXjeCE6kF0kcASJYbUq02u7JqIHwCb/j3NhV+QhRL2683aICeGZA== dependencies: color-convert "^2.0.1" - color-string "^1.9.0" + color-string "^1.6.0" colord@^2.9.1: - version "2.9.2" - resolved "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + version "2.9.1" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz#c961ea0efeb57c9f0f4834458f26cb9cc4a3f90e" + integrity sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw== colorette@2.0.16, colorette@^2.0.10, colorette@^2.0.16: version "2.0.16" @@ -9928,7 +10544,7 @@ colors@1.0.3: resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@1.4.0: +colors@1.4.0, colors@^1.1.2: version "1.4.0" resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -9939,19 +10555,19 @@ colors@~1.2.1: integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + version "1.1.2" + resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" + integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ== dependencies: - color "^3.1.3" + color "3.0.x" text-hex "1.0.x" columnify@^1.5.4: - version "1.6.0" - resolved "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + version "1.5.4" + resolved "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= dependencies: - strip-ansi "^6.0.1" + strip-ansi "^3.0.0" wcwidth "^1.0.0" combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: @@ -9976,10 +10592,10 @@ command-exists@^1.2.9: resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@*: - version "9.0.0" - resolved "https://registry.npmjs.org/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40" - integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw== +commander@*, commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== commander@7.1.0: version "7.1.0" @@ -10011,21 +10627,21 @@ commander@^7.2.0: resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== -common-tags@1.8.2, common-tags@^1.8.0: +common-tags@1.8.2: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -10060,12 +10676,12 @@ component-inherit@0.0.3: integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= compress-commons@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz#df2a09a7ed17447642bad10a85cc9a19e5c42a7d" - integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== + version "4.1.0" + resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz#25ec7a4528852ccd1d441a7d4353cd0ece11371b" + integrity sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA== dependencies: buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" + crc32-stream "^4.0.1" normalize-path "^3.0.0" readable-stream "^3.6.0" @@ -10113,6 +10729,16 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -10145,9 +10771,9 @@ concurrently@^7.0.0: yargs "^16.2.0" config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + version "1.1.12" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -10211,9 +10837,9 @@ content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== + version "5.0.12" + resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== dependencies: compare-func "^2.0.0" q "^1.5.1" @@ -10267,9 +10893,9 @@ conventional-commits-filter@^2.0.7: modify-values "^1.0.0" conventional-commits-parser@^3.2.0: - version "3.2.4" - resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + version "3.2.1" + resolved "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" + integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" @@ -10277,6 +10903,7 @@ conventional-commits-parser@^3.2.0: meow "^8.0.0" split2 "^3.0.0" through2 "^4.0.0" + trim-off-newlines "^1.0.0" conventional-recommended-bump@^6.1.0: version "6.1.0" @@ -10293,18 +10920,18 @@ conventional-recommended-bump@^6.1.0: q "^1.5.1" convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" cookie-parser@^1.4.5: - version "1.4.6" - resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594" - integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== + version "1.4.5" + resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" + integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== dependencies: - cookie "0.4.1" + cookie "0.4.0" cookie-signature "1.0.6" cookie-signature@1.0.6: @@ -10312,6 +10939,11 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + cookie@0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" @@ -10339,39 +10971,44 @@ copy-to-clipboard@^3, copy-to-clipboard@^3.2.0, copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== +core-js-compat@^3.20.0, core-js-compat@^3.20.2: + version "3.20.3" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" + integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== dependencies: browserslist "^4.19.1" semver "7.0.0" -core-js-pure@^3.20.2, core-js-pure@^3.6.5: - version "3.21.1" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== +core-js-pure@^3.20.2: + version "3.20.2" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f" + integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg== + +core-js-pure@^3.6.5: + version "3.16.2" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.2.tgz#0ef4b79cabafb251ea86eb7d139b42bd98c533e8" + integrity sha512-oxKe64UH049mJqrKkynWp6Vu0Rlm/BTXO/bJZuN2mmR3RtOFNepLlSWDd1eo16PzHpQAoNG97rLU1V/YxesJjw== core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10: version "2.6.12" resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.4.1, core-js@^3.6.5: +core-js@^3.4.1: version "3.21.1" resolved "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== -core-util-is@1.0.2: +core-js@^3.6.5: + version "3.20.3" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a" + integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag== + +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - cors@^2.8.5: version "2.8.5" resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -10428,30 +11065,30 @@ cpu-features@0.0.2: nan "^2.14.1" crc-32@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz#436d2bcaad27bcb6bd073a2587139d3024a16460" - integrity sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w== + version "1.2.0" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== dependencies: exit-on-epipe "~1.0.1" - printj "~1.3.1" + printj "~1.1.0" -crc32-stream@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz#c922ad22b38395abe9d3870f02fa8134ed709007" - integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== +crc32-stream@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.1.tgz#0f047d74041737f8a55e86837a1b826bd8ab0067" + integrity sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw== dependencies: crc-32 "^1.2.0" readable-stream "^3.4.0" create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + version "4.0.3" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== dependencies: bn.js "^4.1.0" - elliptic "^6.5.3" + elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: +create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -10462,7 +11099,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.7" resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -10510,7 +11147,7 @@ cross-fetch@3.1.4: dependencies: node-fetch "2.6.1" -cross-fetch@3.1.5, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.5: +cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, cross-fetch@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -10546,17 +11183,36 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cross-undici-fetch@^0.1.19: - version "0.1.24" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.24.tgz#2ad23d096ba07cfa1260b1aeb9a78d2132ea3385" - integrity sha512-83KDV6+8pYCn51zSM2cFAwqQ5UQtDaPm89RkUwHxEMDq/cdqYgqo1q+2eM/Xhmd8HeAsGTtecsC4crrQkCn0zg== +cross-undici-fetch@^0.0.20: + version "0.0.20" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.20.tgz#6b7c5ac82a3601edd439f37275ac0319d77a120a" + integrity sha512-5d3WBC4VRHpFndECK9bx4TngXrw0OUXdhX561Ty1ZoqMASz9uf55BblhTC1CO6GhMWnvk9SOqYEXQliq6D2P4A== + dependencies: + abort-controller "^3.0.0" + form-data "^4.0.0" + node-fetch "^2.6.5" + undici "^4.9.3" + +cross-undici-fetch@^0.0.26: + version "0.0.26" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.26.tgz#29d93d56609f4d2334f9d5333d23ef7a242842a7" + integrity sha512-aMDRrLbWr0TGXfY92stlV+XOGpskeqFmWmrKSWsnc8w6gK5LPE83NBh7O7N6gCb2xjwHcm1Yn2nBXMEVH2RBcA== + dependencies: + abort-controller "^3.0.0" + form-data "^4.0.0" + node-fetch "^2.6.5" + undici "^4.9.3" + +cross-undici-fetch@^0.1.4: + version "0.1.13" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.13.tgz#807d17ce5c524c21bc0a6486e97ecccb901c6529" + integrity sha512-nF+g932BrKPoK0RZQKRA9S2IKXeveGPJlaUWXyUEGjjSpAdxBhEHDrMDbiksP2iSNe8O5vn1bN3tTvrd6+yFSg== dependencies: abort-controller "^3.0.0" form-data-encoder "^1.7.1" formdata-node "^4.3.1" - node-fetch "^2.6.7" + node-fetch "^2.6.5" undici "^4.9.3" - web-streams-polyfill "^3.2.0" crypto-browserify@^3.11.0: version "3.12.0" @@ -10597,9 +11253,9 @@ css-color-converter@^2.0.0: css-unit-converter "^1.1.2" css-declaration-sorter@^6.0.3: - version "6.1.4" - resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4" - integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw== + version "6.1.3" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2" + integrity sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA== dependencies: timsort "^0.3.0" @@ -10641,15 +11297,15 @@ css-select@^2.0.0: nth-check "^1.0.2" css-select@^4.1.3: - version "4.2.1" - resolved "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" - integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + version "4.1.3" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" + integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== dependencies: boolbase "^1.0.0" - css-what "^5.1.0" - domhandler "^4.3.0" - domutils "^2.8.0" - nth-check "^2.0.1" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" css-tree@1.0.0-alpha.37: version "1.0.0-alpha.37" @@ -10659,7 +11315,15 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" -css-tree@^1.1.2, css-tree@^1.1.3: +css-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -10685,7 +11349,7 @@ css-what@^3.2.1: resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== -css-what@^5.1.0: +css-what@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== @@ -10714,52 +11378,53 @@ cssfilter@0.0.10: resolved "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= -cssnano-preset-default@^5.1.12: - version "5.1.12" - resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.12.tgz#64e2ad8e27a279e1413d2d2383ef89a41c909be9" - integrity sha512-rO/JZYyjW1QNkWBxMGV28DW7d98UDLaF759frhli58QFehZ+D/LSmwQ2z/ylBAe2hUlsIWTq6NYGfQPq65EF9w== +cssnano-preset-default@^5.1.7: + version "5.1.7" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.7.tgz#68c3ad1ec6a810482ec7d06b2d70fc34b6b0d70c" + integrity sha512-bWDjtTY+BOqrqBtsSQIbN0RLGD2Yr2CnecpP0ydHNafh9ZUEre8c8VYTaH9FEbyOt0eIfEUAYYk5zj92ioO8LA== dependencies: css-declaration-sorter "^6.0.3" - cssnano-utils "^3.0.2" - postcss-calc "^8.2.0" - postcss-colormin "^5.2.5" - postcss-convert-values "^5.0.4" - postcss-discard-comments "^5.0.3" - postcss-discard-duplicates "^5.0.3" - postcss-discard-empty "^5.0.3" - postcss-discard-overridden "^5.0.4" - postcss-merge-longhand "^5.0.6" - postcss-merge-rules "^5.0.6" - postcss-minify-font-values "^5.0.4" - postcss-minify-gradients "^5.0.6" - postcss-minify-params "^5.0.5" - postcss-minify-selectors "^5.1.3" - postcss-normalize-charset "^5.0.3" - postcss-normalize-display-values "^5.0.3" - postcss-normalize-positions "^5.0.4" - postcss-normalize-repeat-style "^5.0.4" - postcss-normalize-string "^5.0.4" - postcss-normalize-timing-functions "^5.0.3" - postcss-normalize-unicode "^5.0.4" - postcss-normalize-url "^5.0.5" - postcss-normalize-whitespace "^5.0.4" - postcss-ordered-values "^5.0.5" - postcss-reduce-initial "^5.0.3" - postcss-reduce-transforms "^5.0.4" - postcss-svgo "^5.0.4" - postcss-unique-selectors "^5.0.4" + cssnano-utils "^2.0.1" + postcss-calc "^8.0.0" + postcss-colormin "^5.2.1" + postcss-convert-values "^5.0.2" + postcss-discard-comments "^5.0.1" + postcss-discard-duplicates "^5.0.1" + postcss-discard-empty "^5.0.1" + postcss-discard-overridden "^5.0.1" + postcss-merge-longhand "^5.0.4" + postcss-merge-rules "^5.0.3" + postcss-minify-font-values "^5.0.1" + postcss-minify-gradients "^5.0.3" + postcss-minify-params "^5.0.2" + postcss-minify-selectors "^5.1.0" + postcss-normalize-charset "^5.0.1" + postcss-normalize-display-values "^5.0.1" + postcss-normalize-positions "^5.0.1" + postcss-normalize-repeat-style "^5.0.1" + postcss-normalize-string "^5.0.1" + postcss-normalize-timing-functions "^5.0.1" + postcss-normalize-unicode "^5.0.1" + postcss-normalize-url "^5.0.3" + postcss-normalize-whitespace "^5.0.1" + postcss-ordered-values "^5.0.2" + postcss-reduce-initial "^5.0.1" + postcss-reduce-transforms "^5.0.1" + postcss-svgo "^5.0.3" + postcss-unique-selectors "^5.0.2" -cssnano-utils@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.0.2.tgz#d82b4991a27ba6fec644b39bab35fe027137f516" - integrity sha512-KhprijuQv2sP4kT92sSQwhlK3SJTbDIsxcfIEySB0O+3m9esFOai7dP9bMx5enHAh2MwarVIcnwiWoOm01RIbQ== +cssnano-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2" + integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== cssnano@^5.0.1: - version "5.0.17" - resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.17.tgz#ff45713c05cfc780a1aeb3e663b6f224d091cabf" - integrity sha512-fmjLP7k8kL18xSspeXTzRhaFtRI7DL9b8IcXR80JgtnWBpvAzHT7sCR/6qdn0tnxIaINUN6OEQu83wF57Gs3Xw== + version "5.0.11" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.11.tgz#743397a05e04cb87e9df44b7659850adfafc3646" + integrity sha512-5SHM31NAAe29jvy0MJqK40zZ/8dGlnlzcfHKw00bWMVFp8LWqtuyPSFwbaoIoxvt71KWJOfg8HMRGrBR3PExCg== dependencies: - cssnano-preset-default "^5.1.12" + cssnano-preset-default "^5.1.7" + is-resolvable "^1.1.0" lilconfig "^2.0.3" yaml "^1.10.2" @@ -10780,47 +11445,47 @@ cssom@~0.3.6: resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.3.0: +cssstyle@^2.2.0, cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" -csstype@^2.5.2: - version "2.6.19" - resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa" - integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ== +csstype@^2.5.2, csstype@^2.6.7: + version "2.6.17" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz#4cf30eb87e1d1a005d8b6510f95292413f6a1c0e" + integrity sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A== csstype@^3.0.2, csstype@^3.0.6: - version "3.0.10" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" - integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== + version "3.0.7" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" + integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== -csv-generate@^3.4.3: - version "3.4.3" - resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz#bc42d943b45aea52afa896874291da4b9108ffff" - integrity sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw== +csv-generate@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/csv-generate/-/csv-generate-3.2.4.tgz#440dab9177339ee0676c9e5c16f50e2b3463c019" + integrity sha512-qNM9eqlxd53TWJeGtY1IQPj90b563Zx49eZs8e0uMyEvPgvNVmX1uZDtdzAcflB3PniuH9creAzcFOdyJ9YGvA== -csv-parse@^4.16.3: - version "4.16.3" - resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" - integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== +csv-parse@^4.8.8: + version "4.12.0" + resolved "https://registry.npmjs.org/csv-parse/-/csv-parse-4.12.0.tgz#fd42d6291bbaadd51d3009f6cadbb3e53b4ce026" + integrity sha512-wPQl3H79vWLPI8cgKFcQXl0NBgYYEqVnT1i6/So7OjMpsI540oD7p93r3w6fDSyPvwkTepG05F69/7AViX2lXg== -csv-stringify@^5.6.5: - version "5.6.5" - resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" - integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== +csv-stringify@^5.3.6: + version "5.5.1" + resolved "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.5.1.tgz#f42cdd379b0f7f142933a11f674b1a91ebd0fcd0" + integrity sha512-HM0/86Ks8OwFbaYLd495tqTs1NhscZL52dC4ieKYumy8+nawQYC0xZ63w1NqLf0M148T2YLYqowoImc1giPn0g== csv@^5.3.1: - version "5.5.3" - resolved "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz#cd26c1e45eae00ce6a9b7b27dcb94955ec95207d" - integrity sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g== + version "5.3.2" + resolved "https://registry.npmjs.org/csv/-/csv-5.3.2.tgz#50b344e25dfbb8c62684a1bcec18c22468b2161e" + integrity sha512-odDyucr9OgJTdGM2wrMbJXbOkJx3nnUX3Pt8SFOwlAMOpsUQlz1dywvLMXJWX/4Ib0rjfOsaawuuwfI5ucqBGQ== dependencies: - csv-generate "^3.4.3" - csv-parse "^4.16.3" - csv-stringify "^5.6.5" - stream-transform "^2.1.3" + csv-generate "^3.2.4" + csv-parse "^4.8.8" + csv-stringify "^5.3.6" + stream-transform "^2.0.1" cypress-plugin-snapshots@^1.4.4: version "1.4.4" @@ -11113,6 +11778,14 @@ d3-zoom@^3.0.0: d3-selection "2 - 3" d3-transition "2 - 3" +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + dagre@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee" @@ -11122,9 +11795,9 @@ dagre@^0.8.5: lodash "^4.17.15" damerau-levenshtein@^1.0.7: - version "1.0.8" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + version "1.0.7" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" + integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== dargs@^7.0.0: version "7.0.0" @@ -11152,10 +11825,10 @@ dataloader@2.0.0, dataloader@^2.0.0: resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== -date-and-time@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-2.1.2.tgz#5b0e71296bbdd66ff1ce0e456c77d40f1479db5a" - integrity sha512-YlQUtuqYGPR58I7jzx4TIjknN9wCKjwewiylIp+P4xMuO23mlZje3Qe9gYCKp/6ncbeNpU8ZnPdhQNZnVphveQ== +date-and-time@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/date-and-time/-/date-and-time-1.0.0.tgz#0062394bdf6f44e961f0db00511cb19cdf3cc0a5" + integrity sha512-477D7ypIiqlXBkxhU7YtG9wWZJEQ+RUpujt2quTfgf4+E8g5fNUkB0QIL0bVyP5/TKBg8y55Hfa1R/c4bt3dEw== date-fns@^1.27.2: version "1.30.1" @@ -11163,9 +11836,9 @@ date-fns@^1.27.2: integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== date-fns@^2.16.1, date-fns@^2.18.0: - version "2.28.0" - resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" - integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== + version "2.19.0" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1" + integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg== dateformat@^3.0.0, dateformat@^3.0.3: version "3.0.3" @@ -11173,19 +11846,19 @@ dateformat@^3.0.0, dateformat@^3.0.3: integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== dateformat@^4.5.0: - version "4.6.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" - integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== + version "4.5.1" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c" + integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q== dayjs@^1.10.4: - version "1.10.7" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" - integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== + version "1.10.4" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== debounce@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + version "1.2.0" + resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" @@ -11248,9 +11921,14 @@ decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decimal.js-light@^2.4.1: - version "2.5.1" - resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" - integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== + version "2.5.0" + resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348" + integrity sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg== + +decimal.js@^10.2.0: + version "10.2.0" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" + integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== decimal.js@^10.2.1: version "10.3.1" @@ -11307,17 +11985,17 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@0.6.0, deep-extend@^0.6.0: +deep-extend@0.6.0, deep-extend@^0.6.0, deep-extend@~0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + version "0.1.3" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^4.2.2, deepmerge@~4.2.2: +deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -11342,9 +12020,9 @@ defer-to-connect@^1.0.1: integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + version "2.0.0" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" + integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== define-lazy-prop@^2.0.0: version "2.0.0" @@ -11463,9 +12141,9 @@ detect-indent@^5.0.0: integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + version "6.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== detect-libc@^1.0.3: version "1.0.3" @@ -11482,10 +12160,17 @@ detect-newline@^3.0.0: resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +<<<<<<< HEAD detect-node@^2.0.4, detect-node@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== +======= +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +>>>>>>> 76d216e74b (fixups) detect-port-alt@^1.1.6: version "1.1.6" @@ -11513,11 +12198,6 @@ diff-sequences@^26.6.2: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - diff2html@^2.7.0: version "2.12.2" resolved "https://registry.npmjs.org/diff2html/-/diff2html-2.12.2.tgz#356d35f9c87c42ebd11558bedf1c99c5b00886e8" @@ -11592,9 +12272,9 @@ dns-txt@^2.0.2: buffer-indexof "^1.0.0" docker-compose@^0.23.13: - version "0.23.17" - resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.17.tgz#8816bef82562d9417dc8c790aa4871350f93a2ba" - integrity sha512-YJV18YoYIcxOdJKeFcCFihE6F4M2NExWM/d4S1ITcS9samHKnNUihz9kjggr0dNtsrbpFNc7/Yzd19DWs+m1xg== + version "0.23.13" + resolved "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.13.tgz#77d37bd05b6a966345f631e6d05e961c79514f06" + integrity sha512-/9fYC4g3AO+qsqxIZhmbVnFvJJPcYEV2yJbAPPXH+6AytU3urIY8lUAXOlvY8sl4u25pdKu1JrOfAmWC7lJDJg== dependencies: yaml "^1.10.2" @@ -11630,10 +12310,15 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.11" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.11.tgz#79d5846c4f90eba3e617d9031e921de9324f84ed" - integrity sha512-7X6GvzjYf4yTdRKuCVScV+aA9Fvh5r8WzWrXBH9w82ZWB/eYDMGCnazoC/YAqAzUJWHzLOnZqr46K3iEyUhUvw== +dom-accessibility-api@^0.5.4, dom-accessibility-api@^0.5.6: + version "0.5.6" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.6.tgz#3f5d43b52c7a3bd68b5fb63fa47b4e4c1fdf65a9" + integrity sha512-DplGLZd8L1lN64jlT27N9TVSESFR5STaEJvX+thCby7fuCHonfPpAlodYc3vuUYbDuDec5w8AMP7oCM5TWFsqw== + +dom-accessibility-api@^0.5.9: + version "0.5.10" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c" + integrity sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g== dom-converter@^0.2.0: version "0.2.0" @@ -11650,12 +12335,12 @@ dom-helpers@^3.4.0: "@babel/runtime" "^7.1.2" dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" - integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + version "5.1.4" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" + integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== dependencies: "@babel/runtime" "^7.8.7" - csstype "^3.0.2" + csstype "^2.6.7" dom-serializer@0: version "0.2.2" @@ -11666,18 +12351,18 @@ dom-serializer@0: entities "^2.0.0" dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + version "1.2.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" + integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== dependencies: domelementtype "^2.0.1" - domhandler "^4.2.0" + domhandler "^4.0.0" entities "^2.0.0" dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + version "0.1.1" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= domain-browser@^1.1.1: version "1.2.0" @@ -11689,7 +12374,12 @@ domelementtype@1: resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1, domelementtype@^2.2.0: +domelementtype@^2.0.1, domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== @@ -11701,10 +12391,17 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" - integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== +domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== + dependencies: + domelementtype "^2.1.0" + +domhandler@^4.2.0: + version "4.2.2" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" + integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== dependencies: domelementtype "^2.2.0" @@ -11726,7 +12423,7 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.5.2, domutils@^2.8.0: +domutils@^2.5.2, domutils@^2.6.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -11763,9 +12460,9 @@ dotenv@^10.0.0: integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== dset@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/dset/-/dset-3.1.1.tgz#07de5af7a8d03eab337ad1a8ba77fe17bba61a8c" - integrity sha512-hYf+jZNNqJBD2GiMYb+5mqOIX4R4RRHXU3qWMWYN+rqcR2/YpRL2bUHr8C8fU+5DNvqYjJ8YvMGSLuVPWU1cNg== + version "3.1.0" + resolved "https://registry.npmjs.org/dset/-/dset-3.1.0.tgz#23feb6df93816ea452566308b1374d6e869b0d7b" + integrity sha512-7xTQ5DzyE59Nn+7ZgXDXjKAGSGmXZHqttMVVz1r4QNfmGpyj+cm2YtI3II0c/+4zS4a9yq2mBhgdeq2QnpcYlw== duplexer2@~0.1.4: version "0.1.4" @@ -11779,15 +12476,20 @@ duplexer3@^0.1.4: resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexer@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^4.0.0, duplexify@^4.1.1: - version "4.1.2" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" - integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== + version "4.1.1" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" + integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== dependencies: end-of-stream "^1.4.1" inherits "^2.0.3" @@ -11841,17 +12543,17 @@ elastic-builder@^2.16.0: lodash.isstring "^4.0.1" lodash.omit "^4.5.0" -electron-to-chromium@^1.4.71: - version "1.4.71" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" - integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== +electron-to-chromium@^1.4.17: + version "1.4.35" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.35.tgz#69aabb73d7030733e71c1e970ec16f5ceefbaea4" + integrity sha512-wzTOMh6HGFWeALMI3bif0mzgRrVGyP1BdFRx7IvWukFrSC5QVQELENuy+Fm2dCrAdQH9T3nuqr07n94nPDFBWA== elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= -elliptic@^6.5.3: +elliptic@^6.0.0: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -11865,9 +12567,14 @@ elliptic@^6.5.3: minimalistic-crypto-utils "^1.0.1" emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" - integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + version "0.7.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" + integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== emoji-regex@^8.0.0: version "8.0.0" @@ -11948,15 +12655,22 @@ engine.io@~3.5.0: engine.io-parser "~2.2.0" ws "~7.4.2" +<<<<<<< HEAD enhanced-resolve@^5.9.2: version "5.9.2" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== +======= +enhanced-resolve@^5.8.3: + version "5.8.3" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" + integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== +>>>>>>> f9b03ab02f (fixups) dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.0, enquirer@^2.3.6: +enquirer@^2.3.0: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -11968,30 +12682,25 @@ ent@^2.2.0: resolved "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^2.0.0, entities@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== entities@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + version "2.2.0" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" + integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== envinfo@^7.7.4: - version "7.8.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + version "7.7.4" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" + integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== eol@^0.9.1: version "0.9.1" @@ -12011,9 +12720,9 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" error-stack-parser@^2.0.6: - version "2.0.7" - resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" - integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== + version "2.0.6" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== dependencies: stackframe "^1.1.1" @@ -12022,7 +12731,29 @@ error@^10.4.0: resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== -es-abstract@^1.17.2, es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: +es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" + +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== @@ -12048,7 +12779,7 @@ es-abstract@^1.17.2, es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19 string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" -es-module-lexer@^0.9.0, es-module-lexer@^0.9.3: +es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== @@ -12062,70 +12793,106 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-arm64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz#c89b3c50b4f47668dcbeb0b34ee4615258818e71" - integrity sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw== +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.53" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" -esbuild-darwin-64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz#1c131e8cb133ed935ca32f824349a117c896a15b" - integrity sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug== +es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/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" -esbuild-darwin-arm64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz#3c6245a50109dd84953f53d7833bd3b4f0e8c6fa" - integrity sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw== +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/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" -esbuild-freebsd-64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz#0cdc54e72d3dd9cd992f9c2960055e68a7f8650c" - integrity sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA== +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/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" -esbuild-freebsd-arm64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz#1d11faed3a0c429e99b7dddef84103eb509788b2" - integrity sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg== +esbuild-android-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303" + integrity sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ== -esbuild-linux-32@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz#fd9f033fc27dcab61100cb1eb1c936893a68c841" - integrity sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ== +esbuild-darwin-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz#615ea0a9de67b57a293a7128d7ac83ee307a856d" + integrity sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw== -esbuild-linux-64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz#c04c438514f1359ecb1529205d0c836d4165f198" - integrity sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ== +esbuild-darwin-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz#82054dcfcecb15ccfd237093b8008e7745a99ad9" + integrity sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw== -esbuild-linux-arm64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz#d1b3ab2988ab0734886eb9e811726f7db099ab96" - integrity sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g== +esbuild-freebsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz#778a818c5b078d5cdd6bb6c0e0797217d196999b" + integrity sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A== -esbuild-linux-arm@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz#df7558b6a5076f5eb9fd387c8704f768b61d97fb" - integrity sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw== +esbuild-freebsd-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz#18da93b9f3db2e036f72383bfe73b28b73bb332c" + integrity sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ== -esbuild-linux-mips64le@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz#bb4c47fccc9493d460ffeb1f88e8a97a98a14f8b" - integrity sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw== +esbuild-linux-32@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz#d0d5d9f5bb3536e17ac097e9512019c65b7c0234" + integrity sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg== -esbuild-linux-ppc64le@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz#a332dbc8a1b4e30cfe1261bfaa5cef57c9c8c02a" - integrity sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag== +esbuild-linux-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz#2773d540971999ea7f38107ef92fca753f6a8c30" + integrity sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg== -esbuild-linux-riscv64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz#85675f3f931f5cd7cfb238fd82f77a62ffcb6d86" - integrity sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg== +esbuild-linux-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz#5d4480ce6d6bffab1dd76a23158f5a5ab33e7ba4" + integrity sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A== -esbuild-linux-s390x@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz#a526282a696e6d846f4c628f5315475518c0c0f0" - integrity sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA== +esbuild-linux-arm@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz#c6391b3f7c8fa6d3b99a7e893ce0f45f3a921eef" + integrity sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g== + +esbuild-linux-mips64le@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz#2c8dabac355c502e86c38f9f292b3517d8e181f3" + integrity sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ== + +esbuild-linux-ppc64le@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz#69d71b2820d5c94306072dac6094bae38e77d1c0" + integrity sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng== + +esbuild-linux-riscv64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz#c0ec0fc3a23624deebf657781550d2329cec4213" + integrity sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ== + +esbuild-linux-s390x@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz#ec2af4572d63336cfb27f5a5c851fb1b6617dd91" + integrity sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw== esbuild-loader@^2.18.0: version "2.18.0" @@ -12139,60 +12906,60 @@ esbuild-loader@^2.18.0: tapable "^2.2.0" webpack-sources "^2.2.0" -esbuild-netbsd-64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz#8e456605694719aa1be4be266d6cd569c06dfaf5" - integrity sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g== +esbuild-netbsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz#0e283278e9fdbaa7f0930f93ee113d7759cd865e" + integrity sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA== -esbuild-openbsd-64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz#f2fc51714b4ddabc86e4eb30ca101dd325db2f7d" - integrity sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA== +esbuild-openbsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz#2a73bba04e16d8ef278fbe2be85248e12a2f2cc2" + integrity sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA== -esbuild-sunos-64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz#a408f33ea20e215909e20173a0fd78b1aaad1f8e" - integrity sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g== +esbuild-sunos-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz#8fe03513b8b2e682a6d79d5e3ca5849651a3c1d8" + integrity sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g== -esbuild-windows-32@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz#b9005bbff54dac3975ff355d5de2b5e37165d128" - integrity sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA== +esbuild-windows-32@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz#a75df61e3e49df292a1842be8e877a3153ee644f" + integrity sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg== -esbuild-windows-64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz#2b5a99befeaca6aefdad32d738b945730a60a060" - integrity sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g== +esbuild-windows-64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz#d06cf8bbe4945b8bf95a730d871e54a22f635941" + integrity sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw== -esbuild-windows-arm64@0.14.23: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz#edc560bbadb097eb45fc235aeacb942cb94a38c0" - integrity sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw== +esbuild-windows-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz#f8b1b05c548073be8413a5ecb12d7c2f6e717227" + integrity sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg== esbuild@^0.14.1, esbuild@^0.14.10, esbuild@^0.14.6: - version "0.14.23" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz#95e842cb22bc0c7d82c140adc16788aac91469fe" - integrity sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig== + version "0.14.22" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz#2b55fde89d7aa5aaaad791816d58ff9dfc5ed085" + integrity sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA== optionalDependencies: - esbuild-android-arm64 "0.14.23" - esbuild-darwin-64 "0.14.23" - esbuild-darwin-arm64 "0.14.23" - esbuild-freebsd-64 "0.14.23" - esbuild-freebsd-arm64 "0.14.23" - esbuild-linux-32 "0.14.23" - esbuild-linux-64 "0.14.23" - esbuild-linux-arm "0.14.23" - esbuild-linux-arm64 "0.14.23" - esbuild-linux-mips64le "0.14.23" - esbuild-linux-ppc64le "0.14.23" - esbuild-linux-riscv64 "0.14.23" - esbuild-linux-s390x "0.14.23" - esbuild-netbsd-64 "0.14.23" - esbuild-openbsd-64 "0.14.23" - esbuild-sunos-64 "0.14.23" - esbuild-windows-32 "0.14.23" - esbuild-windows-64 "0.14.23" - esbuild-windows-arm64 "0.14.23" + esbuild-android-arm64 "0.14.22" + esbuild-darwin-64 "0.14.22" + esbuild-darwin-arm64 "0.14.22" + esbuild-freebsd-64 "0.14.22" + esbuild-freebsd-arm64 "0.14.22" + esbuild-linux-32 "0.14.22" + esbuild-linux-64 "0.14.22" + esbuild-linux-arm "0.14.22" + esbuild-linux-arm64 "0.14.22" + esbuild-linux-mips64le "0.14.22" + esbuild-linux-ppc64le "0.14.22" + esbuild-linux-riscv64 "0.14.22" + esbuild-linux-s390x "0.14.22" + esbuild-netbsd-64 "0.14.22" + esbuild-openbsd-64 "0.14.22" + esbuild-sunos-64 "0.14.22" + esbuild-windows-32 "0.14.22" + esbuild-windows-64 "0.14.22" + esbuild-windows-arm64 "0.14.22" escalade@^3.1.1: version "3.1.1" @@ -12229,6 +12996,18 @@ escape-string-regexp@^5.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -12242,9 +13021,9 @@ escodegen@^2.0.0: source-map "~0.6.1" eslint-config-prettier@^8.3.0: - version "8.4.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz#8e6d17c7436649e98c4c2189868562921ef563de" - integrity sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw== + version "8.3.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" + integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== eslint-formatter-friendly@^7.0.0: version "7.0.0" @@ -12265,10 +13044,19 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.1.1, eslint-module-utils@^2.7.2: - version "2.7.3" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== +eslint-module-utils@^2.1.1: + version "2.7.1" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" + integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + pkg-dir "^2.0.0" + +eslint-module-utils@^2.7.2: + version "2.7.2" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" + integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== dependencies: debug "^3.2.7" find-up "^2.1.0" @@ -12319,9 +13107,9 @@ eslint-plugin-import@^2.25.4: tsconfig-paths "^3.12.0" eslint-plugin-jest@^25.3.4: - version "25.7.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" - integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + version "25.3.4" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.3.4.tgz#2031dfe495be1463330f8b80096ddc91f8e6387f" + integrity sha512-CCnwG71wvabmwq/qkz0HWIqBHQxw6pXB1uqt24dxqJ9WB34pVg49bL1sjXphlJHgTMWGhBjN1PicdyxDxrfP5A== dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" @@ -12405,10 +13193,10 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" + integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -12421,14 +13209,14 @@ eslint-utils@^3.0.0: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + version "2.0.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" + integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== eslint-webpack-plugin@^2.6.0: version "2.6.0" @@ -12454,11 +13242,11 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^3.1.1" eslint@^8.6.0: - version "8.9.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz#a2a8227a99599adc4342fd9b854cb8d8d6412fdb" - integrity sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q== + version "8.7.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c" + integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w== dependencies: - "@eslint/eslintrc" "^1.1.0" + "@eslint/eslintrc" "^1.0.5" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -12466,10 +13254,10 @@ eslint@^8.6.0: debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" + eslint-scope "^7.1.0" eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" + eslint-visitor-keys "^3.2.0" + espree "^9.3.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -12499,14 +13287,14 @@ esm@^3.2.25: resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== +espree@^9.2.0, espree@^9.3.0: + version "9.3.0" + resolved "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" + integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== dependencies: acorn "^8.7.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.1.0" esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" @@ -12527,7 +13315,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -12548,9 +13336,9 @@ estree-walker@^1.0.1: integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + version "2.0.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" + integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== esutils@^2.0.2: version "2.0.3" @@ -12562,6 +13350,14 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + event-source-polyfill@^1.0.25: version "1.0.25" resolved "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz#d8bb7f99cb6f8119c2baf086d9f6ee0514b6d9c8" @@ -12585,7 +13381,12 @@ event-target-shim@^5.0.0: resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.3, eventemitter2@^6.4.4: +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== + +eventemitter2@^6.4.4: version "6.4.5" resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== @@ -12689,9 +13490,9 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: zen-observable "^0.8.15" exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== + version "0.3.4" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== execa@4.1.0, execa@^4.0.0: version "4.1.0" @@ -12877,6 +13678,13 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -12925,16 +13733,16 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-files@11.0.0, extract-files@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" + integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== + extract-files@9.0.0, extract-files@^9.0.0: version "9.0.0" resolved "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== -extract-files@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" - integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== - extract-zip@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -12946,15 +13754,25 @@ extract-zip@2.0.1: optionalDependencies: "@types/yauzl" "^2.9.1" +extract-zip@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + version "1.4.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-decode-uri-component@^1.0.1: version "1.0.1" @@ -12971,16 +13789,17 @@ fast-equals@^2.0.0: resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.4.tgz#3add9410585e2d7364c2deeb6a707beadb24b927" integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w== -fast-glob@^3.1.1, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== +fast-glob@^3.1.1: + version "3.2.2" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" + integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" + glob-parent "^5.1.0" merge2 "^1.3.0" - micromatch "^4.0.4" + micromatch "^4.0.2" + picomatch "^2.2.1" fast-json-parse@^1.0.3: version "1.0.3" @@ -12988,9 +13807,9 @@ fast-json-parse@^1.0.3: integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== fast-json-patch@^3.0.0-1: - version "3.1.0" - resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz#ec8cd9b9c4c564250ec8b9140ef7a55f70acaee6" - integrity sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA== + version "3.0.0-1" + resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz#4c68f2e7acfbab6d29d1719c44be51899c93dabb" + integrity sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw== fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" @@ -13007,7 +13826,12 @@ fast-redact@^2.0.0: resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz#dfe3c1ca69367fb226f110aa4ec10ec85462ffdf" integrity sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A== -fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.1.1: +fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7: + version "2.0.8" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" + integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== + +fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -13035,9 +13859,9 @@ fastest-stable-stringify@^2.0.2: integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.6.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" + integrity sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw== dependencies: reusify "^1.0.4" @@ -13049,9 +13873,9 @@ fault@^1.0.0: format "^0.2.0" faye-websocket@^0.11.3: - version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + version "0.11.3" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" @@ -13068,17 +13892,17 @@ fbjs-css-vars@^1.0.0: integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== fbjs@^3.0.0: - version "3.0.4" - resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" - integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + version "3.0.0" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" + integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== dependencies: - cross-fetch "^3.1.5" + cross-fetch "^3.0.4" fbjs-css-vars "^1.0.0" loose-envify "^1.0.0" object-assign "^4.1.0" promise "^7.1.1" setimmediate "^1.0.5" - ua-parser-js "^0.7.30" + ua-parser-js "^0.7.18" fd-slicer@~1.1.0: version "1.1.0" @@ -13088,9 +13912,9 @@ fd-slicer@~1.1.0: pend "~1.2.0" fecha@^4.2.0: - version "4.2.1" - resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" - integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== + version "4.2.0" + resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" + integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== figures@^1.7.0: version "1.7.0" @@ -13107,7 +13931,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0, figures@^3.2.0: +figures@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -13148,9 +13972,9 @@ filelist@^1.0.1: minimatch "^3.0.4" filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + version "8.0.6" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.6.tgz#5f0c27aa1b507fa7d9f72c912a774ca6a44111b1" + integrity sha512-sHvRqTiwdmcuzqet7iVwsbwF6UrV3wIgDf2SHNdY1Hgl8PC45HZg/0xtdw6U2izIV4lccnrY9ftl6wZFNdjYMg== fill-range@^4.0.0: version "4.0.0" @@ -13287,14 +14111,14 @@ flatstr@^1.0.12: integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + version "3.1.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== flow-parser@0.*: - version "0.172.0" - resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.172.0.tgz#9f5ee62ebf6bad689d5de0b6b98445d8cf030a2f" - integrity sha512-WWqgvuJgD9Y1n2su9D73m0g5kQ4XVl8Dwk6DeW5V6bjt4XMtVLzSHg35s3iiZOvShY+7w7l8FzlK81PGXRcIYQ== + version "0.152.0" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.152.0.tgz#a627aec1fdcfa243e2016469e44284a98169b996" + integrity sha512-qRXGE3ztuhyI2ovi4Ixwq7/GUYvKX9wmFdwBof2q5pWHteuveexFrlbwZxSonC0dWz2znA6sW+vce4RXgYLnnQ== fn.name@1.x.x: version "1.1.0" @@ -13302,9 +14126,9 @@ fn.name@1.x.x: integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== follow-redirects@^1.0.0, follow-redirects@^1.14.0: - version "1.14.9" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== + version "1.14.8" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" + integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== for-in@^1.0.2: version "1.0.2" @@ -13341,9 +14165,9 @@ fork-ts-checker-webpack-plugin@^6.5.0: tapable "^1.0.0" fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: - version "7.2.1" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.1.tgz#c37a538e12730fe11fd725bcf0fce29487950833" - integrity sha512-uOfQdg/iQ8iokQ64qcbu8iZb114rOmaKLQFu7hU14/eJaKgsP91cQ7ts7v2iiDld6TzDe84Meksha8/MkWiCyw== + version "7.1.1" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.1.1.tgz#9806c04f3aecaec8c9e8872806cd1f26d50d92a8" + integrity sha512-MgAv1g6+HLXz1iq2AZRfBjDhwBwk1HRSjuhNiMs8ax/3tsFo0rHedKwuE6ok44sJ5F5VgwPZae8gq0wiBAqYRw== dependencies: "@babel/code-frame" "^7.16.7" chalk "^4.1.2" @@ -13357,7 +14181,12 @@ fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: semver "^7.3.5" tapable "^2.2.1" -form-data-encoder@^1.4.3, form-data-encoder@^1.7.1: +form-data-encoder@^1.4.3: + version "1.6.0" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.6.0.tgz#9dd1f479836c1b1b47201667c68f8daafa800943" + integrity sha512-P97AVaOB8hZaniiKK3f46zxQcchQXI8EgBnX+2+719gLv5ZbDSf3J1XtIuAQ8xbGLU4vZYhy7xwhFtK8U5u9Nw== + +form-data-encoder@^1.7.1: version "1.7.1" resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== @@ -13381,9 +14210,9 @@ form-data@^2.3.2, form-data@^2.5.0: mime-types "^2.1.12" form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + version "3.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" + integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -13403,7 +14232,15 @@ format@^0.2.0: resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= -formdata-node@^4.0.0, formdata-node@^4.3.1: +formdata-node@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.0.tgz#77be2add9092cbd1e1f4d35bc3293a89be117a04" + integrity sha512-TwqhWUZd2jB5l0kUhhcy1XYNsXq46NH6k60zmiu7xsxMztul+cCMuPSAQrSDV62zznhBKJdA9O+zeWj5i5Pbfg== + dependencies: + node-domexception "1.0.0" + web-streams-polyfill "4.0.0-beta.1" + +formdata-node@^4.3.1: version "4.3.2" resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.2.tgz#0262e94931e36db7239c2b08bdb6aaf18ec47d21" integrity sha512-k7lYJyzDOSL6h917favP8j1L0/wNyylzU+x+1w4p5haGVHNlP58dbpdJhiCUsDbWsa9HwEtLp89obQgXl2e0qg== @@ -13563,9 +14400,9 @@ gauge@^3.0.0: wide-align "^1.1.2" gauge@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.1.tgz#82984bc08c90357d60b0a46c03a296beb1affec4" - integrity sha512-zJ4jePUHR8cceduZ53b6temRalyGpkC2Kc2r3ecNphmL+uWNoJ3YcOcUjpbG6WwoE/Ef6/+aEZz63neI2WIa1Q== + version "4.0.0" + resolved "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" + integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== dependencies: ansi-regex "^5.0.1" aproba "^1.0.3 || ^2.0.0" @@ -13592,24 +14429,37 @@ gauge@~2.7.3: wide-align "^1.1.0" gaxios@^4.0.0: - version "4.3.2" - resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz#845827c2dc25a0213c8ab4155c7a28910f5be83f" - integrity sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q== + version "4.0.1" + resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.0.1.tgz#bc7b205a89d883452822cc75e138620c35e3291e" + integrity sha512-jOin8xRZ/UytQeBpSXFqIzqU7Fi5TqgPNLlUsSB8kjJ76+FiGBfImF8KJu++c6J4jOldfJUtt0YmkRj2ZpSHTQ== dependencies: abort-controller "^3.0.0" extend "^3.0.2" https-proxy-agent "^5.0.0" is-stream "^2.0.0" - node-fetch "^2.6.1" + node-fetch "^2.3.0" gcp-metadata@^4.2.0: - version "4.3.1" - resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" - integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== + version "4.2.1" + resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62" + integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw== dependencies: gaxios "^4.0.0" json-bigint "^1.0.0" +gcs-resumable-upload@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.3.0.tgz#d1a866173f9b47e045d4406cafaa658dbb01e624" + integrity sha512-MQKWi+9hOSTyg5/SI1NBW4gAjL1wlkoevHefvr1PCBBXH4uKYLsug5qRrcotWKolDPLfWS51cWaHRN0CTtQNZw== + dependencies: + abort-controller "^3.0.0" + configstore "^5.0.0" + extend "^3.0.2" + gaxios "^4.0.0" + google-auth-library "^7.0.0" + pumpify "^2.0.0" + stream-events "^1.0.4" + generate-function@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" @@ -13617,12 +14467,12 @@ generate-function@^2.3.1: dependencies: is-property "^1.0.2" -generic-names@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" - integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== +generic-names@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" + integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== dependencies: - loader-utils "^3.2.0" + loader-utils "^1.1.0" gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -13656,11 +14506,6 @@ get-monorepo-packages@^1.1.0: globby "^7.1.1" load-json-file "^4.0.0" -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - get-pkg-repo@^4.0.0: version "4.2.1" resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" @@ -13689,16 +14534,16 @@ get-stream@^4.0.0, get-stream@^4.1.0: pump "^3.0.0" get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + version "5.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== dependencies: pump "^3.0.0" get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + version "6.0.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== get-symbol-description@^1.0.0: version "1.0.0" @@ -13733,9 +14578,9 @@ getpass@^0.1.1: assert-plus "^1.0.0" git-raw-commits@^2.0.8: - version "2.0.11" - resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" - integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + version "2.0.10" + resolved "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" + integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== dependencies: dargs "^7.0.0" lodash "^4.17.15" @@ -13760,12 +14605,12 @@ git-semver-tags@^4.1.1: semver "^6.0.0" git-up@^4.0.0: - version "4.0.5" - resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" - integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== + version "4.0.1" + resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== dependencies: is-ssh "^1.3.0" - parse-url "^6.0.0" + parse-url "^5.0.0" git-url-parse@^11.4.4, git-url-parse@^11.6.0: version "11.6.0" @@ -13781,12 +14626,16 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" +<<<<<<< HEAD github-from-package@0.0.0: version "0.0.0" resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: +======= +glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.2: +>>>>>>> 76d216e74b (fixups) version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -13866,9 +14715,9 @@ globals@^11.1.0, globals@^11.12.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.12.1" - resolved "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" - integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== + version "13.9.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== dependencies: type-fest "^0.20.2" @@ -13885,15 +14734,15 @@ globby@11.0.3: slash "^3.0.0" globby@^11.0.0, globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + version "11.0.4" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" slash "^3.0.0" globby@^7.1.1: @@ -13908,10 +14757,10 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -google-auth-library@^7.0.0, google-auth-library@^7.6.1, google-auth-library@^7.9.2: - version "7.12.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" - integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== +google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6.1: + version "7.11.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.11.0.tgz#b63699c65037310a424128a854ba7e736704cbdb" + integrity sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg== dependencies: arrify "^2.0.0" base64-js "^1.3.0" @@ -13923,12 +14772,12 @@ google-auth-library@^7.0.0, google-auth-library@^7.6.1, google-auth-library@^7.9 jws "^4.0.0" lru-cache "^6.0.0" -google-gax@^2.24.1: - version "2.29.7" - resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.29.7.tgz#d238dad424f40f6809205dee3c7d4d6e61511e8b" - integrity sha512-yC0Q4OqX6s081jV72Idt9sxZnuRHOjg0SR0FFH15gT3LDE2u/78xqLjZwa3VuprBvaOLM29jzU19Vv4I7E8ETQ== +google-gax@^2.12.0, google-gax@^2.24.1: + version "2.28.1" + resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz#99bc234b5769d901d70959d40bd1651729eb4a34" + integrity sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g== dependencies: - "@grpc/grpc-js" "~1.5.0" + "@grpc/grpc-js" "~1.4.0" "@grpc/proto-loader" "^0.6.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" @@ -13938,11 +14787,11 @@ google-gax@^2.24.1: is-stream-ended "^0.1.4" node-fetch "^2.6.1" object-hash "^2.1.1" - proto3-json-serializer "^0.1.8" + proto3-json-serializer "^0.1.5" protobufjs "6.11.2" retry-request "^4.0.0" -google-p12-pem@^3.1.3: +google-p12-pem@^3.0.3: version "3.1.3" resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz#5497998798ee86c2fc1f4bb1f92b7729baf37537" integrity sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ== @@ -13994,18 +14843,18 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12: - version "1.5.20" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.5.20.tgz#6d85f7e921676cced881b1a2ea22caa211ed9c1d" - integrity sha512-cHXWN8W1npsQxY0N0hxfPzqWyP572Xiz04O1KANslS9uvlCaQ0YBfmUExRnPr85qI1a4s701wlkFwUViQHukoQ== + version "1.5.16" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.5.16.tgz#76876e6a9c07b7be26b9126b7c6801d6a7e27e3b" + integrity sha512-G1ucZ+1GS6Soq+ftr7eOihy6BcmJHYo29j1/GxXKclUr/z768WWjjIqDcF1/+geI0KOzVeEKkceA1bgT5hG4oQ== dependencies: "@graphiql/toolkit" "^0.4.2" codemirror "^5.58.2" - codemirror-graphql "^1.2.12" + codemirror-graphql "^1.2.11" copy-to-clipboard "^3.2.0" dset "^3.1.0" entities "^2.0.0" escape-html "^1.0.3" - graphql-language-service "^4.1.5" + graphql-language-service "^4.1.4" markdown-it "^12.2.0" graphlib@^2.1.8: @@ -14016,15 +14865,15 @@ graphlib@^2.1.8: lodash "^4.17.15" graphql-config@^3.0.2: - version "3.4.1" - resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.4.1.tgz#59f937a1b4d3a3c2dcdb27ddf5b4d4d4b2c6e9e1" - integrity sha512-g9WyK4JZl1Ko++FSyE5Ir2g66njfxGzrDDhBOwnkoWf/t3TnnZG6BBkWP+pkqVJ5pqMJGPKHNrbew8jRxStjhw== + version "3.3.0" + resolved "https://registry.npmjs.org/graphql-config/-/graphql-config-3.3.0.tgz#24c3672a427cb67c0c717ca3b9d70e9f0c9e752b" + integrity sha512-mSQIsPMssr7QrgqhnjI+CyVH6oQgCrgS6irHsTvwf7RFDRnR2k9kqpQOQgVoOytBSn0DOYryS0w0SAg9xor/Jw== dependencies: "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2" "@graphql-tools/graphql-file-loader" "^6.0.0" "@graphql-tools/json-file-loader" "^6.0.0" "@graphql-tools/load" "^6.0.0" - "@graphql-tools/merge" "6.0.0 - 6.2.14" + "@graphql-tools/merge" "^6.0.0" "@graphql-tools/url-loader" "^6.0.0" "@graphql-tools/utils" "^7.0.0" cosmiconfig "7.0.0" @@ -14049,11 +14898,6 @@ graphql-config@^4.1.0: minimatch "3.0.4" string-env-interpolation "1.0.1" -graphql-executor@0.0.18: - version "0.0.18" - resolved "https://registry.npmjs.org/graphql-executor/-/graphql-executor-0.0.18.tgz#6aa4b39e1ca773e159c2a602621e90606df0109a" - integrity sha512-upUSl7tfZCZ5dWG1XkOvpG70Yk3duZKcCoi/uJso4WxJVT6KIrcK4nZ4+2X/hzx46pL8wAukgYHY6iNmocRN+g== - graphql-language-service-interface@^2.10.2: version "2.10.2" resolved "https://registry.npmjs.org/graphql-language-service-interface/-/graphql-language-service-interface-2.10.2.tgz#de9386f699e446320256175e215cdc10ccf9f9b7" @@ -14089,10 +14933,10 @@ graphql-language-service-utils@^2.7.1: graphql-language-service-types "^1.8.7" nullthrows "^1.0.0" -graphql-language-service@^4.1.5: - version "4.1.5" - resolved "https://registry.npmjs.org/graphql-language-service/-/graphql-language-service-4.1.5.tgz#26964e4fcc62e2d850f2b931bef03b91bdf9a6df" - integrity sha512-6vvZ+4L1xMNpQdlt6a9BaEzZD3ZIiaTmFdjKu81UTIVRh02QKfbW6tcz4UJNTY+4LsTWjR1rNtG3H4pVNrKJ2Q== +graphql-language-service@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/graphql-language-service/-/graphql-language-service-4.1.4.tgz#9be998e94c6c2950d4cde5ab07bcd63969afc176" + integrity sha512-LJk1vwwWwh8onewIzjbXXfa7C5mI6tNN67yztFbmQmfDQv1naZfqKLitudQWaDwJgLqAlpKIefRaeU3cNYHRFQ== dependencies: graphql-language-service-interface "^2.10.2" graphql-language-service-parser "^1.10.4" @@ -14110,9 +14954,9 @@ graphql-modules@^2.0.0: ramda "^0.27.1" graphql-request@^3.3.0: - version "3.7.0" - resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz#c7406e537084f8b9788541e3e6704340ca13055b" - integrity sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ== + version "3.4.0" + resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-3.4.0.tgz#3a400cd5511eb3c064b1873afb059196bbea9c2b" + integrity sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg== dependencies: cross-fetch "^3.0.6" extract-files "^9.0.0" @@ -14136,14 +14980,14 @@ graphql-type-json@^0.3.2: integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== graphql-ws@^4.4.1: - version "4.9.0" - resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c" - integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== + version "4.7.0" + resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.7.0.tgz#b323fbf35a3736eed85dac24c0054d6d10c93e62" + integrity sha512-Md8SsmC9ZlsogFPd3Ot8HbIAAqsHh8Xoq7j4AmcIat1Bh6k91tjVyQvA0Au1/BolXSYq+RDvib6rATU2Hcf1Xw== graphql-ws@^5.4.1: - version "5.6.0" - resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.6.0.tgz#8914d0c0a7be0cc3e8fd486ea8a148e500b2ff29" - integrity sha512-Kz/4z1u9yGKWMtzlvia9wW8AJGjx68OyCCV40dabYq1OeyUxgU9t8Ll43vLAje7TYiLwZSwGbvtHviHaPyGYxw== + version "5.5.5" + resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.5.5.tgz#f375486d3f196e2a2527b503644693ae3a8670a9" + integrity sha512-hvyIS71vs4Tu/yUYHPvGXsTgo0t3arU820+lT5VjZS2go0ewp2LqyCgxEN56CzOG7Iys52eRhHBiD1gGRdiQtw== graphql@^15.5.1: version "15.8.0" @@ -14166,13 +15010,14 @@ growly@^1.3.0: integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= gtoken@^5.0.4: - version "5.3.2" - resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" - integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== + version "5.1.0" + resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.1.0.tgz#4ba8d2fc9a8459098f76e7e8fd7beaa39fda9fe4" + integrity sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg== dependencies: gaxios "^4.0.0" - google-p12-pem "^3.1.3" + google-p12-pem "^3.0.3" jws "^4.0.0" + mime "^2.2.0" gzip-size@^6.0.0: version "6.0.0" @@ -14182,9 +15027,9 @@ gzip-size@^6.0.0: duplexer "^0.1.2" handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + version "2.0.0" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== handlebars@^4.7.3, handlebars@^4.7.7: version "4.7.7" @@ -14204,11 +15049,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + version "5.1.3" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: - ajv "^6.12.3" + ajv "^6.5.5" har-schema "^2.0.0" hard-rejection@^2.1.0: @@ -14217,9 +15062,9 @@ hard-rejection@^2.1.0: integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + version "1.6.1" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== has-ansi@^2.0.0: version "2.0.0" @@ -14228,7 +15073,7 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-bigints@^1.0.1: +has-bigints@^1.0.0, has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== @@ -14255,7 +15100,7 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -14316,13 +15161,12 @@ has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + version "3.0.4" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + inherits "^2.0.1" + safe-buffer "^5.0.1" hash-it@^5.0.0: version "5.0.2" @@ -14343,9 +15187,9 @@ hash.js@^1.0.0, hash.js@^1.0.3: minimalistic-assert "^1.0.1" hast-util-parse-selector@^2.0.0: - version "2.2.5" - resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" - integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + version "2.2.4" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" + integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== hast-util-whitespace@^2.0.0: version "2.0.0" @@ -14391,7 +15235,12 @@ hexoid@1.0.0: resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== -highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0, highlight.js@^10.7.2, highlight.js@~10.7.0: +highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0: + version "10.7.2" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" + integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== + +highlight.js@^10.7.2, highlight.js@~10.7.0: version "10.7.3" resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== @@ -14437,6 +15286,13 @@ hosted-git-info@^2.1.4: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^3.0.6: + version "3.0.8" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" @@ -14472,9 +15328,9 @@ html-entities@^2.3.2: integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + version "2.0.1" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" + integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== html-minifier-terser@^6.0.2: version "6.1.0" @@ -14552,12 +15408,17 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-parser-js@>=0.5.1: - version "0.5.5" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" - integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-agent@^4.0.1: +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== @@ -14576,9 +15437,15 @@ http-proxy-agent@^5.0.0: debug "4" http-proxy-middleware@^2.0.0: +<<<<<<< HEAD version "2.0.4" resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz#03af0f4676d172ae775cb5c33f592f40e1a4e07a" integrity sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg== +======= + version "2.0.2" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz#94d7593790aad6b3de48164f13792262f656c332" + integrity sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g== +>>>>>>> f9b03ab02f (fixups) dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -14614,9 +15481,9 @@ http-signature@~1.3.6: sshpk "^1.14.1" http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + version "1.0.0-beta.5.2" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" + integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== dependencies: quick-lru "^5.1.1" resolve-alpn "^1.0.0" @@ -14667,9 +15534,9 @@ husky@^7.0.4: integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + version "1.0.3" + resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" + integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -14718,9 +15585,9 @@ ignore-by-default@^1.0.1: integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + version "3.0.3" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" @@ -14779,9 +15646,9 @@ import-cwd@^3.0.0: import-from "^3.0.0" import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + version "3.2.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -14809,9 +15676,9 @@ import-lazy@~4.0.0: integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + version "3.0.2" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -14821,6 +15688,13 @@ imurmurhash@^0.1.4: resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indefinite-observable@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400" + integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ== + dependencies: + symbol-observable "1.2.0" + indent-string@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -14831,6 +15705,11 @@ indent-string@^4.0.0: resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + indexof@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" @@ -14875,15 +15754,16 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== init-package-json@^2.0.2: - version "2.0.5" - resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" - integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== + version "2.0.2" + resolved "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.2.tgz#d81a7e6775af9b618f20bba288e440b8d1ce05f3" + integrity sha512-PO64kVeArePvhX7Ff0jVWkpnE1DfGRvaWcStYrPugcJz9twQGYibagKJuIMHCX7ENcp0M6LJlcjLBuLD5KeJMg== dependencies: - npm-package-arg "^8.1.5" + glob "^7.1.1" + npm-package-arg "^8.1.0" promzard "^0.3.0" read "~1.0.1" - read-package-json "^4.1.1" - semver "^7.3.5" + read-package-json "^3.0.0" + semver "^7.3.2" validate-npm-package-license "^3.0.4" validate-npm-package-name "^3.0.0" @@ -14893,9 +15773,9 @@ inline-style-parser@0.1.1: integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== inline-style-prefixer@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" - integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== + version "6.0.0" + resolved "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.0.tgz#f73d5dbf2855733d6b153a4d24b7b47a73e9770b" + integrity sha512-XTHvRUS4ZJNzC1GixJRmOlWSS45fSt+DJoyQC9ytj0WxQfcgofQtDtyKKYxHUqEsWCs+LIWftPF1ie7+i012Fg== dependencies: css-in-js-utils "^2.0.0" @@ -14999,6 +15879,11 @@ ioredis@^4.28.5: redis-parser "^3.0.0" standard-as-callback "^2.1.0" +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -15014,6 +15899,11 @@ ipaddr.js@^2.0.1: resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -15041,6 +15931,11 @@ is-alphabetical@^1.0.0: resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== +is-alphabetical@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz#ef6e2caea57c63450fffc7abb6cbdafc5eb96e96" + integrity sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w== + is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -15049,13 +15944,18 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== +is-alphanumerical@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz#0fbfeb6a72d21d91143b3d182bf6cf5909ee66f6" + integrity sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== is-arrayish@^0.2.1: version "0.2.1" @@ -15068,11 +15968,9 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== is-binary-path@~2.1.0: version "2.1.0" @@ -15082,12 +15980,11 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + version "1.1.0" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + call-bind "^1.0.0" is-buffer@^1.1.5: version "1.1.6" @@ -15095,11 +15992,16 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: - version "2.0.5" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + version "2.0.4" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-callable@^1.1.4, is-callable@^1.2.4: +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-callable@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== @@ -15118,7 +16020,14 @@ is-ci@^3.0.0, is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: +is-core-module@^2.1.0, is-core-module@^2.2.0: + version "2.8.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== + dependencies: + has "^1.0.3" + +is-core-module@^2.8.0: version "2.8.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -15140,17 +16049,20 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" + version "1.0.2" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== +is-decimal@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz#db1140337809fd043a056ae40a9bd1cdc563034c" + integrity sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -15232,11 +16144,9 @@ is-generator-fn@^2.0.0: integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" + version "1.0.8" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" + integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== is-glob@4.0.1: version "4.0.1" @@ -15257,6 +16167,11 @@ is-hexadecimal@^1.0.0: resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-hexadecimal@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz#8e1ec9f48fe3eabd90161109856a23e0907a65d5" + integrity sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug== + is-in-browser@^1.0.2, is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" @@ -15293,9 +16208,9 @@ is-module@^1.0.0: integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-negative-zero@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + version "2.0.1" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-node-process@^1.0.1: version "1.0.1" @@ -15308,11 +16223,9 @@ is-npm@^5.0.0: integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" + version "1.0.4" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== is-number@^3.0.0: version "3.0.0" @@ -15332,9 +16245,9 @@ is-obj@^2.0.0: integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + version "1.0.1" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= is-observable@^1.1.0: version "1.1.0" @@ -15380,11 +16293,23 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" + integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== + dependencies: + isobject "^4.0.0" + is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -15395,7 +16320,7 @@ is-promise@4.0.0, is-promise@^4.0.0: resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== -is-promise@^2.1.0: +is-promise@^2.1.0, is-promise@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== @@ -15412,7 +16337,15 @@ is-reference@^1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.1.4: +is-regex@^1.0.4, is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-regex@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -15427,6 +16360,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + is-root@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" @@ -15445,9 +16383,9 @@ is-shared-array-buffer@^1.0.1: integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== is-ssh@^1.3.0: - version "1.3.3" - resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" - integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== + version "1.3.1" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== dependencies: protocols "^1.1.0" @@ -15462,11 +16400,16 @@ is-stream@^1.1.0: integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + version "2.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.5, is-string@^1.0.7: +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-string@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== @@ -15474,18 +16417,18 @@ is-string@^1.0.5, is-string@^1.0.7: has-tostringtag "^1.0.0" is-subdir@^1.1.1: - version "1.2.0" - resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4" - integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw== + version "1.1.1" + resolved "https://registry.npmjs.org/is-subdir/-/is-subdir-1.1.1.tgz#423e66902f9c5f159b9cc4826c820df083059538" + integrity sha512-VYpq0S7gPBVkkmfwkvGnx1EL9UVIo87NQyNcgMiNUdQCws3CJm5wj2nB+XPL7zigvjxhuZgp3bl2yBcKkSIj1w== dependencies: better-path-resolve "1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + version "1.0.3" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.1" is-text-path@^1.0.1: version "1.0.1" @@ -15494,16 +16437,16 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.3, is-typed-array@^1.1.7: - version "1.1.8" - resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" - integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== dependencies: - available-typed-arrays "^1.0.5" + available-typed-arrays "^1.0.2" call-bind "^1.0.2" - es-abstract "^1.18.5" + es-abstract "^1.18.0-next.2" foreach "^2.0.5" - has-tostringtag "^1.0.0" + has-symbols "^1.0.1" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -15535,11 +16478,11 @@ is-utf8@^0.2.0, is-utf8@^0.2.1: integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-weakref@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + version "1.0.1" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" + integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.0" is-window@^1.0.2: version "1.0.2" @@ -15600,6 +16543,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + isomorphic-dompurify@^0.13.0: version "0.13.0" resolved "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-0.13.0.tgz#a4dde357e8531018a85ebb2dd56c4794b6739ba3" @@ -15625,9 +16573,9 @@ isomorphic-form-data@^2.0.0: form-data "^2.3.2" isomorphic-git@^1.8.0: - version "1.11.2" - resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.11.2.tgz#58fd47f3e797ed9cc1364bb2cae02355499d6bea" - integrity sha512-7gSW+dMftHYyDufoeLCOagxlN0KsAYvR/qddSke9pnPH8vwL4OwqQ2BvkG0O02OnEFqg1pZXyIzBPFBfOMYXUA== + version "1.10.0" + resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.10.0.tgz#59a4604d1190d1e7fc52172085da25e6a428bc07" + integrity sha512-CijspEYaOQAnsHWXyq8ICZXzLJ/1wYQAa0jdfLcugA/68oNzrxykjGZz8Up7B8huA1VfkFHm4VviExtj/zpViw== dependencies: async-lock "^1.1.0" clean-git-ref "^2.0.1" @@ -15639,7 +16587,7 @@ isomorphic-git@^1.8.0: pify "^4.0.1" readable-stream "^3.4.0" sha.js "^2.4.9" - simple-get "^4.0.1" + simple-get "^3.0.2" isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: version "4.0.1" @@ -15651,12 +16599,12 @@ isstream@~0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.3: +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -15666,17 +16614,6 @@ istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" -istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -15687,9 +16624,9 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + version "4.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" @@ -15794,16 +16731,6 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^27.0.0: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" @@ -15852,11 +16779,6 @@ jest-get-type@^26.3.0: resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -16110,9 +17032,9 @@ jest-watcher@^26.6.2: string-length "^4.0.1" jest-when@^3.1.0: - version "3.5.1" - resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.1.tgz#33ab6f923661cf878cd08fe9df64b507934603db" - integrity sha512-o+HiaIVCg1IC95sMDKHU9G5v5N5l3UHqXvJpf0PgAMThZeQo4Hf5Sgoj+wpCBRGg4/KtzSAZZZEKNiLqE0i4eQ== + version "3.5.0" + resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.0.tgz#364ab8dc149a5d683f9cc14e44d73d03b84b0d97" + integrity sha512-/IkPkG5lo2tyXH3a+VraYe7t/ma6UK9VPQko7hr6YgEtjoHyfAPpLXzyhnSNxxKRzNQDrw8YoGPCOkdTLR4mHA== jest-worker@^26.6.2: version "26.6.2" @@ -16123,10 +17045,10 @@ jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.3.1, jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +jest-worker@^27.3.1, jest-worker@^27.4.1: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" + integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -16169,13 +17091,13 @@ jmespath@^0.15.0: integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= joi@^17.4.0: - version "17.6.0" - resolved "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" - integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== + version "17.4.2" + resolved "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7" + integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" + "@sideway/address" "^4.1.0" "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" @@ -16194,9 +17116,9 @@ jose@^2.0.5: "@panva/asn1.js" "^1.0.0" joycon@^3.0.1: - version "3.1.1" - resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== + version "3.1.0" + resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.0.tgz#33bb2b6b5a6849a1e251bed623bdf610f477d49f" + integrity sha512-5Y/YJghKF/IzaUXTut0JtbQyHfBShTaIsH7hHhGXEzYO07zWdWZm5hr3Q6miqhrwsRqqm3mgOnUEZdn+1aRxKQ== jpeg-js@^0.3.4: version "0.3.7" @@ -16304,7 +17226,39 @@ jscodeshift@^0.13.0: temp "^0.8.4" write-file-atomic "^2.3.0" -jsdom@^16.4.0, jsdom@^16.5.2: +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" + xml-name-validator "^3.0.0" + +jsdom@^16.5.2: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== @@ -16375,9 +17329,9 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-pointer@^0.6.1: - version "0.6.2" - resolved "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" - integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== + version "0.6.1" + resolved "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz#3c6caa6ac139e2599f5a1659d39852154015054d" + integrity sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q== dependencies: foreach "^2.0.4" @@ -16500,11 +17454,11 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + version "6.0.1" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== dependencies: - universalify "^2.0.0" + universalify "^1.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -16575,76 +17529,85 @@ jsprim@^2.0.2: verror "1.10.0" jss-plugin-camel-case@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.0.tgz#4921b568b38d893f39736ee8c4c5f1c64670aaf7" - integrity sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz#93d2cd704bf0c4af70cc40fb52d74b8a2554b170" + integrity sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A== dependencies: "@babel/runtime" "^7.3.1" hyphenate-style-name "^1.0.3" - jss "10.9.0" + jss "10.6.0" jss-plugin-default-unit@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.0.tgz#bb23a48f075bc0ce852b4b4d3f7582bc002df991" - integrity sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.6.0.tgz#af47972486819b375f0f3a9e0213403a84b5ef3b" + integrity sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" jss-plugin-global@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.0.tgz#fc07a0086ac97aca174e37edb480b69277f3931f" - integrity sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.6.0.tgz#3e8011f760f399cbadcca7f10a485b729c50e3ed" + integrity sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" jss-plugin-nested@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.0.tgz#cc1c7d63ad542c3ccc6e2c66c8328c6b6b00f4b3" - integrity sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.6.0.tgz#5f83c5c337d3b38004834e8426957715a0251641" + integrity sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" tiny-warning "^1.0.2" jss-plugin-props-sort@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.0.tgz#30e9567ef9479043feb6e5e59db09b4de687c47d" - integrity sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.6.0.tgz#297879f35f9fe21196448579fee37bcde28ce6bc" + integrity sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" jss-plugin-rule-value-function@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.0.tgz#379fd2732c0746fe45168011fe25544c1a295d67" - integrity sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.6.0.tgz#3c1a557236a139d0151e70a82c810ccce1c1c5ea" + integrity sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA== dependencies: "@babel/runtime" "^7.3.1" - jss "10.9.0" + jss "10.6.0" tiny-warning "^1.0.2" jss-plugin-vendor-prefixer@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.0.tgz#aa9df98abfb3f75f7ed59a3ec50a5452461a206a" - integrity sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA== + version "10.6.0" + resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.6.0.tgz#e1fcd499352846890c38085b11dbd7aa1c4f2c78" + integrity sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ== dependencies: "@babel/runtime" "^7.3.1" css-vendor "^2.0.8" - jss "10.9.0" + jss "10.6.0" -jss@10.9.0, jss@^10.5.1: - version "10.9.0" - resolved "https://registry.npmjs.org/jss/-/jss-10.9.0.tgz#7583ee2cdc904a83c872ba695d1baab4b59c141b" - integrity sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw== +jss@10.6.0, jss@^10.5.1: + version "10.6.0" + resolved "https://registry.npmjs.org/jss/-/jss-10.6.0.tgz#d92ff9d0f214f65ca1718591b68e107be4774149" + integrity sha512-n7SHdCozmxnzYGXBHe0NsO0eUf9TvsHVq2MXvi4JmTn3x5raynodDVE/9VQmBdWFyyj9HpHZ2B4xNZ7MMy7lkw== dependencies: "@babel/runtime" "^7.3.1" csstype "^3.0.2" + indefinite-observable "^2.0.1" is-in-browser "^1.1.3" tiny-warning "^1.0.2" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +jsx-ast-utils@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== @@ -16707,14 +17670,14 @@ jwt-decode@*, jwt-decode@^3.1.0: integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== kafkajs@^1.16.0-beta.6: - version "1.16.0" - resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0.tgz#bfcc3ae2b69265ca8435b53a01ee9e8787b9fee5" - integrity sha512-+Rcfu2hyQ/jv5skqRY8xA7Ra+mmRkDAzCaLDYbkGtgsNKpzxPWiLbk8ub0dgr4EbWrN1Zb4BCXHUkD6+zYfdWg== + version "1.16.0-beta.32" + resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0-beta.32.tgz#c39fe37367e200eeb95c9ae1412d79db4cf55eca" + integrity sha512-fXnpfvQI7b0xJNRMMiDX05ezfG1/MtDJPdWhQ1e6SptDB/xe8JaGJwd/Fzd2viwgwYzhmHSg681PNOkX4Dz2DQ== keyv-memcache@^1.2.5: - version "1.2.9" - resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.9.tgz#68776b098233e4305ec729fbeb5ad5905f6ac914" - integrity sha512-hcHeihL/LjAhP1qvLSWuwCxDQlSkkGwlvH7RfIIO+57s7J5dhFLQQko1WcAbcd1jlxV6iPHAEvkDwp8c7XQzgA== + version "1.2.7" + resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.7.tgz#b8a43eeecdb11ad8f4d6d64abd4298d014c74955" + integrity sha512-lD7QaHf9M+bq9XLFZVEXJ2HNqEvO5CmtjiJjB2FHifbEQ18+YRDTfJCjo88Roc0hXtIqz/QZjYXpIYL8EWpL1g== dependencies: json-buffer "^3.0.1" memjs "^1.3.0" @@ -16727,9 +17690,9 @@ keyv@^3.0.0: json-buffer "3.0.0" keyv@^4.0.0, keyv@^4.0.3: - version "4.1.1" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz#02c538bfdbd2a9308cc932d4096f05ae42bfa06a" - integrity sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ== + version "4.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.1.0.tgz#8ab5ca4ae6a34e05c629531d9a7f871575af0d5b" + integrity sha512-YsY3wr6HabE11/sscee+3nZ03XjvkrPWGouAmJFBdZoK92wiOlJCzI5/sDEIKdJhdhHO144ei45U9gXfbu14Uw== dependencies: json-buffer "3.0.1" @@ -16768,9 +17731,9 @@ kleur@^4.0.3: integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== knex@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/knex/-/knex-1.0.3.tgz#a5f97aa98e5e036cfd0209a90d53b2a411280e84" - integrity sha512-rY1T7cgTQGHAUD9TshMka37bd+SEK+koPXXvZQEIoE8yjJ/E8ShsenaAmr3oaNNzqXuKD/SC0qlYtp7Js8tAXA== + version "1.0.2" + resolved "https://registry.npmjs.org/knex/-/knex-1.0.2.tgz#1b79273f39f587a631c1a5515482c203d5971781" + integrity sha512-RuDKTylj6X/3nYomnsFV8sOdxTcehLHczOd3yrUdULE4pQR8jVlZxYt3vvIU04otJF0Cw9DCtRt05S4PN4kDpw== dependencies: colorette "2.0.16" commander "^8.3.0" @@ -16816,9 +17779,9 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= lazystream@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" - integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + version "1.0.0" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= dependencies: readable-stream "^2.0.5" @@ -16923,47 +17886,47 @@ li@^1.3.0: integrity sha1-IsWbyu+qmo7zWc91l4TkvxBq6hs= libnpmaccess@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" - integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== + version "4.0.1" + resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.1.tgz#17e842e03bef759854adf6eb6c2ede32e782639f" + integrity sha512-ZiAgvfUbvmkHoMTzdwmNWCrQRsDkOC+aM5BDfO0C9aOSwF3R1LdFDBD+Rer1KWtsoQYO35nXgmMR7OUHpDRxyA== dependencies: aproba "^2.0.0" minipass "^3.1.1" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" + npm-package-arg "^8.0.0" + npm-registry-fetch "^9.0.0" libnpmpublish@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" - integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== + version "4.0.0" + resolved "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.0.tgz#ad6413914e0dfd78df868ce14ba3d3a4cc8b385b" + integrity sha512-2RwYXRfZAB1x/9udKpZmqEzSqNd7ouBRU52jyG14/xG8EF+O9A62d7/XVR3iABEQHf1iYhkm0Oq9iXjrL3tsXA== dependencies: - normalize-package-data "^3.0.2" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" + normalize-package-data "^3.0.0" + npm-package-arg "^8.1.0" + npm-registry-fetch "^9.0.0" semver "^7.1.3" - ssri "^8.0.1" + ssri "^8.0.0" -lilconfig@2.0.4, lilconfig@^2.0.3, lilconfig@^2.0.4: +lilconfig@2.0.4, lilconfig@^2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + version "1.1.6" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== + version "3.0.2" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8" + integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ== dependencies: uc.micro "^1.0.1" lint-staged@^12.2.0: - version "12.3.4" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz#4b1ff8c394c3e6da436aaec5afd4db18b5dac360" - integrity sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w== + version "12.3.3" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.3.tgz#0a465962fe53baa2b4b9da50801ead49a910e03b" + integrity sha512-OqcLsqcPOqzvsfkxjeBpZylgJ3SRG1RYqc9LxC6tkt6tNsq1bNVkAixBwX09f6CobcHswzqVOCBpFR1Fck0+ag== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" @@ -17013,31 +17976,17 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" -listr2@^3.8.3: - version "3.14.0" - resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" - integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.1" - through "^2.3.8" - wrap-ansi "^7.0.0" - listr2@^4.0.1: - version "4.0.4" - resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz#d098a1c419284fb26e184b5d5889b235e8912245" - integrity sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg== + version "4.0.2" + resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.2.tgz#04d66f8c8694a14920d7df08ebe01568948fb500" + integrity sha512-YcgwfCWpvPbj9FLUGqvdFvd3hrFWKpOeuXznRgfWEJ7RNr8b/IKKIKZABHx3aU+4CWN/iSAFFSReziQG6vTeIA== dependencies: cli-truncate "^2.1.0" colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" rfdc "^1.3.0" - rxjs "^7.5.4" + rxjs "^7.5.2" through "^2.3.8" wrap-ansi "^7.0.0" @@ -17126,9 +18075,9 @@ loader-utils@^1.1.0: json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + version "2.0.0" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -17408,15 +18357,15 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -logform@^2.3.2, logform@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe" - integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw== +logform@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz#68babe6a74ab09a1fd15a9b1e6cbc7713d41cb5b" + integrity sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA== dependencies: - "@colors/colors" "1.5.0" + colors "1.4.0" fecha "^4.2.0" ms "^2.1.1" - safe-stable-stringify "^2.3.1" + safe-stable-stringify "^1.1.0" triple-beam "^1.3.0" loglevel@^1.6.8: @@ -17430,9 +18379,9 @@ long@^4.0.0: integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== longest-streak@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d" - integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg== + version "3.0.0" + resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz#f127e2bded83caa6a35ac5f7a2f2b2f94b36f3dc" + integrity sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -17500,6 +18449,13 @@ lru-cache@^7.3.1: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz#7702e80694ec2bf19865567a469f2b081fcf53f5" integrity sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw== +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + lunr@^2.3.9: version "2.3.9" resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" @@ -17515,6 +18471,11 @@ lz-string@^1.4.4: resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= +macos-release@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" + integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== + magic-string@^0.25.7: version "0.25.7" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -17537,7 +18498,14 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.1.0: +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -17550,9 +18518,9 @@ make-error@^1, make-error@^1.1.1, make-error@^1.3.6: integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== make-fetch-happen@^10.0.1: - version "10.0.3" - resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.3.tgz#94bbe675cf62a811dbab59668052388a078beaf2" - integrity sha512-CzarPHynPpHjhF5in/YapnO44rSZeYX5VCMfdXa99+gLwpbfFLh20CWa6dP/taV9Net9PWJwXNKtp/4ZTCQnag== + version "10.0.2" + resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.0.2.tgz#0afb38d2f951b17ebc482b0b16c8d77f39dfe389" + integrity sha512-JSFLK53NJP22FL/eAGOyKsWbc2G3v+toPMD7Dq9PJKQCvK0i3t8hGkKxe+3YZzwYa+c0kxRHu7uxH3fvO+rsaA== dependencies: agentkeepalive "^4.2.0" cacache "^15.3.0" @@ -17592,7 +18560,7 @@ make-fetch-happen@^8.0.9: socks-proxy-agent "^5.0.0" ssri "^8.0.0" -make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: +make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -17614,12 +18582,12 @@ make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: - tmpl "1.0.5" + tmpl "1.0.x" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" @@ -17660,14 +18628,14 @@ markdown-it@^12.2.0: uc.micro "^1.0.5" markdown-table@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz#9b59eb2c1b22fe71954a65ff512887065a7bb57c" - integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== + version "3.0.1" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.1.tgz#88c48957aaf2a8014ccb2ba026776a1d736fe3dc" + integrity sha512-CBbaYXKSGnE1uLRpKA1SWgIRb2PQrpkllNWpZtZe6VojOJ4ysqiq7/2glYcmKsOYN09QgH/HEBX5hIshAeiK6A== marked@^4.0.10: - version "4.0.12" - resolved "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz#2262a4e6fd1afd2f13557726238b69a48b982f7d" - integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== + version "4.0.10" + resolved "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz#423e295385cc0c3a70fa495e0df68b007b879423" + integrity sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw== match-sorter@^6.0.2: version "6.3.1" @@ -17696,9 +18664,9 @@ material-ui-search-bar@^1.0.0: prop-types "^15.5.8" math-expression-evaluator@^1.2.14: - version "1.3.14" - resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.14.tgz#0ebeaccf65fea0f6f5a626f88df41814e5fcd9bf" - integrity sha512-M6AMrvq9bO8uL42KvQHPA2/SbAobA0R7gviUmPrcTcGfdwpaLitz4q2Euzx2lP9Oy88vxK3HOrsISgSwKsYS4A== + version "1.2.22" + resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e" + integrity sha512-L0j0tFVZBQQLeEjmWOvDLoRciIY8gQGWahvkztXUal8jH8R5Rlqo9GCvgqvXcy9LQhEWdQCVvzqAbxgYNt4blQ== md5.js@^1.3.4: version "1.3.5" @@ -17728,13 +18696,12 @@ mdast-util-find-and-replace@^2.0.0: unist-util-visit-parents "^4.0.0" mdast-util-from-markdown@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" - integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== + version "1.0.2" + resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.2.tgz#7c793bb96b053d12f032e37382ae989efb70ee66" + integrity sha512-gXaxv/5fGdrr9TqSMlQK7FmshK8yR9DvW3+NapMBDm44inORxIZVJa1D3yjrUT9ISu8tB/jjblEkUzyzclquNg== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" - decode-named-character-reference "^1.0.0" mdast-util-to-string "^3.1.0" micromark "^3.0.0" micromark-util-decode-numeric-character-reference "^1.0.0" @@ -17742,8 +18709,8 @@ mdast-util-from-markdown@^1.0.0: micromark-util-normalize-identifier "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" + parse-entities "^3.0.0" unist-util-stringify-position "^3.0.0" - uvu "^0.5.0" mdast-util-gfm-autolink-literal@^1.0.0: version "1.0.2" @@ -17756,37 +18723,38 @@ mdast-util-gfm-autolink-literal@^1.0.0: micromark-util-character "^1.0.0" mdast-util-gfm-footnote@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz#11d2d40a1a673a399c459e467fa85e00223191fe" - integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw== + version "1.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.0.tgz#355c1e8dc9e17e871d1b3fa5da8824923fc756e0" + integrity sha512-qeg9YoS2YYP6OBmMyUFxKXb6BLwAsbGidIxgwDAXHIMYZQhIwe52L9BSJs+zP29Jp5nSERPkmG3tSwAN23/ZbQ== dependencies: "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" + mdast-util-to-markdown "^1.0.0" micromark-util-normalize-identifier "^1.0.0" + unist-util-visit "^4.0.0" mdast-util-gfm-strikethrough@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz#a4a74c36864ec6a6e3bbd31e1977f29beb475789" - integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg== + version "1.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.0.tgz#6cc72ef5d9539f4cee76af3f15dd0daa9e3af40f" + integrity sha512-gM9ipBUdRxYa6Yq1Hd8Otg6jEn/dRxFZ1F9ZX4QHosHOexLGqNZO2dh0A+YFbUEd10RcKjnjb4jOfJJzoXXUew== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" + "@types/mdast" "^3.0.3" + mdast-util-to-markdown "^1.0.0" mdast-util-gfm-table@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.3.tgz#5f880aa6ecd1a9307cd7127f3d94c631ea88da07" - integrity sha512-B/tgpJjND1qIZM2WZst+NYnb0notPE6m0J+YOe3NOHXyEmvK38ytxaOsgz4BvrRPQQcNbRrTzSHMPnBkj1fCjg== + version "1.0.1" + resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.1.tgz#07c269a219d66ec2deb6de38aed0ba1d1f9442df" + integrity sha512-NByKuaSg5+M6r9DZBPXFUmhMHGFf9u+WE76EeStN01ghi8hpnydiWBXr+qj0XCRWI7SAMNtEjGvip6zci9axQA== dependencies: markdown-table "^3.0.0" - mdast-util-to-markdown "^1.3.0" + mdast-util-to-markdown "^1.0.0" mdast-util-gfm-task-list-item@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz#6f35f09c6e2bcbe88af62fdea02ac199cc802c5c" - integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA== + version "1.0.0" + resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.0.tgz#a0aa2a00c893f9f006d13ba096cbc64608559c7f" + integrity sha512-dwkzOTjQe8JCCHVE3Cb0pLHTYLudf7t9WCAnb20jI8/dW+VHjgWhjtIUVA3oigNkssgjEwX+i+3XesUdCnXGyA== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" + "@types/mdast" "^3.0.3" + mdast-util-to-markdown "^1.0.0" mdast-util-gfm@^2.0.0: version "2.0.0" @@ -17815,10 +18783,10 @@ mdast-util-to-hast@^12.1.0: unist-util-position "^4.0.0" unist-util-visit "^4.0.0" -mdast-util-to-markdown@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" - integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA== +mdast-util-to-markdown@^1.0.0: + version "1.2.3" + resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.3.tgz#2b3af92bf0e29080927eb59a8a10cd0a7398e093" + integrity sha512-040jJYtjOUdbvYAXCfPrpLJRdvMOmR33KRqlhT4r+fEbVM+jao1RMbA8RmGeRmw8RAj3vQ+HvhIaJPijvnOwCg== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" @@ -17854,9 +18822,9 @@ media-typer@0.3.0: integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= "mem-fs-editor@^8.1.2 || ^9.0.0": - version "9.4.0" - resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.4.0.tgz#0cc1cf61350e33c25fc364c97fb0551eb32b8c9b" - integrity sha512-HSSOLSVRrsDdui9I6i96dDtG+oAez/4EB2g4cjSrNhgNQ3M+L57/+22NuPdORSoxvOHjIg/xeOE+C0wwF91D2g== + version "9.3.0" + resolved "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-9.3.0.tgz#85ce80541b1961d1d9f433e275c7cee9d0a1c9a2" + integrity sha512-QKFbPwGCh1ypmc2H8BUYpbapwT/x2AOCYZQogzSui4rUNes7WVMagQXsirPIfp18EarX0SSY9Fpg426nSjew4Q== dependencies: binaryextensions "^4.16.0" commondir "^1.0.1" @@ -17879,7 +18847,7 @@ media-typer@0.3.0: vinyl "^2.0.1" vinyl-file "^3.0.0" -memfs@^3.1.2, memfs@^3.4.1: +memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.1: version "3.4.1" resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== @@ -17891,11 +18859,30 @@ memjs@^1.3.0: resolved "https://registry.npmjs.org/memjs/-/memjs-1.3.0.tgz#b7959b4ff3770e4c785463fd147f1e4fafd47a24" integrity sha512-y/V9a0auepA9Lgyr4QieK6K2FczjHucEdTpSS+hHVNmVEkYxruXhkHu8n6DSRQ4HXHEE3cc6Sf9f88WCJXGXsQ== -"memoize-one@>=3.1.1 <6", memoize-one@^5.1.1: +"memoize-one@>=3.1.1 <6": version "5.2.1" resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== +memoize-one@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.npmjs.org/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" + meow@^6.0.0: version "6.1.1" resolved "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" @@ -17940,10 +18927,10 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== merge@^1.2.1: version "1.2.1" @@ -17965,7 +18952,7 @@ metric-lcs@^0.1.2: resolved "https://registry.npmjs.org/metric-lcs/-/metric-lcs-0.1.2.tgz#87913f149410e39c7c5a19037512814eaf155e11" integrity sha512-+TZ5dUDPKPJaU/rscTzxyN8ZkX7eAVLAiQU/e+YINleXPv03SCmJShaMT1If1liTH8OcmWXZs0CmzCBRBLcMpA== -micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: +micromark-core-commonmark@^1.0.0: version "1.0.6" resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== @@ -17987,16 +18974,36 @@ micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: micromark-util-types "^1.0.1" uvu "^0.5.0" +micromark-core-commonmark@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.1.tgz#a64987cafe872e8b80bc8f2352a5d988586ac4f1" + integrity sha512-vEOw8hcQ3nwHkKKNIyP9wBi8M50zjNajtmI+cCUWcVfJS+v5/3WCh4PLKf7PPRZFUutjzl4ZjlHwBWUKfb/SkA== + dependencies: + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + parse-entities "^3.0.0" + micromark-extension-gfm-autolink-literal@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" - integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.0.tgz#1a49a62bfcb00f9dff87ab39f3b21a108612dc24" + integrity sha512-t+K0aPK32mXypVTEKV+WRfoT/Rb7MERDgHZVRr56NXpyQQhgMk72QnK4NljYUlrgbuesH+MxiPQwThzqRDIwvA== dependencies: micromark-util-character "^1.0.0" micromark-util-sanitize-uri "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-extension-gfm-footnote@^1.0.0: version "1.0.3" @@ -18012,45 +19019,42 @@ micromark-extension-gfm-footnote@^1.0.0: uvu "^0.5.0" micromark-extension-gfm-strikethrough@^1.0.0: - version "1.0.4" - resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" - integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.1.tgz#9f53ab4f5dc8c0525a889850bae615f074a98a27" + integrity sha512-fzGYXWz9HPWH1uHqYwdyR8XpEtuoYVHUjTdPQTnl3ETVZOQe1NXMwE3RA7AMqeON52hG+kO9g1/P1+pLONBSMQ== dependencies: micromark-util-chunked "^1.0.0" micromark-util-classify-character "^1.0.0" micromark-util-resolve-all "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-extension-gfm-table@^1.0.0: - version "1.0.5" - resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" - integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.0.tgz#f0d35dbf008b6182311049f9137323d34a54c7a0" + integrity sha512-OATRuHDgEAT/aaJJRSdU12V+s01kNSnJ0jumdfLq5mPy0F5DkR3zbTSFLH4tjVYM0/kEG6umxIhHY62mFe4z5Q== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-extension-gfm-tagfilter@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" - integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.0.tgz#a38c7c462c2007b534fcb485e9310165879654a7" + integrity sha512-GGUZhzQrOdHR8RHU2ru6K+4LMlj+pBdNuXRtw5prOflDOk2hHqDB0xEgej1AHJ2VETeycX7tzQh2EmaTUOmSKg== dependencies: micromark-util-types "^1.0.0" micromark-extension-gfm-task-list-item@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" - integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.0.tgz#ab38b2b4ead4e746189d6323c32cacab2c63599d" + integrity sha512-3tkHCq1NNwijtwpjYba9+rl1yvQ4xYg8iQpUAfTJRyq8MtIEsBUF/vW6B9Gh8Qwy1hE2FmpyHhP4jnFAt61zLg== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-extension-gfm@^2.0.0: version "2.0.1" @@ -18076,14 +19080,13 @@ micromark-factory-destination@^1.0.0: micromark-util-types "^1.0.0" micromark-factory-label@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" - integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz#b316ec479b474232973ff13b49b576f84a6f2cbb" + integrity sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww== dependencies: micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-factory-space@^1.0.0: version "1.0.0" @@ -18094,15 +19097,14 @@ micromark-factory-space@^1.0.0: micromark-util-types "^1.0.0" micromark-factory-title@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" - integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz#708f7a8044f34a898c0efdb4f55e4da66b537273" + integrity sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA== dependencies: micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-factory-whitespace@^1.0.0: version "1.0.0" @@ -18154,19 +19156,18 @@ micromark-util-decode-numeric-character-reference@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-decode-string@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" - integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.0.tgz#f97946825231d9c97df767875064401774578a6e" + integrity sha512-4g5UJ8P/J8wuRKUXCcB7udQuOBXpLyvBQSLSuznfBLCG+thKG6UTwFnXfHkrr/1wddprkUbPatCzxDjrJ+5zDg== dependencies: - decode-named-character-reference "^1.0.0" micromark-util-character "^1.0.0" micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-symbol "^1.0.0" + parse-entities "^3.0.0" micromark-util-encode@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" - integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz#c409ecf751a28aa9564b599db35640fccec4c068" + integrity sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg== micromark-util-html-tag-name@^1.0.0: version "1.0.0" @@ -18197,33 +19198,31 @@ micromark-util-sanitize-uri@^1.0.0: micromark-util-symbol "^1.0.0" micromark-util-subtokenize@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" - integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz#6f006fa719af92776c75a264daaede0fb3943c6a" + integrity sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ== dependencies: micromark-util-chunked "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.0" - uvu "^0.5.0" micromark-util-symbol@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" - integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + version "1.0.0" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz#91cdbcc9b2a827c0129a177d36241bcd3ccaa34d" + integrity sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ== micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" - integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + version "1.0.1" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz#8bb8a092d93d326bd29fe29602799f2d0d922fd4" + integrity sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA== micromark@^3.0.0: - version "3.0.10" - resolved "https://registry.npmjs.org/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" - integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg== + version "3.0.5" + resolved "https://registry.npmjs.org/micromark/-/micromark-3.0.5.tgz#d24792c8a06f201d5608c106dbfadef34c299684" + integrity sha512-QfjERBnPw0G9mxhOCkkbRP0n8SX8lIBLrEKeEVceviUukqVMv3hWE4AgNTOK/W6GWqtPvvIHg2Apl3j1Dxm6aQ== dependencies: "@types/debug" "^4.0.0" debug "^4.0.0" - decode-named-character-reference "^1.0.0" micromark-core-commonmark "^1.0.1" micromark-factory-space "^1.0.0" micromark-util-character "^1.0.0" @@ -18237,7 +19236,7 @@ micromark@^3.0.0: micromark-util-subtokenize "^1.0.0" micromark-util-symbol "^1.0.0" micromark-util-types "^1.0.1" - uvu "^0.5.0" + parse-entities "^3.0.0" micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -18308,6 +19307,11 @@ mime@1.6.0, mime@^1.3.4: resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime@^2.2.0: + version "2.5.2" + resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + mime@^2.5.0: version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" @@ -18351,9 +19355,9 @@ min-document@^2.19.0: dom-walk "^0.1.0" min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + version "1.0.0" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" + integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= mini-css-extract-plugin@^2.4.2: version "2.6.0" @@ -18372,7 +19376,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4: +minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -18386,20 +19390,6 @@ minimatch@5.0.1, minimatch@^5.0.0: dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - dependencies: - brace-expansion "^1.1.7" - minimist-options@4.1.0, minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -18511,10 +19501,17 @@ mixme@^0.5.1: resolved "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== +<<<<<<< HEAD mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== +======= +mkdirp-classic@^0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" + integrity sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g== +>>>>>>> 76d216e74b (fixups) mkdirp-infer-owner@^2.0.0: version "2.0.0" @@ -18530,7 +19527,7 @@ mkdirp@0.3.0: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -18552,10 +19549,21 @@ modify-values@^1.0.0: resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== +<<<<<<< HEAD moment-timezone@^0.5.x: +======= +<<<<<<< HEAD +moment-timezone@^0.5.31, moment-timezone@^0.5.x: +>>>>>>> f9b03ab02f (fixups) version "0.5.34" resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== +======= +moment-timezone@^0.5.31: + version "0.5.33" + resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" + integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== +>>>>>>> 76d216e74b (fixups) dependencies: moment ">= 2.9.0" @@ -18627,11 +19635,11 @@ msw@^0.35.0: yargs "^17.0.1" msw@^0.36.3: - version "0.36.8" - resolved "https://registry.npmjs.org/msw/-/msw-0.36.8.tgz#33ff8bfb0299626a95f43d0e4c3dc2c73c17f1ba" - integrity sha512-K7lOQoYqhGhTSChsmHMQbf/SDCsxh/m0uhN6Ipt206lGoe81fpTmaGD0KLh4jUxCONMOUnwCSj0jtX2CM4pEdw== + version "0.36.3" + resolved "https://registry.npmjs.org/msw/-/msw-0.36.3.tgz#7feb243a5fcf563806d45edc027bc36144741170" + integrity sha512-Itzp/QhKaleZoslXDrNik3ramW9ynqzOdbwydX2ehBSSaZd5QoiAl/bHYcV33R6CEZcJgIX1N4s+G6XkF/bhkA== dependencies: - "@mswjs/cookies" "^0.1.7" + "@mswjs/cookies" "^0.1.6" "@mswjs/interceptors" "^0.12.7" "@open-draft/until" "^1.0.3" "@types/cookie" "^0.4.1" @@ -18645,7 +19653,7 @@ msw@^0.36.3: inquirer "^8.2.0" is-node-process "^1.0.1" js-levenshtein "^1.1.6" - node-fetch "^2.6.7" + node-fetch "^2.6.1" path-to-regexp "^6.2.0" statuses "^2.0.0" strict-event-emitter "^0.2.0" @@ -18717,9 +19725,9 @@ nan@^2.14.1, nan@^2.15.0: integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== nano-css@^5.3.1: - version "5.3.4" - resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.4.tgz#40af6a83a76f84204f346e8ccaa9169cdae9167b" - integrity sha512-wfcviJB6NOxDIDfr7RFn/GlaN7I/Bhe4d39ZRCJ3xvZX60LVe2qZ+rDqM49nm4YT81gAjzS+ZklhKP/Gnfnubg== + version "5.3.1" + resolved "https://registry.npmjs.org/nano-css/-/nano-css-5.3.1.tgz#b709383e07ad3be61f64edffacb9d98250b87a1f" + integrity sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA== dependencies: css-tree "^1.1.2" csstype "^3.0.6" @@ -18742,7 +19750,12 @@ nanoclone@^0.2.1: resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== -nanoid@^3.1.23, nanoid@^3.3.1: +nanoid@^3.1.23: + version "3.2.0" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" + integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== + +nanoid@^3.3.1: version "3.3.1" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== @@ -18774,28 +19787,43 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: +negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +negotiator@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/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.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nise@^5.1.0: - version "5.1.1" - resolved "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz#ac4237e0d785ecfcb83e20f389185975da5c31f3" - integrity sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A== + version "5.1.0" + resolved "https://registry.npmjs.org/nise/-/nise-5.1.0.tgz#713ef3ed138252daef20ec035ab62b7a28be645c" + integrity sha512-W5WlHu+wvo3PaKLsJJkgPup2LrsXCcm7AWwyNZkUnn5rwPkuPBi3Iwk5SQtN0mv+K65k7nKKjwNQ30wg3wLAQQ== dependencies: - "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" ">=5" + "@sinonjs/commons" "^1.7.0" + "@sinonjs/fake-timers" "^7.0.4" "@sinonjs/text-encoding" "^0.7.1" just-extend "^4.0.2" path-to-regexp "^1.7.0" @@ -18844,7 +19872,7 @@ node-fetch@2.6.1: resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -18857,9 +19885,9 @@ node-forge@^1.0.0, node-forge@^1.2.0: integrity sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA== node-gyp@^5.0.2: - version "5.1.1" - resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" - integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== + version "5.1.0" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.0.tgz#8e31260a7af4a2e2f994b0673d4e0b3866156332" + integrity sha512-OUTryc5bt/P8zVgNUmC6xdXiDJxLMAW8cF5tLQOT9E5sOQj+UeQxnnPy74K3CLCa/SOjjBlbuzDLR8ANwA+wmw== dependencies: env-paths "^2.2.0" glob "^7.1.4" @@ -18944,6 +19972,11 @@ node-match-path@^0.6.3: resolved "https://registry.npmjs.org/node-match-path/-/node-match-path-0.6.3.tgz#55dd8443d547f066937a0752dce462ea7dc27551" integrity sha512-fB1reOHKLRZCJMAka28hIxCwQLxGmd7WewOCBDYKpyA1KXi68A7vaGgdZAPhY2E6SXoYt3KqYCCvXLJ+O0Fu/Q== +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + node-notifier@^8.0.0: version "8.0.2" resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" @@ -18956,10 +19989,10 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== nodemon@^2.0.2: version "2.0.15" @@ -19009,14 +20042,14 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== +normalize-package-data@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" + integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" + hosted-git-info "^3.0.6" + resolve "^1.17.0" + semver "^7.3.2" validate-npm-package-license "^3.0.1" normalize-path@^2.1.1: @@ -19031,20 +20064,25 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + normalize-url@^4.1.0: version "4.5.1" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -normalize-url@^6.0.1, normalize-url@^6.1.0: +normalize-url@^6.0.1: version "6.1.0" resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-bundled@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + version "1.1.1" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== dependencies: npm-normalize-package-bin "^1.0.1" @@ -19074,7 +20112,16 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" + integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== @@ -19084,9 +20131,9 @@ npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-pack validate-npm-package-name "^3.0.0" npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== + version "2.1.4" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.1.4.tgz#40e96b2b43787d0546a574542d01e066640d09da" + integrity sha512-Qzg2pvXC9U4I4fLnUrBmcIT4x0woLtUgxUi9eC+Zrcv1Xx5eamytGAfbDWQ67j7xOcQ2VW1I3su9smVTIdu7Hw== dependencies: glob "^7.1.6" ignore-walk "^3.0.3" @@ -19103,7 +20150,16 @@ npm-packlist@^3.0.0: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: +npm-pick-manifest@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" + integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== + dependencies: + npm-install-checks "^4.0.0" + npm-package-arg "^8.0.0" + semver "^7.0.0" + +npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -19113,18 +20169,6 @@ npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: npm-package-arg "^8.1.2" semver "^7.3.4" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== - dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - npm-registry-fetch@^12.0.0, npm-registry-fetch@^12.0.1: version "12.0.2" resolved "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" @@ -19202,7 +20246,7 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -nth-check@^2.0.1: +nth-check@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== @@ -19273,12 +20317,9 @@ object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0: integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + version "1.0.2" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -19320,7 +20361,15 @@ object.fromentries@^2.0.5: define-properties "^1.1.3" es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.0.3: + version "2.1.0" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.getownpropertydescriptors@^2.1.0: version "2.1.3" resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== @@ -19444,17 +20493,17 @@ open@^8.0.0, open@^8.0.9, open@^8.4.0: is-wsl "^2.2.0" openapi-sampler@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.2.0.tgz#2e82e4e32c1506a42f370be726d759d5275a9d4d" - integrity sha512-Y0tFg2iH7NWnNHYnesxhMfkXc7wWXyJXYMUTTxkGkfpl0U9u/ZOf6BxrdEXBD4sgs9uMlVWsbWLDLesVmSUU7Q== + version "1.1.1" + resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.1.1.tgz#7bba7000a03cd8a4630bfbe5b3ef258990c78400" + integrity sha512-WAFsl5SPYuhQwaMTDFOcKhnEY1G1rmamrMiPmJdqwfl1lr81g63/befcsN9BNi0w5/R0L+hfcUj13PANEBeLgg== dependencies: "@types/json-schema" "^7.0.7" json-pointer "^0.6.1" openid-client@^4.1.1, openid-client@^4.2.1: - version "4.9.1" - resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.9.1.tgz#4f00a9d1566c0fa08f0dd5986cf0e6b1e5d14186" - integrity sha512-DYUF07AHjI3QDKqKbn2F7RqozT4hyi4JvmpodLrq0HHoNP7t/AjeG/uqiBK1/N2PZSAQEThVjDLHSmJN4iqu/w== + version "4.9.0" + resolved "https://registry.npmjs.org/openid-client/-/openid-client-4.9.0.tgz#bdfc9194435316df419f759ce177635146b43074" + integrity sha512-ThBbvRUUZwxUKBVK2UpDNIZ3eJkvtqWI8s5Dm+naV+gJdL+yRhT+8ywqct1gy5uL+xVS5+A/nhFcpJIisH2x6Q== dependencies: aggregate-error "^3.1.0" got "^11.8.0" @@ -19520,6 +20569,14 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-name@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== + dependencies: + macos-release "^2.2.0" + windows-release "^3.1.0" + os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -19554,14 +20611,14 @@ p-cancelable@^1.0.0: integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + version "2.0.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" + integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + version "2.1.0" + resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== p-filter@^2.1.0: version "2.1.0" @@ -19595,9 +20652,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + version "2.2.2" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" @@ -19665,12 +20722,12 @@ p-reduce@^2.0.0, p-reduce@^2.1.0: integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-retry@^4.5.0: - version "4.6.1" - resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + version "4.5.0" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.5.0.tgz#6685336b3672f9ee8174d3769a660cb5e488521d" + integrity sha512-5Hwh4aVQSu6BEP+w2zKlVXtFAaYQe1qWuVADSgoeVlLjwe/Q/AMSoRR4MDeaAfu8llT+YNbEijWu/YF3m6avkg== dependencies: "@types/retry" "^0.12.0" - retry "^0.13.1" + retry "^0.12.0" p-timeout@^3.2.0: version "3.2.0" @@ -19720,11 +20777,11 @@ packet-reader@1.0.0: integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== pacote@^11.2.6: - version "11.3.5" - resolved "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== + version "11.2.6" + resolved "https://registry.npmjs.org/pacote/-/pacote-11.2.6.tgz#c0426e5d5c8d33aeea3461a75e1390f1ba78f953" + integrity sha512-xCl++Hb3aBC7LaWMimbO4xUqZVsEbKDVc6KKDIIyAeBYrmMwY1yJC2nES/lsGd8sdQLUosgBxQyuVNncZ2Ru0w== dependencies: - "@npmcli/git" "^2.1.0" + "@npmcli/git" "^2.0.1" "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" "@npmcli/run-script" "^1.8.2" @@ -19737,7 +20794,7 @@ pacote@^11.2.6: npm-package-arg "^8.0.1" npm-packlist "^2.1.4" npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" + npm-registry-fetch "^9.0.0" promise-retry "^2.0.1" read-package-json-fast "^2.0.1" rimraf "^3.0.2" @@ -19794,13 +20851,14 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== +parse-asn1@^5.0.0: + version "5.1.5" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== dependencies: - asn1.js "^5.2.0" + asn1.js "^4.0.0" browserify-aes "^1.0.0" + create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" @@ -19844,6 +20902,18 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-entities@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz#9ed6d6569b6cfc95ade058d683ddef239dad60dc" + integrity sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ== + dependencies: + character-entities "^2.0.0" + character-entities-legacy "^2.0.0" + character-reference-invalid "^2.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" + parse-filepath@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -19874,13 +20944,13 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + version "5.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" + json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" parse-package-name@^0.1.0: @@ -19889,25 +20959,28 @@ parse-package-name@^0.1.0: integrity sha1-P0Tdg4/rTCvkvzGLrkR313BrreQ= parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== + version "4.0.1" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== dependencies: is-ssh "^1.3.0" protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" -parse-url@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" - integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== dependencies: is-ssh "^1.3.0" - normalize-url "^6.1.0" + normalize-url "^3.3.0" parse-path "^4.0.0" protocols "^1.4.0" +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + parse5@6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -19979,9 +21052,9 @@ passport-microsoft@^0.1.0: pkginfo "0.2.x" passport-oauth1@1.x.x: - version "1.2.0" - resolved "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.2.0.tgz#5229d431781bf5b265bec86ce9a9cce58a756cf9" - integrity sha512-Sv2YWodC6jN12M/OXwmR4BIXeeIHjjbwYTQw4kS6tHK4zYzSEpxBgSJJnknBjICA5cj0ju3FSnG1XmHgIhYnLg== + version "1.1.0" + resolved "https://registry.npmjs.org/passport-oauth1/-/passport-oauth1-1.1.0.tgz#a7de988a211f9cf4687377130ea74df32730c918" + integrity sha1-p96YiiEfnPRoc3cTDqdN8ycwyRg= dependencies: oauth "0.9.x" passport-strategy "1.x.x" @@ -20182,9 +21255,9 @@ pause@0.0.1: integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + version "3.0.17" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -20192,10 +21265,10 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -peek-readable@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" - integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== +peek-readable@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" + integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== pend@~1.2.0: version "1.2.0" @@ -20252,11 +21325,11 @@ pg@^8.3.0, pg@^8.4.0: pgpass "1.x" pgpass@1.x: - version "1.0.5" - resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" - integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + version "1.0.2" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" + integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= dependencies: - split2 "^4.1.0" + split "^1.0.0" pgtools@^0.3.0: version "0.3.2" @@ -20279,9 +21352,9 @@ picocolors@^1.0.0: integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + version "2.3.0" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" @@ -20347,10 +21420,12 @@ pino@^5.12.2: quick-format-unescaped "^3.0.3" sonic-boom "^0.7.5" -pirates@^4.0.1, pirates@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== +pirates@^4.0.0, pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" pixelmatch@^4.0.2: version "4.0.2" @@ -20366,6 +21441,13 @@ pkg-dir@4.2.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -20414,107 +21496,109 @@ posix-character-classes@^0.1.0: resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^8.2.0: - version "8.2.4" - resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== +postcss-calc@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz#a05b87aacd132740a5db09462a3612453e5df90a" + integrity sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g== dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" -postcss-colormin@^5.2.5: - version "5.2.5" - resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.5.tgz#d1fc269ac2ad03fe641d462b5d1dada35c69968a" - integrity sha512-+X30aDaGYq81mFqwyPpnYInsZQnNpdxMX0ajlY7AExCexEFkPVV+KrO7kXwayqEWL2xwEbNQ4nUO0ZsRWGnevg== +postcss-colormin@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz#6e444a806fd3c578827dbad022762df19334414d" + integrity sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" colord "^2.9.1" - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-convert-values@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.4.tgz#3e74dd97c581f475ae7b4500bc0a7c4fb3a6b1b6" - integrity sha512-bugzSAyjIexdObovsPZu/sBCTHccImJxLyFgeV0MmNBm/Lw5h5XnjfML6gzEmJ3A6nyfCW7hb1JXzcsA4Zfbdw== +postcss-convert-values@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz#879b849dc3677c7d6bc94b6a2c1a3f0808798059" + integrity sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-discard-comments@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.3.tgz#011acb63418d600fdbe18804e1bbecb543ad2f87" - integrity sha512-6W5BemziRoqIdAKT+1QjM4bNcJAQ7z7zk073730NHg4cUXh3/rQHHj7pmYxUB9aGhuRhBiUf0pXvIHkRwhQP0Q== +postcss-discard-comments@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe" + integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== -postcss-discard-duplicates@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.3.tgz#10f202a4cfe9d407b73dfea7a477054d21ea0c1f" - integrity sha512-vPtm1Mf+kp7iAENTG7jI1MN1lk+fBqL5y+qxyi4v3H+lzsXEdfS3dwUZD45KVhgzDEgduur8ycB4hMegyMTeRw== +postcss-discard-duplicates@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d" + integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== -postcss-discard-empty@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.3.tgz#ec185af4a3710b88933b0ff751aa157b6041dd6a" - integrity sha512-xGJugpaXKakwKI7sSdZjUuN4V3zSzb2Y0LOlmTajFbNinEjTfVs9PFW2lmKBaC/E64WwYppfqLD03P8l9BuueA== +postcss-discard-empty@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8" + integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== -postcss-discard-overridden@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.4.tgz#cc999d6caf18ea16eff8b2b58f48ec3ddee35c9c" - integrity sha512-3j9QH0Qh1KkdxwiZOW82cId7zdwXVQv/gRXYDnwx5pBtR1sTkU4cXRK9lp5dSdiM0r0OICO/L8J6sV1/7m0kHg== +postcss-discard-overridden@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6" + integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== postcss-load-config@^3.0.0: - version "3.1.3" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.3.tgz#21935b2c43b9a86e6581a576ca7ee1bde2bd1d23" - integrity sha512-5EYgaM9auHGtO//ljHH+v/aC/TQ5LHXtL7bQajNAUBKUVKiYE8rYpFms7+V26D9FncaGe2zwCoPQsFKb5zF/Hw== + version "3.0.1" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.0.1.tgz#d214bf9cfec1608ffaf0f4161b3ba20664ab64b9" + integrity sha512-/pDHe30UYZUD11IeG8GWx9lNtu1ToyTsZHnyy45B4Mrwr/Kb6NgYl7k753+05CJNKnjbwh4975amoPJ+TEjHNQ== dependencies: - lilconfig "^2.0.4" - yaml "^1.10.2" + cosmiconfig "^7.0.0" + import-cwd "^3.0.0" -postcss-merge-longhand@^5.0.6: - version "5.0.6" - resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.6.tgz#090e60d5d3b3caad899f8774f8dccb33217d2166" - integrity sha512-rkmoPwQO6ymJSmWsX6l2hHeEBQa7C4kJb9jyi5fZB1sE8nSCv7sqchoYPixRwX/yvLoZP2y6FA5kcjiByeJqDg== +postcss-merge-longhand@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz#41f4f3270282ea1a145ece078b7679f0cef21c32" + integrity sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw== dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.0.3" + postcss-value-parser "^4.1.0" + stylehacks "^5.0.1" -postcss-merge-rules@^5.0.6: - version "5.0.6" - resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.6.tgz#26b37411fe1e80202fcef61cab027265b8925f2b" - integrity sha512-nzJWJ9yXWp8AOEpn/HFAW72WKVGD2bsLiAmgw4hDchSij27bt6TF+sIK0cJUBAYT3SGcjtGGsOR89bwkkMuMgQ== +postcss-merge-rules@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.3.tgz#b5cae31f53129812a77e3eb1eeee448f8cf1a1db" + integrity sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" - cssnano-utils "^3.0.2" + cssnano-utils "^2.0.1" postcss-selector-parser "^6.0.5" -postcss-minify-font-values@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.4.tgz#627d824406b0712243221891f40a44fffe1467fd" - integrity sha512-RN6q3tyuEesvyCYYFCRGJ41J1XFvgV+dvYGHr0CeHv8F00yILlN8Slf4t8XW4IghlfZYCeyRrANO6HpJ948ieA== +postcss-minify-font-values@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf" + integrity sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-minify-gradients@^5.0.6: - version "5.0.6" - resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.6.tgz#b07cef51a93f075e94053fd972ff1cba2eaf6503" - integrity sha512-E/dT6oVxB9nLGUTiY/rG5dX9taugv9cbLNTFad3dKxOO+BQg25Q/xo2z2ddG+ZB1CbkZYaVwx5blY8VC7R/43A== +postcss-minify-gradients@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e" + integrity sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q== dependencies: colord "^2.9.1" - cssnano-utils "^3.0.2" - postcss-value-parser "^4.2.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-minify-params@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.5.tgz#86cb624358cd45c21946f8c317893f0449396646" - integrity sha512-YBNuq3Rz5LfLFNHb9wrvm6t859b8qIqfXsWeK7wROm3jSKNpO1Y5e8cOyBv6Acji15TgSrAwb3JkVNCqNyLvBg== +postcss-minify-params@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.2.tgz#1b644da903473fbbb18fbe07b8e239883684b85c" + integrity sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg== dependencies: + alphanum-sort "^1.0.2" browserslist "^4.16.6" - cssnano-utils "^3.0.2" - postcss-value-parser "^4.2.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-minify-selectors@^5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.3.tgz#6ac12d52aa661fd509469d87ab2cebb0a1e3a1b5" - integrity sha512-9RJfTiQEKA/kZhMaEXND893nBqmYQ8qYa/G+uPdVnXF6D/FzpfI6kwBtWEcHx5FqDbA79O9n6fQJfrIj6M8jvQ== +postcss-minify-selectors@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54" + integrity sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og== dependencies: + alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: @@ -20546,11 +21630,11 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-modules@^4.0.0: - version "4.3.0" - resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.0.tgz#1cb32f16a8cfffe2b989598f8135eb6427106ec7" - integrity sha512-zoUttLDSsbWDinJM9jH37o7hulLRyEgH6fZm2PchxN7AZ8rkdWiALyNhnQ7+jg7cX9f10m6y5VhHsrjO0Mf/DA== + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.0.0.tgz#2bc7f276ab88f3f1b0fadf6cbd7772d43b5f3b9b" + integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw== dependencies: - generic-names "^4.0.0" + generic-names "^2.0.1" icss-replace-symbols "^1.1.0" lodash.camelcase "^4.3.0" postcss-modules-extract-imports "^3.0.0" @@ -20559,113 +21643,129 @@ postcss-modules@^4.0.0: postcss-modules-values "^4.0.0" string-hash "^1.1.1" -postcss-normalize-charset@^5.0.3: +postcss-normalize-charset@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0" + integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== + +postcss-normalize-display-values@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd" + integrity sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-positions@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5" + integrity sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg== + dependencies: + postcss-value-parser "^4.1.0" + +postcss-normalize-repeat-style@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5" + integrity sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-string@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0" + integrity sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA== + dependencies: + postcss-value-parser "^4.1.0" + +postcss-normalize-timing-functions@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c" + integrity sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q== + dependencies: + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" + +postcss-normalize-unicode@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37" + integrity sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA== + dependencies: + browserslist "^4.16.0" + postcss-value-parser "^4.1.0" + +postcss-normalize-url@^5.0.3: version "5.0.3" - resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.3.tgz#719fb9f9ca9835fcbd4fed8d6e0d72a79e7b5472" - integrity sha512-iKEplDBco9EfH7sx4ut7R2r/dwTnUqyfACf62Unc9UiyFuI7uUqZZtY+u+qp7g8Qszl/U28HIfcsI3pEABWFfA== - -postcss-normalize-display-values@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.3.tgz#94cc82e20c51cc4ffba6b36e9618adc1e50db8c1" - integrity sha512-FIV5FY/qs4Ja32jiDb5mVj5iWBlS3N8tFcw2yg98+8MkRgyhtnBgSC0lxU+16AMHbjX5fbSJgw5AXLMolonuRQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.4.tgz#4001f38c99675437b83277836fb4291887fcc6cc" - integrity sha512-qynirjBX0Lc73ROomZE3lzzmXXTu48/QiEzKgMeqh28+MfuHLsuqC9po4kj84igZqqFGovz8F8hf44hA3dPYmQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.4.tgz#d005adf9ee45fae78b673031a376c0c871315145" - integrity sha512-Innt+wctD7YpfeDR7r5Ik6krdyppyAg2HBRpX88fo5AYzC1Ut/l3xaxACG0KsbX49cO2n5EB13clPwuYVt8cMA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.4.tgz#b5e00a07597e7aa8a871817bfeac2bfaa59c3333" - integrity sha512-Dfk42l0+A1CDnVpgE606ENvdmksttLynEqTQf5FL3XGQOyqxjbo25+pglCUvziicTxjtI2NLUR6KkxyUWEVubQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.3.tgz#47210227bfcba5e52650d7a18654337090de7072" - integrity sha512-QRfjvFh11moN4PYnJ7hia4uJXeFotyK3t2jjg8lM9mswleGsNw2Lm3I5wO+l4k1FzK96EFwEVn8X8Ojrp2gP4g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.4.tgz#02866096937005cdb2c17116c690f29505a1623d" - integrity sha512-W79Regn+a+eXTzB+oV/8XJ33s3pDyFTND2yDuUCo0Xa3QSy1HtNIfRVPXNubHxjhlqmMFADr3FSCHT84ITW3ig== - dependencies: - browserslist "^4.16.6" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.5.tgz#c39efc12ff119f6f45f0b4f516902b12c8080e3a" - integrity sha512-Ws3tX+PcekYlXh+ycAt0wyzqGthkvVtZ9SZLutMVvHARxcpu4o7vvXcNoiNKyjKuWecnjS6HDI3fjBuDr5MQxQ== + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.3.tgz#42eca6ede57fe69075fab0f88ac8e48916ef931c" + integrity sha512-qWiUMbvkRx3kc1Dp5opzUwc7MBWZcSDK2yofCmdvFBCpx+zFPkxBC1FASQ59Pt+flYfj/nTZSkmF56+XG5elSg== dependencies: + is-absolute-url "^3.0.3" normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-normalize-whitespace@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.4.tgz#1d477e7da23fecef91fc4e37d462272c7b55c5ca" - integrity sha512-wsnuHolYZjMwWZJoTC9jeI2AcjA67v4UuidDrPN9RnX8KIZfE+r2Nd6XZRwHVwUiHmRvKQtxiqo64K+h8/imaw== +postcss-normalize-whitespace@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a" + integrity sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" -postcss-ordered-values@^5.0.5: - version "5.0.5" - resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.5.tgz#e878af822a130c3f3709737e24cb815ca7c6d040" - integrity sha512-mfY7lXpq+8bDEHfP+muqibDPhZ5eP9zgBEF9XRvoQgXcQe2Db3G1wcvjbnfjXG6wYsl+0UIjikqq4ym1V2jGMQ== +postcss-ordered-values@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044" + integrity sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ== dependencies: - cssnano-utils "^3.0.2" - postcss-value-parser "^4.2.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-reduce-initial@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.3.tgz#68891594defd648253703bbd8f1093162f19568d" - integrity sha512-c88TkSnQ/Dnwgb4OZbKPOBbCaauwEjbECP5uAuFPOzQ+XdjNjRH7SG0dteXrpp1LlIFEKK76iUGgmw2V0xeieA== +postcss-reduce-initial@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz#9d6369865b0f6f6f6b165a0ef5dc1a4856c7e946" + integrity sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw== dependencies: - browserslist "^4.16.6" + browserslist "^4.16.0" caniuse-api "^3.0.0" -postcss-reduce-transforms@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.4.tgz#717e72d30befe857f7d2784dba10eb1157863712" - integrity sha512-VIJB9SFSaL8B/B7AXb7KHL6/GNNbbCHslgdzS9UDfBZYIA2nx8NLY7iD/BXFSO/1sRUILzBTfHCoW5inP37C5g== +postcss-reduce-transforms@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640" + integrity sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA== dependencies: - postcss-value-parser "^4.2.0" + cssnano-utils "^2.0.1" + postcss-value-parser "^4.1.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.9" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.4" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-selector-parser@^6.0.5: + version "6.0.6" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.4.tgz#cfa8682f47b88f7cd75108ec499e133b43102abf" - integrity sha512-yDKHvULbnZtIrRqhZoA+rxreWpee28JSRH/gy9727u0UCgtpv1M/9WEWY3xySlFa0zQJcqf6oCBJPR5NwkmYpg== +postcss-svgo@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30" + integrity sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA== dependencies: - postcss-value-parser "^4.2.0" + postcss-value-parser "^4.1.0" svgo "^2.7.0" -postcss-unique-selectors@^5.0.4: - version "5.0.4" - resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.4.tgz#08e188126b634ddfa615fb1d6c262bafdd64826e" - integrity sha512-5ampwoSDJCxDPoANBIlMgoBcYUHnhaiuLYJR5pj1DLnYQvMRVyFuTA5C3Bvt+aHtiqWpJkD/lXT50Vo1D0ZsAQ== +postcss-unique-selectors@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz#5d6893daf534ae52626708e0d62250890108c0c1" + integrity sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA== dependencies: + alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" postcss-value-parser@^3.3.0: @@ -20673,7 +21773,7 @@ postcss-value-parser@^3.3.0: resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -20698,9 +21798,9 @@ postgres-bytea@~1.0.0: integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= postgres-date@~1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" - integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + version "1.0.5" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.5.tgz#710b27de5f27d550f6e80b5d34f7ba189213c2ee" + integrity sha512-pdau6GRPERdAYUQwkBnGKxEfPyhVZXG/JiS44iZWiNdSOWE09N2lUgN6yshuq6fVSon4Pm0VMXd1srUUkLe9iA== postgres-interval@^1.1.0: version "1.2.0" @@ -20791,25 +21891,48 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== +pretty-format@^27.0.2: + version "27.3.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz#7e9486365ccdd4a502061fa761d3ab9ca1b78df5" + integrity sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA== dependencies: + "@jest/types" "^27.2.5" ansi-regex "^5.0.1" ansi-styles "^5.0.0" react-is "^17.0.1" -printj@~1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz#9af6b1d55647a1587ac44f4c1654a4b95b8e12cb" - integrity sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg== +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== +<<<<<<< HEAD prismjs@^1.27.0, prismjs@~1.27.0: +======= +<<<<<<< HEAD +prismjs@^1.25.0, prismjs@~1.27.0: +>>>>>>> f9b03ab02f (fixups) version "1.27.0" resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +======= +prismjs@^1.25.0: + version "1.26.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz#16881b594828bb6b45296083a8cbab46b0accd47" + integrity sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ== + +prismjs@~1.25.0: + version "1.25.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" + integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +>>>>>>> 76d216e74b (fixups) proc-log@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" @@ -20904,9 +22027,9 @@ properties-reader@^2.2.0: mkdirp "^1.0.4" property-expr@^2.0.4: - version "2.0.5" - resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" - integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + version "2.0.4" + resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910" + integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg== property-information@^5.0.0: version "5.6.0" @@ -20916,19 +22039,19 @@ property-information@^5.0.0: xtend "^4.0.0" property-information@^6.0.0: - version "6.1.1" - resolved "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" - integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== + version "6.0.1" + resolved "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz#7c668d9f2b9cb63bc3e105d8b8dfee7221a17800" + integrity sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg== proto-list@~1.2.1: version "1.2.4" resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -proto3-json-serializer@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.8.tgz#f80f9afc1efe5ed9a9856bbbd17dc7cabd7ce9a3" - integrity sha512-ACilkB6s1U1gWnl5jtICpnDai4VCxmI9GFxuEaYdxtDG2oVI3sVFIUsvUZcQbJgtPM6p+zqKbjTKQZp6Y4FpQw== +proto3-json-serializer@^0.1.5: + version "0.1.6" + resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-0.1.6.tgz#67cf3b8d5f4c8bebfc410698ad3b1ed64da39c7b" + integrity sha512-tGbV6m6Kad8NqxMh5hw87euPS0YoZSAOIfvR01zYkQV8Gpx1V/8yU/0gCKCvfCkhAJsjvzzhnnsdQxA1w7PSog== dependencies: protobufjs "^6.11.2" @@ -20952,9 +22075,9 @@ protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.8.6: long "^4.0.0" protocols@^1.1.0, protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== + version "1.4.7" + resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== proxy-addr@~2.0.7: version "2.0.7" @@ -21008,6 +22131,11 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" +puka@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz#a2df782b7eb4cf9564e4c93a5da422de0dfacc02" + integrity sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g== + pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -21088,24 +22216,14 @@ qs@^6.10.1, qs@^6.10.2, qs@^6.10.3, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: side-channel "^1.0.4" qs@~6.5.2: - version "6.5.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" + version "6.5.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== query-string@^7.0.0: - version "7.1.1" - resolved "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" - integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w== + version "7.0.0" + resolved "https://registry.npmjs.org/query-string/-/query-string-7.0.0.tgz#aaad2c8d5c6a6d0c6afada877fecbd56af79e609" + integrity sha512-Iy7moLybliR5ZgrK/1R3vjrXq03S13Vz4Rbm5Jg3EFq1LUmQppto0qtXz4vqZ386MSRjZgnTSZ9QC+NZOSd/XA== dependencies: decode-uri-component "^0.2.0" filter-obj "^1.1.0" @@ -21127,11 +22245,6 @@ querystringify@^2.1.1: resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - quick-format-unescaped@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-3.0.3.tgz#fb3e468ac64c01d22305806c39f121ddac0d1fb9" @@ -21148,9 +22261,9 @@ quick-lru@^5.1.1: integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== raf-schd@^4.0.2: - version "4.0.3" - resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a" - integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== + version "4.0.2" + resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" + integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== raf@^3.4.0: version "3.4.1" @@ -21194,7 +22307,7 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.3, raw-body@^2.4.1: +raw-body@2.4.3: version "2.4.3" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== @@ -21204,6 +22317,16 @@ raw-body@2.4.3, raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@^2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== + dependencies: + bytes "3.1.1" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + rc-progress@3.2.4: version "3.2.4" resolved "https://registry.npmjs.org/rc-progress/-/rc-progress-3.2.4.tgz#4036acdae2566438545bc4df2203248babaf7549" @@ -21214,9 +22337,9 @@ rc-progress@3.2.4: rc-util "^5.16.1" rc-util@^5.16.1: - version "5.18.1" - resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.18.1.tgz#80bd1450b5254655d2fbea63e3d34f6871e9be79" - integrity sha512-24xaSrMZUEKh1+suDOtJWfPe9E6YrwryViZcoPO0miJTKzP4qhUlV5AAlKQ82AJilz/AOHfi3l6HoX8qa1ye8w== + version "5.16.1" + resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.16.1.tgz#374db7cb735512f05165ddc3d6b2c61c21b8b4e3" + integrity sha512-kSCyytvdb3aRxQacS/71ta6c+kBWvM1v8/2h9d/HaNWauc3qB8pLnF20PJ8NajkNN8gb+rR1l0eWO+D4Pz+LLQ== dependencies: "@babel/runtime" "^7.12.5" react-is "^16.12.0" @@ -21233,15 +22356,15 @@ rc@^1.2.7, rc@^1.2.8: strip-json-comments "~2.0.1" react-beautiful-dnd@^13.0.0: - version "13.1.0" - resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.0.tgz#ec97c81093593526454b0de69852ae433783844d" - integrity sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA== + version "13.0.0" + resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40" + integrity sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg== dependencies: - "@babel/runtime" "^7.9.2" + "@babel/runtime" "^7.8.4" css-box-model "^1.2.0" memoize-one "^5.1.1" raf-schd "^4.0.2" - react-redux "^7.2.0" + react-redux "^7.1.1" redux "^4.0.4" use-memo-one "^1.1.1" @@ -21306,9 +22429,9 @@ react-double-scrollbar@0.0.15: integrity sha1-6RWrjLO5WYdwdfSUNt6/2wQoj+Q= react-error-boundary@^3.1.0: - version "3.1.4" - resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" - integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== + version "3.1.3" + resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.3.tgz#276bfa05de8ac17b863587c9e0647522c25e2a0b" + integrity sha512-A+F9HHy9fvt9t8SNDlonq01prnU8AmkjvGKV4kk8seB9kU3xMEO8J/PQlLVmoOIDODl5U2kufSBs4vrWIqhsAA== dependencies: "@babel/runtime" "^7.12.5" @@ -21337,10 +22460,15 @@ react-helmet@6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" -react-hook-form@^7.12.2, react-hook-form@^7.13.0: - version "7.27.1" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.27.1.tgz#fe5fbcb6bf58751f66d9569e998d671480cc57f6" - integrity sha512-N3a7A6zIQ8DJeThisVZGtOUabTbJw+7DHJidmB9w8m3chckv2ZWKb5MHps9d2pPJqmCDoWe53Bos56bYmJms5w== +react-hook-form@^7.12.2: + version "7.16.1" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.16.1.tgz#669046df378a71949e5cf8a2398cbe20d5cb27bc" + integrity sha512-kcLDmSmlyLUFx2UU5bG/o4+3NeK753fhKodJa8gkplXohGkpAq0/p+TR24OWjZmkEc3ES7ppC5v5d6KUk+fJTA== + +react-hook-form@^7.13.0: + version "7.17.4" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.17.4.tgz#232b6aaccddb91eb4a228ac20b154abd90866fdb" + integrity sha512-7XhbCr7d9fDC1TgcK/BUbt7D3q0VJMu7jPErfsa0JrxVjv/nni41xWdJcy0Zb7R+Np8OsCkQ2lMyloAtE3DLiQ== react-hot-loader@^4.13.0: version "4.13.0" @@ -21382,7 +22510,7 @@ react-is@^16.10.2, react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.0, react-is@^17.0.1, react-is@^17.0.2: +"react-is@^16.8.0 || ^17.0.0", react-is@^17.0.0, react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -21412,6 +22540,7 @@ react-markdown@^8.0.0: unist-util-visit "^4.0.0" vfile "^5.0.0" +<<<<<<< HEAD react-query@^3.34.16: version "3.34.16" resolved "https://registry.npmjs.org/react-query/-/react-query-3.34.16.tgz#279ea180bcaeaec49c7864b29d1711ee9f152594" @@ -21425,13 +22554,19 @@ react-redux@^7.2.0, react-redux@^7.2.4: version "7.2.6" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== +======= +react-redux@^7.1.1, react-redux@^7.2.4: + version "7.2.5" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8" + integrity sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg== +>>>>>>> 76d216e74b (fixups) dependencies: - "@babel/runtime" "^7.15.4" - "@types/react-redux" "^7.1.20" + "@babel/runtime" "^7.12.1" + "@types/react-redux" "^7.1.16" hoist-non-react-statics "^3.3.2" loose-envify "^1.4.0" prop-types "^15.7.2" - react-is "^17.0.2" + react-is "^16.13.1" react-resize-detector@^2.3.0: version "2.3.0" @@ -21475,14 +22610,14 @@ react-router@^6.0.0-beta.0: history "^5.2.0" react-side-effect@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" - integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + version "2.1.0" + resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz#1ce4a8b4445168c487ed24dab886421f74d380d3" + integrity sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg== react-smooth@^1.0.5: - version "1.0.6" - resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.6.tgz#18b964f123f7bca099e078324338cd8739346d0a" - integrity sha512-B2vL4trGpNSMSOzFiAul9kFAsxTukL9Wyy9EXtkQy3GJr6sZqW9e1nShdVOJ3hRYamPZ94O17r3Q0bjSw3UYtg== + version "1.0.5" + resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-1.0.5.tgz#94ae161d7951cdd893ccb7099d031d342cb762ad" + integrity sha512-eW057HT0lFgCKh8ilr0y2JaH2YbNcuEdFpxyg7Gf/qDKk9hqGMyXryZJ8iMGJEuKH0+wxS0ccSsBBB3W8yCn8w== dependencies: lodash "~4.17.4" prop-types "^15.6.0" @@ -21517,9 +22652,9 @@ react-syntax-highlighter@^15.4.5: refractor "^3.6.0" react-test-renderer@^16.13.1: - version "16.14.0" - resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" - integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== + version "16.13.1" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" + integrity sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" @@ -21551,9 +22686,9 @@ react-transition-group@2.9.0, react-transition-group@^2.5.0: react-lifecycles-compat "^3.0.4" react-transition-group@^4.0.0, react-transition-group@^4.4.0: - version "4.4.2" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" - integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== + version "4.4.1" + resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" @@ -21565,7 +22700,27 @@ react-universal-interface@^0.6.2: resolved "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== -react-use@^17.2.4, react-use@^17.3.1, react-use@^17.3.2: +react-use@^17.2.4: + version "17.2.4" + resolved "https://registry.npmjs.org/react-use/-/react-use-17.2.4.tgz#1f89be3db0a8237c79253db0a15e12bbe3cfeff1" + integrity sha512-vQGpsAM0F5UIlshw5UI8ULGPS4yn5rm7/qvn3T1Gnkrz7YRMEEMh+ynKcmRloOyiIeLvKWiQjMiwRGtdbgs5qQ== + dependencies: + "@types/js-cookie" "^2.2.6" + "@xobotyi/scrollbar-width" "^1.9.5" + copy-to-clipboard "^3.3.1" + fast-deep-equal "^3.1.3" + fast-shallow-equal "^1.0.0" + js-cookie "^2.2.1" + nano-css "^5.3.1" + react-universal-interface "^0.6.2" + resize-observer-polyfill "^1.5.1" + screenfull "^5.1.0" + set-harmonic-interval "^1.0.1" + throttle-debounce "^3.0.1" + ts-easing "^0.2.0" + tslib "^2.1.0" + +react-use@^17.3.1, react-use@^17.3.2: version "17.3.2" resolved "https://registry.npmjs.org/react-use/-/react-use-17.3.2.tgz#448abf515f47c41c32455024db28167cb6e53be8" integrity sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw== @@ -21611,7 +22766,15 @@ read-cmd-shim@^2.0.0: resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== -read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json-fast@^2.0.3: +read-package-json-fast@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.1.tgz#c767f6c634873ffb6bb73788191b65559734f555" + integrity sha512-bp6z0tdgLy9KzdfENDIw/53HWAolOVoQTRWXv7PUiqAo3YvvoUVeLr7RWPWq+mu7KUOu9kiT4DvxhUgNUBsvug== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json-fast@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -21620,29 +22783,21 @@ read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2, read-package-json- npm-normalize-package-bin "^1.0.1" read-package-json@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== + version "2.1.1" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" + integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== dependencies: glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" + json-parse-better-errors "^1.0.1" normalize-package-data "^2.0.0" npm-normalize-package-bin "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" read-package-json@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" - integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" - integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== + version "3.0.0" + resolved "https://registry.npmjs.org/read-package-json/-/read-package-json-3.0.0.tgz#2219328e77c9be34f035a4ce58d1fb8e2979adf9" + integrity sha512-4TnJZ5fnDs+/3deg1AuMExL4R1SFNRLQeOhV9c8oDKm3eoG6u8xU0r0mNNRJHi3K6B+jXmT7JOhwhAklWw9SSQ== dependencies: glob "^7.1.1" json-parse-even-better-errors "^2.3.0" @@ -21737,7 +22892,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -21782,16 +22937,23 @@ readdirp@~3.6.0: picomatch "^2.2.1" recast@^0.20.3, recast@^0.20.4: - version "0.20.5" - resolved "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" - integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== + version "0.20.4" + resolved "https://registry.npmjs.org/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" + integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== dependencies: ast-types "0.14.2" esprima "~4.0.0" source-map "~0.6.1" tslib "^2.0.1" -recharts-scale@^0.4.2, recharts-scale@^0.4.4: +recharts-scale@^0.4.2: + version "0.4.3" + resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.3.tgz#040b4f638ed687a530357292ecac880578384b59" + integrity sha512-t8p5sccG9Blm7c1JQK/ak9O8o95WGhNXD7TXg/BW5bYbVlr6eCeRBNpgyigD4p6pSSMehC5nSvBUPj6F68rbFA== + dependencies: + decimal.js-light "^2.4.1" + +recharts-scale@^0.4.4: version "0.4.5" resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" integrity sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w== @@ -21816,9 +22978,9 @@ recharts@^1.8.5: reduce-css-calc "^1.3.0" recharts@^2.1.5: - version "2.1.9" - resolved "https://registry.npmjs.org/recharts/-/recharts-2.1.9.tgz#a52d411a7d822d118f7754cfc9c50db8fab46fb9" - integrity sha512-VozH5uznUvGqD7n224FGj7cmMAenlS0HPCs+7r2HeeHiQK6un6z0CTZfWVAB860xbcr4m+BN/EGMPZmYWd34Rg== + version "2.1.8" + resolved "https://registry.npmjs.org/recharts/-/recharts-2.1.8.tgz#ca8774fcec5f5d7ec15dedd638db9ee12faf1c09" + integrity sha512-Wi7ufdDGyvy/BPf1za1Ok7VeWB2KtEejaewO9ulmlUhvn5l5RPS4AOkrUfhtMRTTjgJ4K6AbWMDpwtDjczUHJA== dependencies: "@types/d3-interpolate" "^2.0.0" "@types/d3-scale" "^3.0.0" @@ -21910,7 +23072,22 @@ redux-immutable@^4.0.0: resolved "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3" integrity sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM= -redux@^4.0.0, redux@^4.0.4, redux@^4.1.2: +redux@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47" + integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw== + dependencies: + "@babel/runtime" "^7.9.2" + +redux@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +redux@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== @@ -21931,17 +23108,17 @@ refractor@^3.6.0: parse-entities "^2.0.0" prismjs "~1.27.0" -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: - regenerate "^1.4.2" + regenerate "^1.4.0" -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.10.5: version "0.10.5" @@ -21953,17 +23130,23 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: +regenerator-runtime@^0.13.3: version "0.13.9" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + version "0.14.4" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== dependencies: "@babel/runtime" "^7.8.4" + private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -21973,10 +23156,18 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: - version "1.4.1" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" @@ -21986,22 +23177,22 @@ regexpp@^3.2.0: resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + version "4.1.1" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" + integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== dependencies: rc "^1.2.8" @@ -22012,15 +23203,15 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" @@ -22077,9 +23268,9 @@ remark-gfm@^3.0.1: unified "^10.0.0" remark-parse@^10.0.0: - version "10.0.1" - resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" - integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + version "10.0.0" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz#65e2b2b34d8581d36b97f12a2926bb2126961cb4" + integrity sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ== dependencies: "@types/mdast" "^3.0.0" mdast-util-from-markdown "^1.0.0" @@ -22135,9 +23326,9 @@ renderkid@^3.0.0: strip-ansi "^6.0.1" repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + version "1.1.3" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" @@ -22170,6 +23361,22 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -22221,10 +23428,10 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@^4.1.5: - version "4.1.5" - resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6" - integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ== +reselect@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: version "1.5.1" @@ -22232,9 +23439,9 @@ resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== resolve-alpn@^1.0.0: - version "1.2.1" - resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" + integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== resolve-cwd@^3.0.0: version "3.0.0" @@ -22259,11 +23466,11 @@ resolve-url@^0.2.1: integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0: - version "1.22.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + version "1.21.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" + integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== dependencies: - is-core-module "^2.8.1" + is-core-module "^2.8.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -22330,7 +23537,14 @@ ret@~0.2.0: resolved "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== -retry-request@^4.0.0, retry-request@^4.2.2: +retry-request@^4.0.0: + version "4.1.3" + resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde" + integrity sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ== + dependencies: + debug "^4.1.1" + +retry-request@^4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg== @@ -22338,12 +23552,7 @@ retry-request@^4.0.0, retry-request@^4.2.2: debug "^4.1.1" extend "^3.0.2" -retry@0.13.1, retry@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -retry@^0.12.0: +retry@0.12.0, retry@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= @@ -22354,9 +23563,9 @@ reusify@^1.0.4: integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfc4648@^1.3.0: - version "1.5.1" - resolved "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.1.tgz#b0b16756e33d9de8c0c7833e94b28e627ec372a4" - integrity sha512-60e/YWs2/D3MV1ErdjhJHcmlgnyLUiG4X/14dgsfm9/zmCWLN16xI6YqJYSCd/OANM7bUNzJqPY5B8/02S9Ibw== + version "1.4.0" + resolved "https://registry.npmjs.org/rfc4648/-/rfc4648-1.4.0.tgz#c75b2856ad2e2d588b6ddb985d556f1f7f2a2abd" + integrity sha512-3qIzGhHlMHA6PoT6+cdPKZ+ZqtxkIvg8DZGKA5z6PQ33/uuhoJ+Ws/D/J9rXW6gXodgH8QYlz2UCl+sdUDmNIg== rfdc@^1.3.0: version "1.3.0" @@ -22409,13 +23618,11 @@ rollup-plugin-dts@^4.0.1: "@babel/code-frame" "^7.16.7" rollup-plugin-esbuild@^4.7.2: - version "4.8.2" - resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.8.2.tgz#c097b93cd4b622e62206cadb5797589f548cf48c" - integrity sha512-wsaYNOjzTb6dN1qCIZsMZ7Q0LWiPJklYs2TDI8vJA2LUbvtPUY+17TC8C0vSat3jPMInfR9XWKdA7ttuwkjsGQ== + version "4.7.2" + resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-4.7.2.tgz#1a496a9f96257cdf5ed800e818932859232471f8" + integrity sha512-rBS2hTedtG+wL/yyIWQ84zju5rtfF15gkaCLN0vsWGmBdRd0UPm52meAwkmrsPQf3mB/H2o+k9Q8Ce8A66SE5A== dependencies: "@rollup/pluginutils" "^4.1.1" - debug "^4.3.3" - es-module-lexer "^0.9.3" joycon "^3.0.1" jsonc-parser "^3.0.0" @@ -22459,9 +23666,15 @@ rollup@^0.63.4: "@types/node" "*" rollup@^2.60.2: +<<<<<<< HEAD version "2.70.0" resolved "https://registry.npmjs.org/rollup/-/rollup-2.70.0.tgz#17a92e5938e92a251b962352e904c9f558230ec7" integrity sha512-iEzYw+syFxQ0X9RefVwhr8BA2TNJsTaX8L8dhyeyMECDbmiba+8UQzcu+xZdji0+JQ+s7kouQnw+9Oz5M19XKA== +======= + version "2.67.2" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.67.2.tgz#d95e15f60932ad21e05a870bd0aa0b235d056f04" + integrity sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw== +>>>>>>> 76d216e74b (fixups) optionalDependencies: fsevents "~2.3.2" @@ -22471,23 +23684,23 @@ rsvp@^4.8.4: integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== rtl-css-js@^1.14.0: - version "1.15.0" - resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.15.0.tgz#680ed816e570a9ebccba9e1cd0f202c6a8bb2dc0" - integrity sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew== + version "1.14.0" + resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d" + integrity sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg== dependencies: "@babel/runtime" "^7.1.2" run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + version "2.4.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" + integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== + dependencies: + is-promise "^2.1.0" run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" + version "1.1.9" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== run-script-webpack-plugin@^0.0.11: version "0.0.11" @@ -22501,10 +23714,10 @@ rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.4: - version "7.5.4" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" - integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== +rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.2: + version "7.5.2" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" + integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w== dependencies: tslib "^2.1.0" @@ -22520,7 +23733,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -22544,6 +23757,11 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +safe-stable-stringify@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz#c8a220ab525cd94e60ebf47ddc404d610dc5d84a" + integrity sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw== + safe-stable-stringify@^2.2.0, safe-stable-stringify@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" @@ -22586,7 +23804,7 @@ sax@>=0.6.0, sax@~1.2.4: resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^5.0.1: +saxes@^5.0.0, saxes@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== @@ -22643,9 +23861,9 @@ scoped-regex@^2.0.0: integrity sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ== screenfull@^5.1.0: - version "5.2.0" - resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" - integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== + version "5.1.0" + resolved "https://registry.npmjs.org/screenfull/-/screenfull-5.1.0.tgz#85c13c70f4ead4c1b8a935c70010dfdcd2c0e5c8" + integrity sha512-dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA== scuid@^1.1.0: version "1.1.0" @@ -22696,7 +23914,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: +semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: version "7.3.5" resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -22876,7 +24094,7 @@ shell-quote@^1.7.3: resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== -shelljs@^0.8.5: +shelljs@^0.8.4, shelljs@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -22922,7 +24140,7 @@ simple-concat@^1.0.0: resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -simple-get@^3.0.3: +simple-get@^3.0.2, simple-get@^3.0.3: version "3.1.1" resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== @@ -22931,6 +24149,7 @@ simple-get@^3.0.3: once "^1.3.1" simple-concat "^1.0.0" +<<<<<<< HEAD simple-get@^4.0.0, simple-get@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" @@ -22940,6 +24159,8 @@ simple-get@^4.0.0, simple-get@^4.0.1: once "^1.3.1" simple-concat "^1.0.0" +======= +>>>>>>> 76d216e74b (fixups) simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -22948,12 +24169,12 @@ simple-swizzle@^0.2.2: is-arrayish "^0.3.1" sinon@^11.1.1: - version "11.1.2" - resolved "https://registry.npmjs.org/sinon/-/sinon-11.1.2.tgz#9e78850c747241d5c59d1614d8f9cbe8840e8674" - integrity sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw== + version "11.1.1" + resolved "https://registry.npmjs.org/sinon/-/sinon-11.1.1.tgz#99a295a8b6f0fadbbb7e004076f3ae54fc6eab91" + integrity sha512-ZSSmlkSyhUWbkF01Z9tEbxZLF/5tRC9eojCdFh33gtQaP7ITQVaMWQHGuFM7Cuf/KEfihuh1tTl3/ABju3AQMg== dependencies: "@sinonjs/commons" "^1.8.3" - "@sinonjs/fake-timers" "^7.1.2" + "@sinonjs/fake-timers" "^7.1.0" "@sinonjs/samsam" "^6.0.2" diff "^5.0.0" nise "^5.1.0" @@ -23010,10 +24231,10 @@ slide@^1.1.6: resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== smartwrap@^1.2.3: version "1.2.5" @@ -23122,20 +24343,20 @@ socket.io@^2.2.0: socket.io-parser "~3.4.0" sockjs@^0.3.21: - version "0.3.24" - resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + version "0.3.21" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== dependencies: faye-websocket "^0.11.3" - uuid "^8.3.2" + uuid "^3.4.0" websocket-driver "^0.7.4" socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== + version "5.0.0" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" + integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== dependencies: - agent-base "^6.0.2" + agent-base "6" debug "4" socks "^2.3.3" @@ -23148,13 +24369,21 @@ socks-proxy-agent@^6.0.0, socks-proxy-agent@^6.1.1: debug "^4.3.1" socks "^2.6.1" -socks@^2.3.3, socks@^2.6.1: - version "2.6.2" - resolved "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== +socks@^2.3.3: + version "2.5.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz#7720640b6b5ec9a07d556419203baa3f0596df5f" + integrity sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ== dependencies: ip "^1.1.5" - smart-buffer "^4.2.0" + smart-buffer "^4.1.0" + +socks@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" + integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== + dependencies: + ip "^1.1.5" + smart-buffer "^4.1.0" sonic-boom@^0.7.5: version "0.7.7" @@ -23207,7 +24436,7 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.10, source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20: +source-map-support@^0.5.10: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -23215,10 +24444,18 @@ source-map-support@^0.5.10, source-map-support@^0.5.16, source-map-support@^0.5. buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20: + version "0.5.20" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" + integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + version "0.4.0" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.5.6: version "0.5.6" @@ -23269,30 +24506,30 @@ spawndamnit@^2.0.0: signal-exit "^3.0.2" spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.1.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.2.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + version "3.0.0" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + version "3.0.5" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== spdy-transport@^3.0.0: version "3.0.0" @@ -23341,11 +24578,6 @@ split2@^3.0.0: dependencies: readable-stream "^3.0.0" -split2@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" - integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== - split@0.3: version "0.3.3" resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" @@ -23386,9 +24618,9 @@ ssh-remote-port-forward@^1.0.4: ssh2 "^1.4.0" ssh2@^1.4.0: - version "1.6.0" - resolved "https://registry.npmjs.org/ssh2/-/ssh2-1.6.0.tgz#61aebc3a6910fe488f9c85cd8355bdf8d4724e05" - integrity sha512-lxc+uvXqOxyQ99N2M7k5o4pkYDO5GptOTYduWw7hIM41icxvoBcCNHcj+LTKrjkL0vFcAl+qfZekthoSFRJn2Q== + version "1.5.0" + resolved "https://registry.npmjs.org/ssh2/-/ssh2-1.5.0.tgz#4dc559ba98a1cbb420e8d42998dfe35d0eda92bc" + integrity sha512-iUmRkhH9KGeszQwDW7YyyqjsMTf4z+0o48Cp4xOwlY5LjtbIAvyd3fwnsoUZW/hXmTCRA3yt7S/Jb9uVjErVlA== dependencies: asn1 "^0.2.4" bcrypt-pbkdf "^1.0.2" @@ -23397,9 +24629,9 @@ ssh2@^1.4.0: nan "^2.15.0" sshpk@^1.14.1, sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + version "1.16.1" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -23436,16 +24668,16 @@ stack-trace@0.0.x: integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= stack-utils@^2.0.2: - version "2.0.5" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + version "2.0.2" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" + integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== dependencies: escape-string-regexp "^2.0.0" stackframe@^1.1.1: - version "1.2.1" - resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" - integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== + version "1.1.1" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz#ffef0a3318b1b60c3b58564989aca5660729ec71" + integrity sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ== stacktrace-gps@^3.0.4: version "3.0.4" @@ -23500,6 +24732,11 @@ statuses@2.0.1, statuses@^2.0.0: resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + stoppable@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" @@ -23525,7 +24762,7 @@ stream-combiner@~0.0.4: dependencies: duplexer "~0.1.1" -stream-events@^1.0.4, stream-events@^1.0.5: +stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== @@ -23548,7 +24785,7 @@ stream-shift@^1.0.0: resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -stream-transform@^2.1.3: +stream-transform@^2.0.1: version "2.1.3" resolved "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz#a1c3ecd72ddbf500aa8d342b0b9df38f5aa598e3" integrity sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ== @@ -23583,9 +24820,9 @@ string-hash@^1.1.1: integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + version "4.0.1" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" @@ -23616,6 +24853,15 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string-width@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3" @@ -23669,7 +24915,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@5.2.0: +strip-ansi@5.2.0, strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -23773,12 +25019,12 @@ strong-log-transformer@^2.1.0: through "^2.3.4" strtok3@^6.2.4: - version "6.3.0" - resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" - integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + version "6.2.4" + resolved "https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" + integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== dependencies: "@tokenizer/token" "^0.3.0" - peek-readable "^4.1.0" + peek-readable "^4.0.1" stubs@^3.0.0: version "3.0.0" @@ -23807,18 +25053,18 @@ style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -stylehacks@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.3.tgz#2ef3de567bfa2be716d29a93bf3d208c133e8d04" - integrity sha512-ENcUdpf4yO0E1rubu8rkxI+JGQk4CgjchynZ4bDBJDfqdy+uhTRSWb8/F3Jtu+Bw5MW45Po3/aQGeIyyxgQtxg== +stylehacks@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb" + integrity sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA== dependencies: - browserslist "^4.16.6" + browserslist "^4.16.0" postcss-selector-parser "^6.0.4" stylis@^4.0.6: - version "4.0.13" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== + version "4.0.7" + resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.7.tgz#412a90c28079417f3d27c028035095e4232d2904" + integrity sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA== subscriptions-transport-ws@^0.11.0: version "0.11.0" @@ -23911,9 +25157,9 @@ supports-color@^9.2.1: integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + version "2.1.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" @@ -23960,16 +25206,16 @@ svgo@^2.5.0, svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -swagger-client@^3.18.4: - version "3.18.4" - resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.4.tgz#71be9df585157a3335a542c407733d2134fa75e9" - integrity sha512-Wj26oEctONq/u0uM+eSj18675YM5e2vFnx7Kr4neLeXEHKUsfceVQ/OdtrBXdrT3VbtdBbZfMTfl1JOBpix2MA== +swagger-client@^3.17.0: + version "3.18.0" + resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.0.tgz#2e59e666b38ded983e26fb512421ef8ff82547f0" + integrity sha512-lNfwTXHim0QiCNuZ4BKgWle7N7+9WlFLtcP02n0xSchFtdzsKJb2kWsOlwplRU3appVFjnHRy+1eVabRc3ZhbA== dependencies: "@babel/runtime-corejs3" "^7.11.2" btoa "^1.2.1" cookie "~0.4.1" - cross-fetch "^3.1.5" - deepmerge "~4.2.2" + cross-fetch "^3.1.4" + deep-extend "~0.6.0" fast-json-patch "^3.0.0-1" form-data-encoder "^1.4.3" formdata-node "^4.0.0" @@ -23981,11 +25227,11 @@ swagger-client@^3.18.4: url "~0.11.0" swagger-ui-react@^4.1.3: - version "4.5.1" - resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.5.1.tgz#8dd36f56a4bca47778539a1637d73578794ad1f6" - integrity sha512-nQ+erop7oiUvkYgUplGjDOs5LPBarnNNC4OW1IWqwo1avWFOhzATDlEOXbiE2SSDu5opC5HePX7cKIajBoQu9Q== + version "4.1.3" + resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.1.3.tgz#a722ecbe54ef237fa9080447a7c708c4c72d846a" + integrity sha512-o1AoXUTNH40cxWus0QOeWQ8x9tSIEmrLBrOgAOHDnvWJ1qyjT8PjgHjPbUVjMbja18coyuaAAeUdyLKvLGmlDA== dependencies: - "@babel/runtime-corejs3" "^7.16.8" + "@babel/runtime-corejs3" "^7.16.3" "@braintree/sanitize-url" "^5.0.2" base64-js "^1.5.1" classnames "^2.3.1" @@ -23997,6 +25243,7 @@ swagger-ui-react@^4.1.3: js-file-download "^0.4.12" js-yaml "=4.1.0" lodash "^4.17.21" + memoizee "^0.4.15" prop-types "^15.7.2" randombytes "^2.1.0" react-copy-to-clipboard "5.0.4" @@ -24009,11 +25256,11 @@ swagger-ui-react@^4.1.3: redux "^4.1.2" redux-immutable "^4.0.0" remarkable "^2.0.1" - reselect "^4.1.5" + reselect "^4.0.0" serialize-error "^8.1.0" sha.js "^2.4.11" - swagger-client "^3.18.4" - url-parse "^1.5.6" + swagger-client "^3.17.0" + url-parse "^1.5.3" xml "=1.0.1" xml-but-prettier "^1.0.1" zenscroll "^4.0.2" @@ -24026,11 +25273,11 @@ swap-case@^2.0.2: tslib "^2.0.3" swr@^1.1.2: - version "1.2.2" - resolved "https://registry.npmjs.org/swr/-/swr-1.2.2.tgz#6cae09928d30593a7980d80f85823e57468fac5d" - integrity sha512-ky0BskS/V47GpW8d6RU7CPsr6J8cr7mQD6+do5eky3bM0IyJaoi3vO8UhvrzJaObuTlGhPl2szodeB2dUd76Xw== + version "1.2.1" + resolved "https://registry.npmjs.org/swr/-/swr-1.2.1.tgz#c21a4fe2139cb1c4630450589b5b5add947a9d41" + integrity sha512-1cuWXqJqXcFwbgONGCY4PHZ8v05009JdHsC3CIC6u7d00kgbMswNr1sHnnhseOBxtzVqcCNpOHEgVDciRer45w== -symbol-observable@^1.0.4, symbol-observable@^1.1.0: +symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -24110,7 +25357,7 @@ tar@^4.4.12: safe-buffer "^5.2.1" yallist "^3.1.1" -tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: version "6.1.11" resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -24159,11 +25406,11 @@ tdigest@^0.1.1: react-use "^17.2.4" teeny-request@^7.0.0: - version "7.1.3" - resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.3.tgz#5a3d90c559a6c664a993477b138e331a518765ba" - integrity sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg== + version "7.0.1" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c" + integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw== dependencies: - http-proxy-agent "^5.0.0" + http-proxy-agent "^4.0.0" https-proxy-agent "^5.0.0" node-fetch "^2.6.1" stream-events "^1.0.5" @@ -24193,9 +25440,9 @@ temp@^0.8.4: rimraf "~2.6.2" term-size@^2.1.0: - version "2.2.1" - resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + version "2.2.0" + resolved "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== terminal-link@^2.0.0: version "2.1.1" @@ -24206,17 +25453,17 @@ terminal-link@^2.0.0: supports-hyperlinks "^2.0.0" terser-webpack-plugin@*, terser-webpack-plugin@^5.1.3: - version "5.3.1" - resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" - integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + version "5.3.0" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" + integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== dependencies: - jest-worker "^27.4.5" + jest-worker "^27.4.1" schema-utils "^3.1.1" serialize-javascript "^6.0.0" source-map "^0.6.1" terser "^5.7.2" -terser@^5.10.0, terser@^5.7.2: +terser@^5.10.0: version "5.10.0" resolved "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== @@ -24225,6 +25472,15 @@ terser@^5.10.0, terser@^5.7.2: source-map "~0.7.2" source-map-support "~0.5.20" +terser@^5.7.2: + version "5.9.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" + integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -24333,12 +25589,20 @@ tildify@2.0.0: integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + version "2.0.11" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== dependencies: setimmediate "^1.0.4" +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + timm@^1.6.1: version "1.7.1" resolved "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" @@ -24350,9 +25614,9 @@ timsort@^0.3.0, timsort@~0.3.0: integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= tiny-invariant@^1.0.6: - version "1.2.0" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== + version "1.1.0" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== tiny-merge-patch@^0.1.2: version "0.1.2" @@ -24377,9 +25641,9 @@ title-case@^3.0.3: tslib "^2.0.3" tmp-promise@^3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" - integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + version "3.0.2" + resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" + integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== dependencies: tmp "^0.2.0" @@ -24397,7 +25661,7 @@ tmp@^0.2.0, tmp@~0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.5: +tmpl@1.0.x: version "1.0.5" resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -24489,6 +25753,23 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -24498,12 +25779,11 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== dependencies: - psl "^1.1.28" punycode "^2.1.1" tr46@^2.1.0: @@ -24543,6 +25823,11 @@ trim-newlines@^3.0.0: resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +trim-off-newlines@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.3.tgz#8df24847fcb821b0ab27d58ab6efec9f2fe961a1" + integrity sha512-kh6Tu6GbeSNMGfrrZh6Bb/4ZEHV1QlB4xNDBeog8Y9/QwFlKTRyWvY3Fs9tRDAMZliVUwieMgEdIeL/FtqjkJg== + triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" @@ -24571,14 +25856,14 @@ ts-easing@^0.2.0: integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + version "0.1.10" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.10.tgz#b68a49e37e90a05797e590f08494dd528bf383cf" + integrity sha512-UJYuKET7ez7ry0CnvfY6fPIUIZDw+UI3qvTUQeS2MyI4TgEeWAUBqy185LeaHcdJ9zG2dgFpPJU/AecXU0Afug== ts-log@^2.2.3: - version "2.2.4" - resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.4.tgz#d672cf904b33735eaba67a7395c93d45fba475b3" - integrity sha512-DEQrfv6l7IvN2jlzc/VTdZJYsWUnQNCsueYjMkC/iXoEoi5fNan6MjeDqkvhfzbmHgdz9UxDUluX3V5HdjTydQ== + version "2.2.3" + resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.3.tgz#4da5640fe25a9fb52642cd32391c886721318efb" + integrity sha512-XvB+OdKSJ708Dmf9ore4Uf/q62AYDTzFcAdxc8KNML1mmAWywRFVt/dn1KYJH8Agt5UJNujfM3znU5PxgAzA2w== ts-node@^10.0.0, ts-node@^10.2.1, ts-node@^10.4.0: version "10.7.0" @@ -24706,6 +25991,11 @@ type-detect@4.0.8, type-detect@^4.0.8: resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" @@ -24721,11 +26011,6 @@ type-fest@^0.20.2: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - type-fest@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" @@ -24754,10 +26039,20 @@ 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.npmjs.org/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + typed-rest-client@^1.8.4: - version "1.8.6" - resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz#d8facd6abd98cbd8ad14cccf056ca5cc306919d7" - integrity sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA== + version "1.8.4" + resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz#ba3fb788e5b9322547406392533f12d660a5ced6" + integrity sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg== dependencies: qs "^6.9.1" tunnel "0.0.6" @@ -24811,10 +26106,10 @@ typescript@~4.5.0, typescript@~4.5.2, typescript@~4.5.4: resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== -ua-parser-js@^0.7.30: - version "0.7.31" - resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" - integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== +ua-parser-js@^0.7.18: + version "0.7.28" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" + integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -24822,9 +26117,9 @@ uc.micro@^1.0.1, uc.micro@^1.0.5: integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== uglify-js@^3.1.4: - version "3.15.1" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz#9403dc6fa5695a6172a91bc983ea39f0f7c9086d" - integrity sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ== + version "3.14.3" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz#c0f25dfea1e8e5323eccf59610be08b6043c15cf" + integrity sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g== uid-number@0.0.6: version "0.0.6" @@ -24838,21 +26133,26 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" -uid2@0.0.3: +uid2@0.0.3, uid2@0.0.x: version "0.0.3" resolved "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz#483126e11774df2f71b8b639dcd799c376162b82" integrity sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I= -uid2@0.0.x: - version "0.0.4" - resolved "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44" - integrity sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA== - umask@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= +unbox-primitive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" + integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.0" + has-symbols "^1.0.0" + which-boxed-primitive "^1.0.1" + unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -24882,37 +26182,37 @@ undefsafe@^2.0.5: integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== underscore@^1.12.1, underscore@^1.9.1: - version "1.13.2" - resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz#276cea1e8b9722a8dbed0100a407dda572125881" - integrity sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g== + version "1.13.1" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" + integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== undici@^4.9.3: - version "4.14.1" - resolved "https://registry.npmjs.org/undici/-/undici-4.14.1.tgz#7633b143a8a10d6d63335e00511d071e8d52a1d9" - integrity sha512-WJ+g+XqiZcATcBaUeluCajqy4pEDcQfK1vy+Fo+bC4/mqXI9IIQD/XWHLS70fkGUT6P52Drm7IFslO651OdLPQ== + version "4.11.0" + resolved "https://registry.npmjs.org/undici/-/undici-4.11.0.tgz#41fb4f944704d77e1c9fb472d40d2dbece64ccf2" + integrity sha512-gofXRqAdm81rzaZgPbMf98qvrNGd3ptJ26+mCcF3EXoC817p//MtL8XcDpTvHUXxdW27rAM2jvTae+KyAchorw== -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== unidiff@1.0.2: version "1.0.2" @@ -24922,9 +26222,9 @@ unidiff@1.0.2: diff "^2.2.2" unified@^10.0.0: - version "10.1.1" - resolved "https://registry.npmjs.org/unified/-/unified-10.1.1.tgz#345e349e3ab353ab612878338eb9d57b4dea1d46" - integrity sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w== + version "10.1.0" + resolved "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz#4e65eb38fc2448b1c5ee573a472340f52b9346fe" + integrity sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g== dependencies: "@types/unist" "^2.0.0" bail "^2.0.0" @@ -24944,6 +26244,11 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -25036,6 +26341,13 @@ universal-github-app-jwt@^1.0.1: "@types/jsonwebtoken" "^8.3.3" jsonwebtoken "^8.5.1" +universal-user-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" + integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== + dependencies: + os-name "^3.1.0" + universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" @@ -25046,6 +26358,11 @@ universalify@^0.1.0, universalify@^0.1.2: resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -25145,9 +26462,9 @@ upper-case@^2.0.2: tslib "^2.0.3" uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + version "4.2.2" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" @@ -25163,18 +26480,18 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.5.6: - version "1.5.9" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.9.tgz#05ff26484a0b5e4040ac64dcee4177223d74675e" - integrity sha512-HpOvhKBvre8wYez+QhHcYiVvVmeF6DVnuSOOPhe3cTum3BnqHhvKaZm8FU5yTiOu/Jut2ZpB2rA/SbBA1JIGlQ== +url-parse@^1.5.3: + version "1.5.7" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" + integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" url-value-parser@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.1.0.tgz#fe1ae776122b2eea4bbf284896bbdcd7fc75e1fa" - integrity sha512-gIYPWXujdUdwd/9TGCHTf5Vvgw6lOxjE5Q/k+7WNByYyS0vW5WX0k+xuVlhvPq6gRNhzXVv/ezC+OfeAet5Kcw== + version "2.0.3" + resolved "https://registry.npmjs.org/url-value-parser/-/url-value-parser-2.0.3.tgz#cd4b8d6754e458d65e8125260c09718d926e6e21" + integrity sha512-FjIX+Q9lYmDM9uYIGdMYfQW0uLbWVwN2NrL2ayAI7BTOvEwzH+VoDdNquwB9h4dFAx+u6mb0ONLa3sHD5DvyvA== url@0.10.3: version "0.10.3" @@ -25198,9 +26515,9 @@ use-immer@^0.6.0: integrity sha512-dFGRfvWCqPDTOt/S431ETYTg6+uxbpb7A1pptufwXVzGJY3RlXr38+3wyLNpc6SbbmAKjWl6+EP6uW74fkEsXQ== use-memo-one@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz#0c8203a329f76e040047a35a1197defe342fab20" - integrity sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ== + version "1.1.1" + resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" + integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== use-resize-observer@^7.0.0: version "7.1.0" @@ -25315,14 +26632,14 @@ v8-compile-cache-lib@^3.0.0: integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + version "2.1.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" - integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== + version "7.0.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" + integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -25399,13 +26716,13 @@ vary@^1, vary@~1.1.2: integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vasync@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz#d881379ff3685e4affa8e775cf0fd369262a201b" - integrity sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ== + version "2.2.0" + resolved "https://registry.npmjs.org/vasync/-/vasync-2.2.0.tgz#cfde751860a15822db3b132bc59b116a4adaf01b" + integrity sha1-z951GGChWCLbOxMrxZsRakra8Bs= dependencies: verror "1.10.0" -verror@1.10.0: +verror@1.10.0, verror@^1.8.1: version "1.10.0" resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= @@ -25414,27 +26731,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -verror@^1.8.1: - version "1.10.1" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" - integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - vfile-message@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.0.tgz#5437035aa43185ff4b9210d32fada6c640e59143" - integrity sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g== + version "3.0.2" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz#db7eaebe7fecb853010f2ef1664427f52baf8f74" + integrity sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww== dependencies: "@types/unist" "^2.0.0" unist-util-stringify-position "^3.0.0" vfile@^5.0.0: - version "5.3.0" - resolved "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz#4990c78cb3157005590ee8c930b71cd7fa6a006e" - integrity sha512-Tj44nY/48OQvarrE4FAjUfrv7GZOYzPbl5OD65HxVKwLJKMPU7zmfV8cCgCnzKWnSfYG2f3pxu+ALqs7j22xQQ== + version "5.1.0" + resolved "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz#18e78016f0f71e98d737d40f0fca921dc264a600" + integrity sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" @@ -25470,17 +26778,23 @@ vm-browserify@^1.0.1: integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== vm2@^3.9.6: +<<<<<<< HEAD version "3.9.9" resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5" integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw== +======= + version "3.9.7" + resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.7.tgz#bb87aa677c97c61e23a6cb6547e44e990517a6f6" + integrity sha512-g/GZ7V0Mlmch3eDVOATvAXr1GsJNg6kQ5PjvYy3HbJMCRn5slNbo/u73Uy7r5yUej1cRa3ZjtoVwcWSQuQ/fow== +>>>>>>> 76d216e74b (fixups) dependencies: acorn "^8.7.0" acorn-walk "^8.2.0" vscode-languageserver-types@^3.15.1: - version "3.16.0" - resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" - integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== + version "3.15.1" + resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" + integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== w3c-hr-time@^1.0.2: version "1.0.2" @@ -25523,11 +26837,11 @@ walk-up-path@^1.0.0: integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== walker@^1.0.7, walker@~1.0.5: - version "1.0.8" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + version "1.0.7" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: - makeerror "1.0.12" + makeerror "1.0.x" watchpack@^2.3.1: version "2.3.1" @@ -25556,11 +26870,6 @@ web-streams-polyfill@4.0.0-beta.1: resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz#3b19b9817374b7cee06d374ba7eeb3aeb80e8c95" integrity sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ== -web-streams-polyfill@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965" - integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA== - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -25576,31 +26885,30 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" - integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== +webpack-dev-middleware@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c" + integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg== dependencies: colorette "^2.0.10" - memfs "^3.4.1" + memfs "^3.2.2" mime-types "^2.1.31" range-parser "^1.2.1" schema-utils "^4.0.0" webpack-dev-server@^4.7.3: - version "4.7.4" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" - integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== + version "4.7.3" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz#4e995b141ff51fa499906eebc7906f6925d0beaa" + integrity sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" "@types/sockjs" "^0.3.33" "@types/ws" "^8.2.2" ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^3.5.3" + chokidar "^3.5.2" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" @@ -25620,8 +26928,8 @@ webpack-dev-server@^4.7.3: sockjs "^0.3.21" spdy "^4.0.2" strip-ansi "^7.0.0" - webpack-dev-middleware "^5.3.1" - ws "^8.4.2" + webpack-dev-middleware "^5.3.0" + ws "^8.1.0" webpack-node-externals@^3.0.0: version "3.0.0" @@ -25671,7 +26979,16 @@ webpack@^5, webpack@^5.66.0: watchpack "^2.3.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -25692,11 +27009,16 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.0.0, whatwg-fetch@^3.4.1: +whatwg-fetch@^3.0.0: version "3.6.2" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== +whatwg-fetch@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" + integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== + whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -25710,7 +27032,16 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: +whatwg-url@^8.0.0, whatwg-url@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -25719,7 +27050,7 @@ whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: tr46 "^2.1.0" webidl-conversions "^6.1.0" -which-boxed-primitive@^1.0.2: +which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -25749,16 +27080,17 @@ which-pm@2.0.0: path-exists "^4.0.0" which-typed-array@^1.1.2: - version "1.1.7" - resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" - integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== + version "1.1.4" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" foreach "^2.0.5" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.7" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" which@^1.2.9, which@^1.3.1: version "1.3.1" @@ -25793,7 +27125,14 @@ window-size@^0.2.0: resolved "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= -winston-transport@^4.5.0: +windows-release@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" + integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== + dependencies: + execa "^1.0.0" + +winston-transport@^4.4.2: version "4.5.0" resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== @@ -25803,20 +27142,20 @@ winston-transport@^4.5.0: triple-beam "^1.3.0" winston@^3.2.1: - version "3.6.0" - resolved "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6" - integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w== + version "3.5.1" + resolved "https://registry.npmjs.org/winston/-/winston-3.5.1.tgz#b25cc899d015836dbf8c583dec8c4c4483a0da2e" + integrity sha512-tbRtVy+vsSSCLcZq/8nXZaOie/S2tPXPFt4be/Q3vI/WtYwm7rrwidxVw2GRa38FIXcJ1kUM6MOZ9Jmnk3F3UA== dependencies: "@dabh/diagnostics" "^2.0.2" async "^3.2.3" is-stream "^2.0.0" - logform "^2.4.0" + logform "^2.3.2" one-time "^1.0.0" readable-stream "^3.4.0" safe-stable-stringify "^2.3.1" stack-trace "0.0.x" triple-beam "^1.3.0" - winston-transport "^4.5.0" + winston-transport "^4.4.2" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" @@ -25932,16 +27271,16 @@ ws@7.4.5: resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -ws@8.5.0, ws@^8.4.2: +ws@8.3.0, "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.2.3, ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: + version "7.5.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" + integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== + +ws@8.5.0, ws@^8.1.0: version "8.5.0" resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== -"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: - version "7.5.7" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== - ws@~7.4.2: version "7.4.6" resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" @@ -26105,7 +27444,7 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2, yaml@^1.9.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.4: +yargs-parser@20.2.4, yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.4" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== @@ -26118,11 +27457,6 @@ yargs-parser@^18.1.2, yargs-parser@^18.1.3: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.0.0: version "21.0.0" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" @@ -26153,7 +27487,7 @@ yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.2.0: +yargs@^16.1.1, yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== From fc67e62ac2a374df43ab072b661525ddd2361593 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Thu, 3 Mar 2022 09:57:03 +0100 Subject: [PATCH 343/410] add @backstage/reviewers as codeowners too Signed-off-by: Emma Indal --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 62c4750911..a62a4c1e78 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -44,7 +44,7 @@ /plugins/scaffolder-backend-module-yeoman @backstage/reviewers @pawelmitka /plugins/search @backstage/reviewers @backstage/techdocs-core /plugins/search-* @backstage/reviewers @backstage/techdocs-core -/plugins/stack-overflow @backstage/techdocs-core +/plugins/stack-overflow @backstage/reviewers @backstage/techdocs-core /plugins/sonarqube @backstage/reviewers @backstage/sda-se-reviewers /plugins/techdocs @backstage/reviewers @backstage/techdocs-core /plugins/techdocs-* @backstage/reviewers @backstage/techdocs-core From f80f3a7bc9b665339cffb19dba4313c19288c1a2 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 4 Mar 2022 12:07:14 +0100 Subject: [PATCH 344/410] create stack-overflow backend plugin and move collator there Signed-off-by: Emma Indal --- plugins/stack-overflow-backend/.eslintrc.js | 3 + plugins/stack-overflow-backend/README.md | 43 +++++++++ plugins/stack-overflow-backend/package.json | 45 ++++++++++ .../src}/index.ts | 2 +- .../StackOverflowQuestionsCollatorFactory.ts | 90 +++++++++++++++++++ .../src/search/index.ts | 17 ++++ plugins/stack-overflow/README.md | 23 +---- plugins/stack-overflow/src/index.ts | 2 +- .../StackOverflowQuestionsCollator.tsx | 72 --------------- 9 files changed, 201 insertions(+), 96 deletions(-) create mode 100644 plugins/stack-overflow-backend/.eslintrc.js create mode 100644 plugins/stack-overflow-backend/README.md create mode 100644 plugins/stack-overflow-backend/package.json rename plugins/{stack-overflow/src/search/StackOverflowQuestionsCollator => stack-overflow-backend/src}/index.ts (87%) create mode 100644 plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts create mode 100644 plugins/stack-overflow-backend/src/search/index.ts delete mode 100644 plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/StackOverflowQuestionsCollator.tsx diff --git a/plugins/stack-overflow-backend/.eslintrc.js b/plugins/stack-overflow-backend/.eslintrc.js new file mode 100644 index 0000000000..16a033dbc6 --- /dev/null +++ b/plugins/stack-overflow-backend/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint.backend')], +}; diff --git a/plugins/stack-overflow-backend/README.md b/plugins/stack-overflow-backend/README.md new file mode 100644 index 0000000000..bc4ecb7041 --- /dev/null +++ b/plugins/stack-overflow-backend/README.md @@ -0,0 +1,43 @@ +# Stack Overflow + +A plugin that provides stack overflow specific functionality that can be used in different ways (e.g. for search) to compose your Backstage App. + +## Getting started + +Before we begin, make sure: + +- You have created your own standalone Backstage app using @backstage/create-app and not using a fork of the backstage repository. If you haven't setup Backstage already, start [here](https://backstage.io/docs/getting-started/). + +To use any of the functionality this plugin provides, you need to start by configuring your App with the following config: + +```yaml +stackoverflow: + baseUrl: https://api.stackexchange.com/2.2 # alternative: your internal stack overflow instance +``` + +## Areas of Responsibility + +This stack overflow backend plugin is primarily responsible for the following: + +- Provides a `StackOverflowQuestionsCollatorFactory`, which can be used in the search backend to index stack overflow questions to your Backstage Search. + +### Index Stack Overflow Questions to search + +Before you are able to start index stack overflow questions to search, you need to go through the [search getting started guide](https://backstage.io/docs/features/search/getting-started). + +When you have your `packages/backend/src/plugins/search.ts` file ready to make modifications, add the following code snippet to add the `StackOverflowQuestionsCollatorFactory`. Note that you can modify the `requestParams`. + +> Note: if your baseUrl is set to the external stack overflow api `https://api.stackexchange.com/2.2`, you can find optional and required params under the official API documentation under [`Usage of /questions GET`](https://api.stackexchange.com/docs/questions) + +```ts +indexBuilder.addCollator({ + defaultRefreshIntervalSeconds: 600, + factory: StackOverflowQuestionsCollatorFactory.fromConfig(config, { + requestParams: { + tagged: ['backstage'], + site: 'stackoverflow', + pagesize: 100, + }, + }), +}); +``` diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json new file mode 100644 index 0000000000..3f8727fca6 --- /dev/null +++ b/plugins/stack-overflow-backend/package.json @@ -0,0 +1,45 @@ +{ + "name": "@backstage/plugin-stack-overflow-backend", + "version": "0.0.0", + "main": "src/index.ts", + "types": "src/index.ts", + "license": "Apache-2.0", + "private": false, + "publishConfig": { + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" + }, + "backstage": { + "role": "backend-plugin" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/stack-overflow-backend" + }, + "keywords": [ + "backstage", + "stack-overflow" + ], + "scripts": { + "start": "backstage-cli package start", + "build": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" + }, + "dependencies": { + "@backstage/search-common": "^0.2.4", + "@backstage/config": "^0.1.15", + "qs": "^6.10.3", + "cross-fetch": "^3.1.5", + "winston": "^3.6.0" + }, + "files": [ + "dist" + ] +} diff --git a/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/index.ts b/plugins/stack-overflow-backend/src/index.ts similarity index 87% rename from plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/index.ts rename to plugins/stack-overflow-backend/src/index.ts index d5fecd0dce..9b7e7881fd 100644 --- a/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/index.ts +++ b/plugins/stack-overflow-backend/src/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { StackOverflowQuestionsCollator } from './StackOverflowQuestionsCollator'; +export { StackOverflowQuestionsCollatorFactory } from './search'; diff --git a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts new file mode 100644 index 0000000000..85b0deee24 --- /dev/null +++ b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts @@ -0,0 +1,90 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + IndexableDocument, + DocumentCollatorFactory, +} from '@backstage/search-common'; +import { Config } from '@backstage/config'; +import { Readable } from 'stream'; +import fetch from 'cross-fetch'; +import qs from 'qs'; +import { Logger } from 'winston'; + +interface StackOverflowDocument extends IndexableDocument { + answers: number; + tags: string[]; +} + +type StackOverflowQuestionsRequestParams = { + [key: string]: string | string[] | number; +}; + +type StackOverflowQuestionsCollatorFactoryOptions = { + baseUrl?: string; + requestParams: StackOverflowQuestionsRequestParams; + logger: Logger; +}; + +export class StackOverflowQuestionsCollatorFactory + implements DocumentCollatorFactory +{ + protected requestParams: StackOverflowQuestionsRequestParams; + private readonly baseUrl: string | undefined; + private readonly logger: Logger; + public readonly type: string = 'stack-overflow'; + + private constructor(options: StackOverflowQuestionsCollatorFactoryOptions) { + this.baseUrl = options.baseUrl; + this.requestParams = options.requestParams; + this.logger = options.logger; + } + + static fromConfig( + config: Config, + options: StackOverflowQuestionsCollatorFactoryOptions, + ) { + const baseUrl = config.getString('stackoverflow.baseUrl'); + return new StackOverflowQuestionsCollatorFactory({ ...options, baseUrl }); + } + + async getCollator() { + return Readable.from(this.execute()); + } + + async *execute(): AsyncGenerator { + if (!this.baseUrl) { + this.logger.debug( + `No stackoverflow.baseUrl configured in your app-config.yaml`, + ); + } + const params = this.requestParams + ? `?${qs.stringify(this.requestParams, { arrayFormat: 'comma' })}` + : ''; + const res = await fetch(`${this.baseUrl}/questions${params}`); + const data = await res.json(); + + for (const question of data.items) { + yield { + title: question.title, + location: question.link, + text: question.owner.display_name, + tags: question.tags, + answers: question.answer_count, + }; + } + } +} diff --git a/plugins/stack-overflow-backend/src/search/index.ts b/plugins/stack-overflow-backend/src/search/index.ts new file mode 100644 index 0000000000..875a945b44 --- /dev/null +++ b/plugins/stack-overflow-backend/src/search/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { StackOverflowQuestionsCollatorFactory } from './StackOverflowQuestionsCollatorFactory'; diff --git a/plugins/stack-overflow/README.md b/plugins/stack-overflow/README.md index 0a4fbea101..9925605a83 100644 --- a/plugins/stack-overflow/README.md +++ b/plugins/stack-overflow/README.md @@ -17,30 +17,9 @@ stackoverflow: ## Areas of Responsibility -This search plugin is primarily responsible for the following: +This stack overflow frontend plugin is primarily responsible for the following: - Exposing various stack-overflow related components like `` which can be used for composing the search page, and `` which can be used for composing the homepage. -- Provides a `StackOverflowQuestionsCollator`, which can be used in the search backend to index stack overflow questions to your Backstage Search. - -### Index Stack Overflow Questions to search - -Before you are able to start index stack overflow questions to search, you need to go through the [search getting started guide](https://backstage.io/docs/features/search/getting-started). - -When you have your `packages/backend/src/plugins/search.ts` file ready to make modifications, add the following code snippet to add the `StackOverflowQuestionsCollator`. Note that you can modify the `requestParams`. - -```ts -indexBuilder.addCollator({ - defaultRefreshIntervalSeconds: 60, - collator: new StackOverflowQuestionsCollator({ - config, - requestParams: { - tagged: ['backstage'], - site: 'stackoverflow', - pagesize: 100, - }, - }), -}); -``` #### Use specific search result list item for Stack Overflow Question diff --git a/plugins/stack-overflow/src/index.ts b/plugins/stack-overflow/src/index.ts index 9e71988100..fd88491fc6 100644 --- a/plugins/stack-overflow/src/index.ts +++ b/plugins/stack-overflow/src/index.ts @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + export { stackOverflowPlugin, StackOverflowSearchResultListItem, HomePageStackOverflowQuestions, } from './plugin'; -export { StackOverflowQuestionsCollator } from './search/StackOverflowQuestionsCollator'; diff --git a/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/StackOverflowQuestionsCollator.tsx b/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/StackOverflowQuestionsCollator.tsx deleted file mode 100644 index a44b2f4742..0000000000 --- a/plugins/stack-overflow/src/search/StackOverflowQuestionsCollator/StackOverflowQuestionsCollator.tsx +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { IndexableDocument, DocumentCollator } from '@backstage/search-common'; -import { Config } from '@backstage/config'; -import fetch from 'cross-fetch'; -import qs from 'qs'; -import { - StackOverflowQuestion, - StackOverflowQuestionsRequestParams, -} from '../../types'; - -interface StackOverflowDocument extends IndexableDocument { - answers: number; - tags: string[]; -} - -export class StackOverflowQuestionsCollator implements DocumentCollator { - protected baseUrl: string; - protected requestParams: StackOverflowQuestionsRequestParams; - public readonly type: string = 'stack-overflow'; - - constructor({ - config, - requestParams, - }: { - config: Config; - requestParams: StackOverflowQuestionsRequestParams; - }) { - this.baseUrl = config.getString('stackoverflow.baseUrl'); - this.requestParams = requestParams; - } - - async execute() { - const params = this.requestParams - ? `?${qs.stringify(this.requestParams)}` - : ''; - const res = await fetch(`${this.baseUrl}/questions${params}`); - - const data = await res.json(); - return data.items.map( - ({ - title, - link, - owner: { display_name }, - tags, - answer_count, - }: StackOverflowQuestion): StackOverflowDocument => { - return { - title: title, - location: link, - text: display_name, - tags: tags, - answers: answer_count, - }; - }, - ); - } -} From 90965cb56abc9cb91d43108690e55f87c7bf8f80 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 4 Mar 2022 12:08:10 +0100 Subject: [PATCH 345/410] fixups Signed-off-by: Emma Indal --- .../stack-overflow/src/home/StackOverflowQuestions/Content.tsx | 2 +- .../StackOverflowSearchResultListItem.stories.tsx | 1 - .../StackOverflowSearchResultListItem.tsx | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx b/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx index a0832fc1f1..cf74de05f9 100644 --- a/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx +++ b/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx @@ -24,7 +24,7 @@ import { ListItemSecondaryAction, } from '@material-ui/core'; import OpenInNewIcon from '@material-ui/icons/OpenInNew'; -import { useAsync } from 'react-use'; +import useAsync from 'react-use/lib/useAsync'; import qs from 'qs'; import React from 'react'; import { diff --git a/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.stories.tsx b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.stories.tsx index 171a6203ef..1239cabcbe 100644 --- a/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.stories.tsx +++ b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.stories.tsx @@ -17,7 +17,6 @@ import { StackOverflowSearchResultListItem } from '../../plugin'; import { wrapInTestApp } from '@backstage/test-utils'; import React, { ComponentType } from 'react'; -import OpenInNewIcon from '@material-ui/icons/OpenInNew'; export default { title: 'Plugins/Search/StackOverflowResultListItem', diff --git a/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.tsx b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.tsx index 52c16eeb77..c793939593 100644 --- a/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.tsx +++ b/plugins/stack-overflow/src/search/StackOverflowSearchResultListItem/StackOverflowSearchResultListItem.tsx @@ -37,7 +37,7 @@ export const StackOverflowSearchResultListItem = ( const { location, title, text, answers, tags } = props.result; return ( - + {props.icon && {props.icon}} From 45c8d92581a1881fba4828b969556cfc10637cde Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 4 Mar 2022 12:16:49 +0100 Subject: [PATCH 346/410] add backend to codeowners Signed-off-by: Emma Indal --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a62a4c1e78..cfe405b7d3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -45,6 +45,7 @@ /plugins/search @backstage/reviewers @backstage/techdocs-core /plugins/search-* @backstage/reviewers @backstage/techdocs-core /plugins/stack-overflow @backstage/reviewers @backstage/techdocs-core +/plugins/stack-overflow-backend @backstage/reviewers @backstage/techdocs-core /plugins/sonarqube @backstage/reviewers @backstage/sda-se-reviewers /plugins/techdocs @backstage/reviewers @backstage/techdocs-core /plugins/techdocs-* @backstage/reviewers @backstage/techdocs-core From ac323de4ad949590e970a63da93d4381acd088af Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 4 Mar 2022 12:55:52 +0100 Subject: [PATCH 347/410] add changesets Signed-off-by: Emma Indal --- .changeset/four-birds-peel.md | 5 +++++ .changeset/mean-rabbits-tell.md | 5 +++++ .changeset/witty-years-sniff.md | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 .changeset/four-birds-peel.md create mode 100644 .changeset/mean-rabbits-tell.md create mode 100644 .changeset/witty-years-sniff.md diff --git a/.changeset/four-birds-peel.md b/.changeset/four-birds-peel.md new file mode 100644 index 0000000000..2d742363fe --- /dev/null +++ b/.changeset/four-birds-peel.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +Adds new HomePageStackOverflowQuestions component which renders a list of stack overflow questions on your homepage. diff --git a/.changeset/mean-rabbits-tell.md b/.changeset/mean-rabbits-tell.md new file mode 100644 index 0000000000..88d853d9b3 --- /dev/null +++ b/.changeset/mean-rabbits-tell.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-stack-overflow-backend': minor +--- + +Add stack overflow backend plugin diff --git a/.changeset/witty-years-sniff.md b/.changeset/witty-years-sniff.md new file mode 100644 index 0000000000..f8d8acf5c1 --- /dev/null +++ b/.changeset/witty-years-sniff.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-stack-overflow': minor +--- + +Add stack overflow plugin From 7c13bcbc30487ac838dfdc41279bbb82ea0f9520 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 4 Mar 2022 12:58:51 +0100 Subject: [PATCH 348/410] make vale happy Signed-off-by: Emma Indal --- plugins/stack-overflow-backend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/stack-overflow-backend/README.md b/plugins/stack-overflow-backend/README.md index bc4ecb7041..e980f1f806 100644 --- a/plugins/stack-overflow-backend/README.md +++ b/plugins/stack-overflow-backend/README.md @@ -27,7 +27,7 @@ Before you are able to start index stack overflow questions to search, you need When you have your `packages/backend/src/plugins/search.ts` file ready to make modifications, add the following code snippet to add the `StackOverflowQuestionsCollatorFactory`. Note that you can modify the `requestParams`. -> Note: if your baseUrl is set to the external stack overflow api `https://api.stackexchange.com/2.2`, you can find optional and required params under the official API documentation under [`Usage of /questions GET`](https://api.stackexchange.com/docs/questions) +> Note: if your baseUrl is set to the external stack overflow api `https://api.stackexchange.com/2.2`, you can find optional and required parameters under the official API documentation under [`Usage of /questions GET`](https://api.stackexchange.com/docs/questions) ```ts indexBuilder.addCollator({ From 140cf15341015bb81467373bc49885f3f1e3b2e1 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 4 Mar 2022 14:29:58 +0100 Subject: [PATCH 349/410] add api reports Signed-off-by: Emma Indal --- plugins/stack-overflow-backend/api-report.md | 52 +++++++++++++++++++ plugins/stack-overflow-backend/src/index.ts | 8 ++- .../StackOverflowQuestionsCollatorFactory.ts | 26 ++++++++-- .../src/search/index.ts | 2 +- plugins/stack-overflow/api-report.md | 46 ++++++++++++++++ plugins/stack-overflow/src/index.ts | 11 +++- plugins/stack-overflow/src/plugin.ts | 7 ++- plugins/stack-overflow/src/types.ts | 15 ++++++ 8 files changed, 160 insertions(+), 7 deletions(-) create mode 100644 plugins/stack-overflow-backend/api-report.md create mode 100644 plugins/stack-overflow/api-report.md diff --git a/plugins/stack-overflow-backend/api-report.md b/plugins/stack-overflow-backend/api-report.md new file mode 100644 index 0000000000..e8743f1e30 --- /dev/null +++ b/plugins/stack-overflow-backend/api-report.md @@ -0,0 +1,52 @@ +## API Report File for "@backstage/plugin-stack-overflow-backend" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +/// + +import { Config } from '@backstage/config'; +import { DocumentCollatorFactory } from '@backstage/search-common'; +import { IndexableDocument } from '@backstage/search-common'; +import { Logger as Logger_2 } from 'winston'; +import { Readable } from 'stream'; + +// @public +export interface StackOverflowDocument extends IndexableDocument { + // (undocumented) + answers: number; + // (undocumented) + tags: string[]; +} + +// @public +export class StackOverflowQuestionsCollatorFactory + implements DocumentCollatorFactory +{ + // (undocumented) + execute(): AsyncGenerator; + // (undocumented) + static fromConfig( + config: Config, + options: StackOverflowQuestionsCollatorFactoryOptions, + ): StackOverflowQuestionsCollatorFactory; + // (undocumented) + getCollator(): Promise; + // (undocumented) + protected requestParams: StackOverflowQuestionsRequestParams; + // (undocumented) + readonly type: string; +} + +// @public +export type StackOverflowQuestionsCollatorFactoryOptions = { + baseUrl?: string; + requestParams: StackOverflowQuestionsRequestParams; + logger: Logger_2; +}; + +// @public +export type StackOverflowQuestionsRequestParams = { + [key: string]: string | string[] | number; +}; +``` diff --git a/plugins/stack-overflow-backend/src/index.ts b/plugins/stack-overflow-backend/src/index.ts index 9b7e7881fd..6e461b8183 100644 --- a/plugins/stack-overflow-backend/src/index.ts +++ b/plugins/stack-overflow-backend/src/index.ts @@ -14,4 +14,10 @@ * limitations under the License. */ -export { StackOverflowQuestionsCollatorFactory } from './search'; +/** + * Stack Overflow backend plugin + * + * @packageDocumentation + */ + +export * from './search'; diff --git a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts index 85b0deee24..89b63b09c5 100644 --- a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts +++ b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts @@ -24,21 +24,41 @@ import fetch from 'cross-fetch'; import qs from 'qs'; import { Logger } from 'winston'; -interface StackOverflowDocument extends IndexableDocument { +/** + * Extended IndexableDocument with stack overflow specific properties + * + * @public + */ +export interface StackOverflowDocument extends IndexableDocument { answers: number; tags: string[]; } -type StackOverflowQuestionsRequestParams = { +/** + * Type representing the request parameters accepted by the {@link StackOverflowQuestionsCollatorFactory} + * + * @public + */ +export type StackOverflowQuestionsRequestParams = { [key: string]: string | string[] | number; }; -type StackOverflowQuestionsCollatorFactoryOptions = { +/** + * Options for {@link StackOverflowQuestionsCollatorFactory} + * + * @public + */ +export type StackOverflowQuestionsCollatorFactoryOptions = { baseUrl?: string; requestParams: StackOverflowQuestionsRequestParams; logger: Logger; }; +/** + * Search collator responsible for collecting stack overflow questions to index. + * + * @public + */ export class StackOverflowQuestionsCollatorFactory implements DocumentCollatorFactory { diff --git a/plugins/stack-overflow-backend/src/search/index.ts b/plugins/stack-overflow-backend/src/search/index.ts index 875a945b44..ed3e05cb28 100644 --- a/plugins/stack-overflow-backend/src/search/index.ts +++ b/plugins/stack-overflow-backend/src/search/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { StackOverflowQuestionsCollatorFactory } from './StackOverflowQuestionsCollatorFactory'; +export * from './StackOverflowQuestionsCollatorFactory'; diff --git a/plugins/stack-overflow/api-report.md b/plugins/stack-overflow/api-report.md new file mode 100644 index 0000000000..d8e944a35d --- /dev/null +++ b/plugins/stack-overflow/api-report.md @@ -0,0 +1,46 @@ +## API Report File for "@backstage/plugin-stack-overflow" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts +/// + +import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { ComponentRenderer } from '@backstage/plugin-home/src/extensions'; +import { ReactNode } from 'react'; + +// @public +export const HomePageStackOverflowQuestions: ( + props: ComponentRenderer & { + title?: string | undefined; + } & StackOverflowQuestionsContentProps, +) => JSX.Element; + +// @public +export const stackOverflowPlugin: BackstagePlugin<{}, {}>; + +// @public +export type StackOverflowQuestion = { + title: string; + link: string; + owner: Record; + tags: string[]; + answer_count: number; +}; + +// @public +export type StackOverflowQuestionsContentProps = { + requestParams: StackOverflowQuestionsRequestParams; +}; + +// @public +export type StackOverflowQuestionsRequestParams = { + [key: string]: string | string[] | number; +}; + +// @public +export const StackOverflowSearchResultListItem: (props: { + result: any; + icon?: ReactNode; +}) => JSX.Element; +``` diff --git a/plugins/stack-overflow/src/index.ts b/plugins/stack-overflow/src/index.ts index fd88491fc6..264a0d5d7c 100644 --- a/plugins/stack-overflow/src/index.ts +++ b/plugins/stack-overflow/src/index.ts @@ -13,9 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +/** + * Stack Overflow frontend plugin + * + * @packageDocumentation + */ export { stackOverflowPlugin, StackOverflowSearchResultListItem, HomePageStackOverflowQuestions, } from './plugin'; +export type { + StackOverflowQuestion, + StackOverflowQuestionsContentProps, + StackOverflowQuestionsRequestParams, +} from './types'; diff --git a/plugins/stack-overflow/src/plugin.ts b/plugins/stack-overflow/src/plugin.ts index 90a82da719..dee48cdf8e 100644 --- a/plugins/stack-overflow/src/plugin.ts +++ b/plugins/stack-overflow/src/plugin.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { createPlugin, createComponentExtension, @@ -20,6 +21,11 @@ import { import { createCardExtension } from '@backstage/plugin-home'; import { StackOverflowQuestionsContentProps } from './types'; +/** + * The Backstage plugin that holds stack overflow specific components + * + * @public + */ export const stackOverflowPlugin = createPlugin({ id: 'stack-overflow', }); @@ -29,7 +35,6 @@ export const stackOverflowPlugin = createPlugin({ * * @public */ - export const StackOverflowSearchResultListItem = stackOverflowPlugin.provide( createComponentExtension({ name: 'StackOverflowResultListItem', diff --git a/plugins/stack-overflow/src/types.ts b/plugins/stack-overflow/src/types.ts index a23585ed3c..c3fa08cc4f 100644 --- a/plugins/stack-overflow/src/types.ts +++ b/plugins/stack-overflow/src/types.ts @@ -14,6 +14,11 @@ * limitations under the License. */ +/** + * Type representing a stack overflow question + * + * @public + */ export type StackOverflowQuestion = { title: string; link: string; @@ -22,10 +27,20 @@ export type StackOverflowQuestion = { answer_count: number; }; +/** + * Props for HomePageStackOverflowQuestions + * + * @public + */ export type StackOverflowQuestionsContentProps = { requestParams: StackOverflowQuestionsRequestParams; }; +/** + * Type representing the request parameters accepted by the HomePageStackOverflowQuestions component + * + * @public + */ export type StackOverflowQuestionsRequestParams = { [key: string]: string | string[] | number; }; From a27a0e61d42247b9d52e20278d891cc124e04b83 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 4 Mar 2022 15:19:07 +0100 Subject: [PATCH 350/410] export ComponentRenderer type from home plugin Signed-off-by: Emma Indal --- .changeset/four-birds-peel.md | 4 +++- plugins/home/api-report.md | 9 ++++++++- plugins/home/src/index.ts | 1 + plugins/stack-overflow/api-report.md | 2 +- plugins/stack-overflow/package.json | 7 ++++--- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.changeset/four-birds-peel.md b/.changeset/four-birds-peel.md index 2d742363fe..f315f7a326 100644 --- a/.changeset/four-birds-peel.md +++ b/.changeset/four-birds-peel.md @@ -2,4 +2,6 @@ '@backstage/plugin-home': patch --- -Adds new HomePageStackOverflowQuestions component which renders a list of stack overflow questions on your homepage. +- Adds new HomePageStackOverflowQuestions component which renders a list of stack overflow questions on your homepage. + +- Exports ComponentRenderer type. diff --git a/plugins/home/api-report.md b/plugins/home/api-report.md index 6fae50151c..8cb5ef3d1c 100644 --- a/plugins/home/api-report.md +++ b/plugins/home/api-report.md @@ -39,6 +39,13 @@ export const ComponentAccordion: ({ ContextProvider?: ((props: any) => JSX.Element) | undefined; }) => JSX.Element; +// Warning: (ae-missing-release-tag) "ComponentRenderer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export type ComponentRenderer = { + Renderer?: (props: RendererProps) => JSX.Element; +}; + // Warning: (ae-missing-release-tag) "ComponentTab" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -103,7 +110,6 @@ export const HomepageCompositionRoot: (props: { children?: ReactNode; }) => JSX.Element; -// Warning: (ae-forgotten-export) The symbol "ComponentRenderer" needs to be exported by the entry point index.d.ts // Warning: (ae-missing-release-tag) "HomePageRandomJoke" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) @@ -161,5 +167,6 @@ export const WelcomeTitle: () => JSX.Element; // Warnings were encountered during analysis: // +// src/extensions.d.ts:3:5 - (ae-forgotten-export) The symbol "RendererProps" needs to be exported by the entry point index.d.ts // src/extensions.d.ts:24:5 - (ae-forgotten-export) The symbol "ComponentParts" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/home/src/index.ts b/plugins/home/src/index.ts index 4871323677..d30b76a7fc 100644 --- a/plugins/home/src/index.ts +++ b/plugins/home/src/index.ts @@ -35,3 +35,4 @@ export { export { SettingsModal, HeaderWorldClock } from './components'; export type { ClockConfig } from './components'; export { createCardExtension } from './extensions'; +export type { ComponentRenderer } from './extensions'; diff --git a/plugins/stack-overflow/api-report.md b/plugins/stack-overflow/api-report.md index d8e944a35d..277b0272d1 100644 --- a/plugins/stack-overflow/api-report.md +++ b/plugins/stack-overflow/api-report.md @@ -6,7 +6,7 @@ /// import { BackstagePlugin } from '@backstage/core-plugin-api'; -import { ComponentRenderer } from '@backstage/plugin-home/src/extensions'; +import { ComponentRenderer } from '@backstage/plugin-home'; import { ReactNode } from 'react'; // @public diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 350f4aa0ca..0bc9c1c161 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -36,14 +36,15 @@ "@testing-library/jest-dom": "^5.10.1" }, "peerDependencies": { + "@types/react": "^16.13.1 || ^17.0.0", "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.13.2-next.0", + "@backstage/cli": "^0.15.0", + "@backstage/test-utils": "^0.3.0", + "@testing-library/react": "^11.2.5", "@backstage/core-app-api": "^0.5.2", "@backstage/dev-utils": "^0.2.21-next.0", - "@backstage/test-utils": "^0.2.4", - "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^13.1.8", "@types/jest": "*", "@types/node": "*", From 38724b2b9822d09861b22145f11d0815894281c0 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 7 Mar 2022 12:50:45 +0100 Subject: [PATCH 351/410] remove labs package Signed-off-by: Emma Indal --- plugins/stack-overflow/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 0bc9c1c161..39fc3d7d63 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -28,7 +28,6 @@ "@backstage/theme": "^0.2.14", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@material-ui/lab": "4.0.0-alpha.57", "qs": "^6.10.3", "cross-fetch": "^3.0.6", "lodash": "^4.17.21", From d4d7261067f622b1d5e61627366173b8f32fb6b1 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 14 Mar 2022 13:49:08 +0100 Subject: [PATCH 352/410] bump dependencies Signed-off-by: Emma Indal --- plugins/stack-overflow-backend/package.json | 2 +- plugins/stack-overflow/package.json | 2 +- yarn.lock | 1012 +++++++++++++++++-- 3 files changed, 940 insertions(+), 76 deletions(-) diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 3f8727fca6..e97eb0dcce 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -33,7 +33,7 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/search-common": "^0.2.4", + "@backstage/search-common": "^0.3.1", "@backstage/config": "^0.1.15", "qs": "^6.10.3", "cross-fetch": "^3.1.5", diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 39fc3d7d63..44e2d4197b 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -39,7 +39,7 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.15.0", + "@backstage/cli": "^0.15.2", "@backstage/test-utils": "^0.3.0", "@testing-library/react": "^11.2.5", "@backstage/core-app-api": "^0.5.2", diff --git a/yarn.lock b/yarn.lock index 7d354d74da..bd1b3cc1b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,13 +9,6 @@ dependencies: aws4 "^1.11.0" -"@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.0" - "@apidevtools/json-schema-ref-parser@^9.0.6": version "9.0.6" resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" @@ -104,10 +97,17 @@ openapi-sampler "^1.1.0" use-resize-observer "^7.0.0" +<<<<<<< HEAD "@asyncapi/specs@^2.11.0": version "2.12.0" resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.12.0.tgz#15534ca9e518b561d33edfdfdbb234f9b274f261" integrity sha512-X4Xkrl+9WXSk5EJhsueIxNx6ymHI5wpkw4ofetV+VRnPLNob/XO4trPSJClrL5hlknxbGADLvlrkI5d3XJ996g== +======= +"@asyncapi/specs@^2.13.0": + version "2.13.0" + resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.13.0.tgz#c0f46d00e8a67c1c9ea445eb3e8bca90f7dca795" + integrity sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og== +>>>>>>> e5aaf7bb66 (bump dependencies) "@azure/abort-controller@^1.0.0": version "1.0.2" @@ -321,6 +321,7 @@ version "7.16.8" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== +<<<<<<< HEAD "@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": version "7.16.12" @@ -347,27 +348,35 @@ version "7.17.5" resolved "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== +======= + +"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": + version "7.16.12" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" + integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: - "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.16.8" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.3" + "@babel/helpers" "^7.16.7" + "@babel/parser" "^7.16.12" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.16.10" + "@babel/types" "^7.16.8" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" + source-map "^0.5.0" "@babel/generator@^7.14.0", "@babel/generator@^7.16.0", "@babel/generator@^7.16.8": version "7.16.8" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== +<<<<<<< HEAD dependencies: "@babel/types" "^7.16.8" jsesc "^2.5.1" @@ -377,8 +386,10 @@ version "7.17.3" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.16.8" jsesc "^2.5.1" source-map "^0.5.0" @@ -584,6 +595,7 @@ version "7.16.7" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== +<<<<<<< HEAD dependencies: "@babel/template" "^7.16.7" "@babel/traverse" "^7.16.7" @@ -593,10 +605,12 @@ version "7.17.2" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" "@babel/highlight@^7.0.0", "@babel/highlight@^7.16.7": version "7.16.10" @@ -616,11 +630,14 @@ version "7.16.12" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== +<<<<<<< HEAD "@babel/parser@^7.17.3": version "7.17.3" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -1092,7 +1109,11 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +<<<<<<< HEAD "@babel/plugin-transform-react-constant-elements@^7.12.1", "@babel/plugin-transform-react-constant-elements@^7.14.5": +======= +"@babel/plugin-transform-react-constant-elements@^7.14.5": +>>>>>>> e5aaf7bb66 (bump dependencies) version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62" integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ== @@ -1346,6 +1367,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" +<<<<<<< HEAD <<<<<<< HEAD "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": ======= @@ -1358,6 +1380,9 @@ "@babel/runtime@^7.7.2": >>>>>>> 76d216e74b (fixups) +======= +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +>>>>>>> e5aaf7bb66 (bump dependencies) version "7.17.2" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== @@ -1399,6 +1424,7 @@ version "7.16.10" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== +<<<<<<< HEAD dependencies: "@babel/code-frame" "^7.16.7" "@babel/generator" "^7.16.8" @@ -1415,15 +1441,17 @@ version "7.17.3" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" + "@babel/generator" "^7.16.8" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.16.10" + "@babel/types" "^7.16.8" debug "^4.1.0" globals "^11.1.0" @@ -1439,6 +1467,7 @@ version "7.16.8" resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== +<<<<<<< HEAD dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1447,10 +1476,13 @@ version "7.17.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +<<<<<<< HEAD "@backstage/app-defaults@^0.2.1": version "0.2.1" resolved "https://registry.npmjs.org/@backstage/app-defaults/-/app-defaults-0.2.1.tgz#8a99245cef0bfd4cc1a864d80eee76eec2ed944e" @@ -1487,15 +1519,32 @@ version "0.13.0" resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.13.0.tgz#abeb91522ac7ef7907907ad5bc889803131db209" integrity sha512-Q+0C0LJ8niNQ4TXduUNTycZ2PLMbhKmfgWywunJLO34DZAoFnTWJEAdEYF536YyLciHhLO0dHRUaHY29Sdr+Xg== +======= +"@backstage/catalog-client@^0.7.0": + version "0.7.2" + resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-0.7.2.tgz#bcfdb2c210e878fbc5833f18e59feae1e7e48330" + integrity sha512-jeJfi4ekwIffi8ozSzvgdv94DZ2kKNwFVhAP0V+63GF6wIspvGuTIwU2uKYH0v9JXA08lwmAsOGnrrwgS6ragA== + dependencies: + "@backstage/catalog-model" "^0.11.0" + "@backstage/errors" "^0.2.2" + cross-fetch "^3.1.5" + +"@backstage/catalog-model@^0.10.0": + version "0.10.1" + resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.10.1.tgz#dcc3415eb4d4ee3d437355c477e85c7479626b3b" + integrity sha512-c004aQeO9cxtSZZc2iBcE6eoqurQLdj7YUm8mHWs8hEaPTA2UPVHawt+wlt89VywkI89X0wF7BuXV2LKVUfXvw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@backstage/config" "^0.1.15" "@backstage/errors" "^0.2.2" "@backstage/types" "^0.1.3" + "@types/json-schema" "^7.0.5" ajv "^7.0.3" json-schema "^0.4.0" lodash "^4.17.21" uuid "^8.0.0" +<<<<<<< HEAD "@backstage/catalog-model@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-1.0.0.tgz#0aa8694a3182aaf4232725842da751bf5f78bd68" @@ -1674,6 +1723,136 @@ "@backstage/errors" "^0.2.2" "@backstage/theme" "^0.2.15" "@material-table/core" "^3.1.0" +======= +"@backstage/catalog-model@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.11.0.tgz#f02f86fe74305b49fce300e9c221659f9092d1b7" + integrity sha512-DnmbzKZejvxBSQv1LjA3AZIxwmchir2A9L9MzWH9D+pVKIu4AEt2HItf6g+xhpgk+4GJppETsEgrLI+Iyr6QSA== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/errors" "^0.2.2" + "@backstage/types" "^0.1.3" + "@types/json-schema" "^7.0.5" + ajv "^7.0.3" + json-schema "^0.4.0" + lodash "^4.17.21" + uuid "^8.0.0" + +"@backstage/catalog-model@^0.9.7": + version "0.9.10" + resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.9.10.tgz#bd5662e1ad7bd7c9604f3f45d055c99b5b2bb87f" + integrity sha512-KhCjbZKhS5zZhHiGHmBMq6hDGDshMSZOPGXehtdhr6/oW7Ee5fDcOnhMqreCi1Ebm4RIWJhZcRrxO6X1TTi4TQ== + dependencies: + "@backstage/config" "^0.1.13" + "@backstage/errors" "^0.2.0" + "@backstage/types" "^0.1.1" + "@types/json-schema" "^7.0.5" + "@types/yup" "^0.29.13" + ajv "^7.0.3" + json-schema "^0.4.0" + lodash "^4.17.21" + uuid "^8.0.0" + yup "^0.32.9" + +"@backstage/core-components@^0.8.0", "@backstage/core-components@^0.8.9": + version "0.8.10" + resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.8.10.tgz#6f79c46cdf507fc3a0d764848a4a8aa73af7ce93" + integrity sha512-gGyCPPSdgvzYHWMKlxe/H4yFmEYDQuAtaoT7Y/3+pilcJSIQi9d3oV104BDLC94bdkyOWDsA1tT+PGZtd0p/8g== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/core-plugin-api" "^0.7.0" + "@backstage/errors" "^0.2.2" + "@backstage/theme" "^0.2.15" + "@material-table/core" "^3.1.0" + "@material-ui/core" "^4.12.2" + "@material-ui/icons" "^4.9.1" + "@material-ui/lab" "4.0.0-alpha.57" + "@react-hookz/web" "^12.3.0" + "@types/react-sparklines" "^1.7.0" + "@types/react-text-truncate" "^0.14.0" + ansi-regex "^6.0.1" + classnames "^2.2.6" + d3-selection "^3.0.0" + d3-shape "^3.0.0" + d3-zoom "^3.0.0" + dagre "^0.8.5" + history "^5.0.0" + immer "^9.0.1" + lodash "^4.17.21" + pluralize "^8.0.0" + prop-types "^15.7.2" + qs "^6.9.4" + rc-progress "3.2.4" + react-helmet "6.1.0" + react-hook-form "^7.12.2" + react-markdown "^8.0.0" + react-router "6.0.0-beta.0" + react-router-dom "6.0.0-beta.0" + react-sparklines "^1.7.0" + react-syntax-highlighter "^15.4.5" + react-text-truncate "^0.17.0" + react-use "^17.3.2" + react-virtualized-auto-sizer "^1.0.6" + react-window "^1.8.6" + remark-gfm "^3.0.1" + zen-observable "^0.8.15" + zod "^3.11.6" + +"@backstage/core-plugin-api@^0.6.0", "@backstage/core-plugin-api@^0.6.1": + version "0.6.1" + resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.6.1.tgz#a6fb8110f384ab9405990450956b2c81b88e90b2" + integrity sha512-DtHY0eG2OQ4QAHVb5y8yDUQXZW9Ot7Fsr4Rpe3BbiLpkXA5hZLXPMThOyz1Y79ZOEC5eiyhUlXL1g6P7ylOKMw== + dependencies: + "@backstage/config" "^0.1.14" + "@backstage/types" "^0.1.2" + "@backstage/version-bridge" "^0.1.2" + history "^5.0.0" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + +"@backstage/core-plugin-api@^0.7.0": + version "0.7.0" + resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.7.0.tgz#e53f3aa5bbf074a70fcaf264b04402637008659c" + integrity sha512-SVzrJjvEjWzJgIqfFUjQjqW0RGCzj6zgLULpSgP53GQat70I0wje6E4n0blNU+/q7hpt6PoIT0lgZtqFOJrfYQ== + dependencies: + "@backstage/config" "^0.1.15" + "@backstage/types" "^0.1.3" + "@backstage/version-bridge" "^0.1.2" + history "^5.0.0" + prop-types "^15.7.2" + react-router-dom "6.0.0-beta.0" + zen-observable "^0.8.15" + +"@backstage/integration@^0.7.3": + version "0.7.5" + resolved "https://registry.npmjs.org/@backstage/integration/-/integration-0.7.5.tgz#c68848f35db51705b3287b6fa6a259ae4b17bfbc" + integrity sha512-KUoNQLfPaRqQsdfx04IX4d3EIHbJU3tJxoUjVCCDIAThtep6clhY4uoxXIYTUz+bhERUGGJYhMR+1ryEEtwWhw== + dependencies: + "@backstage/config" "^0.1.15" + "@octokit/auth-app" "^3.4.0" + "@octokit/rest" "^18.5.3" + cross-fetch "^3.1.5" + git-url-parse "^11.6.0" + lodash "^4.17.21" + luxon "^2.0.2" + +"@backstage/plugin-catalog-react@^0.6.5": + version "0.6.15" + resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-0.6.15.tgz#04de88caa4ac2ce2ad000ee34d28b11eda3910b9" + integrity sha512-8JDM0upFD/WpB6Qs8oIQf99E2yaqbf835IEgt6aY7l4lEzUrtW4007VXPMdDqOwVwhVM4PbTIvyIRzkQpcr89A== + dependencies: + "@backstage/catalog-client" "^0.7.0" + "@backstage/catalog-model" "^0.10.0" + "@backstage/core-components" "^0.8.9" + "@backstage/core-plugin-api" "^0.6.1" + "@backstage/errors" "^0.2.1" + "@backstage/integration" "^0.7.3" + "@backstage/plugin-permission-common" "^0.5.0" + "@backstage/plugin-permission-react" "^0.3.1" + "@backstage/types" "^0.1.2" + "@backstage/version-bridge" "^0.1.2" +>>>>>>> e5aaf7bb66 (bump dependencies) "@material-ui/core" "^4.12.2" "@material-ui/icons" "^4.9.1" "@material-ui/lab" "4.0.0-alpha.57" @@ -1713,6 +1892,7 @@ resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.9.2.tgz#9a3d79a15039256bbc007e5daa08c983050e0238" integrity sha512-kh0FB0FmjC55W+xSEkKrAc7D6hvbYLY7N1UUd6M4VBghYXD61Y8RrJFKmBM3bAfPgYaryQNjYgA0BsoTo53PJA== dependencies: +<<<<<<< HEAD "@backstage/config" "^1.0.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/errors" "^1.0.0" @@ -2068,6 +2248,26 @@ version "5.0.4" resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-5.0.4.tgz#fefffecf73b59dbee7ae905b3c6a2e64c489f0cb" integrity sha512-czayDIrgC8qBnqwClvh9nxjCMem+XZG7xtfdYwq3dxpzA30qGppcI0i088VYug5RCFR+l1N+HUvkujSZuBK65w== +======= + "@babel/runtime" "^7.10.4" + "@changesets/config" "^1.7.0" + "@changesets/get-version-range-type" "^0.3.2" + "@changesets/git" "^1.3.1" + "@changesets/types" "^4.1.0" + "@manypkg/get-packages" "^1.1.3" + detect-indent "^6.0.0" + fs-extra "^7.0.1" + lodash.startcase "^4.4.0" + outdent "^0.5.0" + prettier "^1.19.1" + resolve-from "^5.0.0" + semver "^5.4.1" + +"@changesets/assemble-release-plan@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.1.0.tgz#0fcb18253998e3bc037a554874de43bcc58c4840" + integrity sha512-iYlqffCMhcwZ+6Cv8cimf10OBGYXQKufBI7J6htpRgCV2nT99RKXEjbYOtrXWKQqzu0XxOsk15apSEwjZN0JRw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/runtime" "^7.10.4" "@changesets/config" "^1.6.4" @@ -2096,6 +2296,7 @@ semver "^5.4.1" "@changesets/cli@^2.14.0": +<<<<<<< HEAD version "2.20.0" resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.20.0.tgz#f24dbd38bd4bc47bf083e59b6bb9cbf531465808" integrity sha512-IUYSgZKtS+wXPD5hxfnCfZ1JWCbBI0CRrhxpkgVKcXDwpxiRU8stCwuSuVj14kiYlThuH2zL0/ZuGvhF4r28Gg== @@ -2108,6 +2309,21 @@ "@changesets/get-dependents-graph" "^1.3.0" "@changesets/get-release-plan" "^3.0.5" "@changesets/git" "^1.3.0" +======= + version "2.21.0" + resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.21.0.tgz#b689f91ed908150efc06e0985e6b4cfbd9aea3a3" + integrity sha512-cJXRg28MmF9VbQrlwSjpY4AJA2xZUbXFCpQ3kFmX0IeppO7wknZ2QfocAhIqwM828t8d3R4Zpi5xnvJ/crIcQw== + dependencies: + "@babel/runtime" "^7.10.4" + "@changesets/apply-release-plan" "^5.0.5" + "@changesets/assemble-release-plan" "^5.1.0" + "@changesets/changelog-git" "^0.1.10" + "@changesets/config" "^1.7.0" + "@changesets/errors" "^0.1.4" + "@changesets/get-dependents-graph" "^1.3.1" + "@changesets/get-release-plan" "^3.0.6" + "@changesets/git" "^1.3.1" +>>>>>>> e5aaf7bb66 (bump dependencies) "@changesets/logger" "^0.0.5" "@changesets/pre" "^1.0.9" "@changesets/read" "^0.5.3" @@ -2162,6 +2378,7 @@ fs-extra "^7.0.1" semver "^5.4.1" +<<<<<<< HEAD "@changesets/get-release-plan@^3.0.5": version "3.0.5" resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.5.tgz#c05cff031bba737c8dd236afe97e77b007ee44a3" @@ -2173,6 +2390,19 @@ "@changesets/pre" "^1.0.9" "@changesets/read" "^0.5.3" "@changesets/types" "^4.0.2" +======= +"@changesets/get-release-plan@^3.0.6": + version "3.0.6" + resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.6.tgz#15aac108b9d0f139841562c9372d8cfd738503dc" + integrity sha512-HpPyr8y6xkihy3rONLZ6OtfgYq88NotidPAuS3nwMeZjLHiIVLyejR2+/5q717f6HKcrATxAjTwMAcjl7X/uzA== + dependencies: + "@babel/runtime" "^7.10.4" + "@changesets/assemble-release-plan" "^5.1.0" + "@changesets/config" "^1.7.0" + "@changesets/pre" "^1.0.10" + "@changesets/read" "^0.5.4" + "@changesets/types" "^4.1.0" +>>>>>>> e5aaf7bb66 (bump dependencies) "@manypkg/get-packages" "^1.1.3" "@changesets/get-version-range-type@^0.3.2": @@ -2372,6 +2602,7 @@ "@lezer/common" "^0.15.5" "@lezer/lr" "^0.15.0" +<<<<<<< HEAD <<<<<<< HEAD "@codemirror/legacy-modes@^0.19.0": version "0.19.1" @@ -2458,10 +2689,20 @@ dependencies: "@codemirror/state" "^0.19.0" +======= +"@codemirror/rangeset@^0.19.0": + version "0.19.2" + resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.2.tgz#d7a999e4273c00fecef4aba8535a426073cdcddf" + integrity sha512-5d+X8LtmeZtfFtKrSx57bIHRUpKv2HD0b74clp4fGA7qJLLfYehF6FGkJJxJb8lKsqAga1gdjjWr0jiypmIxoQ== + dependencies: + "@codemirror/state" "^0.19.0" + +>>>>>>> e5aaf7bb66 (bump dependencies) "@codemirror/state@^0.19.0", "@codemirror/state@^0.19.3": version "0.19.6" resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.6.tgz#d631f041d39ce41b7891b099fca26cb1fdb9763e" integrity sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw== +<<<<<<< HEAD >>>>>>> f9b03ab02f (fixups) dependencies: "@codemirror/text" "^0.19.0" @@ -2470,6 +2711,15 @@ version "0.19.7" resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.7.tgz#99a9696307b90677f6e3abe29ea6d77c1c0a8db5" integrity sha512-4ExcbKksmU4PIT8s11/dPESgMNLQqlMlbQzRQ1CyMcmygcuQk+58zQ84nv/X17OCUd2ephZ1DKEaHHACifzCiA== +======= + dependencies: + "@codemirror/text" "^0.19.0" + +"@codemirror/stream-parser@^0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.2.tgz#793428e55aa7b9daa64cb733973e5d5e3d9a2306" + integrity sha512-hBKRQlyu8GUOrY33xZ6/1kAfNZ8ZUm6cX9a7mPx8zAAqnpz/fpksC/qJRrkg1mPMBwxm+JG4fqAwDGJ3gLVniQ== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@codemirror/highlight" "^0.19.0" "@codemirror/language" "^0.19.0" @@ -2478,6 +2728,7 @@ "@lezer/common" "^0.15.0" "@lezer/lr" "^0.15.0" +<<<<<<< HEAD "@codemirror/stream-parser@^0.19.2": version "0.19.2" resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.2.tgz#793428e55aa7b9daa64cb733973e5d5e3d9a2306" @@ -2496,10 +2747,13 @@ resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz#9adcbd8137f69b75518eacd30ddb16fd67bbac45" integrity sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA== ======= +======= +>>>>>>> e5aaf7bb66 (bump dependencies) "@codemirror/text@^0.19.0": version "0.19.5" resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.5.tgz#75033af2476214e79eae22b81ada618815441c18" integrity sha512-Syu5Xc7tZzeUAM/y4fETkT0zgGr48rDG+w4U38bPwSIUr+L9S/7w2wDE1WGNzjaZPz12F6gb1gxWiSTg9ocLow== +<<<<<<< HEAD >>>>>>> f9b03ab02f (fixups) "@codemirror/theme-one-dark@^0.19.1": @@ -2518,11 +2772,14 @@ dependencies: "@codemirror/state" "^0.19.0" "@codemirror/view" "^0.19.0" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) "@codemirror/view@^0.19.0": version "0.19.27" resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.27.tgz#76e5dc19ecb4ce53e9fef1d29245040d7ff64183" integrity sha512-Uz/LecEf7CyvMWaQBlKtbJCYn0hRnEZ2yYvuZVy9YMhmvGmES6ec7FaKw7lDFFOMLwLbBThc9kfw4DCHreHN1w== +<<<<<<< HEAD dependencies: "@codemirror/rangeset" "^0.19.0" "@codemirror/state" "^0.19.3" @@ -2535,8 +2792,10 @@ version "0.19.47" resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.47.tgz#2163c3016d7680bf50dd695c0e3abdaf80f45363" integrity sha512-SfbagKvJQl5dtt+9wYpo9sa3ZkMgUxTq+/hXDf0KVwIx+zu3cJIqfEm9xSx6yXkq7it7RsPGHaPasApNffF/8g== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: - "@codemirror/rangeset" "^0.19.5" + "@codemirror/rangeset" "^0.19.0" "@codemirror/state" "^0.19.3" "@codemirror/text" "^0.19.0" style-mod "^4.0.0" @@ -2660,10 +2919,17 @@ ts-node "^9" tslib "^2" +<<<<<<< HEAD "@eslint/eslintrc@^1.0.5": version "1.0.5" resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== +======= +"@eslint/eslintrc@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz#7ce1547a5c46dfe56e1e45c3c9ed18038c721c6a" + integrity sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -2888,6 +3154,7 @@ tslib "~2.3.0" "@graphql-codegen/graphql-modules-preset@^2.3.2": +<<<<<<< HEAD version "2.3.2" resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.2.tgz#df88431e4cff656799b1ab0324e0795606162389" integrity sha512-O3PPDQejqf3rF9sHqlrl00M+BSIKJAovFWt2zkDr/D3I/XwntR4QdQDKyY9zTotHfPpgJKyxyMzthpdqPD5XUA== @@ -2895,6 +3162,15 @@ "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-codegen/visitor-plugin-common" "2.5.2" "@graphql-tools/utils" "8.5.5" +======= + version "2.3.5" + resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.5.tgz#07ef9ef6e66d4fbb76767097a7cc3cace34f8d08" + integrity sha512-y1PcTFr483Imzd346YdmNSvW3FlN4iYj4sRWCRys+WXpiFcXq+D7+1dFZvs75/9bIHoOEeQtusHHuRPy9qJVkA== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/visitor-plugin-common" "2.7.1" + "@graphql-tools/utils" "8.6.1" +>>>>>>> e5aaf7bb66 (bump dependencies) change-case-all "1.0.14" parse-filepath "^1.0.2" tslib "~2.3.0" @@ -2933,16 +3209,50 @@ tslib "~2.3.0" "@graphql-codegen/typescript@^2.4.2": +<<<<<<< HEAD version "2.4.2" resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.2.tgz#a239d5fd8f11140d5d4c81cfae7ff02054b724dc" integrity sha512-8ajWidiFqF1KNAywtb/692SjwTyjzrDHo1sf2Q7Z+rh9qDEIrh83VHB8naT/1CefOvxj3MS6GbcsvJMizaE/AQ== +======= + version "2.4.5" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.5.tgz#80ca7a343511a27cd587c0b220b0a0dd99a4dc4b" + integrity sha512-Ytb8phNHKl/v/wxudsMOAV1dmzIbckWHm2J83PLNOvnu9CGEhgsd67vfe3ZoF95VU2BKSG8BXGa6uL9z2xDmuA== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@graphql-codegen/plugin-helpers" "^2.3.2" "@graphql-codegen/schema-ast" "^2.4.1" +<<<<<<< HEAD "@graphql-codegen/visitor-plugin-common" "2.5.2" auto-bind "~4.0.0" tslib "~2.3.0" +"@graphql-codegen/visitor-plugin-common@2.5.2": + version "2.5.2" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.5.2.tgz#90aa4add41e17bca83f1c7c8ad674f2a06065efd" + integrity sha512-qDMraPmumG+vEGAz42/asRkdgIRmQWH5HTc320UX+I6CY6eE/Ey85cgzoqeQGLV8gu4sj3UkNx/3/r79eX4u+Q== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-tools/optimize" "^1.0.1" + "@graphql-tools/relay-operation-optimizer" "^6.3.7" + "@graphql-tools/utils" "^8.3.0" +======= + "@graphql-codegen/visitor-plugin-common" "2.7.1" +>>>>>>> e5aaf7bb66 (bump dependencies) + auto-bind "~4.0.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.3.0" + +<<<<<<< HEAD +======= +<<<<<<< HEAD +"@graphql-codegen/visitor-plugin-common@2.7.4": + version "2.7.4" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.4.tgz#fbc8aec9df0035b8f29fa64a6356cbb02062da5d" + integrity sha512-aaDoEudDD+B7DK/UwDSL2Fzej75N9hNJ3N8FQuTIeDyw6FNGWUxmkjVBLQGlzfnYfK8IYkdfYkrPn3Skq0pVxA== +======= "@graphql-codegen/visitor-plugin-common@2.5.2": version "2.5.2" resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.5.2.tgz#90aa4add41e17bca83f1c7c8ad674f2a06065efd" @@ -2959,6 +3269,24 @@ parse-filepath "^1.0.2" tslib "~2.3.0" +"@graphql-codegen/visitor-plugin-common@2.7.1": + version "2.7.1" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.1.tgz#bdcded24d1d6f329d32b90704397d6001374b893" + integrity sha512-Ew/+0GwGwL3ZSXS0cYz6lVvE7S5SkbTr7caRpLa4FpAdLGNskCgdA1n6W5tX5c7qsaYstqlxp30hJTfgTsYS6A== +>>>>>>> e5aaf7bb66 (bump dependencies) + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-tools/optimize" "^1.0.1" + "@graphql-tools/relay-operation-optimizer" "^6.3.7" + "@graphql-tools/utils" "^8.3.0" + auto-bind "~4.0.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.3.0" + +>>>>>>> b6559cd41d (bump dependencies) "@graphql-tools/apollo-engine-loader@^7.0.5": version "7.2.1" resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.1.tgz#14e5d0b1032a7d882d22a7533c8969ee3fa797f2" @@ -3079,6 +3407,7 @@ "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" +<<<<<<< HEAD "@graphql-tools/import@^6.2.6": version "6.3.1" resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz#731c47ab6c6ac9f7994d75c76b6c2fa127d2d483" @@ -3091,6 +3420,12 @@ version "6.6.1" resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.1.tgz#2a7e1ceda10103ffeb8652a48ddc47150b035485" integrity sha512-i9WA6k+erJMci822o9w9DoX+uncVBK60LGGYW8mdbhX0l7wEubUpA000thJ1aarCusYh0u+ZT9qX0HyVPXu25Q== +======= +"@graphql-tools/import@^6.2.6", "@graphql-tools/import@^6.5.7": + version "6.6.6" + resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.6.tgz#a4ff216e6b8a49c392bb8a4378d4e9caf2b303d7" + integrity sha512-a0aVajxqu1MsL8EwavA44Osw20lBOIhq8IM2ZIHFPP62cPAcOB26P+Sq57DHMsSyX5YQ0ab9XPM2o4e1dQhs0w== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@graphql-tools/utils" "8.5.3" resolve-from "5.0.0" @@ -3131,6 +3466,7 @@ <<<<<<< HEAD "@graphql-tools/load@^7.3.0", "@graphql-tools/load@^7.4.1": +<<<<<<< HEAD version "7.5.5" resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.5.tgz#d61e5bdee59b6c8aa9631f74f0b2a70d512e5b31" integrity sha512-qPasit140nwTbMQbFCfZcgaS7q/0+xMQGdkMGU11rtHt6/jMgJIKDUU8/fJGKltNY3EeHlEdVtZmggZD7Rr6bA== @@ -3153,6 +3489,14 @@ dependencies: "@graphql-tools/schema" "8.3.1" "@graphql-tools/utils" "^8.5.1" +======= + version "7.5.1" + resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz#8c7f846d2185ddc1d44fdfbf1ed9cb678f69e40b" + integrity sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg== + dependencies: + "@graphql-tools/schema" "8.3.1" + "@graphql-tools/utils" "^8.6.0" +>>>>>>> e5aaf7bb66 (bump dependencies) p-limit "3.1.0" tslib "~2.3.0" @@ -3165,6 +3509,7 @@ "@graphql-tools/utils" "^7.7.0" tslib "~2.2.0" +<<<<<<< HEAD <<<<<<< HEAD "@graphql-tools/merge@8.2.6": version "8.2.6" @@ -3185,6 +3530,8 @@ ======= >>>>>>> f9b03ab02f (fixups) +======= +>>>>>>> e5aaf7bb66 (bump dependencies) "@graphql-tools/merge@^8.2.1": version "8.2.1" resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.1.tgz#bf83aa06a0cfc6a839e52a58057a84498d0d51ff" @@ -3245,20 +3592,29 @@ relay-compiler "12.0.0" tslib "~2.3.0" +<<<<<<< HEAD <<<<<<< HEAD "@graphql-tools/schema@8.3.5": version "8.3.5" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.5.tgz#ebec0c0c7f53e591d34375d6f81d0660852fcaca" integrity sha512-3mJ/K7TdL+fnEUtCUqF4qkh1fcNMzaxgwKgO9fSYSTS7zyT16hbi5XSulSTshygHgaD2u+MO588iR4ZJcbZcIg== ======= +======= +>>>>>>> e5aaf7bb66 (bump dependencies) "@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": version "8.3.1" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== +<<<<<<< HEAD >>>>>>> f9b03ab02f (fixups) dependencies: "@graphql-tools/merge" "8.2.6" "@graphql-tools/utils" "8.6.5" +======= + dependencies: + "@graphql-tools/merge" "^8.2.1" + "@graphql-tools/utils" "^8.5.1" +>>>>>>> e5aaf7bb66 (bump dependencies) tslib "~2.3.0" value-or-promise "1.0.11" @@ -3306,7 +3662,11 @@ valid-url "1.0.9" ws "7.4.5" +<<<<<<< HEAD "@graphql-tools/url-loader@^7.0.11": +======= +"@graphql-tools/url-loader@^7.0.11", "@graphql-tools/url-loader@^7.4.2": +>>>>>>> e5aaf7bb66 (bump dependencies) version "7.7.0" resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.0.tgz#504f0030c75b61bca4ac07da49e8cd872c316972" integrity sha512-mBBb+aJqI4E0MVEzyfi76Pi/G6lGxGTVt/tP1YtKJly7UnonNoWOtDusdL3zIVAGhGgLsNrLbGhLDbwSd6TV6A== @@ -3331,6 +3691,7 @@ value-or-promise "^1.0.11" ws "^8.3.0" +<<<<<<< HEAD "@graphql-tools/url-loader@^7.4.2": version "7.5.3" resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.5.3.tgz#a594be40e3bc68d22f76746356e7f0b8117b7137" @@ -3381,6 +3742,19 @@ version "8.6.5" resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.5.tgz#ac04571b03f854c7a938b2ab700516a6c6d32335" integrity sha512-mjOtaWiS2WIqRz/cq5gaeM3sVrllcu2xbtHROw1su1v3xWa3D3dKgn8Lrl7+tvWs5WUVySsBss/VZ3WdoPkCrA== +======= +"@graphql-tools/utils@8.6.1": + version "8.6.1" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" + integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== + dependencies: + tslib "~2.3.0" + +"@graphql-tools/utils@8.6.2", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.6.0": + version "8.6.2" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz#095408135f091aac68fe18a0a21b708e685500da" + integrity sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: tslib "~2.3.0" @@ -4036,24 +4410,6 @@ resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== - -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" @@ -4999,9 +5355,15 @@ integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== "@microsoft/microsoft-graph-types@^2.6.0": +<<<<<<< HEAD version "2.13.0" resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.13.0.tgz#aa584e4897665df5a9c8869a226264cd6ec5882b" integrity sha512-63FfWBLcyNo8tMP4oPcdqHQvk4ehuWpiUMjVLD7zJXPENIowpdwudP969AALkKzlwsjWImamdivGKd2Zc8Z1Uw== +======= + version "2.15.0" + resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.15.0.tgz#1705ea1ce84c3de4705957392d7f0e3ae465c9f8" + integrity sha512-EyuOpZs55HUoC37Ujrp6IRgE5ghf/wtDrlWuJm7J/DKoB7B/Iek7eXdavTygx2uBeDZ5b4jXXvwl4PiDLlEcsw== +>>>>>>> e5aaf7bb66 (bump dependencies) "@microsoft/tsdoc-config@~0.15.2": version "0.15.2" @@ -5718,6 +6080,7 @@ resolved "https://registry.npmjs.org/@rjsf/material-ui/-/material-ui-3.2.1.tgz#84fbf322485aee3a84101e189161f0687779ec8d" integrity sha512-8UiDeDbjCImFSfOegGu13otQ7OdP9FOYpcLjeouppnhs+MPeIEAtYS+jCcBKmi3reyTagC15/KVSRhde1wS1vg== +<<<<<<< HEAD "@roadiehq/backstage-plugin-buildkite@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-buildkite/-/backstage-plugin-buildkite-2.0.0.tgz#e5da049a2e15c533228e26da1af537b3783fe5de" @@ -5727,6 +6090,17 @@ "@backstage/core-components" "^0.9.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" +======= +"@roadiehq/backstage-plugin-buildkite@^1.3.8": + version "1.3.8" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-buildkite/-/backstage-plugin-buildkite-1.3.8.tgz#fa91880e7d95a82d8d532f663cc9415c74dc6143" + integrity sha512-eZW826eMTgy7znkNRQzIhi/mlL6ztYRGq/+kThX3JjoHyGfIxEd+GnR58YEeuvs5dy277SJ/9gm3iibhK9T9sQ== + dependencies: + "@backstage/catalog-model" "^0.9.7" + "@backstage/core-components" "^0.8.0" + "@backstage/core-plugin-api" "^0.6.0" + "@backstage/plugin-catalog-react" "^0.6.5" +>>>>>>> e5aaf7bb66 (bump dependencies) "@backstage/theme" "^0.2.6" "@material-ui/core" "^4.12.1" "@material-ui/icons" "^4.11.2" @@ -5737,6 +6111,7 @@ react-router-dom "6.0.0-beta.0" react-use "^17.2.4" +<<<<<<< HEAD "@roadiehq/backstage-plugin-github-insights@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-insights/-/backstage-plugin-github-insights-2.0.0.tgz#1137f4f3ad5744559bf095ee868371f5fd8c60ec" @@ -5747,6 +6122,18 @@ "@backstage/core-plugin-api" "^1.0.0" "@backstage/integration-react" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" +======= +"@roadiehq/backstage-plugin-github-insights@^1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-insights/-/backstage-plugin-github-insights-1.5.0.tgz#9a693be80adc9f3b9cfe5ba615628abde88e121f" + integrity sha512-r2FclGGF/6aTrT6wH5Xq+5ByfVwgCDt83+KINf1ELNuWt5x0nMtguSTyZqJ5n1AdbGybVJZ84dlfbSTa8RTU7g== + dependencies: + "@backstage/catalog-model" "^0.9.7" + "@backstage/core-components" "^0.8.0" + "@backstage/core-plugin-api" "^0.6.0" + "@backstage/integration-react" "^0.1.10" + "@backstage/plugin-catalog-react" "^0.6.5" +>>>>>>> e5aaf7bb66 (bump dependencies) "@backstage/theme" "^0.2.7" "@date-io/core" "2.10.7" "@material-ui/core" "^4.11.0" @@ -5761,6 +6148,7 @@ react-use "^17.2.4" zustand "3.6.9" +<<<<<<< HEAD "@roadiehq/backstage-plugin-github-pull-requests@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-2.0.0.tgz#99ba670e1bd9bdc954b43901883aaf9832ae8942" @@ -5770,6 +6158,17 @@ "@backstage/core-components" "^0.9.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" +======= +"@roadiehq/backstage-plugin-github-pull-requests@^1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-1.4.0.tgz#3f250c8b13c6b95ec2825f9b7088ea5199054013" + integrity sha512-qrbybOtZdWWWKptGfAvf1vzlwXGcvidWT5Dr6mbibn7GwSxSe4CD58pIEHJzFoT9jLHFGgAn5Uhh2SG/Ek7gbw== + dependencies: + "@backstage/catalog-model" "^0.9.7" + "@backstage/core-components" "^0.8.0" + "@backstage/core-plugin-api" "^0.6.0" + "@backstage/plugin-catalog-react" "^0.6.5" +>>>>>>> e5aaf7bb66 (bump dependencies) "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@octokit/rest" "^18.5.3" @@ -5782,6 +6181,7 @@ react-router "6.0.0-beta.0" react-use "^17.2.4" +<<<<<<< HEAD "@roadiehq/backstage-plugin-travis-ci@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-travis-ci/-/backstage-plugin-travis-ci-2.0.0.tgz#d86eba878bbaa6ada77e9eda932ff25bd9121021" @@ -5791,6 +6191,17 @@ "@backstage/core-components" "^0.9.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" +======= +"@roadiehq/backstage-plugin-travis-ci@^1.3.6": + version "1.3.6" + resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-travis-ci/-/backstage-plugin-travis-ci-1.3.6.tgz#6f45a42bdf39aa6baab56f0c4400990238df1625" + integrity sha512-th+2GaOjkPArDUbTBuhhCz/6WL4gcrVRVAsDHzuSrrJqNtsz6kXdBIHhR/58En16BZ2bnHhRzY87uiUDLjAntA== + dependencies: + "@backstage/catalog-model" "^0.9.7" + "@backstage/core-components" "^0.8.0" + "@backstage/core-plugin-api" "^0.6.0" + "@backstage/plugin-catalog-react" "^0.6.5" +>>>>>>> e5aaf7bb66 (bump dependencies) "@backstage/theme" "^0.2.9" "@material-ui/core" "^4.11.3" "@material-ui/icons" "^4.11.2" @@ -5935,6 +6346,7 @@ dependencies: type-detect "4.0.8" +<<<<<<< HEAD "@sinonjs/commons@^1.7.0": version "1.7.1" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" @@ -5942,6 +6354,8 @@ dependencies: type-detect "4.0.8" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) "@sinonjs/fake-timers@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" @@ -7177,6 +7591,7 @@ resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.4.tgz#f7b5a86ccd843c0ccaddfaedd9ee1081bc1cde3b" integrity sha512-l3xuhmyF2kBldy15SeY6d6HbK2BacEcSK1qTF1ISPtPHr29JH0C1fndz9ExXLKpGl0J6pZi+dGp1i5xesMt60Q== +<<<<<<< HEAD "@types/luxon@^2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.5.tgz#29d3b095d55ee50df8f4cf109b16009334d9828e" @@ -7188,6 +7603,8 @@ integrity sha512-ZuzIc7aN+i2ZDMWIiSmMdubR9EMMSTdEzF6R+FckP4p6xdnOYKqknTo/k+xXQvciSXlNGIwA4OPU5X7JIFzYdA== >>>>>>> 76d216e74b (fixups) +======= +>>>>>>> e5aaf7bb66 (bump dependencies) "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" @@ -7411,9 +7828,15 @@ integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== "@types/react-dom@*", "@types/react-dom@>=16.9.0": +<<<<<<< HEAD version "17.0.9" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== +======= + version "17.0.11" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" + integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@types/react" "*" @@ -7819,7 +8242,11 @@ dependencies: "@types/node" "*" +<<<<<<< HEAD "@types/websocket@1.0.4", "@types/websocket@^1.0.4": +======= +"@types/websocket@^1.0.4": +>>>>>>> e5aaf7bb66 (bump dependencies) version "1.0.4" resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== @@ -7903,7 +8330,11 @@ semver "^7.3.5" tsutils "^3.21.0" +<<<<<<< HEAD "@typescript-eslint/experimental-utils@5.9.0", "@typescript-eslint/experimental-utils@^5.0.0": +======= +"@typescript-eslint/experimental-utils@^5.0.0": +>>>>>>> e5aaf7bb66 (bump dependencies) version "5.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz#652762d37d6565ef07af285021b8347b6c79a827" integrity sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g== @@ -7916,6 +8347,7 @@ eslint-utils "^3.0.0" "@typescript-eslint/parser@^5.9.0": +<<<<<<< HEAD version "5.9.1" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz#b114011010a87e17b3265ca715e16c76a9834cef" integrity sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g== @@ -7937,6 +8369,29 @@ version "5.9.1" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz#6c27be89f1a9409f284d95dfa08ee3400166fe69" integrity sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ== +======= + version "5.13.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz#0394ed8f2f849273c0bf4b811994d177112ced5c" + integrity sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg== + dependencies: + "@typescript-eslint/scope-manager" "5.13.0" + "@typescript-eslint/types" "5.13.0" + "@typescript-eslint/typescript-estree" "5.13.0" + debug "^4.3.2" + +"@typescript-eslint/scope-manager@5.13.0": + version "5.13.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz#cf6aff61ca497cb19f0397eea8444a58f46156b6" + integrity sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA== + dependencies: + "@typescript-eslint/types" "5.13.0" + "@typescript-eslint/visitor-keys" "5.13.0" + +"@typescript-eslint/scope-manager@5.14.0": + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz#ea518962b42db8ed0a55152ea959c218cb53ca7b" + integrity sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@typescript-eslint/types" "5.9.1" "@typescript-eslint/visitor-keys" "5.9.1" @@ -7994,6 +8449,7 @@ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz#5827b011982950ed350f075eaecb7f47d3c643ee" integrity sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g== +<<<<<<< HEAD "@typescript-eslint/typescript-estree@5.12.0": version "5.12.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" @@ -8007,17 +8463,68 @@ dependencies: "@typescript-eslint/types" "5.9.1" "@typescript-eslint/visitor-keys" "5.9.1" +======= +"@typescript-eslint/scope-manager@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117" + integrity sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg== + dependencies: + "@typescript-eslint/types" "5.9.0" + "@typescript-eslint/visitor-keys" "5.9.0" + +"@typescript-eslint/type-utils@5.14.0": + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.14.0.tgz#711f08105860b12988454e91df433567205a8f0b" + integrity sha512-d4PTJxsqaUpv8iERTDSQBKUCV7Q5yyXjqXUl3XF7Sd9ogNLuKLkxz82qxokqQ4jXdTPZudWpmNtr/JjbbvUixw== + dependencies: + "@typescript-eslint/utils" "5.14.0" +>>>>>>> e5aaf7bb66 (bump dependencies) debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" +<<<<<<< HEAD <<<<<<< HEAD "@typescript-eslint/typescript-estree@5.16.0": version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz#32259459ec62f5feddca66adc695342f30101f61" integrity sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ== +======= +"@typescript-eslint/types@5.13.0": + version "5.13.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz#da1de4ae905b1b9ff682cab0bed6b2e3be9c04e5" + integrity sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg== + +"@typescript-eslint/types@5.14.0": + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11" + integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw== + +"@typescript-eslint/types@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3" + integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg== + +"@typescript-eslint/typescript-estree@5.13.0": + version "5.13.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz#b37c07b748ff030a3e93d87c842714e020b78141" + integrity sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA== + dependencies: + "@typescript-eslint/types" "5.13.0" + "@typescript-eslint/visitor-keys" "5.13.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@5.14.0": + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz#78b7f7385d5b6f2748aacea5c9b7f6ae62058314" + integrity sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@typescript-eslint/types" "5.16.0" "@typescript-eslint/visitor-keys" "5.16.0" @@ -8027,6 +8534,7 @@ semver "^7.3.5" tsutils "^3.21.0" +<<<<<<< HEAD "@typescript-eslint/utils@5.12.0": version "5.12.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" @@ -8046,6 +8554,25 @@ version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz#42218b459d6d66418a4eb199a382bdc261650679" integrity sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ== +======= +"@typescript-eslint/typescript-estree@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f" + integrity sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw== + dependencies: + "@typescript-eslint/types" "5.9.0" + "@typescript-eslint/visitor-keys" "5.9.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.14.0": + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.14.0.tgz#6c8bc4f384298cbbb32b3629ba7415f9f80dc8c4" + integrity sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@types/json-schema" "^7.0.9" "@typescript-eslint/scope-manager" "5.16.0" @@ -8054,6 +8581,7 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" +<<<<<<< HEAD "@typescript-eslint/visitor-keys@5.12.0": version "5.12.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" @@ -8072,10 +8600,25 @@ version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz#f27dc3b943e6317264c7492e390c6844cd4efbbb" integrity sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g== +======= +"@typescript-eslint/visitor-keys@5.13.0": + version "5.13.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz#f45ff55bcce16403b221ac9240fbeeae4764f0fd" + integrity sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g== + dependencies: + "@typescript-eslint/types" "5.13.0" + eslint-visitor-keys "^3.0.0" + +"@typescript-eslint/visitor-keys@5.14.0": + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986" + integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@typescript-eslint/types" "5.16.0" eslint-visitor-keys "^3.0.0" +<<<<<<< HEAD "@uiw/react-codemirror@^4.5.1": version "4.5.1" resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.5.1.tgz#f2af4e761f13b729a3ec7c7c858b34432cdf46a7" @@ -8086,6 +8629,15 @@ "@codemirror/state" "^0.19.9" "@codemirror/theme-one-dark" "^0.19.1" "@codemirror/view" "^0.19.45" +======= +"@typescript-eslint/visitor-keys@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6" + integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw== + dependencies: + "@typescript-eslint/types" "5.9.0" + eslint-visitor-keys "^3.0.0" +>>>>>>> e5aaf7bb66 (bump dependencies) "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -8404,17 +8956,23 @@ ajv@^7.0.3: require-from-string "^2.0.2" uri-js "^4.2.2" +<<<<<<< HEAD <<<<<<< HEAD ajv@^8.0.0, ajv@^8.10.0, ajv@^8.8.0: version "8.10.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== ======= +======= +>>>>>>> e5aaf7bb66 (bump dependencies) ajv@^8.0.0, ajv@^8.8.0: version "8.9.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== +<<<<<<< HEAD >>>>>>> f9b03ab02f (fixups) +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -8575,6 +9133,7 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" +<<<<<<< HEAD <<<<<<< HEAD apollo-server-core@^3.6.4, apollo-server-core@^3.6.5: version "3.6.5" @@ -8586,6 +9145,12 @@ apollo-server-core@^3.6.1: resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.1.tgz#e835198a2eda5bcb61d2a1174d44ecb0ac414d15" integrity sha512-V2Us5x7d+w8dVdyFLxEygMgaQ3KZ6Z59HpaQBNHQ7C5wVZhjUXIsgbehBtfzQbMpyMx0z5/8Z8eIrC4zNoGJDw== >>>>>>> f9b03ab02f (fixups) +======= +apollo-server-core@^3.6.3: + version "3.6.3" + resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.3.tgz#6b12ffa1af8bc8799930f72360090834915033d1" + integrity sha512-TFJmAlI6vPp1MHOSXqYkE6leAyMekWv/D/3ma11uETkcd3EPjERGmxtTXPJElMVEkOK9BEElYKthCrH7bjYLuw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" @@ -8631,6 +9196,7 @@ apollo-server-errors@^3.3.0: resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.0.tgz#ac8ceb1400064312f983d8d70195693fbcf2be3c" integrity sha512-9/MNlPZBbEjcCdJcUSbKbVEBT9xZS8GSpX7T/TyzcxHSbsXJszSDSipQNGC+PRKTKAUnv61IONScVyLKEZ5XEQ== +<<<<<<< HEAD <<<<<<< HEAD apollo-server-express@^3.0.0, apollo-server-express@^3.6.4: version "3.6.5" @@ -8642,6 +9208,12 @@ apollo-server-express@^3.0.0, apollo-server-express@^3.6.1: resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.1.tgz#b8bda303e05c551ac76c9c0b26bc651ca1466912" integrity sha512-29imWvRPn5GsQq02Akt0+jejpWzpOIZfUmgoiFm4YB7somvhDNw15Pu7fv4sISK8ehNIDF68IpLd2cpY8sCkYQ== >>>>>>> f9b03ab02f (fixups) +======= +apollo-server-express@^3.0.0, apollo-server-express@^3.6.3: + version "3.6.3" + resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.3.tgz#5daf58bf0bdf0107ded7cd52c7e6ce6cd32c8b44" + integrity sha512-3CjahZ+n+1T7pHH1qW1B6Ns0BzwOMeupAp2u0+M8ruOmE/e7VKn0OSOQQckZ8Z2AcWxWeno9K89fIv3PoSYgYA== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@types/accepts" "^1.3.5" "@types/body-parser" "1.19.2" @@ -8649,6 +9221,7 @@ apollo-server-express@^3.0.0, apollo-server-express@^3.6.1: "@types/express" "4.17.13" "@types/express-serve-static-core" "4.17.27" accepts "^1.3.5" +<<<<<<< HEAD <<<<<<< HEAD apollo-server-core "^3.6.5" apollo-server-types "^3.5.2" @@ -8656,6 +9229,10 @@ apollo-server-express@^3.0.0, apollo-server-express@^3.6.1: apollo-server-core "^3.6.1" apollo-server-types "^3.5.0" >>>>>>> f9b03ab02f (fixups) +======= + apollo-server-core "^3.6.3" + apollo-server-types "^3.5.1" +>>>>>>> e5aaf7bb66 (bump dependencies) body-parser "^1.19.0" cors "^2.8.5" parseurl "^1.3.3" @@ -8691,6 +9268,7 @@ apollo-server-types@^3.5.0: apollo-server-env "^4.2.0" apollo-server@^3.0.0: +<<<<<<< HEAD <<<<<<< HEAD version "3.6.4" resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.4.tgz#e1bc966eb7d03944274056af4b17b380f0ac8696" @@ -8706,6 +9284,14 @@ apollo-server@^3.0.0: apollo-server-core "^3.6.1" apollo-server-express "^3.6.1" >>>>>>> f9b03ab02f (fixups) +======= + version "3.6.3" + resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.3.tgz#0ba0ddb2835ccf27056d20b6f5b83b0ce9545a79" + integrity sha512-kNvOiDNkIaO+MsfR9v40Vz4ArlDdc9VwVKGJy5dniLW9AoDa/tSF99m8ItfGoMypqlRPMgrNGxkMuToBnvYXNQ== + dependencies: + apollo-server-core "^3.6.3" + apollo-server-express "^3.6.3" +>>>>>>> e5aaf7bb66 (bump dependencies) express "^4.17.1" aproba@^1.0.3: @@ -9056,9 +9642,15 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.840.0, aws-sdk@^2.928.0, aws-sdk@^2.948.0: +<<<<<<< HEAD version "2.1065.0" resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1065.0.tgz#82b6e4e2a6fbccb1767339e309edd4f0daa958e6" integrity sha512-OFvpXoL104dTFKpU14ILcLDPAlDbkJNIKXnnG2pK+2x++CvzIRJeNyERtUuEo7QMUOwq5U4nIQJKSPt5fBC/HA== +======= + version "2.1088.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1088.0.tgz#e8ea761eff2b5c42aca6136c5a01fa9b8066f0a2" + integrity sha512-KtGJTvMPJL6QynasbSMNvz7Onc5ejebY6NzuUvgrw6sNohNJDR/3J/0e016ocQwvEq79MNK4v4EsxNi9eMELtg== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: buffer "4.9.2" events "1.1.1" @@ -9361,12 +9953,16 @@ bdd-lazy-var@^2.6.0: resolved "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz#ca03fb36d68c5a507c0ba9a4d53160b899e6b7cb" integrity sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A== +<<<<<<< HEAD before-after-hook@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== before-after-hook@^2.2.0: +======= +before-after-hook@^2.1.0, before-after-hook@^2.2.0: +>>>>>>> e5aaf7bb66 (bump dependencies) version "2.2.2" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== @@ -9972,6 +10568,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" +<<<<<<< HEAD caniuse-lite@^1.0.0: version "1.0.30001282" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd" @@ -9981,6 +10578,12 @@ caniuse-lite@^1.0.30001286: version "1.0.30001296" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8" integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q== +======= +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: + version "1.0.30001315" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001315.tgz#f1b1efd1171ee1170d52709a7252632dacbd7c77" + integrity sha512-5v7LFQU4Sb/qvkz7JcZkvtSH1Ko+1x2kgo3ocdBeMGZSOFpuE1kkm0kpTwLtWeFrw5qw08ulLxJjVIXIS8MkiQ== +>>>>>>> e5aaf7bb66 (bump dependencies) canvas@^2.6.1: version "2.9.0" @@ -10500,10 +11103,17 @@ color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +<<<<<<< HEAD color-string@^1.5.2, color-string@^1.6.0: version "1.6.0" resolved "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== +======= +color-string@^1.5.2, color-string@^1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -10999,11 +11609,14 @@ core-js@^3.4.1: resolved "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== +<<<<<<< HEAD core-js@^3.6.5: version "3.20.3" resolved "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a" integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -11147,7 +11760,11 @@ cross-fetch@3.1.4: dependencies: node-fetch "2.6.1" +<<<<<<< HEAD cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, cross-fetch@^3.1.5: +======= +cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.5: +>>>>>>> e5aaf7bb66 (bump dependencies) version "3.1.5" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -11193,6 +11810,7 @@ cross-undici-fetch@^0.0.20: node-fetch "^2.6.5" undici "^4.9.3" +<<<<<<< HEAD cross-undici-fetch@^0.0.26: version "0.0.26" resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.26.tgz#29d93d56609f4d2334f9d5333d23ef7a242842a7" @@ -11207,6 +11825,12 @@ cross-undici-fetch@^0.1.4: version "0.1.13" resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.13.tgz#807d17ce5c524c21bc0a6486e97ecccb901c6529" integrity sha512-nF+g932BrKPoK0RZQKRA9S2IKXeveGPJlaUWXyUEGjjSpAdxBhEHDrMDbiksP2iSNe8O5vn1bN3tTvrd6+yFSg== +======= +cross-undici-fetch@^0.1.4: + version "0.1.25" + resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.25.tgz#8c6826dd0ffbb45fcb1a554be5984e0eaef7f3ba" + integrity sha512-KS6hm/VuRO+3jIrg4uidz3mQ8NWvCbiTTOg3yoH30zuGVUvjqZlnXw66h0kuzyfP21hDkrdIbufXCW6BAQdSNw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: abort-controller "^3.0.0" form-data-encoder "^1.7.1" @@ -11268,12 +11892,12 @@ css-in-js-utils@^2.0.0: isobject "^3.0.1" css-loader@^6.5.1: - version "6.7.1" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" - integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== + version "6.6.0" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" + integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== dependencies: icss-utils "^5.1.0" - postcss "^8.4.7" + postcss "^8.4.5" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -11300,6 +11924,7 @@ css-select@^4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== +<<<<<<< HEAD dependencies: boolbase "^1.0.0" css-what "^5.0.0" @@ -11322,6 +11947,14 @@ css-tree@^1.1.2: dependencies: mdn-data "2.0.14" source-map "^0.6.1" +======= + dependencies: + boolbase "^1.0.0" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" +>>>>>>> e5aaf7bb66 (bump dependencies) css-tree@^1.1.3: version "1.1.3" @@ -11344,11 +11977,14 @@ css-vendor@^2.0.8: "@babel/runtime" "^7.8.3" is-in-browser "^1.0.2" +<<<<<<< HEAD css-what@^3.2.1: version "3.4.2" resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) css-what@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" @@ -11924,11 +12560,14 @@ decimal.js-light@^2.4.1: version "2.5.0" resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348" integrity sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg== +<<<<<<< HEAD decimal.js@^10.2.0: version "10.2.0" resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) decimal.js@^10.2.1: version "10.3.1" @@ -12160,8 +12799,17 @@ detect-newline@^3.0.0: resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +<<<<<<< HEAD <<<<<<< HEAD detect-node@^2.0.4, detect-node@^2.1.0: +======= +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-node@^2.1.0: +>>>>>>> e5aaf7bb66 (bump dependencies) version "2.1.0" resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== @@ -12341,6 +12989,7 @@ dom-helpers@^5.0.1: dependencies: "@babel/runtime" "^7.8.7" csstype "^2.6.7" +<<<<<<< HEAD dom-serializer@0: version "0.2.2" @@ -12349,6 +12998,8 @@ dom-serializer@0: dependencies: domelementtype "^2.0.1" entities "^2.0.0" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dom-serializer@^1.0.1: version "1.2.0" @@ -12391,6 +13042,7 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +<<<<<<< HEAD domhandler@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" @@ -12402,6 +13054,12 @@ domhandler@^4.2.0: version "4.2.2" resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== +======= +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: domelementtype "^2.2.0" @@ -12415,6 +13073,7 @@ dompurify@^2.2.7, dompurify@^2.2.9, dompurify@^2.3.6: resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875" integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg== +<<<<<<< HEAD domutils@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -12423,6 +13082,8 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) domutils@^2.5.2, domutils@^2.6.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -12655,17 +13316,23 @@ engine.io@~3.5.0: engine.io-parser "~2.2.0" ws "~7.4.2" +<<<<<<< HEAD <<<<<<< HEAD enhanced-resolve@^5.9.2: version "5.9.2" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== ======= +======= +>>>>>>> e5aaf7bb66 (bump dependencies) enhanced-resolve@^5.8.3: version "5.8.3" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== +<<<<<<< HEAD >>>>>>> f9b03ab02f (fixups) +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -12731,6 +13398,7 @@ error@^10.4.0: resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== +<<<<<<< HEAD es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: version "1.18.0" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" @@ -12754,6 +13422,9 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next unbox-primitive "^1.0.0" es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: +======= +es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.19.0, es-abstract@^1.19.1: +>>>>>>> e5aaf7bb66 (bump dependencies) version "1.19.1" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== @@ -12793,6 +13464,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +<<<<<<< HEAD es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.53" resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" @@ -12829,6 +13501,8 @@ es6-weak-map@^2.0.3: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) esbuild-android-arm64@0.14.22: version "0.14.22" resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303" @@ -13242,11 +13916,19 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^3.1.1" eslint@^8.6.0: +<<<<<<< HEAD version "8.7.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c" integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w== dependencies: "@eslint/eslintrc" "^1.0.5" +======= + version "8.10.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz#931be395eb60f900c01658b278e05b6dae47199d" + integrity sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw== + dependencies: + "@eslint/eslintrc" "^1.2.0" +>>>>>>> e5aaf7bb66 (bump dependencies) "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -14632,10 +15314,14 @@ github-from-package@0.0.0: resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= +<<<<<<< HEAD glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: ======= glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.2: >>>>>>> 76d216e74b (fixups) +======= +glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.2: +>>>>>>> e5aaf7bb66 (bump dependencies) version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -14758,9 +15444,15 @@ globby@^7.1.1: slash "^1.0.0" google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6.1: +<<<<<<< HEAD version "7.11.0" resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.11.0.tgz#b63699c65037310a424128a854ba7e736704cbdb" integrity sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg== +======= + version "7.12.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" + integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: arrify "^2.0.0" base64-js "^1.3.0" @@ -14772,7 +15464,11 @@ google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6 jws "^4.0.0" lru-cache "^6.0.0" +<<<<<<< HEAD google-gax@^2.12.0, google-gax@^2.24.1: +======= +google-gax@^2.24.1: +>>>>>>> e5aaf7bb66 (bump dependencies) version "2.28.1" resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz#99bc234b5769d901d70959d40bd1651729eb4a34" integrity sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g== @@ -14898,6 +15594,7 @@ graphql-config@^4.1.0: minimatch "3.0.4" string-env-interpolation "1.0.1" +<<<<<<< HEAD graphql-language-service-interface@^2.10.2: version "2.10.2" resolved "https://registry.npmjs.org/graphql-language-service-interface/-/graphql-language-service-interface-2.10.2.tgz#de9386f699e446320256175e215cdc10ccf9f9b7" @@ -14920,6 +15617,12 @@ graphql-language-service-types@^1.8.7: version "1.8.7" resolved "https://registry.npmjs.org/graphql-language-service-types/-/graphql-language-service-types-1.8.7.tgz#f5e909e6d9334ea2d8d1f7281b695b6f5602c07f" integrity sha512-LP/Mx0nFBshYEyD0Ny6EVGfacJAGVx+qXtlJP4hLzUdBNOGimfDNtMVIdZANBXHXcM41MDgMHTnyEx2g6/Ttbw== +======= +graphql-language-service@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/graphql-language-service/-/graphql-language-service-5.0.0.tgz#52dad53135f06551eee4c4dc57057c61eb10c460" + integrity sha512-3tbJOApOJk8FQFVV+hKSs3gEWqqt3gQ5l3iEOUl7ofhyTmpRlbkYp+/dVLMF/p29iwZ5a8wqSXl+DDnHI6RMXQ== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: graphql-config "^4.1.0" vscode-languageserver-types "^3.15.1" @@ -15100,7 +15803,11 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +<<<<<<< HEAD has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: +======= +has-symbols@^1.0.1, has-symbols@^1.0.2: +>>>>>>> e5aaf7bb66 (bump dependencies) version "1.0.2" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -15437,6 +16144,7 @@ http-proxy-agent@^5.0.0: debug "4" http-proxy-middleware@^2.0.0: +<<<<<<< HEAD <<<<<<< HEAD version "2.0.4" resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz#03af0f4676d172ae775cb5c33f592f40e1a4e07a" @@ -15446,6 +16154,11 @@ http-proxy-middleware@^2.0.0: resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz#94d7593790aad6b3de48164f13792262f656c332" integrity sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g== >>>>>>> f9b03ab02f (fixups) +======= + version "2.0.3" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" + integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -15995,11 +16708,14 @@ is-buffer@^2.0.0: version "2.0.4" resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== +<<<<<<< HEAD is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) is-callable@^1.2.4: version "1.2.4" @@ -16020,6 +16736,7 @@ is-ci@^3.0.0, is-ci@^3.0.1: dependencies: ci-info "^3.2.0" +<<<<<<< HEAD is-core-module@^2.1.0, is-core-module@^2.2.0: version "2.8.0" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" @@ -16028,6 +16745,9 @@ is-core-module@^2.1.0, is-core-module@^2.2.0: has "^1.0.3" is-core-module@^2.8.0: +======= +is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.8.0: +>>>>>>> e5aaf7bb66 (bump dependencies) version "2.8.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -16403,11 +17123,14 @@ is-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +<<<<<<< HEAD is-string@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) is-string@^1.0.7: version "1.0.7" @@ -18361,6 +19084,20 @@ logform@^2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz#68babe6a74ab09a1fd15a9b1e6cbc7713d41cb5b" integrity sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA== +<<<<<<< HEAD +======= + dependencies: + colors "1.4.0" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^1.1.0" + triple-beam "^1.3.0" + +logform@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe" + integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: colors "1.4.0" fecha "^4.2.0" @@ -18448,6 +19185,7 @@ lru-cache@^7.3.1: version "7.3.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz#7702e80694ec2bf19865567a469f2b081fcf53f5" integrity sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw== +<<<<<<< HEAD lru-queue@^0.1.0: version "0.1.0" @@ -18455,6 +19193,8 @@ lru-queue@^0.1.0: integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= dependencies: es5-ext "~0.10.2" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) lunr@^2.3.9: version "2.3.9" @@ -18475,6 +19215,7 @@ macos-release@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== +<<<<<<< HEAD magic-string@^0.25.7: version "0.25.7" @@ -18482,13 +19223,15 @@ magic-string@^0.25.7: integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: sourcemap-codec "^1.4.4" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) -magic-string@^0.26.1: - version "0.26.1" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz#ba9b651354fa9512474199acecf9c6dbe93f97fd" - integrity sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg== +magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: - sourcemap-codec "^1.4.8" + sourcemap-codec "^1.4.4" make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" @@ -19278,10 +20021,10 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== +mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": + version "1.51.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== mime-db@~1.33.0: version "1.33.0" @@ -19296,23 +20039,27 @@ mime-types@2.1.18: mime-db "~1.33.0" mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + version "2.1.34" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== dependencies: - mime-db "1.52.0" + mime-db "1.51.0" mime@1.6.0, mime@^1.3.4: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +<<<<<<< HEAD mime@^2.2.0: version "2.5.2" resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== mime@^2.5.0: +======= +mime@^2.2.0, mime@^2.5.0: +>>>>>>> e5aaf7bb66 (bump dependencies) version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== @@ -19360,9 +20107,9 @@ min-indent@^1.0.0: integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= mini-css-extract-plugin@^2.4.2: - version "2.6.0" - resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" - integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== + version "2.5.3" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz#c5c79f9b22ce9b4f164e9492267358dbe35376d9" + integrity sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw== dependencies: schema-utils "^4.0.0" @@ -19390,6 +20137,16 @@ minimatch@5.0.1, minimatch@^5.0.0: dependencies: brace-expansion "^2.0.1" +<<<<<<< HEAD +======= +minimatch@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +>>>>>>> e5aaf7bb66 (bump dependencies) minimist-options@4.1.0, minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -19501,8 +20258,17 @@ mixme@^0.5.1: resolved "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== +<<<<<<< HEAD <<<<<<< HEAD mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: +======= +mkdirp-classic@^0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" + integrity sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g== + +mkdirp-classic@^0.5.3: +>>>>>>> e5aaf7bb66 (bump dependencies) version "0.5.3" resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== @@ -20239,6 +21005,7 @@ npmlog@^6.0.0: gauge "^4.0.0" set-blocking "^2.0.0" +<<<<<<< HEAD nth-check@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -20246,6 +21013,8 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) nth-check@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -20301,16 +21070,15 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +<<<<<<< HEAD object-hash@^2.0.1, object-hash@^2.1.1: +======= +object-hash@^2.0.1, object-hash@^2.1.1, object-hash@^2.2.0: +>>>>>>> e5aaf7bb66 (bump dependencies) version "2.2.0" resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" @@ -20365,6 +21133,7 @@ object.getownpropertydescriptors@^2.0.3: version "2.1.0" resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== +<<<<<<< HEAD dependencies: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" @@ -20373,10 +21142,11 @@ object.getownpropertydescriptors@^2.1.0: version "2.1.3" resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: - call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.1" + es-abstract "^1.17.0-next.1" object.hasown@^1.1.0: version "1.1.0" @@ -21778,10 +22548,17 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +<<<<<<< HEAD postcss@^8.1.0, postcss@^8.4.7: version "8.4.12" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== +======= +postcss@^8.1.0, postcss@^8.4.5: + version "8.4.7" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8" + integrity sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: nanoid "^3.3.1" picocolors "^1.0.0" @@ -21916,6 +22693,7 @@ prismjs@^1.25.0, prismjs@~1.27.0: resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== +<<<<<<< HEAD ======= prismjs@^1.25.0: version "1.26.0" @@ -21927,12 +22705,17 @@ prismjs@~1.25.0: resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) private@^0.1.8: version "0.1.8" resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== +<<<<<<< HEAD >>>>>>> 76d216e74b (fixups) +======= +>>>>>>> e5aaf7bb66 (bump dependencies) proc-log@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" @@ -22460,6 +23243,7 @@ react-helmet@6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" +<<<<<<< HEAD react-hook-form@^7.12.2: version "7.16.1" resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.16.1.tgz#669046df378a71949e5cf8a2398cbe20d5cb27bc" @@ -22469,6 +23253,12 @@ react-hook-form@^7.13.0: version "7.17.4" resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.17.4.tgz#232b6aaccddb91eb4a228ac20b154abd90866fdb" integrity sha512-7XhbCr7d9fDC1TgcK/BUbt7D3q0VJMu7jPErfsa0JrxVjv/nni41xWdJcy0Zb7R+Np8OsCkQ2lMyloAtE3DLiQ== +======= +react-hook-form@^7.12.2, react-hook-form@^7.13.0: + version "7.27.1" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.27.1.tgz#fe5fbcb6bf58751f66d9569e998d671480cc57f6" + integrity sha512-N3a7A6zIQ8DJeThisVZGtOUabTbJw+7DHJidmB9w8m3chckv2ZWKb5MHps9d2pPJqmCDoWe53Bos56bYmJms5w== +>>>>>>> e5aaf7bb66 (bump dependencies) react-hot-loader@^4.13.0: version "4.13.0" @@ -22550,16 +23340,22 @@ react-query@^3.34.16: broadcast-channel "^3.4.1" match-sorter "^6.0.2" +<<<<<<< HEAD react-redux@^7.2.0, react-redux@^7.2.4: version "7.2.6" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== ======= +======= +>>>>>>> e5aaf7bb66 (bump dependencies) react-redux@^7.1.1, react-redux@^7.2.4: version "7.2.5" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8" integrity sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg== +<<<<<<< HEAD >>>>>>> 76d216e74b (fixups) +======= +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/runtime" "^7.12.1" "@types/react-redux" "^7.1.16" @@ -22766,6 +23562,7 @@ read-cmd-shim@^2.0.0: resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== +<<<<<<< HEAD read-package-json-fast@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.1.tgz#c767f6c634873ffb6bb73788191b65559734f555" @@ -22775,6 +23572,9 @@ read-package-json-fast@^2.0.1: npm-normalize-package-bin "^1.0.1" read-package-json-fast@^2.0.2: +======= +read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: +>>>>>>> e5aaf7bb66 (bump dependencies) version "2.0.3" resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -23537,6 +24337,7 @@ ret@~0.2.0: resolved "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== +<<<<<<< HEAD retry-request@^4.0.0: version "4.1.3" resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde" @@ -23545,6 +24346,9 @@ retry-request@^4.0.0: debug "^4.1.1" retry-request@^4.2.2: +======= +retry-request@^4.0.0, retry-request@^4.2.2: +>>>>>>> e5aaf7bb66 (bump dependencies) version "4.2.2" resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg== @@ -23609,13 +24413,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: inherits "^2.0.1" rollup-plugin-dts@^4.0.1: - version "4.2.0" - resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-4.2.0.tgz#f7ae4646f5b3aec07560bc341c0dc4a85f8a0dff" - integrity sha512-lx6irWVhz/x4//tIqRhzk4FOqGQ0n37ZM2wpPCn4uafl/EmiV92om7ZdAsq7Bzho6C+Xh5GfsyuP9H+Udv72Lg== + version "4.1.0" + resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-4.1.0.tgz#63b1e7de3970bb6d50877e60df2150a3892bc49c" + integrity sha512-rriXIm3jdUiYeiAAd1Fv+x2AxK6Kq6IybB2Z/IdoAW95fb4uRUurYsEYKa8L1seedezDeJhy8cfo8FEL9aZzqg== dependencies: - magic-string "^0.26.1" + magic-string "^0.25.7" optionalDependencies: - "@babel/code-frame" "^7.16.7" + "@babel/code-frame" "^7.16.0" rollup-plugin-esbuild@^4.7.2: version "4.7.2" @@ -23666,6 +24470,7 @@ rollup@^0.63.4: "@types/node" "*" rollup@^2.60.2: +<<<<<<< HEAD <<<<<<< HEAD version "2.70.0" resolved "https://registry.npmjs.org/rollup/-/rollup-2.70.0.tgz#17a92e5938e92a251b962352e904c9f558230ec7" @@ -23675,6 +24480,11 @@ rollup@^2.60.2: resolved "https://registry.npmjs.org/rollup/-/rollup-2.67.2.tgz#d95e15f60932ad21e05a870bd0aa0b235d056f04" integrity sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw== >>>>>>> 76d216e74b (fixups) +======= + version "2.70.0" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.70.0.tgz#17a92e5938e92a251b962352e904c9f558230ec7" + integrity sha512-iEzYw+syFxQ0X9RefVwhr8BA2TNJsTaX8L8dhyeyMECDbmiba+8UQzcu+xZdji0+JQ+s7kouQnw+9Oz5M19XKA== +>>>>>>> e5aaf7bb66 (bump dependencies) optionalDependencies: fsevents "~2.3.2" @@ -23714,10 +24524,17 @@ rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" +<<<<<<< HEAD rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.2: version "7.5.2" resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w== +======= +rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.2: + version "7.5.5" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: tslib "^2.1.0" @@ -25227,9 +26044,15 @@ swagger-client@^3.17.0: url "~0.11.0" swagger-ui-react@^4.1.3: +<<<<<<< HEAD version "4.1.3" resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.1.3.tgz#a722ecbe54ef237fa9080447a7c708c4c72d846a" integrity sha512-o1AoXUTNH40cxWus0QOeWQ8x9tSIEmrLBrOgAOHDnvWJ1qyjT8PjgHjPbUVjMbja18coyuaAAeUdyLKvLGmlDA== +======= + version "4.6.1" + resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.6.1.tgz#25d0dc380f73fcba00df214f50adc940910f480c" + integrity sha512-NIVzdzzaHnoG6NxK15A0wpd7TiGPpcK4BBh5mgLq6/hCrytjpeQZrkSM1Yf0p1fD7+rkvKcI+b33w/6RCLt3yw== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/runtime-corejs3" "^7.16.3" "@braintree/sanitize-url" "^5.0.2" @@ -25243,7 +26066,10 @@ swagger-ui-react@^4.1.3: js-file-download "^0.4.12" js-yaml "=4.1.0" lodash "^4.17.21" +<<<<<<< HEAD memoizee "^0.4.15" +======= +>>>>>>> e5aaf7bb66 (bump dependencies) prop-types "^15.7.2" randombytes "^2.1.0" react-copy-to-clipboard "5.0.4" @@ -25277,7 +26103,11 @@ swr@^1.1.2: resolved "https://registry.npmjs.org/swr/-/swr-1.2.1.tgz#c21a4fe2139cb1c4630450589b5b5add947a9d41" integrity sha512-1cuWXqJqXcFwbgONGCY4PHZ8v05009JdHsC3CIC6u7d00kgbMswNr1sHnnhseOBxtzVqcCNpOHEgVDciRer45w== +<<<<<<< HEAD symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: +======= +symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0: +>>>>>>> e5aaf7bb66 (bump dependencies) version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -26950,9 +27780,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5, webpack@^5.66.0: - version "5.70.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" - integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== + version "5.69.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.69.1.tgz#8cfd92c192c6a52c99ab00529b5a0d33aa848dc5" + integrity sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -26963,7 +27793,7 @@ webpack@^5, webpack@^5.66.0: acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.2" + enhanced-resolve "^5.8.3" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" @@ -27132,7 +27962,11 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" +<<<<<<< HEAD winston-transport@^4.4.2: +======= +winston-transport@^4.4.2, winston-transport@^4.5.0: +>>>>>>> e5aaf7bb66 (bump dependencies) version "4.5.0" resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== @@ -27145,6 +27979,25 @@ winston@^3.2.1: version "3.5.1" resolved "https://registry.npmjs.org/winston/-/winston-3.5.1.tgz#b25cc899d015836dbf8c583dec8c4c4483a0da2e" integrity sha512-tbRtVy+vsSSCLcZq/8nXZaOie/S2tPXPFt4be/Q3vI/WtYwm7rrwidxVw2GRa38FIXcJ1kUM6MOZ9Jmnk3F3UA== +<<<<<<< HEAD +======= + dependencies: + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.3.2" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.4.2" + +winston@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6" + integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w== +>>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@dabh/diagnostics" "^2.0.2" async "^3.2.3" @@ -27271,16 +28124,27 @@ ws@7.4.5: resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== +<<<<<<< HEAD ws@8.3.0, "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.2.3, ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: version "7.5.6" resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== +======= +>>>>>>> e5aaf7bb66 (bump dependencies) ws@8.5.0, ws@^8.1.0: version "8.5.0" resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== +<<<<<<< HEAD +======= +"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: + version "7.5.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" + integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== + +>>>>>>> e5aaf7bb66 (bump dependencies) ws@~7.4.2: version "7.4.6" resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" From 85c18b48e2cef5dab0f497fabddf7c4713046330 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Mar 2022 10:12:15 +0100 Subject: [PATCH 353/410] re-generate api reports Signed-off-by: Emma Indal --- plugins/stack-overflow-backend/api-report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/stack-overflow-backend/api-report.md b/plugins/stack-overflow-backend/api-report.md index e8743f1e30..625581def8 100644 --- a/plugins/stack-overflow-backend/api-report.md +++ b/plugins/stack-overflow-backend/api-report.md @@ -8,7 +8,7 @@ import { Config } from '@backstage/config'; import { DocumentCollatorFactory } from '@backstage/search-common'; import { IndexableDocument } from '@backstage/search-common'; -import { Logger as Logger_2 } from 'winston'; +import { Logger } from 'winston'; import { Readable } from 'stream'; // @public @@ -42,7 +42,7 @@ export class StackOverflowQuestionsCollatorFactory export type StackOverflowQuestionsCollatorFactoryOptions = { baseUrl?: string; requestParams: StackOverflowQuestionsRequestParams; - logger: Logger_2; + logger: Logger; }; // @public From 1f84e612e3529d7992c42a1f9f0c6eb13c73b652 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Tue, 15 Mar 2022 16:29:52 +0100 Subject: [PATCH 354/410] update scripts Signed-off-by: Emma Indal --- plugins/stack-overflow/package.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 44e2d4197b..b1eefd65a9 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -10,14 +10,14 @@ "types": "dist/index.d.ts" }, "scripts": { - "build": "backstage-cli plugin:build", - "start": "backstage-cli plugin:serve", - "lint": "backstage-cli lint", - "test": "backstage-cli test", + "build": "backstage-cli package start", + "start": "backstage-cli package build", + "lint": "backstage-cli package lint", + "test": "backstage-cli package test", "diff": "backstage-cli plugin:diff", - "prepack": "backstage-cli prepack", - "postpack": "backstage-cli postpack", - "clean": "backstage-cli clean" + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "clean": "backstage-cli package clean" }, "dependencies": { "@backstage/core-components": "^0.8.8", @@ -41,7 +41,7 @@ "devDependencies": { "@backstage/cli": "^0.15.2", "@backstage/test-utils": "^0.3.0", - "@testing-library/react": "^11.2.5", + "@testing-library/react": "^12.1.3", "@backstage/core-app-api": "^0.5.2", "@backstage/dev-utils": "^0.2.21-next.0", "@testing-library/user-event": "^13.1.8", From 7f647e27d32c615a26741ddf9869c7e6c1f7523b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Mar 2022 10:27:23 +0000 Subject: [PATCH 355/410] build(deps): bump zod from 3.11.6 to 3.14.2 Bumps [zod](https://github.com/colinhacks/zod) from 3.11.6 to 3.14.2. - [Release notes](https://github.com/colinhacks/zod/releases) - [Changelog](https://github.com/colinhacks/zod/blob/master/CHANGELOG.md) - [Commits](https://github.com/colinhacks/zod/compare/v3.11.6...v3.14.2) --- updated-dependencies: - dependency-name: zod dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c837b63311..a8a3e247c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25713,9 +25713,9 @@ zip-stream@^4.1.0: readable-stream "^3.6.0" zod@^3.11.6, zod@^3.9.5: - version "3.11.6" - resolved "https://registry.npmjs.org/zod/-/zod-3.11.6.tgz#e43a5e0c213ae2e02aefe7cb2b1a6fa3d7f1f483" - integrity sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg== + version "3.14.2" + resolved "https://registry.npmjs.org/zod/-/zod-3.14.2.tgz#0b4ed79085c471adce0e7f2c0a4fbb5ddc516ba2" + integrity sha512-iF+wrtzz7fQfkmn60PG6XFxaWBhYYKzp2i+nv24WbLUWb2JjymdkHlzBwP0erpc78WotwP5g9AAu7Sk8GWVVNw== zustand@3.6.9: version "3.6.9" From 84409a80dd37925666cd0bae5d547078bbfefe88 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 29 Jan 2022 00:14:47 +0100 Subject: [PATCH 356/410] cli: add jest environment detection based on role Signed-off-by: Patrik Oldsberg --- packages/cli/config/jest.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 1472260e33..5cda03c199 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -36,6 +36,25 @@ const transformIgnorePattern = [ 'typescript', ].join('|'); +// Provides additional config that's based on the role of the target package +function getRoleConfig(role) { + switch (role) { + case 'app': + case 'web-library': + case 'common-library': + case 'plugin-frontend': + case 'plugin-frontend-module': + default: + return { testEnvironment: 'jsdom' }; + case 'cli': + case 'backend': + case 'node-library': + case 'plugin-backend': + case 'plugin-backend-module': + return { testEnvironment: 'node' }; + } +} + async function getProjectConfig(targetPath, displayName) { const configJsPath = path.resolve(targetPath, 'jest.config.js'); const configTsPath = path.resolve(targetPath, 'jest.config.ts'); @@ -50,6 +69,7 @@ async function getProjectConfig(targetPath, displayName) { // All configs are merged together to create the final config, with longer paths taking precedence. // The merging of the configs is shallow, meaning e.g. all transforms are replaced if new ones are defined. const pkgJsonConfigs = []; + let closestPkgJson = undefined; let currentPath = targetPath; // Some sanity check to avoid infinite loop @@ -59,6 +79,9 @@ async function getProjectConfig(targetPath, displayName) { if (exists) { try { const data = fs.readJsonSync(packagePath); + if (!closestPkgJson) { + closestPkgJson = data; + } if (data.jest) { pkgJsonConfigs.unshift(data.jest); } @@ -115,6 +138,8 @@ async function getProjectConfig(targetPath, displayName) { testMatch: ['**/*.test.{js,jsx,ts,tsx,mjs,cjs}'], transformIgnorePatterns: [`/node_modules/(?:${transformIgnorePattern})/`], + + ...getRoleConfig(closestPkgJson?.backstage?.role), }; // Use src/setupTests.ts as the default location for configuring test env From 1f7d4763ab1e3072dd329118936a013e6519742b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 30 Jan 2022 19:07:00 +0100 Subject: [PATCH 357/410] cli: bump to jest 27, remove other jest deps Signed-off-by: Patrik Oldsberg --- .changeset/twelve-buses-nail.md | 7 + packages/backend-common/package.json | 1 - packages/backend-tasks/package.json | 1 - packages/backend-test-utils/package.json | 3 +- packages/cli/package.json | 2 +- yarn.lock | 1202 +++++++++++++--------- 6 files changed, 704 insertions(+), 512 deletions(-) create mode 100644 .changeset/twelve-buses-nail.md diff --git a/.changeset/twelve-buses-nail.md b/.changeset/twelve-buses-nail.md new file mode 100644 index 0000000000..24dd6bbb0b --- /dev/null +++ b/.changeset/twelve-buses-nail.md @@ -0,0 +1,7 @@ +--- +'@backstage/cli': minor +--- + +Bump the version range of `jest` from `^26.0.1` to `^27.4.7`. You can find the complete list of breaking changes [here](https://github.com/facebook/jest/releases/tag/v27.0.0). + +One of the main breaking changes in Jest 27 is that the default test environment is now `node` rather than `jsdom`. However, this is counteracted in the default Jest configuration provided by the Backstage CLI, as it still defaults the environment to `jsdom`. The future addition of the Backstage package `"role"` field will override this default, setting the test environment to the appropriate value for the role. diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index d09187e2d3..a215ce6851 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -108,7 +108,6 @@ "aws-sdk-mock": "^5.2.1", "better-sqlite3": "^7.5.0", "http-errors": "^2.0.0", - "jest": "^26.0.1", "mock-fs": "^5.1.0", "msw": "^0.35.0", "mysql2": "^2.2.5", diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 69613ca087..9f8d9febce 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -51,7 +51,6 @@ "@backstage/backend-test-utils": "^0.1.23-next.0", "@backstage/cli": "^0.16.1-next.0", "@types/cron": "^1.7.3", - "jest": "^26.0.1", "wait-for-expect": "^3.0.2" }, "files": [ diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index ea8800bee3..5ae5153890 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -46,8 +46,7 @@ "uuid": "^8.0.0" }, "devDependencies": { - "@backstage/cli": "^0.16.1-next.0", - "jest": "^26.0.1" + "@backstage/cli": "^0.16.1-next.0" }, "files": [ "dist" diff --git a/packages/cli/package.json b/packages/cli/package.json index 12072e639e..fb6eff9a49 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -85,7 +85,7 @@ "handlebars": "^4.7.3", "html-webpack-plugin": "^5.3.1", "inquirer": "^8.2.0", - "jest": "^26.0.1", + "jest": "^27.4.7", "jest-css-modules": "^2.1.0", "jest-transform-yaml": "^1.0.0", "json-schema": "^0.4.0", diff --git a/yarn.lock b/yarn.lock index c837b63311..e6b1a65863 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,13 @@ dependencies: aws4 "^1.11.0" +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@apidevtools/json-schema-ref-parser@^9.0.6": version "9.0.6" resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" @@ -292,7 +299,7 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": version "7.16.7" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== @@ -304,7 +311,12 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": +"@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== + +"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5": version "7.16.12" resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== @@ -325,7 +337,28 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.14.0", "@babel/generator@^7.16.0", "@babel/generator@^7.16.8": +"@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.17.8" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" + integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.7" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.8" + "@babel/parser" "^7.17.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + +"@babel/generator@^7.14.0", "@babel/generator@^7.16.0", "@babel/generator@^7.16.8", "@babel/generator@^7.7.2": version "7.16.8" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== @@ -334,6 +367,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.17.3", "@babel/generator@^7.17.7": + version "7.17.7" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" + integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" @@ -359,6 +401,16 @@ browserslist "^4.17.5" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": version "7.16.10" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" @@ -459,6 +511,20 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" @@ -498,6 +564,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" @@ -541,6 +614,15 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helpers@^7.17.8": + version "7.17.8" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" + integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/highlight@^7.0.0", "@babel/highlight@^7.16.7": version "7.16.10" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" @@ -555,11 +637,16 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.3", "@babel/parser@^7.16.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.3", "@babel/parser@^7.16.7": version "7.16.12" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== +"@babel/parser@^7.17.3", "@babel/parser@^7.17.8": + version "7.17.8" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" + integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" @@ -830,7 +917,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.16.7": +"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== @@ -1315,7 +1402,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.4.5": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": version "7.16.10" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== @@ -1331,6 +1418,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.17.3": + version "7.17.3" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" @@ -1347,6 +1450,14 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@backstage/catalog-client@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-1.0.0.tgz#05f9ee3b771ca17e4800f5116d63bd183fe0c4d6" @@ -1671,14 +1782,6 @@ human-id "^1.0.2" prettier "^1.19.1" -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - "@codemirror/autocomplete@^0.19.0": version "0.19.14" resolved "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-0.19.14.tgz#5f61b0fced56e7960791063d03b21d11a63f0ec5" @@ -2793,162 +2896,160 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== +"@jest/console@^27.4.6": + version "27.4.6" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz#0742e6787f682b22bdad56f9db2a8a77f6a86107" + integrity sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" + jest-message-util "^27.4.6" + jest-util "^27.4.2" slash "^3.0.0" -"@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== +"@jest/core@^27.4.7": + version "27.4.7" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz#84eabdf42a25f1fa138272ed229bcf0a1b5e6913" + integrity sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg== dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.4.6" + "@jest/reporters" "^27.4.6" + "@jest/test-result" "^27.4.6" + "@jest/transform" "^27.4.6" + "@jest/types" "^27.4.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" + emittery "^0.8.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" + jest-changed-files "^27.4.2" + jest-config "^27.4.7" + jest-haste-map "^27.4.6" + jest-message-util "^27.4.6" + jest-regex-util "^27.4.0" + jest-resolve "^27.4.6" + jest-resolve-dependencies "^27.4.6" + jest-runner "^27.4.6" + jest-runtime "^27.4.6" + jest-snapshot "^27.4.6" + jest-util "^27.4.2" + jest-validate "^27.4.6" + jest-watcher "^27.4.6" + micromatch "^4.0.4" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== +"@jest/environment@^27.4.6": + version "27.4.6" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz#1e92885d64f48c8454df35ed9779fbcf31c56d8b" + integrity sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg== dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/fake-timers" "^27.4.6" + "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^26.6.2" + jest-mock "^27.4.6" -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== +"@jest/fake-timers@^27.4.6": + version "27.4.6" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz#e026ae1671316dbd04a56945be2fa251204324e8" + integrity sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A== dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" + "@jest/types" "^27.4.2" + "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-message-util "^27.4.6" + jest-mock "^27.4.6" + jest-util "^27.4.2" -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== +"@jest/globals@^27.4.6": + version "27.4.6" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz#3f09bed64b0fd7f5f996920258bd4be8f52f060a" + integrity sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw== dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" + "@jest/environment" "^27.4.6" + "@jest/types" "^27.4.2" + expect "^27.4.6" -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== +"@jest/reporters@^27.4.6": + version "27.4.6" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz#b53dec3a93baf9b00826abf95b932de919d6d8dd" + integrity sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.4.6" + "@jest/test-result" "^27.4.6" + "@jest/transform" "^27.4.6" + "@jest/types" "^27.4.2" + "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" + istanbul-reports "^3.1.3" + jest-haste-map "^27.4.6" + jest-resolve "^27.4.6" + jest-util "^27.4.2" + jest-worker "^27.4.6" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" + v8-to-istanbul "^8.1.0" -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== +"@jest/source-map@^27.4.0": + version "27.4.0" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz#2f0385d0d884fb3e2554e8f71f8fa957af9a74b6" + integrity sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== +"@jest/test-result@^27.4.6": + version "27.4.6" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz#b3df94c3d899c040f602cea296979844f61bdf69" + integrity sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ== dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.4.6" + "@jest/types" "^27.4.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== +"@jest/test-sequencer@^27.4.6": + version "27.4.6" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz#447339b8a3d7b5436f50934df30854e442a9d904" + integrity sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw== dependencies: - "@jest/test-result" "^26.6.2" + "@jest/test-result" "^27.4.6" graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" + jest-haste-map "^27.4.6" + jest-runtime "^27.4.6" -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== +"@jest/transform@^27.4.6": + version "27.4.6" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz#153621940b1ed500305eacdb31105d415dc30231" + integrity sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" + "@jest/types" "^27.4.2" + babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" + jest-haste-map "^27.4.6" + jest-regex-util "^27.4.0" + jest-util "^27.4.2" + micromatch "^4.0.4" + pirates "^4.0.4" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" @@ -2975,6 +3076,17 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jest/types@^27.4.2", "@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + "@jimp/bmp@^0.10.3": version "0.10.3" resolved "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz#79a23678e8389865c62e77b0dccc3e069dfc27f0" @@ -3300,6 +3412,24 @@ resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" @@ -5157,13 +5287,6 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/fake-timers@^7.0.4", "@sinonjs/fake-timers@^7.1.0": version "7.1.2" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" @@ -5171,6 +5294,13 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@sinonjs/samsam@^6.0.2": version "6.0.2" resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.0.2.tgz#a0117d823260f282c04bff5f8704bdc2ac6910bb" @@ -5509,7 +5639,7 @@ dependencies: "@types/node" "*" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.0.0": version "7.1.9" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== @@ -5520,6 +5650,17 @@ "@types/babel__template" "*" "@types/babel__traverse" "*" +"@types/babel__core@^7.1.14": + version "7.1.18" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" + integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + "@types/babel__generator@*": version "7.6.1" resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" @@ -6349,10 +6490,10 @@ resolved "https://registry.npmjs.org/@types/pluralize/-/pluralize-0.0.29.tgz#6ffa33ed1fc8813c469b859681d09707eb40d03c" integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== -"@types/prettier@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" - integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== +"@types/prettier@^2.1.5": + version "2.4.3" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.3.tgz#a3c65525b91fca7da00ab1a3ac2b5a2a4afbffbf" + integrity sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w== "@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.4" @@ -7468,14 +7609,6 @@ any-promise@^1.0.0: resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -8000,16 +8133,16 @@ babel-core@^7.0.0-bridge.0: resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== +babel-jest@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz#4d024e69e241cdf4f396e453a07100f44f7ce314" + integrity sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg== dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" + "@jest/transform" "^27.4.6" + "@jest/types" "^27.4.2" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.4.0" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -8021,21 +8154,21 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== +babel-plugin-jest-hoist@^27.4.0: + version "27.4.0" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz#d7831fc0f93573788d80dee7e682482da4c730d6" + integrity sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -8131,12 +8264,12 @@ babel-preset-fbjs@^3.4.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== +babel-preset-jest@^27.4.0: + version "27.4.0" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca" + integrity sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg== dependencies: - babel-plugin-jest-hoist "^26.6.2" + babel-plugin-jest-hoist "^27.4.0" babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.26.0: @@ -8818,7 +8951,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: +camelcase@^6.2.0, camelcase@^6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -8856,13 +8989,6 @@ capital-case@^1.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -9072,10 +9198,10 @@ circleci-api@^4.0.0: dependencies: axios "^0.21.1" -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== class-utils@^0.3.5: version "0.3.6" @@ -10960,6 +11086,11 @@ diff-sequences@^26.6.2: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff-sequences@^27.4.0, diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + diff2html@^2.7.0: version "2.12.2" resolved "https://registry.npmjs.org/diff2html/-/diff2html-2.12.2.tgz#356d35f9c87c42ebd11558bedf1c99c5b00886e8" @@ -11290,10 +11421,10 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== emoji-regex@^7.0.1: version "7.0.3" @@ -12101,12 +12232,7 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: react-use "^17.2.4" zen-observable "^0.8.15" -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@4.1.0, execa@^4.0.0: +execa@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -12204,17 +12330,15 @@ expand-template@^2.0.3: resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expect@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== +expect@^27.4.6: + version "27.5.1" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" express-prom-bundle@^6.3.6: version "6.4.1" @@ -12944,7 +13068,7 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.1.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -13549,11 +13673,6 @@ grouped-queue@^2.0.0: resolved "https://registry.npmjs.org/grouped-queue/-/grouped-queue-2.0.0.tgz#a2c6713f2171e45db2c300a3a9d7c119d694dac8" integrity sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw== -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - gtoken@^5.0.4: version "5.1.0" resolved "https://registry.npmjs.org/gtoken/-/gtoken-5.1.0.tgz#4ba8d2fc9a8459098f76e7e8fd7beaa39fda9fe4" @@ -15093,14 +15212,20 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== dependencies: - "@babel/core" "^7.7.5" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" semver "^6.3.0" istanbul-lib-report@^3.0.0: @@ -15121,7 +15246,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: +istanbul-reports@^3.1.3: version "3.1.4" resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== @@ -15151,57 +15276,85 @@ jenkins@^0.28.1: dependencies: papi "^0.29.0" -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== +jest-changed-files@^27.4.2: + version "27.4.2" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5" + integrity sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A== dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" + "@jest/types" "^27.4.2" + execa "^5.0.0" + throat "^6.0.1" -jest-cli@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== +jest-circus@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz#d3af34c0eb742a967b1919fbb351430727bcea6c" + integrity sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ== dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.4.6" + "@jest/test-result" "^27.4.6" + "@jest/types" "^27.4.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.4.6" + is-generator-fn "^2.0.0" + jest-each "^27.4.6" + jest-matcher-utils "^27.4.6" + jest-message-util "^27.4.6" + jest-runtime "^27.4.6" + jest-snapshot "^27.4.6" + jest-util "^27.4.2" + pretty-format "^27.4.6" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.4.7: + version "27.4.7" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz#d00e759e55d77b3bcfea0715f527c394ca314e5a" + integrity sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw== + dependencies: + "@jest/core" "^27.4.7" + "@jest/test-result" "^27.4.6" + "@jest/types" "^27.4.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" + jest-config "^27.4.7" + jest-util "^27.4.2" + jest-validate "^27.4.6" prompts "^2.0.1" - yargs "^15.4.1" + yargs "^16.2.0" -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== +jest-config@^27.4.7: + version "27.4.7" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz#4f084b2acbd172c8b43aa4cdffe75d89378d3972" + integrity sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw== dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.4.6" + "@jest/types" "^27.4.2" + babel-jest "^27.4.6" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" + jest-circus "^27.4.6" + jest-environment-jsdom "^27.4.6" + jest-environment-node "^27.4.6" + jest-get-type "^27.4.0" + jest-jasmine2 "^27.4.6" + jest-regex-util "^27.4.0" + jest-resolve "^27.4.6" + jest-runner "^27.4.6" + jest-util "^27.4.2" + jest-validate "^27.4.6" + micromatch "^4.0.4" + pretty-format "^27.4.6" + slash "^3.0.0" jest-css-modules@^2.1.0: version "2.1.0" @@ -15210,7 +15363,7 @@ jest-css-modules@^2.1.0: dependencies: identity-obj-proxy "3.0.0" -jest-diff@^26.0.0, jest-diff@^26.6.2: +jest-diff@^26.0.0: version "26.6.2" resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== @@ -15220,138 +15373,191 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== +jest-diff@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz#93815774d2012a2cbb6cf23f84d48c7a2618f98d" + integrity sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.4.0" + jest-get-type "^27.4.0" + pretty-format "^27.4.6" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-docblock@^27.4.0: + version "27.4.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz#06c78035ca93cbbb84faf8fce64deae79a59f69f" + integrity sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg== dependencies: detect-newline "^3.0.0" -jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== +jest-each@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz#e7e8561be61d8cc6dbf04296688747ab186c40ff" + integrity sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.4.2" chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" + jest-get-type "^27.4.0" + jest-util "^27.4.2" + pretty-format "^27.4.6" -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== +jest-environment-jsdom@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz#c23a394eb445b33621dfae9c09e4c8021dea7b36" + integrity sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA== dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.4.6" + "@jest/fake-timers" "^27.4.6" + "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" + jest-mock "^27.4.6" + jest-util "^27.4.2" + jsdom "^16.6.0" -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== +jest-environment-node@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz#ee8cd4ef458a0ef09d087c8cd52ca5856df90242" + integrity sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ== dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.4.6" + "@jest/fake-timers" "^27.4.6" + "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-mock "^27.4.6" + jest-util "^27.4.2" jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== +jest-get-type@^27.4.0: + version "27.4.0" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5" + integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ== + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-haste-map@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz#c60b5233a34ca0520f325b7e2cc0a0140ad0862a" + integrity sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.4.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" + jest-regex-util "^27.4.0" + jest-serializer "^27.4.0" + jest-util "^27.4.2" + jest-worker "^27.4.6" + micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: - fsevents "^2.1.2" + fsevents "^2.3.2" -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== +jest-jasmine2@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz#109e8bc036cb455950ae28a018f983f2abe50127" + integrity sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw== dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^27.4.6" + "@jest/source-map" "^27.4.0" + "@jest/test-result" "^27.4.6" + "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^26.6.2" + expect "^27.4.6" is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" + jest-each "^27.4.6" + jest-matcher-utils "^27.4.6" + jest-message-util "^27.4.6" + jest-runtime "^27.4.6" + jest-snapshot "^27.4.6" + jest-util "^27.4.2" + pretty-format "^27.4.6" + throat "^6.0.1" -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== +jest-leak-detector@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz#ed9bc3ce514b4c582637088d9faf58a33bd59bf4" + integrity sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA== dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" + jest-get-type "^27.4.0" + pretty-format "^27.4.6" -jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== +jest-matcher-utils@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz#53ca7f7b58170638590e946f5363b988775509b8" + integrity sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA== dependencies: chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" + jest-diff "^27.4.6" + jest-get-type "^27.4.0" + pretty-format "^27.4.6" -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-message-util@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz#9fdde41a33820ded3127465e1a5896061524da31" + integrity sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.4.2" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" + micromatch "^4.0.4" + pretty-format "^27.4.6" slash "^3.0.0" - stack-utils "^2.0.2" + stack-utils "^2.0.3" -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: - "@jest/types" "^26.6.2" + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz#77d1ba87fbd33ccb8ef1f061697e7341b7635195" + integrity sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw== + dependencies: + "@jest/types" "^27.4.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -15359,121 +15565,126 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== +jest-regex-util@^27.4.0: + version "27.4.0" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca" + integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg== -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== +jest-resolve-dependencies@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz#fc50ee56a67d2c2183063f6a500cc4042b5e2327" + integrity sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw== dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" + "@jest/types" "^27.4.2" + jest-regex-util "^27.4.0" + jest-snapshot "^27.4.6" -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== +jest-resolve@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz#2ec3110655e86d5bfcfa992e404e22f96b0b5977" + integrity sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.4.2" chalk "^4.0.0" graceful-fs "^4.2.4" + jest-haste-map "^27.4.6" jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" + jest-util "^27.4.2" + jest-validate "^27.4.6" + resolve "^1.20.0" + resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== +jest-runner@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz#1d390d276ec417e9b4d0d081783584cbc3e24773" + integrity sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg== dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^27.4.6" + "@jest/environment" "^27.4.6" + "@jest/test-result" "^27.4.6" + "@jest/transform" "^27.4.6" + "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" - emittery "^0.7.1" + emittery "^0.8.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" + jest-docblock "^27.4.0" + jest-environment-jsdom "^27.4.6" + jest-environment-node "^27.4.6" + jest-haste-map "^27.4.6" + jest-leak-detector "^27.4.6" + jest-message-util "^27.4.6" + jest-resolve "^27.4.6" + jest-runtime "^27.4.6" + jest-util "^27.4.2" + jest-worker "^27.4.6" source-map-support "^0.5.6" - throat "^5.0.0" + throat "^6.0.1" -jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== +jest-runtime@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz#83ae923818e3ea04463b22f3597f017bb5a1cffa" + integrity sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ== dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" + "@jest/environment" "^27.4.6" + "@jest/fake-timers" "^27.4.6" + "@jest/globals" "^27.4.6" + "@jest/source-map" "^27.4.0" + "@jest/test-result" "^27.4.6" + "@jest/transform" "^27.4.6" + "@jest/types" "^27.4.2" chalk "^4.0.0" - cjs-module-lexer "^0.6.0" + cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - exit "^0.1.2" + execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" + jest-haste-map "^27.4.6" + jest-message-util "^27.4.6" + jest-mock "^27.4.6" + jest-regex-util "^27.4.0" + jest-resolve "^27.4.6" + jest-snapshot "^27.4.6" + jest-util "^27.4.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.4.1" -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== +jest-serializer@^27.4.0: + version "27.4.0" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a" + integrity sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ== dependencies: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== +jest-snapshot@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz#e2a3b4fff8bdce3033f2373b2e525d8b6871f616" + integrity sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ== dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" + "@jest/transform" "^27.4.6" + "@jest/types" "^27.4.2" "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^26.6.2" + expect "^27.4.6" graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" + jest-diff "^27.4.6" + jest-get-type "^27.4.0" + jest-haste-map "^27.4.6" + jest-matcher-utils "^27.4.6" + jest-message-util "^27.4.6" + jest-util "^27.4.2" natural-compare "^1.4.0" - pretty-format "^26.6.2" + pretty-format "^27.4.6" semver "^7.3.2" jest-transform-yaml@^1.0.0: @@ -15483,41 +15694,41 @@ jest-transform-yaml@^1.0.0: dependencies: js-yaml "4.1.0" -jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== +jest-util@^27.4.2: + version "27.4.2" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz#ed95b05b1adfd761e2cda47e0144c6a58e05a621" + integrity sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" + ci-info "^3.2.0" graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" + picomatch "^2.2.3" -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== +jest-validate@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz#efc000acc4697b6cf4fa68c7f3f324c92d0c4f1f" + integrity sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ== dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" + "@jest/types" "^27.4.2" + camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^26.3.0" + jest-get-type "^27.4.0" leven "^3.1.0" - pretty-format "^26.6.2" + pretty-format "^27.4.6" -jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== +jest-watcher@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz#673679ebeffdd3f94338c24f399b85efc932272d" + integrity sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw== dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/test-result" "^27.4.6" + "@jest/types" "^27.4.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.6.2" + jest-util "^27.4.2" string-length "^4.0.1" jest-when@^3.1.0: @@ -15525,16 +15736,7 @@ jest-when@^3.1.0: resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.1.tgz#33ab6f923661cf878cd08fe9df64b507934603db" integrity sha512-o+HiaIVCg1IC95sMDKHU9G5v5N5l3UHqXvJpf0PgAMThZeQo4Hf5Sgoj+wpCBRGg4/KtzSAZZZEKNiLqE0i4eQ== -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^27.3.1, jest-worker@^27.4.1: +jest-worker@^27.3.1, jest-worker@^27.4.1, jest-worker@^27.4.6: version "27.4.6" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== @@ -15543,14 +15745,14 @@ jest-worker@^27.3.1, jest-worker@^27.4.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^26.0.1: - version "26.6.3" - resolved "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" - integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== +jest@^27.4.7: + version "27.4.7" + resolved "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz#87f74b9026a1592f2da05b4d258e57505f28eca4" + integrity sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg== dependencies: - "@jest/core" "^26.6.3" + "@jest/core" "^27.4.7" import-local "^3.0.2" - jest-cli "^26.6.3" + jest-cli "^27.4.7" jimp@^0.10.3: version "0.10.3" @@ -15715,7 +15917,7 @@ jscodeshift@^0.13.0: temp "^0.8.4" write-file-atomic "^2.3.0" -jsdom@^16.4.0, jsdom@^16.5.2: +jsdom@^16.5.2, jsdom@^16.6.0: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== @@ -17650,7 +17852,7 @@ micromark@^3.0.0: micromark-util-types "^1.0.1" parse-entities "^3.0.0" -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10: version "3.1.10" resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -17813,7 +18015,7 @@ minimist-options@4.1.0, minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.6" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -18358,18 +18560,6 @@ node-modules-regexp@^1.0.0: resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^8.0.0: - version "8.0.2" - resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" - integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - node-releases@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" @@ -18962,11 +19152,6 @@ p-cancelable@^2.0.0: resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== - p-filter@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" @@ -19769,6 +19954,11 @@ pirates@^4.0.0, pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + pixelmatch@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" @@ -20236,6 +20426,24 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" +pretty-format@^27.4.6: + version "27.4.6" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz#1b784d2f53c68db31797b2348fa39b49e31846b7" + integrity sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + printj@~1.1.0: version "1.1.2" resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" @@ -21685,7 +21893,12 @@ resolve-url@^0.2.1: resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0: +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: version "1.21.0" resolved "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== @@ -21880,11 +22093,6 @@ rollup@^2.60.2: optionalDependencies: fsevents "~2.3.2" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - rtl-css-js@^1.14.0: version "1.14.0" resolved "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d" @@ -21974,21 +22182,6 @@ safe-stable-stringify@^2.2.0, safe-stable-stringify@^2.3.1: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - sanitize-filename@^1.6.1: version "1.6.3" resolved "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" @@ -22305,11 +22498,6 @@ shelljs@^0.8.5: interpret "^1.0.0" rechoir "^0.6.2" -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - shx@^0.3.2: version "0.3.4" resolved "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz#74289230b4b663979167f94e1935901406e40f02" @@ -22850,10 +23038,10 @@ stack-trace@0.0.x: resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= -stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== dependencies: escape-string-regexp "^2.0.0" @@ -23693,10 +23881,10 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== throttle-debounce@^3.0.1: version "3.0.1" @@ -24709,10 +24897,10 @@ v8-compile-cache@^2.0.3: resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -v8-to-istanbul@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" - integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -24903,7 +25091,7 @@ walk-up-path@^1.0.0: resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== -walker@^1.0.7, walker@~1.0.5: +walker@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= @@ -25520,7 +25708,7 @@ yargs-parser@^3.2.0: camelcase "^3.0.0" lodash.assign "^4.1.0" -yargs@^15.1.0, yargs@^15.3.1, yargs@^15.4.1: +yargs@^15.1.0, yargs@^15.3.1: version "15.4.1" resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== From 069d69290cca9a442c360d5f52de2297457c02aa Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 30 Jan 2022 21:26:50 +0100 Subject: [PATCH 358/410] tech-radar: fix tests to work with @testing-library/react 12 Signed-off-by: Patrik Oldsberg --- .../src/components/RadarComponent.test.tsx | 4 ++-- .../tech-radar/src/components/RadarPage.test.tsx | 16 ++++++---------- .../tech-radar/src/utils/polyfills/getBBox.ts | 1 + 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/plugins/tech-radar/src/components/RadarComponent.test.tsx b/plugins/tech-radar/src/components/RadarComponent.test.tsx index 38d289cf1e..6b8bd944b8 100644 --- a/plugins/tech-radar/src/components/RadarComponent.test.tsx +++ b/plugins/tech-radar/src/components/RadarComponent.test.tsx @@ -51,7 +51,7 @@ describe('RadarComponent', () => { jest.useFakeTimers(); const errorApi = { post: () => {} }; - const { getByTestId, queryByTestId } = render( + const { getByTestId, findByTestId } = render( { }); expect(getByTestId('progress')).toBeInTheDocument(); - await waitFor(() => queryByTestId('tech-radar-svg')); + await findByTestId('tech-radar-svg'); jest.useRealTimers(); }); diff --git a/plugins/tech-radar/src/components/RadarPage.test.tsx b/plugins/tech-radar/src/components/RadarPage.test.tsx index 490a61ee76..c0ebde17c8 100644 --- a/plugins/tech-radar/src/components/RadarPage.test.tsx +++ b/plugins/tech-radar/src/components/RadarPage.test.tsx @@ -59,7 +59,7 @@ describe('RadarPage', () => { svgProps: { 'data-testid': 'tech-radar-svg' }, }; - const { getByTestId, queryByTestId } = render( + const { getByTestId, findByTestId } = render( wrapInTestApp( @@ -74,7 +74,7 @@ describe('RadarPage', () => { }); expect(getByTestId('progress')).toBeInTheDocument(); - await waitFor(() => queryByTestId('tech-radar-svg')); + await findByTestId('tech-radar-svg'); jest.useRealTimers(); }); @@ -86,7 +86,7 @@ describe('RadarPage', () => { }; jest.spyOn(mockClient, 'load'); - const { getByText, getByTestId } = await renderInTestApp( + const { getByText, findByTestId } = await renderInTestApp( @@ -94,12 +94,10 @@ describe('RadarPage', () => { , ); - await waitFor(() => getByTestId('tech-radar-svg')); - + await expect(findByTestId('tech-radar-svg')).resolves.toBeInTheDocument(); expect( getByText('Pick the recommended technologies for your projects'), ).toBeInTheDocument(); - expect(getByTestId('tech-radar-svg')).toBeInTheDocument(); expect(mockClient.load).toBeCalledWith(undefined); }); @@ -112,7 +110,7 @@ describe('RadarPage', () => { }; jest.spyOn(mockClient, 'load'); - const { getByTestId } = await renderInTestApp( + const { findByTestId } = await renderInTestApp( @@ -120,9 +118,7 @@ describe('RadarPage', () => { , ); - await waitFor(() => getByTestId('tech-radar-svg')); - - expect(getByTestId('tech-radar-svg')).toBeInTheDocument(); + await expect(findByTestId('tech-radar-svg')).resolves.toBeInTheDocument(); expect(mockClient.load).toBeCalledWith('myId'); }); diff --git a/plugins/tech-radar/src/utils/polyfills/getBBox.ts b/plugins/tech-radar/src/utils/polyfills/getBBox.ts index 7102d3d653..6e52995e80 100644 --- a/plugins/tech-radar/src/utils/polyfills/getBBox.ts +++ b/plugins/tech-radar/src/utils/polyfills/getBBox.ts @@ -34,6 +34,7 @@ class GetBBoxPolyfill { Object.defineProperty(window.Element.prototype, 'getBBox', { writable: false, + configurable: true, value: () => ({ x, y, width, height }), }); } From bae9359032d602a6405f38987b0d628112774fed Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Mon, 31 Jan 2022 02:23:59 +0100 Subject: [PATCH 359/410] backend-common: silenced and simplified void logger Signed-off-by: Patrik Oldsberg --- .changeset/strange-wasps-whisper.md | 5 +++++ packages/backend-common/src/logging/voidLogger.ts | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .changeset/strange-wasps-whisper.md diff --git a/.changeset/strange-wasps-whisper.md b/.changeset/strange-wasps-whisper.md new file mode 100644 index 0000000000..bef72e276a --- /dev/null +++ b/.changeset/strange-wasps-whisper.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +The logger returned from `getVoidLogger` is now uses a silenced console transport instead. diff --git a/packages/backend-common/src/logging/voidLogger.ts b/packages/backend-common/src/logging/voidLogger.ts index eb9993fe7f..79077f5c96 100644 --- a/packages/backend-common/src/logging/voidLogger.ts +++ b/packages/backend-common/src/logging/voidLogger.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { PassThrough } from 'stream'; import * as winston from 'winston'; /** @@ -24,6 +23,6 @@ import * as winston from 'winston'; */ export function getVoidLogger(): winston.Logger { return winston.createLogger({ - transports: [new winston.transports.Stream({ stream: new PassThrough() })], + transports: [new winston.transports.Console({ silent: true })], }); } From 6f3ef325a820afc50db8defcebc96f98711b9a70 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 00:59:47 +0100 Subject: [PATCH 360/410] backend-common: update tests to work with Jest 27 Signed-off-by: Patrik Oldsberg --- packages/backend-common/src/reading/AzureUrlReader.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-common/src/reading/AzureUrlReader.test.ts b/packages/backend-common/src/reading/AzureUrlReader.test.ts index 2eb7a60095..bc088d8bc9 100644 --- a/packages/backend-common/src/reading/AzureUrlReader.test.ts +++ b/packages/backend-common/src/reading/AzureUrlReader.test.ts @@ -130,7 +130,7 @@ describe('AzureUrlReader', () => { { url: 'com/a/b/blob/master/path/to/c.yaml', config: createConfig(), - error: 'Invalid URL: com/a/b/blob/master/path/to/c.yaml', + error: 'Invalid URL', }, { url: '', From 219058fdb7861b4ae06d7ff494ed4c1744637fb2 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 10:48:15 +0100 Subject: [PATCH 361/410] shortcuts: update test to work with jest 27 Signed-off-by: Patrik Oldsberg --- .../src/api/LocalStoredShortcuts.test.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/plugins/shortcuts/src/api/LocalStoredShortcuts.test.ts b/plugins/shortcuts/src/api/LocalStoredShortcuts.test.ts index a1f7d04d3b..c8401e8b1a 100644 --- a/plugins/shortcuts/src/api/LocalStoredShortcuts.test.ts +++ b/plugins/shortcuts/src/api/LocalStoredShortcuts.test.ts @@ -21,19 +21,22 @@ import { LocalStoredShortcuts } from './LocalStoredShortcuts'; import { ShortcutApi } from './ShortcutApi'; describe('LocalStoredShortcuts', () => { - // eslint-disable-next-line jest/no-done-callback - it('should observe shortcuts', async done => { + it('should observe shortcuts', async () => { const shortcutApi: ShortcutApi = new LocalStoredShortcuts( MockStorageApi.create(), ); const shortcut: Shortcut = { id: 'id', title: 'title', url: '/url' }; await shortcutApi.add(shortcut); - shortcutApi.shortcut$().subscribe(data => { - expect(data).toEqual( - expect.arrayContaining([{ ...shortcut, id: expect.anything() }]), - ); - done(); + + await new Promise(resolve => { + const subscription = shortcutApi.shortcut$().subscribe(data => { + expect(data).toEqual( + expect.arrayContaining([{ ...shortcut, id: expect.anything() }]), + ); + subscription.unsubscribe(); + resolve(); + }); }); }); From 364bb0da0322a3ae44fd606e3b34a88eaa6a75c1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 11:09:48 +0100 Subject: [PATCH 362/410] analytics-module-ga: make tests work with Jest 27 Signed-off-by: Patrik Oldsberg --- .../AnalyticsApi/GoogleAnalytics.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/analytics-module-ga/src/apis/implementations/AnalyticsApi/GoogleAnalytics.test.ts b/plugins/analytics-module-ga/src/apis/implementations/AnalyticsApi/GoogleAnalytics.test.ts index a4f7195fec..8a5182534d 100644 --- a/plugins/analytics-module-ga/src/apis/implementations/AnalyticsApi/GoogleAnalytics.test.ts +++ b/plugins/analytics-module-ga/src/apis/implementations/AnalyticsApi/GoogleAnalytics.test.ts @@ -220,7 +220,7 @@ describe('GoogleAnalytics', () => { }); // Wait for any/all promises involved to settle. - await new Promise(resolve => setImmediate(resolve)); + await new Promise(resolve => setTimeout(resolve)); // A pageview should have been fired immediately. const [command, data] = ReactGA.testModeAPI.calls[1]; @@ -251,7 +251,7 @@ describe('GoogleAnalytics', () => { }); // Wait for any/all promises involved to settle. - await new Promise(resolve => setImmediate(resolve)); + await new Promise(resolve => setTimeout(resolve)); // A pageview should have been fired immediately. const [command, data] = ReactGA.testModeAPI.calls[1]; @@ -290,7 +290,7 @@ describe('GoogleAnalytics', () => { }); // Wait for any/all promises involved to settle. - await new Promise(resolve => setImmediate(resolve)); + await new Promise(resolve => setTimeout(resolve)); // User ID should have been set after the pageview. const [setCommand, setData] = ReactGA.testModeAPI.calls[2]; @@ -318,7 +318,7 @@ describe('GoogleAnalytics', () => { }); // Wait for any/all promises involved to settle. - await new Promise(resolve => setImmediate(resolve)); + await new Promise(resolve => setTimeout(resolve)); // A pageview should have been fired immediately. const [command, data] = ReactGA.testModeAPI.calls[1]; @@ -369,7 +369,7 @@ describe('GoogleAnalytics', () => { }); // Wait for any/all promises involved to settle. - await new Promise(resolve => setImmediate(resolve)); + await new Promise(resolve => setTimeout(resolve)); // User ID should have been set first. const [setCommand, setData] = ReactGA.testModeAPI.calls[1]; From 850e0ebbe347e79183ab929cc2bc67736e9d1b01 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 23 Mar 2022 14:01:35 +0100 Subject: [PATCH 363/410] search-backend-node: update runPeriodically test to work with jest 27 Signed-off-by: Patrik Oldsberg --- plugins/search-backend-node/src/runPeriodically.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/search-backend-node/src/runPeriodically.test.ts b/plugins/search-backend-node/src/runPeriodically.test.ts index 4d8e991b9e..0f2ee44b8d 100644 --- a/plugins/search-backend-node/src/runPeriodically.test.ts +++ b/plugins/search-backend-node/src/runPeriodically.test.ts @@ -18,7 +18,11 @@ import { runPeriodically } from './runPeriodically'; jest.useFakeTimers(); describe('runPeriodically', () => { - const flushPromises = () => new Promise(setImmediate); + const flushPromises = async () => { + const promise = new Promise(resolve => process.nextTick(resolve)); + jest.runAllTicks(); + await promise; + }; const advanceTimersByTime = async (time: number) => { jest.advanceTimersByTime(time); // Advancing the time with jest doesn't run all promises, but only sync code From 89daaa3508460c9e3c7fe11af1c956e2a19b92e9 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 00:11:24 +0100 Subject: [PATCH 364/410] kubernetes-backend: fix Jest 27 test incompatibility Signed-off-by: Patrik Oldsberg --- plugins/kubernetes-backend/package.json | 3 +-- .../AwsIamKubernetesAuthTranslator.test.ts | 23 +++++++++++-------- yarn.lock | 5 ---- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 22e88b9609..9682d879b4 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -61,8 +61,7 @@ "@backstage/cli": "^0.16.1-next.0", "@types/aws4": "^1.5.1", "supertest": "^6.1.3", - "aws-sdk-mock": "^5.2.1", - "bdd-lazy-var": "^2.6.0" + "aws-sdk-mock": "^5.2.1" }, "files": [ "dist", diff --git a/plugins/kubernetes-backend/src/kubernetes-auth-translator/AwsIamKubernetesAuthTranslator.test.ts b/plugins/kubernetes-backend/src/kubernetes-auth-translator/AwsIamKubernetesAuthTranslator.test.ts index 7806160e58..2696587e69 100644 --- a/plugins/kubernetes-backend/src/kubernetes-auth-translator/AwsIamKubernetesAuthTranslator.test.ts +++ b/plugins/kubernetes-backend/src/kubernetes-auth-translator/AwsIamKubernetesAuthTranslator.test.ts @@ -16,7 +16,6 @@ import AWS from 'aws-sdk'; import AWSMock from 'aws-sdk-mock'; import { AwsIamKubernetesAuthTranslator } from './AwsIamKubernetesAuthTranslator'; -import { get, def } from 'bdd-lazy-var'; describe('AwsIamKubernetesAuthTranslator tests', () => { let role: any = undefined; @@ -48,7 +47,7 @@ describe('AwsIamKubernetesAuthTranslator tests', () => { jest.resetAllMocks(); }); - def('subject', () => { + function executeTranslation() { AWSMock.mock('STS', 'assumeRole', (_params: any, callback: Function) => { callback(null, assumeResponse); }); @@ -71,7 +70,7 @@ describe('AwsIamKubernetesAuthTranslator tests', () => { mockedCredentials = undefined; return response; - }); + } it('returns a signed url for AWS credentials', async () => { // These credentials are not real. @@ -81,8 +80,8 @@ describe('AwsIamKubernetesAuthTranslator tests', () => { 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', ); - const subject = await get('subject'); - expect(subject.serviceAccountToken).toBeDefined(); + const response = await executeTranslation(); + expect(response.serviceAccountToken).toBeDefined(); }); describe('When the role is assumed', () => { @@ -96,15 +95,17 @@ describe('AwsIamKubernetesAuthTranslator tests', () => { describe('When the role is valid', () => { it('returns a signed url for AWS credentials', async () => { - const subject = await get('subject'); - expect(subject.serviceAccountToken).toBeDefined(); + const response = await executeTranslation(); + expect(response.serviceAccountToken).toBeDefined(); }); }); describe('When the role is invalid', () => { it('returns the original AWS credentials', async () => { assumeResponse = undefined; - await expect(get('subject')).rejects.toThrow(/Unable to assume role:/); + await expect(executeTranslation()).rejects.toThrow( + /Unable to assume role:/, + ); }); }); }); @@ -112,7 +113,9 @@ describe('AwsIamKubernetesAuthTranslator tests', () => { describe('When no AWS creds are available', () => { it('throws unable to get AWS credentials', async () => { mockedCredentials = new Error(); - await expect(get('subject')).rejects.toThrow('No AWS credentials found.'); + await expect(executeTranslation()).rejects.toThrow( + 'No AWS credentials found.', + ); }); }); @@ -123,7 +126,7 @@ describe('AwsIamKubernetesAuthTranslator tests', () => { 'AKIAIOSFODNN7EXAMPLE', undefinedSecret, ); - await expect(get('subject')).rejects.toThrow( + await expect(executeTranslation()).rejects.toThrow( 'Invalid AWS credentials found.', ); }); diff --git a/yarn.lock b/yarn.lock index e6b1a65863..f9656214a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8367,11 +8367,6 @@ bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2: dependencies: tweetnacl "^0.14.3" -bdd-lazy-var@^2.6.0: - version "2.6.1" - resolved "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz#ca03fb36d68c5a507c0ba9a4d53160b899e6b7cb" - integrity sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A== - before-after-hook@^2.1.0, before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" From 14e3bacfd4941c9730796bccf9fa1b83f80fc8ce Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 10:10:41 +0100 Subject: [PATCH 365/410] backend-tasks: update tests to work with Jest 27 Signed-off-by: Patrik Oldsberg --- .../src/tasks/PluginTaskSchedulerImpl.test.ts | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts index 95a9729018..11a54b9a39 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts @@ -17,10 +17,10 @@ import { getVoidLogger } from '@backstage/backend-common'; import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; import { Duration } from 'luxon'; -import waitForExpect from 'wait-for-expect'; import { migrateBackendTasks } from '../database/migrateBackendTasks'; import { PluginTaskSchedulerImpl } from './PluginTaskSchedulerImpl'; import { ConflictError, NotFoundError } from '@backstage/errors'; +import { AbortSignal } from 'node-abort-controller'; jest.useFakeTimers(); @@ -48,6 +48,7 @@ describe('PluginTaskManagerImpl', () => { const { manager } = await init(databaseId); const fn = jest.fn(); + const promise = new Promise(resolve => fn.mockImplementation(resolve)); await manager.scheduleTask({ id: 'task1', timeout: Duration.fromMillis(5000), @@ -55,9 +56,8 @@ describe('PluginTaskManagerImpl', () => { fn, }); - await waitForExpect(() => { - expect(fn).toBeCalled(); - }); + await promise; + expect(fn).toHaveBeenCalledWith(expect.any(AbortSignal)); }, 60_000, ); @@ -68,6 +68,7 @@ describe('PluginTaskManagerImpl', () => { const { manager } = await init(databaseId); const fn = jest.fn(); + const promise = new Promise(resolve => fn.mockImplementation(resolve)); await manager.scheduleTask({ id: 'task2', timeout: Duration.fromMillis(5000), @@ -75,9 +76,8 @@ describe('PluginTaskManagerImpl', () => { fn, }); - await waitForExpect(() => { - expect(fn).toBeCalled(); - }); + await promise; + expect(fn).toHaveBeenCalledWith(expect.any(AbortSignal)); }, 60_000, ); @@ -90,6 +90,7 @@ describe('PluginTaskManagerImpl', () => { const { manager } = await init(databaseId); const fn = jest.fn(); + const promise = new Promise(resolve => fn.mockImplementation(resolve)); await manager.scheduleTask({ id: 'task1', timeout: Duration.fromMillis(5000), @@ -101,9 +102,8 @@ describe('PluginTaskManagerImpl', () => { await manager.triggerTask('task1'); jest.advanceTimersByTime(5000); - await waitForExpect(() => { - expect(fn).toBeCalled(); - }); + await promise; + expect(fn).toHaveBeenCalledWith(expect.any(AbortSignal)); }, 60_000, ); @@ -158,6 +158,7 @@ describe('PluginTaskManagerImpl', () => { const { manager } = await init(databaseId); const fn = jest.fn(); + const promise = new Promise(resolve => fn.mockImplementation(resolve)); await manager .createScheduledTaskRunner({ timeout: Duration.fromMillis(5000), @@ -168,9 +169,8 @@ describe('PluginTaskManagerImpl', () => { fn, }); - await waitForExpect(() => { - expect(fn).toBeCalled(); - }); + await promise; + expect(fn).toHaveBeenCalledWith(expect.any(AbortSignal)); }, 60_000, ); From 13d3f49793a577f82cc98df37054630f8795349c Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 10:18:21 +0100 Subject: [PATCH 366/410] auth-backend: update FirestoreKeyStore tests to work with Jest 27 Signed-off-by: Patrik Oldsberg --- .../auth-backend/src/identity/FirestoreKeyStore.test.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/auth-backend/src/identity/FirestoreKeyStore.test.ts b/plugins/auth-backend/src/identity/FirestoreKeyStore.test.ts index a7192ed4ab..6a3ce87f82 100644 --- a/plugins/auth-backend/src/identity/FirestoreKeyStore.test.ts +++ b/plugins/auth-backend/src/identity/FirestoreKeyStore.test.ts @@ -44,6 +44,8 @@ jest.mock('@google-cloud/firestore', () => ({ Firestore: jest.fn().mockImplementation(() => firestoreMock), })); +jest.useFakeTimers('legacy'); + describe('FirestoreKeyStore', () => { const key = { kid: '123', @@ -69,11 +71,6 @@ describe('FirestoreKeyStore', () => { beforeEach(() => { jest.clearAllMocks(); - jest.useFakeTimers(); - }); - - afterEach(() => { - jest.useRealTimers(); }); it('can create an instance without settings', async () => { From 0041b2ec26e3b8fc2eecb5d258456dfebf059094 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 10:19:24 +0100 Subject: [PATCH 367/410] tech-insights-backend: update FactRetrieverEngine tests to work with Jest 27 Signed-off-by: Patrik Oldsberg --- .../src/service/fact/FactRetrieverEngine.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts index 1881606ede..a1b4ee1c82 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts @@ -28,7 +28,7 @@ import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; import { TaskScheduler } from '@backstage/backend-tasks'; import waitForExpect from 'wait-for-expect'; -jest.useFakeTimers(); +jest.useFakeTimers('legacy'); const testFactRetriever: FactRetriever = { id: 'test_factretriever', @@ -145,7 +145,7 @@ describe('FactRetrieverEngine', () => { } it.each(databases.eachSupportedId())( - 'Should update fact retriever schemas on initialization', + 'Should update fact retriever schemas on initialization with %s', async databaseId => { const schemaAssertionCallback = jest.fn((def: FactSchemaDefinition) => { expect(def.id).toEqual('test_factretriever'); @@ -170,7 +170,7 @@ describe('FactRetrieverEngine', () => { ); it.each(databases.eachSupportedId())( - 'Should insert facts when scheduled step is run', + 'Should insert facts when scheduled step is run with %s', async databaseId => { function insertCallback({ facts, From 231d24d5aa2dccdb8bfa5bf4c0778ae9aa153b08 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 12:16:36 +0100 Subject: [PATCH 368/410] backend-tasks: fix TaskWorker retry test Signed-off-by: Patrik Oldsberg --- .../backend-tasks/src/tasks/TaskWorker.test.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/backend-tasks/src/tasks/TaskWorker.test.ts b/packages/backend-tasks/src/tasks/TaskWorker.test.ts index 793e679c39..4cdd3e973e 100644 --- a/packages/backend-tasks/src/tasks/TaskWorker.test.ts +++ b/packages/backend-tasks/src/tasks/TaskWorker.test.ts @@ -22,6 +22,7 @@ import { migrateBackendTasks } from '../database/migrateBackendTasks'; import { DbTasksRow, DB_TASKS_TABLE } from '../database/tables'; import { TaskWorker } from './TaskWorker'; import { TaskSettingsV2 } from './types'; +import { AbortSignal } from 'node-abort-controller'; describe('TaskWorker', () => { const logger = getVoidLogger(); @@ -124,7 +125,15 @@ describe('TaskWorker', () => { const knex = await databases.init(databaseId); await migrateBackendTasks(knex); - const fn = jest.fn().mockRejectedValue(new Error('failed')); + const fn = jest.fn(); + const promise = new Promise(resolve => { + fn.mockImplementation(() => { + if (fn.mock.calls.length === 3) { + resolve(); + } + throw new Error('failed'); + }); + }); const settings: TaskSettingsV2 = { version: 2, initialDelayDuration: undefined, @@ -135,9 +144,9 @@ describe('TaskWorker', () => { const worker = new TaskWorker('task1', fn, knex, logger); worker.start(settings); - waitForExpect(() => { - expect(fn).toBeCalledTimes(3); - }); + await promise; + expect(fn).toBeCalledTimes(3); + expect(fn).toBeCalledWith(expect.any(AbortSignal)); }, 60_000, ); From af67adafed0538af7f8e8e8ff25cffab7c6a5265 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 12:59:49 +0100 Subject: [PATCH 369/410] cli: update package role environment mapping in jest config Signed-off-by: Patrik Oldsberg --- packages/cli/config/jest.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 5cda03c199..6618790a72 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -39,18 +39,18 @@ const transformIgnorePattern = [ // Provides additional config that's based on the role of the target package function getRoleConfig(role) { switch (role) { - case 'app': + case 'frontend': case 'web-library': case 'common-library': - case 'plugin-frontend': - case 'plugin-frontend-module': + case 'frontend-plugin': + case 'frontend-plugin-module': default: return { testEnvironment: 'jsdom' }; case 'cli': case 'backend': case 'node-library': - case 'plugin-backend': - case 'plugin-backend-module': + case 'backend-plugin': + case 'backend-plugin-module': return { testEnvironment: 'node' }; } } From 45f22fa5aa91504d228439fbea1490704cf89f5a Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 13:00:15 +0100 Subject: [PATCH 370/410] cli: bump jest a little bit further Signed-off-by: Patrik Oldsberg --- packages/cli/package.json | 2 +- yarn.lock | 743 ++++++++++++++++++-------------------- 2 files changed, 358 insertions(+), 387 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index fb6eff9a49..a2ef979218 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -85,7 +85,7 @@ "handlebars": "^4.7.3", "html-webpack-plugin": "^5.3.1", "inquirer": "^8.2.0", - "jest": "^27.4.7", + "jest": "^27.5.1", "jest-css-modules": "^2.1.0", "jest-transform-yaml": "^1.0.0", "json-schema": "^0.4.0", diff --git a/yarn.lock b/yarn.lock index f9656214a0..237b8356ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2896,158 +2896,158 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz#0742e6787f682b22bdad56f9db2a8a77f6a86107" - integrity sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA== +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.4.6" - jest-util "^27.4.2" + jest-message-util "^27.5.1" + jest-util "^27.5.1" slash "^3.0.0" -"@jest/core@^27.4.7": - version "27.4.7" - resolved "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz#84eabdf42a25f1fa138272ed229bcf0a1b5e6913" - integrity sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg== +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== dependencies: - "@jest/console" "^27.4.6" - "@jest/reporters" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.8.1" exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^27.4.2" - jest-config "^27.4.7" - jest-haste-map "^27.4.6" - jest-message-util "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-resolve-dependencies "^27.4.6" - jest-runner "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - jest-validate "^27.4.6" - jest-watcher "^27.4.6" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" micromatch "^4.0.4" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz#1e92885d64f48c8454df35ed9779fbcf31c56d8b" - integrity sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg== +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.4.6" + jest-mock "^27.5.1" -"@jest/fake-timers@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz#e026ae1671316dbd04a56945be2fa251204324e8" - integrity sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A== +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^27.4.6" - jest-mock "^27.4.6" - jest-util "^27.4.2" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" -"@jest/globals@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz#3f09bed64b0fd7f5f996920258bd4be8f52f060a" - integrity sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw== +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: - "@jest/environment" "^27.4.6" - "@jest/types" "^27.4.2" - expect "^27.4.6" + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" -"@jest/reporters@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz#b53dec3a93baf9b00826abf95b932de919d6d8dd" - integrity sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ== +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-haste-map "^27.4.6" - jest-resolve "^27.4.6" - jest-util "^27.4.2" - jest-worker "^27.4.6" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" v8-to-istanbul "^8.1.0" -"@jest/source-map@^27.4.0": - version "27.4.0" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz#2f0385d0d884fb3e2554e8f71f8fa957af9a74b6" - integrity sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ== +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: callsites "^3.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" source-map "^0.6.0" -"@jest/test-result@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz#b3df94c3d899c040f602cea296979844f61bdf69" - integrity sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ== +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: - "@jest/console" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz#447339b8a3d7b5436f50934df30854e442a9d904" - integrity sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw== +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== dependencies: - "@jest/test-result" "^27.4.6" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" - jest-runtime "^27.4.6" + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" -"@jest/transform@^27.4.6": - version "27.4.6" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz#153621940b1ed500305eacdb31105d415dc30231" - integrity sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw== +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" - jest-regex-util "^27.4.0" - jest-util "^27.4.2" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -3076,7 +3076,7 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^27.4.2", "@jest/types@^27.5.1": +"@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== @@ -8133,18 +8133,18 @@ babel-core@^7.0.0-bridge.0: resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-jest@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz#4d024e69e241cdf4f396e453a07100f44f7ce314" - integrity sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg== +babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== dependencies: - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.4.0" + babel-preset-jest "^27.5.1" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" slash "^3.0.0" babel-plugin-dynamic-import-node@^2.3.3: @@ -8165,10 +8165,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz#d7831fc0f93573788d80dee7e682482da4c730d6" - integrity sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw== +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -8264,12 +8264,12 @@ babel-preset-fbjs@^3.4.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -babel-preset-jest@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca" - integrity sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg== +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== dependencies: - babel-plugin-jest-hoist "^27.4.0" + babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.26.0: @@ -11081,7 +11081,7 @@ diff-sequences@^26.6.2: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diff-sequences@^27.4.0, diff-sequences@^27.5.1: +diff-sequences@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== @@ -12325,7 +12325,7 @@ expand-template@^2.0.3: resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expect@^27.4.6: +expect@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== @@ -15271,85 +15271,87 @@ jenkins@^0.28.1: dependencies: papi "^0.29.0" -jest-changed-files@^27.4.2: - version "27.4.2" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5" - integrity sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A== +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz#d3af34c0eb742a967b1919fbb351430727bcea6c" - integrity sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ== +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: - "@jest/environment" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.4.6" + expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - pretty-format "^27.4.6" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.4.7: - version "27.4.7" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz#d00e759e55d77b3bcfea0715f527c394ca314e5a" - integrity sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw== +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== dependencies: - "@jest/core" "^27.4.7" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.4.7" - jest-util "^27.4.2" - jest-validate "^27.4.6" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" prompts "^2.0.1" yargs "^16.2.0" -jest-config@^27.4.7: - version "27.4.7" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz#4f084b2acbd172c8b43aa4cdffe75d89378d3972" - integrity sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw== +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.4.6" - "@jest/types" "^27.4.2" - babel-jest "^27.4.6" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" - graceful-fs "^4.2.4" - jest-circus "^27.4.6" - jest-environment-jsdom "^27.4.6" - jest-environment-node "^27.4.6" - jest-get-type "^27.4.0" - jest-jasmine2 "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-runner "^27.4.6" - jest-util "^27.4.2" - jest-validate "^27.4.6" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" micromatch "^4.0.4" - pretty-format "^27.4.6" + parse-json "^5.2.0" + pretty-format "^27.5.1" slash "^3.0.0" + strip-json-comments "^3.1.1" jest-css-modules@^2.1.0: version "2.1.0" @@ -15368,16 +15370,6 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz#93815774d2012a2cbb6cf23f84d48c7a2618f98d" - integrity sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.4.0" - jest-get-type "^27.4.0" - pretty-format "^27.4.6" - jest-diff@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" @@ -15388,124 +15380,109 @@ jest-diff@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-docblock@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz#06c78035ca93cbbb84faf8fce64deae79a59f69f" - integrity sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg== +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: detect-newline "^3.0.0" -jest-each@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz#e7e8561be61d8cc6dbf04296688747ab186c40ff" - integrity sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA== +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" chalk "^4.0.0" - jest-get-type "^27.4.0" - jest-util "^27.4.2" - pretty-format "^27.4.6" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" -jest-environment-jsdom@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz#c23a394eb445b33621dfae9c09e4c8021dea7b36" - integrity sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA== +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.4.6" - jest-util "^27.4.2" + jest-mock "^27.5.1" + jest-util "^27.5.1" jsdom "^16.6.0" -jest-environment-node@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz#ee8cd4ef458a0ef09d087c8cd52ca5856df90242" - integrity sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ== +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" - jest-mock "^27.4.6" - jest-util "^27.4.2" + jest-mock "^27.5.1" + jest-util "^27.5.1" jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-get-type@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5" - integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ== - jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -jest-haste-map@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz#c60b5233a34ca0520f325b7e2cc0a0140ad0862a" - integrity sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ== +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^27.4.0" - jest-serializer "^27.4.0" - jest-util "^27.4.2" - jest-worker "^27.4.6" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz#109e8bc036cb455950ae28a018f983f2abe50127" - integrity sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw== +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== dependencies: - "@jest/environment" "^27.4.6" - "@jest/source-map" "^27.4.0" - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^27.4.6" + expect "^27.5.1" is-generator-fn "^2.0.0" - jest-each "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-runtime "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" - pretty-format "^27.4.6" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" throat "^6.0.1" -jest-leak-detector@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz#ed9bc3ce514b4c582637088d9faf58a33bd59bf4" - integrity sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA== +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== dependencies: - jest-get-type "^27.4.0" - pretty-format "^27.4.6" - -jest-matcher-utils@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz#53ca7f7b58170638590e946f5363b988775509b8" - integrity sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA== - dependencies: - chalk "^4.0.0" - jest-diff "^27.4.6" - jest-get-type "^27.4.0" - pretty-format "^27.4.6" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" jest-matcher-utils@^27.5.1: version "27.5.1" @@ -15517,21 +15494,6 @@ jest-matcher-utils@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-message-util@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz#9fdde41a33820ded3127465e1a5896061524da31" - integrity sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.4.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - pretty-format "^27.4.6" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-message-util@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" @@ -15547,12 +15509,12 @@ jest-message-util@^27.5.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz#77d1ba87fbd33ccb8ef1f061697e7341b7635195" - integrity sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw== +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -15560,126 +15522,125 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca" - integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg== +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== -jest-resolve-dependencies@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz#fc50ee56a67d2c2183063f6a500cc4042b5e2327" - integrity sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw== +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== dependencies: - "@jest/types" "^27.4.2" - jest-regex-util "^27.4.0" - jest-snapshot "^27.4.6" + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" -jest-resolve@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz#2ec3110655e86d5bfcfa992e404e22f96b0b5977" - integrity sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw== +jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" jest-pnp-resolver "^1.2.2" - jest-util "^27.4.2" - jest-validate "^27.4.6" + jest-util "^27.5.1" + jest-validate "^27.5.1" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz#1d390d276ec417e9b4d0d081783584cbc3e24773" - integrity sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg== +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: - "@jest/console" "^27.4.6" - "@jest/environment" "^27.4.6" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-docblock "^27.4.0" - jest-environment-jsdom "^27.4.6" - jest-environment-node "^27.4.6" - jest-haste-map "^27.4.6" - jest-leak-detector "^27.4.6" - jest-message-util "^27.4.6" - jest-resolve "^27.4.6" - jest-runtime "^27.4.6" - jest-util "^27.4.2" - jest-worker "^27.4.6" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" source-map-support "^0.5.6" throat "^6.0.1" -jest-runtime@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz#83ae923818e3ea04463b22f3597f017bb5a1cffa" - integrity sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ== +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== dependencies: - "@jest/environment" "^27.4.6" - "@jest/fake-timers" "^27.4.6" - "@jest/globals" "^27.4.6" - "@jest/source-map" "^27.4.0" - "@jest/test-result" "^27.4.6" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" execa "^5.0.0" glob "^7.1.3" - graceful-fs "^4.2.4" - jest-haste-map "^27.4.6" - jest-message-util "^27.4.6" - jest-mock "^27.4.6" - jest-regex-util "^27.4.0" - jest-resolve "^27.4.6" - jest-snapshot "^27.4.6" - jest-util "^27.4.2" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.4.0: - version "27.4.0" - resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a" - integrity sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ== +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" -jest-snapshot@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz#e2a3b4fff8bdce3033f2373b2e525d8b6871f616" - integrity sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ== +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.4.6" - graceful-fs "^4.2.4" - jest-diff "^27.4.6" - jest-get-type "^27.4.0" - jest-haste-map "^27.4.6" - jest-matcher-utils "^27.4.6" - jest-message-util "^27.4.6" - jest-util "^27.4.2" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" natural-compare "^1.4.0" - pretty-format "^27.4.6" + pretty-format "^27.5.1" semver "^7.3.2" jest-transform-yaml@^1.0.0: @@ -15689,41 +15650,41 @@ jest-transform-yaml@^1.0.0: dependencies: js-yaml "4.1.0" -jest-util@^27.4.2: - version "27.4.2" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz#ed95b05b1adfd761e2cda47e0144c6a58e05a621" - integrity sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA== +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz#efc000acc4697b6cf4fa68c7f3f324c92d0c4f1f" - integrity sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ== +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: - "@jest/types" "^27.4.2" + "@jest/types" "^27.5.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.4.0" + jest-get-type "^27.5.1" leven "^3.1.0" - pretty-format "^27.4.6" + pretty-format "^27.5.1" -jest-watcher@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz#673679ebeffdd3f94338c24f399b85efc932272d" - integrity sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw== +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== dependencies: - "@jest/test-result" "^27.4.6" - "@jest/types" "^27.4.2" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.4.2" + jest-util "^27.5.1" string-length "^4.0.1" jest-when@^3.1.0: @@ -15731,7 +15692,7 @@ jest-when@^3.1.0: resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.1.tgz#33ab6f923661cf878cd08fe9df64b507934603db" integrity sha512-o+HiaIVCg1IC95sMDKHU9G5v5N5l3UHqXvJpf0PgAMThZeQo4Hf5Sgoj+wpCBRGg4/KtzSAZZZEKNiLqE0i4eQ== -jest-worker@^27.3.1, jest-worker@^27.4.1, jest-worker@^27.4.6: +jest-worker@^27.3.1, jest-worker@^27.4.1: version "27.4.6" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== @@ -15740,14 +15701,23 @@ jest-worker@^27.3.1, jest-worker@^27.4.1, jest-worker@^27.4.6: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.4.7: - version "27.4.7" - resolved "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz#87f74b9026a1592f2da05b4d258e57505f28eca4" - integrity sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg== +jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: - "@jest/core" "^27.4.7" + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" import-local "^3.0.2" - jest-cli "^27.4.7" + jest-cli "^27.5.1" jimp@^0.10.3: version "0.10.3" @@ -19480,6 +19450,16 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + parse-package-name@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/parse-package-name/-/parse-package-name-0.1.0.tgz#3f44dd838feb4c2be4bf318bae4477d7706bade4" @@ -20421,15 +20401,6 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^27.4.6: - version "27.4.6" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz#1b784d2f53c68db31797b2348fa39b49e31846b7" - integrity sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" From e9530e06b6c3764370b700838b5174f19cc83f67 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 13:09:16 +0100 Subject: [PATCH 371/410] tech-insights-backend: fix test database setup Signed-off-by: Patrik Oldsberg --- .../src/service/persistence/TechInsightsDatabase.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.test.ts b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.test.ts index 0b81ad490f..c69432d070 100644 --- a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.test.ts +++ b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.test.ts @@ -116,10 +116,11 @@ const additionalFacts = [ ]; describe('Tech Insights database', () => { + const databases = TestDatabases.create(); let store: TechInsightsStore; let testDbClient: Knex; beforeAll(async () => { - testDbClient = await TestDatabases.create().init('SQLITE_3'); + testDbClient = await databases.init('SQLITE_3'); store = ( await initializePersistenceContext(testDbClient, { From 9e1efd4d99e9213ce5458ccc1b3d83d1cd0ef2a0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 13:17:33 +0100 Subject: [PATCH 372/410] scaffolder-backend: update tests to work with Jest 27 Signed-off-by: Patrik Oldsberg --- .../src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 3 +++ .../src/scaffolder/tasks/StorageTaskBroker.test.ts | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 61df2a167d..0ef0846ddb 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -25,6 +25,9 @@ import { ConfigReader } from '@backstage/config'; import { TaskContext, TaskSecrets } from './types'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; +// The Stream module is lazy loaded, so make sure it's in the module cache before mocking fs +void winston.transports.Stream; + const realFiles = Object.fromEntries( [ resolvePackagePath( diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index 4cac2206fb..bb375e5a0f 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -187,7 +187,7 @@ describe('StorageTaskBroker', () => { .mockRejectedValue(new Error('nah m8')); const intervalId = setInterval(() => { - broker.vacuumTasks({ timeoutS: 2 }).catch(fail); + broker.vacuumTasks({ timeoutS: 2 }); }, 500); for (;;) { From e2cfd5384712707131fa0f41953b4ec0564853a0 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 13:17:59 +0100 Subject: [PATCH 373/410] techdocs: update client test to work with jsdom environment Signed-off-by: Patrik Oldsberg --- plugins/techdocs/src/client.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/techdocs/src/client.test.ts b/plugins/techdocs/src/client.test.ts index 71ad57d12a..8236b93c55 100644 --- a/plugins/techdocs/src/client.test.ts +++ b/plugins/techdocs/src/client.test.ts @@ -221,7 +221,7 @@ describe('TechDocsStorageClient', () => { const promise = storageApi.syncEntityDocs(mockEntity).then(); // flush the event loop - await new Promise(setImmediate); + await new Promise(r => setTimeout(r)); const instance = MockedEventSource.mock .instances[0] as jest.Mocked; @@ -248,7 +248,7 @@ describe('TechDocsStorageClient', () => { const promise = storageApi.syncEntityDocs(mockEntity).then(); // flush the event loop - await new Promise(setImmediate); + await new Promise(r => setTimeout(r)); const instance = MockedEventSource.mock .instances[0] as jest.Mocked; From 447e87092ac9cbecd2cac80ee9b06b2c7df71f6d Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 14:07:03 +0100 Subject: [PATCH 374/410] backend-tasks: refactor TaskWorker retry test Signed-off-by: Patrik Oldsberg --- .../src/tasks/TaskWorker.test.ts | 21 +++++------------- .../backend-tasks/src/tasks/TaskWorker.ts | 22 ++++++++----------- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/packages/backend-tasks/src/tasks/TaskWorker.test.ts b/packages/backend-tasks/src/tasks/TaskWorker.test.ts index 4cdd3e973e..f235c58973 100644 --- a/packages/backend-tasks/src/tasks/TaskWorker.test.ts +++ b/packages/backend-tasks/src/tasks/TaskWorker.test.ts @@ -22,7 +22,6 @@ import { migrateBackendTasks } from '../database/migrateBackendTasks'; import { DbTasksRow, DB_TASKS_TABLE } from '../database/tables'; import { TaskWorker } from './TaskWorker'; import { TaskSettingsV2 } from './types'; -import { AbortSignal } from 'node-abort-controller'; describe('TaskWorker', () => { const logger = getVoidLogger(); @@ -125,28 +124,20 @@ describe('TaskWorker', () => { const knex = await databases.init(databaseId); await migrateBackendTasks(knex); - const fn = jest.fn(); - const promise = new Promise(resolve => { - fn.mockImplementation(() => { - if (fn.mock.calls.length === 3) { - resolve(); - } - throw new Error('failed'); - }); - }); + const fn = jest.fn().mockRejectedValue(new Error('failed')); const settings: TaskSettingsV2 = { version: 2, initialDelayDuration: undefined, cadence: '* * * * * *', timeoutAfterDuration: Duration.fromMillis(60000).toISO(), }; - - const worker = new TaskWorker('task1', fn, knex, logger); + const checkFrequency = Duration.fromObject({ milliseconds: 100 }); + const worker = new TaskWorker('task1', fn, knex, logger, checkFrequency); worker.start(settings); - await promise; - expect(fn).toBeCalledTimes(3); - expect(fn).toBeCalledWith(expect.any(AbortSignal)); + await waitForExpect(() => { + expect(fn).toBeCalledTimes(3); + }); }, 60_000, ); diff --git a/packages/backend-tasks/src/tasks/TaskWorker.ts b/packages/backend-tasks/src/tasks/TaskWorker.ts index 84f45a7fe6..edec453a69 100644 --- a/packages/backend-tasks/src/tasks/TaskWorker.ts +++ b/packages/backend-tasks/src/tasks/TaskWorker.ts @@ -24,7 +24,7 @@ import { TaskFunction, TaskSettingsV2, taskSettingsV2Schema } from './types'; import { delegateAbortController, nowPlus, sleep } from './util'; import { CronTime } from 'cron'; -const WORK_CHECK_FREQUENCY = Duration.fromObject({ seconds: 5 }); +const DEFAULT_WORK_CHECK_FREQUENCY = Duration.fromObject({ seconds: 5 }); /** * Performs the actual work of a task. @@ -32,17 +32,13 @@ const WORK_CHECK_FREQUENCY = Duration.fromObject({ seconds: 5 }); * @private */ export class TaskWorker { - private readonly taskId: string; - private readonly fn: TaskFunction; - private readonly knex: Knex; - private readonly logger: Logger; - - constructor(taskId: string, fn: TaskFunction, knex: Knex, logger: Logger) { - this.taskId = taskId; - this.fn = fn; - this.knex = knex; - this.logger = logger; - } + constructor( + private readonly taskId: string, + private readonly fn: TaskFunction, + private readonly knex: Knex, + private readonly logger: Logger, + private readonly workCheckFrequency: Duration = DEFAULT_WORK_CHECK_FREQUENCY, + ) {} async start(settings: TaskSettingsV2, options?: { signal?: AbortSignal }) { try { @@ -63,7 +59,7 @@ export class TaskWorker { break; } - await sleep(WORK_CHECK_FREQUENCY, options?.signal); + await sleep(this.workCheckFrequency, options?.signal); } this.logger.info(`Task worker finished: ${this.taskId}`); } catch (e) { From 0d81070d5803506c9566767eb9af31fcea855d76 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 14:24:23 +0100 Subject: [PATCH 375/410] catalog-backend: update PlaceholderProcessor test to work with Jest 27 Signed-off-by: Patrik Oldsberg --- .../src/modules/core/PlaceholderProcessor.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts index 7bfc66276e..adff97336e 100644 --- a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts +++ b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.test.ts @@ -345,7 +345,7 @@ describe('PlaceholderProcessor', () => { }, ), ).rejects.toThrow( - 'Placeholder $text could not form a URL out of ./a/b/catalog-info.yaml and ../c/catalog-info.yaml, TypeError: Invalid base URL: ./a/b/catalog-info.yaml', + /^Placeholder \$text could not form a URL out of \.\/a\/b\/catalog-info\.yaml and \.\.\/c\/catalog-info\.yaml, TypeError \[ERR_INVALID_URL\]/, ); expect(read).not.toBeCalled(); From aeb17a21e66e4311d7b401ece9df82a445167187 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 14:51:58 +0100 Subject: [PATCH 376/410] cli: update Jest 27 changeset + make node env default Signed-off-by: Patrik Oldsberg --- .changeset/twelve-buses-nail.md | 6 ++++-- .github/styles/vocab.txt | 1 + packages/cli/config/jest.js | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.changeset/twelve-buses-nail.md b/.changeset/twelve-buses-nail.md index 24dd6bbb0b..ddeb7f1413 100644 --- a/.changeset/twelve-buses-nail.md +++ b/.changeset/twelve-buses-nail.md @@ -2,6 +2,8 @@ '@backstage/cli': minor --- -Bump the version range of `jest` from `^26.0.1` to `^27.4.7`. You can find the complete list of breaking changes [here](https://github.com/facebook/jest/releases/tag/v27.0.0). +**BREAKING**: Bump the version range of `jest` from `^26.0.1` to `^27.5.1`. You can find the complete list of breaking changes [here](https://github.com/facebook/jest/releases/tag/v27.0.0). -One of the main breaking changes in Jest 27 is that the default test environment is now `node` rather than `jsdom`. However, this is counteracted in the default Jest configuration provided by the Backstage CLI, as it still defaults the environment to `jsdom`. The future addition of the Backstage package `"role"` field will override this default, setting the test environment to the appropriate value for the role. +We strongly recommend to have completed the [package role migration](https://backstage.io/docs/tutorials/package-role-migration) before upgrading to this version, as the package roles are used to automatically determine the testing environment for each package. If you instead want to set an explicit test environment for each package, you can do so for example in the `"jest"` section in `package.json`. The default test environment for all packages is now `node`, which is also the new Jest default. + +Note that one of the breaking changes of Jest 27 is that the `jsdom` environment no longer includes `setImmediate` and `clearImmediate`, which means you might need to update some of your frontend packages. Another notable change is that `jest.useFakeTimers` now defaults to the `'modern'` implementation, which also mocks microtasks. diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index 3910caccc6..c9382b1fd0 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -170,6 +170,7 @@ memoized microservice microservices microsite +microtasks middleware minikube Minikube diff --git a/packages/cli/config/jest.js b/packages/cli/config/jest.js index 6618790a72..6b9201559b 100644 --- a/packages/cli/config/jest.js +++ b/packages/cli/config/jest.js @@ -44,13 +44,13 @@ function getRoleConfig(role) { case 'common-library': case 'frontend-plugin': case 'frontend-plugin-module': - default: return { testEnvironment: 'jsdom' }; case 'cli': case 'backend': case 'node-library': case 'backend-plugin': case 'backend-plugin-module': + default: return { testEnvironment: 'node' }; } } From c2c9570a470f2df4c572ced1fa731d85d9fb96f3 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 24 Mar 2022 19:44:25 +0100 Subject: [PATCH 377/410] search-backend-module-elasticsearch: remove explicit jest environment Signed-off-by: Patrik Oldsberg --- plugins/search-backend-module-elasticsearch/package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index 0b35de5a43..3124762879 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -42,8 +42,5 @@ "dist", "config.d.ts" ], - "jest": { - "testEnvironment": "node" - }, "configSchema": "config.d.ts" } From 9712a8a507417beafe9fe470a0a0fad5de731706 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 25 Mar 2022 11:27:49 +0100 Subject: [PATCH 378/410] tech-insights-backend: refactor FactRetrieverEngine to avoid waitForExpect Signed-off-by: Patrik Oldsberg --- .../service/fact/FactRetrieverEngine.test.ts | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts index a1b4ee1c82..0617c0aedd 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.test.ts @@ -26,9 +26,8 @@ import { DatabaseManager, getVoidLogger } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; import { TaskScheduler } from '@backstage/backend-tasks'; -import waitForExpect from 'wait-for-expect'; -jest.useFakeTimers('legacy'); +jest.useFakeTimers(); const testFactRetriever: FactRetriever = { id: 'test_factretriever', @@ -193,7 +192,14 @@ describe('FactRetrieverEngine', () => { }); } - engine = await createEngine(databaseId, insertCallback, () => {}); + const handler = jest.fn(); + engine = await createEngine( + databaseId, + insertCallback, + () => {}, + undefined, + { ...testFactRetriever, handler }, + ); await engine.schedule(); const job: FactRetrieverRegistration = engine.getJobRegistration( testFactRetriever.id, @@ -203,13 +209,15 @@ describe('FactRetrieverEngine', () => { await engine.triggerJob(job.factRetriever.id); jest.advanceTimersByTime(5000); - await waitForExpect(() => { - expect(testFactRetriever.handler).toHaveBeenCalledWith( - expect.objectContaining({ - entityFilter: testFactRetriever.entityFilter, - }), - ); - }); + const handlerParam = await new Promise(resolve => + handler.mockImplementation(resolve), + ); + + await expect(handlerParam).toEqual( + expect.objectContaining({ + entityFilter: testFactRetriever.entityFilter, + }), + ); }, 60_000, ); From 7321c1f9447a139f072231ae887eb03ff1a08667 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 25 Mar 2022 11:32:22 +0100 Subject: [PATCH 379/410] workflows: tweak e2e test paths Signed-off-by: Patrik Oldsberg --- .github/workflows/verify_e2e-techdocs.yml | 7 ++----- .github/workflows/verify_e2e-windows.yml | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/verify_e2e-techdocs.yml b/.github/workflows/verify_e2e-techdocs.yml index 02f3653b82..b9dfdc23eb 100644 --- a/.github/workflows/verify_e2e-techdocs.yml +++ b/.github/workflows/verify_e2e-techdocs.yml @@ -2,14 +2,11 @@ name: E2E Test Techdocs on: pull_request: paths: + - 'yarn.lock' + - '.github/workflows/verify_e2e-techdocs.yml' - 'packages/techdocs-cli/**' - 'packages/techdocs-cli-embedded-app/**' - 'plugins/techdocs/**' - paths-ignore: - - '.changeset/**' - - 'contrib/**' - - 'docs/**' - - 'microsite/**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/verify_e2e-windows.yml b/.github/workflows/verify_e2e-windows.yml index bc6bc8a698..8dc621ebf7 100644 --- a/.github/workflows/verify_e2e-windows.yml +++ b/.github/workflows/verify_e2e-windows.yml @@ -5,6 +5,7 @@ name: E2E Test Windows on: pull_request: paths: + - 'yarn.lock' - '.github/workflows/verify_e2e-windows.yml' - 'packages/cli/**' - 'packages/e2e-test/**' From d7f4e45fe17b511531d6204289078539f069fb19 Mon Sep 17 00:00:00 2001 From: Simone Fumagalli Date: Fri, 25 Mar 2022 11:40:59 +0100 Subject: [PATCH 380/410] Added info about scopes needed by the token Signed-off-by: Simone Fumagalli --- docs/integrations/gitlab/locations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/gitlab/locations.md b/docs/integrations/gitlab/locations.md index 965d183a9d..a71fc9bcba 100644 --- a/docs/integrations/gitlab/locations.md +++ b/docs/integrations/gitlab/locations.md @@ -28,7 +28,7 @@ can list the GitLab providers you want to fetch data from. Each entry is a structure with up to four elements: - `host`: The host of the GitLab instance, e.g. `gitlab.company.com`. -- `token` (optional): An authentication token as expected by GitLab. If this is +- `token` (optional): An authentication token as expected by GitLab. The token need at least `api`, `read_repository` and `write_repository` scopes. If this is not supplied, anonymous access will be used. - `apiBaseUrl` (optional): The URL of the GitLab API. For self-hosted installations, it is commonly at `https:///api/v4`. For gitlab.com, this From 65d2457711d642d5b91fa3951d76e8e86bc862ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Mar 2022 12:07:26 +0000 Subject: [PATCH 381/410] build(deps): bump aws-sdk from 2.1095.0 to 2.1100.0 Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.1095.0 to 2.1100.0. - [Release notes](https://github.com/aws/aws-sdk-js/releases) - [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-js/compare/v2.1095.0...v2.1100.0) --- updated-dependencies: - dependency-name: aws-sdk dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 237b8356ac..d698269f9a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8067,9 +8067,9 @@ aws-sdk-mock@^5.2.1: traverse "^0.6.6" aws-sdk@^2.840.0, aws-sdk@^2.928.0, aws-sdk@^2.948.0: - version "2.1095.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1095.0.tgz#7847493b09a326a0613010ed9db53302f760edf6" - integrity sha512-OrZq2pTDsnfOJYsAdRlw+NXTGLQYqWldSZR3HugW8JT4JPWyFZrgB2yPP2ElFHX+4J4SZg5QvkAXl/7s9gLTgA== + version "2.1100.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1100.0.tgz#20bbabc12fbc316067ba02af66bf371a455af9e3" + integrity sha512-StLSQCYFmFPxjoMntIb+8jUZ0vzmq3xkrwG5e/4qU1bSGWCmhhjvz6c+4j38AnIy8MFV1+tV8RArbhLUEV2dGw== dependencies: buffer "4.9.2" events "1.1.1" From 13fcb3e6badd9c3fe97a53110c7fb61b5fa48351 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Fri, 25 Mar 2022 13:10:45 +0100 Subject: [PATCH 382/410] docs/local-dev: add note about jest config selecting the env Signed-off-by: Patrik Oldsberg --- docs/local-dev/cli-build-system.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/local-dev/cli-build-system.md b/docs/local-dev/cli-build-system.md index 91f4668f4e..9245cea7ff 100644 --- a/docs/local-dev/cli-build-system.md +++ b/docs/local-dev/cli-build-system.md @@ -521,7 +521,9 @@ The built-in configuration brings a couple of benefits and features. The most important one being a baseline transformer and module configuration that enables support for the listed [loaders](#loaders) within tests. It will also automatically detect and use `src/setupTests.ts` if it exists, and provides a -coverage configuration that works well with our selected transpilers. +coverage configuration that works well with our selected transpilers. The configuration +will also detect the appropriate Jest environment for each package role, running +`web-libraries` with the `"jsdom"` environment, `node-libraries` with `"node"`, and so on. The configuration also takes a project-wide approach, with the expectation most if not all packages within a monorepo will use the same base configuration. This From c7abdb3bb68c1d07ac82d432c5e1ede9ea075f9c Mon Sep 17 00:00:00 2001 From: jv Date: Fri, 25 Mar 2022 13:15:39 +0100 Subject: [PATCH 383/410] Added Agorapulse to the adopters list Signed-off-by: jv --- ADOPTERS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index bce16dec9d..ac9139a7ed 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -107,4 +107,6 @@ _If you're using Backstage in your organization, please try to add your company | [VIA](https://www.via.com.br) | [@vagnerguedes](https://github.com/vagnerguedes) | Centralized Developer Experience portal - Software catalog and documentation platform, software templates, techdocs, scaffolding, self-service infrastructure | | [Surevine](https://www.surevine.com/) | [@DJDANNY123](https://github.com/djdanny123) | Developer portal for software catalog, discovery and a view of the technologies we are using across the organisation, we are looking to explore how we can enrich our entities in Backstage by integrating a software bill of materials. | | [Bonial International GmbH](https://www.bonial.com/) | [@pjungermann](https://github.com/pjungermann) | Centralized developer portal with software catalog, tech docs, templates, and more. | -| [Beez Innovation Labs Pvt. Ltd](https://www.beezlabs.com/) | [Karthikeyan Venkatesan](https://github.com/karthikeyan23) | Developer portal with software catalog, scaffolding, tech docs, templates, and infra. | +| [Beez Innovation Labs Pvt. Ltd](https://www.beezlabs.com/) | [Karthikeyan Venkatesan](https://github.com/karthikeyan23) | Developer portal with software catalog, scaffolding, tech docs, templates, and infra. | +| [Agorapulse](https://www.agorapulse.com/) | [@jvdrean](https://github.com/jvdrean) | Developer portal with software catalog, documentation, monitoring, runbooks, tech radar and more. | + From 07c0610557eeb81ef29d8242e389225c3796fa32 Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Fri, 25 Mar 2022 10:06:37 +0100 Subject: [PATCH 384/410] feedback fixes Signed-off-by: Emma Indal --- plugins/stack-overflow-backend/.eslintrc.js | 4 +- plugins/stack-overflow-backend/README.md | 3 +- plugins/stack-overflow-backend/api-report.md | 4 +- plugins/stack-overflow-backend/config.d.ts | 28 + plugins/stack-overflow-backend/package.json | 11 +- .../StackOverflowQuestionsCollatorFactory.ts | 14 +- plugins/stack-overflow/.eslintrc.js | 4 +- plugins/stack-overflow/README.md | 4 +- plugins/stack-overflow/config.d.ts | 28 + plugins/stack-overflow/package.json | 37 +- .../home/StackOverflowQuestions/Content.tsx | 6 +- yarn.lock | 4179 +++-------------- 12 files changed, 792 insertions(+), 3530 deletions(-) create mode 100644 plugins/stack-overflow-backend/config.d.ts create mode 100644 plugins/stack-overflow/config.d.ts diff --git a/plugins/stack-overflow-backend/.eslintrc.js b/plugins/stack-overflow-backend/.eslintrc.js index 16a033dbc6..e2a53a6ad2 100644 --- a/plugins/stack-overflow-backend/.eslintrc.js +++ b/plugins/stack-overflow-backend/.eslintrc.js @@ -1,3 +1 @@ -module.exports = { - extends: [require.resolve('@backstage/cli/config/eslint.backend')], -}; +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/stack-overflow-backend/README.md b/plugins/stack-overflow-backend/README.md index e980f1f806..f2eaf660c2 100644 --- a/plugins/stack-overflow-backend/README.md +++ b/plugins/stack-overflow-backend/README.md @@ -32,7 +32,8 @@ When you have your `packages/backend/src/plugins/search.ts` file ready to make m ```ts indexBuilder.addCollator({ defaultRefreshIntervalSeconds: 600, - factory: StackOverflowQuestionsCollatorFactory.fromConfig(config, { + factory: StackOverflowQuestionsCollatorFactory.fromConfig(env.config, { + logger: env.logger, requestParams: { tagged: ['backstage'], site: 'stackoverflow', diff --git a/plugins/stack-overflow-backend/api-report.md b/plugins/stack-overflow-backend/api-report.md index 625581def8..fc4c610d3e 100644 --- a/plugins/stack-overflow-backend/api-report.md +++ b/plugins/stack-overflow-backend/api-report.md @@ -6,8 +6,8 @@ /// import { Config } from '@backstage/config'; -import { DocumentCollatorFactory } from '@backstage/search-common'; -import { IndexableDocument } from '@backstage/search-common'; +import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; +import { IndexableDocument } from '@backstage/plugin-search-common'; import { Logger } from 'winston'; import { Readable } from 'stream'; diff --git a/plugins/stack-overflow-backend/config.d.ts b/plugins/stack-overflow-backend/config.d.ts new file mode 100644 index 0000000000..7e7211ca33 --- /dev/null +++ b/plugins/stack-overflow-backend/config.d.ts @@ -0,0 +1,28 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Config { + /** + * Configuration options for the stack overflow plugin + */ + stackoverflow: { + /** + * The base url of the Stack Overflow API used for the plugin + * @visibility backend + */ + baseUrl: string; + }; +} diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index e97eb0dcce..bf8c000f44 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -33,13 +33,14 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/search-common": "^0.3.1", - "@backstage/config": "^0.1.15", - "qs": "^6.10.3", + "@backstage/plugin-search-common": "^0.3.3-next.0", + "@backstage/config": "^1.0.0", + "qs": "^6.9.4", "cross-fetch": "^3.1.5", - "winston": "^3.6.0" + "winston": "^3.2.1" }, "files": [ - "dist" + "dist", + "config" ] } diff --git a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts index 89b63b09c5..98fc86c2ea 100644 --- a/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts +++ b/plugins/stack-overflow-backend/src/search/StackOverflowQuestionsCollatorFactory.ts @@ -17,7 +17,7 @@ import { IndexableDocument, DocumentCollatorFactory, -} from '@backstage/search-common'; +} from '@backstage/plugin-search-common'; import { Config } from '@backstage/config'; import { Readable } from 'stream'; import fetch from 'cross-fetch'; @@ -77,7 +77,9 @@ export class StackOverflowQuestionsCollatorFactory config: Config, options: StackOverflowQuestionsCollatorFactoryOptions, ) { - const baseUrl = config.getString('stackoverflow.baseUrl'); + const baseUrl = + config.getOptionalString('stackoverflow.baseUrl') || + 'https://api.stackexchange.com/2.2'; return new StackOverflowQuestionsCollatorFactory({ ...options, baseUrl }); } @@ -91,9 +93,11 @@ export class StackOverflowQuestionsCollatorFactory `No stackoverflow.baseUrl configured in your app-config.yaml`, ); } - const params = this.requestParams - ? `?${qs.stringify(this.requestParams, { arrayFormat: 'comma' })}` - : ''; + const params = qs.stringify(this.requestParams, { + arrayFormat: 'comma', + addQueryPrefix: true, + }); + const res = await fetch(`${this.baseUrl}/questions${params}`); const data = await res.json(); diff --git a/plugins/stack-overflow/.eslintrc.js b/plugins/stack-overflow/.eslintrc.js index 13573efa9c..e2a53a6ad2 100644 --- a/plugins/stack-overflow/.eslintrc.js +++ b/plugins/stack-overflow/.eslintrc.js @@ -1,3 +1 @@ -module.exports = { - extends: [require.resolve('@backstage/cli/config/eslint')], -}; +module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/stack-overflow/README.md b/plugins/stack-overflow/README.md index 9925605a83..6beb843c7d 100644 --- a/plugins/stack-overflow/README.md +++ b/plugins/stack-overflow/README.md @@ -29,8 +29,8 @@ When you have your `packages/app/src/components/search/SearchPage.tsx` file read case 'stack-overflow': return ( ); ``` diff --git a/plugins/stack-overflow/config.d.ts b/plugins/stack-overflow/config.d.ts new file mode 100644 index 0000000000..811893231e --- /dev/null +++ b/plugins/stack-overflow/config.d.ts @@ -0,0 +1,28 @@ +/* + * Copyright 2022 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface Config { + /** + * Configuration options for the stack overflow plugin + */ + stackoverflow: { + /** + * The base url of the Stack Overflow API used for the plugin + * @visibility frontend + */ + baseUrl: string; + }; +} diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index b1eefd65a9..9c83ed4856 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -9,6 +9,9 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "backstage": { + "role": "frontend-plugin" + }, "scripts": { "build": "backstage-cli package start", "start": "backstage-cli package build", @@ -20,16 +23,16 @@ "clean": "backstage-cli package clean" }, "dependencies": { - "@backstage/core-components": "^0.8.8", - "@backstage/plugin-home": "^0.4.15", - "@backstage/core-plugin-api": "^0.6.0", - "@backstage/search-common": "^0.2.2", - "@backstage/config": "^0.1.13", - "@backstage/theme": "^0.2.14", + "@backstage/core-components": "^0.9.3-next.0", + "@backstage/plugin-home": "^0.4.20-next.0", + "@backstage/core-plugin-api": "^1.0.0", + "@backstage/plugin-search-common": "^0.3.3-next.0", + "@backstage/config": "^1.0.0", + "@backstage/theme": "^0.2.15", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "qs": "^6.10.3", - "cross-fetch": "^3.0.6", + "qs": "^6.9.4", + "cross-fetch": "^3.1.5", "lodash": "^4.17.21", "react-use": "^17.2.4", "@testing-library/jest-dom": "^5.10.1" @@ -39,18 +42,18 @@ "react": "^16.13.1 || ^17.0.0" }, "devDependencies": { - "@backstage/cli": "^0.15.2", - "@backstage/test-utils": "^0.3.0", + "@backstage/cli": "^0.16.1-next.0", + "@backstage/test-utils": "^1.0.1-next.0", "@testing-library/react": "^12.1.3", - "@backstage/core-app-api": "^0.5.2", - "@backstage/dev-utils": "^0.2.21-next.0", + "@backstage/core-app-api": "^1.0.1-next.0", + "@backstage/dev-utils": "^1.0.1-next.0", "@testing-library/user-event": "^13.1.8", - "@types/jest": "*", - "@types/node": "*", - "msw": "^0.35.0", - "cross-fetch": "^3.0.6" + "@types/jest": "^26.0.7", + "@types/node": "^14.14.32", + "msw": "^0.35.0" }, "files": [ - "dist" + "dist", + "config" ] } diff --git a/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx b/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx index cf74de05f9..c347399474 100644 --- a/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx +++ b/plugins/stack-overflow/src/home/StackOverflowQuestions/Content.tsx @@ -41,12 +41,14 @@ import { export const Content = (props: StackOverflowQuestionsContentProps) => { const { requestParams } = props; const configApi = useApi(configApiRef); - const baseUrl = configApi.getOptionalString('stackoverflow.baseUrl'); + const baseUrl = + configApi.getOptionalString('stackoverflow.baseUrl') || + 'https://api.stackexchange.com/2.2'; const { value, loading, error } = useAsync(async (): Promise< StackOverflowQuestion[] > => { - const params = requestParams ? `?${qs.stringify(requestParams)}` : ''; + const params = qs.stringify(requestParams, { addQueryPrefix: true }); const response = await fetch(`${baseUrl}/questions${params}`); const data = await response.json(); return data.items; diff --git a/yarn.lock b/yarn.lock index bd1b3cc1b2..164e39e98d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -97,17 +97,10 @@ openapi-sampler "^1.1.0" use-resize-observer "^7.0.0" -<<<<<<< HEAD -"@asyncapi/specs@^2.11.0": - version "2.12.0" - resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.12.0.tgz#15534ca9e518b561d33edfdfdbb234f9b274f261" - integrity sha512-X4Xkrl+9WXSk5EJhsueIxNx6ymHI5wpkw4ofetV+VRnPLNob/XO4trPSJClrL5hlknxbGADLvlrkI5d3XJ996g== -======= "@asyncapi/specs@^2.13.0": version "2.13.0" resolved "https://registry.npmjs.org/@asyncapi/specs/-/specs-2.13.0.tgz#c0f46d00e8a67c1c9ea445eb3e8bca90f7dca795" integrity sha512-X0OrxJtzwRH8iLILO/gUTDqjGVPmagmdlgdyuBggYAoGXzF6ZuAws3XCLxtPNve5eA/0V/1puwpUYEGekI22og== ->>>>>>> e5aaf7bb66 (bump dependencies) "@azure/abort-controller@^1.0.0": version "1.0.2" @@ -121,7 +114,7 @@ resolved "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz#dcccebb88406e5c76e0e1d52e8cc4c43a68b3ee7" integrity sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg== -"@azure/core-auth@^1.1.3", "@azure/core-auth@^1.3.0": +"@azure/core-auth@^1.3.0": version "1.3.2" resolved "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.3.2.tgz#6a2c248576c26df365f6c7881ca04b7f6d08e3d0" integrity sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA== @@ -142,36 +135,36 @@ "@azure/logger" "^1.0.0" tslib "^2.2.0" -"@azure/core-http@^1.2.0": - version "1.2.2" - resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-1.2.2.tgz#a6f7717184fd2657d3acabd1d64dfdc0bd531ce3" - integrity sha512-9eu2OcbR7e44gqBy4U1Uv8NTWgLIMwKXMEGgO2MahsJy5rdTiAhs5fJHQffPq8uX2MFh21iBODwO9R/Xlov88A== +"@azure/core-http@^2.0.0": + version "2.2.4" + resolved "https://registry.npmjs.org/@azure/core-http/-/core-http-2.2.4.tgz#df5a5b4138dbbc4299879f2fc6f257d0a5f0401e" + integrity sha512-QmmJmexXKtPyc3/rsZR/YTLDvMatzbzAypJmLzvlfxgz/SkgnqV/D4f6F2LsK6tBj1qhyp8BoXiOebiej0zz3A== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-auth" "^1.1.3" - "@azure/core-tracing" "1.0.0-preview.9" + "@azure/core-asynciterator-polyfill" "^1.0.0" + "@azure/core-auth" "^1.3.0" + "@azure/core-tracing" "1.0.0-preview.13" "@azure/logger" "^1.0.0" - "@opentelemetry/api" "^0.10.2" "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.1" - form-data "^3.0.0" - node-fetch "^2.6.0" + "@types/tunnel" "^0.0.3" + form-data "^4.0.0" + node-fetch "^2.6.7" process "^0.11.10" tough-cookie "^4.0.0" - tslib "^2.0.0" + tslib "^2.2.0" tunnel "^0.0.6" uuid "^8.3.0" xml2js "^0.4.19" -"@azure/core-lro@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-1.0.3.tgz#1ddfb4ecdb81ce87b5f5d972ffe2acbbc46e524e" - integrity sha512-Py2crJ84qx1rXkzIwfKw5Ni4WJuzVU7KAF6i1yP3ce8fbynUeu8eEWS4JGtSQgU7xv02G55iPDROifmSDbxeHA== +"@azure/core-lro@^2.2.0": + version "2.2.4" + resolved "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.4.tgz#42fbf4ae98093c59005206a4437ddcd057c57ca1" + integrity sha512-e1I2v2CZM0mQo8+RSix0x091Av493e4bnT22ds2fcQGslTHzM2oTbswkB65nP4iEpCxBrFxOSDPKExmTmjCVtQ== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^1.2.0" - events "^3.0.0" - tslib "^2.0.0" + "@azure/core-tracing" "1.0.0-preview.13" + "@azure/logger" "^1.0.0" + tslib "^2.2.0" "@azure/core-paging@^1.1.1": version "1.1.3" @@ -195,15 +188,6 @@ tslib "^2.2.0" uuid "^8.3.0" -"@azure/core-tracing@1.0.0-preview.10": - version "1.0.0-preview.10" - resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.10.tgz#e7060272145dddad4486765030d1b037cd52a8ea" - integrity sha512-iIwjtMwQnsxB7cYkugMx+s4W1nfy3+pT/ceo+uW1fv4YDgYe84nh+QP0fEC9IH/3UATLSWbIBemdMHzk2APUrw== - dependencies: - "@opencensus/web-types" "0.0.7" - "@opentelemetry/api" "^0.10.2" - tslib "^2.0.0" - "@azure/core-tracing@1.0.0-preview.13": version "1.0.0-preview.13" resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644" @@ -212,15 +196,6 @@ "@opentelemetry/api" "^1.0.1" tslib "^2.2.0" -"@azure/core-tracing@1.0.0-preview.9": - version "1.0.0-preview.9" - resolved "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.9.tgz#84f3b85572013f9d9b85e1e5d89787aa180787eb" - integrity sha512-zczolCLJ5QG42AEPQ+Qg9SRYNUyB+yZ5dzof4YEc+dyWczO9G2sBqbAjLB7IqrsdHN2apkiB2oXeDKCsq48jug== - dependencies: - "@opencensus/web-types" "0.0.7" - "@opentelemetry/api" "^0.10.2" - tslib "^2.0.0" - "@azure/core-util@^1.0.0-beta.1": version "1.0.0-beta.1" resolved "https://registry.npmjs.org/@azure/core-util/-/core-util-1.0.0-beta.1.tgz#2efd2c74b4b0a38180369f50fe274a3c4cd36e98" @@ -229,9 +204,9 @@ tslib "^2.0.0" "@azure/identity@^2.0.1": - version "2.0.3" - resolved "https://registry.npmjs.org/@azure/identity/-/identity-2.0.3.tgz#286e7b145b29bee009ef10f3c2900122dcc1c947" - integrity sha512-MFW2QS5dWm2U8MDTSm0sHo7pcAQtQtJhKVVcN5wA2ownHzmHluXTGFK4WdFiXzUInhZtqYA5CH+OGHTGs6DTBA== + version "2.0.4" + resolved "https://registry.npmjs.org/@azure/identity/-/identity-2.0.4.tgz#f5cfde0daf1b9ebaaff3ed6c504f50d7d7c939a5" + integrity sha512-ZgFubAsmo7dji63NLPaot6O7pmDfceAUPY57uphSCr0hmRj+Cakqb4SUz5SohCHFtscrhcmejRU903Fowz6iXg== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-auth" "^1.3.0" @@ -278,30 +253,37 @@ dependencies: debug "^4.1.1" -"@azure/msal-node@^1.1.0", "@azure/msal-node@^1.3.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.4.0.tgz#660685804fbdc533b10cc699f16323e27ec582c6" - integrity sha512-Ek6hqOFUi5QEAxZ55awM8y1N+9SzS9Qh8ijF4RDLtFuHzqP7xXmMnVC1lae45FlH55DUOo7dg/smuDJnb4kw6g== +"@azure/msal-common@^6.1.0": + version "6.1.0" + resolved "https://registry.npmjs.org/@azure/msal-common/-/msal-common-6.1.0.tgz#00b0c625d10f4c8e48e7b48a353f7d8d20a5ceca" + integrity sha512-IGjAHttOgKDPQr0Qxx1NjABR635ZNuN7LHjxI0Y7SEA2thcaRGTccy+oaXTFabM/rZLt4F2VrPKUX4BnR9hW9g== dependencies: - "@azure/msal-common" "^5.2.0" + debug "^4.1.1" + +"@azure/msal-node@^1.1.0", "@azure/msal-node@^1.3.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.7.0.tgz#9026971b1fd953f15bfddde9c43e180356a80d77" + integrity sha512-qDkW+Z4b0SGkkYrM1x+0s5WJ3z96vgiNZ20iwpmtCUHVfSrDiGFB8s8REKVaz7JZJi2L1s0vQRbUahly8EoGnw== + dependencies: + "@azure/msal-common" "^6.1.0" axios "^0.21.4" + https-proxy-agent "^5.0.0" jsonwebtoken "^8.5.1" uuid "^8.3.0" "@azure/storage-blob@^12.5.0": - version "12.5.0" - resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.5.0.tgz#1ddd8837d9a15ebe355e795375d13b406f2cb496" - integrity sha512-DgoefgODst2IPkkQsNdhtYdyJgSsAZC1pEujO6aD5y7uFy5GnzhYliobSrp204jYRyK5XeJ9iiePmy/SPtTbLA== + version "12.9.0" + resolved "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.9.0.tgz#4cbd8b4c7a47dd064867430db892f4ef2d8f17ab" + integrity sha512-ank38FdCLfJ+EoeMzCz3hkYJuZAd63ARvDKkxZYRDb+beBYf+/+gx8jNTqkq/hfyUl4dJQ/a7tECU0Y0F98CHg== dependencies: "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^1.2.0" - "@azure/core-lro" "^1.0.2" + "@azure/core-http" "^2.0.0" + "@azure/core-lro" "^2.2.0" "@azure/core-paging" "^1.1.1" - "@azure/core-tracing" "1.0.0-preview.10" + "@azure/core-tracing" "1.0.0-preview.13" "@azure/logger" "^1.0.0" - "@opentelemetry/api" "^0.10.2" events "^3.0.0" - tslib "^2.0.0" + tslib "^2.2.0" "@babel/code-frame@7.0.0": version "7.0.0" @@ -321,7 +303,6 @@ version "7.16.8" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== -<<<<<<< HEAD "@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": version "7.16.12" @@ -344,50 +325,10 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.12.3": - version "7.17.5" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" - integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== -======= - -"@babel/core@^7.1.0", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.7.5": - version "7.16.12" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" - integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== ->>>>>>> e5aaf7bb66 (bump dependencies) - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.16.7" - "@babel/parser" "^7.16.12" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.10" - "@babel/types" "^7.16.8" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - "@babel/generator@^7.14.0", "@babel/generator@^7.16.0", "@babel/generator@^7.16.8": version "7.16.8" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== -<<<<<<< HEAD - dependencies: - "@babel/types" "^7.16.8" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.17.3": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/types" "^7.16.8" jsesc "^2.5.1" @@ -595,18 +536,6 @@ version "7.16.7" resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== -<<<<<<< HEAD - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helpers@^7.17.2": - version "7.17.2" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" - integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/template" "^7.16.7" "@babel/traverse" "^7.16.7" @@ -630,14 +559,6 @@ version "7.16.12" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== -<<<<<<< HEAD - -"@babel/parser@^7.17.3": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -1109,11 +1030,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -<<<<<<< HEAD -"@babel/plugin-transform-react-constant-elements@^7.12.1", "@babel/plugin-transform-react-constant-elements@^7.14.5": -======= "@babel/plugin-transform-react-constant-elements@^7.14.5": ->>>>>>> e5aaf7bb66 (bump dependencies) version "7.16.7" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62" integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ== @@ -1227,7 +1144,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.15.6": +"@babel/preset-env@^7.15.6": version "7.16.11" resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== @@ -1327,7 +1244,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.14.5": +"@babel/preset-react@^7.14.5": version "7.16.7" resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== @@ -1359,37 +1276,15 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.3": - version "7.16.8" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz#ea533d96eda6fdc76b1812248e9fbd0c11d4a1a7" - integrity sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg== +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.11.2", "@babel/runtime-corejs3@^7.16.8": + version "7.17.2" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" + integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -<<<<<<< HEAD -<<<<<<< HEAD -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": -======= -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.16.7" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" - integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.7.2": ->>>>>>> 76d216e74b (fixups) -======= -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": ->>>>>>> e5aaf7bb66 (bump dependencies) - version "7.17.2" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.17.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.17.7" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA== @@ -1424,25 +1319,6 @@ version "7.16.10" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== -<<<<<<< HEAD - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.10" - "@babel/types" "^7.16.8" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3": - version "7.17.3" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/code-frame" "^7.16.7" "@babel/generator" "^7.16.8" @@ -1467,45 +1343,10 @@ version "7.16.8" resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== -<<<<<<< HEAD dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@babel/types@^7.12.6", "@babel/types@^7.17.0": - version "7.17.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -<<<<<<< HEAD -"@backstage/app-defaults@^0.2.1": - version "0.2.1" - resolved "https://registry.npmjs.org/@backstage/app-defaults/-/app-defaults-0.2.1.tgz#8a99245cef0bfd4cc1a864d80eee76eec2ed944e" - integrity sha512-4KjcvUqnUADCTIcRrc87VcwgtZmfAqusvhSIleo8jEXQ+kIddoah/1P6ttsWiECaFvnvJ9ERhprsvJIK119zkw== - dependencies: - "@backstage/core-app-api" "^0.6.0" - "@backstage/core-components" "^0.9.1" - "@backstage/core-plugin-api" "^0.8.0" - "@backstage/plugin-permission-react" "^0.3.3" - "@backstage/theme" "^0.2.15" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - react-router-dom "6.0.0-beta.0" - -"@backstage/catalog-client@^0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-0.9.0.tgz#3e1024fab13fd8e2000d33833d2463ea9be5df9d" - integrity sha512-mr2wrb+7uAPczOOYt07C4AbXIeX0mu+Iw6RPDNg67GvPvQVcbKCrjth9VEj8rScFGmJAn66ZcronbcZSS0MJww== - dependencies: - "@backstage/catalog-model" "^0.13.0" - "@backstage/errors" "^0.2.2" - cross-fetch "^3.1.5" - "@backstage/catalog-client@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-1.0.0.tgz#05f9ee3b771ca17e4800f5116d63bd183fe0c4d6" @@ -1515,36 +1356,6 @@ "@backstage/errors" "^1.0.0" cross-fetch "^3.1.5" -"@backstage/catalog-model@^0.13.0": - version "0.13.0" - resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.13.0.tgz#abeb91522ac7ef7907907ad5bc889803131db209" - integrity sha512-Q+0C0LJ8niNQ4TXduUNTycZ2PLMbhKmfgWywunJLO34DZAoFnTWJEAdEYF536YyLciHhLO0dHRUaHY29Sdr+Xg== -======= -"@backstage/catalog-client@^0.7.0": - version "0.7.2" - resolved "https://registry.npmjs.org/@backstage/catalog-client/-/catalog-client-0.7.2.tgz#bcfdb2c210e878fbc5833f18e59feae1e7e48330" - integrity sha512-jeJfi4ekwIffi8ozSzvgdv94DZ2kKNwFVhAP0V+63GF6wIspvGuTIwU2uKYH0v9JXA08lwmAsOGnrrwgS6ragA== - dependencies: - "@backstage/catalog-model" "^0.11.0" - "@backstage/errors" "^0.2.2" - cross-fetch "^3.1.5" - -"@backstage/catalog-model@^0.10.0": - version "0.10.1" - resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.10.1.tgz#dcc3415eb4d4ee3d437355c477e85c7479626b3b" - integrity sha512-c004aQeO9cxtSZZc2iBcE6eoqurQLdj7YUm8mHWs8hEaPTA2UPVHawt+wlt89VywkI89X0wF7BuXV2LKVUfXvw== ->>>>>>> e5aaf7bb66 (bump dependencies) - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/errors" "^0.2.2" - "@backstage/types" "^0.1.3" - "@types/json-schema" "^7.0.5" - ajv "^7.0.3" - json-schema "^0.4.0" - lodash "^4.17.21" - uuid "^8.0.0" - -<<<<<<< HEAD "@backstage/catalog-model@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-1.0.0.tgz#0aa8694a3182aaf4232725842da751bf5f78bd68" @@ -1558,122 +1369,7 @@ lodash "^4.17.21" uuid "^8.0.0" -"@backstage/cli@^0.13.2-next.0": - version "0.13.2" - resolved "https://registry.npmjs.org/@backstage/cli/-/cli-0.13.2.tgz#1ef427e847116822f9c3964aa2803a1abc419c91" - integrity sha512-GI1v5kkpfqu5X+aNcXLY5lX3BtiIBk0Tm+jyWSitOzFa/rw6QnFPieAw8F72jC92OTV08FVKEaJIt/Qg3eUNkA== - dependencies: - "@backstage/cli-common" "^0.1.6" - "@backstage/config" "^0.1.13" - "@backstage/config-loader" "^0.9.3" - "@backstage/errors" "^0.2.0" - "@backstage/release-manifests" "^0.0.1" - "@backstage/types" "^0.1.1" - "@hot-loader/react-dom" "^16.13.0" - "@manypkg/get-packages" "^1.1.3" - "@octokit/request" "^5.4.12" - "@rollup/plugin-commonjs" "^21.0.1" - "@rollup/plugin-json" "^4.1.0" - "@rollup/plugin-node-resolve" "^13.0.0" - "@rollup/plugin-yaml" "^3.1.0" - "@spotify/eslint-config-base" "^12.0.0" - "@spotify/eslint-config-react" "^12.0.0" - "@spotify/eslint-config-typescript" "^12.0.0" - "@sucrase/jest-plugin" "^2.1.1" - "@sucrase/webpack-loader" "^2.0.0" - "@svgr/plugin-jsx" "6.2.x" - "@svgr/plugin-svgo" "6.2.x" - "@svgr/rollup" "5.5.x" - "@svgr/webpack" "5.5.x" - "@types/webpack-env" "^1.15.2" - "@typescript-eslint/eslint-plugin" "^5.9.0" - "@typescript-eslint/parser" "^5.9.0" - "@yarnpkg/lockfile" "^1.1.0" - bfj "^7.0.2" - buffer "^6.0.3" - chalk "^4.0.0" - chokidar "^3.3.1" - commander "^6.1.0" - css-loader "^6.5.1" - diff "^5.0.0" - esbuild "^0.14.10" - esbuild-loader "^2.18.0" - eslint "^8.6.0" - eslint-config-prettier "^8.3.0" - eslint-formatter-friendly "^7.0.0" - eslint-plugin-import "^2.25.4" - eslint-plugin-jest "^25.3.4" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-monorepo "^0.3.2" - eslint-plugin-react "^7.28.0" - eslint-plugin-react-hooks "^4.3.0" - eslint-webpack-plugin "^2.6.0" - express "^4.17.1" - fork-ts-checker-webpack-plugin "^7.0.0-alpha.8" - fs-extra "9.1.0" - glob "^7.1.7" - handlebars "^4.7.3" - html-webpack-plugin "^5.3.1" - inquirer "^8.2.0" - jest "^26.0.1" - jest-css-modules "^2.1.0" - jest-transform-yaml "^1.0.0" - json-schema "^0.4.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.4.2" - minimatch "3.0.4" - node-libs-browser "^2.2.1" - npm-packlist "^3.0.0" - ora "^5.3.0" - postcss "^8.1.0" - process "^0.11.10" - react-dev-utils "^12.0.0-next.60" - react-hot-loader "^4.13.0" - recursive-readdir "^2.2.2" - replace-in-file "^6.0.0" - rollup "^2.60.2" - rollup-plugin-dts "^4.0.1" - rollup-plugin-esbuild "^4.7.2" - rollup-plugin-peer-deps-external "^2.2.2" - rollup-plugin-postcss "^4.0.0" - rollup-pluginutils "^2.8.2" - run-script-webpack-plugin "^0.0.11" - semver "^7.3.2" - style-loader "^3.3.1" - sucrase "^3.20.2" - tar "^6.1.2" - terser-webpack-plugin "^5.1.3" - util "^0.12.3" - webpack "^5.66.0" - webpack-dev-server "^4.7.3" - webpack-node-externals "^3.0.0" - yaml "^1.10.0" - yml-loader "^2.1.0" - yn "^4.0.0" - zod "^3.11.6" - -"@backstage/config-loader@^0.9.3": - version "0.9.7" - resolved "https://registry.npmjs.org/@backstage/config-loader/-/config-loader-0.9.7.tgz#b056f592b8ec1b21007eb9193ec595a9da3fb1b9" - integrity sha512-dt+z5MSRG4qGYPsmlxZioEpXpf4/6R6wD7NJodcV5JbXd109sPALwwxMG4KLDuBvhJnKlJmOK1ZhQGe/11jHjA== - dependencies: - "@backstage/cli-common" "^0.1.8" - "@backstage/config" "^0.1.15" - "@backstage/errors" "^0.2.2" - "@backstage/types" "^0.1.3" - "@types/json-schema" "^7.0.6" - ajv "^7.0.3" - chokidar "^3.5.2" - fs-extra "10.0.1" - json-schema "^0.4.0" - json-schema-merge-allof "^0.8.1" - json-schema-traverse "^1.0.0" - node-fetch "^2.6.7" - typescript-json-schema "^0.52.0" - yaml "^1.9.2" - yup "^0.32.9" - -"@backstage/config@^0.1.13", "@backstage/config@^0.1.14", "@backstage/config@^0.1.15": +"@backstage/config@^0.1.15": version "0.1.15" resolved "https://registry.npmjs.org/@backstage/config/-/config-0.1.15.tgz#4bad122ad861be5bd61a60639f92d2494fa245c5" integrity sha512-eNJEYYSEu9MkrkBYiMpUBWEc3Bu64YgB9pZZGCMW7/9350tV2wbylEdoBJHslilJlJhiUyTXBckn8Ua7DOH7rw== @@ -1681,218 +1377,11 @@ "@backstage/types" "^0.1.3" lodash "^4.17.21" -"@backstage/core-app-api@^0.5.2", "@backstage/core-app-api@^0.5.4": - version "0.5.4" - resolved "https://registry.npmjs.org/@backstage/core-app-api/-/core-app-api-0.5.4.tgz#9ee39828fdcba64a4eea20e9fe3da58c56c053d5" - integrity sha512-qH9XQpY8M3yMKUvu+pcAxOUwrazGaA3L1bbzRzCALjmjmve37k9AY3Wd89toGAzqOqwn6OhBfUg+y3kqj44fOw== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/core-plugin-api" "^0.7.0" - "@backstage/types" "^0.1.3" - "@backstage/version-bridge" "^0.1.2" - "@types/prop-types" "^15.7.3" - prop-types "^15.7.2" - react-router-dom "6.0.0-beta.0" - react-use "^17.2.4" - zen-observable "^0.8.15" - zod "^3.11.6" - -"@backstage/core-app-api@^0.6.0": - version "0.6.0" - resolved "https://registry.npmjs.org/@backstage/core-app-api/-/core-app-api-0.6.0.tgz#691f0586d97682f1af67828ab2c67014397a530a" - integrity sha512-v1t1w/U/JHjm9eZupPmJpKH5WB0vysEFxRo6/Ia77VP6ZcPxszG4IG+d+S3Km5fM3lu4oosGiz+RaKUTLrttBA== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/core-plugin-api" "^0.8.0" - "@backstage/types" "^0.1.3" - "@backstage/version-bridge" "^0.1.2" - "@types/prop-types" "^15.7.3" - prop-types "^15.7.2" - react-router-dom "6.0.0-beta.0" - react-use "^17.2.4" - zen-observable "^0.8.15" - zod "^3.11.6" - -"@backstage/core-components@^0.8.8": - version "0.8.10" - resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.8.10.tgz#6f79c46cdf507fc3a0d764848a4a8aa73af7ce93" - integrity sha512-gGyCPPSdgvzYHWMKlxe/H4yFmEYDQuAtaoT7Y/3+pilcJSIQi9d3oV104BDLC94bdkyOWDsA1tT+PGZtd0p/8g== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/core-plugin-api" "^0.7.0" - "@backstage/errors" "^0.2.2" - "@backstage/theme" "^0.2.15" - "@material-table/core" "^3.1.0" -======= -"@backstage/catalog-model@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.11.0.tgz#f02f86fe74305b49fce300e9c221659f9092d1b7" - integrity sha512-DnmbzKZejvxBSQv1LjA3AZIxwmchir2A9L9MzWH9D+pVKIu4AEt2HItf6g+xhpgk+4GJppETsEgrLI+Iyr6QSA== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/errors" "^0.2.2" - "@backstage/types" "^0.1.3" - "@types/json-schema" "^7.0.5" - ajv "^7.0.3" - json-schema "^0.4.0" - lodash "^4.17.21" - uuid "^8.0.0" - -"@backstage/catalog-model@^0.9.7": - version "0.9.10" - resolved "https://registry.npmjs.org/@backstage/catalog-model/-/catalog-model-0.9.10.tgz#bd5662e1ad7bd7c9604f3f45d055c99b5b2bb87f" - integrity sha512-KhCjbZKhS5zZhHiGHmBMq6hDGDshMSZOPGXehtdhr6/oW7Ee5fDcOnhMqreCi1Ebm4RIWJhZcRrxO6X1TTi4TQ== - dependencies: - "@backstage/config" "^0.1.13" - "@backstage/errors" "^0.2.0" - "@backstage/types" "^0.1.1" - "@types/json-schema" "^7.0.5" - "@types/yup" "^0.29.13" - ajv "^7.0.3" - json-schema "^0.4.0" - lodash "^4.17.21" - uuid "^8.0.0" - yup "^0.32.9" - -"@backstage/core-components@^0.8.0", "@backstage/core-components@^0.8.9": - version "0.8.10" - resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.8.10.tgz#6f79c46cdf507fc3a0d764848a4a8aa73af7ce93" - integrity sha512-gGyCPPSdgvzYHWMKlxe/H4yFmEYDQuAtaoT7Y/3+pilcJSIQi9d3oV104BDLC94bdkyOWDsA1tT+PGZtd0p/8g== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/core-plugin-api" "^0.7.0" - "@backstage/errors" "^0.2.2" - "@backstage/theme" "^0.2.15" - "@material-table/core" "^3.1.0" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - "@react-hookz/web" "^12.3.0" - "@types/react-sparklines" "^1.7.0" - "@types/react-text-truncate" "^0.14.0" - ansi-regex "^6.0.1" - classnames "^2.2.6" - d3-selection "^3.0.0" - d3-shape "^3.0.0" - d3-zoom "^3.0.0" - dagre "^0.8.5" - history "^5.0.0" - immer "^9.0.1" - lodash "^4.17.21" - pluralize "^8.0.0" - prop-types "^15.7.2" - qs "^6.9.4" - rc-progress "3.2.4" - react-helmet "6.1.0" - react-hook-form "^7.12.2" - react-markdown "^8.0.0" - react-router "6.0.0-beta.0" - react-router-dom "6.0.0-beta.0" - react-sparklines "^1.7.0" - react-syntax-highlighter "^15.4.5" - react-text-truncate "^0.17.0" - react-use "^17.3.2" - react-virtualized-auto-sizer "^1.0.6" - react-window "^1.8.6" - remark-gfm "^3.0.1" - zen-observable "^0.8.15" - zod "^3.11.6" - -"@backstage/core-plugin-api@^0.6.0", "@backstage/core-plugin-api@^0.6.1": - version "0.6.1" - resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.6.1.tgz#a6fb8110f384ab9405990450956b2c81b88e90b2" - integrity sha512-DtHY0eG2OQ4QAHVb5y8yDUQXZW9Ot7Fsr4Rpe3BbiLpkXA5hZLXPMThOyz1Y79ZOEC5eiyhUlXL1g6P7ylOKMw== - dependencies: - "@backstage/config" "^0.1.14" - "@backstage/types" "^0.1.2" - "@backstage/version-bridge" "^0.1.2" - history "^5.0.0" - prop-types "^15.7.2" - react-router-dom "6.0.0-beta.0" - zen-observable "^0.8.15" - -"@backstage/core-plugin-api@^0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.7.0.tgz#e53f3aa5bbf074a70fcaf264b04402637008659c" - integrity sha512-SVzrJjvEjWzJgIqfFUjQjqW0RGCzj6zgLULpSgP53GQat70I0wje6E4n0blNU+/q7hpt6PoIT0lgZtqFOJrfYQ== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/types" "^0.1.3" - "@backstage/version-bridge" "^0.1.2" - history "^5.0.0" - prop-types "^15.7.2" - react-router-dom "6.0.0-beta.0" - zen-observable "^0.8.15" - -"@backstage/integration@^0.7.3": - version "0.7.5" - resolved "https://registry.npmjs.org/@backstage/integration/-/integration-0.7.5.tgz#c68848f35db51705b3287b6fa6a259ae4b17bfbc" - integrity sha512-KUoNQLfPaRqQsdfx04IX4d3EIHbJU3tJxoUjVCCDIAThtep6clhY4uoxXIYTUz+bhERUGGJYhMR+1ryEEtwWhw== - dependencies: - "@backstage/config" "^0.1.15" - "@octokit/auth-app" "^3.4.0" - "@octokit/rest" "^18.5.3" - cross-fetch "^3.1.5" - git-url-parse "^11.6.0" - lodash "^4.17.21" - luxon "^2.0.2" - -"@backstage/plugin-catalog-react@^0.6.5": - version "0.6.15" - resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-0.6.15.tgz#04de88caa4ac2ce2ad000ee34d28b11eda3910b9" - integrity sha512-8JDM0upFD/WpB6Qs8oIQf99E2yaqbf835IEgt6aY7l4lEzUrtW4007VXPMdDqOwVwhVM4PbTIvyIRzkQpcr89A== - dependencies: - "@backstage/catalog-client" "^0.7.0" - "@backstage/catalog-model" "^0.10.0" - "@backstage/core-components" "^0.8.9" - "@backstage/core-plugin-api" "^0.6.1" - "@backstage/errors" "^0.2.1" - "@backstage/integration" "^0.7.3" - "@backstage/plugin-permission-common" "^0.5.0" - "@backstage/plugin-permission-react" "^0.3.1" - "@backstage/types" "^0.1.2" - "@backstage/version-bridge" "^0.1.2" ->>>>>>> e5aaf7bb66 (bump dependencies) - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - "@react-hookz/web" "^12.3.0" - "@types/react-sparklines" "^1.7.0" - "@types/react-text-truncate" "^0.14.0" - ansi-regex "^6.0.1" - classnames "^2.2.6" - d3-selection "^3.0.0" - d3-shape "^3.0.0" - d3-zoom "^3.0.0" - dagre "^0.8.5" - history "^5.0.0" - immer "^9.0.1" - lodash "^4.17.21" - pluralize "^8.0.0" - prop-types "^15.7.2" - qs "^6.9.4" - rc-progress "3.2.4" - react-helmet "6.1.0" - react-hook-form "^7.12.2" - react-markdown "^8.0.0" - react-router "6.0.0-beta.0" - react-router-dom "6.0.0-beta.0" - react-sparklines "^1.7.0" - react-syntax-highlighter "^15.4.5" - react-text-truncate "^0.17.0" - react-use "^17.3.2" - react-virtualized-auto-sizer "^1.0.6" - react-window "^1.8.6" - remark-gfm "^3.0.1" - zen-observable "^0.8.15" - zod "^3.11.6" - -"@backstage/core-components@^0.9.0", "@backstage/core-components@^0.9.1", "@backstage/core-components@^0.9.2": +"@backstage/core-components@^0.9.0", "@backstage/core-components@^0.9.2": version "0.9.2" resolved "https://registry.npmjs.org/@backstage/core-components/-/core-components-0.9.2.tgz#9a3d79a15039256bbc007e5daa08c983050e0238" integrity sha512-kh0FB0FmjC55W+xSEkKrAc7D6hvbYLY7N1UUd6M4VBghYXD61Y8RrJFKmBM3bAfPgYaryQNjYgA0BsoTo53PJA== dependencies: -<<<<<<< HEAD "@backstage/config" "^1.0.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/errors" "^1.0.0" @@ -1932,94 +1421,6 @@ zen-observable "^0.8.15" zod "^3.11.6" -"@backstage/core-plugin-api@^0.6.0": - version "0.6.1" - resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.6.1.tgz#a6fb8110f384ab9405990450956b2c81b88e90b2" - integrity sha512-DtHY0eG2OQ4QAHVb5y8yDUQXZW9Ot7Fsr4Rpe3BbiLpkXA5hZLXPMThOyz1Y79ZOEC5eiyhUlXL1g6P7ylOKMw== - dependencies: - "@backstage/config" "^0.1.14" - "@backstage/types" "^0.1.2" - "@backstage/version-bridge" "^0.1.2" - history "^5.0.0" - prop-types "^15.7.2" - react-router-dom "6.0.0-beta.0" - zen-observable "^0.8.15" - -"@backstage/core-plugin-api@^0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.7.0.tgz#e53f3aa5bbf074a70fcaf264b04402637008659c" - integrity sha512-SVzrJjvEjWzJgIqfFUjQjqW0RGCzj6zgLULpSgP53GQat70I0wje6E4n0blNU+/q7hpt6PoIT0lgZtqFOJrfYQ== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/types" "^0.1.3" - "@backstage/version-bridge" "^0.1.2" - history "^5.0.0" - prop-types "^15.7.2" - react-router-dom "6.0.0-beta.0" - zen-observable "^0.8.15" - -"@backstage/core-plugin-api@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@backstage/core-plugin-api/-/core-plugin-api-0.8.0.tgz#e2096bff679183168a7f9b47ed27c50a01970e32" - integrity sha512-hHTrh0lui7TAUnLdqyvNznBuoh3PNEwHnlWCcnp2wfvLc7syG5bjnzorATknCixIiWsPfod5qtSSNeO4hQoFVQ== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/types" "^0.1.3" - "@backstage/version-bridge" "^0.1.2" - history "^5.0.0" - prop-types "^15.7.2" - react-router-dom "6.0.0-beta.0" - zen-observable "^0.8.15" - -"@backstage/dev-utils@^0.2.21-next.0": - version "0.2.25" - resolved "https://registry.npmjs.org/@backstage/dev-utils/-/dev-utils-0.2.25.tgz#c841fc845dcb01e22b55ac93d12ab057cc48bd2e" - integrity sha512-MbatjRFaA5SIILSXBt+oq3S90dgGr9VZHKIqEX5voWK25dyGgUMxeb8M9rlJmaOQIdeUnHLl64Zqnt1dkukl0A== - dependencies: - "@backstage/app-defaults" "^0.2.1" - "@backstage/catalog-model" "^0.13.0" - "@backstage/core-app-api" "^0.6.0" - "@backstage/core-components" "^0.9.1" - "@backstage/core-plugin-api" "^0.8.0" - "@backstage/integration-react" "^0.1.25" - "@backstage/plugin-catalog-react" "^0.9.0" - "@backstage/test-utils" "^0.3.0" - "@backstage/theme" "^0.2.15" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@testing-library/jest-dom" "^5.10.1" - "@testing-library/react" "^11.2.5" - "@testing-library/user-event" "^13.1.8" - react-hot-loader "^4.13.0" - react-router "6.0.0-beta.0" - react-router-dom "6.0.0-beta.0" - react-use "^17.2.4" - zen-observable "^0.8.15" - -"@backstage/errors@^0.2.0", "@backstage/errors@^0.2.2": - version "0.2.2" - resolved "https://registry.npmjs.org/@backstage/errors/-/errors-0.2.2.tgz#2113e0bc859e645b8b59bfcb435f7535739b02f8" - integrity sha512-s6Ru3NL4oFiHwNsMY1uiwqNKuOu9KQWkpse3adWZsDu1fCQKOw2omQ2qBHZ4Uj1xJ6x9Ye0yNTJ4vfHfdwiaEg== - dependencies: - "@backstage/types" "^0.1.3" - cross-fetch "^3.1.5" - serialize-error "^8.0.1" - -"@backstage/integration-react@^0.1.25": - version "0.1.25" - resolved "https://registry.npmjs.org/@backstage/integration-react/-/integration-react-0.1.25.tgz#ebbdd30d66e1d210b7cd33a682ad2be0d5ea5fc0" - integrity sha512-WI0UuXcX3m1OotfvqCVtQgyish9Gk+YkLVyrwWbzHFZ0isbT2I2i6VD/iau1X55oZpaubxLZ5CzYzA4QcAdm4w== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/core-components" "^0.9.1" - "@backstage/core-plugin-api" "^0.8.0" - "@backstage/integration" "^0.8.0" - "@backstage/theme" "^0.2.15" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - react-use "^17.2.4" - "@backstage/integration-react@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/integration-react/-/integration-react-1.0.0.tgz#8075e65c6b5387631d27a9c242e7a4fff6f92417" @@ -2035,19 +1436,6 @@ "@material-ui/lab" "4.0.0-alpha.57" react-use "^17.2.4" -"@backstage/integration@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@backstage/integration/-/integration-0.8.0.tgz#d74131ad347272b4935973aa4bd098fad9548ce6" - integrity sha512-GfNJRdcU7NMFjVqUSJOFRRrqEjKRGmgsL+s3TDtqmqqji7XPttTKD43+Ou50hRf0dkIETe5m1XHr1Fd5ksMt9A== - dependencies: - "@backstage/config" "^0.1.15" - "@octokit/auth-app" "^3.4.0" - "@octokit/rest" "^18.5.3" - cross-fetch "^3.1.5" - git-url-parse "^11.6.0" - lodash "^4.17.21" - luxon "^2.0.2" - "@backstage/integration@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/integration/-/integration-1.0.0.tgz#e307cfddea014bfb0eb2281a5ae25ea0b742e9cf" @@ -2061,33 +1449,6 @@ lodash "^4.17.21" luxon "^2.0.2" -"@backstage/plugin-catalog-react@^0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-0.9.0.tgz#ff8c09ec455655fadb2c2fafd578908138b858bc" - integrity sha512-qSiz/q7B/IlkHkx3Tcrbokm+jIOPMGjSzxdnKWv5c6KcqF+XLiVr6TavLWcAjaxk81skF8N3RCDG68tA1lL0HA== - dependencies: - "@backstage/catalog-client" "^0.9.0" - "@backstage/catalog-model" "^0.13.0" - "@backstage/core-components" "^0.9.1" - "@backstage/core-plugin-api" "^0.8.0" - "@backstage/errors" "^0.2.2" - "@backstage/integration" "^0.8.0" - "@backstage/plugin-permission-common" "^0.5.2" - "@backstage/plugin-permission-react" "^0.3.3" - "@backstage/types" "^0.1.3" - "@backstage/version-bridge" "^0.1.2" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - classnames "^2.2.6" - jwt-decode "^3.1.0" - lodash "^4.17.21" - qs "^6.9.4" - react-router "6.0.0-beta.0" - react-use "^17.2.4" - yaml "^1.10.0" - zen-observable "^0.8.15" - "@backstage/plugin-catalog-react@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@backstage/plugin-catalog-react/-/plugin-catalog-react-1.0.0.tgz#4f42c070ffe5c9690e45a5288e18bacd8d4e0e66" @@ -2116,124 +1477,11 @@ yaml "^1.10.0" zen-observable "^0.8.15" -"@backstage/plugin-home@^0.4.15": - version "0.4.19" - resolved "https://registry.npmjs.org/@backstage/plugin-home/-/plugin-home-0.4.19.tgz#a68a594557db8afdc76c2b08de7457d65258d597" - integrity sha512-yDu+m2zWGMqUaXZwuZWQdE8/ENdLdcobvt8q1lP/+eUXG1yO3BuBcqlss+cPkdO0d0LeW1WoJZZ20ZpYLUJ+6w== - dependencies: - "@backstage/catalog-model" "^1.0.0" - "@backstage/core-components" "^0.9.2" - "@backstage/core-plugin-api" "^1.0.0" - "@backstage/plugin-catalog-react" "^1.0.0" - "@backstage/plugin-search" "^0.7.4" - "@backstage/theme" "^0.2.15" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - lodash "^4.17.21" - react-router "6.0.0-beta.0" - react-use "^17.2.4" - -"@backstage/plugin-search-common@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@backstage/plugin-search-common/-/plugin-search-common-0.3.2.tgz#15984ba4c14f8a9119168e8c79344ef8101863dc" - integrity sha512-7vcpRo+5MB/QW/M77zPfcqxw0LzcQCHNXql0uxF+qBwVPJSHz9QB+YBuzGyaAlqfm5UPFXuweLQGqtoB+0DMLg== - dependencies: - "@backstage/plugin-permission-common" "^0.5.3" - "@backstage/types" "^1.0.0" - -"@backstage/plugin-search@^0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/@backstage/plugin-search/-/plugin-search-0.7.4.tgz#d6571da128342d122f80253a756ece0a702967f9" - integrity sha512-mZBNJ78pAbdRyHdSAzSInPT74XcE+FvemmDXZnXShugVuWvIsDt3j7S/UQdQcOINQkEOuo/MqDbuWqkxQFW98w== - dependencies: - "@backstage/catalog-model" "^1.0.0" - "@backstage/config" "^1.0.0" - "@backstage/core-components" "^0.9.2" - "@backstage/core-plugin-api" "^1.0.0" - "@backstage/errors" "^1.0.0" - "@backstage/plugin-catalog-react" "^1.0.0" - "@backstage/plugin-search-common" "^0.3.2" - "@backstage/theme" "^0.2.15" - "@backstage/types" "^1.0.0" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.9.1" - "@material-ui/lab" "4.0.0-alpha.57" - qs "^6.9.4" - react-router "6.0.0-beta.0" - react-router-dom "6.0.0-beta.0" - react-text-truncate "^0.18.0" - react-use "^17.2.4" - -"@backstage/release-manifests@^0.0.1": - version "0.0.1" - resolved "https://registry.npmjs.org/@backstage/release-manifests/-/release-manifests-0.0.1.tgz#c84ef4c21d5d96c644fb9595106c6203b86ecf5c" - integrity sha512-FPB7Uvx5ajz9d+XoloCR4ZaJ4QoTlf6lYoyfSy5u0VjVZrqaPQsRAROYbXKhj+bOnH4zmLdaZsRndY/sGkvNNQ== - dependencies: - cross-fetch "^3.0.6" - -"@backstage/search-common@^0.2.2": - version "0.2.4" - resolved "https://registry.npmjs.org/@backstage/search-common/-/search-common-0.2.4.tgz#2fc8a13bebad14a8aad0594988e6f566bc30ec15" - integrity sha512-1h9lelwN5XRqvxAsm3QLCt3ONrSRLgQyoh2cssQ1bbUr9zR+pveeeCZ824jRfMVHF0xIJZ2YJGTtaZ9vF+77fQ== - dependencies: - "@backstage/plugin-permission-common" "^0.5.1" - "@backstage/types" "^0.1.3" - -"@backstage/test-utils@^0.2.4": - version "0.2.6" - resolved "https://registry.npmjs.org/@backstage/test-utils/-/test-utils-0.2.6.tgz#d271268196c1ec8804cdea240763032cdb36987d" - integrity sha512-vkWBWQxuFDEIrGVSXVdJzxYyGi7m+AVehbECeLFz7XIwPq4fkhOrGDCw1Ovkmp9IFLTysQBe2p0fI0Az7Xu38w== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/core-app-api" "^0.5.4" - "@backstage/core-plugin-api" "^0.7.0" - "@backstage/plugin-permission-common" "^0.5.1" - "@backstage/plugin-permission-react" "^0.3.2" - "@backstage/theme" "^0.2.15" - "@backstage/types" "^0.1.3" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.11.2" - "@testing-library/jest-dom" "^5.10.1" - "@testing-library/react" "^11.2.5" - "@testing-library/user-event" "^13.1.8" - cross-fetch "^3.1.5" - react-router "6.0.0-beta.0" - react-router-dom "6.0.0-beta.0" - zen-observable "^0.8.15" - -"@backstage/test-utils@^0.3.0": - version "0.3.0" - resolved "https://registry.npmjs.org/@backstage/test-utils/-/test-utils-0.3.0.tgz#9c47efd97cdfa3809fe8493a39795a59373d00bd" - integrity sha512-UmJE0dZhtZGKcl58Yru2whEApamY71eJaC4uV0APySUjh0Z39pPxOOkM8a9VKH0/oafqoS4LXUJ4vGDzmy11UQ== - dependencies: - "@backstage/config" "^0.1.15" - "@backstage/core-app-api" "^0.6.0" - "@backstage/core-plugin-api" "^0.8.0" - "@backstage/plugin-permission-common" "^0.5.2" - "@backstage/plugin-permission-react" "^0.3.3" - "@backstage/theme" "^0.2.15" - "@backstage/types" "^0.1.3" - "@material-ui/core" "^4.12.2" - "@material-ui/icons" "^4.11.2" - "@testing-library/jest-dom" "^5.10.1" - "@testing-library/react" "^11.2.5" - "@testing-library/user-event" "^13.1.8" - cross-fetch "^3.1.5" - react-router "6.0.0-beta.0" - react-router-dom "6.0.0-beta.0" - zen-observable "^0.8.15" - -"@backstage/types@^0.1.1", "@backstage/types@^0.1.2", "@backstage/types@^0.1.3": +"@backstage/types@^0.1.3": version "0.1.3" resolved "https://registry.npmjs.org/@backstage/types/-/types-0.1.3.tgz#6613d8cbdf97d42d31cd1e66a833df533e7ccf14" integrity sha512-fJVi4oVrlO+G3PRv1fYSll9/X4pE11HLnkI//Geare9sP6wSfp/2zXpLYfKVsG0e24jOl7Swkc8lwLkQ90zMaQ== -"@backstage/version-bridge@^0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@backstage/version-bridge/-/version-bridge-0.1.2.tgz#a24f42e0f383d497576f8c9d43851c6538345c03" - integrity sha512-hwThlwfVCXaHva6IBakbHlWt3c1ev3KIwukpBlU3tDgi6tTvG8tPDe2aRwz7zzPHZRtgEw6JPvjA9gn9vSPbzQ== - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -2244,11 +1492,11 @@ resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-5.0.2.tgz#b23080fa35520e993a8a37a0f5bca26aa4650a48" integrity sha512-NBEJlHWrhQucLhZGHtSxM2loSaNUMajC7KOYJLyfcdW/6goVoff2HoYI3bz8YCDN0wKGbxtUL0gx2dvHpvnWlw== -"@changesets/apply-release-plan@^5.0.4": - version "5.0.4" - resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-5.0.4.tgz#fefffecf73b59dbee7ae905b3c6a2e64c489f0cb" - integrity sha512-czayDIrgC8qBnqwClvh9nxjCMem+XZG7xtfdYwq3dxpzA30qGppcI0i088VYug5RCFR+l1N+HUvkujSZuBK65w== -======= +"@changesets/apply-release-plan@^5.0.5": + version "5.0.5" + resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-5.0.5.tgz#d67b1e022c876d18d887f3c475a3abcad9944b68" + integrity sha512-CxL9dkhzjHiVmXCyHgsLCQj7i/coFTMv/Yy0v6BC5cIWZkQml+lf7zvQqAcFXwY7b54HxRWZPku02XFB53Q0Uw== + dependencies: "@babel/runtime" "^7.10.4" "@changesets/config" "^1.7.0" "@changesets/get-version-range-type" "^0.3.2" @@ -2267,49 +1515,22 @@ version "5.1.0" resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.1.0.tgz#0fcb18253998e3bc037a554874de43bcc58c4840" integrity sha512-iYlqffCMhcwZ+6Cv8cimf10OBGYXQKufBI7J6htpRgCV2nT99RKXEjbYOtrXWKQqzu0XxOsk15apSEwjZN0JRw== ->>>>>>> e5aaf7bb66 (bump dependencies) - dependencies: - "@babel/runtime" "^7.10.4" - "@changesets/config" "^1.6.4" - "@changesets/get-version-range-type" "^0.3.2" - "@changesets/git" "^1.3.0" - "@changesets/types" "^4.0.2" - "@manypkg/get-packages" "^1.1.3" - detect-indent "^6.0.0" - fs-extra "^7.0.1" - lodash.startcase "^4.4.0" - outdent "^0.5.0" - prettier "^1.19.1" - resolve-from "^5.0.0" - semver "^5.4.1" - -"@changesets/assemble-release-plan@^5.0.5": - version "5.0.5" - resolved "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.0.5.tgz#60e4adc9bf458dd6ec38dee78d8f1bbeddfe3936" - integrity sha512-ejCVSM4I1jgaNi30we3/qltj2NQtS68w7C3H8Gvb6ZOvbIpAW/Tr0uMmPgRj4Vzkez5+fx0If02AvOdssz1btA== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.0" - "@changesets/types" "^4.0.2" + "@changesets/get-dependents-graph" "^1.3.1" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" semver "^5.4.1" +"@changesets/changelog-git@^0.1.10": + version "0.1.10" + resolved "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.10.tgz#df616e92671082a7976381280b4af98ff3a7067d" + integrity sha512-4t7zqPOv3aDZp4Y+AyDhiOG2ypaUXDpOz+MT1wOk3uSZNv78AaDByam0hdk5kfYuH1RlMecWU4/U5lO1ZL5eaA== + dependencies: + "@changesets/types" "^4.1.0" + "@changesets/cli@^2.14.0": -<<<<<<< HEAD - version "2.20.0" - resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.20.0.tgz#f24dbd38bd4bc47bf083e59b6bb9cbf531465808" - integrity sha512-IUYSgZKtS+wXPD5hxfnCfZ1JWCbBI0CRrhxpkgVKcXDwpxiRU8stCwuSuVj14kiYlThuH2zL0/ZuGvhF4r28Gg== - dependencies: - "@babel/runtime" "^7.10.4" - "@changesets/apply-release-plan" "^5.0.4" - "@changesets/assemble-release-plan" "^5.0.5" - "@changesets/config" "^1.6.4" - "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.0" - "@changesets/get-release-plan" "^3.0.5" - "@changesets/git" "^1.3.0" -======= version "2.21.0" resolved "https://registry.npmjs.org/@changesets/cli/-/cli-2.21.0.tgz#b689f91ed908150efc06e0985e6b4cfbd9aea3a3" integrity sha512-cJXRg28MmF9VbQrlwSjpY4AJA2xZUbXFCpQ3kFmX0IeppO7wknZ2QfocAhIqwM828t8d3R4Zpi5xnvJ/crIcQw== @@ -2323,12 +1544,11 @@ "@changesets/get-dependents-graph" "^1.3.1" "@changesets/get-release-plan" "^3.0.6" "@changesets/git" "^1.3.1" ->>>>>>> e5aaf7bb66 (bump dependencies) "@changesets/logger" "^0.0.5" - "@changesets/pre" "^1.0.9" - "@changesets/read" "^0.5.3" - "@changesets/types" "^4.0.2" - "@changesets/write" "^0.1.6" + "@changesets/pre" "^1.0.10" + "@changesets/read" "^0.5.4" + "@changesets/types" "^4.1.0" + "@changesets/write" "^0.1.7" "@manypkg/get-packages" "^1.1.3" "@types/is-ci" "^3.0.0" "@types/semver" "^6.0.0" @@ -2347,15 +1567,15 @@ term-size "^2.1.0" tty-table "^2.8.10" -"@changesets/config@^1.6.4": - version "1.6.4" - resolved "https://registry.npmjs.org/@changesets/config/-/config-1.6.4.tgz#c904c84f067b49c09b378618b751089dd29ed0b7" - integrity sha512-WWa8eR8GzS/p2atLc/+5UEDn7fsRCZ+/sShLkB/3efVbTkSTB1PwoKwQRXLYXM1DY289T7UnJT4HLZA3Gcreww== +"@changesets/config@^1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@changesets/config/-/config-1.7.0.tgz#18353f88ea8153d7f1fb7c321a3fe8667035eddb" + integrity sha512-Ctk6ZO5Ay6oZ95bbKXyA2a1QG0jQUePaGCY6BKkZtUG4PgysesfmiQOPgOY5OsRMt8exJeo6l+DJ75YiKmh0rQ== dependencies: "@changesets/errors" "^0.1.4" - "@changesets/get-dependents-graph" "^1.3.0" + "@changesets/get-dependents-graph" "^1.3.1" "@changesets/logger" "^0.0.5" - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" fs-extra "^7.0.1" micromatch "^4.0.2" @@ -2367,30 +1587,17 @@ dependencies: extendable-error "^0.1.5" -"@changesets/get-dependents-graph@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.0.tgz#892bbb63406911baac1f77a31303620492d466ec" - integrity sha512-4VHQWEluWySPgDdkL94YNxrEjDb9nwNFw515sWDmVrlfpQN5qaP1hdaotrp4mJm4ky85t4cTlrWSP+CTY7IDbw== +"@changesets/get-dependents-graph@^1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.1.tgz#f1ebadbd4e17bb2b987c4542a588e0ee9f2e829a" + integrity sha512-HwUs8U0XK/ZqCQon1/80jJEyswS8JVmTiHTZslrTpuavyhhhxrSpO1eVCdKgaVHBRalOw3gRzdS3uzkmqYsQSQ== dependencies: - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" chalk "^2.1.0" fs-extra "^7.0.1" semver "^5.4.1" -<<<<<<< HEAD -"@changesets/get-release-plan@^3.0.5": - version "3.0.5" - resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.5.tgz#c05cff031bba737c8dd236afe97e77b007ee44a3" - integrity sha512-67td3LA1RTJpY5Q+wJaTTRtAjZ2suAhDfj3VRjFv0gCgUPXs8rNx17n9UPbegPTQjeTS1r7hVRVifycmT0fQtA== - dependencies: - "@babel/runtime" "^7.10.4" - "@changesets/assemble-release-plan" "^5.0.5" - "@changesets/config" "^1.6.4" - "@changesets/pre" "^1.0.9" - "@changesets/read" "^0.5.3" - "@changesets/types" "^4.0.2" -======= "@changesets/get-release-plan@^3.0.6": version "3.0.6" resolved "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.6.tgz#15aac108b9d0f139841562c9372d8cfd738503dc" @@ -2402,7 +1609,6 @@ "@changesets/pre" "^1.0.10" "@changesets/read" "^0.5.4" "@changesets/types" "^4.1.0" ->>>>>>> e5aaf7bb66 (bump dependencies) "@manypkg/get-packages" "^1.1.3" "@changesets/get-version-range-type@^0.3.2": @@ -2410,14 +1616,14 @@ resolved "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67" integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== -"@changesets/git@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@changesets/git/-/git-1.3.0.tgz#7f62e1983552efecb738054db5178eef77f41241" - integrity sha512-Ydj4lWX33d2PCDaTXOMSbyTjgk1go1V6EyXjKTmOV7nB/qvgKdDZLSt+AexKWKp3Ac2FTrtVnl9G5gMNVYNmuQ== +"@changesets/git@^1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/@changesets/git/-/git-1.3.1.tgz#e86b4d2b28acdf9bc8949031027a9ac12420b99e" + integrity sha512-yg60QUi38VA0XGXdBy9SRYJhs8xJHE97Z1CaB/hFyByBlh5k1i+avFNBvvw66MsoT/aiml6y9scIG6sC8R5mfg== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" is-subdir "^1.1.1" spawndamnit "^2.0.0" @@ -2429,51 +1635,51 @@ dependencies: chalk "^2.1.0" -"@changesets/parse@^0.3.11": - version "0.3.11" - resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.11.tgz#b53485f36152e6e9a097b56fc46cafb6705ce2b5" - integrity sha512-w5/X8KijcCrvv5lHimXIBR9o35c78niiBoesBjBUlWeifwPz0DHc/lzVYJKRkA5w0BGqft6T/9hKI68GaYj5wA== +"@changesets/parse@^0.3.12": + version "0.3.12" + resolved "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.12.tgz#60569bb39ad4ffe47fc01d431613ce5c42e6590f" + integrity sha512-FOBz2L1dT9PcvyQU1Qp2sQ0B4Jw7EgRDAKFVzAQwhzXqCq03TcE7vgKU6VSksCJAioMYDowdVVHNnv/Uak6yZQ== dependencies: - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" js-yaml "^3.13.1" -"@changesets/pre@^1.0.9": - version "1.0.9" - resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.9.tgz#f1a0efea42733c25ef4a782377b2ac61023bd1b7" - integrity sha512-F3+qMun89KlynecBD15fEpwGT/KxbYb3WGeut6w1xhZb0u7V/jdcPy9b+kJ2xmBqFZLn1WteWIP96IjxS57H7A== +"@changesets/pre@^1.0.10": + version "1.0.10" + resolved "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.10.tgz#e677031f271cdab8443b21e0b3cda036a3919c30" + integrity sha512-cZC1C1wTSC17/TcTWivAQ4LAXz5jEYDuy3UeZiBz1wnTTzMHyTHLLwJi60juhl4hawXunDLw0mwZkcpS8Ivitg== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" "@manypkg/get-packages" "^1.1.3" fs-extra "^7.0.1" -"@changesets/read@^0.5.3": - version "0.5.3" - resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.3.tgz#5afb14ee0e806751c255e94fe8742843a9b12487" - integrity sha512-zoj5NjNR4AhiGXz6aHTxsBLojChHgDOSbz6VfAVxMKX7tF7UhyNYptG2VEbSjxeamNKABx6k1pkM2IyVVlOcbQ== +"@changesets/read@^0.5.4": + version "0.5.4" + resolved "https://registry.npmjs.org/@changesets/read/-/read-0.5.4.tgz#c6dc6ab00c4f70f2ce6766433d92eebde1b00e7a" + integrity sha512-12dTx+p5ztFs9QgJDGHRHR6HzTIbHct9S4lK2I/i6Qkz1cNfAPVIbdoMCdbPIWeLank9muMUjiiFmCWJD7tQIg== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/git" "^1.3.0" + "@changesets/git" "^1.3.1" "@changesets/logger" "^0.0.5" - "@changesets/parse" "^0.3.11" - "@changesets/types" "^4.0.2" + "@changesets/parse" "^0.3.12" + "@changesets/types" "^4.1.0" chalk "^2.1.0" fs-extra "^7.0.1" p-filter "^2.1.0" -"@changesets/types@^4.0.1", "@changesets/types@^4.0.2": - version "4.0.2" - resolved "https://registry.npmjs.org/@changesets/types/-/types-4.0.2.tgz#d20e1e45bdc96a97cc509c655e708b53a9292465" - integrity sha512-OeDaB7D+WVy/ErymPzFm58IeGvz4DOl+oedyZETfnkfMezF/Uhrm1Ub6MHrO5LcAaQTW+ptDmr0fmaVyoTxgHw== +"@changesets/types@^4.0.1", "@changesets/types@^4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0" + integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw== -"@changesets/write@^0.1.6": - version "0.1.6" - resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.6.tgz#798d882bada93f391902a854a17965f3b80a5201" - integrity sha512-JWE2gJs9eHhorxqembkf43fllKlCz+sp1TJKSheaWfhWILMHPdfa/xQG4+sMZkISo1qZ+IlJyiBLha6iGGjXyA== +"@changesets/write@^0.1.7": + version "0.1.7" + resolved "https://registry.npmjs.org/@changesets/write/-/write-0.1.7.tgz#671def0d871cf5970c5b2f766f0ac4b19ecf1ddb" + integrity sha512-6r+tc6u2l5BBIwEAh7ivRYWFir+XKiw0q/6Hx6NJA4dSN5fNu9uyWRQ+IMHCllD9dBcsh+e79sOepc+xT8l28g== dependencies: "@babel/runtime" "^7.10.4" - "@changesets/types" "^4.0.2" + "@changesets/types" "^4.1.0" fs-extra "^7.0.1" human-id "^1.0.2" prettier "^1.19.1" @@ -2602,8 +1808,6 @@ "@lezer/common" "^0.15.5" "@lezer/lr" "^0.15.0" -<<<<<<< HEAD -<<<<<<< HEAD "@codemirror/legacy-modes@^0.19.0": version "0.19.1" resolved "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-0.19.1.tgz#7dc3b5df1842060648f75764ab6919fcfce3ea1a" @@ -2642,14 +1846,7 @@ "@codemirror/state" "^0.19.0" "@codemirror/view" "^0.19.0" -"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.5": - version "0.19.8" - resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.8.tgz#f9b572c287bcef08d150b4a539e0128db62b2091" - integrity sha512-1vusIkxSD0vK5KQ22JO/4Ejfww5268PgM/CpKNBSpTpWZEFlZbmOPyRiY4HXO2oEzOpypbA/walMiNInWnrT0Q== - dependencies: - "@codemirror/state" "^0.19.0" - -"@codemirror/rangeset@^0.19.1": +"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.1", "@codemirror/rangeset@^0.19.5": version "0.19.9" resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz#e80895de93c39dc7899f5be31d368c9d88aa4efc" integrity sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ== @@ -2681,45 +1878,13 @@ version "0.19.9" resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz#b797f9fbc204d6dc7975485e231693c09001b0dd" integrity sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw== -======= -"@codemirror/rangeset@^0.19.0": - version "0.19.2" - resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.2.tgz#d7a999e4273c00fecef4aba8535a426073cdcddf" - integrity sha512-5d+X8LtmeZtfFtKrSx57bIHRUpKv2HD0b74clp4fGA7qJLLfYehF6FGkJJxJb8lKsqAga1gdjjWr0jiypmIxoQ== - dependencies: - "@codemirror/state" "^0.19.0" - -======= -"@codemirror/rangeset@^0.19.0": - version "0.19.2" - resolved "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.2.tgz#d7a999e4273c00fecef4aba8535a426073cdcddf" - integrity sha512-5d+X8LtmeZtfFtKrSx57bIHRUpKv2HD0b74clp4fGA7qJLLfYehF6FGkJJxJb8lKsqAga1gdjjWr0jiypmIxoQ== - dependencies: - "@codemirror/state" "^0.19.0" - ->>>>>>> e5aaf7bb66 (bump dependencies) -"@codemirror/state@^0.19.0", "@codemirror/state@^0.19.3": - version "0.19.6" - resolved "https://registry.npmjs.org/@codemirror/state/-/state-0.19.6.tgz#d631f041d39ce41b7891b099fca26cb1fdb9763e" - integrity sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw== -<<<<<<< HEAD ->>>>>>> f9b03ab02f (fixups) dependencies: "@codemirror/text" "^0.19.0" -"@codemirror/stream-parser@^0.19.0", "@codemirror/stream-parser@^0.19.6": +"@codemirror/stream-parser@^0.19.0", "@codemirror/stream-parser@^0.19.2", "@codemirror/stream-parser@^0.19.6": version "0.19.7" resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.7.tgz#99a9696307b90677f6e3abe29ea6d77c1c0a8db5" integrity sha512-4ExcbKksmU4PIT8s11/dPESgMNLQqlMlbQzRQ1CyMcmygcuQk+58zQ84nv/X17OCUd2ephZ1DKEaHHACifzCiA== -======= - dependencies: - "@codemirror/text" "^0.19.0" - -"@codemirror/stream-parser@^0.19.2": - version "0.19.2" - resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.2.tgz#793428e55aa7b9daa64cb733973e5d5e3d9a2306" - integrity sha512-hBKRQlyu8GUOrY33xZ6/1kAfNZ8ZUm6cX9a7mPx8zAAqnpz/fpksC/qJRrkg1mPMBwxm+JG4fqAwDGJ3gLVniQ== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@codemirror/highlight" "^0.19.0" "@codemirror/language" "^0.19.0" @@ -2728,33 +1893,10 @@ "@lezer/common" "^0.15.0" "@lezer/lr" "^0.15.0" -<<<<<<< HEAD -"@codemirror/stream-parser@^0.19.2": - version "0.19.2" - resolved "https://registry.npmjs.org/@codemirror/stream-parser/-/stream-parser-0.19.2.tgz#793428e55aa7b9daa64cb733973e5d5e3d9a2306" - integrity sha512-hBKRQlyu8GUOrY33xZ6/1kAfNZ8ZUm6cX9a7mPx8zAAqnpz/fpksC/qJRrkg1mPMBwxm+JG4fqAwDGJ3gLVniQ== - dependencies: - "@codemirror/highlight" "^0.19.0" - "@codemirror/language" "^0.19.0" - "@codemirror/state" "^0.19.0" - "@codemirror/text" "^0.19.0" - "@lezer/common" "^0.15.0" - "@lezer/lr" "^0.15.0" - -<<<<<<< HEAD "@codemirror/text@^0.19.0", "@codemirror/text@^0.19.2", "@codemirror/text@^0.19.4", "@codemirror/text@^0.19.6": version "0.19.6" resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz#9adcbd8137f69b75518eacd30ddb16fd67bbac45" integrity sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA== -======= -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -"@codemirror/text@^0.19.0": - version "0.19.5" - resolved "https://registry.npmjs.org/@codemirror/text/-/text-0.19.5.tgz#75033af2476214e79eae22b81ada618815441c18" - integrity sha512-Syu5Xc7tZzeUAM/y4fETkT0zgGr48rDG+w4U38bPwSIUr+L9S/7w2wDE1WGNzjaZPz12F6gb1gxWiSTg9ocLow== -<<<<<<< HEAD ->>>>>>> f9b03ab02f (fixups) "@codemirror/theme-one-dark@^0.19.1": version "0.19.1" @@ -2772,42 +1914,18 @@ dependencies: "@codemirror/state" "^0.19.0" "@codemirror/view" "^0.19.0" -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -"@codemirror/view@^0.19.0": - version "0.19.27" - resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.27.tgz#76e5dc19ecb4ce53e9fef1d29245040d7ff64183" - integrity sha512-Uz/LecEf7CyvMWaQBlKtbJCYn0hRnEZ2yYvuZVy9YMhmvGmES6ec7FaKw7lDFFOMLwLbBThc9kfw4DCHreHN1w== -<<<<<<< HEAD - dependencies: - "@codemirror/rangeset" "^0.19.0" - "@codemirror/state" "^0.19.3" - "@codemirror/text" "^0.19.0" - style-mod "^4.0.0" - w3c-keyname "^2.2.4" - -<<<<<<< HEAD -"@codemirror/view@^0.19.22", "@codemirror/view@^0.19.23", "@codemirror/view@^0.19.31", "@codemirror/view@^0.19.34", "@codemirror/view@^0.19.44", "@codemirror/view@^0.19.45": +"@codemirror/view@^0.19.0", "@codemirror/view@^0.19.22", "@codemirror/view@^0.19.23", "@codemirror/view@^0.19.31", "@codemirror/view@^0.19.34", "@codemirror/view@^0.19.44", "@codemirror/view@^0.19.45": version "0.19.47" resolved "https://registry.npmjs.org/@codemirror/view/-/view-0.19.47.tgz#2163c3016d7680bf50dd695c0e3abdaf80f45363" integrity sha512-SfbagKvJQl5dtt+9wYpo9sa3ZkMgUxTq+/hXDf0KVwIx+zu3cJIqfEm9xSx6yXkq7it7RsPGHaPasApNffF/8g== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: - "@codemirror/rangeset" "^0.19.0" + "@codemirror/rangeset" "^0.19.5" "@codemirror/state" "^0.19.3" "@codemirror/text" "^0.19.0" style-mod "^4.0.0" w3c-keyname "^2.2.4" -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -======= ->>>>>>> f9b03ab02f (fixups) "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -2919,23 +2037,16 @@ ts-node "^9" tslib "^2" -<<<<<<< HEAD -"@eslint/eslintrc@^1.0.5": - version "1.0.5" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" - integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== -======= -"@eslint/eslintrc@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.0.tgz#7ce1547a5c46dfe56e1e45c3c9ed18038c721c6a" - integrity sha512-igm9SjJHNEJRiUnecP/1R5T3wKLEJ7pL6e2P+GUSfCd0dGjPYYZve08uzw8L2J8foVHFz+NGu12JxRcU2gGo6w== ->>>>>>> e5aaf7bb66 (bump dependencies) +"@eslint/eslintrc@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" + integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.2.0" + espree "^9.3.1" globals "^13.9.0" - ignore "^4.0.6" + ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.0.4" @@ -3007,9 +2118,9 @@ xcase "^2.0.1" "@google-cloud/common@^3.7.0": - version "3.7.0" - resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.7.0.tgz#ee3fba75aeaa614978aebf8740380670026592aa" - integrity sha512-oFgpKLjH9JTOAyQd3kB36iSuH8wNSpDKb1TywlB6zcsG0xmJFxLutmfPhz03KUxRMNQOZ1K1Gc9BYvJifVnGVA== + version "3.10.0" + resolved "https://registry.npmjs.org/@google-cloud/common/-/common-3.10.0.tgz#454d1155bb512109cd83c6183aabbd39f9aabda7" + integrity sha512-XMbJYMh/ZSaZnbnrrOFfR/oQrb0SxG4qh6hDisWCoEbFcBHV0qHQo4uXfeMCzolx2Mfkh6VDaOGg+hyJsmxrlw== dependencies: "@google-cloud/projectify" "^2.0.0" "@google-cloud/promisify" "^2.0.0" @@ -3017,23 +2128,16 @@ duplexify "^4.1.1" ent "^2.2.0" extend "^3.0.2" - google-auth-library "^7.0.2" + google-auth-library "^7.14.0" retry-request "^4.2.2" teeny-request "^7.0.0" -<<<<<<< HEAD "@google-cloud/container@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@google-cloud/container/-/container-3.0.0.tgz#b28d086152ac19f22f2574b7e0a39774379fb885" integrity sha512-Jr+QKc6kZ9eehZunvemocB4hDd1nE3OBPo8zb0VX9lv7y+PPxksJl2RPEktFRNs32mQ9/kWLsvjLdGAHYsaOug== -======= -"@google-cloud/container@^2.2.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@google-cloud/container/-/container-2.3.0.tgz#a23f046948dbaf8cced008d419580cb600334efc" - integrity sha512-Tv8fR7JjlZr3oh476hMsf9yqGXbb/+81n0Va1Uc3reWjAdUXCYztH3/o/HMvh6yvd06j8VLLUxyBwAIb5PtW5g== ->>>>>>> 76d216e74b (fixups) dependencies: - google-gax "^2.12.0" + google-gax "^2.24.1" "@google-cloud/firestore@^5.0.2": version "5.0.2" @@ -3098,12 +2202,12 @@ meros "^1.1.4" "@graphql-codegen/cli@^2.3.1": - version "2.3.1" - resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.3.1.tgz#66083293b60e3182603d70031210d59e6f1a16e5" - integrity sha512-xMSvYqFtnRXOp/sVJSyqiFTm70X8ouLXiq5o/R/D3yQtA6NNudAC+Q4oxg9/LZKnRDL6pehwdC8CNnQk0Tf7Sw== + version "2.6.2" + resolved "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-2.6.2.tgz#a9aa4656141ee0998cae8c7ad7d0bf9ca8e0c9ae" + integrity sha512-UO75msoVgvLEvfjCezM09cQQqp32+mR8Ma1ACsBpr7nroFvHbgcu2ulx1cMovg4sxDBCsvd9Eq/xOOMpARUxtw== dependencies: - "@graphql-codegen/core" "2.4.0" - "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/core" "2.5.1" + "@graphql-codegen/plugin-helpers" "^2.4.1" "@graphql-tools/apollo-engine-loader" "^7.0.5" "@graphql-tools/code-file-loader" "^7.0.6" "@graphql-tools/git-loader" "^7.0.5" @@ -3133,7 +2237,7 @@ listr "^0.14.3" listr-update-renderer "^0.5.0" log-symbols "^4.0.0" - minimatch "^3.0.4" + minimatch "^4.0.0" mkdirp "^1.0.4" string-env-interpolation "^1.0.1" ts-log "^2.2.3" @@ -3143,26 +2247,17 @@ yaml "^1.10.0" yargs "^17.0.0" -"@graphql-codegen/core@2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.4.0.tgz#d94dcc088b5e117c847ce5b10c4fe1eb7325e180" - integrity sha512-5RiYE1+07jayp/3w/bkyaCXtfKNeKmRabpPP4aRi369WeH2cH37l2K8NbhkIU+zhpnhoqMID61TO56x2fKldZQ== +"@graphql-codegen/core@2.5.1": + version "2.5.1" + resolved "https://registry.npmjs.org/@graphql-codegen/core/-/core-2.5.1.tgz#e3d50d3449b8c58b74ea08e97faf656a1b7fc8a1" + integrity sha512-alctBVl2hMnBXDLwkgmnFPrZVIiBDsWJSmxJcM4GKg1PB23+xuov35GE47YAyAhQItE1B1fbYnbb1PtGiDZ4LA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/plugin-helpers" "^2.4.1" "@graphql-tools/schema" "^8.1.2" "@graphql-tools/utils" "^8.1.1" tslib "~2.3.0" "@graphql-codegen/graphql-modules-preset@^2.3.2": -<<<<<<< HEAD - version "2.3.2" - resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.2.tgz#df88431e4cff656799b1ab0324e0795606162389" - integrity sha512-O3PPDQejqf3rF9sHqlrl00M+BSIKJAovFWt2zkDr/D3I/XwntR4QdQDKyY9zTotHfPpgJKyxyMzthpdqPD5XUA== - dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" - "@graphql-codegen/visitor-plugin-common" "2.5.2" - "@graphql-tools/utils" "8.5.5" -======= version "2.3.5" resolved "https://registry.npmjs.org/@graphql-codegen/graphql-modules-preset/-/graphql-modules-preset-2.3.5.tgz#07ef9ef6e66d4fbb76767097a7cc3cace34f8d08" integrity sha512-y1PcTFr483Imzd346YdmNSvW3FlN4iYj4sRWCRys+WXpiFcXq+D7+1dFZvs75/9bIHoOEeQtusHHuRPy9qJVkA== @@ -3170,15 +2265,14 @@ "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-codegen/visitor-plugin-common" "2.7.1" "@graphql-tools/utils" "8.6.1" ->>>>>>> e5aaf7bb66 (bump dependencies) change-case-all "1.0.14" parse-filepath "^1.0.2" tslib "~2.3.0" -"@graphql-codegen/plugin-helpers@^2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.3.2.tgz#3f9ba625791901d19be733db1dfc9a3dbd0dac44" - integrity sha512-19qFA5XMAWaAY64sBljjDPYfHjE+QMk/+oalCyY13WjSlcLDvYPfmFlCNgFSsydArDELlHR8T1GMbA7C42M8TA== +"@graphql-codegen/plugin-helpers@^2.3.2", "@graphql-codegen/plugin-helpers@^2.4.0", "@graphql-codegen/plugin-helpers@^2.4.1": + version "2.4.2" + resolved "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.2.tgz#e4f6b74dddcf8a9974fef5ce48562ae0980f9fed" + integrity sha512-LJNvwAPv/sKtI3RnRDm+nPD+JeOfOuSOS4FFIpQCMUCyMnFcchV/CPTTv7tT12fLUpEg6XjuFfDBvOwndti30Q== dependencies: "@graphql-tools/utils" "^8.5.2" change-case-all "1.0.14" @@ -3197,83 +2291,32 @@ tslib "~2.3.0" "@graphql-codegen/typescript-resolvers@^2.4.3": - version "2.4.3" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.4.3.tgz#556dbaf23eac0ff9c321d3ce7126d96a839f793f" - integrity sha512-4m3E0zKLSXjGirZcYHHaZ0bxjy/gxvuumShFCKFmYTkHwTfqBaeh/pMhWqLkwC9wimrH6mQoPIYSQHLaF6Eqng== + version "2.6.1" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-2.6.1.tgz#5963da60de79cfb847b55b2433cd9f65a33d7aad" + integrity sha512-tb8qiIYRDbypHvEVBi04OlItABPeormhd6gh26Q0FO/dD+tLx1V85A6wnHC4jExWPP9+/3PwHJL1pq/0n1kxlA== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" - "@graphql-codegen/typescript" "^2.4.2" - "@graphql-codegen/visitor-plugin-common" "2.5.2" + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/typescript" "^2.4.8" + "@graphql-codegen/visitor-plugin-common" "2.7.4" "@graphql-tools/utils" "^8.1.1" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/typescript@^2.4.2": -<<<<<<< HEAD - version "2.4.2" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.2.tgz#a239d5fd8f11140d5d4c81cfae7ff02054b724dc" - integrity sha512-8ajWidiFqF1KNAywtb/692SjwTyjzrDHo1sf2Q7Z+rh9qDEIrh83VHB8naT/1CefOvxj3MS6GbcsvJMizaE/AQ== -======= - version "2.4.5" - resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.5.tgz#80ca7a343511a27cd587c0b220b0a0dd99a4dc4b" - integrity sha512-Ytb8phNHKl/v/wxudsMOAV1dmzIbckWHm2J83PLNOvnu9CGEhgsd67vfe3ZoF95VU2BKSG8BXGa6uL9z2xDmuA== ->>>>>>> e5aaf7bb66 (bump dependencies) +"@graphql-codegen/typescript@^2.4.2", "@graphql-codegen/typescript@^2.4.8": + version "2.4.8" + resolved "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.4.8.tgz#e8110baba9713cde72d57a5c95aa27400363ed9a" + integrity sha512-tVsHIkuyenBany7c5IMU1yi4S1er2hgyXJGNY7PcyhpJMx0eChmbqz1VTiZxDEwi8mDBS2mn3TaSJMh6xuJM5g== dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-codegen/schema-ast" "^2.4.1" -<<<<<<< HEAD - "@graphql-codegen/visitor-plugin-common" "2.5.2" + "@graphql-codegen/visitor-plugin-common" "2.7.4" auto-bind "~4.0.0" tslib "~2.3.0" -"@graphql-codegen/visitor-plugin-common@2.5.2": - version "2.5.2" - resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.5.2.tgz#90aa4add41e17bca83f1c7c8ad674f2a06065efd" - integrity sha512-qDMraPmumG+vEGAz42/asRkdgIRmQWH5HTc320UX+I6CY6eE/Ey85cgzoqeQGLV8gu4sj3UkNx/3/r79eX4u+Q== - dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" - "@graphql-tools/optimize" "^1.0.1" - "@graphql-tools/relay-operation-optimizer" "^6.3.7" - "@graphql-tools/utils" "^8.3.0" -======= - "@graphql-codegen/visitor-plugin-common" "2.7.1" ->>>>>>> e5aaf7bb66 (bump dependencies) - auto-bind "~4.0.0" - change-case-all "1.0.14" - dependency-graph "^0.11.0" - graphql-tag "^2.11.0" - parse-filepath "^1.0.2" - tslib "~2.3.0" - -<<<<<<< HEAD -======= -<<<<<<< HEAD -"@graphql-codegen/visitor-plugin-common@2.7.4": - version "2.7.4" - resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.4.tgz#fbc8aec9df0035b8f29fa64a6356cbb02062da5d" - integrity sha512-aaDoEudDD+B7DK/UwDSL2Fzej75N9hNJ3N8FQuTIeDyw6FNGWUxmkjVBLQGlzfnYfK8IYkdfYkrPn3Skq0pVxA== -======= -"@graphql-codegen/visitor-plugin-common@2.5.2": - version "2.5.2" - resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.5.2.tgz#90aa4add41e17bca83f1c7c8ad674f2a06065efd" - integrity sha512-qDMraPmumG+vEGAz42/asRkdgIRmQWH5HTc320UX+I6CY6eE/Ey85cgzoqeQGLV8gu4sj3UkNx/3/r79eX4u+Q== - dependencies: - "@graphql-codegen/plugin-helpers" "^2.3.2" - "@graphql-tools/optimize" "^1.0.1" - "@graphql-tools/relay-operation-optimizer" "^6.3.7" - "@graphql-tools/utils" "^8.3.0" - auto-bind "~4.0.0" - change-case-all "1.0.14" - dependency-graph "^0.11.0" - graphql-tag "^2.11.0" - parse-filepath "^1.0.2" - tslib "~2.3.0" - "@graphql-codegen/visitor-plugin-common@2.7.1": version "2.7.1" resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.1.tgz#bdcded24d1d6f329d32b90704397d6001374b893" integrity sha512-Ew/+0GwGwL3ZSXS0cYz6lVvE7S5SkbTr7caRpLa4FpAdLGNskCgdA1n6W5tX5c7qsaYstqlxp30hJTfgTsYS6A== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-tools/optimize" "^1.0.1" @@ -3286,7 +2329,22 @@ parse-filepath "^1.0.2" tslib "~2.3.0" ->>>>>>> b6559cd41d (bump dependencies) +"@graphql-codegen/visitor-plugin-common@2.7.4": + version "2.7.4" + resolved "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.4.tgz#fbc8aec9df0035b8f29fa64a6356cbb02062da5d" + integrity sha512-aaDoEudDD+B7DK/UwDSL2Fzej75N9hNJ3N8FQuTIeDyw6FNGWUxmkjVBLQGlzfnYfK8IYkdfYkrPn3Skq0pVxA== + dependencies: + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-tools/optimize" "^1.0.1" + "@graphql-tools/relay-operation-optimizer" "^6.3.7" + "@graphql-tools/utils" "^8.3.0" + auto-bind "~4.0.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.3.0" + "@graphql-tools/apollo-engine-loader@^7.0.5": version "7.2.1" resolved "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.1.tgz#14e5d0b1032a7d882d22a7533c8969ee3fa797f2" @@ -3407,27 +2465,12 @@ "@graphql-tools/utils" "^8.5.1" tslib "~2.3.0" -<<<<<<< HEAD -"@graphql-tools/import@^6.2.6": - version "6.3.1" - resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.3.1.tgz#731c47ab6c6ac9f7994d75c76b6c2fa127d2d483" - integrity sha512-1szR19JI6WPibjYurMLdadHKZoG9C//8I/FZ0Dt4vJSbrMdVNp8WFxg4QnZrDeMG4MzZc90etsyF5ofKjcC+jw== - dependencies: - resolve-from "5.0.0" - tslib "~2.2.0" - -"@graphql-tools/import@^6.5.7": - version "6.6.1" - resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.1.tgz#2a7e1ceda10103ffeb8652a48ddc47150b035485" - integrity sha512-i9WA6k+erJMci822o9w9DoX+uncVBK60LGGYW8mdbhX0l7wEubUpA000thJ1aarCusYh0u+ZT9qX0HyVPXu25Q== -======= "@graphql-tools/import@^6.2.6", "@graphql-tools/import@^6.5.7": version "6.6.6" resolved "https://registry.npmjs.org/@graphql-tools/import/-/import-6.6.6.tgz#a4ff216e6b8a49c392bb8a4378d4e9caf2b303d7" integrity sha512-a0aVajxqu1MsL8EwavA44Osw20lBOIhq8IM2ZIHFPP62cPAcOB26P+Sq57DHMsSyX5YQ0ab9XPM2o4e1dQhs0w== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: - "@graphql-tools/utils" "8.5.3" + "@graphql-tools/utils" "8.6.2" resolve-from "5.0.0" tslib "~2.3.0" @@ -3464,40 +2507,22 @@ unixify "1.0.0" valid-url "1.0.9" -<<<<<<< HEAD "@graphql-tools/load@^7.3.0", "@graphql-tools/load@^7.4.1": -<<<<<<< HEAD version "7.5.5" resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.5.tgz#d61e5bdee59b6c8aa9631f74f0b2a70d512e5b31" integrity sha512-qPasit140nwTbMQbFCfZcgaS7q/0+xMQGdkMGU11rtHt6/jMgJIKDUU8/fJGKltNY3EeHlEdVtZmggZD7Rr6bA== -======= -"@graphql-tools/load@^7.3.0": - version "7.5.1" - resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz#8c7f846d2185ddc1d44fdfbf1ed9cb678f69e40b" - integrity sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg== ->>>>>>> f9b03ab02f (fixups) dependencies: "@graphql-tools/schema" "8.3.5" "@graphql-tools/utils" "8.6.5" p-limit "3.1.0" tslib "~2.3.0" -"@graphql-tools/load@^7.4.1": - version "7.4.1" - resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.4.1.tgz#aa572fcef11d6028097b6ef39c13fa9d62e5a441" - integrity sha512-UvBodW5hRHpgBUBVz5K5VIhJDOTFIbRRAGD6sQ2l9J5FDKBEs3u/6JjZDzbdL96br94D5cEd2Tk6auaHpTn7mQ== +"@graphql-tools/merge@8.2.6", "@graphql-tools/merge@^8.2.1": + version "8.2.6" + resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.6.tgz#7fb615fa9c143c3151ff025e501d52bd48186d19" + integrity sha512-dkwTm4czMISi/Io47IVvq2Fl9q4TIGKpJ0VZjuXYdEFkECyH6A5uwxZfPVandZG+gQs8ocFFoa6RisiUJLZrJw== dependencies: - "@graphql-tools/schema" "8.3.1" - "@graphql-tools/utils" "^8.5.1" -======= - version "7.5.1" - resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-7.5.1.tgz#8c7f846d2185ddc1d44fdfbf1ed9cb678f69e40b" - integrity sha512-j9XcLYZPZdl/TzzqA83qveJmwcCxgGizt5L1+C1/Z68brTEmQHLdQCOR3Ma3ewESJt6DU05kSTu2raKaunkjRg== - dependencies: - "@graphql-tools/schema" "8.3.1" - "@graphql-tools/utils" "^8.6.0" ->>>>>>> e5aaf7bb66 (bump dependencies) - p-limit "3.1.0" + "@graphql-tools/utils" "8.6.5" tslib "~2.3.0" "@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.12": @@ -3509,37 +2534,6 @@ "@graphql-tools/utils" "^7.7.0" tslib "~2.2.0" -<<<<<<< HEAD -<<<<<<< HEAD -"@graphql-tools/merge@8.2.6": - version "8.2.6" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.6.tgz#7fb615fa9c143c3151ff025e501d52bd48186d19" - integrity sha512-dkwTm4czMISi/Io47IVvq2Fl9q4TIGKpJ0VZjuXYdEFkECyH6A5uwxZfPVandZG+gQs8ocFFoa6RisiUJLZrJw== - dependencies: - "@graphql-tools/utils" "8.6.5" - tslib "~2.3.0" - -"@graphql-tools/merge@^6.2.12": - version "6.2.17" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.17.tgz#4dedf87d8435a5e1091d7cc8d4f371ed1e029f1f" - integrity sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow== - dependencies: - "@graphql-tools/schema" "^8.0.2" - "@graphql-tools/utils" "8.0.2" - tslib "~2.3.0" - -======= ->>>>>>> f9b03ab02f (fixups) -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -"@graphql-tools/merge@^8.2.1": - version "8.2.1" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.1.tgz#bf83aa06a0cfc6a839e52a58057a84498d0d51ff" - integrity sha512-Q240kcUszhXiAYudjuJgNuLgy9CryDP3wp83NOZQezfA6h3ByYKU7xI6DiKrdjyVaGpYN3ppUmdj0uf5GaXzMA== - dependencies: - "@graphql-tools/utils" "^8.5.1" - tslib "~2.3.0" - "@graphql-tools/mock@^8.1.2": version "8.5.1" resolved "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.5.1.tgz#379d18eafdcb65486beb8f9247b33b7b693c53aa" @@ -3592,29 +2586,13 @@ relay-compiler "12.0.0" tslib "~2.3.0" -<<<<<<< HEAD -<<<<<<< HEAD -"@graphql-tools/schema@8.3.5": +"@graphql-tools/schema@8.3.5", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": version "8.3.5" resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.5.tgz#ebec0c0c7f53e591d34375d6f81d0660852fcaca" integrity sha512-3mJ/K7TdL+fnEUtCUqF4qkh1fcNMzaxgwKgO9fSYSTS7zyT16hbi5XSulSTshygHgaD2u+MO588iR4ZJcbZcIg== -======= -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": - version "8.3.1" - resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" - integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== -<<<<<<< HEAD ->>>>>>> f9b03ab02f (fixups) dependencies: "@graphql-tools/merge" "8.2.6" "@graphql-tools/utils" "8.6.5" -======= - dependencies: - "@graphql-tools/merge" "^8.2.1" - "@graphql-tools/utils" "^8.5.1" ->>>>>>> e5aaf7bb66 (bump dependencies) tslib "~2.3.0" value-or-promise "1.0.11" @@ -3627,16 +2605,6 @@ tslib "~2.2.0" value-or-promise "1.0.6" -"@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.0.2", "@graphql-tools/schema@^8.1.1", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": - version "8.3.1" - resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74" - integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ== - dependencies: - "@graphql-tools/merge" "^8.2.1" - "@graphql-tools/utils" "^8.5.1" - tslib "~2.3.0" - value-or-promise "1.0.11" - "@graphql-tools/url-loader@^6.0.0": version "6.10.1" resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz#dc741e4299e0e7ddf435eba50a1f713b3e763b33" @@ -3662,11 +2630,7 @@ valid-url "1.0.9" ws "7.4.5" -<<<<<<< HEAD -"@graphql-tools/url-loader@^7.0.11": -======= "@graphql-tools/url-loader@^7.0.11", "@graphql-tools/url-loader@^7.4.2": ->>>>>>> e5aaf7bb66 (bump dependencies) version "7.7.0" resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.7.0.tgz#504f0030c75b61bca4ac07da49e8cd872c316972" integrity sha512-mBBb+aJqI4E0MVEzyfi76Pi/G6lGxGTVt/tP1YtKJly7UnonNoWOtDusdL3zIVAGhGgLsNrLbGhLDbwSd6TV6A== @@ -3691,58 +2655,6 @@ value-or-promise "^1.0.11" ws "^8.3.0" -<<<<<<< HEAD -"@graphql-tools/url-loader@^7.4.2": - version "7.5.3" - resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-7.5.3.tgz#a594be40e3bc68d22f76746356e7f0b8117b7137" - integrity sha512-VKMRJ4TOeVIdulkCLGSBUr4stRRwOGcVRXDeoUF+86K32Ufo0H2V0lz7QwS/bCl8GXV19FMgHZCDl4BMJyOXEA== - dependencies: - "@graphql-tools/delegate" "^8.4.1" - "@graphql-tools/utils" "^8.5.1" - "@graphql-tools/wrap" "^8.3.1" - "@n1ru4l/graphql-live-query" "0.9.0" - "@types/websocket" "1.0.4" - "@types/ws" "^8.0.0" - cross-undici-fetch "^0.0.26" - dset "^3.1.0" - extract-files "11.0.0" - graphql-sse "^1.0.1" - graphql-ws "^5.4.1" - isomorphic-ws "4.0.1" - meros "1.1.4" - subscriptions-transport-ws "^0.11.0" - sync-fetch "0.3.1" - tslib "~2.3.0" - valid-url "1.0.9" - value-or-promise "1.0.11" - ws "8.3.0" - -"@graphql-tools/utils@8.5.3", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.3": - version "8.5.3" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.5.3.tgz#404062e62cae9453501197039687749c4885356e" - integrity sha512-HDNGWFVa8QQkoQB0H1lftvaO1X5xUaUDk1zr1qDe0xN1NL0E/CrQdJ5UKLqOvH4hkqVUPxQsyOoAZFkaH6rLHg== - dependencies: - tslib "~2.3.0" - -<<<<<<< HEAD -"@graphql-tools/utils@8.6.1", "@graphql-tools/utils@^8.5.4": - version "8.6.1" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" - integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== -======= -"@graphql-tools/utils@8.5.5": - version "8.5.5" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.5.5.tgz#019ddb99719feb19602afdb537c06e463df674a9" - integrity sha512-y7zRXWIUI73X+9/rf/0KzrNFMlpRKFfzLiwdbIeWwgLs+NV9vfUOoVkX8luXX6LwQxhSypHATMiwZGM2ro/wJA== ->>>>>>> f9b03ab02f (fixups) - dependencies: - tslib "~2.3.0" - -"@graphql-tools/utils@8.6.5", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.6.0": - version "8.6.5" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.5.tgz#ac04571b03f854c7a938b2ab700516a6c6d32335" - integrity sha512-mjOtaWiS2WIqRz/cq5gaeM3sVrllcu2xbtHROw1su1v3xWa3D3dKgn8Lrl7+tvWs5WUVySsBss/VZ3WdoPkCrA== -======= "@graphql-tools/utils@8.6.1": version "8.6.1" resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" @@ -3750,11 +2662,17 @@ dependencies: tslib "~2.3.0" -"@graphql-tools/utils@8.6.2", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.6.0": +"@graphql-tools/utils@8.6.2": version "8.6.2" resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.2.tgz#095408135f091aac68fe18a0a21b708e685500da" integrity sha512-x1DG0cJgpJtImUlNE780B/dfp8pxvVxOD6UeykFH5rHes26S4kGokbgU8F1IgrJ1vAPm/OVBHtd2kicTsPfwdA== ->>>>>>> e5aaf7bb66 (bump dependencies) + dependencies: + tslib "~2.3.0" + +"@graphql-tools/utils@8.6.5", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.5.3", "@graphql-tools/utils@^8.6.0": + version "8.6.5" + resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.5.tgz#ac04571b03f854c7a938b2ab700516a6c6d32335" + integrity sha512-mjOtaWiS2WIqRz/cq5gaeM3sVrllcu2xbtHROw1su1v3xWa3D3dKgn8Lrl7+tvWs5WUVySsBss/VZ3WdoPkCrA== dependencies: tslib "~2.3.0" @@ -3767,20 +2685,6 @@ camel-case "4.1.2" tslib "~2.2.0" -"@graphql-tools/utils@^8.0.0": - version "8.6.1" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.1.tgz#52c7eb108f2ca2fd01bdba8eef85077ead1bf882" - integrity sha512-uxcfHCocp4ENoIiovPxUWZEHOnbXqj3ekWc0rm7fUhW93a1xheARNHcNKhwMTR+UKXVJbTFQdGI1Rl5XdyvDBg== - dependencies: - tslib "~2.3.0" - -"@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.6.0": - version "8.6.0" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.0.tgz#f424256a1f3b87d1dcf6f9f675739b2d3627be33" - integrity sha512-rnk+RHaOCeWnfekeQGRh5ycXK1ZAI7Nm0pbeLjA3SiysTdqhWyxNCp5ON4Mvtlid84OY/KB253fQq/2rotznCA== - dependencies: - tslib "~2.3.0" - "@graphql-tools/wrap@^7.0.4": version "7.0.8" resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50" @@ -3839,8 +2743,7 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@hot-loader/react-dom-v16@npm:@hot-loader/react-dom@^16.0.2", "@hot-loader/react-dom@^16.13.0": - name "@hot-loader/react-dom-v16" +"@hot-loader/react-dom-v16@npm:@hot-loader/react-dom@^16.0.2": version "16.14.0" resolved "https://registry.npmjs.org/@hot-loader/react-dom/-/react-dom-16.14.0.tgz#3cfc64e40bb78fa623e59b582b8f09dcdaad648a" integrity sha512-EN9czvcLsMYmSDo5yRKZOAq3ZGRlDpad1gPtX0NdMMomJXcPE3yFSeFzE94X/NjOaiSVimB7LuqPYpkWVaIi4Q== @@ -4428,9 +3331,9 @@ ioredis "^4.28.5" "@kubernetes/client-node@^0.16.0": - version "0.16.1" - resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.1.tgz#c78ef667579777c1a532983922807e228dbc9b90" - integrity sha512-/Ah+3gFSjXFeqDMGGTyYBKug44Eu2D2qowKLdiZqxCkHdSNgy+CNk6FU1Vy80WrTvGkF/CZr4az6O5AopAiJEw== + version "0.16.3" + resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.3.tgz#a26a5abbd6e45603b4f75f0baff00e19853e5be7" + integrity sha512-L7IckuyuPfhd+/Urib8MRas9D6sfKEq8IaITYcaE6LlU+Y8MeD7MTbuW6Yb2WdeRuFN8HPSS47mxPnOUNYBXEg== dependencies: "@types/js-yaml" "^4.0.1" "@types/node" "^10.12.0" @@ -4447,9 +3350,9 @@ openid-client "^4.1.1" request "^2.88.0" rfc4648 "^1.3.0" - shelljs "^0.8.4" + shelljs "^0.8.5" stream-buffers "^3.0.2" - tar "^6.0.2" + tar "^6.1.11" tmp-promise "^3.0.2" tslib "^1.9.3" underscore "^1.9.1" @@ -5355,15 +4258,9 @@ integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== "@microsoft/microsoft-graph-types@^2.6.0": -<<<<<<< HEAD - version "2.13.0" - resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.13.0.tgz#aa584e4897665df5a9c8869a226264cd6ec5882b" - integrity sha512-63FfWBLcyNo8tMP4oPcdqHQvk4ehuWpiUMjVLD7zJXPENIowpdwudP969AALkKzlwsjWImamdivGKd2Zc8Z1Uw== -======= version "2.15.0" resolved "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.15.0.tgz#1705ea1ce84c3de4705957392d7f0e3ae465c9f8" integrity sha512-EyuOpZs55HUoC37Ujrp6IRgE5ghf/wtDrlWuJm7J/DKoB7B/Iek7eXdavTygx2uBeDZ5b4jXXvwl4PiDLlEcsw== ->>>>>>> e5aaf7bb66 (bump dependencies) "@microsoft/tsdoc-config@~0.15.2": version "0.15.2" @@ -5380,10 +4277,10 @@ resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== -"@mswjs/cookies@^0.1.6": - version "0.1.6" - resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.6.tgz#176f77034ab6d7373ae5c94bcbac36fee8869249" - integrity sha512-A53XD5TOfwhpqAmwKdPtg1dva5wrng2gH5xMvklzbd9WLTSVU953eCRa8rtrrm6G7Cy60BOGsBRN89YQK0mlKA== +"@mswjs/cookies@^0.1.6", "@mswjs/cookies@^0.1.7": + version "0.1.7" + resolved "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.1.7.tgz#d334081b2c51057a61c1dd7b76ca3cac02251651" + integrity sha512-bDg1ReMBx+PYDB4Pk7y1Q07Zz1iKIEUWQpkEXiA2lEWg9gvOZ8UBmGXilCEUvyYoRFlmr/9iXTRR69TrgSwX/Q== dependencies: "@types/set-cookie-parser" "^2.4.0" set-cookie-parser "^2.4.6" @@ -5400,7 +4297,7 @@ outvariant "^1.2.0" strict-event-emitter "^0.2.0" -"@n1ru4l/graphql-live-query@0.9.0", "@n1ru4l/graphql-live-query@^0.9.0": +"@n1ru4l/graphql-live-query@^0.9.0": version "0.9.0" resolved "https://registry.npmjs.org/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz#defaebdd31f625bee49e6745934f36312532b2bc" integrity sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg== @@ -5961,28 +4858,11 @@ fast-deep-equal "^3.1.3" lodash.clonedeep "^4.5.0" -"@opencensus/web-types@0.0.7": - version "0.0.7" - resolved "https://registry.npmjs.org/@opencensus/web-types/-/web-types-0.0.7.tgz#4426de1fe5aa8f624db395d2152b902874f0570a" - integrity sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g== - -"@opentelemetry/api@^0.10.2": - version "0.10.2" - resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-0.10.2.tgz#9647b881f3e1654089ff7ea59d587b2d35060654" - integrity sha512-GtpMGd6vkzDMYcpu2t9LlhEgMy/SzBwRnz48EejlRArYqZzqSzAsKmegUK7zHgl+EOIaK9mKHhnRaQu3qw20cA== - dependencies: - "@opentelemetry/context-base" "^0.10.2" - "@opentelemetry/api@^1.0.1": version "1.0.4" resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924" integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog== -"@opentelemetry/context-base@^0.10.2": - version "0.10.2" - resolved "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.10.2.tgz#55bea904b2b91aa8a8675df9eaba5961bddb1def" - integrity sha512-hZNKjKOYsckoOEgBziGMnBcX0M7EtstnCmwz5jZUOUYwlZ+/xxX6z3jPu1XVO2Jivk0eLfuP9GP+vFD49CMetw== - "@panva/asn1.js@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" @@ -6046,13 +4926,6 @@ resolved "https://registry.npmjs.org/@react-hookz/deep-equal/-/deep-equal-1.0.1.tgz#1e9aad97b964879b54a3909f36f0727befa13e1f" integrity sha512-6k/pU2jNlgYvKOy84vpCAZ8MGVwybvAdjzrh4UicCVOCPxz0LSBws1OE6O5TO4sPHaSw+yLfNzNK8RicGFc1Kw== -"@react-hookz/web@^12.3.0": - version "12.3.0" - resolved "https://registry.npmjs.org/@react-hookz/web/-/web-12.3.0.tgz#a9a1311a15171a57d68a3db61492f913d4fd455a" - integrity sha512-Uujp2RfX/oDEtAbdkV0W/nhiQ5ZYVH+MEq04T7/8TstyiwoIlvsRbEic6c6gQA6sQ/lw93cZ8NP8R7AYjiqDvg== - dependencies: - "@react-hookz/deep-equal" "^1.0.1" - "@react-hookz/web@^13.0.0": version "13.0.0" resolved "https://registry.npmjs.org/@react-hookz/web/-/web-13.0.0.tgz#7c4d54fb4c1edf885879914d719e35086964e46e" @@ -6080,7 +4953,6 @@ resolved "https://registry.npmjs.org/@rjsf/material-ui/-/material-ui-3.2.1.tgz#84fbf322485aee3a84101e189161f0687779ec8d" integrity sha512-8UiDeDbjCImFSfOegGu13otQ7OdP9FOYpcLjeouppnhs+MPeIEAtYS+jCcBKmi3reyTagC15/KVSRhde1wS1vg== -<<<<<<< HEAD "@roadiehq/backstage-plugin-buildkite@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-buildkite/-/backstage-plugin-buildkite-2.0.0.tgz#e5da049a2e15c533228e26da1af537b3783fe5de" @@ -6090,17 +4962,6 @@ "@backstage/core-components" "^0.9.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" -======= -"@roadiehq/backstage-plugin-buildkite@^1.3.8": - version "1.3.8" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-buildkite/-/backstage-plugin-buildkite-1.3.8.tgz#fa91880e7d95a82d8d532f663cc9415c74dc6143" - integrity sha512-eZW826eMTgy7znkNRQzIhi/mlL6ztYRGq/+kThX3JjoHyGfIxEd+GnR58YEeuvs5dy277SJ/9gm3iibhK9T9sQ== - dependencies: - "@backstage/catalog-model" "^0.9.7" - "@backstage/core-components" "^0.8.0" - "@backstage/core-plugin-api" "^0.6.0" - "@backstage/plugin-catalog-react" "^0.6.5" ->>>>>>> e5aaf7bb66 (bump dependencies) "@backstage/theme" "^0.2.6" "@material-ui/core" "^4.12.1" "@material-ui/icons" "^4.11.2" @@ -6111,7 +4972,6 @@ react-router-dom "6.0.0-beta.0" react-use "^17.2.4" -<<<<<<< HEAD "@roadiehq/backstage-plugin-github-insights@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-insights/-/backstage-plugin-github-insights-2.0.0.tgz#1137f4f3ad5744559bf095ee868371f5fd8c60ec" @@ -6122,18 +4982,6 @@ "@backstage/core-plugin-api" "^1.0.0" "@backstage/integration-react" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" -======= -"@roadiehq/backstage-plugin-github-insights@^1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-insights/-/backstage-plugin-github-insights-1.5.0.tgz#9a693be80adc9f3b9cfe5ba615628abde88e121f" - integrity sha512-r2FclGGF/6aTrT6wH5Xq+5ByfVwgCDt83+KINf1ELNuWt5x0nMtguSTyZqJ5n1AdbGybVJZ84dlfbSTa8RTU7g== - dependencies: - "@backstage/catalog-model" "^0.9.7" - "@backstage/core-components" "^0.8.0" - "@backstage/core-plugin-api" "^0.6.0" - "@backstage/integration-react" "^0.1.10" - "@backstage/plugin-catalog-react" "^0.6.5" ->>>>>>> e5aaf7bb66 (bump dependencies) "@backstage/theme" "^0.2.7" "@date-io/core" "2.10.7" "@material-ui/core" "^4.11.0" @@ -6148,7 +4996,6 @@ react-use "^17.2.4" zustand "3.6.9" -<<<<<<< HEAD "@roadiehq/backstage-plugin-github-pull-requests@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-2.0.0.tgz#99ba670e1bd9bdc954b43901883aaf9832ae8942" @@ -6158,17 +5005,6 @@ "@backstage/core-components" "^0.9.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" -======= -"@roadiehq/backstage-plugin-github-pull-requests@^1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-github-pull-requests/-/backstage-plugin-github-pull-requests-1.4.0.tgz#3f250c8b13c6b95ec2825f9b7088ea5199054013" - integrity sha512-qrbybOtZdWWWKptGfAvf1vzlwXGcvidWT5Dr6mbibn7GwSxSe4CD58pIEHJzFoT9jLHFGgAn5Uhh2SG/Ek7gbw== - dependencies: - "@backstage/catalog-model" "^0.9.7" - "@backstage/core-components" "^0.8.0" - "@backstage/core-plugin-api" "^0.6.0" - "@backstage/plugin-catalog-react" "^0.6.5" ->>>>>>> e5aaf7bb66 (bump dependencies) "@material-ui/core" "^4.11.0" "@material-ui/icons" "^4.9.1" "@octokit/rest" "^18.5.3" @@ -6181,7 +5017,6 @@ react-router "6.0.0-beta.0" react-use "^17.2.4" -<<<<<<< HEAD "@roadiehq/backstage-plugin-travis-ci@^2.0.0": version "2.0.0" resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-travis-ci/-/backstage-plugin-travis-ci-2.0.0.tgz#d86eba878bbaa6ada77e9eda932ff25bd9121021" @@ -6191,17 +5026,6 @@ "@backstage/core-components" "^0.9.0" "@backstage/core-plugin-api" "^1.0.0" "@backstage/plugin-catalog-react" "^1.0.0" -======= -"@roadiehq/backstage-plugin-travis-ci@^1.3.6": - version "1.3.6" - resolved "https://registry.npmjs.org/@roadiehq/backstage-plugin-travis-ci/-/backstage-plugin-travis-ci-1.3.6.tgz#6f45a42bdf39aa6baab56f0c4400990238df1625" - integrity sha512-th+2GaOjkPArDUbTBuhhCz/6WL4gcrVRVAsDHzuSrrJqNtsz6kXdBIHhR/58En16BZ2bnHhRzY87uiUDLjAntA== - dependencies: - "@backstage/catalog-model" "^0.9.7" - "@backstage/core-components" "^0.8.0" - "@backstage/core-plugin-api" "^0.6.0" - "@backstage/plugin-catalog-react" "^0.6.5" ->>>>>>> e5aaf7bb66 (bump dependencies) "@backstage/theme" "^0.2.9" "@material-ui/core" "^4.11.3" "@material-ui/icons" "^4.11.2" @@ -6339,23 +5163,13 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.8.3": +"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": version "1.8.3" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== dependencies: type-detect "4.0.8" -<<<<<<< HEAD -"@sinonjs/commons@^1.7.0": - version "1.7.1" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" - integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== - dependencies: - type-detect "4.0.8" - -======= ->>>>>>> e5aaf7bb66 (bump dependencies) "@sinonjs/fake-timers@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" @@ -6384,11 +5198,6 @@ resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@spotify/eslint-config-base@^12.0.0": - version "12.0.0" - resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-12.0.0.tgz#0b1e41bb436d5c1c20714703629514d64c3c0f06" - integrity sha512-5Uud/TmzakqmdUNCZpD8JFQRa2VG3dVd3DanSMpU/nVdu6K5LyX8EMU3Tz1vGP18Wih8iAu/sBSJhntNzw7e6w== - "@spotify/eslint-config-base@^13.0.0": version "13.0.0" resolved "https://registry.npmjs.org/@spotify/eslint-config-base/-/eslint-config-base-13.0.0.tgz#bb748bb2b705ffb5085f873aa0daf94dfad59985" @@ -6399,11 +5208,6 @@ resolved "https://registry.npmjs.org/@spotify/eslint-config-react/-/eslint-config-react-12.0.0.tgz#5b8d4bc3b81a8ec2824648f482f1f6c3cf711893" integrity sha512-lNHZRtJesNA273OJHBVUGAg2JYyVDZ+bsT7h3OwnX1HYgejJ3YcKPSziPM8TGFAN8DruH3tHFfaM63uAIA1+uw== -"@spotify/eslint-config-typescript@^12.0.0": - version "12.0.0" - resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-12.0.0.tgz#4c7af3f74a47668bec0c860b72e2a0103e78a138" - integrity sha512-nMVll8ZkN/W8+IHn6Iz3YzCKW0qhrn3TVfyxkAr3qmXm5cex+GzyUdZEuxb8rdN2inZL6A1Il2NFfO5p/UKxog== - "@spotify/eslint-config-typescript@^13.0.0": version "13.0.0" resolved "https://registry.npmjs.org/@spotify/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz#908a51e05de7ec9d2e3b136f9831e0ddb36c7f89" @@ -6428,100 +5232,46 @@ dependencies: loader-utils "^1.1.0" -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - "@svgr/babel-plugin-add-jsx-attribute@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - "@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - "@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - "@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - "@svgr/babel-plugin-svg-dynamic-title@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - "@svgr/babel-plugin-svg-em-dimensions@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - "@svgr/babel-plugin-transform-react-native-svg@^6.0.0": version "6.0.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== - "@svgr/babel-plugin-transform-svg-component@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" integrity sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg== -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - "@svgr/babel-preset@^6.2.0": version "6.2.0" resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" @@ -6536,15 +5286,6 @@ "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" "@svgr/babel-plugin-transform-svg-component" "^6.2.0" -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== - dependencies: - "@svgr/plugin-jsx" "^5.5.0" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" - "@svgr/core@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" @@ -6554,14 +5295,7 @@ camelcase "^6.2.0" cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== - dependencies: - "@babel/types" "^7.12.6" - -"@svgr/hast-util-to-babel-ast@^6.0.0", "@svgr/hast-util-to-babel-ast@^6.2.1": +"@svgr/hast-util-to-babel-ast@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== @@ -6569,27 +5303,7 @@ "@babel/types" "^7.15.6" entities "^3.0.1" -"@svgr/plugin-jsx@6.2.x": - version "6.2.0" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.0.tgz#5e41a75b12b34cb66509e63e535606161770ff42" - integrity sha512-QJDEe7K5Hkd4Eewu4pcjiOKTCtjB47Ol6lDLXVhf+jEewi+EKJAaAmM+bNixfW6LSNEg8RwOYQN3GZcprqKfHw== - dependencies: - "@babel/core" "^7.15.5" - "@svgr/babel-preset" "^6.2.0" - "@svgr/hast-util-to-babel-ast" "^6.0.0" - svg-parser "^2.0.2" - -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== - dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - svg-parser "^2.0.2" - -"@svgr/plugin-jsx@^6.2.1": +"@svgr/plugin-jsx@6.2.x", "@svgr/plugin-jsx@^6.2.1": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== @@ -6608,29 +5322,6 @@ deepmerge "^4.2.2" svgo "^2.5.0" -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== - dependencies: - cosmiconfig "^7.0.0" - deepmerge "^4.2.2" - svgo "^1.2.2" - -"@svgr/rollup@5.5.x": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/rollup/-/rollup-5.5.0.tgz#9ceaaa6d463916e69aff8a9e10b3bb8fbb94688a" - integrity sha512-EiZmH2VTr+Xzyb6Ga8XtGa9MEbiU3WQnB5vHmqhwAUqibU3uwuwr7MN+QwIh/gtBk1ucMim8BCfcRTlLVREM8A== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - rollup-pluginutils "^2.8.2" - "@svgr/rollup@6.2.x": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/rollup/-/rollup-6.2.1.tgz#23ac3173d2bd85842ca8858d3435332af1f064ab" @@ -6646,20 +5337,6 @@ "@svgr/plugin-svgo" "^6.2.0" rollup-pluginutils "^2.8.2" -"@svgr/webpack@5.5.x": - version "5.5.0" - resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" - "@svgr/webpack@6.2.x": version "6.2.1" resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" @@ -6696,48 +5373,10 @@ "@babel/runtime" "^7.14.6" "@testing-library/dom" "^8.1.0" -<<<<<<< HEAD -"@testing-library/dom@^7.28.1": - version "7.31.2" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" - integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.6" - lz-string "^1.4.4" - pretty-format "^26.6.2" - -======= -<<<<<<< HEAD ->>>>>>> f9b03ab02f (fixups) "@testing-library/dom@^8.0.0", "@testing-library/dom@^8.1.0": version "8.11.3" resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.3.tgz#38fd63cbfe14557021e88982d931e33fb7c1a808" integrity sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA== -======= -"@testing-library/dom@^7.28.1": - version "7.29.6" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.6.tgz#eb37844fb431186db7960a7ff6749ea65a19617c" - integrity sha512-vzTsAXa439ptdvav/4lsKRcGpAQX7b6wBIqia7+iNzqGJ5zjswApxA6jDAsexrc6ue9krWcbh8o+LYkBXW+GCQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.4" - lz-string "^1.4.4" - pretty-format "^26.6.2" - -"@testing-library/dom@^8.1.0": - version "8.11.1" - resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.11.1.tgz#03fa2684aa09ade589b460db46b4c7be9fc69753" - integrity sha512-3KQDyx9r0RKYailW2MiYrSSKEfH0GTkI51UGEvJenvcoDoeRYs0PZpi2SXqtnMClQvCqdtTTpOfFETDTVADpAg== ->>>>>>> 76d216e74b (fixups) dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -6749,13 +5388,13 @@ pretty-format "^27.0.2" "@testing-library/jest-dom@^5.10.1": - version "5.14.1" - resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" - integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== + version "5.16.2" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" + integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^4.2.2" + aria-query "^5.0.0" chalk "^3.0.0" css "^3.0.0" css.escape "^1.5.1" @@ -6774,14 +5413,6 @@ "@types/react-test-renderer" ">=16.9.0" react-error-boundary "^3.1.0" -"@testing-library/react@^11.2.5": - version "11.2.6" - resolved "https://registry.npmjs.org/@testing-library/react/-/react-11.2.6.tgz#586a23adc63615985d85be0c903f374dab19200b" - integrity sha512-TXMCg0jT8xmuU8BkKMtp8l7Z50Ykew5WNX8UoIKTaLFwKkP2+1YDhOLA2Ga3wY4x29jyntk7EWfum0kjlYiSjQ== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^7.28.1" - "@testing-library/react@^12.1.3": version "12.1.4" resolved "https://registry.npmjs.org/@testing-library/react/-/react-12.1.4.tgz#09674b117e550af713db3f4ec4c0942aa8bbf2c0" @@ -6792,9 +5423,9 @@ "@types/react-dom" "*" "@testing-library/user-event@^13.1.8": - version "13.1.8" - resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.1.8.tgz#9cbf342b88d837ee188f9f9f4df6d1beaaf179c2" - integrity sha512-M04HgOlJvxILf5xyrkJaEQfFOtcvhy3usLldQIEg9zgFIYQofSmFGVfFlS7BWowqlBGLrItwGMlPXCoBgoHSiw== + version "13.5.0" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== dependencies: "@babel/runtime" "^7.12.5" @@ -6986,9 +5617,9 @@ integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== "@types/color@^3.0.1": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/color/-/color-3.0.2.tgz#3779043e782f562aa9157b5fc6bd07e14fd8e7f3" - integrity sha512-INiJl6sfNn8iyC5paxVzqiVUEj2boIlFki02uRTAkKwAj++7aAF+ZfEv/XrIeBa0XI/fTZuDHW8rEEcEVnON+Q== + version "3.0.3" + resolved "https://registry.npmjs.org/@types/color/-/color-3.0.3.tgz#e6d8d72b7aaef4bb9fe80847c26c7c786191016d" + integrity sha512-X//qzJ3d3Zj82J9sC/C18ZY5f43utPbAJ6PhYt/M7uG6etcF6MRpKdN880KBy43B0BMzSfeT96MzrsNjFI3GbA== dependencies: "@types/color-convert" "*" @@ -7206,15 +5837,7 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint@*": - version "6.1.8" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-6.1.8.tgz#7e868f89bc1e520323d405940e49cb912ede5bba" - integrity sha512-CJBhm9pYdUS8cFVbXACWlLxZWFBTQMiM0eI6RYxng3u9oQ9gHdQ5PN89DHPrK4RISRzX62nRsteUlbBgEIdSug== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/eslint@^7.28.2": +"@types/eslint@*", "@types/eslint@^7.28.2": version "7.29.0" resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== @@ -7237,7 +5860,7 @@ resolved "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": +"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.28", "@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.5": version "4.17.28" resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== @@ -7246,15 +5869,6 @@ "@types/qs" "*" "@types/range-parser" "*" -"@types/express-serve-static-core@4.17.27": - version "4.17.27" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401" - integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/express-session@^1.17.2": version "1.17.4" resolved "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.4.tgz#97a30a35e853a61bdd26e727453b8ed314d6166b" @@ -7270,7 +5884,7 @@ "@types/express" "*" "@types/xml2js" "*" -"@types/express@*", "@types/express@4.17.13", "@types/express@^4.17.6": +"@types/express@*", "@types/express@4.17.13", "@types/express@^4.17.13", "@types/express@^4.17.6": version "4.17.13" resolved "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== @@ -7280,14 +5894,7 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5": - version "9.0.8" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" - integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== - dependencies: - "@types/node" "*" - -"@types/fs-extra@^9.0.6": +"@types/fs-extra@^9.0.1", "@types/fs-extra@^9.0.3", "@types/fs-extra@^9.0.5", "@types/fs-extra@^9.0.6": version "9.0.13" resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== @@ -7319,9 +5926,9 @@ integrity sha512-tmHO66z/f91JZCDqinj/nNvQEszsz/hBT4+MvCSKT5sDzl5Ld/oXZ8WaecCBjRLw2uWKUInUHM9MhEXWkOiNjw== "@types/git-url-parse@^9.0.0": - version "9.0.0" - resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.0.tgz#aac1315a44fa4ed5a52c3820f6c3c2fb79cbd12d" - integrity sha512-kA2RxBT/r/ZuDDKwMl+vFWn1Z0lfm1/Ik6Qb91wnSzyzCDa/fkM8gIOq6ruB7xfr37n6Mj5dyivileUVKsidlg== + version "9.0.1" + resolved "https://registry.npmjs.org/@types/git-url-parse/-/git-url-parse-9.0.1.tgz#1c7cc89527ca8b5afcf260ead3b0e4e373c43938" + integrity sha512-Zf9mY4Mz7N3Nyi341nUkOtgVUQn4j6NS4ndqEha/lOgEbTkHzpD7wZuRagYKzrXNtvawWfsrojoC1nhsQexvNA== "@types/glob@*": version "7.1.3" @@ -7396,17 +6003,7 @@ dependencies: "@types/node" "*" -"@types/humanize-duration@^3.18.1": - version "3.18.1" - resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.18.1.tgz#10090d596053703e7de0ac43a37b96cd9fc78309" - integrity sha512-MUgbY3CF7hg/a/jogixmAufLjJBQT7WEf8Q+kYJkOc47ytngg1IuZobCngdTjAgY83JWEogippge5O5fplaQlw== - -"@types/humanize-duration@^3.25.1": - version "3.25.1" - resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.25.1.tgz#b6140d5fc00ff3917b3f521784abef4bc0387ccc" - integrity sha512-WZU/4bb+lvzyDmZzjJtp++9mfKy6B3lH6gGISgkcz6SU8hMILKRM0vi08TxIsb0dQB4Gzo68MWLmctu6xqUi9g== - -"@types/humanize-duration@^3.27.1": +"@types/humanize-duration@^3.18.1", "@types/humanize-duration@^3.25.1", "@types/humanize-duration@^3.27.1": version "3.27.1" resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz#f14740d1f585a0a8e3f46359b62fda8b0eaa31e7" integrity sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w== @@ -7420,9 +6017,9 @@ rxjs "^6.4.0" "@types/inquirer@^8.1.3": - version "8.1.3" - resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz#dfda4c97cdbe304e4dceb378a80f79448ea5c8fe" - integrity sha512-AayK4ZL5ssPzR1OtnOLGAwpT0Dda3Xi/h1G0l1oJDNrowp7T1423q4Zb8/emr7tzRlCy4ssEri0LWVexAqHyKQ== + version "8.2.0" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.0.tgz#b9566d048f5ff65159f2ed97aff45fe0f00b35ec" + integrity sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ== dependencies: "@types/through" "*" rxjs "^7.2.0" @@ -7517,11 +6114,6 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23" integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== -"@types/json-schema@7.0.9": - version "7.0.9" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - "@types/json-stable-stringify@^1.0.32": version "1.0.32" resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e" @@ -7580,31 +6172,11 @@ resolved "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.3.tgz#ec985618fd2712c010f8edab4f1ae7784ad7c583" integrity sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw== -<<<<<<< HEAD "@types/luxon@^2.0.4", "@types/luxon@^2.0.5", "@types/luxon@^2.0.9": version "2.3.0" resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.3.0.tgz#0f4d912c385e47890374cb694da9bc93bacbe2b0" integrity sha512-mWXdRlg+5dWvxU+uaijB2RY5NrJtMEXR6j+D6W66hPuezSVXrQqQvWa/JNHntgEYgjzeoVRrQVmMWAbKjUJiFQ== -======= -"@types/luxon@^2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.4.tgz#f7b5a86ccd843c0ccaddfaedd9ee1081bc1cde3b" - integrity sha512-l3xuhmyF2kBldy15SeY6d6HbK2BacEcSK1qTF1ISPtPHr29JH0C1fndz9ExXLKpGl0J6pZi+dGp1i5xesMt60Q== -<<<<<<< HEAD -"@types/luxon@^2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.5.tgz#29d3b095d55ee50df8f4cf109b16009334d9828e" - integrity sha512-GKrG5v16BOs9XGpouu33hOkAFaiSDi3ZaDXG9F2yAoyzHRBtksZnI60VWY5aM/yAENCccBejrxw8jDY+9OVlxw== - -"@types/luxon@^2.0.9": - version "2.0.9" - resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.0.9.tgz#782a0edfa6d699191292c13168bd496cd66b87c6" - integrity sha512-ZuzIc7aN+i2ZDMWIiSmMdubR9EMMSTdEzF6R+FckP4p6xdnOYKqknTo/k+xXQvciSXlNGIwA4OPU5X7JIFzYdA== ->>>>>>> 76d216e74b (fixups) - -======= ->>>>>>> e5aaf7bb66 (bump dependencies) "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.3" resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" @@ -7627,12 +6199,7 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/minimatch@^3.0.5": +"@types/minimatch@*", "@types/minimatch@^3.0.3", "@types/minimatch@^3.0.5": version "3.0.5" resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -7812,11 +6379,6 @@ dependencies: "@types/node" "*" -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - "@types/qs@*": version "6.9.6" resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" @@ -7828,15 +6390,9 @@ integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== "@types/react-dom@*", "@types/react-dom@>=16.9.0": -<<<<<<< HEAD - version "17.0.9" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" - integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== -======= version "17.0.11" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@types/react" "*" @@ -7858,9 +6414,9 @@ redux "^4.0.0" "@types/react-sparklines@^1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/@types/react-sparklines/-/react-sparklines-1.7.0.tgz#f956d0f7b0e746ad445ce1cd250fe81f8a384684" - integrity sha512-Vd+cME7+Yy3kFNhnid9EBIKiyCQ/at8nqDczIs0UYfIB8AtaRJPqekigv02biOsIbQCvxyvIAIjiTKOC+hHNbA== + version "1.7.2" + resolved "https://registry.npmjs.org/@types/react-sparklines/-/react-sparklines-1.7.2.tgz#c14e80623abd3669a10f18d13f6fb9fbdc322f70" + integrity sha512-N1GwO7Ri5C5fE8+CxhiDntuSw1qYdGytBuedKrCxWpaojXm4WnfygbdBdc5sXGX7feMxDXBy9MNhxoUTwrMl4A== dependencies: "@types/react" "*" @@ -8184,10 +6740,10 @@ resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== -"@types/tunnel@^0.0.1": - version "0.0.1" - resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz#0d72774768b73df26f25df9184273a42da72b19c" - integrity sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A== +"@types/tunnel@^0.0.3": + version "0.0.3" + resolved "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9" + integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA== dependencies: "@types/node" "*" @@ -8209,9 +6765,9 @@ "@types/node" "*" "@types/uuid@^8.0.0": - version "8.3.0" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" - integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== + version "8.3.4" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@types/vinyl@^2.0.4": version "2.0.6" @@ -8242,11 +6798,7 @@ dependencies: "@types/node" "*" -<<<<<<< HEAD -"@types/websocket@1.0.4", "@types/websocket@^1.0.4": -======= "@types/websocket@^1.0.4": ->>>>>>> e5aaf7bb66 (bump dependencies) version "1.0.4" resolved "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== @@ -8268,9 +6820,9 @@ "@types/node" "*" "@types/xml2js@*", "@types/xml2js@^0.4.7": - version "0.4.8" - resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.8.tgz#84c120c864a5976d0b5cf2f930a75d850fc2b03a" - integrity sha512-EyvT83ezOdec7BhDaEcsklWy7RSIdi6CNe95tmOAK0yx/Lm30C9K75snT3fYayK59ApC2oyW+rcHErdG05FHJA== + version "0.4.9" + resolved "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.9.tgz#a38267d8c2fe121c96922b12ee3bd89a58a6e20e" + integrity sha512-CHiCKIihl1pychwR2RNX5mAYmJDACgFVCMT5OArMaO3erzwXVcBqPcusr+Vl8yeeXukxZqtF8mZioqX+mpjjdw== dependencies: "@types/node" "*" @@ -8316,13 +6868,13 @@ integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== "@typescript-eslint/eslint-plugin@^5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz#382182d5cb062f52aac54434cfc47c28898c8006" - integrity sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ== + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.14.0.tgz#5119b67152356231a0e24b998035288a9cd21335" + integrity sha512-ir0wYI4FfFUDfLcuwKzIH7sMVA+db7WYen47iRSaCGl+HMAZI9fpBwfDo45ZALD3A45ZGyHWDNLhbg8tZrMX4w== dependencies: - "@typescript-eslint/experimental-utils" "5.9.0" - "@typescript-eslint/scope-manager" "5.9.0" - "@typescript-eslint/type-utils" "5.9.0" + "@typescript-eslint/scope-manager" "5.14.0" + "@typescript-eslint/type-utils" "5.14.0" + "@typescript-eslint/utils" "5.14.0" debug "^4.3.2" functional-red-black-tree "^1.0.1" ignore "^5.1.8" @@ -8330,11 +6882,7 @@ semver "^7.3.5" tsutils "^3.21.0" -<<<<<<< HEAD -"@typescript-eslint/experimental-utils@5.9.0", "@typescript-eslint/experimental-utils@^5.0.0": -======= "@typescript-eslint/experimental-utils@^5.0.0": ->>>>>>> e5aaf7bb66 (bump dependencies) version "5.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz#652762d37d6565ef07af285021b8347b6c79a827" integrity sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g== @@ -8347,56 +6895,23 @@ eslint-utils "^3.0.0" "@typescript-eslint/parser@^5.9.0": -<<<<<<< HEAD - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.9.1.tgz#b114011010a87e17b3265ca715e16c76a9834cef" - integrity sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g== + version "5.16.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.16.0.tgz#e4de1bde4b4dad5b6124d3da227347616ed55508" + integrity sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA== dependencies: - "@typescript-eslint/scope-manager" "5.9.1" - "@typescript-eslint/types" "5.9.1" - "@typescript-eslint/typescript-estree" "5.9.1" + "@typescript-eslint/scope-manager" "5.16.0" + "@typescript-eslint/types" "5.16.0" + "@typescript-eslint/typescript-estree" "5.16.0" debug "^4.3.2" -"@typescript-eslint/scope-manager@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117" - integrity sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg== - dependencies: - "@typescript-eslint/types" "5.9.0" - "@typescript-eslint/visitor-keys" "5.9.0" - -"@typescript-eslint/scope-manager@5.9.1": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.1.tgz#6c27be89f1a9409f284d95dfa08ee3400166fe69" - integrity sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ== -======= - version "5.13.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.13.0.tgz#0394ed8f2f849273c0bf4b811994d177112ced5c" - integrity sha512-GdrU4GvBE29tm2RqWOM0P5QfCtgCyN4hXICj/X9ibKED16136l9ZpoJvCL5pSKtmJzA+NRDzQ312wWMejCVVfg== - dependencies: - "@typescript-eslint/scope-manager" "5.13.0" - "@typescript-eslint/types" "5.13.0" - "@typescript-eslint/typescript-estree" "5.13.0" - debug "^4.3.2" - -"@typescript-eslint/scope-manager@5.13.0": - version "5.13.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.13.0.tgz#cf6aff61ca497cb19f0397eea8444a58f46156b6" - integrity sha512-T4N8UvKYDSfVYdmJq7g2IPJYCRzwtp74KyDZytkR4OL3NRupvswvmJQJ4CX5tDSurW2cvCc1Ia1qM7d0jpa7IA== - dependencies: - "@typescript-eslint/types" "5.13.0" - "@typescript-eslint/visitor-keys" "5.13.0" - "@typescript-eslint/scope-manager@5.14.0": version "5.14.0" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz#ea518962b42db8ed0a55152ea959c218cb53ca7b" integrity sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: - "@typescript-eslint/types" "5.9.1" - "@typescript-eslint/visitor-keys" "5.9.1" + "@typescript-eslint/types" "5.14.0" + "@typescript-eslint/visitor-keys" "5.14.0" -<<<<<<< HEAD "@typescript-eslint/scope-manager@5.16.0": version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz#7e7909d64bd0c4d8aef629cdc764b9d3e1d3a69a" @@ -8405,65 +6920,6 @@ "@typescript-eslint/types" "5.16.0" "@typescript-eslint/visitor-keys" "5.16.0" -"@typescript-eslint/type-utils@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.0.tgz#aaf45765de71c6d9707c66ccff76ec2b9aa31bb6" - integrity sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q== -======= -"@typescript-eslint/type-utils@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz#fd5963ead04bc9b7af9c3a8e534d8d39f1ce5f93" - integrity sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ== ->>>>>>> f9b03ab02f (fixups) - dependencies: - "@typescript-eslint/experimental-utils" "5.9.0" - debug "^4.3.2" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3" - integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg== - -"@typescript-eslint/types@5.9.1": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.1.tgz#1bef8f238a2fb32ebc6ff6d75020d9f47a1593c6" - integrity sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ== - -"@typescript-eslint/typescript-estree@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f" - integrity sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw== - dependencies: - "@typescript-eslint/types" "5.9.0" - "@typescript-eslint/visitor-keys" "5.9.0" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -<<<<<<< HEAD -"@typescript-eslint/types@5.16.0": - version "5.16.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz#5827b011982950ed350f075eaecb7f47d3c643ee" - integrity sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g== - -<<<<<<< HEAD -"@typescript-eslint/typescript-estree@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" - integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== -======= -"@typescript-eslint/typescript-estree@5.9.1": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.1.tgz#d5b996f49476495070d2b8dd354861cf33c005d6" - integrity sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A== ->>>>>>> f9b03ab02f (fixups) - dependencies: - "@typescript-eslint/types" "5.9.1" - "@typescript-eslint/visitor-keys" "5.9.1" -======= "@typescript-eslint/scope-manager@5.9.0": version "5.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117" @@ -8478,53 +6934,41 @@ integrity sha512-d4PTJxsqaUpv8iERTDSQBKUCV7Q5yyXjqXUl3XF7Sd9ogNLuKLkxz82qxokqQ4jXdTPZudWpmNtr/JjbbvUixw== dependencies: "@typescript-eslint/utils" "5.14.0" ->>>>>>> e5aaf7bb66 (bump dependencies) debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" tsutils "^3.21.0" -<<<<<<< HEAD -<<<<<<< HEAD -"@typescript-eslint/typescript-estree@5.16.0": - version "5.16.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz#32259459ec62f5feddca66adc695342f30101f61" - integrity sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ== -======= -"@typescript-eslint/types@5.13.0": - version "5.13.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.13.0.tgz#da1de4ae905b1b9ff682cab0bed6b2e3be9c04e5" - integrity sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg== - "@typescript-eslint/types@5.14.0": version "5.14.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11" integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw== +"@typescript-eslint/types@5.16.0": + version "5.16.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.16.0.tgz#5827b011982950ed350f075eaecb7f47d3c643ee" + integrity sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g== + "@typescript-eslint/types@5.9.0": version "5.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3" integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg== -"@typescript-eslint/typescript-estree@5.13.0": - version "5.13.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.13.0.tgz#b37c07b748ff030a3e93d87c842714e020b78141" - integrity sha512-Q9cQow0DeLjnp5DuEDjLZ6JIkwGx3oYZe+BfcNuw/POhtpcxMTy18Icl6BJqTSd+3ftsrfuVb7mNHRZf7xiaNA== +"@typescript-eslint/typescript-estree@5.14.0": + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz#78b7f7385d5b6f2748aacea5c9b7f6ae62058314" + integrity sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA== dependencies: - "@typescript-eslint/types" "5.13.0" - "@typescript-eslint/visitor-keys" "5.13.0" + "@typescript-eslint/types" "5.14.0" + "@typescript-eslint/visitor-keys" "5.14.0" debug "^4.3.2" globby "^11.0.4" is-glob "^4.0.3" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.14.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.14.0.tgz#78b7f7385d5b6f2748aacea5c9b7f6ae62058314" - integrity sha512-QGnxvROrCVtLQ1724GLTHBTR0lZVu13izOp9njRvMkCBgWX26PKvmMP8k82nmXBRD3DQcFFq2oj3cKDwr0FaUA== ->>>>>>> e5aaf7bb66 (bump dependencies) +"@typescript-eslint/typescript-estree@5.16.0": + version "5.16.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz#32259459ec62f5feddca66adc695342f30101f61" + integrity sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ== dependencies: "@typescript-eslint/types" "5.16.0" "@typescript-eslint/visitor-keys" "5.16.0" @@ -8534,27 +6978,6 @@ semver "^7.3.5" tsutils "^3.21.0" -<<<<<<< HEAD -"@typescript-eslint/utils@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" - integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== -======= -"@typescript-eslint/visitor-keys@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6" - integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw== ->>>>>>> f9b03ab02f (fixups) - dependencies: - "@typescript-eslint/types" "5.9.0" - eslint-visitor-keys "^3.0.0" - -<<<<<<< HEAD -"@typescript-eslint/utils@^5.10.0": - version "5.16.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz#42218b459d6d66418a4eb199a382bdc261650679" - integrity sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ== -======= "@typescript-eslint/typescript-estree@5.9.0": version "5.9.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f" @@ -8572,7 +6995,18 @@ version "5.14.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.14.0.tgz#6c8bc4f384298cbbb32b3629ba7415f9f80dc8c4" integrity sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w== ->>>>>>> e5aaf7bb66 (bump dependencies) + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.14.0" + "@typescript-eslint/types" "5.14.0" + "@typescript-eslint/typescript-estree" "5.14.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/utils@^5.10.0": + version "5.16.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.16.0.tgz#42218b459d6d66418a4eb199a382bdc261650679" + integrity sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ== dependencies: "@types/json-schema" "^7.0.9" "@typescript-eslint/scope-manager" "5.16.0" @@ -8581,44 +7015,30 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -<<<<<<< HEAD -"@typescript-eslint/visitor-keys@5.12.0": - version "5.12.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" - integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== -======= -"@typescript-eslint/visitor-keys@5.9.1": - version "5.9.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.1.tgz#f52206f38128dd4f675cf28070a41596eee985b7" - integrity sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg== ->>>>>>> f9b03ab02f (fixups) +"@typescript-eslint/visitor-keys@5.14.0": + version "5.14.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986" + integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw== dependencies: - "@typescript-eslint/types" "5.9.1" + "@typescript-eslint/types" "5.14.0" eslint-visitor-keys "^3.0.0" "@typescript-eslint/visitor-keys@5.16.0": version "5.16.0" resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz#f27dc3b943e6317264c7492e390c6844cd4efbbb" integrity sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g== -======= -"@typescript-eslint/visitor-keys@5.13.0": - version "5.13.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.13.0.tgz#f45ff55bcce16403b221ac9240fbeeae4764f0fd" - integrity sha512-HLKEAS/qA1V7d9EzcpLFykTePmOQqOFim8oCvhY3pZgQ8Hi38hYpHd9e5GN6nQBFQNecNhws5wkS9Y5XIO0s/g== - dependencies: - "@typescript-eslint/types" "5.13.0" - eslint-visitor-keys "^3.0.0" - -"@typescript-eslint/visitor-keys@5.14.0": - version "5.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986" - integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@typescript-eslint/types" "5.16.0" eslint-visitor-keys "^3.0.0" -<<<<<<< HEAD +"@typescript-eslint/visitor-keys@5.9.0": + version "5.9.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6" + integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw== + dependencies: + "@typescript-eslint/types" "5.9.0" + eslint-visitor-keys "^3.0.0" + "@uiw/react-codemirror@^4.5.1": version "4.5.1" resolved "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.5.1.tgz#f2af4e761f13b729a3ec7c7c858b34432cdf46a7" @@ -8629,15 +7049,6 @@ "@codemirror/state" "^0.19.9" "@codemirror/theme-one-dark" "^0.19.1" "@codemirror/view" "^0.19.45" -======= -"@typescript-eslint/visitor-keys@5.9.0": - version "5.9.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6" - integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw== - dependencies: - "@typescript-eslint/types" "5.9.0" - eslint-visitor-keys "^3.0.0" ->>>>>>> e5aaf7bb66 (bump dependencies) "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -8798,12 +7209,7 @@ a-sync-waterfall@^1.0.0: resolved "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" integrity sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA== -abab@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -abab@^2.0.5: +abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== @@ -8866,7 +7272,7 @@ acorn@^7.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.0: +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: version "8.7.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== @@ -8886,14 +7292,7 @@ after@0.8.2: resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -agent-base@6: - version "6.0.1" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== - dependencies: - debug "4" - -agent-base@^6.0.2: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -8947,32 +7346,19 @@ ajv@^6.10.0, ajv@^6.10.1, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5, ajv uri-js "^4.2.2" ajv@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" - integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== + version "7.2.4" + resolved "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz#8e239d4d56cf884bccca8cca362f508446dc160f" + integrity sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -<<<<<<< HEAD -<<<<<<< HEAD ajv@^8.0.0, ajv@^8.10.0, ajv@^8.8.0: version "8.10.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== -======= -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -ajv@^8.0.0, ajv@^8.8.0: - version "8.9.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" - integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== -<<<<<<< HEAD ->>>>>>> f9b03ab02f (fixups) -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -9111,13 +7497,13 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-datasource@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.0.tgz#ee84a802c45818e6a21a5f2d427f94851a4f9ebe" - integrity sha512-It8POTZTOCAnedRj2izEVeySN06LIfojigZjWaOY7voLe0DIgtvhql91xr27fuIWsR/Ew9twO3dLBjjvy34J4Q== +apollo-datasource@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.1.tgz#a1168dd68371930de3ed4245ad12fa8600efe2cc" + integrity sha512-Z3a8rEUXVPIZ1p8xrFL8bcNhWmhOmovgDArvwIwmJOBnh093ZpRfO+ESJEDAN4KswmyzCLDAwjsW4zQOONdRUw== dependencies: apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" + apollo-server-env "^4.2.1" apollo-reporting-protobuf@^3.3.1: version "3.3.1" @@ -9133,32 +7519,16 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" -<<<<<<< HEAD -<<<<<<< HEAD apollo-server-core@^3.6.4, apollo-server-core@^3.6.5: version "3.6.5" resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.5.tgz#f8a30bab49d7ccbd9500b85968accae0d8631927" integrity sha512-9lOTHnJnPV4TiVwt4DMl3HDWGebHxoJIU2tonOuIkRxOUjwCjsDsHfkIrPA3vutmXIb7R3OPxh/mofdDpm7DjQ== -======= -apollo-server-core@^3.6.1: - version "3.6.1" - resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.1.tgz#e835198a2eda5bcb61d2a1174d44ecb0ac414d15" - integrity sha512-V2Us5x7d+w8dVdyFLxEygMgaQ3KZ6Z59HpaQBNHQ7C5wVZhjUXIsgbehBtfzQbMpyMx0z5/8Z8eIrC4zNoGJDw== ->>>>>>> f9b03ab02f (fixups) -======= -apollo-server-core@^3.6.3: - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.6.3.tgz#6b12ffa1af8bc8799930f72360090834915033d1" - integrity sha512-TFJmAlI6vPp1MHOSXqYkE6leAyMekWv/D/3ma11uETkcd3EPjERGmxtTXPJElMVEkOK9BEElYKthCrH7bjYLuw== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" "@graphql-tools/mock" "^8.1.2" "@graphql-tools/schema" "^8.0.0" - "@graphql-tools/utils" "^8.0.0" "@josephg/resolvable" "^1.0.0" -<<<<<<< HEAD apollo-datasource "^3.3.1" apollo-reporting-protobuf "^3.3.1" apollo-server-caching "^3.3.0" @@ -9166,15 +7536,6 @@ apollo-server-core@^3.6.3: apollo-server-errors "^3.3.1" apollo-server-plugin-base "^3.5.2" apollo-server-types "^3.5.2" -======= - apollo-datasource "^3.3.0" - apollo-reporting-protobuf "^3.3.0" - apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" - apollo-server-errors "^3.3.0" - apollo-server-plugin-base "^3.5.0" - apollo-server-types "^3.5.0" ->>>>>>> f9b03ab02f (fixups) async-retry "^1.2.1" fast-json-stable-stringify "^2.1.0" graphql-tag "^2.11.0" @@ -9184,60 +7545,35 @@ apollo-server-core@^3.6.3: sha.js "^2.4.11" uuid "^8.0.0" -apollo-server-env@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.0.tgz#d7cb08a81cee3025cd47b08be80b359d61d85913" - integrity sha512-4xJ+PCoWsFLj4rU6iXrIhqD7nI42goi4Iqrhsof9680ljSzkzd+PCwZsja3mHOFXKUQQUvJ7StVSgwaiRu45+A== +apollo-server-env@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" + integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== dependencies: - node-fetch "^2.6.1" + node-fetch "^2.6.7" -apollo-server-errors@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.0.tgz#ac8ceb1400064312f983d8d70195693fbcf2be3c" - integrity sha512-9/MNlPZBbEjcCdJcUSbKbVEBT9xZS8GSpX7T/TyzcxHSbsXJszSDSipQNGC+PRKTKAUnv61IONScVyLKEZ5XEQ== +apollo-server-errors@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" + integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== -<<<<<<< HEAD -<<<<<<< HEAD apollo-server-express@^3.0.0, apollo-server-express@^3.6.4: version "3.6.5" resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.5.tgz#e623ee6f2e2d4cc2b4075baf7624a899a21ec1a6" integrity sha512-mV1Dif//BUq1WFlCWfaSlhsuxhcJ/gGD8HdQ6/s3JEspStS7SgmeSUIwJYl3vw8IA/8j7GNg/EINkc57x2UbdA== -======= -apollo-server-express@^3.0.0, apollo-server-express@^3.6.1: - version "3.6.1" - resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.1.tgz#b8bda303e05c551ac76c9c0b26bc651ca1466912" - integrity sha512-29imWvRPn5GsQq02Akt0+jejpWzpOIZfUmgoiFm4YB7somvhDNw15Pu7fv4sISK8ehNIDF68IpLd2cpY8sCkYQ== ->>>>>>> f9b03ab02f (fixups) -======= -apollo-server-express@^3.0.0, apollo-server-express@^3.6.3: - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.6.3.tgz#5daf58bf0bdf0107ded7cd52c7e6ce6cd32c8b44" - integrity sha512-3CjahZ+n+1T7pHH1qW1B6Ns0BzwOMeupAp2u0+M8ruOmE/e7VKn0OSOQQckZ8Z2AcWxWeno9K89fIv3PoSYgYA== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@types/accepts" "^1.3.5" "@types/body-parser" "1.19.2" "@types/cors" "2.8.12" "@types/express" "4.17.13" - "@types/express-serve-static-core" "4.17.27" + "@types/express-serve-static-core" "4.17.28" accepts "^1.3.5" -<<<<<<< HEAD -<<<<<<< HEAD apollo-server-core "^3.6.5" apollo-server-types "^3.5.2" -======= - apollo-server-core "^3.6.1" - apollo-server-types "^3.5.0" ->>>>>>> f9b03ab02f (fixups) -======= - apollo-server-core "^3.6.3" - apollo-server-types "^3.5.1" ->>>>>>> e5aaf7bb66 (bump dependencies) body-parser "^1.19.0" cors "^2.8.5" parseurl "^1.3.3" -<<<<<<< HEAD apollo-server-plugin-base@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.2.tgz#18a08353f5ea207a07f2c1e66dd7ef2335ce8c84" @@ -9249,49 +7585,18 @@ apollo-server-types@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.2.tgz#903d499a70b9010764cbab4d704ddb8c086aa06f" integrity sha512-vhcbIWsBkoNibABOym4AAPBoNDjokhjUQokKYdwZMeqrb850PMQdNJFrGyXT5onP408Ghv4O8PfgBuPQmeJhVQ== -======= -apollo-server-plugin-base@^3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.0.tgz#f3cb4f677152b60113f06f8d23b6234ecff847b4" - integrity sha512-dpi+W6wexT4H3cjIhxC9SJABkR8TCfxycoHK+U4jxQXUdg50da+KnMgoWlQbF1tuXtUs4gnJtij1RjuGtKwBhw== - dependencies: - apollo-server-types "^3.5.0" - -apollo-server-types@^3.5.0: - version "3.5.0" - resolved "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.5.0.tgz#82f912d7765152fe1fde86cea8a076e9a0831a9d" - integrity sha512-4JaZNu1kjrzIbppgc78hhIe2DFe+XONf8grprcjTOe0v8dIsuV0tFUnl+awTvTpHU1sdjRCKwnj382BebiL+qw== ->>>>>>> f9b03ab02f (fixups) dependencies: apollo-reporting-protobuf "^3.3.1" apollo-server-caching "^3.3.0" - apollo-server-env "^4.2.0" + apollo-server-env "^4.2.1" apollo-server@^3.0.0: -<<<<<<< HEAD -<<<<<<< HEAD version "3.6.4" resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.4.tgz#e1bc966eb7d03944274056af4b17b380f0ac8696" integrity sha512-PIEDWtfiiiKt0uEMJ7/qiyULPat/ichDN/h9GrrroOFiz/tfU/yJXuHpoq8R/uzVyn4GpEc4OoibC2zOr59zig== dependencies: apollo-server-core "^3.6.4" apollo-server-express "^3.6.4" -======= - version "3.6.1" - resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.1.tgz#29420b1c0cddbf2e18147a3ca7299485f17137a2" - integrity sha512-Y2MY2/WvaTiofVoIR5ZIYt6c6wX8klZRaXI9x+7JBiFV9HMcOuLLpU3+P4r2EVXuN1LLe82m1PgiAYr+a1OmQg== - dependencies: - apollo-server-core "^3.6.1" - apollo-server-express "^3.6.1" ->>>>>>> f9b03ab02f (fixups) -======= - version "3.6.3" - resolved "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.3.tgz#0ba0ddb2835ccf27056d20b6f5b83b0ce9545a79" - integrity sha512-kNvOiDNkIaO+MsfR9v40Vz4ArlDdc9VwVKGJy5dniLW9AoDa/tSF99m8ItfGoMypqlRPMgrNGxkMuToBnvYXNQ== - dependencies: - apollo-server-core "^3.6.3" - apollo-server-express "^3.6.3" ->>>>>>> e5aaf7bb66 (bump dependencies) express "^4.17.1" aproba@^1.0.3: @@ -9633,24 +7938,18 @@ available-typed-arrays@^1.0.2: array-filter "^1.0.0" aws-sdk-mock@^5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.2.1.tgz#126d4d5362c96b7d1d0bd87708a99d626c19ffd4" - integrity sha512-dY7zA1p/lX335V4/aOJ2L8ggXC3a5zokTJFZlZVW3uU+Zej7u+V7WrEcN5TVaJAnk4auT263T6EK/OHW4WjKhw== + version "5.6.2" + resolved "https://registry.npmjs.org/aws-sdk-mock/-/aws-sdk-mock-5.6.2.tgz#664771462953ca8d3806d5a50a63b4a6dbd5290f" + integrity sha512-GRJg8kjRJFLm2aLiPkYSqe/RreHqlqncAeFtWdAbtSxzBdct9EaV6rqSqjyWXKNJG45Rzn2Ojo3F6qVIgkQnSg== dependencies: aws-sdk "^2.928.0" sinon "^11.1.1" traverse "^0.6.6" aws-sdk@^2.840.0, aws-sdk@^2.928.0, aws-sdk@^2.948.0: -<<<<<<< HEAD - version "2.1065.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1065.0.tgz#82b6e4e2a6fbccb1767339e309edd4f0daa958e6" - integrity sha512-OFvpXoL104dTFKpU14ILcLDPAlDbkJNIKXnnG2pK+2x++CvzIRJeNyERtUuEo7QMUOwq5U4nIQJKSPt5fBC/HA== -======= - version "2.1088.0" - resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1088.0.tgz#e8ea761eff2b5c42aca6136c5a01fa9b8066f0a2" - integrity sha512-KtGJTvMPJL6QynasbSMNvz7Onc5ejebY6NzuUvgrw6sNohNJDR/3J/0e016ocQwvEq79MNK4v4EsxNi9eMELtg== ->>>>>>> e5aaf7bb66 (bump dependencies) + version "2.1095.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1095.0.tgz#7847493b09a326a0613010ed9db53302f760edf6" + integrity sha512-OrZq2pTDsnfOJYsAdRlw+NXTGLQYqWldSZR3HugW8JT4JPWyFZrgB2yPP2ElFHX+4J4SZg5QvkAXl/7s9gLTgA== dependencies: buffer "4.9.2" events "1.1.1" @@ -9953,16 +8252,7 @@ bdd-lazy-var@^2.6.0: resolved "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz#ca03fb36d68c5a507c0ba9a4d53160b899e6b7cb" integrity sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A== -<<<<<<< HEAD -before-after-hook@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" - integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== - -before-after-hook@^2.2.0: -======= before-after-hook@^2.1.0, before-after-hook@^2.2.0: ->>>>>>> e5aaf7bb66 (bump dependencies) version "2.2.2" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== @@ -9992,17 +8282,10 @@ bfj@^7.0.2: hoopy "^0.1.4" tryer "^1.0.1" -<<<<<<< HEAD big-integer@^1.6.16, big-integer@^1.6.17: version "1.6.51" resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== -======= -big-integer@^1.6.17: - version "1.6.48" - resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" - integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== ->>>>>>> 76d216e74b (fixups) big.js@^5.2.2: version "5.2.2" @@ -10128,7 +8411,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -10408,11 +8691,6 @@ bytes@3.0.0: resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" - integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== - bytes@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -10529,11 +8807,11 @@ camelcase-keys@^6.2.2: quick-lru "^4.0.1" camelcase-keys@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.1.tgz#5a57e6dfb3f6c7929dad15599ee4476a7e9a3b2d" - integrity sha512-P331lEls98pW8JLyodNWfzuz91BEDVA4VpW2/SwXnyv2K495tq1N777xzDbFgnEigfA7UIY0xa6PwR/H9jijjA== + version "7.0.2" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252" + integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg== dependencies: - camelcase "^6.2.0" + camelcase "^6.3.0" map-obj "^4.1.0" quick-lru "^5.1.1" type-fest "^1.2.1" @@ -10553,10 +8831,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-api@^3.0.0: version "3.0.0" @@ -10568,22 +8846,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -<<<<<<< HEAD -caniuse-lite@^1.0.0: - version "1.0.30001282" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz#38c781ee0a90ccfe1fe7fefd00e43f5ffdcb96fd" - integrity sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg== - -caniuse-lite@^1.0.30001286: - version "1.0.30001296" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8" - integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q== -======= caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: version "1.0.30001315" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001315.tgz#f1b1efd1171ee1170d52709a7252632dacbd7c77" integrity sha512-5v7LFQU4Sb/qvkz7JcZkvtSH1Ko+1x2kgo3ocdBeMGZSOFpuE1kkm0kpTwLtWeFrw5qw08ulLxJjVIXIS8MkiQ== ->>>>>>> e5aaf7bb66 (bump dependencies) canvas@^2.6.1: version "2.9.0" @@ -11019,15 +9285,6 @@ co@^4.6.0: resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-error-fragment@0.0.230: version "0.0.230" resolved "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7" @@ -11038,13 +9295,13 @@ code-point-at@^1.0.0: resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -codemirror-graphql@^1.2.11: - version "1.2.11" - resolved "https://registry.npmjs.org/codemirror-graphql/-/codemirror-graphql-1.2.11.tgz#337b9348ec649e08627fcb158c6c497a2c1a3d57" - integrity sha512-pB3LVgrwj+qfO1vaVvnzTYBKhkms1hU/t0fiOM7tiov/Kq+l1BXCgYJyh5/muGDxpz7hqzg/fWJwIYNi40kLiA== +codemirror-graphql@^1.2.13: + version "1.2.13" + resolved "https://registry.npmjs.org/codemirror-graphql/-/codemirror-graphql-1.2.13.tgz#2525141b2ea8e54b78aea91cc8b85693bbcb17d9" + integrity sha512-7I2qPHxoTndvDNBkaoYYbL2S6A6JAMXBA17ZFcIWAj7A0V/NEg0aPSxhwNRK1yLmC+3XI9OR4BjZTiPxrA2gBA== dependencies: "@codemirror/stream-parser" "^0.19.2" - graphql-language-service "^4.1.4" + graphql-language-service "^5.0.0" codemirror@^5.58.2: version "5.63.3" @@ -11103,17 +9360,10 @@ color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -<<<<<<< HEAD -color-string@^1.5.2, color-string@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" - integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== -======= color-string@^1.5.2, color-string@^1.9.0: version "1.9.0" resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" @@ -11132,12 +9382,12 @@ color@3.0.x: color-string "^1.5.2" color@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/color/-/color-4.0.1.tgz#21df44cd10245a91b1ccf5ba031609b0e10e7d67" - integrity sha512-rpZjOKN5O7naJxkH2Rx1sZzzBgaiWECc6BYXjeCE6kF0kcASJYbUq02u7JqIHwCb/j3NhV+QhRL2683aICeGZA== + version "4.2.1" + resolved "https://registry.npmjs.org/color/-/color-4.2.1.tgz#498aee5fce7fc982606c8875cab080ac0547c884" + integrity sha512-MFJr0uY4RvTQUKvPq7dh9grVOTYSFeXja2mBXioCGjnjJoXrAp9jJ1NQTDR73c9nwBSAQiNKloKl5zq9WB9UPw== dependencies: color-convert "^2.0.1" - color-string "^1.6.0" + color-string "^1.9.0" colord@^2.9.1: version "2.9.1" @@ -11154,7 +9404,7 @@ colors@1.0.3: resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@1.4.0, colors@^1.1.2: +colors@1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -11242,16 +9492,11 @@ common-ancestor-path@^1.0.1: resolved "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== -common-tags@1.8.2: +common-tags@1.8.2, common-tags@^1.8.0: version "1.8.2" resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== -common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -11339,16 +9584,6 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -11589,34 +9824,21 @@ core-js-compat@^3.20.0, core-js-compat@^3.20.2: browserslist "^4.19.1" semver "7.0.0" -core-js-pure@^3.20.2: - version "3.20.2" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f" - integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg== - -core-js-pure@^3.6.5: - version "3.16.2" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.2.tgz#0ef4b79cabafb251ea86eb7d139b42bd98c533e8" - integrity sha512-oxKe64UH049mJqrKkynWp6Vu0Rlm/BTXO/bJZuN2mmR3RtOFNepLlSWDd1eo16PzHpQAoNG97rLU1V/YxesJjw== +core-js-pure@^3.20.2, core-js-pure@^3.6.5: + version "3.21.1" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" + integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.10: version "2.6.12" resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.4.1: +core-js@^3.4.1, core-js@^3.6.5: version "3.21.1" resolved "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== -<<<<<<< HEAD -core-js@^3.6.5: - version "3.20.3" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a" - integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag== - -======= ->>>>>>> e5aaf7bb66 (bump dependencies) core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -11760,11 +9982,7 @@ cross-fetch@3.1.4: dependencies: node-fetch "2.6.1" -<<<<<<< HEAD -cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.4, cross-fetch@^3.1.5: -======= cross-fetch@3.1.5, cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.3, cross-fetch@^3.1.5: ->>>>>>> e5aaf7bb66 (bump dependencies) version "3.1.5" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== @@ -11810,33 +10028,17 @@ cross-undici-fetch@^0.0.20: node-fetch "^2.6.5" undici "^4.9.3" -<<<<<<< HEAD -cross-undici-fetch@^0.0.26: - version "0.0.26" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.0.26.tgz#29d93d56609f4d2334f9d5333d23ef7a242842a7" - integrity sha512-aMDRrLbWr0TGXfY92stlV+XOGpskeqFmWmrKSWsnc8w6gK5LPE83NBh7O7N6gCb2xjwHcm1Yn2nBXMEVH2RBcA== - dependencies: - abort-controller "^3.0.0" - form-data "^4.0.0" - node-fetch "^2.6.5" - undici "^4.9.3" - -cross-undici-fetch@^0.1.4: - version "0.1.13" - resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.13.tgz#807d17ce5c524c21bc0a6486e97ecccb901c6529" - integrity sha512-nF+g932BrKPoK0RZQKRA9S2IKXeveGPJlaUWXyUEGjjSpAdxBhEHDrMDbiksP2iSNe8O5vn1bN3tTvrd6+yFSg== -======= cross-undici-fetch@^0.1.4: version "0.1.25" resolved "https://registry.npmjs.org/cross-undici-fetch/-/cross-undici-fetch-0.1.25.tgz#8c6826dd0ffbb45fcb1a554be5984e0eaef7f3ba" integrity sha512-KS6hm/VuRO+3jIrg4uidz3mQ8NWvCbiTTOg3yoH30zuGVUvjqZlnXw66h0kuzyfP21hDkrdIbufXCW6BAQdSNw== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: abort-controller "^3.0.0" form-data-encoder "^1.7.1" formdata-node "^4.3.1" - node-fetch "^2.6.5" + node-fetch "^2.6.7" undici "^4.9.3" + web-streams-polyfill "^3.2.0" crypto-browserify@^3.11.0: version "3.12.0" @@ -11892,12 +10094,12 @@ css-in-js-utils@^2.0.0: isobject "^3.0.1" css-loader@^6.5.1: - version "6.6.0" - resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" - integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== + version "6.7.1" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== dependencies: icss-utils "^5.1.0" - postcss "^8.4.5" + postcss "^8.4.7" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -11905,26 +10107,10 @@ css-loader@^6.5.1: postcss-value-parser "^4.2.0" semver "^7.3.5" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - css-select@^4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== -<<<<<<< HEAD dependencies: boolbase "^1.0.0" css-what "^5.0.0" @@ -11932,31 +10118,7 @@ css-select@^4.1.3: domutils "^2.6.0" nth-check "^2.0.0" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" - integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" -======= - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" ->>>>>>> e5aaf7bb66 (bump dependencies) - -css-tree@^1.1.3: +css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -11977,14 +10139,6 @@ css-vendor@^2.0.8: "@babel/runtime" "^7.8.3" is-in-browser "^1.0.2" -<<<<<<< HEAD -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -======= ->>>>>>> e5aaf7bb66 (bump dependencies) css-what@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" @@ -12064,7 +10218,7 @@ cssnano@^5.0.1: lilconfig "^2.0.3" yaml "^1.10.2" -csso@^4.0.2, csso@^4.2.0: +csso@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== @@ -12081,7 +10235,7 @@ cssom@~0.3.6: resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.2.0, cssstyle@^2.3.0: +cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== @@ -12414,14 +10568,6 @@ d3-zoom@^3.0.0: d3-selection "2 - 3" d3-transition "2 - 3" -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - dagre@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee" @@ -12560,14 +10706,6 @@ decimal.js-light@^2.4.1: version "2.5.0" resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.0.tgz#ca7faf504c799326df94b0ab920424fdfc125348" integrity sha512-b3VJCbd2hwUpeRGG3Toob+CRo8W22xplipNhP3tN7TSVB/cyMX71P1vM2Xjc9H74uV6dS2hDDmo/rHq8L87Upg== -<<<<<<< HEAD - -decimal.js@^10.2.0: - version "10.2.0" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" - integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) decimal.js@^10.2.1: version "10.3.1" @@ -12624,7 +10762,7 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@0.6.0, deep-extend@^0.6.0, deep-extend@~0.6.0: +deep-extend@0.6.0, deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== @@ -12634,7 +10772,7 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^4.2.2: +deepmerge@^4.2.2, deepmerge@~4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -12799,26 +10937,15 @@ detect-newline@^3.0.0: resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -<<<<<<< HEAD -<<<<<<< HEAD -detect-node@^2.0.4, detect-node@^2.1.0: -======= detect-node@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== detect-node@^2.1.0: ->>>>>>> e5aaf7bb66 (bump dependencies) version "2.1.0" resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -======= -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== ->>>>>>> 76d216e74b (fixups) detect-port-alt@^1.1.6: version "1.1.6" @@ -12958,15 +11085,10 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.4, dom-accessibility-api@^0.5.6: - version "0.5.6" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.6.tgz#3f5d43b52c7a3bd68b5fb63fa47b4e4c1fdf65a9" - integrity sha512-DplGLZd8L1lN64jlT27N9TVSESFR5STaEJvX+thCby7fuCHonfPpAlodYc3vuUYbDuDec5w8AMP7oCM5TWFsqw== - -dom-accessibility-api@^0.5.9: - version "0.5.10" - resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.10.tgz#caa6d08f60388d0bb4539dd75fe458a9a1d0014c" - integrity sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g== +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.13" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b" + integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw== dom-converter@^0.2.0: version "0.2.0" @@ -12989,17 +11111,6 @@ dom-helpers@^5.0.1: dependencies: "@babel/runtime" "^7.8.7" csstype "^2.6.7" -<<<<<<< HEAD - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dom-serializer@^1.0.1: version "1.2.0" @@ -13020,17 +11131,7 @@ domain-browser@^1.1.1: resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== - -domelementtype@^2.2.0: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== @@ -13042,24 +11143,10 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -<<<<<<< HEAD -domhandler@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" - integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== - dependencies: - domelementtype "^2.1.0" - -domhandler@^4.2.0: - version "4.2.2" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== -======= domhandler@^4.0.0, domhandler@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: domelementtype "^2.2.0" @@ -13073,17 +11160,6 @@ dompurify@^2.2.7, dompurify@^2.2.9, dompurify@^2.3.6: resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz#2e019d7d7617aacac07cbbe3d88ae3ad354cf875" integrity sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg== -<<<<<<< HEAD -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -======= ->>>>>>> e5aaf7bb66 (bump dependencies) domutils@^2.5.2, domutils@^2.6.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -13316,28 +11392,15 @@ engine.io@~3.5.0: engine.io-parser "~2.2.0" ws "~7.4.2" -<<<<<<< HEAD -<<<<<<< HEAD enhanced-resolve@^5.9.2: version "5.9.2" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== -======= -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -enhanced-resolve@^5.8.3: - version "5.8.3" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" - integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== -<<<<<<< HEAD ->>>>>>> f9b03ab02f (fixups) -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.0: +enquirer@^2.3.0, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -13398,33 +11461,7 @@ error@^10.4.0: resolved "https://registry.npmjs.org/error/-/error-10.4.0.tgz#6fcf0fd64bceb1e750f8ed9a3dd880f00e46a487" integrity sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw== -<<<<<<< HEAD -es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: -======= es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.19.0, es-abstract@^1.19.1: ->>>>>>> e5aaf7bb66 (bump dependencies) version "1.19.1" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== @@ -13464,109 +11501,75 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -<<<<<<< HEAD -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.53" - resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" +esbuild-android-64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz#b868bbd9955a92309c69df628d8dd1945478b45c" + integrity sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ== -es6-iterator@^2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/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" +esbuild-android-arm64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz#e7d6430555e8e9c505fd87266bbc709f25f1825c" + integrity sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ== -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/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" +esbuild-darwin-64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz#4dc7484127564e89b4445c0a560a3cb50b3d68e1" + integrity sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g== -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/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" +esbuild-darwin-arm64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz#469e59c665f84a8ed323166624c5e7b9b2d22ac1" + integrity sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -esbuild-android-arm64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303" - integrity sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ== +esbuild-freebsd-64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz#895df03bf5f87094a56c9a5815bf92e591903d70" + integrity sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA== -esbuild-darwin-64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz#615ea0a9de67b57a293a7128d7ac83ee307a856d" - integrity sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw== +esbuild-freebsd-arm64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz#0b72a41a6b8655e9a8c5608f2ec1afdcf6958441" + integrity sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA== -esbuild-darwin-arm64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz#82054dcfcecb15ccfd237093b8008e7745a99ad9" - integrity sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw== +esbuild-linux-32@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz#43b8ba3803b0bbe7f051869c6a8bf6de1e95de28" + integrity sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw== -esbuild-freebsd-64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz#778a818c5b078d5cdd6bb6c0e0797217d196999b" - integrity sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A== +esbuild-linux-64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz#dc8072097327ecfadba1735562824ce8c05dd0bd" + integrity sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg== -esbuild-freebsd-arm64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz#18da93b9f3db2e036f72383bfe73b28b73bb332c" - integrity sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ== +esbuild-linux-arm64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz#c52b58cbe948426b1559910f521b0a3f396f10b8" + integrity sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ== -esbuild-linux-32@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz#d0d5d9f5bb3536e17ac097e9512019c65b7c0234" - integrity sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg== +esbuild-linux-arm@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz#df869dbd67d4ee3a04b3c7273b6bd2b233e78a18" + integrity sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw== -esbuild-linux-64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz#2773d540971999ea7f38107ef92fca753f6a8c30" - integrity sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg== +esbuild-linux-mips64le@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz#a2b646d9df368b01aa970a7b8968be6dd6b01d19" + integrity sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A== -esbuild-linux-arm64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz#5d4480ce6d6bffab1dd76a23158f5a5ab33e7ba4" - integrity sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A== +esbuild-linux-ppc64le@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz#9a21af766a0292578a3009c7408b8509cac7cefd" + integrity sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA== -esbuild-linux-arm@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz#c6391b3f7c8fa6d3b99a7e893ce0f45f3a921eef" - integrity sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g== +esbuild-linux-riscv64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz#344a27f91568056a5903ad5841b447e00e78d740" + integrity sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg== -esbuild-linux-mips64le@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz#2c8dabac355c502e86c38f9f292b3517d8e181f3" - integrity sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ== - -esbuild-linux-ppc64le@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz#69d71b2820d5c94306072dac6094bae38e77d1c0" - integrity sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng== - -esbuild-linux-riscv64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz#c0ec0fc3a23624deebf657781550d2329cec4213" - integrity sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ== - -esbuild-linux-s390x@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz#ec2af4572d63336cfb27f5a5c851fb1b6617dd91" - integrity sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw== +esbuild-linux-s390x@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz#73a7309bd648a07ef58f069658f989a5096130db" + integrity sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg== esbuild-loader@^2.18.0: version "2.18.0" @@ -13580,60 +11583,61 @@ esbuild-loader@^2.18.0: tapable "^2.2.0" webpack-sources "^2.2.0" -esbuild-netbsd-64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz#0e283278e9fdbaa7f0930f93ee113d7759cd865e" - integrity sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA== +esbuild-netbsd-64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz#482a587cdbd18a6c264a05136596927deb46c30a" + integrity sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q== -esbuild-openbsd-64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz#2a73bba04e16d8ef278fbe2be85248e12a2f2cc2" - integrity sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA== +esbuild-openbsd-64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz#e99f8cdc63f1628747b63edd124d53cf7796468d" + integrity sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw== -esbuild-sunos-64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz#8fe03513b8b2e682a6d79d5e3ca5849651a3c1d8" - integrity sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g== +esbuild-sunos-64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz#8611d825bcb8239c78d57452e83253a71942f45c" + integrity sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg== -esbuild-windows-32@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz#a75df61e3e49df292a1842be8e877a3153ee644f" - integrity sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg== +esbuild-windows-32@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz#c06374206d4d92dd31d4fda299b09f51a35e82f6" + integrity sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw== -esbuild-windows-64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz#d06cf8bbe4945b8bf95a730d871e54a22f635941" - integrity sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw== +esbuild-windows-64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz#756631c1d301dfc0d1a887deed2459ce4079582f" + integrity sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg== -esbuild-windows-arm64@0.14.22: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz#f8b1b05c548073be8413a5ecb12d7c2f6e717227" - integrity sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg== +esbuild-windows-arm64@0.14.27: + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz#ad7e187193dcd18768b16065a950f4441d7173f4" + integrity sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg== esbuild@^0.14.1, esbuild@^0.14.10, esbuild@^0.14.6: - version "0.14.22" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.22.tgz#2b55fde89d7aa5aaaad791816d58ff9dfc5ed085" - integrity sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA== + version "0.14.27" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz#41fe0f1b6b68b9f77cac025009bc54bb96e616f1" + integrity sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q== optionalDependencies: - esbuild-android-arm64 "0.14.22" - esbuild-darwin-64 "0.14.22" - esbuild-darwin-arm64 "0.14.22" - esbuild-freebsd-64 "0.14.22" - esbuild-freebsd-arm64 "0.14.22" - esbuild-linux-32 "0.14.22" - esbuild-linux-64 "0.14.22" - esbuild-linux-arm "0.14.22" - esbuild-linux-arm64 "0.14.22" - esbuild-linux-mips64le "0.14.22" - esbuild-linux-ppc64le "0.14.22" - esbuild-linux-riscv64 "0.14.22" - esbuild-linux-s390x "0.14.22" - esbuild-netbsd-64 "0.14.22" - esbuild-openbsd-64 "0.14.22" - esbuild-sunos-64 "0.14.22" - esbuild-windows-32 "0.14.22" - esbuild-windows-64 "0.14.22" - esbuild-windows-arm64 "0.14.22" + esbuild-android-64 "0.14.27" + esbuild-android-arm64 "0.14.27" + esbuild-darwin-64 "0.14.27" + esbuild-darwin-arm64 "0.14.27" + esbuild-freebsd-64 "0.14.27" + esbuild-freebsd-arm64 "0.14.27" + esbuild-linux-32 "0.14.27" + esbuild-linux-64 "0.14.27" + esbuild-linux-arm "0.14.27" + esbuild-linux-arm64 "0.14.27" + esbuild-linux-mips64le "0.14.27" + esbuild-linux-ppc64le "0.14.27" + esbuild-linux-riscv64 "0.14.27" + esbuild-linux-s390x "0.14.27" + esbuild-netbsd-64 "0.14.27" + esbuild-openbsd-64 "0.14.27" + esbuild-sunos-64 "0.14.27" + esbuild-windows-32 "0.14.27" + esbuild-windows-64 "0.14.27" + esbuild-windows-arm64 "0.14.27" escalade@^3.1.1: version "3.1.1" @@ -13670,18 +11674,6 @@ escape-string-regexp@^5.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== -escodegen@^1.14.1: - version "1.14.3" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - escodegen@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -13695,9 +11687,9 @@ escodegen@^2.0.0: source-map "~0.6.1" eslint-config-prettier@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== + version "8.5.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== eslint-formatter-friendly@^7.0.0: version "7.0.0" @@ -13718,19 +11710,10 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.1.1: - version "2.7.1" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" - integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - pkg-dir "^2.0.0" - -eslint-module-utils@^2.7.2: - version "2.7.2" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129" - integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg== +eslint-module-utils@^2.1.1, eslint-module-utils@^2.7.2: + version "2.7.3" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== dependencies: debug "^3.2.7" find-up "^2.1.0" @@ -13780,13 +11763,6 @@ eslint-plugin-import@^2.25.4: resolve "^1.20.0" tsconfig-paths "^3.12.0" -eslint-plugin-jest@^25.3.4: - version "25.3.4" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.3.4.tgz#2031dfe495be1463330f8b80096ddc91f8e6387f" - integrity sha512-CCnwG71wvabmwq/qkz0HWIqBHQxw6pXB1uqt24dxqJ9WB34pVg49bL1sjXphlJHgTMWGhBjN1PicdyxDxrfP5A== - dependencies: - "@typescript-eslint/experimental-utils" "^5.0.0" - eslint-plugin-jest@^26.1.2: version "26.1.2" resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.1.2.tgz#0f1a15c62889fffc3f78a773749d672f1bedb15f" @@ -13867,10 +11843,10 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" - integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -13887,22 +11863,10 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" - integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== - -eslint-webpack-plugin@^2.6.0: - version "2.6.0" - resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd" - integrity sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ== - dependencies: - "@types/eslint" "^7.28.2" - arrify "^2.0.1" - jest-worker "^27.3.1" - micromatch "^4.0.4" - normalize-path "^3.0.0" - schema-utils "^3.1.1" +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint-webpack-plugin@^3.1.1: version "3.1.1" @@ -13916,19 +11880,11 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^3.1.1" eslint@^8.6.0: -<<<<<<< HEAD - version "8.7.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c" - integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w== + version "8.11.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.11.0.tgz#88b91cfba1356fc10bb9eb592958457dfe09fb37" + integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA== dependencies: - "@eslint/eslintrc" "^1.0.5" -======= - version "8.10.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.10.0.tgz#931be395eb60f900c01658b278e05b6dae47199d" - integrity sha512-tcI1D9lfVec+R4LE1mNDnzoJ/f71Kl/9Cv4nG47jOueCMBrCCKYXr4AUVS7go6mWYGFD4+EoN6+eXSrEbRzXVw== - dependencies: - "@eslint/eslintrc" "^1.2.0" ->>>>>>> e5aaf7bb66 (bump dependencies) + "@eslint/eslintrc" "^1.2.1" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -13936,10 +11892,10 @@ eslint@^8.6.0: debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.0" + eslint-scope "^7.1.1" eslint-utils "^3.0.0" - eslint-visitor-keys "^3.2.0" - espree "^9.3.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -13969,14 +11925,14 @@ esm@^3.2.25: resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^9.2.0, espree@^9.3.0: - version "9.3.0" - resolved "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" - integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== +espree@^9.3.1: + version "9.3.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" + integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== dependencies: acorn "^8.7.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.1.0" + eslint-visitor-keys "^3.3.0" esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" @@ -13997,7 +11953,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -14032,14 +11988,6 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - event-source-polyfill@^1.0.25: version "1.0.25" resolved "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz#d8bb7f99cb6f8119c2baf086d9f6ee0514b6d9c8" @@ -14063,12 +12011,7 @@ event-target-shim@^5.0.0: resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter2@^6.4.3: - version "6.4.4" - resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" - integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== - -eventemitter2@^6.4.4: +eventemitter2@^6.4.3, eventemitter2@^6.4.4: version "6.4.5" resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== @@ -14360,13 +12303,6 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -14415,16 +12351,16 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@11.0.0, extract-files@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" - integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== - extract-files@9.0.0, extract-files@^9.0.0: version "9.0.0" resolved "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== +extract-files@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" + integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== + extract-zip@2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -14436,16 +12372,6 @@ extract-zip@2.0.1: optionalDependencies: "@types/yauzl" "^2.9.1" -extract-zip@^1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -14508,12 +12434,7 @@ fast-redact@^2.0.0: resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz#dfe3c1ca69367fb226f110aa4ec10ec85462ffdf" integrity sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A== -fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7: - version "2.0.8" - resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" - integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== - -fast-safe-stringify@^2.1.1: +fast-safe-stringify@^2.0.6, fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -14613,7 +12534,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: +figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -14847,9 +12768,9 @@ fork-ts-checker-webpack-plugin@^6.5.0: tapable "^1.0.0" fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: - version "7.1.1" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.1.1.tgz#9806c04f3aecaec8c9e8872806cd1f26d50d92a8" - integrity sha512-MgAv1g6+HLXz1iq2AZRfBjDhwBwk1HRSjuhNiMs8ax/3tsFo0rHedKwuE6ok44sJ5F5VgwPZae8gq0wiBAqYRw== + version "7.2.1" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.1.tgz#c37a538e12730fe11fd725bcf0fce29487950833" + integrity sha512-uOfQdg/iQ8iokQ64qcbu8iZb114rOmaKLQFu7hU14/eJaKgsP91cQ7ts7v2iiDld6TzDe84Meksha8/MkWiCyw== dependencies: "@babel/code-frame" "^7.16.7" chalk "^4.1.2" @@ -14863,12 +12784,7 @@ fork-ts-checker-webpack-plugin@^7.0.0-alpha.8: semver "^7.3.5" tapable "^2.2.1" -form-data-encoder@^1.4.3: - version "1.6.0" - resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.6.0.tgz#9dd1f479836c1b1b47201667c68f8daafa800943" - integrity sha512-P97AVaOB8hZaniiKK3f46zxQcchQXI8EgBnX+2+719gLv5ZbDSf3J1XtIuAQ8xbGLU4vZYhy7xwhFtK8U5u9Nw== - -form-data-encoder@^1.7.1: +form-data-encoder@^1.4.3, form-data-encoder@^1.7.1: version "1.7.1" resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== @@ -14989,16 +12905,6 @@ fs-extra@10.0.1, fs-extra@^10.0.0, fs-extra@^10.0.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@9.1.0, fs-extra@^9.0.0, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-extra@^7.0.1, fs-extra@~7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -15017,6 +12923,16 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" @@ -15308,20 +13224,12 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -<<<<<<< HEAD github-from-package@0.0.0: version "0.0.0" resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -<<<<<<< HEAD -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: -======= glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.2: ->>>>>>> 76d216e74b (fixups) -======= -glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.2: ->>>>>>> e5aaf7bb66 (bump dependencies) version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -15443,16 +13351,10 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6.1: -<<<<<<< HEAD - version "7.11.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.11.0.tgz#b63699c65037310a424128a854ba7e736704cbdb" - integrity sha512-3S5jn2quRumvh9F/Ubf7GFrIq71HZ5a6vqosgdIu105kkk0WtSqc2jGCRqtWWOLRS8SX3AHACMOEDxhyWAQIcg== -======= - version "7.12.0" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" - integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== ->>>>>>> e5aaf7bb66 (bump dependencies) +google-auth-library@^7.0.0, google-auth-library@^7.14.0, google-auth-library@^7.6.1: + version "7.14.0" + resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.0.tgz#9d6a20592f7b4d4c463cd3e93934c4b1711d5dc6" + integrity sha512-or8r7qUqGVI3W8lVSdPh0ZpeFyQHeE73g5c0p+bLNTTUFXJ+GSeDQmZRZ2p4H8cF/RJYa4PNvi/A1ar1uVNLFA== dependencies: arrify "^2.0.0" base64-js "^1.3.0" @@ -15464,11 +13366,7 @@ google-auth-library@^7.0.0, google-auth-library@^7.0.2, google-auth-library@^7.6 jws "^4.0.0" lru-cache "^6.0.0" -<<<<<<< HEAD -google-gax@^2.12.0, google-gax@^2.24.1: -======= google-gax@^2.24.1: ->>>>>>> e5aaf7bb66 (bump dependencies) version "2.28.1" resolved "https://registry.npmjs.org/google-gax/-/google-gax-2.28.1.tgz#99bc234b5769d901d70959d40bd1651729eb4a34" integrity sha512-2Xjd3FrjlVd6Cmw2B2Aicpc/q92SwTpIOvxPUlnRg9w+Do8nu7UR+eQrgoKlo2FIUcUuDTvppvcx8toND0pK9g== @@ -15539,18 +13437,18 @@ grapheme-splitter@^1.0.4: integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== graphiql@^1.5.12: - version "1.5.16" - resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.5.16.tgz#76876e6a9c07b7be26b9126b7c6801d6a7e27e3b" - integrity sha512-G1ucZ+1GS6Soq+ftr7eOihy6BcmJHYo29j1/GxXKclUr/z768WWjjIqDcF1/+geI0KOzVeEKkceA1bgT5hG4oQ== + version "1.7.1" + resolved "https://registry.npmjs.org/graphiql/-/graphiql-1.7.1.tgz#426afa0379c8d5424493fce69b678ee5c94e0e33" + integrity sha512-diEftHKsFtONUy90v1bZYgjCsJmRRVlnS72kYdv2lTETr1jgWN8V1nLepGl47xoQg8j0Bw9Er3v0wHnOdB5JxA== dependencies: "@graphiql/toolkit" "^0.4.2" codemirror "^5.58.2" - codemirror-graphql "^1.2.11" + codemirror-graphql "^1.2.13" copy-to-clipboard "^3.2.0" dset "^3.1.0" entities "^2.0.0" escape-html "^1.0.3" - graphql-language-service "^4.1.4" + graphql-language-service "^5.0.0" markdown-it "^12.2.0" graphlib@^2.1.8: @@ -15594,57 +13492,14 @@ graphql-config@^4.1.0: minimatch "3.0.4" string-env-interpolation "1.0.1" -<<<<<<< HEAD -graphql-language-service-interface@^2.10.2: - version "2.10.2" - resolved "https://registry.npmjs.org/graphql-language-service-interface/-/graphql-language-service-interface-2.10.2.tgz#de9386f699e446320256175e215cdc10ccf9f9b7" - integrity sha512-RKIEBPhRMWdXY3fxRs99XysTDnEgAvNbu8ov/5iOlnkZsWQNzitjtd0O0l1CutQOQt3iXoHde7w8uhCnKL4tcg== - dependencies: - graphql-config "^4.1.0" - graphql-language-service-parser "^1.10.4" - graphql-language-service-types "^1.8.7" - graphql-language-service-utils "^2.7.1" - vscode-languageserver-types "^3.15.1" - -graphql-language-service-parser@^1.10.4: - version "1.10.4" - resolved "https://registry.npmjs.org/graphql-language-service-parser/-/graphql-language-service-parser-1.10.4.tgz#b2979deefc5c0df571dacd409b2d5fbf1cdf7a9d" - integrity sha512-duDE+0aeKLFVrb9Kf28U84ZEHhHcvTjWIT6dJbIAQJWBaDoht0D4BK9EIhd94I3DtKRc1JCJb2+70y1lvP/hiA== - dependencies: - graphql-language-service-types "^1.8.7" - -graphql-language-service-types@^1.8.7: - version "1.8.7" - resolved "https://registry.npmjs.org/graphql-language-service-types/-/graphql-language-service-types-1.8.7.tgz#f5e909e6d9334ea2d8d1f7281b695b6f5602c07f" - integrity sha512-LP/Mx0nFBshYEyD0Ny6EVGfacJAGVx+qXtlJP4hLzUdBNOGimfDNtMVIdZANBXHXcM41MDgMHTnyEx2g6/Ttbw== -======= graphql-language-service@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/graphql-language-service/-/graphql-language-service-5.0.0.tgz#52dad53135f06551eee4c4dc57057c61eb10c460" integrity sha512-3tbJOApOJk8FQFVV+hKSs3gEWqqt3gQ5l3iEOUl7ofhyTmpRlbkYp+/dVLMF/p29iwZ5a8wqSXl+DDnHI6RMXQ== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: graphql-config "^4.1.0" - vscode-languageserver-types "^3.15.1" - -graphql-language-service-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.npmjs.org/graphql-language-service-utils/-/graphql-language-service-utils-2.7.1.tgz#c97c8d744a761480aba7e03e4a42adf28b6fce39" - integrity sha512-Wci5MbrQj+6d7rfvbORrA9uDlfMysBWYaG49ST5TKylNaXYFf3ixFOa74iM1KtM9eidosUbI3E1JlWi0JaidJA== - dependencies: - "@types/json-schema" "7.0.9" - graphql-language-service-types "^1.8.7" nullthrows "^1.0.0" - -graphql-language-service@^4.1.4: - version "4.1.4" - resolved "https://registry.npmjs.org/graphql-language-service/-/graphql-language-service-4.1.4.tgz#9be998e94c6c2950d4cde5ab07bcd63969afc176" - integrity sha512-LJk1vwwWwh8onewIzjbXXfa7C5mI6tNN67yztFbmQmfDQv1naZfqKLitudQWaDwJgLqAlpKIefRaeU3cNYHRFQ== - dependencies: - graphql-language-service-interface "^2.10.2" - graphql-language-service-parser "^1.10.4" - graphql-language-service-types "^1.8.7" - graphql-language-service-utils "^2.7.1" + vscode-languageserver-types "^3.15.1" graphql-modules@^2.0.0: version "2.0.0" @@ -15776,7 +13631,7 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-bigints@^1.0.0, has-bigints@^1.0.1: +has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== @@ -15803,11 +13658,7 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -<<<<<<< HEAD -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: -======= has-symbols@^1.0.1, has-symbols@^1.0.2: ->>>>>>> e5aaf7bb66 (bump dependencies) version "1.0.2" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== @@ -15942,12 +13793,7 @@ hexoid@1.0.0: resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== -highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0: - version "10.7.2" - resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360" - integrity sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg== - -highlight.js@^10.7.2, highlight.js@~10.7.0: +highlight.js@^10.1.0, highlight.js@^10.4.1, highlight.js@^10.6.0, highlight.js@^10.7.2, highlight.js@~10.7.0: version "10.7.3" resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== @@ -16094,7 +13940,7 @@ http-errors@1.8.1: statuses ">= 1.5.0 < 2" toidentifier "1.0.1" -http-errors@^2.0.0: +http-errors@2.0.0, http-errors@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== @@ -16115,11 +13961,6 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - http-parser-js@>=0.5.1: version "0.5.3" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" @@ -16144,21 +13985,9 @@ http-proxy-agent@^5.0.0: debug "4" http-proxy-middleware@^2.0.0: -<<<<<<< HEAD -<<<<<<< HEAD version "2.0.4" resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz#03af0f4676d172ae775cb5c33f592f40e1a4e07a" integrity sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg== -======= - version "2.0.2" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz#94d7593790aad6b3de48164f13792262f656c332" - integrity sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g== ->>>>>>> f9b03ab02f (fixups) -======= - version "2.0.3" - resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" - integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -16316,11 +14145,6 @@ ignore@^3.3.5: resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -16592,11 +14416,6 @@ ioredis@^4.28.5: redis-parser "^3.0.0" standard-as-callback "^2.1.0" -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -16708,16 +14527,8 @@ is-buffer@^2.0.0: version "2.0.4" resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -<<<<<<< HEAD -is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) - -is-callable@^1.2.4: +is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== @@ -16736,18 +14547,7 @@ is-ci@^3.0.0, is-ci@^3.0.1: dependencies: ci-info "^3.2.0" -<<<<<<< HEAD -is-core-module@^2.1.0, is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.0: -======= is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.8.0: ->>>>>>> e5aaf7bb66 (bump dependencies) version "2.8.1" resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== @@ -17025,11 +14825,6 @@ is-plain-object@^5.0.0: resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -17040,7 +14835,7 @@ is-promise@4.0.0, is-promise@^4.0.0: resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== -is-promise@^2.1.0, is-promise@^2.2.2: +is-promise@^2.1.0: version "2.2.2" resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== @@ -17057,15 +14852,7 @@ is-reference@^1.2.1: dependencies: "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" - -is-regex@^1.1.4: +is-regex@^1.0.4, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -17123,16 +14910,8 @@ is-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -<<<<<<< HEAD -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) - -is-string@^1.0.7: +is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== @@ -17296,9 +15075,9 @@ isomorphic-form-data@^2.0.0: form-data "^2.3.2" isomorphic-git@^1.8.0: - version "1.10.0" - resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.10.0.tgz#59a4604d1190d1e7fc52172085da25e6a428bc07" - integrity sha512-CijspEYaOQAnsHWXyq8ICZXzLJ/1wYQAa0jdfLcugA/68oNzrxykjGZz8Up7B8huA1VfkFHm4VviExtj/zpViw== + version "1.13.1" + resolved "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.13.1.tgz#66d9d1f24178f24230844dd70effb9d569214222" + integrity sha512-Hyc/KCCZAqTD5oyn90K5bRbCvRt1vj60OFKKmBZZwGrdzGvXu4FBBaqUrgWnd7N07M8soCOXibkDLq0lGWjNOQ== dependencies: async-lock "^1.1.0" clean-git-ref "^2.0.1" @@ -17310,7 +15089,7 @@ isomorphic-git@^1.8.0: pify "^4.0.1" readable-stream "^3.4.0" sha.js "^2.4.9" - simple-get "^3.0.2" + simple-get "^4.0.1" isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: version "4.0.1" @@ -17755,9 +15534,9 @@ jest-watcher@^26.6.2: string-length "^4.0.1" jest-when@^3.1.0: - version "3.5.0" - resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.0.tgz#364ab8dc149a5d683f9cc14e44d73d03b84b0d97" - integrity sha512-/IkPkG5lo2tyXH3a+VraYe7t/ma6UK9VPQko7hr6YgEtjoHyfAPpLXzyhnSNxxKRzNQDrw8YoGPCOkdTLR4mHA== + version "3.5.1" + resolved "https://registry.npmjs.org/jest-when/-/jest-when-3.5.1.tgz#33ab6f923661cf878cd08fe9df64b507934603db" + integrity sha512-o+HiaIVCg1IC95sMDKHU9G5v5N5l3UHqXvJpf0PgAMThZeQo4Hf5Sgoj+wpCBRGg4/KtzSAZZZEKNiLqE0i4eQ== jest-worker@^26.6.2: version "26.6.2" @@ -17949,39 +15728,7 @@ jscodeshift@^0.13.0: temp "^0.8.4" write-file-atomic "^2.3.0" -jsdom@^16.4.0: - version "16.4.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" - integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== - dependencies: - abab "^2.0.3" - acorn "^7.1.1" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.2.0" - data-urls "^2.0.0" - decimal.js "^10.2.0" - domexception "^2.0.1" - escodegen "^1.14.1" - html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" - nwsapi "^2.2.0" - parse5 "5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - saxes "^5.0.0" - symbol-tree "^3.2.4" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.2.3" - xml-name-validator "^3.0.0" - -jsdom@^16.5.2: +jsdom@^16.4.0, jsdom@^16.5.2: version "16.7.0" resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== @@ -18393,14 +16140,14 @@ jwt-decode@*, jwt-decode@^3.1.0: integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== kafkajs@^1.16.0-beta.6: - version "1.16.0-beta.32" - resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0-beta.32.tgz#c39fe37367e200eeb95c9ae1412d79db4cf55eca" - integrity sha512-fXnpfvQI7b0xJNRMMiDX05ezfG1/MtDJPdWhQ1e6SptDB/xe8JaGJwd/Fzd2viwgwYzhmHSg681PNOkX4Dz2DQ== + version "1.16.0" + resolved "https://registry.npmjs.org/kafkajs/-/kafkajs-1.16.0.tgz#bfcc3ae2b69265ca8435b53a01ee9e8787b9fee5" + integrity sha512-+Rcfu2hyQ/jv5skqRY8xA7Ra+mmRkDAzCaLDYbkGtgsNKpzxPWiLbk8ub0dgr4EbWrN1Zb4BCXHUkD6+zYfdWg== keyv-memcache@^1.2.5: - version "1.2.7" - resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.7.tgz#b8a43eeecdb11ad8f4d6d64abd4298d014c74955" - integrity sha512-lD7QaHf9M+bq9XLFZVEXJ2HNqEvO5CmtjiJjB2FHifbEQ18+YRDTfJCjo88Roc0hXtIqz/QZjYXpIYL8EWpL1g== + version "1.2.9" + resolved "https://registry.npmjs.org/keyv-memcache/-/keyv-memcache-1.2.9.tgz#68776b098233e4305ec729fbeb5ad5905f6ac914" + integrity sha512-hcHeihL/LjAhP1qvLSWuwCxDQlSkkGwlvH7RfIIO+57s7J5dhFLQQko1WcAbcd1jlxV6iPHAEvkDwp8c7XQzgA== dependencies: json-buffer "^3.0.1" memjs "^1.3.0" @@ -18413,9 +16160,9 @@ keyv@^3.0.0: json-buffer "3.0.0" keyv@^4.0.0, keyv@^4.0.3: - version "4.1.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.1.0.tgz#8ab5ca4ae6a34e05c629531d9a7f871575af0d5b" - integrity sha512-YsY3wr6HabE11/sscee+3nZ03XjvkrPWGouAmJFBdZoK92wiOlJCzI5/sDEIKdJhdhHO144ei45U9gXfbu14Uw== + version "4.1.1" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz#02c538bfdbd2a9308cc932d4096f05ae42bfa06a" + integrity sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ== dependencies: json-buffer "3.0.1" @@ -18699,6 +16446,20 @@ listr-verbose-renderer@^0.5.0: date-fns "^1.27.2" figures "^2.0.0" +listr2@^3.8.3: + version "3.14.0" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.1" + through "^2.3.8" + wrap-ansi "^7.0.0" + listr2@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/listr2/-/listr2-4.0.2.tgz#04d66f8c8694a14920d7df08ebe01568948fb500" @@ -19084,20 +16845,6 @@ logform@^2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz#68babe6a74ab09a1fd15a9b1e6cbc7713d41cb5b" integrity sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA== -<<<<<<< HEAD -======= - dependencies: - colors "1.4.0" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^1.1.0" - triple-beam "^1.3.0" - -logform@^2.4.0: - version "2.4.0" - resolved "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe" - integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: colors "1.4.0" fecha "^4.2.0" @@ -19185,16 +16932,6 @@ lru-cache@^7.3.1: version "7.3.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.3.1.tgz#7702e80694ec2bf19865567a469f2b081fcf53f5" integrity sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw== -<<<<<<< HEAD - -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= - dependencies: - es5-ext "~0.10.2" -======= ->>>>>>> e5aaf7bb66 (bump dependencies) lunr@^2.3.9: version "2.3.9" @@ -19215,7 +16952,6 @@ macos-release@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== -<<<<<<< HEAD magic-string@^0.25.7: version "0.25.7" @@ -19223,15 +16959,13 @@ magic-string@^0.25.7: integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: sourcemap-codec "^1.4.4" -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -magic-string@^0.25.7: - version "0.25.7" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== +magic-string@^0.26.1: + version "0.26.1" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz#ba9b651354fa9512474199acecf9c6dbe93f97fd" + integrity sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg== dependencies: - sourcemap-codec "^1.4.4" + sourcemap-codec "^1.4.8" make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" @@ -19241,14 +16975,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== - dependencies: - semver "^6.0.0" - -make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -19549,11 +17276,6 @@ mdn-data@2.0.14: resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - mdurl@^1.0.0, mdurl@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -19590,7 +17312,7 @@ media-typer@0.3.0: vinyl "^2.0.1" vinyl-file "^3.0.0" -memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.1: +memfs@^3.1.2, memfs@^3.4.1: version "3.4.1" resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== @@ -19602,30 +17324,11 @@ memjs@^1.3.0: resolved "https://registry.npmjs.org/memjs/-/memjs-1.3.0.tgz#b7959b4ff3770e4c785463fd147f1e4fafd47a24" integrity sha512-y/V9a0auepA9Lgyr4QieK6K2FczjHucEdTpSS+hHVNmVEkYxruXhkHu8n6DSRQ4HXHEE3cc6Sf9f88WCJXGXsQ== -"memoize-one@>=3.1.1 <6": +"memoize-one@>=3.1.1 <6", memoize-one@^5.1.1: version "5.2.1" resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -memoize-one@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" - integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== - -memoizee@^0.4.15: - version "0.4.15" - resolved "https://registry.npmjs.org/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" - meow@^6.0.0: version "6.1.1" resolved "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" @@ -19695,7 +17398,7 @@ metric-lcs@^0.1.2: resolved "https://registry.npmjs.org/metric-lcs/-/metric-lcs-0.1.2.tgz#87913f149410e39c7c5a19037512814eaf155e11" integrity sha512-+TZ5dUDPKPJaU/rscTzxyN8ZkX7eAVLAiQU/e+YINleXPv03SCmJShaMT1If1liTH8OcmWXZs0CmzCBRBLcMpA== -micromark-core-commonmark@^1.0.0: +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: version "1.0.6" resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== @@ -19717,27 +17420,6 @@ micromark-core-commonmark@^1.0.0: micromark-util-types "^1.0.1" uvu "^0.5.0" -micromark-core-commonmark@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.1.tgz#a64987cafe872e8b80bc8f2352a5d988586ac4f1" - integrity sha512-vEOw8hcQ3nwHkKKNIyP9wBi8M50zjNajtmI+cCUWcVfJS+v5/3WCh4PLKf7PPRZFUutjzl4ZjlHwBWUKfb/SkA== - dependencies: - micromark-factory-destination "^1.0.0" - micromark-factory-label "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-factory-title "^1.0.0" - micromark-factory-whitespace "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-classify-character "^1.0.0" - micromark-util-html-tag-name "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - parse-entities "^3.0.0" - micromark-extension-gfm-autolink-literal@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.0.tgz#1a49a62bfcb00f9dff87ab39f3b21a108612dc24" @@ -20021,10 +17703,10 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": - version "1.51.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-db@~1.33.0: version "1.33.0" @@ -20039,27 +17721,18 @@ mime-types@2.1.18: mime-db "~1.33.0" mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.34" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.51.0" + mime-db "1.52.0" mime@1.6.0, mime@^1.3.4: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -<<<<<<< HEAD -mime@^2.2.0: - version "2.5.2" - resolved "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -mime@^2.5.0: -======= mime@^2.2.0, mime@^2.5.0: ->>>>>>> e5aaf7bb66 (bump dependencies) version "2.6.0" resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== @@ -20107,9 +17780,9 @@ min-indent@^1.0.0: integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= mini-css-extract-plugin@^2.4.2: - version "2.5.3" - resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz#c5c79f9b22ce9b4f164e9492267358dbe35376d9" - integrity sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw== + version "2.6.0" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" + integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== dependencies: schema-utils "^4.0.0" @@ -20137,8 +17810,6 @@ minimatch@5.0.1, minimatch@^5.0.0: dependencies: brace-expansion "^2.0.1" -<<<<<<< HEAD -======= minimatch@^4.0.0: version "4.2.1" resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" @@ -20146,7 +17817,6 @@ minimatch@^4.0.0: dependencies: brace-expansion "^1.1.7" ->>>>>>> e5aaf7bb66 (bump dependencies) minimist-options@4.1.0, minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -20258,26 +17928,15 @@ mixme@^0.5.1: resolved "https://registry.npmjs.org/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== -<<<<<<< HEAD -<<<<<<< HEAD -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: -======= mkdirp-classic@^0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" integrity sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g== mkdirp-classic@^0.5.3: ->>>>>>> e5aaf7bb66 (bump dependencies) version "0.5.3" resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -======= -mkdirp-classic@^0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" - integrity sha512-ejdnDQcR75gwknmMw/tx02AuRs8jCtqFoFqDZMjiNxsu85sRIJVXDKHuLYvUUPRBUtV2FpSZa9bL1BUa3BdR2g== ->>>>>>> 76d216e74b (fixups) mkdirp-infer-owner@^2.0.0: version "2.0.0" @@ -20293,7 +17952,7 @@ mkdirp@0.3.0: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= -"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -20315,21 +17974,10 @@ modify-values@^1.0.0: resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -<<<<<<< HEAD moment-timezone@^0.5.x: -======= -<<<<<<< HEAD -moment-timezone@^0.5.31, moment-timezone@^0.5.x: ->>>>>>> f9b03ab02f (fixups) version "0.5.34" resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== -======= -moment-timezone@^0.5.31: - version "0.5.33" - resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" - integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== ->>>>>>> 76d216e74b (fixups) dependencies: moment ">= 2.9.0" @@ -20401,11 +18049,11 @@ msw@^0.35.0: yargs "^17.0.1" msw@^0.36.3: - version "0.36.3" - resolved "https://registry.npmjs.org/msw/-/msw-0.36.3.tgz#7feb243a5fcf563806d45edc027bc36144741170" - integrity sha512-Itzp/QhKaleZoslXDrNik3ramW9ynqzOdbwydX2ehBSSaZd5QoiAl/bHYcV33R6CEZcJgIX1N4s+G6XkF/bhkA== + version "0.36.8" + resolved "https://registry.npmjs.org/msw/-/msw-0.36.8.tgz#33ff8bfb0299626a95f43d0e4c3dc2c73c17f1ba" + integrity sha512-K7lOQoYqhGhTSChsmHMQbf/SDCsxh/m0uhN6Ipt206lGoe81fpTmaGD0KLh4jUxCONMOUnwCSj0jtX2CM4pEdw== dependencies: - "@mswjs/cookies" "^0.1.6" + "@mswjs/cookies" "^0.1.7" "@mswjs/interceptors" "^0.12.7" "@open-draft/until" "^1.0.3" "@types/cookie" "^0.4.1" @@ -20419,7 +18067,7 @@ msw@^0.36.3: inquirer "^8.2.0" is-node-process "^1.0.1" js-levenshtein "^1.1.6" - node-fetch "^2.6.1" + node-fetch "^2.6.7" path-to-regexp "^6.2.0" statuses "^2.0.0" strict-event-emitter "^0.2.0" @@ -20516,12 +18164,7 @@ nanoclone@^0.2.1: resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== -nanoid@^3.1.23: - version "3.2.0" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" - integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== - -nanoid@^3.3.1: +nanoid@^3.1.23, nanoid@^3.3.1: version "3.3.1" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== @@ -20553,31 +18196,16 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.3, negotiator@^0.6.3: +negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -negotiator@^0.6.2: - version "0.6.2" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/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.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -20878,16 +18506,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" - integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== - dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - -npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== @@ -20916,16 +18535,7 @@ npm-packlist@^3.0.0: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" - integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== - dependencies: - npm-install-checks "^4.0.0" - npm-package-arg "^8.0.0" - semver "^7.0.0" - -npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: +npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -21005,16 +18615,6 @@ npmlog@^6.0.0: gauge "^4.0.0" set-blocking "^2.0.0" -<<<<<<< HEAD -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -======= ->>>>>>> e5aaf7bb66 (bump dependencies) nth-check@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -21070,15 +18670,16 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -<<<<<<< HEAD object-hash@^2.0.1, object-hash@^2.1.1: -======= -object-hash@^2.0.1, object-hash@^2.1.1, object-hash@^2.2.0: ->>>>>>> e5aaf7bb66 (bump dependencies) version "2.2.0" resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0: version "1.12.0" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" @@ -21133,17 +18734,6 @@ object.getownpropertydescriptors@^2.0.3: version "2.1.0" resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== -<<<<<<< HEAD - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.getownpropertydescriptors@^2.1.0: - version "2.1.3" - resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" @@ -21163,7 +18753,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.5: +object.values@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== @@ -21746,11 +19336,6 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - parse5@6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -22211,13 +19796,6 @@ pkg-dir@4.2.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -22548,17 +20126,10 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -<<<<<<< HEAD postcss@^8.1.0, postcss@^8.4.7: version "8.4.12" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== -======= -postcss@^8.1.0, postcss@^8.4.5: - version "8.4.7" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8" - integrity sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: nanoid "^3.3.1" picocolors "^1.0.0" @@ -22683,39 +20254,16 @@ printj@~1.1.0: resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== -<<<<<<< HEAD prismjs@^1.27.0, prismjs@~1.27.0: -======= -<<<<<<< HEAD -prismjs@^1.25.0, prismjs@~1.27.0: ->>>>>>> f9b03ab02f (fixups) version "1.27.0" resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -<<<<<<< HEAD -======= -prismjs@^1.25.0: - version "1.26.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz#16881b594828bb6b45296083a8cbab46b0accd47" - integrity sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ== - -prismjs@~1.25.0: - version "1.25.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" - integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== - -======= ->>>>>>> e5aaf7bb66 (bump dependencies) private@^0.1.8: version "0.1.8" resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -<<<<<<< HEAD ->>>>>>> 76d216e74b (fixups) -======= ->>>>>>> e5aaf7bb66 (bump dependencies) proc-log@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz#0d927307401f69ed79341e83a0b2c9a13395eb77" @@ -22976,7 +20524,7 @@ puppeteer@^13.1.1: unbzip2-stream "1.4.3" ws "8.5.0" -q@^1.1.2, q@^1.5.1: +q@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -22991,7 +20539,7 @@ qs@6.9.7: resolved "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== -qs@^6.10.1, qs@^6.10.2, qs@^6.10.3, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: +qs@^6.10.1, qs@^6.10.2, qs@^6.9.1, qs@^6.9.4, qs@^6.9.6: version "6.10.3" resolved "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== @@ -23101,12 +20649,12 @@ raw-body@2.4.3: unpipe "1.0.0" raw-body@^2.4.1: - version "2.4.2" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" - integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.1" - http-errors "1.8.1" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -23243,22 +20791,10 @@ react-helmet@6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" -<<<<<<< HEAD -react-hook-form@^7.12.2: - version "7.16.1" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.16.1.tgz#669046df378a71949e5cf8a2398cbe20d5cb27bc" - integrity sha512-kcLDmSmlyLUFx2UU5bG/o4+3NeK753fhKodJa8gkplXohGkpAq0/p+TR24OWjZmkEc3ES7ppC5v5d6KUk+fJTA== - -react-hook-form@^7.13.0: - version "7.17.4" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.17.4.tgz#232b6aaccddb91eb4a228ac20b154abd90866fdb" - integrity sha512-7XhbCr7d9fDC1TgcK/BUbt7D3q0VJMu7jPErfsa0JrxVjv/nni41xWdJcy0Zb7R+Np8OsCkQ2lMyloAtE3DLiQ== -======= react-hook-form@^7.12.2, react-hook-form@^7.13.0: version "7.27.1" resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.27.1.tgz#fe5fbcb6bf58751f66d9569e998d671480cc57f6" integrity sha512-N3a7A6zIQ8DJeThisVZGtOUabTbJw+7DHJidmB9w8m3chckv2ZWKb5MHps9d2pPJqmCDoWe53Bos56bYmJms5w== ->>>>>>> e5aaf7bb66 (bump dependencies) react-hot-loader@^4.13.0: version "4.13.0" @@ -23330,7 +20866,6 @@ react-markdown@^8.0.0: unist-util-visit "^4.0.0" vfile "^5.0.0" -<<<<<<< HEAD react-query@^3.34.16: version "3.34.16" resolved "https://registry.npmjs.org/react-query/-/react-query-3.34.16.tgz#279ea180bcaeaec49c7864b29d1711ee9f152594" @@ -23340,22 +20875,10 @@ react-query@^3.34.16: broadcast-channel "^3.4.1" match-sorter "^6.0.2" -<<<<<<< HEAD -react-redux@^7.2.0, react-redux@^7.2.4: - version "7.2.6" - resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" - integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== -======= -======= ->>>>>>> e5aaf7bb66 (bump dependencies) react-redux@^7.1.1, react-redux@^7.2.4: version "7.2.5" resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8" integrity sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg== -<<<<<<< HEAD ->>>>>>> 76d216e74b (fixups) -======= ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@babel/runtime" "^7.12.1" "@types/react-redux" "^7.1.16" @@ -23457,13 +20980,6 @@ react-test-renderer@^16.13.1: react-is "^16.8.6" scheduler "^0.19.1" -react-text-truncate@^0.17.0: - version "0.17.0" - resolved "https://registry.npmjs.org/react-text-truncate/-/react-text-truncate-0.17.0.tgz#a820bfd9d084caf85d900a011fe2ab4216fc3821" - integrity sha512-EUL7s47XApOgbR//t/9X+fXg1feS47RcTywNXEQZAlNL0vrCIYGye1C+mpUgGIIXKTkabweid6z7s16AkTo5sA== - dependencies: - prop-types "^15.5.7" - react-text-truncate@^0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/react-text-truncate/-/react-text-truncate-0.18.0.tgz#c65f4be660d24734badb903a4832467eddcf8058" @@ -23496,27 +21012,7 @@ react-universal-interface@^0.6.2: resolved "https://registry.npmjs.org/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== -react-use@^17.2.4: - version "17.2.4" - resolved "https://registry.npmjs.org/react-use/-/react-use-17.2.4.tgz#1f89be3db0a8237c79253db0a15e12bbe3cfeff1" - integrity sha512-vQGpsAM0F5UIlshw5UI8ULGPS4yn5rm7/qvn3T1Gnkrz7YRMEEMh+ynKcmRloOyiIeLvKWiQjMiwRGtdbgs5qQ== - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - copy-to-clipboard "^3.3.1" - fast-deep-equal "^3.1.3" - fast-shallow-equal "^1.0.0" - js-cookie "^2.2.1" - nano-css "^5.3.1" - react-universal-interface "^0.6.2" - resize-observer-polyfill "^1.5.1" - screenfull "^5.1.0" - set-harmonic-interval "^1.0.1" - throttle-debounce "^3.0.1" - ts-easing "^0.2.0" - tslib "^2.1.0" - -react-use@^17.3.1, react-use@^17.3.2: +react-use@^17.2.4, react-use@^17.3.1, react-use@^17.3.2: version "17.3.2" resolved "https://registry.npmjs.org/react-use/-/react-use-17.3.2.tgz#448abf515f47c41c32455024db28167cb6e53be8" integrity sha512-bj7OD0/1wL03KyWmzFXAFe425zziuTf7q8olwCYBfOeFHY1qfO1FAMjROQLsLZYwG4Rx63xAfb7XAbBrJsZmEw== @@ -23562,19 +21058,7 @@ read-cmd-shim@^2.0.0: resolved "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== -<<<<<<< HEAD -read-package-json-fast@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.1.tgz#c767f6c634873ffb6bb73788191b65559734f555" - integrity sha512-bp6z0tdgLy9KzdfENDIw/53HWAolOVoQTRWXv7PUiqAo3YvvoUVeLr7RWPWq+mu7KUOu9kiT4DvxhUgNUBsvug== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json-fast@^2.0.2: -======= read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.2: ->>>>>>> e5aaf7bb66 (bump dependencies) version "2.0.3" resolved "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -23692,7 +21176,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -23746,14 +21230,7 @@ recast@^0.20.3, recast@^0.20.4: source-map "~0.6.1" tslib "^2.0.1" -recharts-scale@^0.4.2: - version "0.4.3" - resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.3.tgz#040b4f638ed687a530357292ecac880578384b59" - integrity sha512-t8p5sccG9Blm7c1JQK/ak9O8o95WGhNXD7TXg/BW5bYbVlr6eCeRBNpgyigD4p6pSSMehC5nSvBUPj6F68rbFA== - dependencies: - decimal.js-light "^2.4.1" - -recharts-scale@^0.4.4: +recharts-scale@^0.4.2, recharts-scale@^0.4.4: version "0.4.5" resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" integrity sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w== @@ -23872,22 +21349,7 @@ redux-immutable@^4.0.0: resolved "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz#3a1a32df66366462b63691f0e1dc35e472bbc9f3" integrity sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM= -redux@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47" - integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw== - dependencies: - "@babel/runtime" "^7.9.2" - -redux@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" - integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== - dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" - -redux@^4.1.2: +redux@^4.0.0, redux@^4.0.4, redux@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104" integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw== @@ -23930,16 +21392,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.3: +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - regenerator-transform@^0.14.2: version "0.14.4" resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" @@ -23956,18 +21413,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.4.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" @@ -24161,22 +21610,6 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -24228,10 +21661,10 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== +reselect@^4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6" + integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ== resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: version "1.5.1" @@ -24337,18 +21770,7 @@ ret@~0.2.0: resolved "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== -<<<<<<< HEAD -retry-request@^4.0.0: - version "4.1.3" - resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde" - integrity sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ== - dependencies: - debug "^4.1.1" - -retry-request@^4.2.2: -======= retry-request@^4.0.0, retry-request@^4.2.2: ->>>>>>> e5aaf7bb66 (bump dependencies) version "4.2.2" resolved "https://registry.npmjs.org/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg== @@ -24413,13 +21835,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: inherits "^2.0.1" rollup-plugin-dts@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-4.1.0.tgz#63b1e7de3970bb6d50877e60df2150a3892bc49c" - integrity sha512-rriXIm3jdUiYeiAAd1Fv+x2AxK6Kq6IybB2Z/IdoAW95fb4uRUurYsEYKa8L1seedezDeJhy8cfo8FEL9aZzqg== + version "4.2.0" + resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-4.2.0.tgz#f7ae4646f5b3aec07560bc341c0dc4a85f8a0dff" + integrity sha512-lx6irWVhz/x4//tIqRhzk4FOqGQ0n37ZM2wpPCn4uafl/EmiV92om7ZdAsq7Bzho6C+Xh5GfsyuP9H+Udv72Lg== dependencies: - magic-string "^0.25.7" + magic-string "^0.26.1" optionalDependencies: - "@babel/code-frame" "^7.16.0" + "@babel/code-frame" "^7.16.7" rollup-plugin-esbuild@^4.7.2: version "4.7.2" @@ -24430,11 +21852,6 @@ rollup-plugin-esbuild@^4.7.2: joycon "^3.0.1" jsonc-parser "^3.0.0" -rollup-plugin-peer-deps-external@^2.2.2: - version "2.2.4" - resolved "https://registry.npmjs.org/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.4.tgz#8a420bbfd6dccc30aeb68c9bf57011f2f109570d" - integrity sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g== - rollup-plugin-postcss@*, rollup-plugin-postcss@^4.0.0: version "4.0.2" resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" @@ -24470,21 +21887,9 @@ rollup@^0.63.4: "@types/node" "*" rollup@^2.60.2: -<<<<<<< HEAD -<<<<<<< HEAD version "2.70.0" resolved "https://registry.npmjs.org/rollup/-/rollup-2.70.0.tgz#17a92e5938e92a251b962352e904c9f558230ec7" integrity sha512-iEzYw+syFxQ0X9RefVwhr8BA2TNJsTaX8L8dhyeyMECDbmiba+8UQzcu+xZdji0+JQ+s7kouQnw+9Oz5M19XKA== -======= - version "2.67.2" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.67.2.tgz#d95e15f60932ad21e05a870bd0aa0b235d056f04" - integrity sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw== ->>>>>>> 76d216e74b (fixups) -======= - version "2.70.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-2.70.0.tgz#17a92e5938e92a251b962352e904c9f558230ec7" - integrity sha512-iEzYw+syFxQ0X9RefVwhr8BA2TNJsTaX8L8dhyeyMECDbmiba+8UQzcu+xZdji0+JQ+s7kouQnw+9Oz5M19XKA== ->>>>>>> e5aaf7bb66 (bump dependencies) optionalDependencies: fsevents "~2.3.2" @@ -24524,17 +21929,10 @@ rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" -<<<<<<< HEAD -rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.2: - version "7.5.2" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" - integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w== -======= rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.2: version "7.5.5" resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: tslib "^2.1.0" @@ -24616,12 +22014,12 @@ sax@1.2.1: resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= -sax@>=0.6.0, sax@~1.2.4: +sax@>=0.6.0: version "1.2.4" resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^5.0.0, saxes@^5.0.1: +saxes@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== @@ -24731,7 +22129,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: +semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: version "7.3.5" resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -24911,7 +22309,7 @@ shell-quote@^1.7.3: resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== -shelljs@^0.8.4, shelljs@^0.8.5: +shelljs@^0.8.5: version "0.8.5" resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -24957,7 +22355,7 @@ simple-concat@^1.0.0: resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -simple-get@^3.0.2, simple-get@^3.0.3: +simple-get@^3.0.3: version "3.1.1" resolved "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== @@ -24966,7 +22364,6 @@ simple-get@^3.0.2, simple-get@^3.0.3: once "^1.3.1" simple-concat "^1.0.0" -<<<<<<< HEAD simple-get@^4.0.0, simple-get@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" @@ -24976,8 +22373,6 @@ simple-get@^4.0.0, simple-get@^4.0.1: once "^1.3.1" simple-concat "^1.0.0" -======= ->>>>>>> 76d216e74b (fixups) simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -25048,10 +22443,10 @@ slide@^1.1.6: resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== smartwrap@^1.2.3: version "1.2.5" @@ -25186,21 +22581,13 @@ socks-proxy-agent@^6.0.0, socks-proxy-agent@^6.1.1: debug "^4.3.1" socks "^2.6.1" -socks@^2.3.3: - version "2.5.1" - resolved "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz#7720640b6b5ec9a07d556419203baa3f0596df5f" - integrity sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ== +socks@^2.3.3, socks@^2.6.1: + version "2.6.2" + resolved "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" + integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== dependencies: ip "^1.1.5" - smart-buffer "^4.1.0" - -socks@^2.6.1: - version "2.6.1" - resolved "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" - integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== - dependencies: - ip "^1.1.5" - smart-buffer "^4.1.0" + smart-buffer "^4.2.0" sonic-boom@^0.7.5: version "0.7.7" @@ -25253,7 +22640,7 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.10: +source-map-support@^0.5.10, source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -25261,14 +22648,6 @@ source-map-support@^0.5.10: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -25549,11 +22928,6 @@ statuses@2.0.1, statuses@^2.0.0: resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - stoppable@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" @@ -25991,25 +23365,6 @@ svg-parser@^2.0.2: resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - svgo@^2.5.0, svgo@^2.7.0: version "2.8.0" resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" @@ -26023,16 +23378,16 @@ svgo@^2.5.0, svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -swagger-client@^3.17.0: - version "3.18.0" - resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.0.tgz#2e59e666b38ded983e26fb512421ef8ff82547f0" - integrity sha512-lNfwTXHim0QiCNuZ4BKgWle7N7+9WlFLtcP02n0xSchFtdzsKJb2kWsOlwplRU3appVFjnHRy+1eVabRc3ZhbA== +swagger-client@^3.18.4: + version "3.18.4" + resolved "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.4.tgz#71be9df585157a3335a542c407733d2134fa75e9" + integrity sha512-Wj26oEctONq/u0uM+eSj18675YM5e2vFnx7Kr4neLeXEHKUsfceVQ/OdtrBXdrT3VbtdBbZfMTfl1JOBpix2MA== dependencies: "@babel/runtime-corejs3" "^7.11.2" btoa "^1.2.1" cookie "~0.4.1" - cross-fetch "^3.1.4" - deep-extend "~0.6.0" + cross-fetch "^3.1.5" + deepmerge "~4.2.2" fast-json-patch "^3.0.0-1" form-data-encoder "^1.4.3" formdata-node "^4.0.0" @@ -26044,17 +23399,11 @@ swagger-client@^3.17.0: url "~0.11.0" swagger-ui-react@^4.1.3: -<<<<<<< HEAD - version "4.1.3" - resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.1.3.tgz#a722ecbe54ef237fa9080447a7c708c4c72d846a" - integrity sha512-o1AoXUTNH40cxWus0QOeWQ8x9tSIEmrLBrOgAOHDnvWJ1qyjT8PjgHjPbUVjMbja18coyuaAAeUdyLKvLGmlDA== -======= version "4.6.1" resolved "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.6.1.tgz#25d0dc380f73fcba00df214f50adc940910f480c" integrity sha512-NIVzdzzaHnoG6NxK15A0wpd7TiGPpcK4BBh5mgLq6/hCrytjpeQZrkSM1Yf0p1fD7+rkvKcI+b33w/6RCLt3yw== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: - "@babel/runtime-corejs3" "^7.16.3" + "@babel/runtime-corejs3" "^7.16.8" "@braintree/sanitize-url" "^5.0.2" base64-js "^1.5.1" classnames "^2.3.1" @@ -26066,10 +23415,6 @@ swagger-ui-react@^4.1.3: js-file-download "^0.4.12" js-yaml "=4.1.0" lodash "^4.17.21" -<<<<<<< HEAD - memoizee "^0.4.15" -======= ->>>>>>> e5aaf7bb66 (bump dependencies) prop-types "^15.7.2" randombytes "^2.1.0" react-copy-to-clipboard "5.0.4" @@ -26082,11 +23427,11 @@ swagger-ui-react@^4.1.3: redux "^4.1.2" redux-immutable "^4.0.0" remarkable "^2.0.1" - reselect "^4.0.0" + reselect "^4.1.5" serialize-error "^8.1.0" sha.js "^2.4.11" - swagger-client "^3.17.0" - url-parse "^1.5.3" + swagger-client "^3.18.4" + url-parse "^1.5.8" xml "=1.0.1" xml-but-prettier "^1.0.1" zenscroll "^4.0.2" @@ -26099,15 +23444,11 @@ swap-case@^2.0.2: tslib "^2.0.3" swr@^1.1.2: - version "1.2.1" - resolved "https://registry.npmjs.org/swr/-/swr-1.2.1.tgz#c21a4fe2139cb1c4630450589b5b5add947a9d41" - integrity sha512-1cuWXqJqXcFwbgONGCY4PHZ8v05009JdHsC3CIC6u7d00kgbMswNr1sHnnhseOBxtzVqcCNpOHEgVDciRer45w== + version "1.2.2" + resolved "https://registry.npmjs.org/swr/-/swr-1.2.2.tgz#6cae09928d30593a7980d80f85823e57468fac5d" + integrity sha512-ky0BskS/V47GpW8d6RU7CPsr6J8cr7mQD6+do5eky3bM0IyJaoi3vO8UhvrzJaObuTlGhPl2szodeB2dUd76Xw== -<<<<<<< HEAD -symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: -======= symbol-observable@1.2.0, symbol-observable@^1.0.4, symbol-observable@^1.1.0: ->>>>>>> e5aaf7bb66 (bump dependencies) version "1.2.0" resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -26187,7 +23528,7 @@ tar@^4.4.12: safe-buffer "^5.2.1" yallist "^3.1.1" -tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: version "6.1.11" resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -26293,20 +23634,12 @@ terser-webpack-plugin@*, terser-webpack-plugin@^5.1.3: source-map "^0.6.1" terser "^5.7.2" -terser@^5.10.0: - version "5.10.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" - integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.20" - -terser@^5.7.2: - version "5.9.0" - resolved "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== +terser@^5.10.0, terser@^5.7.2: + version "5.12.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a" + integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A== dependencies: + acorn "^8.5.0" commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.20" @@ -26425,14 +23758,6 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -timers-ext@^0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - timm@^1.6.1: version "1.7.1" resolved "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" @@ -26583,23 +23908,6 @@ touch@^3.1.0: dependencies: nopt "~1.0.10" -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -26609,11 +23917,12 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: + psl "^1.1.28" punycode "^2.1.1" tr46@^2.1.0: @@ -26869,16 +24178,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.npmjs.org/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== - typed-rest-client@^1.8.4: version "1.8.4" resolved "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz#ba3fb788e5b9322547406392533f12d660a5ced6" @@ -26900,19 +24199,6 @@ typedarray@^0.0.6: resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript-json-schema@^0.52.0: - version "0.52.0" - resolved "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.52.0.tgz#954560ec90e5486e8f7a5b7706ec59286a708e29" - integrity sha512-3ZdHzx116gZ+D9LmMl5/+d1G3Rpt8baWngKzepYWHnXbAa8Winv64CmFRqLlMKneE1c40yugYDFcWdyX1FjGzQ== - dependencies: - "@types/json-schema" "^7.0.9" - "@types/node" "^16.9.2" - glob "^7.1.7" - safe-stable-stringify "^2.2.0" - ts-node "^10.2.1" - typescript "~4.4.4" - yargs "^17.1.1" - typescript-json-schema@^0.53.0: version "0.53.0" resolved "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.53.0.tgz#ac5b89e4b0af55be422f475a041360e0556f88ea" @@ -26926,11 +24212,6 @@ typescript-json-schema@^0.53.0: typescript "~4.5.0" yargs "^17.1.1" -typescript@~4.4.4: - version "4.4.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c" - integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA== - typescript@~4.5.0, typescript@~4.5.2, typescript@~4.5.4: version "4.5.5" resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" @@ -26973,16 +24254,6 @@ umask@^1.1.0: resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -unbox-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" - integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.0" - has-symbols "^1.0.0" - which-boxed-primitive "^1.0.1" - unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -27218,11 +24489,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -27310,10 +24576,10 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.5.3: - version "1.5.7" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" - integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== +url-parse@^1.5.8: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" @@ -27385,16 +24651,6 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - util@0.10.3: version "0.10.3" resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -27608,15 +24864,9 @@ vm-browserify@^1.0.1: integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== vm2@^3.9.6: -<<<<<<< HEAD version "3.9.9" resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5" integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw== -======= - version "3.9.7" - resolved "https://registry.npmjs.org/vm2/-/vm2-3.9.7.tgz#bb87aa677c97c61e23a6cb6547e44e990517a6f6" - integrity sha512-g/GZ7V0Mlmch3eDVOATvAXr1GsJNg6kQ5PjvYy3HbJMCRn5slNbo/u73Uy7r5yUej1cRa3ZjtoVwcWSQuQ/fow== ->>>>>>> 76d216e74b (fixups) dependencies: acorn "^8.7.0" acorn-walk "^8.2.0" @@ -27700,6 +24950,11 @@ web-streams-polyfill@4.0.0-beta.1: resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz#3b19b9817374b7cee06d374ba7eeb3aeb80e8c95" integrity sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ== +web-streams-polyfill@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.0.tgz#a6b74026b38e4885869fb5c589e90b95ccfc7965" + integrity sha512-EqPmREeOzttaLRm5HS7io98goBgZ7IVz79aDvqjD0kYXLtFZTc0T/U6wHTPKyIjb+MdN7DFIIX6hgdBEpWmfPA== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -27715,30 +24970,31 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c" - integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg== +webpack-dev-middleware@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== dependencies: colorette "^2.0.10" - memfs "^3.2.2" + memfs "^3.4.1" mime-types "^2.1.31" range-parser "^1.2.1" schema-utils "^4.0.0" webpack-dev-server@^4.7.3: - version "4.7.3" - resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz#4e995b141ff51fa499906eebc7906f6925d0beaa" - integrity sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q== + version "4.7.4" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" + integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" "@types/serve-index" "^1.9.1" "@types/sockjs" "^0.3.33" "@types/ws" "^8.2.2" ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^3.5.2" + chokidar "^3.5.3" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" @@ -27758,8 +25014,8 @@ webpack-dev-server@^4.7.3: sockjs "^0.3.21" spdy "^4.0.2" strip-ansi "^7.0.0" - webpack-dev-middleware "^5.3.0" - ws "^8.1.0" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" webpack-node-externals@^3.0.0: version "3.0.0" @@ -27780,9 +25036,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5, webpack@^5.66.0: - version "5.69.1" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.69.1.tgz#8cfd92c192c6a52c99ab00529b5a0d33aa848dc5" - integrity sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A== + version "5.70.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" + integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -27793,7 +25049,7 @@ webpack@^5, webpack@^5.66.0: acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.3" + enhanced-resolve "^5.9.2" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" @@ -27809,16 +25065,7 @@ webpack@^5, webpack@^5.66.0: watchpack "^2.3.1" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-driver@^0.7.4: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -27839,16 +25086,11 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.0.0: +whatwg-fetch@^3.0.0, whatwg-fetch@^3.4.1: version "3.6.2" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== -whatwg-fetch@^3.4.1: - version "3.4.1" - resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" - integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== - whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -27862,16 +25104,7 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^8.0.0, whatwg-url@^8.4.0: - version "8.4.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" - integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - -whatwg-url@^8.5.0: +whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== @@ -27880,7 +25113,7 @@ whatwg-url@^8.5.0: tr46 "^2.1.0" webidl-conversions "^6.1.0" -which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: +which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -27962,11 +25195,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -<<<<<<< HEAD winston-transport@^4.4.2: -======= -winston-transport@^4.4.2, winston-transport@^4.5.0: ->>>>>>> e5aaf7bb66 (bump dependencies) version "4.5.0" resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== @@ -27979,25 +25208,6 @@ winston@^3.2.1: version "3.5.1" resolved "https://registry.npmjs.org/winston/-/winston-3.5.1.tgz#b25cc899d015836dbf8c583dec8c4c4483a0da2e" integrity sha512-tbRtVy+vsSSCLcZq/8nXZaOie/S2tPXPFt4be/Q3vI/WtYwm7rrwidxVw2GRa38FIXcJ1kUM6MOZ9Jmnk3F3UA== -<<<<<<< HEAD -======= - dependencies: - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.3.2" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.4.2" - -winston@^3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6" - integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w== ->>>>>>> e5aaf7bb66 (bump dependencies) dependencies: "@dabh/diagnostics" "^2.0.2" async "^3.2.3" @@ -28124,27 +25334,16 @@ ws@7.4.5: resolved "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -<<<<<<< HEAD -ws@8.3.0, "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.2.3, ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: - version "7.5.6" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" - integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== - -======= ->>>>>>> e5aaf7bb66 (bump dependencies) -ws@8.5.0, ws@^8.1.0: +ws@8.5.0, ws@^8.4.2: version "8.5.0" resolved "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== -<<<<<<< HEAD -======= "ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.3.1, ws@^7.4.6, ws@^8.3.0: version "7.5.6" resolved "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== ->>>>>>> e5aaf7bb66 (bump dependencies) ws@~7.4.2: version "7.4.6" resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" From 5a5bd5bc030e9c8124ffd4997f81552907e8f046 Mon Sep 17 00:00:00 2001 From: Leon Date: Fri, 25 Mar 2022 14:37:31 +0100 Subject: [PATCH 385/410] fix refresh-issue when switching between radars Signed-off-by: Leon --- plugins/tech-radar/src/components/RadarComponent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tech-radar/src/components/RadarComponent.tsx b/plugins/tech-radar/src/components/RadarComponent.tsx index e26d44aa1a..e7cca7d45f 100644 --- a/plugins/tech-radar/src/components/RadarComponent.tsx +++ b/plugins/tech-radar/src/components/RadarComponent.tsx @@ -28,7 +28,7 @@ const useTechRadarLoader = (id: string | undefined) => { const { error, value, loading } = useAsync( async () => techRadarApi.load(id), - [techRadarApi], + [techRadarApi, id], ); useEffect(() => { From f69789330ac9b6cf658bbe4499fb37055065d96d Mon Sep 17 00:00:00 2001 From: Leon Date: Fri, 25 Mar 2022 14:43:22 +0100 Subject: [PATCH 386/410] changeset Signed-off-by: Leon --- .changeset/silly-llamas-relax.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/silly-llamas-relax.md diff --git a/.changeset/silly-llamas-relax.md b/.changeset/silly-llamas-relax.md new file mode 100644 index 0000000000..f5a002d46d --- /dev/null +++ b/.changeset/silly-llamas-relax.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-tech-radar': patch +--- + +Fix an issue where the Radar is not updated when switching between different radars From ac0a6cb827e3be511806c0da505099ed6257298b Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Mon, 21 Mar 2022 21:19:45 -0400 Subject: [PATCH 387/410] Introduce PermissionMessageBatch utility type. Rename Identified type to IdentifiedPermissionMessage. Co-authored-by: Mike Lewis Signed-off-by: Joe Porpeglia --- .../permission-backend/src/service/router.ts | 17 +++++---- .../src/PermissionClient.test.ts | 38 ++++++++++++------- .../permission-common/src/PermissionClient.ts | 4 +- plugins/permission-common/src/types/api.ts | 18 +++++---- plugins/permission-common/src/types/index.ts | 3 +- .../src/ServerPermissionClient.test.ts | 12 +++--- .../createPermissionIntegrationRouter.ts | 7 ++-- 7 files changed, 59 insertions(+), 40 deletions(-) diff --git a/plugins/permission-backend/src/service/router.ts b/plugins/permission-backend/src/service/router.ts index 034ff0b9ed..ca5467fa6e 100644 --- a/plugins/permission-backend/src/service/router.ts +++ b/plugins/permission-backend/src/service/router.ts @@ -32,7 +32,7 @@ import { AuthorizeResult, AuthorizeDecision, AuthorizeQuery, - Identified, + IdentifiedPermissionMessage, AuthorizeRequest, AuthorizeResponse, isResourcePermission, @@ -73,11 +73,12 @@ const permissionSchema = z.union([ }), ]); -const querySchema: z.ZodSchema> = z.object({ - id: z.string(), - resourceRef: z.string().optional(), - permission: permissionSchema, -}); +const querySchema: z.ZodSchema> = + z.object({ + id: z.string(), + resourceRef: z.string().optional(), + permission: permissionSchema, + }); const requestSchema: z.ZodSchema = z.object({ items: z.array(querySchema), @@ -98,12 +99,12 @@ export interface RouterOptions { } const handleRequest = async ( - requests: Identified[], + requests: IdentifiedPermissionMessage[], user: BackstageIdentityResponse | undefined, policy: PermissionPolicy, permissionIntegrationClient: PermissionIntegrationClient, authHeader?: string, -): Promise[]> => { +): Promise[]> => { const applyConditionsLoaderFor = memoize((pluginId: string) => { return new DataLoader< ApplyConditionsRequestEntry, diff --git a/plugins/permission-common/src/PermissionClient.test.ts b/plugins/permission-common/src/PermissionClient.test.ts index 4f66bcffd3..36f26d883f 100644 --- a/plugins/permission-common/src/PermissionClient.test.ts +++ b/plugins/permission-common/src/PermissionClient.test.ts @@ -18,7 +18,11 @@ import { RestContext, rest } from 'msw'; import { setupServer } from 'msw/node'; import { ConfigReader } from '@backstage/config'; import { PermissionClient } from './PermissionClient'; -import { AuthorizeQuery, AuthorizeResult, Identified } from './types/api'; +import { + AuthorizeQuery, + AuthorizeResult, + IdentifiedPermissionMessage, +} from './types/api'; import { DiscoveryApi } from './types/discovery'; import { createPermission } from './permissions'; @@ -54,10 +58,12 @@ describe('PermissionClient', () => { }; const mockAuthorizeHandler = jest.fn((req, res, { json }: RestContext) => { - const responses = req.body.items.map((a: Identified) => ({ - id: a.id, - result: AuthorizeResult.ALLOW, - })); + const responses = req.body.items.map( + (a: IdentifiedPermissionMessage) => ({ + id: a.id, + result: AuthorizeResult.ALLOW, + }), + ); return res(json({ items: responses })); }); @@ -141,7 +147,7 @@ describe('PermissionClient', () => { mockAuthorizeHandler.mockImplementationOnce( (req, res, { json }: RestContext) => { const responses = req.body.items.map( - (a: Identified) => ({ + (a: IdentifiedPermissionMessage) => ({ id: a.id, outcome: AuthorizeResult.ALLOW, }), @@ -158,10 +164,12 @@ describe('PermissionClient', () => { it('should allow all when permission.enabled is false', async () => { mockAuthorizeHandler.mockImplementationOnce( (req, res, { json }: RestContext) => { - const responses = req.body.map((a: Identified) => ({ - id: a.id, - result: AuthorizeResult.DENY, - })); + const responses = req.body.map( + (a: IdentifiedPermissionMessage) => ({ + id: a.id, + result: AuthorizeResult.DENY, + }), + ); return res(json({ items: responses })); }, @@ -180,10 +188,12 @@ describe('PermissionClient', () => { it('should allow all when permission.enabled is not configured', async () => { mockAuthorizeHandler.mockImplementationOnce( (req, res, { json }: RestContext) => { - const responses = req.body.map((a: Identified) => ({ - id: a.id, - outcome: AuthorizeResult.DENY, - })); + const responses = req.body.map( + (a: IdentifiedPermissionMessage) => ({ + id: a.id, + outcome: AuthorizeResult.DENY, + }), + ); return res(json(responses)); }, diff --git a/plugins/permission-common/src/PermissionClient.ts b/plugins/permission-common/src/PermissionClient.ts index 9431050690..fbae34cc63 100644 --- a/plugins/permission-common/src/PermissionClient.ts +++ b/plugins/permission-common/src/PermissionClient.ts @@ -23,7 +23,7 @@ import { AuthorizeResult, AuthorizeQuery, AuthorizeDecision, - Identified, + IdentifiedPermissionMessage, PermissionCriteria, PermissionCondition, AuthorizeResponse, @@ -145,7 +145,7 @@ export class PermissionClient implements PermissionAuthorizer { const responsesById = responseBody.items.reduce((acc, r) => { acc[r.id] = r; return acc; - }, {} as Record>); + }, {} as Record>); return request.items.map(query => responsesById[query.id]); } diff --git a/plugins/permission-common/src/types/api.ts b/plugins/permission-common/src/types/api.ts index 5b46b955d8..c4d68ce3fa 100644 --- a/plugins/permission-common/src/types/api.ts +++ b/plugins/permission-common/src/types/api.ts @@ -21,7 +21,15 @@ import { Permission } from './permission'; * requests. * @public */ -export type Identified = T & { id: string }; +export type IdentifiedPermissionMessage = T & { id: string }; + +/** + * A batch of request or response items. + * @public + */ +export type PermissionMessageBatch = { + items: IdentifiedPermissionMessage[]; +}; /** * The result of an authorization request. @@ -55,9 +63,7 @@ export type AuthorizeQuery = { * A batch of authorization requests from {@link PermissionClient#authorize}. * @public */ -export type AuthorizeRequest = { - items: Identified[]; -}; +export type AuthorizeRequest = PermissionMessageBatch; /** * A condition returned with a CONDITIONAL authorization response. @@ -127,6 +133,4 @@ export type AuthorizeDecision = * A batch of authorization responses from {@link PermissionClient#authorize}. * @public */ -export type AuthorizeResponse = { - items: Identified[]; -}; +export type AuthorizeResponse = PermissionMessageBatch; diff --git a/plugins/permission-common/src/types/index.ts b/plugins/permission-common/src/types/index.ts index 71ef7695b8..83be625046 100644 --- a/plugins/permission-common/src/types/index.ts +++ b/plugins/permission-common/src/types/index.ts @@ -20,7 +20,8 @@ export type { AuthorizeRequest, AuthorizeDecision, AuthorizeResponse, - Identified, + IdentifiedPermissionMessage, + PermissionMessageBatch, PermissionCondition, PermissionCriteria, AllOfCriteria, diff --git a/plugins/permission-node/src/ServerPermissionClient.test.ts b/plugins/permission-node/src/ServerPermissionClient.test.ts index f2302f8f0d..842f996a6a 100644 --- a/plugins/permission-node/src/ServerPermissionClient.test.ts +++ b/plugins/permission-node/src/ServerPermissionClient.test.ts @@ -16,7 +16,7 @@ import { ServerPermissionClient } from './ServerPermissionClient'; import { - Identified, + IdentifiedPermissionMessage, AuthorizeQuery, AuthorizeResult, createPermission, @@ -32,10 +32,12 @@ import { RestContext, rest } from 'msw'; const server = setupServer(); const mockAuthorizeHandler = jest.fn((req, res, { json }: RestContext) => { - const responses = req.body.items.map((r: Identified) => ({ - id: r.id, - result: AuthorizeResult.ALLOW, - })); + const responses = req.body.items.map( + (r: IdentifiedPermissionMessage) => ({ + id: r.id, + result: AuthorizeResult.ALLOW, + }), + ); return res(json({ items: responses })); }); diff --git a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts index efb5d7c3a6..17e514432c 100644 --- a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts +++ b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts @@ -21,7 +21,7 @@ import { InputError } from '@backstage/errors'; import { errorHandler } from '@backstage/backend-common'; import { AuthorizeResult, - Identified, + IdentifiedPermissionMessage, PermissionCondition, PermissionCriteria, } from '@backstage/plugin-permission-common'; @@ -67,7 +67,7 @@ const applyConditionsRequestSchema = z.object({ * * @public */ -export type ApplyConditionsRequestEntry = Identified<{ +export type ApplyConditionsRequestEntry = IdentifiedPermissionMessage<{ resourceRef: string; resourceType: string; conditions: PermissionCriteria; @@ -88,7 +88,8 @@ export type ApplyConditionsRequest = { * * @public */ -export type ApplyConditionsResponseEntry = Identified; +export type ApplyConditionsResponseEntry = + IdentifiedPermissionMessage; /** * A batch of {@link ApplyConditionsResponseEntry} objects. From 970814ed38423d868a4ae463047da1922f861ec0 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Mon, 21 Mar 2022 21:56:49 -0400 Subject: [PATCH 388/410] Move policy decision types to permission-common Co-authored-by: Mike Lewis Signed-off-by: Joe Porpeglia --- packages/backend/src/plugins/permission.ts | 6 +-- .../service/PermissionIntegrationClient.ts | 6 ++- plugins/permission-common/src/types/api.ts | 40 ++++++++++++++++ plugins/permission-common/src/types/index.ts | 3 ++ .../src/integration/createConditionExports.ts | 2 +- .../createPermissionIntegrationRouter.ts | 2 +- plugins/permission-node/src/policy/index.ts | 8 +--- plugins/permission-node/src/policy/types.ts | 46 +------------------ 8 files changed, 54 insertions(+), 59 deletions(-) diff --git a/packages/backend/src/plugins/permission.ts b/packages/backend/src/plugins/permission.ts index 7337687c54..e4c2e1d435 100644 --- a/packages/backend/src/plugins/permission.ts +++ b/packages/backend/src/plugins/permission.ts @@ -16,11 +16,11 @@ import { IdentityClient } from '@backstage/plugin-auth-node'; import { createRouter } from '@backstage/plugin-permission-backend'; -import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { - PermissionPolicy, + AuthorizeResult, PolicyDecision, -} from '@backstage/plugin-permission-node'; +} from '@backstage/plugin-permission-common'; +import { PermissionPolicy } from '@backstage/plugin-permission-node'; import { Router } from 'express'; import { PluginEnvironment } from '../types'; diff --git a/plugins/permission-backend/src/service/PermissionIntegrationClient.ts b/plugins/permission-backend/src/service/PermissionIntegrationClient.ts index 2b2161ee71..2c31d371c3 100644 --- a/plugins/permission-backend/src/service/PermissionIntegrationClient.ts +++ b/plugins/permission-backend/src/service/PermissionIntegrationClient.ts @@ -17,11 +17,13 @@ import fetch from 'node-fetch'; import { z } from 'zod'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; -import { AuthorizeResult } from '@backstage/plugin-permission-common'; +import { + AuthorizeResult, + ConditionalPolicyDecision, +} from '@backstage/plugin-permission-common'; import { ApplyConditionsRequestEntry, ApplyConditionsResponseEntry, - ConditionalPolicyDecision, } from '@backstage/plugin-permission-node'; const responseSchema = z.object({ diff --git a/plugins/permission-common/src/types/api.ts b/plugins/permission-common/src/types/api.ts index c4d68ce3fa..97b1182805 100644 --- a/plugins/permission-common/src/types/api.ts +++ b/plugins/permission-common/src/types/api.ts @@ -50,6 +50,46 @@ export enum AuthorizeResult { CONDITIONAL = 'CONDITIONAL', } +/** + * A definitive decision returned by the {@link @backstage/plugin-permission-node#PermissionPolicy}. + * + * @remarks + * + * This indicates that the policy unconditionally allows (or denies) the request. + * + * @public + */ +export type DefinitivePolicyDecision = { + result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; +}; + +/** + * A conditional decision returned by the {@link @backstage/plugin-permission-node#PermissionPolicy}. + * + * @remarks + * + * This indicates that the policy allows authorization for the request, given that the returned + * conditions hold when evaluated. The conditions will be evaluated by the corresponding plugin + * which knows about the referenced permission rules. + * + * @public + */ +export type ConditionalPolicyDecision = { + result: AuthorizeResult.CONDITIONAL; + pluginId: string; + resourceType: string; + conditions: PermissionCriteria; +}; + +/** + * A decision returned by the {@link @backstage/plugin-permission-node#PermissionPolicy}. + * + * @public + */ +export type PolicyDecision = + | DefinitivePolicyDecision + | ConditionalPolicyDecision; + /** * An individual authorization request for {@link PermissionClient#authorize}. * @public diff --git a/plugins/permission-common/src/types/index.ts b/plugins/permission-common/src/types/index.ts index 83be625046..f89f0c8aec 100644 --- a/plugins/permission-common/src/types/index.ts +++ b/plugins/permission-common/src/types/index.ts @@ -22,6 +22,9 @@ export type { AuthorizeResponse, IdentifiedPermissionMessage, PermissionMessageBatch, + ConditionalPolicyDecision, + DefinitivePolicyDecision, + PolicyDecision, PermissionCondition, PermissionCriteria, AllOfCriteria, diff --git a/plugins/permission-node/src/integration/createConditionExports.ts b/plugins/permission-node/src/integration/createConditionExports.ts index fd351128ed..ab88987389 100644 --- a/plugins/permission-node/src/integration/createConditionExports.ts +++ b/plugins/permission-node/src/integration/createConditionExports.ts @@ -16,10 +16,10 @@ import { AuthorizeResult, + ConditionalPolicyDecision, PermissionCondition, PermissionCriteria, } from '@backstage/plugin-permission-common'; -import { ConditionalPolicyDecision } from '../policy'; import { PermissionRule } from '../types'; import { createConditionFactory } from './createConditionFactory'; diff --git a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts index 17e514432c..b598487062 100644 --- a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts +++ b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts @@ -21,6 +21,7 @@ import { InputError } from '@backstage/errors'; import { errorHandler } from '@backstage/backend-common'; import { AuthorizeResult, + DefinitivePolicyDecision, IdentifiedPermissionMessage, PermissionCondition, PermissionCriteria, @@ -32,7 +33,6 @@ import { isNotCriteria, isOrCriteria, } from './util'; -import { DefinitivePolicyDecision } from '../policy/types'; const permissionCriteriaSchema: z.ZodSchema< PermissionCriteria diff --git a/plugins/permission-node/src/policy/index.ts b/plugins/permission-node/src/policy/index.ts index 1d3fc4a737..988ce345a4 100644 --- a/plugins/permission-node/src/policy/index.ts +++ b/plugins/permission-node/src/policy/index.ts @@ -14,10 +14,4 @@ * limitations under the License. */ -export type { - ConditionalPolicyDecision, - DefinitivePolicyDecision, - PermissionPolicy, - PolicyAuthorizeQuery, - PolicyDecision, -} from './types'; +export type { PermissionPolicy, PolicyAuthorizeQuery } from './types'; diff --git a/plugins/permission-node/src/policy/types.ts b/plugins/permission-node/src/policy/types.ts index 19b12b8f28..fed803a2a9 100644 --- a/plugins/permission-node/src/policy/types.ts +++ b/plugins/permission-node/src/policy/types.ts @@ -16,9 +16,7 @@ import { AuthorizeQuery, - AuthorizeResult, - PermissionCondition, - PermissionCriteria, + PolicyDecision, } from '@backstage/plugin-permission-common'; import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; @@ -35,48 +33,6 @@ import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; */ export type PolicyAuthorizeQuery = Omit; -/** - * A definitive result to an authorization request, returned by the {@link PermissionPolicy}. - * - * @remarks - * - * This indicates that the policy unconditionally allows (or denies) the request. - * - * @public - */ -export type DefinitivePolicyDecision = { - result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; -}; - -/** - * A conditional result to an authorization request, returned by the {@link PermissionPolicy}. - * - * @remarks - * - * This indicates that the policy allows authorization for the request, given that the returned - * conditions hold when evaluated. The conditions will be evaluated by the corresponding plugin - * which knows about the referenced permission rules. - * - * Similar to {@link @backstage/permission-common#AuthorizeDecision}, but with the plugin and resource - * identifiers needed to evaluate the returned conditions. - * @public - */ -export type ConditionalPolicyDecision = { - result: AuthorizeResult.CONDITIONAL; - pluginId: string; - resourceType: string; - conditions: PermissionCriteria; -}; - -/** - * The result of evaluating an authorization request with a {@link PermissionPolicy}. - * - * @public - */ -export type PolicyDecision = - | DefinitivePolicyDecision - | ConditionalPolicyDecision; - /** * A policy to evaluate authorization requests for any permissioned action performed in Backstage. * From e43290ce96b52e4a09267468282faaadcf5603f9 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Tue, 22 Mar 2022 10:24:08 -0400 Subject: [PATCH 389/410] Rename permission backend request and response types Signed-off-by: Joe Porpeglia --- .../apis/PermissionApi/MockPermissionApi.ts | 10 +++-- .../permission-backend/src/service/router.ts | 40 ++++++++++--------- .../src/PermissionClient.test.ts | 10 ++--- .../permission-common/src/PermissionClient.ts | 20 +++++----- plugins/permission-common/src/types/api.ts | 40 ++++++++++--------- plugins/permission-common/src/types/index.ts | 8 ++-- .../permission-common/src/types/permission.ts | 6 +-- .../src/ServerPermissionClient.test.ts | 4 +- .../src/ServerPermissionClient.ts | 12 +++--- plugins/permission-node/src/policy/types.ts | 7 +++- .../src/apis/IdentityPermissionApi.ts | 8 ++-- .../src/apis/PermissionApi.ts | 8 ++-- .../service/AuthorizedSearchEngine.test.ts | 18 ++++++--- .../src/service/AuthorizedSearchEngine.ts | 13 +++--- 14 files changed, 114 insertions(+), 90 deletions(-) diff --git a/packages/test-utils/src/testUtils/apis/PermissionApi/MockPermissionApi.ts b/packages/test-utils/src/testUtils/apis/PermissionApi/MockPermissionApi.ts index ac5c44248d..163af5dd53 100644 --- a/packages/test-utils/src/testUtils/apis/PermissionApi/MockPermissionApi.ts +++ b/packages/test-utils/src/testUtils/apis/PermissionApi/MockPermissionApi.ts @@ -16,8 +16,8 @@ import { PermissionApi } from '@backstage/plugin-permission-react'; import { - AuthorizeDecision, - AuthorizeQuery, + EvaluatePermissionResponse, + EvaluatePermissionRequest, AuthorizeResult, } from '@backstage/plugin-permission-common'; @@ -31,12 +31,14 @@ import { export class MockPermissionApi implements PermissionApi { constructor( private readonly requestHandler: ( - request: AuthorizeQuery, + request: EvaluatePermissionRequest, ) => AuthorizeResult.ALLOW | AuthorizeResult.DENY = () => AuthorizeResult.ALLOW, ) {} - async authorize(request: AuthorizeQuery): Promise { + async authorize( + request: EvaluatePermissionRequest, + ): Promise { return { result: this.requestHandler(request) }; } } diff --git a/plugins/permission-backend/src/service/router.ts b/plugins/permission-backend/src/service/router.ts index ca5467fa6e..ea7fbcca24 100644 --- a/plugins/permission-backend/src/service/router.ts +++ b/plugins/permission-backend/src/service/router.ts @@ -30,11 +30,11 @@ import { } from '@backstage/plugin-auth-node'; import { AuthorizeResult, - AuthorizeDecision, - AuthorizeQuery, + EvaluatePermissionResponse, + EvaluatePermissionRequest, IdentifiedPermissionMessage, - AuthorizeRequest, - AuthorizeResponse, + EvaluatePermissionRequestBatch, + EvaluatePermissionResponseBatch, isResourcePermission, PermissionAttributes, } from '@backstage/plugin-permission-common'; @@ -73,17 +73,19 @@ const permissionSchema = z.union([ }), ]); -const querySchema: z.ZodSchema> = - z.object({ - id: z.string(), - resourceRef: z.string().optional(), - permission: permissionSchema, - }); - -const requestSchema: z.ZodSchema = z.object({ - items: z.array(querySchema), +const evaluatePermissionRequestSchema: z.ZodSchema< + IdentifiedPermissionMessage +> = z.object({ + id: z.string(), + resourceRef: z.string().optional(), + permission: permissionSchema, }); +const evaluatePermissionRequestBatchSchema: z.ZodSchema = + z.object({ + items: z.array(evaluatePermissionRequestSchema), + }); + /** * Options required when constructing a new {@link express#Router} using * {@link createRouter}. @@ -99,12 +101,12 @@ export interface RouterOptions { } const handleRequest = async ( - requests: IdentifiedPermissionMessage[], + requests: IdentifiedPermissionMessage[], user: BackstageIdentityResponse | undefined, policy: PermissionPolicy, permissionIntegrationClient: PermissionIntegrationClient, authHeader?: string, -): Promise[]> => { +): Promise[]> => { const applyConditionsLoaderFor = memoize((pluginId: string) => { return new DataLoader< ApplyConditionsRequestEntry, @@ -184,15 +186,17 @@ export async function createRouter( router.post( '/authorize', async ( - req: Request, - res: Response, + req: Request, + res: Response, ) => { const token = getBearerTokenFromAuthorizationHeader( req.header('authorization'), ); const user = token ? await identity.authenticate(token) : undefined; - const parseResult = requestSchema.safeParse(req.body); + const parseResult = evaluatePermissionRequestBatchSchema.safeParse( + req.body, + ); if (!parseResult.success) { throw new InputError(parseResult.error.toString()); diff --git a/plugins/permission-common/src/PermissionClient.test.ts b/plugins/permission-common/src/PermissionClient.test.ts index 36f26d883f..65a7c7fbbe 100644 --- a/plugins/permission-common/src/PermissionClient.test.ts +++ b/plugins/permission-common/src/PermissionClient.test.ts @@ -19,7 +19,7 @@ import { setupServer } from 'msw/node'; import { ConfigReader } from '@backstage/config'; import { PermissionClient } from './PermissionClient'; import { - AuthorizeQuery, + EvaluatePermissionRequest, AuthorizeResult, IdentifiedPermissionMessage, } from './types/api'; @@ -59,7 +59,7 @@ describe('PermissionClient', () => { const mockAuthorizeHandler = jest.fn((req, res, { json }: RestContext) => { const responses = req.body.items.map( - (a: IdentifiedPermissionMessage) => ({ + (a: IdentifiedPermissionMessage) => ({ id: a.id, result: AuthorizeResult.ALLOW, }), @@ -147,7 +147,7 @@ describe('PermissionClient', () => { mockAuthorizeHandler.mockImplementationOnce( (req, res, { json }: RestContext) => { const responses = req.body.items.map( - (a: IdentifiedPermissionMessage) => ({ + (a: IdentifiedPermissionMessage) => ({ id: a.id, outcome: AuthorizeResult.ALLOW, }), @@ -165,7 +165,7 @@ describe('PermissionClient', () => { mockAuthorizeHandler.mockImplementationOnce( (req, res, { json }: RestContext) => { const responses = req.body.map( - (a: IdentifiedPermissionMessage) => ({ + (a: IdentifiedPermissionMessage) => ({ id: a.id, result: AuthorizeResult.DENY, }), @@ -189,7 +189,7 @@ describe('PermissionClient', () => { mockAuthorizeHandler.mockImplementationOnce( (req, res, { json }: RestContext) => { const responses = req.body.map( - (a: IdentifiedPermissionMessage) => ({ + (a: IdentifiedPermissionMessage) => ({ id: a.id, outcome: AuthorizeResult.DENY, }), diff --git a/plugins/permission-common/src/PermissionClient.ts b/plugins/permission-common/src/PermissionClient.ts index fbae34cc63..3027234b72 100644 --- a/plugins/permission-common/src/PermissionClient.ts +++ b/plugins/permission-common/src/PermissionClient.ts @@ -21,13 +21,13 @@ import * as uuid from 'uuid'; import { z } from 'zod'; import { AuthorizeResult, - AuthorizeQuery, - AuthorizeDecision, + EvaluatePermissionRequest, + EvaluatePermissionResponse, IdentifiedPermissionMessage, PermissionCriteria, PermissionCondition, - AuthorizeResponse, - AuthorizeRequest, + EvaluatePermissionResponseBatch, + EvaluatePermissionRequestBatch, } from './types/api'; import { DiscoveryApi } from './types/discovery'; import { @@ -107,9 +107,9 @@ export class PermissionClient implements PermissionAuthorizer { * @public */ async authorize( - queries: AuthorizeQuery[], + queries: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise { + ): Promise { // TODO(permissions): it would be great to provide some kind of typing guarantee that // conditional responses will only ever be returned for requests containing a resourceType // but no resourceRef. That way clients who aren't prepared to handle filtering according @@ -119,7 +119,7 @@ export class PermissionClient implements PermissionAuthorizer { return queries.map(_ => ({ result: AuthorizeResult.ALLOW })); } - const request: AuthorizeRequest = { + const request: EvaluatePermissionRequestBatch = { items: queries.map(query => ({ id: uuid.v4(), ...query, @@ -145,7 +145,7 @@ export class PermissionClient implements PermissionAuthorizer { const responsesById = responseBody.items.reduce((acc, r) => { acc[r.id] = r; return acc; - }, {} as Record>); + }, {} as Record>); return request.items.map(query => responsesById[query.id]); } @@ -155,9 +155,9 @@ export class PermissionClient implements PermissionAuthorizer { } private assertValidResponse( - request: AuthorizeRequest, + request: EvaluatePermissionRequestBatch, json: any, - ): asserts json is AuthorizeResponse { + ): asserts json is EvaluatePermissionResponseBatch { const authorizedResponses = responseSchema.parse(json); const responseIds = authorizedResponses.items.map(r => r.id); const hasAllRequestIds = request.items.every(r => diff --git a/plugins/permission-common/src/types/api.ts b/plugins/permission-common/src/types/api.ts index 97b1182805..b0bcf94f56 100644 --- a/plugins/permission-common/src/types/api.ts +++ b/plugins/permission-common/src/types/api.ts @@ -90,21 +90,6 @@ export type PolicyDecision = | DefinitivePolicyDecision | ConditionalPolicyDecision; -/** - * An individual authorization request for {@link PermissionClient#authorize}. - * @public - */ -export type AuthorizeQuery = { - permission: Permission; - resourceRef?: string; -}; - -/** - * A batch of authorization requests from {@link PermissionClient#authorize}. - * @public - */ -export type AuthorizeRequest = PermissionMessageBatch; - /** * A condition returned with a CONDITIONAL authorization response. * @@ -159,10 +144,26 @@ export type PermissionCriteria = | TQuery; /** - * An individual authorization response from {@link PermissionClient#authorize}. + * An individual request sent to the permission backend. * @public */ -export type AuthorizeDecision = +export type EvaluatePermissionRequest = { + permission: Permission; + resourceRef?: string; +}; + +/** + * A batch of requests sent to the permission backend. + * @public + */ +export type EvaluatePermissionRequestBatch = + PermissionMessageBatch; + +/** + * An individual response from the permission backend. + * @public + */ +export type EvaluatePermissionResponse = | { result: AuthorizeResult.ALLOW | AuthorizeResult.DENY } | { result: AuthorizeResult.CONDITIONAL; @@ -170,7 +171,8 @@ export type AuthorizeDecision = }; /** - * A batch of authorization responses from {@link PermissionClient#authorize}. + * A batch of responses the permission backend. * @public */ -export type AuthorizeResponse = PermissionMessageBatch; +export type EvaluatePermissionResponseBatch = + PermissionMessageBatch; diff --git a/plugins/permission-common/src/types/index.ts b/plugins/permission-common/src/types/index.ts index f89f0c8aec..1a993a981c 100644 --- a/plugins/permission-common/src/types/index.ts +++ b/plugins/permission-common/src/types/index.ts @@ -16,10 +16,10 @@ export { AuthorizeResult } from './api'; export type { - AuthorizeQuery, - AuthorizeRequest, - AuthorizeDecision, - AuthorizeResponse, + EvaluatePermissionRequest, + EvaluatePermissionRequestBatch, + EvaluatePermissionResponse, + EvaluatePermissionResponseBatch, IdentifiedPermissionMessage, PermissionMessageBatch, ConditionalPolicyDecision, diff --git a/plugins/permission-common/src/types/permission.ts b/plugins/permission-common/src/types/permission.ts index ebfdadb48b..34e7884793 100644 --- a/plugins/permission-common/src/types/permission.ts +++ b/plugins/permission-common/src/types/permission.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { AuthorizeQuery, AuthorizeDecision } from './api'; +import { EvaluatePermissionRequest, EvaluatePermissionResponse } from './api'; /** * The attributes related to a given permission; these should be generic and widely applicable to @@ -94,9 +94,9 @@ export type ResourcePermission = */ export interface PermissionAuthorizer { authorize( - queries: AuthorizeQuery[], + requests: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise; + ): Promise; } /** diff --git a/plugins/permission-node/src/ServerPermissionClient.test.ts b/plugins/permission-node/src/ServerPermissionClient.test.ts index 842f996a6a..f5711ed4a0 100644 --- a/plugins/permission-node/src/ServerPermissionClient.test.ts +++ b/plugins/permission-node/src/ServerPermissionClient.test.ts @@ -17,7 +17,7 @@ import { ServerPermissionClient } from './ServerPermissionClient'; import { IdentifiedPermissionMessage, - AuthorizeQuery, + EvaluatePermissionRequest, AuthorizeResult, createPermission, } from '@backstage/plugin-permission-common'; @@ -33,7 +33,7 @@ import { RestContext, rest } from 'msw'; const server = setupServer(); const mockAuthorizeHandler = jest.fn((req, res, { json }: RestContext) => { const responses = req.body.items.map( - (r: IdentifiedPermissionMessage) => ({ + (r: IdentifiedPermissionMessage) => ({ id: r.id, result: AuthorizeResult.ALLOW, }), diff --git a/plugins/permission-node/src/ServerPermissionClient.ts b/plugins/permission-node/src/ServerPermissionClient.ts index 8c03016268..56381dff17 100644 --- a/plugins/permission-node/src/ServerPermissionClient.ts +++ b/plugins/permission-node/src/ServerPermissionClient.ts @@ -20,9 +20,9 @@ import { } from '@backstage/backend-common'; import { Config } from '@backstage/config'; import { - AuthorizeQuery, + EvaluatePermissionRequest, AuthorizeRequestOptions, - AuthorizeDecision, + EvaluatePermissionResponse, AuthorizeResult, PermissionClient, PermissionAuthorizer, @@ -78,9 +78,9 @@ export class ServerPermissionClient implements PermissionAuthorizer { } async authorize( - queries: AuthorizeQuery[], + requests: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise { + ): Promise { // Check if permissions are enabled before validating the server token. That // way when permissions are disabled, the noop token manager can be used // without fouling up the logic inside the ServerPermissionClient, because @@ -89,9 +89,9 @@ export class ServerPermissionClient implements PermissionAuthorizer { !this.permissionEnabled || (await this.isValidServerToken(options?.token)) ) { - return queries.map(_ => ({ result: AuthorizeResult.ALLOW })); + return requests.map(_ => ({ result: AuthorizeResult.ALLOW })); } - return this.permissionClient.authorize(queries, options); + return this.permissionClient.authorize(requests, options); } private async isValidServerToken( diff --git a/plugins/permission-node/src/policy/types.ts b/plugins/permission-node/src/policy/types.ts index fed803a2a9..36145eea77 100644 --- a/plugins/permission-node/src/policy/types.ts +++ b/plugins/permission-node/src/policy/types.ts @@ -15,7 +15,7 @@ */ import { - AuthorizeQuery, + EvaluatePermissionRequest, PolicyDecision, } from '@backstage/plugin-permission-common'; import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; @@ -31,7 +31,10 @@ import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; * * @public */ -export type PolicyAuthorizeQuery = Omit; +export type PolicyAuthorizeQuery = Omit< + EvaluatePermissionRequest, + 'resourceRef' +>; /** * A policy to evaluate authorization requests for any permissioned action performed in Backstage. diff --git a/plugins/permission-react/src/apis/IdentityPermissionApi.ts b/plugins/permission-react/src/apis/IdentityPermissionApi.ts index 6e5d54f61d..80d4eb8859 100644 --- a/plugins/permission-react/src/apis/IdentityPermissionApi.ts +++ b/plugins/permission-react/src/apis/IdentityPermissionApi.ts @@ -17,8 +17,8 @@ import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; import { PermissionApi } from './PermissionApi'; import { - AuthorizeQuery, - AuthorizeDecision, + EvaluatePermissionRequest, + EvaluatePermissionResponse, PermissionClient, } from '@backstage/plugin-permission-common'; import { Config } from '@backstage/config'; @@ -44,7 +44,9 @@ export class IdentityPermissionApi implements PermissionApi { return new IdentityPermissionApi(permissionClient, identity); } - async authorize(request: AuthorizeQuery): Promise { + async authorize( + request: EvaluatePermissionRequest, + ): Promise { const response = await this.permissionClient.authorize( [request], await this.identityApi.getCredentials(), diff --git a/plugins/permission-react/src/apis/PermissionApi.ts b/plugins/permission-react/src/apis/PermissionApi.ts index 69a42cae91..d3a37421ef 100644 --- a/plugins/permission-react/src/apis/PermissionApi.ts +++ b/plugins/permission-react/src/apis/PermissionApi.ts @@ -15,8 +15,8 @@ */ import { - AuthorizeQuery, - AuthorizeDecision, + EvaluatePermissionRequest, + EvaluatePermissionResponse, } from '@backstage/plugin-permission-common'; import { ApiRef, createApiRef } from '@backstage/core-plugin-api'; @@ -27,7 +27,9 @@ import { ApiRef, createApiRef } from '@backstage/core-plugin-api'; * @public */ export type PermissionApi = { - authorize(request: AuthorizeQuery): Promise; + authorize( + request: EvaluatePermissionRequest, + ): Promise; }; /** diff --git a/plugins/search-backend/src/service/AuthorizedSearchEngine.test.ts b/plugins/search-backend/src/service/AuthorizedSearchEngine.test.ts index 4198730947..47503312fb 100644 --- a/plugins/search-backend/src/service/AuthorizedSearchEngine.test.ts +++ b/plugins/search-backend/src/service/AuthorizedSearchEngine.test.ts @@ -16,7 +16,7 @@ import { ConfigReader } from '@backstage/config'; import { - AuthorizeDecision, + EvaluatePermissionResponse, AuthorizeResult, createPermission, PermissionAuthorizer, @@ -243,7 +243,7 @@ describe('AuthorizedSearchEngine', () => { } return { result: AuthorizeResult.CONDITIONAL, - } as AuthorizeDecision; + } as EvaluatePermissionResponse; } return { @@ -294,7 +294,7 @@ describe('AuthorizedSearchEngine', () => { return { result: AuthorizeResult.CONDITIONAL, - } as AuthorizeDecision; + } as EvaluatePermissionResponse; }), ); @@ -336,7 +336,9 @@ describe('AuthorizedSearchEngine', () => { result: AuthorizeResult.ALLOW, }; } - return { result: AuthorizeResult.CONDITIONAL } as AuthorizeDecision; + return { + result: AuthorizeResult.CONDITIONAL, + } as EvaluatePermissionResponse; }), ); @@ -413,7 +415,9 @@ describe('AuthorizedSearchEngine', () => { : AuthorizeResult.ALLOW, }; } - return { result: AuthorizeResult.CONDITIONAL } as AuthorizeDecision; + return { + result: AuthorizeResult.CONDITIONAL, + } as EvaluatePermissionResponse; }), ); @@ -495,7 +499,9 @@ describe('AuthorizedSearchEngine', () => { if (query.resourceRef) { return { result: AuthorizeResult.ALLOW }; } - return { result: AuthorizeResult.CONDITIONAL } as AuthorizeDecision; + return { + result: AuthorizeResult.CONDITIONAL, + } as EvaluatePermissionResponse; }), ); diff --git a/plugins/search-backend/src/service/AuthorizedSearchEngine.ts b/plugins/search-backend/src/service/AuthorizedSearchEngine.ts index 3e7dc6e147..a529bf04c6 100644 --- a/plugins/search-backend/src/service/AuthorizedSearchEngine.ts +++ b/plugins/search-backend/src/service/AuthorizedSearchEngine.ts @@ -18,8 +18,8 @@ import { compact, zipObject } from 'lodash'; import qs from 'qs'; import DataLoader from 'dataloader'; import { - AuthorizeDecision, - AuthorizeQuery, + EvaluatePermissionResponse, + EvaluatePermissionRequest, AuthorizeResult, isResourcePermission, PermissionAuthorizer, @@ -90,7 +90,7 @@ export class AuthorizedSearchEngine implements SearchEngine { const queryStartTime = Date.now(); const authorizer = new DataLoader( - (requests: readonly AuthorizeQuery[]) => + (requests: readonly EvaluatePermissionRequest[]) => this.permissions.authorize(requests.slice(), options), { // Serialize the permission name and resourceRef as @@ -185,8 +185,11 @@ export class AuthorizedSearchEngine implements SearchEngine { private async filterResults( results: IndexableResult[], - typeDecisions: Record, - authorizer: DataLoader, + typeDecisions: Record, + authorizer: DataLoader< + EvaluatePermissionRequest, + EvaluatePermissionResponse + >, ) { return compact( await Promise.all( From 0b98a49509b11f09192e0d96f7d472aa8efcbf02 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Tue, 22 Mar 2022 10:49:42 -0400 Subject: [PATCH 390/410] Rename policy input type Signed-off-by: Joe Porpeglia --- plugins/permission-node/src/policy/index.ts | 2 +- plugins/permission-node/src/policy/types.ts | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/plugins/permission-node/src/policy/index.ts b/plugins/permission-node/src/policy/index.ts index 988ce345a4..f151cfb4fb 100644 --- a/plugins/permission-node/src/policy/index.ts +++ b/plugins/permission-node/src/policy/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export type { PermissionPolicy, PolicyAuthorizeQuery } from './types'; +export type { PermissionPolicy, PolicyQuery } from './types'; diff --git a/plugins/permission-node/src/policy/types.ts b/plugins/permission-node/src/policy/types.ts index 36145eea77..0f469cfbfe 100644 --- a/plugins/permission-node/src/policy/types.ts +++ b/plugins/permission-node/src/policy/types.ts @@ -15,26 +15,24 @@ */ import { - EvaluatePermissionRequest, + Permission, PolicyDecision, } from '@backstage/plugin-permission-common'; import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; /** - * An authorization request to be evaluated by the {@link PermissionPolicy}. + * A query to be evaluated by the {@link PermissionPolicy}. * * @remarks * - * This differs from {@link @backstage/permission-common#AuthorizeQuery} in that `resourceRef` - * should never be provided. This forces policies to be written in a way that's compatible with - * filtering collections of resources at data load time. + * Unlike other parts of the permission API, the policy does not accept a resource ref. This keeps + * the policy decoupled from the resource loading and condition applying logic. * * @public */ -export type PolicyAuthorizeQuery = Omit< - EvaluatePermissionRequest, - 'resourceRef' ->; +export type PolicyQuery = { + permission: Permission; +}; /** * A policy to evaluate authorization requests for any permissioned action performed in Backstage. @@ -54,7 +52,7 @@ export type PolicyAuthorizeQuery = Omit< */ export interface PermissionPolicy { handle( - request: PolicyAuthorizeQuery, + request: PolicyQuery, user?: BackstageIdentityResponse, ): Promise; } From 979d4b976f008f22097f3a32dfe7fc69b512e433 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Tue, 22 Mar 2022 13:53:15 -0400 Subject: [PATCH 391/410] Update api-reports Signed-off-by: Joe Porpeglia --- packages/test-utils/api-report.md | 10 +-- plugins/catalog-backend/api-report.md | 2 +- plugins/permission-common/api-report.md | 83 ++++++++++++++++--------- plugins/permission-node/api-report.md | 44 +++++-------- plugins/permission-react/api-report.md | 12 ++-- 5 files changed, 83 insertions(+), 68 deletions(-) diff --git a/packages/test-utils/api-report.md b/packages/test-utils/api-report.md index 2f2671885e..94ef7af51e 100644 --- a/packages/test-utils/api-report.md +++ b/packages/test-utils/api-report.md @@ -7,8 +7,6 @@ import { AnalyticsApi } from '@backstage/core-plugin-api'; import { AnalyticsEvent } from '@backstage/core-plugin-api'; import { ApiHolder } from '@backstage/core-plugin-api'; import { ApiRef } from '@backstage/core-plugin-api'; -import { AuthorizeDecision } from '@backstage/plugin-permission-common'; -import { AuthorizeQuery } from '@backstage/plugin-permission-common'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { ComponentType } from 'react'; import { Config } from '@backstage/config'; @@ -18,6 +16,8 @@ import { DiscoveryApi } from '@backstage/core-plugin-api'; import { ErrorApi } from '@backstage/core-plugin-api'; import { ErrorApiError } from '@backstage/core-plugin-api'; import { ErrorApiErrorContext } from '@backstage/core-plugin-api'; +import { EvaluatePermissionRequest } from '@backstage/plugin-permission-common'; +import { EvaluatePermissionResponse } from '@backstage/plugin-permission-common'; import { ExternalRouteRef } from '@backstage/core-plugin-api'; import { FetchApi } from '@backstage/core-plugin-api'; import { IdentityApi } from '@backstage/core-plugin-api'; @@ -150,11 +150,13 @@ export interface MockFetchApiOptions { export class MockPermissionApi implements PermissionApi { constructor( requestHandler?: ( - request: AuthorizeQuery, + request: EvaluatePermissionRequest, ) => AuthorizeResult.ALLOW | AuthorizeResult.DENY, ); // (undocumented) - authorize(request: AuthorizeQuery): Promise; + authorize( + request: EvaluatePermissionRequest, + ): Promise; } // @public diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index ad80e36232..0df10cf944 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -8,7 +8,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { CatalogEntityDocument } from '@backstage/plugin-catalog-common'; import { CompoundEntityRef } from '@backstage/catalog-model'; -import { ConditionalPolicyDecision } from '@backstage/plugin-permission-node'; +import { ConditionalPolicyDecision } from '@backstage/plugin-permission-common'; import { Conditions } from '@backstage/plugin-permission-node'; import { Config } from '@backstage/config'; import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; diff --git a/plugins/permission-common/api-report.md b/plugins/permission-common/api-report.md index 77ab94b4e3..001ba53f3a 100644 --- a/plugins/permission-common/api-report.md +++ b/plugins/permission-common/api-report.md @@ -15,37 +15,11 @@ export type AnyOfCriteria = { anyOf: NonEmptyArray>; }; -// @public -export type AuthorizeDecision = - | { - result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; - } - | { - result: AuthorizeResult.CONDITIONAL; - conditions: PermissionCriteria; - }; - -// @public -export type AuthorizeQuery = { - permission: Permission; - resourceRef?: string; -}; - -// @public -export type AuthorizeRequest = { - items: Identified[]; -}; - // @public export type AuthorizeRequestOptions = { token?: string; }; -// @public -export type AuthorizeResponse = { - items: Identified[]; -}; - // @public export enum AuthorizeResult { ALLOW = 'ALLOW', @@ -56,6 +30,14 @@ export enum AuthorizeResult { // @public export type BasicPermission = PermissionBase<'basic', {}>; +// @public +export type ConditionalPolicyDecision = { + result: AuthorizeResult.CONDITIONAL; + pluginId: string; + resourceType: string; + conditions: PermissionCriteria; +}; + // @public export function createPermission(input: { name: string; @@ -69,13 +51,42 @@ export function createPermission(input: { attributes: PermissionAttributes; }): BasicPermission; +// @public +export type DefinitivePolicyDecision = { + result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; +}; + // @public export type DiscoveryApi = { getBaseUrl(pluginId: string): Promise; }; // @public -export type Identified = T & { +export type EvaluatePermissionRequest = { + permission: Permission; + resourceRef?: string; +}; + +// @public +export type EvaluatePermissionRequestBatch = + PermissionMessageBatch; + +// @public +export type EvaluatePermissionResponse = + | { + result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; + } + | { + result: AuthorizeResult.CONDITIONAL; + conditions: PermissionCriteria; + }; + +// @public +export type EvaluatePermissionResponseBatch = + PermissionMessageBatch; + +// @public +export type IdentifiedPermissionMessage = T & { id: string; }; @@ -114,9 +125,9 @@ export type PermissionAttributes = { export interface PermissionAuthorizer { // (undocumented) authorize( - queries: AuthorizeQuery[], + requests: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise; + ): Promise; } // @public @@ -131,9 +142,9 @@ export type PermissionBase = { export class PermissionClient implements PermissionAuthorizer { constructor(options: { discovery: DiscoveryApi; config: Config }); authorize( - queries: AuthorizeQuery[], + queries: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise; + ): Promise; } // @public @@ -149,6 +160,16 @@ export type PermissionCriteria = | NotCriteria | TQuery; +// @public +export type PermissionMessageBatch = { + items: IdentifiedPermissionMessage[]; +}; + +// @public +export type PolicyDecision = + | DefinitivePolicyDecision + | ConditionalPolicyDecision; + // @public export type ResourcePermission = PermissionBase< diff --git a/plugins/permission-node/api-report.md b/plugins/permission-node/api-report.md index f6de7f4909..fe4e70abf9 100644 --- a/plugins/permission-node/api-report.md +++ b/plugins/permission-node/api-report.md @@ -5,19 +5,22 @@ ```ts import { AllOfCriteria } from '@backstage/plugin-permission-common'; import { AnyOfCriteria } from '@backstage/plugin-permission-common'; -import { AuthorizeDecision } from '@backstage/plugin-permission-common'; -import { AuthorizeQuery } from '@backstage/plugin-permission-common'; import { AuthorizeRequestOptions } from '@backstage/plugin-permission-common'; -import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { BackstageIdentityResponse } from '@backstage/plugin-auth-node'; +import { ConditionalPolicyDecision } from '@backstage/plugin-permission-common'; import { Config } from '@backstage/config'; +import { DefinitivePolicyDecision } from '@backstage/plugin-permission-common'; +import { EvaluatePermissionRequest } from '@backstage/plugin-permission-common'; +import { EvaluatePermissionResponse } from '@backstage/plugin-permission-common'; import express from 'express'; -import { Identified } from '@backstage/plugin-permission-common'; +import { IdentifiedPermissionMessage } from '@backstage/plugin-permission-common'; import { NotCriteria } from '@backstage/plugin-permission-common'; +import { Permission } from '@backstage/plugin-permission-common'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { PermissionCondition } from '@backstage/plugin-permission-common'; import { PermissionCriteria } from '@backstage/plugin-permission-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; +import { PolicyDecision } from '@backstage/plugin-permission-common'; import { TokenManager } from '@backstage/backend-common'; // @public @@ -26,7 +29,7 @@ export type ApplyConditionsRequest = { }; // @public -export type ApplyConditionsRequestEntry = Identified<{ +export type ApplyConditionsRequestEntry = IdentifiedPermissionMessage<{ resourceRef: string; resourceType: string; conditions: PermissionCriteria; @@ -38,7 +41,8 @@ export type ApplyConditionsResponse = { }; // @public -export type ApplyConditionsResponseEntry = Identified; +export type ApplyConditionsResponseEntry = + IdentifiedPermissionMessage; // @public export type Condition = TRule extends PermissionRule< @@ -49,14 +53,6 @@ export type Condition = TRule extends PermissionRule< ? (...params: TParams) => PermissionCondition : never; -// @public -export type ConditionalPolicyDecision = { - result: AuthorizeResult.CONDITIONAL; - pluginId: string; - resourceType: string; - conditions: PermissionCriteria; -}; - // @public export type Conditions< TRules extends Record>, @@ -116,11 +112,6 @@ export const createPermissionRule: < rule: PermissionRule, ) => PermissionRule; -// @public -export type DefinitivePolicyDecision = { - result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; -}; - // @alpha export const isAndCriteria: ( criteria: PermissionCriteria, @@ -147,7 +138,7 @@ export const makeCreatePermissionRule: () => < export interface PermissionPolicy { // (undocumented) handle( - request: PolicyAuthorizeQuery, + request: PolicyQuery, user?: BackstageIdentityResponse, ): Promise; } @@ -165,20 +156,17 @@ export type PermissionRule< }; // @public -export type PolicyAuthorizeQuery = Omit; - -// @public -export type PolicyDecision = - | DefinitivePolicyDecision - | ConditionalPolicyDecision; +export type PolicyQuery = { + permission: Permission; +}; // @public export class ServerPermissionClient implements PermissionAuthorizer { // (undocumented) authorize( - queries: AuthorizeQuery[], + requests: EvaluatePermissionRequest[], options?: AuthorizeRequestOptions, - ): Promise; + ): Promise; // (undocumented) static fromConfig( config: Config, diff --git a/plugins/permission-react/api-report.md b/plugins/permission-react/api-report.md index 6b66376cb7..17b29a463a 100644 --- a/plugins/permission-react/api-report.md +++ b/plugins/permission-react/api-report.md @@ -4,11 +4,11 @@ ```ts import { ApiRef } from '@backstage/core-plugin-api'; -import { AuthorizeDecision } from '@backstage/plugin-permission-common'; -import { AuthorizeQuery } from '@backstage/plugin-permission-common'; import { ComponentProps } from 'react'; import { Config } from '@backstage/config'; import { DiscoveryApi } from '@backstage/core-plugin-api'; +import { EvaluatePermissionRequest } from '@backstage/plugin-permission-common'; +import { EvaluatePermissionResponse } from '@backstage/plugin-permission-common'; import { IdentityApi } from '@backstage/core-plugin-api'; import { Permission } from '@backstage/plugin-permission-common'; import { ReactElement } from 'react'; @@ -25,7 +25,9 @@ export type AsyncPermissionResult = { // @public export class IdentityPermissionApi implements PermissionApi { // (undocumented) - authorize(request: AuthorizeQuery): Promise; + authorize( + request: EvaluatePermissionRequest, + ): Promise; // (undocumented) static create(options: { config: Config; @@ -36,7 +38,9 @@ export class IdentityPermissionApi implements PermissionApi { // @public export type PermissionApi = { - authorize(request: AuthorizeQuery): Promise; + authorize( + request: EvaluatePermissionRequest, + ): Promise; }; // @public From c98d27146630644b22e6ef4149235503c651138a Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Tue, 22 Mar 2022 14:46:01 -0400 Subject: [PATCH 392/410] Add changesets Signed-off-by: Joe Porpeglia --- .changeset/eleven-frogs-promise.md | 14 ++++++++++++++ .changeset/few-mayflies-divide.md | 8 ++++++++ .changeset/mean-tomatoes-shout.md | 7 +++++++ 3 files changed, 29 insertions(+) create mode 100644 .changeset/eleven-frogs-promise.md create mode 100644 .changeset/few-mayflies-divide.md create mode 100644 .changeset/mean-tomatoes-shout.md diff --git a/.changeset/eleven-frogs-promise.md b/.changeset/eleven-frogs-promise.md new file mode 100644 index 0000000000..1868bb9df5 --- /dev/null +++ b/.changeset/eleven-frogs-promise.md @@ -0,0 +1,14 @@ +--- +'@backstage/plugin-permission-common': minor +--- + +Refactor api types into more specific, decoupled names. + +- **BREAKING:** + - Renamed `AuthorizeDecision` to `EvaluatePermissionResponse` + - Renamed `AuthorizeQuery` to `EvaluatePermissionRequest` + - Renamed `AuthorizeRequest` to `EvaluatePermissionRequestBatch` + - Renamed `AuthorizeResponse` to `EvaluatePermissionResponseBatch` + - Renamed `Identified` to `IdentifiedPermissionMessage` +- Add `PermissionMessageBatch` helper type +- Add `ConditionalPolicyDecision`, `DefinitivePolicyDecision`, and `PolicyDecision` types from `@backstage/plugin-permission-node` diff --git a/.changeset/few-mayflies-divide.md b/.changeset/few-mayflies-divide.md new file mode 100644 index 0000000000..e8744c47da --- /dev/null +++ b/.changeset/few-mayflies-divide.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-permission-node': minor +--- + +**BREAKING:** + +- Rename `PolicyAuthorizeQuery` to `PolicyQuery` +- Remove `PolicyDecision`, `DefinitivePolicyDecision`, and `ConditionalPolicyDecision`. These types are now exported from `@backstage/plugin-permission-common` diff --git a/.changeset/mean-tomatoes-shout.md b/.changeset/mean-tomatoes-shout.md new file mode 100644 index 0000000000..6d51bd2929 --- /dev/null +++ b/.changeset/mean-tomatoes-shout.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-permission-backend': patch +'@backstage/plugin-permission-react': patch +'@backstage/plugin-search-backend': patch +--- + +Use updated types from `@backstage/plugin-permission-common` From 55f72c44457ad4e2eba2440b22c6ca9f18af247f Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Thu, 24 Mar 2022 11:33:47 -0400 Subject: [PATCH 393/410] Update comment Signed-off-by: Joe Porpeglia --- plugins/permission-common/src/types/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/permission-common/src/types/api.ts b/plugins/permission-common/src/types/api.ts index b0bcf94f56..f8537f5d45 100644 --- a/plugins/permission-common/src/types/api.ts +++ b/plugins/permission-common/src/types/api.ts @@ -171,7 +171,7 @@ export type EvaluatePermissionResponse = }; /** - * A batch of responses the permission backend. + * A batch of responses from the permission backend. * @public */ export type EvaluatePermissionResponseBatch = From 678d81a6d59b43a4578e118d3eb300644fd603e0 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Thu, 24 Mar 2022 12:03:43 -0400 Subject: [PATCH 394/410] Remove duplicate type Signed-off-by: Joe Porpeglia --- plugins/permission-common/api-report.md | 9 +-------- plugins/permission-common/src/types/api.ts | 14 ++++++++------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/plugins/permission-common/api-report.md b/plugins/permission-common/api-report.md index 001ba53f3a..07c1904183 100644 --- a/plugins/permission-common/api-report.md +++ b/plugins/permission-common/api-report.md @@ -72,14 +72,7 @@ export type EvaluatePermissionRequestBatch = PermissionMessageBatch; // @public -export type EvaluatePermissionResponse = - | { - result: AuthorizeResult.ALLOW | AuthorizeResult.DENY; - } - | { - result: AuthorizeResult.CONDITIONAL; - conditions: PermissionCriteria; - }; +export type EvaluatePermissionResponse = PolicyDecision; // @public export type EvaluatePermissionResponseBatch = diff --git a/plugins/permission-common/src/types/api.ts b/plugins/permission-common/src/types/api.ts index f8537f5d45..66693ccf1b 100644 --- a/plugins/permission-common/src/types/api.ts +++ b/plugins/permission-common/src/types/api.ts @@ -161,14 +161,16 @@ export type EvaluatePermissionRequestBatch = /** * An individual response from the permission backend. + * + * @remarks + * + * This response type is an alias of {@link PolicyDecision} to maintain separation between the + * {@link @backstage/plugin-permission-node#PermissionPolicy} interface and the permission backend + * api. They may diverge at some point in the future. The response + * * @public */ -export type EvaluatePermissionResponse = - | { result: AuthorizeResult.ALLOW | AuthorizeResult.DENY } - | { - result: AuthorizeResult.CONDITIONAL; - conditions: PermissionCriteria; - }; +export type EvaluatePermissionResponse = PolicyDecision; /** * A batch of responses from the permission backend. From b9324fafe231ce46c2a4575ea0614cb4311b5bf9 Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Thu, 24 Mar 2022 12:40:08 -0400 Subject: [PATCH 395/410] Remove unecessary type cast Signed-off-by: Joe Porpeglia --- plugins/permission-react/src/hooks/usePermission.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/permission-react/src/hooks/usePermission.ts b/plugins/permission-react/src/hooks/usePermission.ts index 1e7f45129d..069c2c8148 100644 --- a/plugins/permission-react/src/hooks/usePermission.ts +++ b/plugins/permission-react/src/hooks/usePermission.ts @@ -17,7 +17,6 @@ import { useApi } from '@backstage/core-plugin-api'; import { permissionApiRef } from '../apis'; import { - AuthorizeQuery, AuthorizeResult, isResourcePermission, Permission, @@ -72,7 +71,7 @@ export function usePermission( return AuthorizeResult.DENY; } - const { result } = await permissionApi.authorize(args as AuthorizeQuery); + const { result } = await permissionApi.authorize(args); return result; }); From 660f684d1788a148c213fd5b772846e8b98328eb Mon Sep 17 00:00:00 2001 From: Joe Porpeglia Date: Thu, 24 Mar 2022 12:47:57 -0400 Subject: [PATCH 396/410] Add test-utils to changeset Signed-off-by: Joe Porpeglia --- .changeset/mean-tomatoes-shout.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.changeset/mean-tomatoes-shout.md b/.changeset/mean-tomatoes-shout.md index 6d51bd2929..446e66d386 100644 --- a/.changeset/mean-tomatoes-shout.md +++ b/.changeset/mean-tomatoes-shout.md @@ -2,6 +2,7 @@ '@backstage/plugin-permission-backend': patch '@backstage/plugin-permission-react': patch '@backstage/plugin-search-backend': patch +'@backstage/test-utils': patch --- Use updated types from `@backstage/plugin-permission-common` From ca911071102a26e1e78dadfbce8c8c580ce78aa3 Mon Sep 17 00:00:00 2001 From: Sven Sander Date: Fri, 25 Mar 2022 21:34:04 +0100 Subject: [PATCH 397/410] Fixed possible type error if jenkins response contains null values Signed-off-by: Sven Sander --- .changeset/unlucky-snakes-turn.md | 5 + .../src/service/jenkinsApi.test.ts | 210 ++++++++++++++++++ .../jenkins-backend/src/service/jenkinsApi.ts | 8 +- 3 files changed, 219 insertions(+), 4 deletions(-) create mode 100644 .changeset/unlucky-snakes-turn.md diff --git a/.changeset/unlucky-snakes-turn.md b/.changeset/unlucky-snakes-turn.md new file mode 100644 index 0000000000..bcb31feb40 --- /dev/null +++ b/.changeset/unlucky-snakes-turn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-jenkins-backend': patch +--- + +Fixed possible type error if jenkins response contains null values diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index bc7d2cb029..1d72dbf71c 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -352,6 +352,216 @@ describe('JenkinsApi', () => { const result = await jenkinsApi.getProjects(jenkinsInfo); + expect(result).toHaveLength(1); + expect(result[0].lastBuild!.tests).toEqual({ + total: 635, + passed: 632, + skipped: 1, + failed: 2, + testUrl: + 'https://jenkins.example.com/job/example-jobName/job/exampleBuild/7/testReport/', + }); + }); + }); + describe('augmented with null values', () => { + const projectWithScmActionsAndNulls: JenkinsProject = { + actions: [ + {}, + {}, + null, + {}, + { + _class: 'jenkins.scm.api.metadata.ContributorMetadataAction', + contributor: 'testuser', + contributorDisplayName: 'Mr. T User', + contributorEmail: null, + }, + {}, + { + _class: 'jenkins.scm.api.metadata.ObjectMetadataAction', + objectDescription: '', + objectDisplayName: 'Add LICENSE, CoC etc', + objectUrl: 'https://github.com/backstage/backstage/pull/1', + }, + {}, + {}, + { + _class: 'com.cloudbees.plugins.credentials.ViewCredentialsAction', + stores: {}, + }, + ], + displayName: 'Example Build', + fullDisplayName: 'Example jobName » Example Build', + fullName: 'example-jobName/exampleBuild', + inQueue: false, + lastBuild: { + actions: [ + { + _class: 'hudson.model.CauseAction', + causes: [ + { + _class: 'jenkins.branch.BranchIndexingCause', + shortDescription: 'Branch indexing', + }, + ], + }, + null, + {}, + {}, + { + _class: 'org.jenkinsci.plugins.workflow.cps.EnvActionImpl', + environment: {}, + }, + {}, + {}, + {}, + {}, + {}, + { + _class: 'hudson.plugins.git.util.BuildData', + buildsByBranchName: { + 'PR-1': { + _class: 'hudson.plugins.git.util.Build', + buildNumber: 5, + buildResult: null, + marked: { + SHA1: '14d31bde346fcad64ab939f82d195db36701cfcb', + branch: [ + { + SHA1: '14d31bde346fcad64ab939f82d195db36701cfcb', + name: 'PR-1', + }, + ], + }, + revision: { + SHA1: '6c6b34c0fb91cf077a01fe62d3e8e996b4ea5861', + branch: [ + { + SHA1: '14d31bde346fcad64ab939f82d195db36701cfcb', + name: 'PR-1', + }, + ], + }, + }, + }, + lastBuiltRevision: { + SHA1: '6c6b34c0fb91cf077a01fe62d3e8e996b4ea5861', + branch: [ + { + SHA1: '14d31bde346fcad64ab939f82d195db36701cfcb', + name: 'PR-1', + }, + ], + }, + remoteUrls: ['https://github.com/backstage/backstage.git'], + scmName: '', + }, + { + _class: 'hudson.plugins.git.util.BuildData', + buildsByBranchName: { + master: { + _class: 'hudson.plugins.git.util.Build', + buildNumber: 5, + buildResult: null, + marked: { + SHA1: '14d31bde346fcad64ab939f82d195db36701cfcb', + branch: [ + { + SHA1: '14d31bde346fcad64ab939f82d195db36701cfcb', + name: 'master', + }, + ], + }, + revision: { + SHA1: '6c6b34c0fb91cf077a01fe62d3e8e996b4ea5861', + branch: [ + { + SHA1: '14d31bde346fcad64ab939f82d195db36701cfcb', + name: 'master', + }, + ], + }, + }, + }, + lastBuiltRevision: { + SHA1: '6c6b34c0fb91cf077a01fe62d3e8e996b4ea5861', + branch: [ + { + SHA1: '14d31bde346fcad64ab939f82d195db36701cfcb', + name: 'master', + }, + ], + }, + remoteUrls: ['https://github.com/backstage/backstage.git'], + scmName: '', + }, + {}, + {}, + { + _class: 'hudson.tasks.junit.TestResultAction', + failCount: 2, + skipCount: 1, + totalCount: 635, + urlName: 'testReport', + }, + {}, + {}, + { + _class: + 'org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction', + restartEnabled: false, + restartableStages: [], + }, + {}, + ], + timestamp: 1, + building: false, + duration: 10, + result: 'success', + displayName: '#7', + fullDisplayName: 'Example jobName » Example Build #7', + url: 'https://jenkins.example.com/job/example-jobName/job/exampleBuild/7/', + number: 7, + }, + }; + + it('augments project', async () => { + mockedJenkinsClient.job.get.mockResolvedValueOnce({ + jobs: [projectWithScmActionsAndNulls], + }); + + const result = await jenkinsApi.getProjects(jenkinsInfo); + + expect(result).toHaveLength(1); + expect(result[0].status).toEqual('success'); + }); + it('augments build', async () => { + mockedJenkinsClient.job.get.mockResolvedValueOnce({ + jobs: [projectWithScmActionsAndNulls], + }); + + const result = await jenkinsApi.getProjects(jenkinsInfo); + + expect(result).toHaveLength(1); + // TODO: I am really just asserting the previous behaviour with no understanding here. + // In my 2 Jenkins instances, 1 returns a lot of different and confusing BuildData sections and 1 returns none ☹️ + expect(result[0].lastBuild!.source).toEqual({ + branchName: 'master', + commit: { + hash: '14d31bde', + }, + url: 'https://github.com/backstage/backstage/pull/1', + displayName: 'Add LICENSE, CoC etc', + author: 'Mr. T User', + }); + }); + it('finds test report', async () => { + mockedJenkinsClient.job.get.mockResolvedValueOnce({ + jobs: [projectWithScmActionsAndNulls], + }); + + const result = await jenkinsApi.getProjects(jenkinsInfo); + expect(result).toHaveLength(1); expect(result[0].lastBuild!.tests).toEqual({ total: 635, diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.ts b/plugins/jenkins-backend/src/service/jenkinsApi.ts index ddc2bb0ea3..38ab20b17b 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.ts @@ -211,7 +211,7 @@ export class JenkinsApiImpl { build.actions .filter( (action: any) => - action._class === 'hudson.plugins.git.util.BuildData', + action?._class === 'hudson.plugins.git.util.BuildData', ) .map((action: any) => { const [first]: any = Object.values(action.buildsByBranchName); @@ -253,7 +253,7 @@ export class JenkinsApiImpl { const scmInfo: ScmDetails | undefined = project.actions .filter( (action: any) => - action._class === 'jenkins.scm.api.metadata.ObjectMetadataAction', + action?._class === 'jenkins.scm.api.metadata.ObjectMetadataAction', ) .map((action: any) => { return { @@ -272,7 +272,7 @@ export class JenkinsApiImpl { const author = project.actions .filter( (action: any) => - action._class === + action?._class === 'jenkins.scm.api.metadata.ContributorMetadataAction', ) .map((action: any) => { @@ -297,7 +297,7 @@ export class JenkinsApiImpl { return build.actions .filter( (action: any) => - action._class === 'hudson.tasks.junit.TestResultAction', + action?._class === 'hudson.tasks.junit.TestResultAction', ) .map((action: any) => { return { From 2c77266deb25c08fc0c174967f3c3223d92eb474 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 26 Mar 2022 10:13:47 +0100 Subject: [PATCH 398/410] vale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .github/styles/vocab.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/styles/vocab.txt b/.github/styles/vocab.txt index c9382b1fd0..4070e5600a 100644 --- a/.github/styles/vocab.txt +++ b/.github/styles/vocab.txt @@ -137,6 +137,7 @@ inlinehilite interop JaCoCo JavaScript +jenkins Jira jq js From 4dd6a05f020ef2147231e60d3853f09666a602f9 Mon Sep 17 00:00:00 2001 From: Sven Sander Date: Sat, 26 Mar 2022 12:03:13 +0100 Subject: [PATCH 399/410] Fixed type error in test case Signed-off-by: Sven Sander --- plugins/jenkins-backend/src/service/jenkinsApi.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts index 1d72dbf71c..a5453b5ebe 100644 --- a/plugins/jenkins-backend/src/service/jenkinsApi.test.ts +++ b/plugins/jenkins-backend/src/service/jenkinsApi.test.ts @@ -368,7 +368,7 @@ describe('JenkinsApi', () => { actions: [ {}, {}, - null, + {}, {}, { _class: 'jenkins.scm.api.metadata.ContributorMetadataAction', From a45bce06e3c614ab4dfb689f71018b59c80ca06c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 26 Mar 2022 19:02:38 +0100 Subject: [PATCH 400/410] handle trailing slashes on enterpriseInstanceUrl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/rotten-planes-watch.md | 5 +++++ plugins/auth-backend/src/providers/github/provider.ts | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/rotten-planes-watch.md diff --git a/.changeset/rotten-planes-watch.md b/.changeset/rotten-planes-watch.md new file mode 100644 index 0000000000..25aa6b83df --- /dev/null +++ b/.changeset/rotten-planes-watch.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': patch +--- + +Handle trailing slashes on GitHub `enterpriseInstanceUrl` settings diff --git a/plugins/auth-backend/src/providers/github/provider.ts b/plugins/auth-backend/src/providers/github/provider.ts index 29e8679fe0..c875f856b6 100644 --- a/plugins/auth-backend/src/providers/github/provider.ts +++ b/plugins/auth-backend/src/providers/github/provider.ts @@ -318,9 +318,9 @@ export const createGithubProvider = ( OAuthEnvironmentHandler.mapConfig(config, envConfig => { const clientId = envConfig.getString('clientId'); const clientSecret = envConfig.getString('clientSecret'); - const enterpriseInstanceUrl = envConfig.getOptionalString( - 'enterpriseInstanceUrl', - ); + const enterpriseInstanceUrl = envConfig + .getOptionalString('enterpriseInstanceUrl') + ?.replace(/\/$/, ''); const customCallbackUrl = envConfig.getOptionalString('callbackUrl'); const authorizationUrl = enterpriseInstanceUrl ? `${enterpriseInstanceUrl}/login/oauth/authorize` From 37b04b5a5ee4f209548c572068f888eeb35440b7 Mon Sep 17 00:00:00 2001 From: Alex Crome Date: Sat, 26 Mar 2022 18:25:31 +0000 Subject: [PATCH 401/410] Fixed bad help link in Entity Inspector The help link for labels in the entity inspector was 404ing, so removed it. Signed-off-by: Alex Crome --- .changeset/purple-laws-give.md | 5 +++++ .../InspectEntityDialog/components/OverviewPage.tsx | 10 +--------- 2 files changed, 6 insertions(+), 9 deletions(-) create mode 100644 .changeset/purple-laws-give.md diff --git a/.changeset/purple-laws-give.md b/.changeset/purple-laws-give.md new file mode 100644 index 0000000000..7e985092e2 --- /dev/null +++ b/.changeset/purple-laws-give.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Removed broken link from Labels section of entity inspector. diff --git a/plugins/catalog-react/src/components/InspectEntityDialog/components/OverviewPage.tsx b/plugins/catalog-react/src/components/InspectEntityDialog/components/OverviewPage.tsx index a4e8523beb..f0adb878d6 100644 --- a/plugins/catalog-react/src/components/InspectEntityDialog/components/OverviewPage.tsx +++ b/plugins/catalog-react/src/components/InspectEntityDialog/components/OverviewPage.tsx @@ -107,15 +107,7 @@ export function OverviewPage(props: { entity: AlphaEntity }) { )} {!!Object.keys(metadata.labels || {}).length && ( - - Labels - - - } - > + Labels}> {Object.entries(metadata.labels!).map(entry => ( ))} From bdd27732027092f0813cd84f6f58ff9b65590c88 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 27 Mar 2022 23:03:48 +0200 Subject: [PATCH 402/410] changesets: add missing changeset for TaskWorker refactor Signed-off-by: Patrik Oldsberg --- .changeset/brave-chairs-stare.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/brave-chairs-stare.md diff --git a/.changeset/brave-chairs-stare.md b/.changeset/brave-chairs-stare.md new file mode 100644 index 0000000000..8a2dd91e91 --- /dev/null +++ b/.changeset/brave-chairs-stare.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-tasks': patch +--- + +Refactored the internal `TaskWorker` class to make it easier to test. From 3419d8a9569adf5e036169e28fae9aad28fa1171 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 04:09:43 +0000 Subject: [PATCH 403/410] build(deps): bump cookie-parser from 1.4.5 to 1.4.6 Bumps [cookie-parser](https://github.com/expressjs/cookie-parser) from 1.4.5 to 1.4.6. - [Release notes](https://github.com/expressjs/cookie-parser/releases) - [Changelog](https://github.com/expressjs/cookie-parser/blob/master/HISTORY.md) - [Commits](https://github.com/expressjs/cookie-parser/compare/1.4.5...1.4.6) --- updated-dependencies: - dependency-name: cookie-parser dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index c87087fa05..c5d7a060a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9880,11 +9880,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: safe-buffer "~5.1.1" cookie-parser@^1.4.5: - version "1.4.5" - resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" - integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== + version "1.4.6" + resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594" + integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== dependencies: - cookie "0.4.0" + cookie "0.4.1" cookie-signature "1.0.6" cookie-signature@1.0.6: @@ -9892,11 +9892,6 @@ cookie-signature@1.0.6: resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - cookie@0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" From a36e62611c4d326e64d6ceb99ba085ba2ba4f465 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 04:10:41 +0000 Subject: [PATCH 404/410] build(deps): bump @types/json-schema from 7.0.10 to 7.0.11 Bumps [@types/json-schema](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/json-schema) from 7.0.10 to 7.0.11. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/json-schema) --- updated-dependencies: - dependency-name: "@types/json-schema" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c87087fa05..0928bd9a3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6238,9 +6238,9 @@ "@types/json-schema" "*" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.10" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23" - integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== + version "7.0.11" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json-stable-stringify@^1.0.32": version "1.0.32" From 2bf91d2c90bb9cfac960885fedce63660d15f4c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 04:10:55 +0000 Subject: [PATCH 405/410] build(deps-dev): bump prettier from 2.6.0 to 2.6.1 in /microsite Bumps [prettier](https://github.com/prettier/prettier) from 2.6.0 to 2.6.1. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/2.6.0...2.6.1) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- microsite/package.json | 2 +- microsite/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/microsite/package.json b/microsite/package.json index 7c770bafc1..427731ea47 100644 --- a/microsite/package.json +++ b/microsite/package.json @@ -19,7 +19,7 @@ "@spotify/prettier-config": "^13.0.0", "docusaurus": "^2.0.0-alpha.70", "js-yaml": "^4.1.0", - "prettier": "^2.6.0", + "prettier": "^2.6.1", "yarn-lock-check": "^1.0.5" }, "prettier": "@spotify/prettier-config" diff --git a/microsite/yarn.lock b/microsite/yarn.lock index e854dc9b09..efd56a9f28 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -5209,10 +5209,10 @@ prepend-http@^2.0.0: resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -prettier@^2.6.0: - version "2.6.0" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.6.0.tgz#12f8f504c4d8ddb76475f441337542fa799207d4" - integrity sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A== +prettier@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz#d472797e0d7461605c1609808e27b80c0f9cfe17" + integrity sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A== prismjs@^1.22.0: version "1.27.0" From 7e22a6eb6048a523f24d730962c9459e10d82dee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 04:11:20 +0000 Subject: [PATCH 406/410] build(deps): bump ajv from 8.10.0 to 8.11.0 Bumps [ajv](https://github.com/ajv-validator/ajv) from 8.10.0 to 8.11.0. - [Release notes](https://github.com/ajv-validator/ajv/releases) - [Commits](https://github.com/ajv-validator/ajv/compare/v8.10.0...v8.11.0) --- updated-dependencies: - dependency-name: ajv dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c87087fa05..f423bda690 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7484,9 +7484,9 @@ ajv@^7.0.3: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.10.0, ajv@^8.8.0: - version "8.10.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + version "8.11.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" From 3a80ce73f6869dafe26a822efc30f97a7b879774 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 04:12:43 +0000 Subject: [PATCH 407/410] build(deps): bump react-hook-form from 7.27.1 to 7.28.1 Bumps [react-hook-form](https://github.com/react-hook-form/react-hook-form) from 7.27.1 to 7.28.1. - [Release notes](https://github.com/react-hook-form/react-hook-form/releases) - [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md) - [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.27.1...v7.28.1) --- updated-dependencies: - dependency-name: react-hook-form dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c87087fa05..bd84662874 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20953,9 +20953,9 @@ react-helmet@6.1.0: react-side-effect "^2.1.0" react-hook-form@^7.12.2, react-hook-form@^7.13.0: - version "7.27.1" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.27.1.tgz#fe5fbcb6bf58751f66d9569e998d671480cc57f6" - integrity sha512-N3a7A6zIQ8DJeThisVZGtOUabTbJw+7DHJidmB9w8m3chckv2ZWKb5MHps9d2pPJqmCDoWe53Bos56bYmJms5w== + version "7.28.1" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.28.1.tgz#95fc37be6c6b9d57212eb7eca055fb36d079b3b7" + integrity sha512-mgwxvXuvt3FMY/mdnWbPc++Zf1U5xYzkhOaL05mtFMLvXc9MvUhMUlKtUVuO12sOrgT3nPXBgVFawtiJ4ONrgg== react-hot-loader@^4.13.0: version "4.13.0" From 1d90a820ce1f2a27e1e4b56a185bba46dd6f71fe Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 28 Mar 2022 10:30:37 +0200 Subject: [PATCH 408/410] Changeset fixups Signed-off-by: Emma Indal Co-authored-by: Johan Haals --- .changeset/four-birds-peel.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/four-birds-peel.md b/.changeset/four-birds-peel.md index f315f7a326..e90f631858 100644 --- a/.changeset/four-birds-peel.md +++ b/.changeset/four-birds-peel.md @@ -2,6 +2,6 @@ '@backstage/plugin-home': patch --- -- Adds new HomePageStackOverflowQuestions component which renders a list of stack overflow questions on your homepage. +- Adds new `HomePageStackOverflowQuestions` component which renders a list of stack overflow questions on your homepage. -- Exports ComponentRenderer type. +- Exports `ComponentRenderer` type. From 67334496418d73227680458391cf1e58caa4d3df Mon Sep 17 00:00:00 2001 From: Emma Indal Date: Mon, 28 Mar 2022 10:35:15 +0200 Subject: [PATCH 409/410] add @public to ComponentRenderer Signed-off-by: Emma Indal --- plugins/home/api-report.md | 6 ++---- plugins/home/src/extensions.tsx | 3 +++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/plugins/home/api-report.md b/plugins/home/api-report.md index 8cb5ef3d1c..d5f5c52ea1 100644 --- a/plugins/home/api-report.md +++ b/plugins/home/api-report.md @@ -39,8 +39,6 @@ export const ComponentAccordion: ({ ContextProvider?: ((props: any) => JSX.Element) | undefined; }) => JSX.Element; -// Warning: (ae-missing-release-tag) "ComponentRenderer" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// // @public (undocumented) export type ComponentRenderer = { Renderer?: (props: RendererProps) => JSX.Element; @@ -167,6 +165,6 @@ export const WelcomeTitle: () => JSX.Element; // Warnings were encountered during analysis: // -// src/extensions.d.ts:3:5 - (ae-forgotten-export) The symbol "RendererProps" needs to be exported by the entry point index.d.ts -// src/extensions.d.ts:24:5 - (ae-forgotten-export) The symbol "ComponentParts" needs to be exported by the entry point index.d.ts +// src/extensions.d.ts:6:5 - (ae-forgotten-export) The symbol "RendererProps" needs to be exported by the entry point index.d.ts +// src/extensions.d.ts:27:5 - (ae-forgotten-export) The symbol "ComponentParts" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/home/src/extensions.tsx b/plugins/home/src/extensions.tsx index 4a234f9813..4139e301a3 100644 --- a/plugins/home/src/extensions.tsx +++ b/plugins/home/src/extensions.tsx @@ -21,6 +21,9 @@ import { InfoCard } from '@backstage/core-components'; import { SettingsModal } from './components'; import { createReactExtension, useApp } from '@backstage/core-plugin-api'; +/** + * @public + */ export type ComponentRenderer = { Renderer?: (props: RendererProps) => JSX.Element; }; From 8012ac46a0f426464ce136f5c12c1d7de29ebe77 Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Mon, 28 Mar 2022 11:06:38 +0100 Subject: [PATCH 410/410] permissions: ensure returned conditions match permission in `PermissionPolicy#handle` (#10075) * permission-node: fix signature of permission rule in test suites Signed-off-by: Mike Lewis * permission-common: add isPermission helper for comparing permissions Signed-off-by: Mike Lewis * permission-node: adjust createConditionExports for more type safety Signed-off-by: Mike Lewis * permissions: add resourceType property to PermissionCondition and PermissionRule Signed-off-by: Mike Lewis * catalog: handle changes to PermissionCondition and PermissionRule types Signed-off-by: Mike Lewis * catalog-backend: avoid re-exporting alpha import cf. https://github.com/backstage/backstage/pull/10128 Signed-off-by: Mike Lewis * Update changeset Signed-off-by: Joe Porpeglia * Resolve api-report conflict Signed-off-by: Joon Park Co-authored-by: Joe Porpeglia Co-authored-by: Joon Park --- .changeset/beige-avocados-matter.md | 28 +++ .changeset/calm-walls-heal.md | 5 + .changeset/dry-fans-arrive.md | 63 +++++++ .changeset/modern-actors-notice.md | 5 + .changeset/sour-cameras-deliver.md | 10 + .changeset/sour-lobsters-sniff.md | 5 + .changeset/stale-carrots-smile.md | 5 + plugins/catalog-backend/api-report.md | 65 +++++-- .../src/permissions/conditionExports.ts | 32 ++-- .../catalog-backend/src/permissions/index.ts | 2 +- .../permissions/rules/createPropertyRule.ts | 2 + .../src/permissions/rules/hasAnnotation.ts | 2 + .../src/permissions/rules/hasLabel.ts | 2 + .../src/permissions/rules/index.ts | 1 + .../src/permissions/rules/isEntityKind.ts | 2 + .../src/permissions/rules/isEntityOwner.ts | 2 + .../src/permissions/rules/util.ts | 19 +- .../service/AuthorizedEntitiesCatalog.test.ts | 12 +- .../src/service/CatalogBuilder.ts | 23 +-- .../src/service/createRouter.test.ts | 16 +- .../PermissionIntegrationClient.test.ts | 51 +++-- plugins/permission-common/api-report.md | 12 +- .../permission-common/src/PermissionClient.ts | 1 + .../permission-common/src/permissions/util.ts | 11 ++ plugins/permission-common/src/types/api.ts | 6 +- plugins/permission-node/api-report.md | 63 ++++--- .../createConditionExports.test.ts | 45 ++++- .../src/integration/createConditionExports.ts | 38 ++-- .../createConditionFactory.test.ts | 7 +- .../src/integration/createConditionFactory.ts | 8 +- .../createConditionTransformer.test.ts | 95 ++++++++-- .../integration/createConditionTransformer.ts | 4 +- .../createPermissionIntegrationRouter.test.ts | 175 +++++++++++++++--- .../createPermissionIntegrationRouter.ts | 28 ++- .../src/integration/createPermissionRule.ts | 7 +- .../src/integration/util.test.ts | 11 +- .../permission-node/src/integration/util.ts | 4 +- plugins/permission-node/src/types.ts | 2 + 38 files changed, 676 insertions(+), 193 deletions(-) create mode 100644 .changeset/beige-avocados-matter.md create mode 100644 .changeset/calm-walls-heal.md create mode 100644 .changeset/dry-fans-arrive.md create mode 100644 .changeset/modern-actors-notice.md create mode 100644 .changeset/sour-cameras-deliver.md create mode 100644 .changeset/sour-lobsters-sniff.md create mode 100644 .changeset/stale-carrots-smile.md diff --git a/.changeset/beige-avocados-matter.md b/.changeset/beige-avocados-matter.md new file mode 100644 index 0000000000..d6c1e3b2a5 --- /dev/null +++ b/.changeset/beige-avocados-matter.md @@ -0,0 +1,28 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +**BREAKING (alpha api):** Replace `createCatalogPolicyDecision` export with `createCatalogConditionalDecision`, which accepts a permission parameter of type `ResourcePermission<'catalog-entity'>` along with conditions. The permission passed is expected to be the handled permission in `PermissionPolicy#handle`, whose type must first be narrowed using methods like `isPermission` and `isResourcePermission`: + +```typescript +class TestPermissionPolicy implements PermissionPolicy { + async handle( + request: PolicyQuery, + _user?: BackstageIdentityResponse, + ): Promise { + if ( + // Narrow type of `request.permission` to `ResourcePermission<'catalog-entity'> + isResourcePermission(request.permission, RESOURCE_TYPE_CATALOG_ENTITY) + ) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner( + _user?.identity.ownershipEntityRefs ?? [], + ), + ); + } + + return { + result: AuthorizeResult.ALLOW, + }; +``` diff --git a/.changeset/calm-walls-heal.md b/.changeset/calm-walls-heal.md new file mode 100644 index 0000000000..f47ce4a0e9 --- /dev/null +++ b/.changeset/calm-walls-heal.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-common': minor +--- + +Add `resourceType` property to `PermissionCondition` type to allow matching them with `ResourcePermission` instances. diff --git a/.changeset/dry-fans-arrive.md b/.changeset/dry-fans-arrive.md new file mode 100644 index 0000000000..6947703e7f --- /dev/null +++ b/.changeset/dry-fans-arrive.md @@ -0,0 +1,63 @@ +--- +'@backstage/plugin-permission-node': minor +--- + +**BREAKING**: Stronger typing in `PermissionPolicy` 🎉. + +Previously, it was entirely the responsibility of the `PermissionPolicy` author to only return `CONDITIONAL` decisions for permissions that are associated with a resource, and to return the correct kind of `PermissionCondition` instances inside the decision. Now, the policy authoring helpers provided in this package now ensure that the decision and permission match. + +**For policy authors**: rename and adjust api of `createConditionExports`. Previously, the function returned a factory for creating conditional decisions named `createPolicyDecision`, which had a couple of drawbacks: + +1. The function always creates a _conditional_ policy decision, but this was not reflected in the name. +2. Conditional decisions should only ever be returned from `PermissionPolicy#handle` for resource permissions, but there was nothing in the API that encoded this constraint. + +This change addresses the drawbacks above by making the following changes for policy authors: + +- The `createPolicyDecision` method has been renamed to `createConditionalDecision`. +- Along with conditions, the method now accepts a permission, which must be a `ResourcePermission`. This is expected to be the handled permission in `PermissionPolicy#handle`, whose type must first be narrowed using methods like `isPermission` and `isResourcePermission`: + +```typescript +class TestPermissionPolicy implements PermissionPolicy { + async handle( + request: PolicyQuery, + _user?: BackstageIdentityResponse, + ): Promise { + if ( + // Narrow type of `request.permission` to `ResourcePermission<'catalog-entity'> + isResourcePermission(request.permission, RESOURCE_TYPE_CATALOG_ENTITY) + ) { + return createCatalogConditionalDecision( + request.permission, + catalogConditions.isEntityOwner( + _user?.identity.ownershipEntityRefs ?? [], + ), + ); + } + + return { + result: AuthorizeResult.ALLOW, + }; +``` + +**BREAKING**: when creating `PermissionRule`s, provide a `resourceType`. + +```diff +export const isEntityOwner = createCatalogPermissionRule({ + name: 'IS_ENTITY_OWNER', + description: 'Allow entities owned by the current user', ++ resourceType: RESOURCE_TYPE_CATALOG_ENTITY, + apply: (resource: Entity, claims: string[]) => { + if (!resource.relations) { + return false; + } + + return resource.relations + .filter(relation => relation.type === RELATION_OWNED_BY) + .some(relation => claims.includes(relation.targetRef)); + }, + toQuery: (claims: string[]) => ({ + key: 'relations.ownedBy', + values: claims, + }), +}); +``` diff --git a/.changeset/modern-actors-notice.md b/.changeset/modern-actors-notice.md new file mode 100644 index 0000000000..20dde7f42d --- /dev/null +++ b/.changeset/modern-actors-notice.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +**BREAKING:** Mark CatalogBuilder#addPermissionRules as @alpha. diff --git a/.changeset/sour-cameras-deliver.md b/.changeset/sour-cameras-deliver.md new file mode 100644 index 0000000000..21e23e7833 --- /dev/null +++ b/.changeset/sour-cameras-deliver.md @@ -0,0 +1,10 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Handle changes to @alpha permission-related types. + +- All exported permission rules and conditions now have a `resourceType`. +- `createCatalogConditionalDecision` now expects supplied conditions to have the appropriate `resourceType`. +- `createCatalogPermissionRule` now expects `resourceType` as part of the supplied rule object. +- Introduce new `CatalogPermissionRule` convenience type. diff --git a/.changeset/sour-lobsters-sniff.md b/.changeset/sour-lobsters-sniff.md new file mode 100644 index 0000000000..fb8d1f2076 --- /dev/null +++ b/.changeset/sour-lobsters-sniff.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-node': patch +--- + +Fix signature of permission rule in test suites diff --git a/.changeset/stale-carrots-smile.md b/.changeset/stale-carrots-smile.md new file mode 100644 index 0000000000..20b77dd834 --- /dev/null +++ b/.changeset/stale-carrots-smile.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-permission-common': patch +--- + +Add `isPermission` helper method. diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 0df10cf944..bd99205189 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -25,6 +25,7 @@ import { PermissionRule } from '@backstage/plugin-permission-node'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { Readable } from 'stream'; +import { ResourcePermission } from '@backstage/plugin-permission-common'; import { Router } from 'express'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { TokenManager } from '@backstage/backend-common'; @@ -109,13 +110,8 @@ export class BuiltinKindsEntityProcessor implements CatalogProcessor { export class CatalogBuilder { addEntityPolicy(...policies: EntityPolicy[]): CatalogBuilder; addEntityProvider(...providers: EntityProvider[]): CatalogBuilder; - addPermissionRules( - ...permissionRules: PermissionRule< - Entity, - EntitiesSearchFilter, - unknown[] - >[] - ): void; + // @alpha + addPermissionRules(...permissionRules: CatalogPermissionRule[]): void; addProcessor(...processors: CatalogProcessor[]): CatalogBuilder; build(): Promise<{ processingEngine: CatalogProcessingEngine; @@ -143,23 +139,37 @@ export const catalogConditions: Conditions<{ hasAnnotation: PermissionRule< Entity, EntitiesSearchFilter, + 'catalog-entity', [annotation: string] >; - hasLabel: PermissionRule; + hasLabel: PermissionRule< + Entity, + EntitiesSearchFilter, + 'catalog-entity', + [label: string] + >; hasMetadata: PermissionRule< Entity, EntitiesSearchFilter, + 'catalog-entity', [key: string, value?: string | undefined] >; hasSpec: PermissionRule< Entity, EntitiesSearchFilter, + 'catalog-entity', [key: string, value?: string | undefined] >; - isEntityKind: PermissionRule; + isEntityKind: PermissionRule< + Entity, + EntitiesSearchFilter, + 'catalog-entity', + [kinds: string[]] + >; isEntityOwner: PermissionRule< Entity, EntitiesSearchFilter, + 'catalog-entity', [claims: string[]] >; }>; @@ -173,6 +183,10 @@ export type CatalogEnvironment = { permissions: PermissionAuthorizer; }; +// @alpha +export type CatalogPermissionRule = + PermissionRule; + // @public (undocumented) export interface CatalogProcessingEngine { // (undocumented) @@ -277,14 +291,17 @@ export class CodeOwnersProcessor implements CatalogProcessor { } // @alpha -export const createCatalogPermissionRule: ( - rule: PermissionRule, -) => PermissionRule; +export const createCatalogConditionalDecision: ( + permission: ResourcePermission<'catalog-entity'>, + conditions: PermissionCriteria< + PermissionCondition<'catalog-entity', unknown[]> + >, +) => ConditionalPolicyDecision; // @alpha -export const createCatalogPolicyDecision: ( - conditions: PermissionCriteria>, -) => ConditionalPolicyDecision; +export const createCatalogPermissionRule: ( + rule: PermissionRule, +) => PermissionRule; // @public export function createRandomProcessingInterval(options: { @@ -469,23 +486,37 @@ export const permissionRules: { hasAnnotation: PermissionRule< Entity, EntitiesSearchFilter, + 'catalog-entity', [annotation: string] >; - hasLabel: PermissionRule; + hasLabel: PermissionRule< + Entity, + EntitiesSearchFilter, + 'catalog-entity', + [label: string] + >; hasMetadata: PermissionRule< Entity, EntitiesSearchFilter, + 'catalog-entity', [key: string, value?: string | undefined] >; hasSpec: PermissionRule< Entity, EntitiesSearchFilter, + 'catalog-entity', [key: string, value?: string | undefined] >; - isEntityKind: PermissionRule; + isEntityKind: PermissionRule< + Entity, + EntitiesSearchFilter, + 'catalog-entity', + [kinds: string[]] + >; isEntityOwner: PermissionRule< Entity, EntitiesSearchFilter, + 'catalog-entity', [claims: string[]] >; }; diff --git a/plugins/catalog-backend/src/permissions/conditionExports.ts b/plugins/catalog-backend/src/permissions/conditionExports.ts index 2846c8c3ec..1c1ba70631 100644 --- a/plugins/catalog-backend/src/permissions/conditionExports.ts +++ b/plugins/catalog-backend/src/permissions/conditionExports.ts @@ -18,41 +18,49 @@ import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; import { createConditionExports } from '@backstage/plugin-permission-node'; import { permissionRules } from './rules'; -const conditionExports = createConditionExports({ +const { conditions, createConditionalDecision } = createConditionExports({ pluginId: 'catalog', resourceType: RESOURCE_TYPE_CATALOG_ENTITY, rules: permissionRules, }); /** - * These conditions are used when creating conditional decisions that are returned - * by authorization policies. + * These conditions are used when creating conditional decisions for catalog + * entities that are returned by authorization policies. * * @alpha */ -export const catalogConditions = conditionExports.conditions; +export const catalogConditions = conditions; /** - * `createCatalogPolicyDecision` can be used when authoring policies to create - * conditional decisions. + * `createCatalogConditionalDecision` can be used when authoring policies to + * create conditional decisions. It requires a permission of type + * `ResourcePermission<'catalog-entity'>` to be passed as the first parameter. + * It's recommended that you use the provided `isResourcePermission` and + * `isPermission` helper methods to narrow the type of the permission passed to + * the handle method as shown below. * * ``` * // MyAuthorizationPolicy.ts * ... * import { createCatalogPolicyDecision } from '@backstage/plugin-catalog-backend'; + * import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; * * class MyAuthorizationPolicy implements PermissionPolicy { * async handle(request, user) { * ... * - * return createCatalogPolicyDecision({ - * anyOf: [...insert conditions here...], - * }); - * } + * if (isResourcePermission(request.permission, RESOURCE_TYPE_CATALOG_ENTITY)) { + * return createCatalogConditionalDecision( + * request.permission, + * { anyOf: [...insert conditions here...] } + * ); + * } + * + * ... * } * ``` * * @alpha */ -export const createCatalogPolicyDecision = - conditionExports.createPolicyDecision; +export const createCatalogConditionalDecision = createConditionalDecision; diff --git a/plugins/catalog-backend/src/permissions/index.ts b/plugins/catalog-backend/src/permissions/index.ts index cefc17ed99..19d57de908 100644 --- a/plugins/catalog-backend/src/permissions/index.ts +++ b/plugins/catalog-backend/src/permissions/index.ts @@ -16,6 +16,6 @@ export { catalogConditions, - createCatalogPolicyDecision, + createCatalogConditionalDecision, } from './conditionExports'; export * from './rules'; diff --git a/plugins/catalog-backend/src/permissions/rules/createPropertyRule.ts b/plugins/catalog-backend/src/permissions/rules/createPropertyRule.ts index 27a6033362..3808eced7b 100644 --- a/plugins/catalog-backend/src/permissions/rules/createPropertyRule.ts +++ b/plugins/catalog-backend/src/permissions/rules/createPropertyRule.ts @@ -16,12 +16,14 @@ import { get } from 'lodash'; import { Entity } from '@backstage/catalog-model'; +import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; import { createCatalogPermissionRule } from './util'; export const createPropertyRule = (propertyType: 'metadata' | 'spec') => createCatalogPermissionRule({ name: `HAS_${propertyType.toUpperCase()}`, description: `Allow entities which have the specified ${propertyType} subfield.`, + resourceType: RESOURCE_TYPE_CATALOG_ENTITY, apply: (resource: Entity, key: string, value?: string) => { const foundValue = get(resource[propertyType], key); if (value !== undefined) { diff --git a/plugins/catalog-backend/src/permissions/rules/hasAnnotation.ts b/plugins/catalog-backend/src/permissions/rules/hasAnnotation.ts index c6c5951153..68ca65418d 100644 --- a/plugins/catalog-backend/src/permissions/rules/hasAnnotation.ts +++ b/plugins/catalog-backend/src/permissions/rules/hasAnnotation.ts @@ -15,6 +15,7 @@ */ import { Entity } from '@backstage/catalog-model'; +import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; import { createCatalogPermissionRule } from './util'; /** @@ -27,6 +28,7 @@ export const hasAnnotation = createCatalogPermissionRule({ name: 'HAS_ANNOTATION', description: 'Allow entities which are annotated with the specified annotation', + resourceType: RESOURCE_TYPE_CATALOG_ENTITY, apply: (resource: Entity, annotation: string) => !!resource.metadata.annotations?.hasOwnProperty(annotation), toQuery: (annotation: string) => ({ diff --git a/plugins/catalog-backend/src/permissions/rules/hasLabel.ts b/plugins/catalog-backend/src/permissions/rules/hasLabel.ts index 7296eecd89..9f37cbfb59 100644 --- a/plugins/catalog-backend/src/permissions/rules/hasLabel.ts +++ b/plugins/catalog-backend/src/permissions/rules/hasLabel.ts @@ -15,6 +15,7 @@ */ import { Entity } from '@backstage/catalog-model'; +import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; import { createCatalogPermissionRule } from './util'; /** @@ -25,6 +26,7 @@ import { createCatalogPermissionRule } from './util'; export const hasLabel = createCatalogPermissionRule({ name: 'HAS_LABEL', description: 'Allow entities which have the specified label metadata.', + resourceType: RESOURCE_TYPE_CATALOG_ENTITY, apply: (resource: Entity, label: string) => !!resource.metadata.labels?.hasOwnProperty(label), toQuery: (label: string) => ({ diff --git a/plugins/catalog-backend/src/permissions/rules/index.ts b/plugins/catalog-backend/src/permissions/rules/index.ts index f9d192781e..d3f405621a 100644 --- a/plugins/catalog-backend/src/permissions/rules/index.ts +++ b/plugins/catalog-backend/src/permissions/rules/index.ts @@ -36,4 +36,5 @@ export const permissionRules = { isEntityOwner, }; +export type { CatalogPermissionRule } from './util'; export { createCatalogPermissionRule } from './util'; diff --git a/plugins/catalog-backend/src/permissions/rules/isEntityKind.ts b/plugins/catalog-backend/src/permissions/rules/isEntityKind.ts index c330c903d9..3bd600e8fe 100644 --- a/plugins/catalog-backend/src/permissions/rules/isEntityKind.ts +++ b/plugins/catalog-backend/src/permissions/rules/isEntityKind.ts @@ -14,6 +14,7 @@ * limitations under the License. */ import { Entity } from '@backstage/catalog-model'; +import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; import { EntitiesSearchFilter } from '../../catalog/types'; import { createCatalogPermissionRule } from './util'; @@ -25,6 +26,7 @@ import { createCatalogPermissionRule } from './util'; export const isEntityKind = createCatalogPermissionRule({ name: 'IS_ENTITY_KIND', description: 'Allow entities with the specified kind', + resourceType: RESOURCE_TYPE_CATALOG_ENTITY, apply(resource: Entity, kinds: string[]) { const resourceKind = resource.kind.toLocaleLowerCase('en-US'); return kinds.some(kind => kind.toLocaleLowerCase('en-US') === resourceKind); diff --git a/plugins/catalog-backend/src/permissions/rules/isEntityOwner.ts b/plugins/catalog-backend/src/permissions/rules/isEntityOwner.ts index 23f118abc4..5403da2310 100644 --- a/plugins/catalog-backend/src/permissions/rules/isEntityOwner.ts +++ b/plugins/catalog-backend/src/permissions/rules/isEntityOwner.ts @@ -15,6 +15,7 @@ */ import { Entity, RELATION_OWNED_BY } from '@backstage/catalog-model'; +import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; import { createCatalogPermissionRule } from './util'; /** @@ -26,6 +27,7 @@ import { createCatalogPermissionRule } from './util'; export const isEntityOwner = createCatalogPermissionRule({ name: 'IS_ENTITY_OWNER', description: 'Allow entities owned by the current user', + resourceType: RESOURCE_TYPE_CATALOG_ENTITY, apply: (resource: Entity, claims: string[]) => { if (!resource.relations) { return false; diff --git a/plugins/catalog-backend/src/permissions/rules/util.ts b/plugins/catalog-backend/src/permissions/rules/util.ts index a1316c7fb2..36b351595d 100644 --- a/plugins/catalog-backend/src/permissions/rules/util.ts +++ b/plugins/catalog-backend/src/permissions/rules/util.ts @@ -15,9 +15,23 @@ */ import { Entity } from '@backstage/catalog-model'; -import { makeCreatePermissionRule } from '@backstage/plugin-permission-node'; +import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; +import { + makeCreatePermissionRule, + PermissionRule, +} from '@backstage/plugin-permission-node'; import { EntitiesSearchFilter } from '../../catalog/types'; +/** + * Convenience type for {@link @backstage/plugin-permission-node#PermissionRule} + * instances with the correct resource type, resource, and filter to work with + * the catalog. + * + * @alpha + */ +export type CatalogPermissionRule = + PermissionRule; + /** * Helper function for creating correctly-typed * {@link @backstage/plugin-permission-node#PermissionRule}s for the @@ -27,5 +41,6 @@ import { EntitiesSearchFilter } from '../../catalog/types'; */ export const createCatalogPermissionRule = makeCreatePermissionRule< Entity, - EntitiesSearchFilter + EntitiesSearchFilter, + typeof RESOURCE_TYPE_CATALOG_ENTITY >(); diff --git a/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.test.ts b/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.test.ts index 1f0e5ea644..b29e1121b3 100644 --- a/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/service/AuthorizedEntitiesCatalog.test.ts @@ -14,15 +14,11 @@ * limitations under the License. */ -import { Entity } from '@backstage/catalog-model'; import { NotAllowedError } from '@backstage/errors'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; -import { - createConditionTransformer, - PermissionRule, -} from '@backstage/plugin-permission-node'; -import { EntitiesSearchFilter } from '../catalog/types'; +import { createConditionTransformer } from '@backstage/plugin-permission-node'; import { isEntityKind } from '../permissions/rules/isEntityKind'; +import { CatalogPermissionRule } from '../permissions/rules'; import { AuthorizedEntitiesCatalog } from './AuthorizedEntitiesCatalog'; describe('AuthorizedEntitiesCatalog', () => { @@ -36,9 +32,7 @@ describe('AuthorizedEntitiesCatalog', () => { authorize: jest.fn(), }; - const createCatalog = ( - ...rules: PermissionRule[] - ) => + const createCatalog = (...rules: CatalogPermissionRule[]) => new AuthorizedEntitiesCatalog( fakeCatalog, fakePermissionApi, diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index fb4ed6086f..99d7f0e41a 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -17,7 +17,6 @@ import { PluginDatabaseManager, UrlReader } from '@backstage/backend-common'; import { DefaultNamespaceEntityPolicy, - Entity, EntityPolicies, EntityPolicy, FieldFormatEntityPolicy, @@ -32,7 +31,6 @@ import { ScmIntegrations } from '@backstage/integration'; import { createHash } from 'crypto'; import { Router } from 'express'; import lodash, { keyBy } from 'lodash'; -import { EntitiesSearchFilter } from '../catalog'; import { CatalogProcessor, @@ -77,10 +75,12 @@ import { DefaultCatalogRulesEnforcer } from '../ingestion/CatalogRules'; import { Config } from '@backstage/config'; import { Logger } from 'winston'; import { connectEntityProviders } from '../processing/connectEntityProviders'; -import { permissionRules as catalogPermissionRules } from '../permissions/rules'; +import { + CatalogPermissionRule, + permissionRules as catalogPermissionRules, +} from '../permissions/rules'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { - PermissionRule, createConditionTransformer, createPermissionIntegrationRouter, } from '@backstage/plugin-permission-node'; @@ -135,11 +135,7 @@ export class CatalogBuilder { maxSeconds: 150, }); private locationAnalyzer: LocationAnalyzer | undefined = undefined; - private permissionRules: PermissionRule< - Entity, - EntitiesSearchFilter, - unknown[] - >[]; + private permissionRules: CatalogPermissionRule[]; /** * Creates a catalog builder. @@ -339,14 +335,9 @@ export class CatalogBuilder { * {@link @backstage/plugin-permission-node#PermissionRule}. * * @param permissionRules - Additional permission rules + * @alpha */ - addPermissionRules( - ...permissionRules: PermissionRule< - Entity, - EntitiesSearchFilter, - unknown[] - >[] - ) { + addPermissionRules(...permissionRules: CatalogPermissionRule[]) { this.permissionRules.push(...permissionRules); } diff --git a/plugins/catalog-backend/src/service/createRouter.test.ts b/plugins/catalog-backend/src/service/createRouter.test.ts index 1602d07d28..6def04a11c 100644 --- a/plugins/catalog-backend/src/service/createRouter.test.ts +++ b/plugins/catalog-backend/src/service/createRouter.test.ts @@ -26,7 +26,10 @@ import { LocationInput, LocationService, RefreshService } from './types'; import { basicEntityFilter } from './request'; import { createRouter } from './createRouter'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; -import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; +import { + createPermissionIntegrationRouter, + createPermissionRule, +} from '@backstage/plugin-permission-node'; import { RESOURCE_TYPE_CATALOG_ENTITY } from '@backstage/plugin-catalog-common'; describe('createRouter readonly disabled', () => { @@ -568,12 +571,13 @@ describe('NextRouter permissioning', () => { let app: express.Express; let refreshService: RefreshService; - const fakeRule = { + const fakeRule = createPermissionRule({ name: 'FAKE_RULE', description: 'fake rule', + resourceType: RESOURCE_TYPE_CATALOG_ENTITY, apply: () => true, toQuery: () => ({ key: '', values: [] }), - }; + }); beforeAll(async () => { entitiesCatalog = { @@ -631,7 +635,11 @@ describe('NextRouter permissioning', () => { id: '123', resourceType: 'catalog-entity', resourceRef: 'component:default/spidey-sense', - conditions: { rule: 'FAKE_RULE', params: ['user:default/spiderman'] }, + conditions: { + rule: 'FAKE_RULE', + resourceType: 'catalog-entity', + params: ['user:default/spiderman'], + }, }, ], }; diff --git a/plugins/permission-backend/src/service/PermissionIntegrationClient.test.ts b/plugins/permission-backend/src/service/PermissionIntegrationClient.test.ts index 9981496658..451a6895a9 100644 --- a/plugins/permission-backend/src/service/PermissionIntegrationClient.test.ts +++ b/plugins/permission-backend/src/service/PermissionIntegrationClient.test.ts @@ -25,7 +25,10 @@ import { PermissionCondition, PermissionCriteria, } from '@backstage/plugin-permission-common'; -import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; +import { + createPermissionIntegrationRouter, + createPermissionRule, +} from '@backstage/plugin-permission-node'; import { PermissionIntegrationClient } from './PermissionIntegrationClient'; describe('PermissionIntegrationClient', () => { @@ -35,8 +38,8 @@ describe('PermissionIntegrationClient', () => { const mockConditions: PermissionCriteria = { not: { allOf: [ - { rule: 'RULE_1', params: [] }, - { rule: 'RULE_2', params: ['abc'] }, + { rule: 'RULE_1', resourceType: 'test-resource', params: [] }, + { rule: 'RULE_2', resourceType: 'test-resource', params: ['abc'] }, ], }, }; @@ -272,22 +275,24 @@ describe('PermissionIntegrationClient', () => { id: resourceRef, })), rules: [ - { + createPermissionRule({ name: 'RULE_1', description: 'Test rule 1', + resourceType: 'test-resource', apply: (_resource: any, input: 'yes' | 'no') => input === 'yes', toQuery: () => { throw new Error('Not implemented'); }, - }, - { + }), + createPermissionRule({ name: 'RULE_2', description: 'Test rule 2', + resourceType: 'test-resource', apply: (_resource: any, input: 'yes' | 'no') => input === 'yes', toQuery: () => { throw new Error('Not implemented'); }, - }, + }), ], }), ); @@ -336,7 +341,11 @@ describe('PermissionIntegrationClient', () => { id: '123', resourceRef: 'testResource1', resourceType: 'test-resource', - conditions: { rule: 'RULE_1', params: ['no'] }, + conditions: { + rule: 'RULE_1', + resourceType: 'test-resource', + params: ['no'], + }, }, ]), ).resolves.toEqual([{ id: '123', result: AuthorizeResult.DENY }]); @@ -353,15 +362,33 @@ describe('PermissionIntegrationClient', () => { allOf: [ { allOf: [ - { rule: 'RULE_1', params: ['yes'] }, - { not: { rule: 'RULE_2', params: ['no'] } }, + { + rule: 'RULE_1', + resourceType: 'test-resource', + params: ['yes'], + }, + { + not: { + rule: 'RULE_2', + resourceType: 'test-resource', + params: ['no'], + }, + }, ], }, { not: { allOf: [ - { rule: 'RULE_1', params: ['no'] }, - { rule: 'RULE_2', params: ['yes'] }, + { + rule: 'RULE_1', + resourceType: 'test-resource', + params: ['no'], + }, + { + rule: 'RULE_2', + resourceType: 'test-resource', + params: ['yes'], + }, ], }, }, diff --git a/plugins/permission-common/api-report.md b/plugins/permission-common/api-report.md index 07c1904183..ab0c68470d 100644 --- a/plugins/permission-common/api-report.md +++ b/plugins/permission-common/api-report.md @@ -89,6 +89,12 @@ export function isCreatePermission(permission: Permission): boolean; // @public export function isDeletePermission(permission: Permission): boolean; +// @public +export function isPermission( + permission: Permission, + comparedPermission: T, +): permission is T; + // @public export function isReadPermission(permission: Permission): boolean; @@ -141,7 +147,11 @@ export class PermissionClient implements PermissionAuthorizer { } // @public -export type PermissionCondition = { +export type PermissionCondition< + TResourceType extends string = string, + TParams extends unknown[] = unknown[], +> = { + resourceType: TResourceType; rule: string; params: TParams; }; diff --git a/plugins/permission-common/src/PermissionClient.ts b/plugins/permission-common/src/PermissionClient.ts index 3027234b72..72f6b04567 100644 --- a/plugins/permission-common/src/PermissionClient.ts +++ b/plugins/permission-common/src/PermissionClient.ts @@ -41,6 +41,7 @@ const permissionCriteriaSchema: z.ZodSchema< z .object({ rule: z.string(), + resourceType: z.string(), params: z.array(z.unknown()), }) .strict() diff --git a/plugins/permission-common/src/permissions/util.ts b/plugins/permission-common/src/permissions/util.ts index 2843d97419..1a5ed434a7 100644 --- a/plugins/permission-common/src/permissions/util.ts +++ b/plugins/permission-common/src/permissions/util.ts @@ -16,6 +16,17 @@ import { Permission, ResourcePermission } from '../types'; +/** + * Check if the two parameters are equivalent permissions. + * @public + */ +export function isPermission( + permission: Permission, + comparedPermission: T, +): permission is T { + return permission.name === comparedPermission.name; +} + /** * Check if a given permission is a {@link ResourcePermission}. When * `resourceType` is supplied as the second parameter, also checks if diff --git a/plugins/permission-common/src/types/api.ts b/plugins/permission-common/src/types/api.ts index 66693ccf1b..6aaabf978d 100644 --- a/plugins/permission-common/src/types/api.ts +++ b/plugins/permission-common/src/types/api.ts @@ -98,7 +98,11 @@ export type PolicyDecision = * claims from a identity token. * @public */ -export type PermissionCondition = { +export type PermissionCondition< + TResourceType extends string = string, + TParams extends unknown[] = unknown[], +> = { + resourceType: TResourceType; rule: string; params: TParams; }; diff --git a/plugins/permission-node/api-report.md b/plugins/permission-node/api-report.md index fe4e70abf9..57379dd68b 100644 --- a/plugins/permission-node/api-report.md +++ b/plugins/permission-node/api-report.md @@ -21,6 +21,7 @@ import { PermissionCondition } from '@backstage/plugin-permission-common'; import { PermissionCriteria } from '@backstage/plugin-permission-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { PolicyDecision } from '@backstage/plugin-permission-common'; +import { ResourcePermission } from '@backstage/plugin-permission-common'; import { TokenManager } from '@backstage/backend-common'; // @public @@ -48,14 +49,15 @@ export type ApplyConditionsResponseEntry = export type Condition = TRule extends PermissionRule< any, any, + infer TResourceType, infer TParams > - ? (...params: TParams) => PermissionCondition + ? (...params: TParams) => PermissionCondition : never; // @public export type Conditions< - TRules extends Record>, + TRules extends Record>, > = { [Name in keyof TRules]: Condition; }; @@ -67,39 +69,49 @@ export type ConditionTransformer = ( // @public export const createConditionExports: < + TResourceType extends string, TResource, - TRules extends Record>, + TRules extends Record< + string, + PermissionRule + >, >(options: { pluginId: string; - resourceType: string; + resourceType: TResourceType; rules: TRules; }) => { conditions: Conditions; - createPolicyDecision: ( - conditions: PermissionCriteria, + createConditionalDecision: ( + permission: ResourcePermission, + conditions: PermissionCriteria< + PermissionCondition + >, ) => ConditionalPolicyDecision; }; // @public -export const createConditionFactory: ( - rule: PermissionRule, -) => (...params: TParams) => { - rule: string; - params: TParams; -}; +export const createConditionFactory: < + TResourceType extends string, + TParams extends any[], +>( + rule: PermissionRule, +) => (...params: TParams) => PermissionCondition; // @public export const createConditionTransformer: < TQuery, - TRules extends PermissionRule[], + TRules extends PermissionRule[], >( permissionRules: [...TRules], ) => ConditionTransformer; // @public -export const createPermissionIntegrationRouter: (options: { - resourceType: string; - rules: PermissionRule[]; +export const createPermissionIntegrationRouter: < + TResourceType extends string, + TResource, +>(options: { + resourceType: TResourceType; + rules: PermissionRule, unknown[]>[]; getResources: (resourceRefs: string[]) => Promise<(TResource | undefined)[]>; }) => express.Router; @@ -107,10 +119,11 @@ export const createPermissionIntegrationRouter: (options: { export const createPermissionRule: < TResource, TQuery, + TResourceType extends string, TParams extends unknown[], >( - rule: PermissionRule, -) => PermissionRule; + rule: PermissionRule, +) => PermissionRule; // @alpha export const isAndCriteria: ( @@ -128,11 +141,13 @@ export const isOrCriteria: ( ) => criteria is AnyOfCriteria; // @public -export const makeCreatePermissionRule: () => < - TParams extends unknown[], ->( - rule: PermissionRule, -) => PermissionRule; +export const makeCreatePermissionRule: < + TResource, + TQuery, + TResourceType extends string, +>() => ( + rule: PermissionRule, +) => PermissionRule; // @public export interface PermissionPolicy { @@ -147,10 +162,12 @@ export interface PermissionPolicy { export type PermissionRule< TResource, TQuery, + TResourceType extends string, TParams extends unknown[] = unknown[], > = { name: string; description: string; + resourceType: TResourceType; apply(resource: TResource, ...params: TParams): boolean; toQuery(...params: TParams): PermissionCriteria; }; diff --git a/plugins/permission-node/src/integration/createConditionExports.test.ts b/plugins/permission-node/src/integration/createConditionExports.test.ts index f3585d11ad..54d5652996 100644 --- a/plugins/permission-node/src/integration/createConditionExports.test.ts +++ b/plugins/permission-node/src/integration/createConditionExports.test.ts @@ -14,17 +14,22 @@ * limitations under the License. */ -import { AuthorizeResult } from '@backstage/plugin-permission-common'; +import { + AuthorizeResult, + createPermission, +} from '@backstage/plugin-permission-common'; import { createConditionExports } from './createConditionExports'; +import { createPermissionRule } from './createPermissionRule'; const testIntegration = () => createConditionExports({ pluginId: 'test-plugin', resourceType: 'test-resource', rules: { - testRule1: { + testRule1: createPermissionRule({ name: 'testRule1', description: 'Test rule 1', + resourceType: 'test-resource', apply: jest.fn( (_resource: any, _firstParam: string, _secondParam: number) => true, ), @@ -32,16 +37,17 @@ const testIntegration = () => query: 'testRule1', params: [firstParam, secondParam], })), - }, - testRule2: { + }), + testRule2: createPermissionRule({ name: 'testRule2', description: 'Test rule 2', - apply: jest.fn((_firstParam: object) => false), + resourceType: 'test-resource', + apply: jest.fn((_resource: any, _firstParam: object) => false), toQuery: jest.fn((firstParam: object) => ({ query: 'testRule2', params: [firstParam], })), - }, + }), }, }); @@ -52,11 +58,13 @@ describe('createConditionExports', () => { expect(conditions.testRule1('a', 1)).toEqual({ rule: 'testRule1', + resourceType: 'test-resource', params: ['a', 1], }); expect(conditions.testRule2({ baz: 'quux' })).toEqual({ rule: 'testRule2', + resourceType: 'test-resource', params: [{ baz: 'quux' }], }); }); @@ -64,18 +72,35 @@ describe('createConditionExports', () => { describe('createPolicyDecisions', () => { it('wraps conditions in an object with resourceType and pluginId', () => { - const { createPolicyDecision } = testIntegration(); + const { createConditionalDecision } = testIntegration(); + const testPermission = createPermission({ + name: 'test.permission', + attributes: {}, + resourceType: 'test-resource', + }); expect( - createPolicyDecision({ - allOf: [{ rule: 'testRule1', params: ['a', 1] }], + createConditionalDecision(testPermission, { + allOf: [ + { + rule: 'testRule1', + resourceType: 'test-resource', + params: ['a', 1], + }, + ], }), ).toEqual({ result: AuthorizeResult.CONDITIONAL, pluginId: 'test-plugin', resourceType: 'test-resource', conditions: { - allOf: [{ rule: 'testRule1', params: ['a', 1] }], + allOf: [ + { + rule: 'testRule1', + resourceType: 'test-resource', + params: ['a', 1], + }, + ], }, }); }); diff --git a/plugins/permission-node/src/integration/createConditionExports.ts b/plugins/permission-node/src/integration/createConditionExports.ts index ab88987389..ba34c07fed 100644 --- a/plugins/permission-node/src/integration/createConditionExports.ts +++ b/plugins/permission-node/src/integration/createConditionExports.ts @@ -19,6 +19,7 @@ import { ConditionalPolicyDecision, PermissionCondition, PermissionCriteria, + ResourcePermission, } from '@backstage/plugin-permission-common'; import { PermissionRule } from '../types'; import { createConditionFactory } from './createConditionFactory'; @@ -32,9 +33,10 @@ import { createConditionFactory } from './createConditionFactory'; export type Condition = TRule extends PermissionRule< any, any, + infer TResourceType, infer TParams > - ? (...params: TParams) => PermissionCondition + ? (...params: TParams) => PermissionCondition : never; /** @@ -44,39 +46,44 @@ export type Condition = TRule extends PermissionRule< * @public */ export type Conditions< - TRules extends Record>, + TRules extends Record>, > = { [Name in keyof TRules]: Condition; }; /** - * Creates the recommended condition-related exports for a given plugin based on the built-in - * {@link PermissionRule}s it supports. + * Creates the recommended condition-related exports for a given plugin based on + * the built-in {@link PermissionRule}s it supports. * * @remarks * * The function returns a `conditions` object containing a - * {@link @backstage/plugin-permission-common#PermissionCondition} factory for each of the - * supplied {@link PermissionRule}s, along with a `createConditions` function which builds the - * wrapper object needed to enclose conditions when authoring {@link PermissionPolicy} implementations. + * {@link @backstage/plugin-permission-common#PermissionCondition} factory for + * each of the supplied {@link PermissionRule}s, along with a + * `createConditionalDecision` function which builds the wrapper object needed + * to enclose conditions when authoring {@link PermissionPolicy} + * implementations. * - * Plugin authors should generally call this method with all the built-in {@link PermissionRule}s - * the plugin supports, and export the resulting `conditions` object and `createConditions` - * function so that they can be used by {@link PermissionPolicy} authors. + * Plugin authors should generally call this method with all the built-in + * {@link PermissionRule}s the plugin supports, and export the resulting + * `conditions` object and `createConditionalDecision` function so that they can + * be used by {@link PermissionPolicy} authors. * * @public */ export const createConditionExports = < + TResourceType extends string, TResource, - TRules extends Record>, + TRules extends Record>, >(options: { pluginId: string; - resourceType: string; + resourceType: TResourceType; rules: TRules; }): { conditions: Conditions; - createPolicyDecision: ( - conditions: PermissionCriteria, + createConditionalDecision: ( + permission: ResourcePermission, + conditions: PermissionCriteria>, ) => ConditionalPolicyDecision; } => { const { pluginId, resourceType, rules } = options; @@ -89,7 +96,8 @@ export const createConditionExports = < }), {} as Conditions, ), - createPolicyDecision: ( + createConditionalDecision: ( + _permission: ResourcePermission, conditions: PermissionCriteria, ) => ({ result: AuthorizeResult.CONDITIONAL, diff --git a/plugins/permission-node/src/integration/createConditionFactory.test.ts b/plugins/permission-node/src/integration/createConditionFactory.test.ts index 8dd43f5da6..1941b5ac0b 100644 --- a/plugins/permission-node/src/integration/createConditionFactory.test.ts +++ b/plugins/permission-node/src/integration/createConditionFactory.test.ts @@ -15,14 +15,16 @@ */ import { createConditionFactory } from './createConditionFactory'; +import { createPermissionRule } from './createPermissionRule'; describe('createConditionFactory', () => { - const testRule = { + const testRule = createPermissionRule({ name: 'test-rule', description: 'test-description', + resourceType: 'test-resource', apply: jest.fn(), toQuery: jest.fn(), - }; + }); it('returns a function', () => { expect(createConditionFactory(testRule)).toEqual(expect.any(Function)); @@ -33,6 +35,7 @@ describe('createConditionFactory', () => { const conditionFactory = createConditionFactory(testRule); expect(conditionFactory('a', 'b', 1, 2)).toEqual({ rule: 'test-rule', + resourceType: 'test-resource', params: ['a', 'b', 1, 2], }); }); diff --git a/plugins/permission-node/src/integration/createConditionFactory.ts b/plugins/permission-node/src/integration/createConditionFactory.ts index 84a8dc86a6..15a5b4fd08 100644 --- a/plugins/permission-node/src/integration/createConditionFactory.ts +++ b/plugins/permission-node/src/integration/createConditionFactory.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { PermissionCondition } from '@backstage/plugin-permission-common'; import { PermissionRule } from '../types'; /** @@ -33,8 +34,11 @@ import { PermissionRule } from '../types'; * @public */ export const createConditionFactory = - (rule: PermissionRule) => - (...params: TParams) => ({ + ( + rule: PermissionRule, + ) => + (...params: TParams): PermissionCondition => ({ rule: rule.name, + resourceType: rule.resourceType, params, }); diff --git a/plugins/permission-node/src/integration/createConditionTransformer.test.ts b/plugins/permission-node/src/integration/createConditionTransformer.test.ts index 8a93a4ea27..917449561d 100644 --- a/plugins/permission-node/src/integration/createConditionTransformer.test.ts +++ b/plugins/permission-node/src/integration/createConditionTransformer.test.ts @@ -19,25 +19,28 @@ import { PermissionCriteria, } from '@backstage/plugin-permission-common'; import { createConditionTransformer } from './createConditionTransformer'; +import { createPermissionRule } from './createPermissionRule'; const transformConditions = createConditionTransformer([ - { + createPermissionRule({ name: 'test-rule-1', description: 'Test rule 1', + resourceType: 'test-resource', apply: jest.fn(), toQuery: jest.fn( (firstParam: string, secondParam: number) => `test-rule-1:${firstParam}/${secondParam}`, ), - }, - { + }), + createPermissionRule({ name: 'test-rule-2', description: 'Test rule 2', + resourceType: 'test-resource', apply: jest.fn(), toQuery: jest.fn( (firstParam: object) => `test-rule-2:${JSON.stringify(firstParam)}`, ), - }, + }), ]); describe('createConditionTransformer', () => { @@ -46,18 +49,30 @@ describe('createConditionTransformer', () => { expectedResult: PermissionCriteria; }[] = [ { - conditions: { rule: 'test-rule-1', params: ['abc', 123] }, + conditions: { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['abc', 123], + }, expectedResult: 'test-rule-1:abc/123', }, { - conditions: { rule: 'test-rule-2', params: [{ foo: 0 }] }, + conditions: { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{ foo: 0 }], + }, expectedResult: 'test-rule-2:{"foo":0}', }, { conditions: { anyOf: [ - { rule: 'test-rule-1', params: ['a', 1] }, - { rule: 'test-rule-2', params: [{}] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['a', 1], + }, + { rule: 'test-rule-2', resourceType: 'test-resource', params: [{}] }, ], }, expectedResult: { @@ -67,8 +82,12 @@ describe('createConditionTransformer', () => { { conditions: { allOf: [ - { rule: 'test-rule-1', params: ['a', 1] }, - { rule: 'test-rule-2', params: [{}] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['a', 1], + }, + { rule: 'test-rule-2', resourceType: 'test-resource', params: [{}] }, ], }, expectedResult: { @@ -77,7 +96,11 @@ describe('createConditionTransformer', () => { }, { conditions: { - not: { rule: 'test-rule-2', params: [{}] }, + not: { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{}], + }, }, expectedResult: { not: 'test-rule-2:{}', @@ -88,15 +111,31 @@ describe('createConditionTransformer', () => { allOf: [ { anyOf: [ - { rule: 'test-rule-1', params: ['a', 1] }, - { rule: 'test-rule-2', params: [{}] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['a', 1], + }, + { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{}], + }, ], }, { not: { allOf: [ - { rule: 'test-rule-1', params: ['b', 2] }, - { rule: 'test-rule-2', params: [{ c: 3 }] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['b', 2], + }, + { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{ c: 3 }], + }, ], }, }, @@ -120,15 +159,33 @@ describe('createConditionTransformer', () => { allOf: [ { anyOf: [ - { rule: 'test-rule-1', params: ['a', 1] }, - { rule: 'test-rule-2', params: [{ b: 2 }] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['a', 1], + }, + { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{ b: 2 }], + }, ], }, { not: { allOf: [ - { rule: 'test-rule-1', params: ['c', 3] }, - { not: { rule: 'test-rule-2', params: [{ d: 4 }] } }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['c', 3], + }, + { + not: { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{ d: 4 }], + }, + }, ], }, }, diff --git a/plugins/permission-node/src/integration/createConditionTransformer.ts b/plugins/permission-node/src/integration/createConditionTransformer.ts index ee4224b8bd..112bb30d01 100644 --- a/plugins/permission-node/src/integration/createConditionTransformer.ts +++ b/plugins/permission-node/src/integration/createConditionTransformer.ts @@ -29,7 +29,7 @@ import { const mapConditions = ( criteria: PermissionCriteria, - getRule: (name: string) => PermissionRule, + getRule: (name: string) => PermissionRule, ): PermissionCriteria => { if (isAndCriteria(criteria)) { return { @@ -70,7 +70,7 @@ export type ConditionTransformer = ( */ export const createConditionTransformer = < TQuery, - TRules extends PermissionRule[], + TRules extends PermissionRule[], >( permissionRules: [...TRules], ): ConditionTransformer => { diff --git a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.test.ts b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.test.ts index 6408de46a1..65c43c7f30 100644 --- a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.test.ts +++ b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.test.ts @@ -18,6 +18,7 @@ import { AuthorizeResult } from '@backstage/plugin-permission-common'; import express, { Express, Router } from 'express'; import request, { Response } from 'supertest'; import { createPermissionIntegrationRouter } from './createPermissionIntegrationRouter'; +import { createPermissionRule } from './createPermissionRule'; const mockGetResources: jest.MockedFunction< Parameters[0]['getResources'] @@ -25,21 +26,23 @@ const mockGetResources: jest.MockedFunction< resourceRefs.map(resourceRef => ({ id: resourceRef })), ); -const testRule1 = { +const testRule1 = createPermissionRule({ name: 'test-rule-1', description: 'Test rule 1', + resourceType: 'test-resource', apply: jest.fn( (_resource: any, _firstParam: string, _secondParam: number) => true, ), toQuery: jest.fn(), -}; +}); -const testRule2 = { +const testRule2 = createPermissionRule({ name: 'test-rule-2', description: 'Test rule 2', - apply: jest.fn((_firstParam: object) => false), + resourceType: 'test-resource', + apply: jest.fn((_resource: any, _firstParam: object) => false), toQuery: jest.fn(), -}; +}); describe('createPermissionIntegrationRouter', () => { let app: Express; @@ -65,29 +68,57 @@ describe('createPermissionIntegrationRouter', () => { describe('POST /.well-known/backstage/permissions/apply-conditions', () => { it.each([ - { rule: 'test-rule-1', params: ['abc', 123] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['abc', 123], + }, { anyOf: [ - { rule: 'test-rule-1', params: ['a', 1] }, - { rule: 'test-rule-2', params: [{}] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['a', 1], + }, + { rule: 'test-rule-2', resourceType: 'test-resource', params: [{}] }, ], }, { - not: { rule: 'test-rule-2', params: [{}] }, + not: { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{}], + }, }, { allOf: [ { anyOf: [ - { rule: 'test-rule-1', params: ['a', 1] }, - { rule: 'test-rule-2', params: [{}] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['a', 1], + }, + { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{}], + }, ], }, { not: { allOf: [ - { rule: 'test-rule-1', params: ['b', 2] }, - { rule: 'test-rule-2', params: [{ c: 3 }] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['b', 2], + }, + { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{ c: 3 }], + }, ], }, }, @@ -119,26 +150,52 @@ describe('createPermissionIntegrationRouter', () => { }); it.each([ - { rule: 'test-rule-2', params: [{ foo: 0 }] }, + { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{ foo: 0 }], + }, { allOf: [ - { rule: 'test-rule-1', params: ['a', 1] }, - { rule: 'test-rule-2', params: [{}] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['a', 1], + }, + { rule: 'test-rule-2', resourceType: 'test-resource', params: [{}] }, ], }, { allOf: [ { anyOf: [ - { rule: 'test-rule-1', params: ['a', 1] }, - { rule: 'test-rule-2', params: [{ b: 2 }] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['a', 1], + }, + { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{ b: 2 }], + }, ], }, { not: { allOf: [ - { rule: 'test-rule-1', params: ['c', 3] }, - { not: { rule: 'test-rule-2', params: [{ d: 4 }] } }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: ['c', 3], + }, + { + not: { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [{ d: 4 }], + }, + }, ], }, }, @@ -179,25 +236,45 @@ describe('createPermissionIntegrationRouter', () => { id: '123', resourceRef: 'default:test/resource-1', resourceType: 'test-resource', - conditions: { rule: 'test-rule-1', params: [] }, + conditions: { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: [], + }, }, { id: '234', resourceRef: 'default:test/resource-1', resourceType: 'test-resource', - conditions: { rule: 'test-rule-2', params: [] }, + conditions: { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [], + }, }, { id: '345', resourceRef: 'default:test/resource-2', resourceType: 'test-resource', - conditions: { not: { rule: 'test-rule-1', params: [] } }, + conditions: { + not: { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: [], + }, + }, }, { id: '456', resourceRef: 'default:test/resource-3', resourceType: 'test-resource', - conditions: { not: { rule: 'test-rule-2', params: [] } }, + conditions: { + not: { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [], + }, + }, }, { id: '567', @@ -205,8 +282,16 @@ describe('createPermissionIntegrationRouter', () => { resourceType: 'test-resource', conditions: { anyOf: [ - { rule: 'test-rule-1', params: [] }, - { rule: 'test-rule-2', params: [] }, + { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: [], + }, + { + rule: 'test-rule-2', + resourceType: 'test-resource', + params: [], + }, ], }, }, @@ -248,6 +333,7 @@ describe('createPermissionIntegrationRouter', () => { resourceType: 'test-incorrect-resource-1', conditions: { rule: 'test-rule-1', + resourceType: 'test-incorrect-resource-1', params: [{}], }, }, @@ -257,6 +343,7 @@ describe('createPermissionIntegrationRouter', () => { resourceType: 'test-resource', conditions: { rule: 'test-rule-1', + resourceType: 'test-resource', params: [{}], }, }, @@ -266,6 +353,7 @@ describe('createPermissionIntegrationRouter', () => { resourceType: 'test-incorrect-resource-2', conditions: { rule: 'test-rule-1', + resourceType: 'test-incorrect-resource-2', params: [{}], }, }, @@ -291,7 +379,11 @@ describe('createPermissionIntegrationRouter', () => { id: '123', resourceRef: 'default:test/resource', resourceType: 'test-resource', - conditions: { rule: 'test-rule-1', params: [] }, + conditions: { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: [], + }, }, ], }); @@ -324,19 +416,31 @@ describe('createPermissionIntegrationRouter', () => { id: '123', resourceRef: 'default:test/resource-1', resourceType: 'test-resource', - conditions: { rule: 'test-rule-1', params: [] }, + conditions: { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: [], + }, }, { id: '234', resourceRef: 'default:test/missing-resource', resourceType: 'test-resource', - conditions: { rule: 'test-rule-1', params: [] }, + conditions: { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: [], + }, }, { id: '345', resourceRef: 'default:test/resource-2', resourceType: 'test-resource', - conditions: { rule: 'test-rule-1', params: [] }, + conditions: { + rule: 'test-rule-1', + resourceType: 'test-resource', + params: [], + }, }, ], }); @@ -377,6 +481,17 @@ describe('createPermissionIntegrationRouter', () => { ], }, { items: [{ conditions: { anyOf: [] } }] }, + { + items: [ + { conditions: { rule: 'TEST_RULE', resourceType: 'test-resource' } }, + ], + }, + { items: [{ conditions: { rule: 'TEST_RULE', params: ['foo'] } }] }, + { + items: [ + { conditions: { resourceType: 'test-resource', params: ['foo'] } }, + ], + }, ])(`returns 400 for invalid input %#`, async input => { const response = await request(app) .post('/.well-known/backstage/permissions/apply-conditions') diff --git a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts index b598487062..b4cf4ac08c 100644 --- a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts +++ b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts @@ -44,6 +44,7 @@ const permissionCriteriaSchema: z.ZodSchema< z .object({ rule: z.string(), + resourceType: z.string(), params: z.array(z.unknown()), }) .strict(), @@ -100,10 +101,10 @@ export type ApplyConditionsResponse = { items: ApplyConditionsResponseEntry[]; }; -const applyConditions = ( - criteria: PermissionCriteria, +const applyConditions = ( + criteria: PermissionCriteria>, resource: TResource | undefined, - getRule: (name: string) => PermissionRule, + getRule: (name: string) => PermissionRule, ): boolean => { // If resource was not found, deny. This avoids leaking information from the // apply-conditions API which would allow a user to differentiate between @@ -127,6 +128,14 @@ const applyConditions = ( return getRule(criteria.rule).apply(resource, ...criteria.params); }; +/** + * Prevent use of type parameter from contributing to type inference. + * + * https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-980401795 + * @ignore + */ +type NoInfer = T extends infer S ? S : never; + /** * Create an express Router which provides an authorization route to allow * integration between the permission backend and other Backstage backend @@ -162,9 +171,16 @@ const applyConditions = ( * * @public */ -export const createPermissionIntegrationRouter = (options: { - resourceType: string; - rules: PermissionRule[]; +export const createPermissionIntegrationRouter = < + TResourceType extends string, + TResource, +>(options: { + resourceType: TResourceType; + // Do not infer value of TResourceType from supplied rules. + // instead only consider the resourceType parameter, and + // consider any rules whose resource type does not match + // to be an error. + rules: PermissionRule>[]; getResources: ( resourceRefs: string[], ) => Promise>; diff --git a/plugins/permission-node/src/integration/createPermissionRule.ts b/plugins/permission-node/src/integration/createPermissionRule.ts index f3a0519a70..6673fe76de 100644 --- a/plugins/permission-node/src/integration/createPermissionRule.ts +++ b/plugins/permission-node/src/integration/createPermissionRule.ts @@ -24,9 +24,10 @@ import { PermissionRule } from '../types'; export const createPermissionRule = < TResource, TQuery, + TResourceType extends string, TParams extends unknown[], >( - rule: PermissionRule, + rule: PermissionRule, ) => rule; /** @@ -38,8 +39,8 @@ export const createPermissionRule = < * @public */ export const makeCreatePermissionRule = - () => + () => ( - rule: PermissionRule, + rule: PermissionRule, ) => createPermissionRule(rule); diff --git a/plugins/permission-node/src/integration/util.test.ts b/plugins/permission-node/src/integration/util.test.ts index d27c0a4243..17e27b6028 100644 --- a/plugins/permission-node/src/integration/util.test.ts +++ b/plugins/permission-node/src/integration/util.test.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { createPermissionRule } from './createPermissionRule'; import { createGetRule, isAndCriteria, @@ -25,19 +26,21 @@ describe('permission integration utils', () => { describe('createGetRule', () => { let getRule: ReturnType; - const testRule1 = { + const testRule1 = createPermissionRule({ name: 'test-rule-1', description: 'Test rule 1', + resourceType: 'test-resource', apply: jest.fn(), toQuery: jest.fn(), - }; + }); - const testRule2 = { + const testRule2 = createPermissionRule({ name: 'test-rule-2', description: 'Test rule 2', + resourceType: 'test-resource', apply: jest.fn(), toQuery: jest.fn(), - }; + }); beforeEach(() => { getRule = createGetRule([testRule1, testRule2]); diff --git a/plugins/permission-node/src/integration/util.ts b/plugins/permission-node/src/integration/util.ts index 9102f092c4..68b7fff2b8 100644 --- a/plugins/permission-node/src/integration/util.ts +++ b/plugins/permission-node/src/integration/util.ts @@ -62,11 +62,11 @@ export const isNotCriteria = ( Object.prototype.hasOwnProperty.call(criteria, 'not'); export const createGetRule = ( - rules: PermissionRule[], + rules: PermissionRule[], ) => { const rulesMap = new Map(Object.values(rules).map(rule => [rule.name, rule])); - return (name: string): PermissionRule => { + return (name: string): PermissionRule => { const rule = rulesMap.get(name); if (!rule) { diff --git a/plugins/permission-node/src/types.ts b/plugins/permission-node/src/types.ts index d5035f10dc..66b4a7b22b 100644 --- a/plugins/permission-node/src/types.ts +++ b/plugins/permission-node/src/types.ts @@ -35,10 +35,12 @@ import type { PermissionCriteria } from '@backstage/plugin-permission-common'; export type PermissionRule< TResource, TQuery, + TResourceType extends string, TParams extends unknown[] = unknown[], > = { name: string; description: string; + resourceType: TResourceType; /** * Apply this rule to a resource already loaded from a backing data source. The params are
  • &kDF~tFb&x^Wy0e1 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

  • 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%0A%}}<*L&cedEuBn!#~z8`^F)EFJT*dL2Vr&E5u6I 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