Merge pull request #16652 from lucasguariscobr/aws-sdk-v3

upgrade aws-sdk to v3 for AwsS3UrlReader
This commit is contained in:
Fredrik Adelöw
2023-03-07 11:36:08 +01:00
committed by GitHub
8 changed files with 775 additions and 264 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/backend-common': patch
'@backstage/plugin-catalog-backend-module-aws': patch
---
AwsS3UrlReader upgraded to use aws-sdk v3
+2 -2
View File
@@ -6,7 +6,7 @@
/// <reference types="node" />
/// <reference types="webpack-env" />
import aws from 'aws-sdk';
import { AwsCredentialsManager } from '@backstage/integration-aws-node';
import { AwsS3Integration } from '@backstage/integration';
import { AzureIntegration } from '@backstage/integration';
import { BackendFeature } from '@backstage/backend-plugin-api';
@@ -67,9 +67,9 @@ import { Writable } from 'stream';
// @public
export class AwsS3UrlReader implements UrlReader {
constructor(
credsManager: AwsCredentialsManager,
integration: AwsS3Integration,
deps: {
s3: aws.S3;
treeResponseFactory: ReadTreeResponseFactory;
},
);
+7 -1
View File
@@ -46,6 +46,10 @@
"test:kubernetes": "backstage-cli package test -t KubernetesContainerRunner --no-watch"
},
"dependencies": {
"@aws-sdk/abort-controller": "^3.208.0",
"@aws-sdk/client-s3": "^3.208.0",
"@aws-sdk/credential-providers": "^3.208.0",
"@aws-sdk/types": "^3.208.0",
"@backstage/backend-app-api": "workspace:^",
"@backstage/backend-dev-utils": "workspace:^",
"@backstage/backend-plugin-api": "workspace:^",
@@ -54,6 +58,7 @@
"@backstage/config-loader": "workspace:^",
"@backstage/errors": "workspace:^",
"@backstage/integration": "workspace:^",
"@backstage/integration-aws-node": "workspace:^",
"@backstage/types": "workspace:^",
"@google-cloud/storage": "^6.0.0",
"@keyv/memcache": "^1.3.5",
@@ -67,7 +72,6 @@
"@types/luxon": "^3.0.0",
"@types/webpack-env": "^1.15.2",
"archiver": "^5.0.2",
"aws-sdk": "^2.840.0",
"base64-stream": "^1.0.0",
"compression": "^1.7.4",
"concat-stream": "^2.0.0",
@@ -111,6 +115,7 @@
}
},
"devDependencies": {
"@aws-sdk/util-stream-node": "^3.208.0",
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/archiver": "^5.1.0",
@@ -130,6 +135,7 @@
"@types/tar": "^6.1.1",
"@types/webpack-env": "^1.15.2",
"@types/yauzl": "^2.10.0",
"aws-sdk-client-mock": "^2.0.0",
"aws-sdk-mock": "^5.2.1",
"better-sqlite3": "^8.0.0",
"http-errors": "^2.0.0",
@@ -18,19 +18,25 @@ import { ConfigReader } from '@backstage/config';
import { JsonObject } from '@backstage/types';
import { getVoidLogger } from '../logging';
import { DefaultReadTreeResponseFactory } from './tree';
import { rest } from 'msw';
import { setupServer } from 'msw/node';
import { setupRequestMockHandlers } from '@backstage/backend-test-utils';
import { AwsS3UrlReader, parseUrl } from './AwsS3UrlReader';
import { DEFAULT_REGION, AwsS3UrlReader, parseUrl } from './AwsS3UrlReader';
import {
AwsS3Integration,
readAwsS3IntegrationConfig,
} from '@backstage/integration';
import { DefaultAwsCredentialsManager } from '@backstage/integration-aws-node';
import { UrlReaderPredicateTuple } from './types';
import AWSMock from 'aws-sdk-mock';
import aws from 'aws-sdk';
import path from 'path';
import { NotModifiedError } from '@backstage/errors';
import { mockClient } from 'aws-sdk-client-mock';
import {
S3Client,
ListObjectsV2Command,
ListObjectsV2Output,
GetObjectCommand,
S3ServiceException,
} from '@aws-sdk/client-s3';
import { sdkStreamMixin } from '@aws-sdk/util-stream-node';
import fs from 'fs';
const treeResponseFactory = DefaultReadTreeResponseFactory.create({
config: new ConfigReader({}),
@@ -97,7 +103,7 @@ describe('parseUrl', () => {
).toEqual({
path: 'a/puppy.jpg',
bucket: 'my.bucket-3',
region: '',
region: DEFAULT_REGION,
});
expect(
parseUrl('https://my.bucket-3.my-host.com/a/puppy.jpg', {
@@ -106,7 +112,7 @@ describe('parseUrl', () => {
).toEqual({
path: 'a/puppy.jpg',
bucket: 'my.bucket-3',
region: '',
region: DEFAULT_REGION,
});
expect(
parseUrl('https://ignored.my-host.com/my.bucket-3/a/puppy.jpg', {
@@ -116,14 +122,13 @@ describe('parseUrl', () => {
).toEqual({
path: 'a/puppy.jpg',
bucket: 'my.bucket-3',
region: '',
region: DEFAULT_REGION,
});
});
});
describe('AwsS3UrlReader', () => {
const worker = setupServer();
setupRequestMockHandlers(worker);
const s3Client = mockClient(S3Client);
const createReader = (config: JsonObject): UrlReaderPredicateTuple[] => {
return AwsS3UrlReader.factory({
@@ -232,17 +237,19 @@ describe('AwsS3UrlReader', () => {
});
beforeEach(() => {
worker.use(
rest.get(
'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml',
(_, res, ctx) =>
res(
ctx.status(200),
ctx.set('ETag', '123abc'),
ctx.body('site_name: Test'),
s3Client.reset();
s3Client.on(GetObjectCommand).resolves({
Body: sdkStreamMixin(
fs.createReadStream(
path.resolve(
__dirname,
'__fixtures__/awsS3/awsS3-mock-object.yaml',
),
),
),
);
ETag: '123abc',
});
});
it('returns contents of an object in a bucket', async () => {
@@ -280,17 +287,19 @@ describe('AwsS3UrlReader', () => {
});
beforeEach(() => {
worker.use(
rest.get(
'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml',
(_, res, ctx) =>
res(
ctx.status(200),
ctx.set('ETag', '123abc'),
ctx.body('site_name: Test'),
s3Client.reset();
s3Client.on(GetObjectCommand).resolves({
Body: sdkStreamMixin(
fs.createReadStream(
path.resolve(
__dirname,
'__fixtures__/awsS3/awsS3-mock-object.yaml',
),
),
),
);
ETag: '123abc',
});
});
it('returns contents of an object in a bucket via buffer', async () => {
@@ -340,17 +349,17 @@ describe('AwsS3UrlReader', () => {
});
beforeEach(() => {
worker.use(
rest.get(
'http://localhost:4566/test-bucket/awsS3-mock-object.yaml',
(_, res, ctx) =>
res(
ctx.status(200),
ctx.set('ETag', '123abc'),
ctx.body('site_name: Test'),
s3Client.on(GetObjectCommand).resolves({
Body: sdkStreamMixin(
fs.createReadStream(
path.resolve(
__dirname,
'__fixtures__/awsS3/awsS3-mock-object.yaml',
),
),
),
);
ETag: '123abc',
});
});
it('returns contents of an object in a bucket via buffer', async () => {
@@ -377,12 +386,13 @@ describe('AwsS3UrlReader', () => {
});
beforeEach(() => {
worker.use(
rest.get(
'https://test-bucket.s3.amazonaws.com/awsS3-mock-object.yaml',
(_, res, ctx) => res(ctx.status(304)),
),
);
s3Client.reset();
const t = new S3ServiceException({
name: '304',
$fault: 'client',
$metadata: { httpStatusCode: 304 },
});
s3Client.on(GetObjectCommand).rejects(t);
});
it('returns contents of an object in a bucket', async () => {
@@ -400,44 +410,43 @@ describe('AwsS3UrlReader', () => {
describe('readTree', () => {
let awsS3UrlReader: AwsS3UrlReader;
beforeAll(() => {
const object: aws.S3.Types.Object = {
beforeEach(() => {
s3Client.reset();
const object: Object = {
Key: 'awsS3-mock-object.yaml',
};
const objectList: aws.S3.ObjectList = [object];
const output: aws.S3.Types.ListObjectsV2Output = {
const objectList: Object[] = [object];
const output: ListObjectsV2Output = {
Contents: objectList,
};
AWSMock.setSDKInstance(aws);
AWSMock.mock('S3', 'listObjectsV2', output);
s3Client.on(ListObjectsV2Command).resolves(output);
AWSMock.mock(
'S3',
'getObject',
Buffer.from(
require('fs').readFileSync(
s3Client.on(GetObjectCommand).resolves({
Body: sdkStreamMixin(
fs.createReadStream(
path.resolve(
__dirname,
'__fixtures__/awsS3/awsS3-mock-object.yaml',
),
),
),
);
});
const config = new ConfigReader({
host: '.amazonaws.com',
accessKeyId: 'fake-access-key',
secretAccessKey: 'fake-secret-key',
});
const credsManager = DefaultAwsCredentialsManager.fromConfig(config);
const s3 = new aws.S3();
awsS3UrlReader = new AwsS3UrlReader(
new AwsS3Integration(
readAwsS3IntegrationConfig(
new ConfigReader({
host: '.amazonaws.com',
accessKeyId: 'fake-access-key',
secretAccessKey: 'fake-secret-key',
}),
),
),
{ s3, treeResponseFactory },
credsManager,
new AwsS3Integration(readAwsS3IntegrationConfig(config)),
{ treeResponseFactory },
);
});
@@ -14,10 +14,6 @@
* limitations under the License.
*/
// note: We do the import like this so that we don't get issues destructuring
// and it not being mocked by the aws-sdk-mock package which is unfortunate.
import aws from 'aws-sdk';
import { CredentialsOptions } from 'aws-sdk/lib/credentials';
import {
ReaderFactory,
ReadTreeOptions,
@@ -28,16 +24,29 @@ import {
SearchResponse,
UrlReader,
} from './types';
import {
AwsCredentialsManager,
DefaultAwsCredentialsManager,
} from '@backstage/integration-aws-node';
import {
AwsS3Integration,
ScmIntegrations,
AwsS3IntegrationConfig,
} from '@backstage/integration';
import { ForwardedError, NotModifiedError } from '@backstage/errors';
import { ListObjectsV2Output, ObjectList } from 'aws-sdk/clients/s3';
import { fromTemporaryCredentials } from '@aws-sdk/credential-providers';
import { AwsCredentialIdentityProvider } from '@aws-sdk/types';
import {
S3Client,
ListObjectsV2Command,
ListObjectsV2CommandOutput,
GetObjectCommand,
} from '@aws-sdk/client-s3';
import { AbortController } from '@aws-sdk/abort-controller';
import { ReadUrlResponseFactory } from './ReadUrlResponseFactory';
import { Readable } from 'stream';
const DEFAULT_REGION = 'us-east-1';
export const DEFAULT_REGION = 'us-east-1';
/**
* Path style URLs: https://s3.(region).amazonaws.com/(bucket)/(key)
@@ -105,14 +114,14 @@ export function parseUrl(
return {
path: pathname.substring(slashIndex + 1),
bucket: pathname.substring(0, slashIndex),
region: '',
region: DEFAULT_REGION,
};
}
return {
path: pathname,
bucket: host.substring(0, host.length - config.host.length - 1),
region: '',
region: DEFAULT_REGION,
};
}
@@ -124,18 +133,10 @@ export function parseUrl(
export class AwsS3UrlReader implements UrlReader {
static factory: ReaderFactory = ({ config, treeResponseFactory }) => {
const integrations = ScmIntegrations.fromConfig(config);
const credsManager = DefaultAwsCredentialsManager.fromConfig(config);
return integrations.awsS3.list().map(integration => {
const credentials = AwsS3UrlReader.buildCredentials(integration);
const s3 = new aws.S3({
apiVersion: '2006-03-01',
credentials,
endpoint: integration.config.endpoint,
s3ForcePathStyle: integration.config.s3ForcePathStyle,
});
const reader = new AwsS3UrlReader(integration, {
s3,
const reader = new AwsS3UrlReader(credsManager, integration, {
treeResponseFactory,
});
const predicate = (url: URL) =>
@@ -145,9 +146,9 @@ export class AwsS3UrlReader implements UrlReader {
};
constructor(
private readonly credsManager: AwsCredentialsManager,
private readonly integration: AwsS3Integration,
private readonly deps: {
s3: aws.S3;
treeResponseFactory: ReadTreeResponseFactory;
},
) {}
@@ -156,39 +157,93 @@ export class AwsS3UrlReader implements UrlReader {
* If accessKeyId and secretAccessKey are missing, the standard credentials provider chain will be used:
* https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html
*/
private static buildCredentials(
private static buildStaticCredentials(
accessKeyId: string,
secretAccessKey: string,
): AwsCredentialIdentityProvider {
return async () => {
return {
accessKeyId,
secretAccessKey,
};
};
}
private static async buildCredentials(
credsManager: AwsCredentialsManager,
region: string,
integration?: AwsS3Integration,
): aws.Credentials | CredentialsOptions | undefined {
): Promise<AwsCredentialIdentityProvider> {
// Fall back to the default credential chain if neither account ID
// nor explicit credentials are provided
if (!integration) {
return undefined;
return (await credsManager.getCredentialProvider()).sdkCredentialProvider;
}
const accessKeyId = integration.config.accessKeyId;
const secretAccessKey = integration.config.secretAccessKey;
let explicitCredentials: aws.Credentials | undefined;
let explicitCredentials: AwsCredentialIdentityProvider;
if (accessKeyId && secretAccessKey) {
explicitCredentials = new aws.Credentials({
explicitCredentials = AwsS3UrlReader.buildStaticCredentials(
accessKeyId,
secretAccessKey,
});
);
} else {
explicitCredentials = (await credsManager.getCredentialProvider())
.sdkCredentialProvider;
}
const roleArn = integration.config.roleArn;
if (roleArn) {
return new aws.ChainableTemporaryCredentials({
return fromTemporaryCredentials({
masterCredentials: explicitCredentials,
params: {
RoleSessionName: 'backstage-aws-s3-url-reader',
RoleArn: roleArn,
ExternalId: integration.config.externalId,
},
clientConfig: { region },
});
}
return explicitCredentials;
}
private async buildS3Client(
credsManager: AwsCredentialsManager,
region: string,
integration: AwsS3Integration,
): Promise<S3Client> {
const credentials = await AwsS3UrlReader.buildCredentials(
credsManager,
region,
integration,
);
const s3 = new S3Client({
region: region,
credentials: credentials,
endpoint: integration.config.endpoint,
forcePathStyle: integration.config.s3ForcePathStyle,
});
return s3;
}
private async retrieveS3ObjectData(stream: Readable): Promise<Readable> {
return new Promise((resolve, reject) => {
try {
const chunks: any[] = [];
stream.on('data', chunk => chunks.push(chunk));
stream.on('error', (e: Error) =>
reject(new ForwardedError('Unable to read stream', e)),
);
stream.on('end', () => resolve(Readable.from(Buffer.concat(chunks))));
} catch (e) {
throw new ForwardedError('Unable to parse the response data', e);
}
});
}
async read(url: string): Promise<Buffer> {
const response = await this.readUrl(url);
return response.buffer();
@@ -200,7 +255,12 @@ export class AwsS3UrlReader implements UrlReader {
): Promise<ReadUrlResponse> {
try {
const { path, bucket, region } = parseUrl(url, this.integration.config);
aws.config.update({ region: region });
const s3Client = await this.buildS3Client(
this.credsManager,
region,
this.integration,
);
const abortController = new AbortController();
let params;
if (options?.etag) {
@@ -215,44 +275,22 @@ export class AwsS3UrlReader implements UrlReader {
Key: path,
};
}
const request = this.deps.s3.getObject(params);
options?.signal?.addEventListener('abort', () => request.abort());
// Since we're consuming the read stream we need to consume headers and errors via events.
const etagPromise = new Promise<string | undefined>((resolve, reject) => {
request.on('httpHeaders', (status, headers) => {
if (status < 400) {
if (status === 200) {
resolve(headers.etag);
} else if (status !== 304 /* not modified */) {
reject(
new Error(
`S3 readUrl request received unexpected status '${status}' in response`,
),
);
}
}
});
request.on('error', error => reject(error));
request.on('complete', () =>
reject(
new Error('S3 readUrl request completed without receiving headers'),
),
);
options?.signal?.addEventListener('abort', () => abortController.abort());
const getObjectCommand = new GetObjectCommand(params);
const response = await s3Client.send(getObjectCommand, {
abortSignal: abortController.signal,
});
const stream = request.createReadStream();
stream.on('error', () => {
// The AWS SDK forwards request errors to the stream, so we need to
// ignore those errors here or the process will crash.
});
const s3ObjectData = await this.retrieveS3ObjectData(
response.Body as Readable,
);
const etag = response.ETag;
return ReadUrlResponseFactory.fromReadable(stream, {
etag: await etagPromise,
return ReadUrlResponseFactory.fromReadable(s3ObjectData, {
etag: etag,
});
} catch (e) {
if (e.statusCode === 304) {
if (e.$metadata && e.$metadata.httpStatusCode === 304) {
throw new NotModifiedError();
}
@@ -266,35 +304,49 @@ export class AwsS3UrlReader implements UrlReader {
): Promise<ReadTreeResponse> {
try {
const { path, bucket, region } = parseUrl(url, this.integration.config);
const allObjects: ObjectList = [];
const s3Client = await this.buildS3Client(
this.credsManager,
region,
this.integration,
);
const abortController = new AbortController();
const allObjects: String[] = [];
const responses = [];
let continuationToken: string | undefined;
let output: ListObjectsV2Output;
let output: ListObjectsV2CommandOutput;
do {
aws.config.update({ region: region });
const request = this.deps.s3.listObjectsV2({
const listObjectsV2Command = new ListObjectsV2Command({
Bucket: bucket,
ContinuationToken: continuationToken,
Prefix: path,
});
options?.signal?.addEventListener('abort', () => request.abort());
output = await request.promise();
options?.signal?.addEventListener('abort', () =>
abortController.abort(),
);
output = await s3Client.send(listObjectsV2Command, {
abortSignal: abortController.signal,
});
if (output.Contents) {
output.Contents.forEach(contents => {
allObjects.push(contents);
allObjects.push(contents.Key!);
});
}
continuationToken = output.NextContinuationToken;
} while (continuationToken);
for (let i = 0; i < allObjects.length; i++) {
const object = this.deps.s3.getObject({
const getObjectCommand = new GetObjectCommand({
Bucket: bucket,
Key: String(allObjects[i].Key),
Key: String(allObjects[i]),
});
const response = await s3Client.send(getObjectCommand);
const s3ObjectData = await this.retrieveS3ObjectData(
response.Body as Readable,
);
responses.push({
data: object.createReadStream(),
path: String(allObjects[i].Key),
data: s3ObjectData,
path: String(allObjects[i]),
});
}
@@ -45,6 +45,7 @@
"clean": "backstage-cli package clean"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.208.0",
"@backstage/backend-common": "workspace:^",
"@backstage/backend-plugin-api": "workspace:^",
"@backstage/backend-tasks": "workspace:^",
@@ -64,9 +65,11 @@
"winston": "^3.2.1"
},
"devDependencies": {
"@aws-sdk/util-stream-node": "^3.208.0",
"@backstage/backend-test-utils": "workspace:^",
"@backstage/cli": "workspace:^",
"@types/lodash": "^4.14.151",
"aws-sdk-client-mock": "^2.0.0",
"aws-sdk-mock": "^5.2.1",
"luxon": "^3.0.0",
"yaml": "^2.0.0"
@@ -22,29 +22,26 @@ import {
CatalogProcessorResult,
processingResult,
} from '@backstage/plugin-catalog-backend';
import AWSMock from 'aws-sdk-mock';
import aws from 'aws-sdk';
import {
S3Client,
ListObjectsV2Command,
ListObjectsV2Output,
GetObjectCommand,
} from '@aws-sdk/client-s3';
import { mockClient } from 'aws-sdk-client-mock';
import { sdkStreamMixin } from '@aws-sdk/util-stream-node';
import fs from 'fs';
import path from 'path';
import YAML from 'yaml';
AWSMock.setSDKInstance(aws);
const object: aws.S3.Types.Object = {
const s3Client = mockClient(S3Client);
const object: Object = {
Key: 'awsS3-mock-object.txt',
};
const objectList: aws.S3.ObjectList = [object];
const output: aws.S3.Types.ListObjectsV2Output = {
const objectList: Object[] = [object];
const output: ListObjectsV2Output = {
Contents: objectList,
};
AWSMock.mock('S3', 'listObjectsV2', output);
AWSMock.mock(
'S3',
'getObject',
Buffer.from(
require('fs').readFileSync(
path.resolve(__dirname, '__fixtures__/awsS3-mock-object.txt'),
),
),
);
const logger = getVoidLogger();
const reader = UrlReaders.default({
@@ -61,6 +58,18 @@ describe('readLocation', () => {
target: 'https://testbucket.s3.us-east-2.amazonaws.com',
};
beforeEach(() => {
s3Client.reset();
s3Client.on(ListObjectsV2Command).resolves(output);
s3Client.on(GetObjectCommand).resolves({
Body: sdkStreamMixin(
fs.createReadStream(
path.resolve(__dirname, '__fixtures__/awsS3-mock-object.txt'),
),
),
});
});
it('should load from url', async () => {
const generated = (await new Promise<CatalogProcessorResult>(emit =>
processor.readLocation(
+532 -106
View File
@@ -373,7 +373,7 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/abort-controller@npm:3.272.0":
"@aws-sdk/abort-controller@npm:3.272.0, @aws-sdk/abort-controller@npm:^3.208.0":
version: 3.272.0
resolution: "@aws-sdk/abort-controller@npm:3.272.0"
dependencies:
@@ -402,108 +402,108 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/client-cognito-identity@npm:3.276.0":
version: 3.276.0
resolution: "@aws-sdk/client-cognito-identity@npm:3.276.0"
"@aws-sdk/client-cognito-identity@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/client-cognito-identity@npm:3.282.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
"@aws-sdk/client-sts": 3.276.0
"@aws-sdk/config-resolver": 3.272.0
"@aws-sdk/credential-provider-node": 3.272.0
"@aws-sdk/fetch-http-handler": 3.272.0
"@aws-sdk/client-sts": 3.282.0
"@aws-sdk/config-resolver": 3.282.0
"@aws-sdk/credential-provider-node": 3.282.0
"@aws-sdk/fetch-http-handler": 3.282.0
"@aws-sdk/hash-node": 3.272.0
"@aws-sdk/invalid-dependency": 3.272.0
"@aws-sdk/middleware-content-length": 3.272.0
"@aws-sdk/middleware-endpoint": 3.272.0
"@aws-sdk/middleware-host-header": 3.272.0
"@aws-sdk/middleware-content-length": 3.282.0
"@aws-sdk/middleware-endpoint": 3.282.0
"@aws-sdk/middleware-host-header": 3.282.0
"@aws-sdk/middleware-logger": 3.272.0
"@aws-sdk/middleware-recursion-detection": 3.272.0
"@aws-sdk/middleware-retry": 3.272.0
"@aws-sdk/middleware-recursion-detection": 3.282.0
"@aws-sdk/middleware-retry": 3.282.0
"@aws-sdk/middleware-serde": 3.272.0
"@aws-sdk/middleware-signing": 3.272.0
"@aws-sdk/middleware-signing": 3.282.0
"@aws-sdk/middleware-stack": 3.272.0
"@aws-sdk/middleware-user-agent": 3.272.0
"@aws-sdk/middleware-user-agent": 3.282.0
"@aws-sdk/node-config-provider": 3.272.0
"@aws-sdk/node-http-handler": 3.272.0
"@aws-sdk/protocol-http": 3.272.0
"@aws-sdk/smithy-client": 3.272.0
"@aws-sdk/node-http-handler": 3.282.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/smithy-client": 3.279.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/url-parser": 3.272.0
"@aws-sdk/util-base64": 3.208.0
"@aws-sdk/util-body-length-browser": 3.188.0
"@aws-sdk/util-body-length-node": 3.208.0
"@aws-sdk/util-defaults-mode-browser": 3.272.0
"@aws-sdk/util-defaults-mode-node": 3.272.0
"@aws-sdk/util-defaults-mode-browser": 3.279.0
"@aws-sdk/util-defaults-mode-node": 3.282.0
"@aws-sdk/util-endpoints": 3.272.0
"@aws-sdk/util-retry": 3.272.0
"@aws-sdk/util-user-agent-browser": 3.272.0
"@aws-sdk/util-user-agent-node": 3.272.0
"@aws-sdk/util-user-agent-browser": 3.282.0
"@aws-sdk/util-user-agent-node": 3.282.0
"@aws-sdk/util-utf8": 3.254.0
tslib: ^2.3.1
checksum: ff79c1c727d956e03510307b001c24534d522b327871b2b0a1d39120e6d6717e17d7b9c2b7a6d28c3e5c3f41cd8ff28e5150ddd1fda9bff0c239fdfef0a78e00
checksum: 9f7790e26dd3d7b0316105dd40092736526f1f6a11b814fcc95736ade3fe40058fb93f1dc2558f1b54b7871908247852e314cb1a892109e6294958eeff1d4439
languageName: node
linkType: hard
"@aws-sdk/client-s3@npm:^3.208.0":
version: 3.276.0
resolution: "@aws-sdk/client-s3@npm:3.276.0"
version: 3.282.0
resolution: "@aws-sdk/client-s3@npm:3.282.0"
dependencies:
"@aws-crypto/sha1-browser": 3.0.0
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
"@aws-sdk/client-sts": 3.276.0
"@aws-sdk/config-resolver": 3.272.0
"@aws-sdk/credential-provider-node": 3.272.0
"@aws-sdk/client-sts": 3.282.0
"@aws-sdk/config-resolver": 3.282.0
"@aws-sdk/credential-provider-node": 3.282.0
"@aws-sdk/eventstream-serde-browser": 3.272.0
"@aws-sdk/eventstream-serde-config-resolver": 3.272.0
"@aws-sdk/eventstream-serde-node": 3.272.0
"@aws-sdk/fetch-http-handler": 3.272.0
"@aws-sdk/fetch-http-handler": 3.282.0
"@aws-sdk/hash-blob-browser": 3.272.0
"@aws-sdk/hash-node": 3.272.0
"@aws-sdk/hash-stream-node": 3.272.0
"@aws-sdk/invalid-dependency": 3.272.0
"@aws-sdk/md5-js": 3.272.0
"@aws-sdk/middleware-bucket-endpoint": 3.272.0
"@aws-sdk/middleware-content-length": 3.272.0
"@aws-sdk/middleware-endpoint": 3.272.0
"@aws-sdk/middleware-expect-continue": 3.272.0
"@aws-sdk/middleware-flexible-checksums": 3.272.0
"@aws-sdk/middleware-host-header": 3.272.0
"@aws-sdk/middleware-bucket-endpoint": 3.282.0
"@aws-sdk/middleware-content-length": 3.282.0
"@aws-sdk/middleware-endpoint": 3.282.0
"@aws-sdk/middleware-expect-continue": 3.282.0
"@aws-sdk/middleware-flexible-checksums": 3.282.0
"@aws-sdk/middleware-host-header": 3.282.0
"@aws-sdk/middleware-location-constraint": 3.272.0
"@aws-sdk/middleware-logger": 3.272.0
"@aws-sdk/middleware-recursion-detection": 3.272.0
"@aws-sdk/middleware-retry": 3.272.0
"@aws-sdk/middleware-sdk-s3": 3.272.0
"@aws-sdk/middleware-recursion-detection": 3.282.0
"@aws-sdk/middleware-retry": 3.282.0
"@aws-sdk/middleware-sdk-s3": 3.282.0
"@aws-sdk/middleware-serde": 3.272.0
"@aws-sdk/middleware-signing": 3.272.0
"@aws-sdk/middleware-signing": 3.282.0
"@aws-sdk/middleware-ssec": 3.272.0
"@aws-sdk/middleware-stack": 3.272.0
"@aws-sdk/middleware-user-agent": 3.272.0
"@aws-sdk/middleware-user-agent": 3.282.0
"@aws-sdk/node-config-provider": 3.272.0
"@aws-sdk/node-http-handler": 3.272.0
"@aws-sdk/protocol-http": 3.272.0
"@aws-sdk/signature-v4-multi-region": 3.272.0
"@aws-sdk/smithy-client": 3.272.0
"@aws-sdk/node-http-handler": 3.282.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/signature-v4-multi-region": 3.282.0
"@aws-sdk/smithy-client": 3.279.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/url-parser": 3.272.0
"@aws-sdk/util-base64": 3.208.0
"@aws-sdk/util-body-length-browser": 3.188.0
"@aws-sdk/util-body-length-node": 3.208.0
"@aws-sdk/util-defaults-mode-browser": 3.272.0
"@aws-sdk/util-defaults-mode-node": 3.272.0
"@aws-sdk/util-defaults-mode-browser": 3.279.0
"@aws-sdk/util-defaults-mode-node": 3.282.0
"@aws-sdk/util-endpoints": 3.272.0
"@aws-sdk/util-retry": 3.272.0
"@aws-sdk/util-stream-browser": 3.272.0
"@aws-sdk/util-stream-node": 3.272.0
"@aws-sdk/util-user-agent-browser": 3.272.0
"@aws-sdk/util-user-agent-node": 3.272.0
"@aws-sdk/util-stream-browser": 3.282.0
"@aws-sdk/util-stream-node": 3.282.0
"@aws-sdk/util-user-agent-browser": 3.282.0
"@aws-sdk/util-user-agent-node": 3.282.0
"@aws-sdk/util-utf8": 3.254.0
"@aws-sdk/util-waiter": 3.272.0
"@aws-sdk/xml-builder": 3.201.0
fast-xml-parser: 4.1.2
tslib: ^2.3.1
checksum: f7f475b92c0cff800536fb910bb6ffefcee6e650208f1791ea64c95bcbb6c63ef7a55e3f72af44e2e730a53865857ac4b974f00cb7da1e369d742cc95e33f02a
checksum: 4f0a1d9ddad89eb71da6f39c210c451461d570d11bc394c6b3d7af139e3ea077bed88fee56fae8318182e7a26464d31119620f191f0d552b51125b9f6ddffe0b
languageName: node
linkType: hard
@@ -593,6 +593,46 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/client-sso-oidc@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/client-sso-oidc@npm:3.282.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
"@aws-sdk/config-resolver": 3.282.0
"@aws-sdk/fetch-http-handler": 3.282.0
"@aws-sdk/hash-node": 3.272.0
"@aws-sdk/invalid-dependency": 3.272.0
"@aws-sdk/middleware-content-length": 3.282.0
"@aws-sdk/middleware-endpoint": 3.282.0
"@aws-sdk/middleware-host-header": 3.282.0
"@aws-sdk/middleware-logger": 3.272.0
"@aws-sdk/middleware-recursion-detection": 3.282.0
"@aws-sdk/middleware-retry": 3.282.0
"@aws-sdk/middleware-serde": 3.272.0
"@aws-sdk/middleware-stack": 3.272.0
"@aws-sdk/middleware-user-agent": 3.282.0
"@aws-sdk/node-config-provider": 3.272.0
"@aws-sdk/node-http-handler": 3.282.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/smithy-client": 3.279.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/url-parser": 3.272.0
"@aws-sdk/util-base64": 3.208.0
"@aws-sdk/util-body-length-browser": 3.188.0
"@aws-sdk/util-body-length-node": 3.208.0
"@aws-sdk/util-defaults-mode-browser": 3.279.0
"@aws-sdk/util-defaults-mode-node": 3.282.0
"@aws-sdk/util-endpoints": 3.272.0
"@aws-sdk/util-retry": 3.272.0
"@aws-sdk/util-user-agent-browser": 3.282.0
"@aws-sdk/util-user-agent-node": 3.282.0
"@aws-sdk/util-utf8": 3.254.0
tslib: ^2.3.1
checksum: 4b7d40614d5379e30ce800acd60d6c04751f2a1e347474925d74fc4b9bdf9529132fd2e40933ae2fba5ef65569d55387ea80ca5312d810a868826276296b18a4
languageName: node
linkType: hard
"@aws-sdk/client-sso@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/client-sso@npm:3.272.0"
@@ -633,7 +673,47 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/client-sts@npm:3.276.0, @aws-sdk/client-sts@npm:^3.208.0":
"@aws-sdk/client-sso@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/client-sso@npm:3.282.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
"@aws-sdk/config-resolver": 3.282.0
"@aws-sdk/fetch-http-handler": 3.282.0
"@aws-sdk/hash-node": 3.272.0
"@aws-sdk/invalid-dependency": 3.272.0
"@aws-sdk/middleware-content-length": 3.282.0
"@aws-sdk/middleware-endpoint": 3.282.0
"@aws-sdk/middleware-host-header": 3.282.0
"@aws-sdk/middleware-logger": 3.272.0
"@aws-sdk/middleware-recursion-detection": 3.282.0
"@aws-sdk/middleware-retry": 3.282.0
"@aws-sdk/middleware-serde": 3.272.0
"@aws-sdk/middleware-stack": 3.272.0
"@aws-sdk/middleware-user-agent": 3.282.0
"@aws-sdk/node-config-provider": 3.272.0
"@aws-sdk/node-http-handler": 3.282.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/smithy-client": 3.279.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/url-parser": 3.272.0
"@aws-sdk/util-base64": 3.208.0
"@aws-sdk/util-body-length-browser": 3.188.0
"@aws-sdk/util-body-length-node": 3.208.0
"@aws-sdk/util-defaults-mode-browser": 3.279.0
"@aws-sdk/util-defaults-mode-node": 3.282.0
"@aws-sdk/util-endpoints": 3.272.0
"@aws-sdk/util-retry": 3.272.0
"@aws-sdk/util-user-agent-browser": 3.282.0
"@aws-sdk/util-user-agent-node": 3.282.0
"@aws-sdk/util-utf8": 3.254.0
tslib: ^2.3.1
checksum: e227d6c3dfcb4c0ec8c2a42ba281bca82dc6134ec69e6af6901892567d729be7f4b361cd0b70e18d85117e29f52aa75affc8e91fef1eb8c024f577897480085f
languageName: node
linkType: hard
"@aws-sdk/client-sts@npm:3.276.0":
version: 3.276.0
resolution: "@aws-sdk/client-sts@npm:3.276.0"
dependencies:
@@ -677,6 +757,50 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/client-sts@npm:3.282.0, @aws-sdk/client-sts@npm:^3.208.0":
version: 3.282.0
resolution: "@aws-sdk/client-sts@npm:3.282.0"
dependencies:
"@aws-crypto/sha256-browser": 3.0.0
"@aws-crypto/sha256-js": 3.0.0
"@aws-sdk/config-resolver": 3.282.0
"@aws-sdk/credential-provider-node": 3.282.0
"@aws-sdk/fetch-http-handler": 3.282.0
"@aws-sdk/hash-node": 3.272.0
"@aws-sdk/invalid-dependency": 3.272.0
"@aws-sdk/middleware-content-length": 3.282.0
"@aws-sdk/middleware-endpoint": 3.282.0
"@aws-sdk/middleware-host-header": 3.282.0
"@aws-sdk/middleware-logger": 3.272.0
"@aws-sdk/middleware-recursion-detection": 3.282.0
"@aws-sdk/middleware-retry": 3.282.0
"@aws-sdk/middleware-sdk-sts": 3.282.0
"@aws-sdk/middleware-serde": 3.272.0
"@aws-sdk/middleware-signing": 3.282.0
"@aws-sdk/middleware-stack": 3.272.0
"@aws-sdk/middleware-user-agent": 3.282.0
"@aws-sdk/node-config-provider": 3.272.0
"@aws-sdk/node-http-handler": 3.282.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/smithy-client": 3.279.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/url-parser": 3.272.0
"@aws-sdk/util-base64": 3.208.0
"@aws-sdk/util-body-length-browser": 3.188.0
"@aws-sdk/util-body-length-node": 3.208.0
"@aws-sdk/util-defaults-mode-browser": 3.279.0
"@aws-sdk/util-defaults-mode-node": 3.282.0
"@aws-sdk/util-endpoints": 3.272.0
"@aws-sdk/util-retry": 3.272.0
"@aws-sdk/util-user-agent-browser": 3.282.0
"@aws-sdk/util-user-agent-node": 3.282.0
"@aws-sdk/util-utf8": 3.254.0
fast-xml-parser: 4.1.2
tslib: ^2.3.1
checksum: 5af24417f7ef2dbebe6b0c0aa545eeb809e92136bce2b1e7dd07de1159f2308c2d673c3b136440e4137ce7524cbdabe50e80d7ca6f8635a3d9dcd2983532a9e7
languageName: node
linkType: hard
"@aws-sdk/config-resolver@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/config-resolver@npm:3.272.0"
@@ -690,15 +814,28 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/credential-provider-cognito-identity@npm:3.276.0":
version: 3.276.0
resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.276.0"
"@aws-sdk/config-resolver@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/config-resolver@npm:3.282.0"
dependencies:
"@aws-sdk/client-cognito-identity": 3.276.0
"@aws-sdk/signature-v4": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-config-provider": 3.208.0
"@aws-sdk/util-middleware": 3.272.0
tslib: ^2.3.1
checksum: 47628c4c66d93f2fb109039a55f206f1d9360fd3440ba2354489b5ddf05aab5322791a7e688cb02012342b3ecc7c5a61030838e6b94be76461f7f86d10a3c120
languageName: node
linkType: hard
"@aws-sdk/credential-provider-cognito-identity@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.282.0"
dependencies:
"@aws-sdk/client-cognito-identity": 3.282.0
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 2d255475f08beeccd000745b2f2c46553559fd6fe15c0ea9960956655535fb927df9ec3431cf743b80f9a460d033ede7e1c47e91aff44956559a70c5f43f7bab
checksum: c78e08a43e5611d6fbf15871720b38d76168ffbf75e24394ad10550b636d454c97bc6caaf70b0a3b960406b85874c7e45406167e6d38ae18acadfcaac16b2d73
languageName: node
linkType: hard
@@ -743,7 +880,24 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/credential-provider-node@npm:3.272.0, @aws-sdk/credential-provider-node@npm:^3.208.0":
"@aws-sdk/credential-provider-ini@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/credential-provider-ini@npm:3.282.0"
dependencies:
"@aws-sdk/credential-provider-env": 3.272.0
"@aws-sdk/credential-provider-imds": 3.272.0
"@aws-sdk/credential-provider-process": 3.272.0
"@aws-sdk/credential-provider-sso": 3.282.0
"@aws-sdk/credential-provider-web-identity": 3.272.0
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/shared-ini-file-loader": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: e5281422c8e060dbfca271ccb2f80f23fac11d513d2f97954a7070ca3fdfa0293aed55d8bb0e65cc50dbb60c624755436892a9dd41a659dd3ab8f91d1d9ba74e
languageName: node
linkType: hard
"@aws-sdk/credential-provider-node@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/credential-provider-node@npm:3.272.0"
dependencies:
@@ -761,6 +915,24 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/credential-provider-node@npm:3.282.0, @aws-sdk/credential-provider-node@npm:^3.208.0":
version: 3.282.0
resolution: "@aws-sdk/credential-provider-node@npm:3.282.0"
dependencies:
"@aws-sdk/credential-provider-env": 3.272.0
"@aws-sdk/credential-provider-imds": 3.272.0
"@aws-sdk/credential-provider-ini": 3.282.0
"@aws-sdk/credential-provider-process": 3.272.0
"@aws-sdk/credential-provider-sso": 3.282.0
"@aws-sdk/credential-provider-web-identity": 3.272.0
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/shared-ini-file-loader": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: dc76e67a635bb8807e2e80f4095beaa9d19a07cb5ed7e86080dd9ccff9fc23d6a84af88b74994233742032766efaebc2fd621cd3f8462d8ff041fdf5604a0ee4
languageName: node
linkType: hard
"@aws-sdk/credential-provider-process@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/credential-provider-process@npm:3.272.0"
@@ -787,6 +959,20 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/credential-provider-sso@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/credential-provider-sso@npm:3.282.0"
dependencies:
"@aws-sdk/client-sso": 3.282.0
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/shared-ini-file-loader": 3.272.0
"@aws-sdk/token-providers": 3.282.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 7888c5fbb0be701a8b6ad0a853959f5de0549e0c54dd475767395cfd9337e429056c948ee332da3b447751899635886955a8cc30e0ffbb1b86b6d887712ac0e4
languageName: node
linkType: hard
"@aws-sdk/credential-provider-web-identity@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/credential-provider-web-identity@npm:3.272.0"
@@ -799,25 +985,25 @@ __metadata:
linkType: hard
"@aws-sdk/credential-providers@npm:^3.208.0":
version: 3.276.0
resolution: "@aws-sdk/credential-providers@npm:3.276.0"
version: 3.282.0
resolution: "@aws-sdk/credential-providers@npm:3.282.0"
dependencies:
"@aws-sdk/client-cognito-identity": 3.276.0
"@aws-sdk/client-sso": 3.272.0
"@aws-sdk/client-sts": 3.276.0
"@aws-sdk/credential-provider-cognito-identity": 3.276.0
"@aws-sdk/client-cognito-identity": 3.282.0
"@aws-sdk/client-sso": 3.282.0
"@aws-sdk/client-sts": 3.282.0
"@aws-sdk/credential-provider-cognito-identity": 3.282.0
"@aws-sdk/credential-provider-env": 3.272.0
"@aws-sdk/credential-provider-imds": 3.272.0
"@aws-sdk/credential-provider-ini": 3.272.0
"@aws-sdk/credential-provider-node": 3.272.0
"@aws-sdk/credential-provider-ini": 3.282.0
"@aws-sdk/credential-provider-node": 3.282.0
"@aws-sdk/credential-provider-process": 3.272.0
"@aws-sdk/credential-provider-sso": 3.272.0
"@aws-sdk/credential-provider-sso": 3.282.0
"@aws-sdk/credential-provider-web-identity": 3.272.0
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/shared-ini-file-loader": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 825fb0feda57ef98cc11ab3febc2a337161193dfa24bcc31ad2b47ecb4af564b3b5a5a0d9c17fd1a3ec118321d21fc515948980ba50c323e21ed79905c13dfe4
checksum: ec707176eba558fc5bfc45b2917d624a83995c75bfc38a121d3a3fe6c0be541c25815d4892fc33fd0f1de5f892232014724b0d5c62c19a2d6d3f839258b25840
languageName: node
linkType: hard
@@ -902,6 +1088,19 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/fetch-http-handler@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/fetch-http-handler@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/querystring-builder": 3.272.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-base64": 3.208.0
tslib: ^2.3.1
checksum: 20823143bfed12dd25dc77abb8f869b4f013506f5a028477add87213ec184649dd799f4c6db5d25699a050763ef4a24c6363c06ff096e3a9b7413e2e865a10f6
languageName: node
linkType: hard
"@aws-sdk/hash-blob-browser@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/hash-blob-browser@npm:3.272.0"
@@ -984,16 +1183,16 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-bucket-endpoint@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.272.0"
"@aws-sdk/middleware-bucket-endpoint@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.272.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-arn-parser": 3.208.0
"@aws-sdk/util-config-provider": 3.208.0
tslib: ^2.3.1
checksum: 2c9dffb5545e085ce6323e9628d5998b551332f213f33cdbd606e889b4ca4fdac61648e2c0d8cadcf11aa5908049a764083a794082fce611980056a093c78e55
checksum: 1b2f2dfcbf808b8f6e24173f05bdec21c8c6d5ea4eda6b01b3d3812e51e69fd39fe4880922f0f8f6ecbf35bf8410622458882b754d24a67eae59871c1273a2d4
languageName: node
linkType: hard
@@ -1008,6 +1207,17 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-content-length@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-content-length@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: ebe0f4f55c30cd8ea3711a412e8f0c216c863b7b313ebd12de35b2c8e857cc38b5638c8acdfeca62307911b1092a516d5eaac60493dbeb76806012cda96f46d5
languageName: node
linkType: hard
"@aws-sdk/middleware-endpoint@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-endpoint@npm:3.272.0"
@@ -1024,29 +1234,45 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-expect-continue@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-expect-continue@npm:3.272.0"
"@aws-sdk/middleware-endpoint@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-endpoint@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.272.0
"@aws-sdk/middleware-serde": 3.272.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/signature-v4": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/url-parser": 3.272.0
"@aws-sdk/util-config-provider": 3.208.0
"@aws-sdk/util-middleware": 3.272.0
tslib: ^2.3.1
checksum: 19f32623758ccc1d08e2ff08db8efc62c3e04c3e89b15a7ca4b1719fa15ce7bfaad0eea3cceadc395f769405181a356a6a4efdadb2e6f6bd90afd31f8532ca40
checksum: 84a9f3d6d5f904e9728c20444f3e2fc369b8a57e9dbc01cf3c3f5a6b6062b2ba470774bddd60a095845bba62ce153590c69a10211f61609d4eebf173338299e7
languageName: node
linkType: hard
"@aws-sdk/middleware-flexible-checksums@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.272.0"
"@aws-sdk/middleware-expect-continue@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-expect-continue@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 9b940175d545140608f17d7d5aefd798ea36640acfca95923320eab087bdd2edd25986a68f950a1ecfdf3c922bf91c0cae5b1bc4ce32d51c2f3e1915acc3939a
languageName: node
linkType: hard
"@aws-sdk/middleware-flexible-checksums@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.282.0"
dependencies:
"@aws-crypto/crc32": 3.0.0
"@aws-crypto/crc32c": 3.0.0
"@aws-sdk/is-array-buffer": 3.201.0
"@aws-sdk/protocol-http": 3.272.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-utf8": 3.254.0
tslib: ^2.3.1
checksum: 06d0f9edd3c78d17e0669dd913daed67f0c45d59be54bf39e68ad1184fd0dc80d544545bbe09f6dd51ca6dca8a42b585ba83e5be3aa665c6486fb5210b08f8df
checksum: 7575ebdf82e62b0a03813acc18dab4c070c019b0e723ffb7be41d36955d29d87603689351ecb612a44ff9b70fd83fe6977c5a36f1d7c9cb80b104e28f19ddf23
languageName: node
linkType: hard
@@ -1061,6 +1287,17 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-host-header@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-host-header@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 19b5c9284ec5df8732301d5853007613d62ec43657d8793be14bd1dc4b64700748b37d09dbae835750be440faae0105be6d14caaa55f1309842873a701007b72
languageName: node
linkType: hard
"@aws-sdk/middleware-location-constraint@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-location-constraint@npm:3.272.0"
@@ -1092,6 +1329,17 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-recursion-detection@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-recursion-detection@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 3e2b43e4e3f8ebb4f02a5bf33b15d95b559e5a35a872a94ca254497fdc896508baa8c316f3bec660d6fad2154041d81a5295be8ed245943dcdb3abc2dd75ef27
languageName: node
linkType: hard
"@aws-sdk/middleware-retry@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-retry@npm:3.272.0"
@@ -1107,15 +1355,30 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-sdk-s3@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-sdk-s3@npm:3.272.0"
"@aws-sdk/middleware-retry@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-retry@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.272.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/service-error-classification": 3.272.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-middleware": 3.272.0
"@aws-sdk/util-retry": 3.272.0
tslib: ^2.3.1
uuid: ^8.3.2
checksum: fca7a6c8bac2f52df9987a66f7be5891e85fda0f6eff678ed78bc545ee45e159026d30cc8a136293e731ca69f9e5edc4f9f4895fea73bf28634426d9db0021f6
languageName: node
linkType: hard
"@aws-sdk/middleware-sdk-s3@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-sdk-s3@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-arn-parser": 3.208.0
tslib: ^2.3.1
checksum: 464f38d1593866724ce4e793e065c4e23b875ec889384a99c64d7aa34baf765ebdc18b218ed5e83f4f6c257d7b56c560aab8c0b617960a200484970ec8d55526
checksum: c373dcb455450897075adb943e454da84eae66e6b223a30a80599e2d8a33b61cf1a5e46ec8f7595adfd9059132ce444316f9e376eff6ca121f05b1bb67e99b2b
languageName: node
linkType: hard
@@ -1145,6 +1408,20 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-sdk-sts@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-sdk-sts@npm:3.282.0"
dependencies:
"@aws-sdk/middleware-signing": 3.282.0
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/signature-v4": 3.282.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: bcd2ee00d30191262da5caf5fda4d6c12a9a4aa1ae76693b5e49dc562c89294b4bd133e7036b3811d69806d3d6277848731a3ff8eb919644c33d58909f6ce42e
languageName: node
linkType: hard
"@aws-sdk/middleware-serde@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-serde@npm:3.272.0"
@@ -1169,6 +1446,20 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-signing@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-signing@npm:3.282.0"
dependencies:
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/signature-v4": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-middleware": 3.272.0
tslib: ^2.3.1
checksum: bf3040f3939430d2d32ccc893103f34a7ffd3d979021a124d6f03e6dbbe3b1537fe8736143ddee20f13170a46e545ed5774dd08bdc0be2d8d9b610dd90949246
languageName: node
linkType: hard
"@aws-sdk/middleware-ssec@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/middleware-ssec@npm:3.272.0"
@@ -1199,6 +1490,17 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/middleware-user-agent@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/middleware-user-agent@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 6ad66ec8517deccb6dbbc1c3241d2afc2fa73d9a3bbaf56f3c1e8adbfd0791391f43058f79f2e2ace40090be481b5bbe8db8a42c0f444fc7cc56666c5ca07c72
languageName: node
linkType: hard
"@aws-sdk/node-config-provider@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/node-config-provider@npm:3.272.0"
@@ -1211,7 +1513,7 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/node-http-handler@npm:3.272.0, @aws-sdk/node-http-handler@npm:^3.208.0":
"@aws-sdk/node-http-handler@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/node-http-handler@npm:3.272.0"
dependencies:
@@ -1224,6 +1526,19 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/node-http-handler@npm:3.282.0, @aws-sdk/node-http-handler@npm:^3.208.0":
version: 3.282.0
resolution: "@aws-sdk/node-http-handler@npm:3.282.0"
dependencies:
"@aws-sdk/abort-controller": 3.272.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/querystring-builder": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 22bbb8cae68c3405f3695de2a4be4d08ade5ffaad5367badcc40dc06ef08ec634fb95953deed58641775265d852f7afb095675d353cd7c82b7cb21881f5cc549
languageName: node
linkType: hard
"@aws-sdk/property-provider@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/property-provider@npm:3.272.0"
@@ -1254,6 +1569,16 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/protocol-http@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/protocol-http@npm:3.282.0"
dependencies:
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 5f9d927a69cc1d51767df86d5bfa76f280866e3ef7bcfb8b7b8dab7fc11638ca92d20e3a8a2708a251748c15c0582ad032dfd89aada8ce6068c58605b193e555
languageName: node
linkType: hard
"@aws-sdk/querystring-builder@npm:3.208.0":
version: 3.208.0
resolution: "@aws-sdk/querystring-builder@npm:3.208.0"
@@ -1303,12 +1628,12 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/signature-v4-multi-region@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/signature-v4-multi-region@npm:3.272.0"
"@aws-sdk/signature-v4-multi-region@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/signature-v4-multi-region@npm:3.282.0"
dependencies:
"@aws-sdk/protocol-http": 3.272.0
"@aws-sdk/signature-v4": 3.272.0
"@aws-sdk/protocol-http": 3.282.0
"@aws-sdk/signature-v4": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-arn-parser": 3.208.0
tslib: ^2.3.1
@@ -1317,7 +1642,7 @@ __metadata:
peerDependenciesMeta:
"@aws-sdk/signature-v4-crt":
optional: true
checksum: 231eac2d4203a9ed3829d55a93d503d629bbd43301516d4e06c461dd16eba3a72373c004a59789de43487804266ca4ced259adcb1d26b6916f7b3545401ff544
checksum: 3f25ba04145d9e274f5bea5ac34de77021c2a06d68085e29cd9bae3b0803aef53a0ab8b184034c67019b7b730730374a9e5a216859ee8f01c11032417ca84f7c
languageName: node
linkType: hard
@@ -1336,6 +1661,21 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/signature-v4@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/signature-v4@npm:3.282.0"
dependencies:
"@aws-sdk/is-array-buffer": 3.201.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-hex-encoding": 3.201.0
"@aws-sdk/util-middleware": 3.272.0
"@aws-sdk/util-uri-escape": 3.201.0
"@aws-sdk/util-utf8": 3.254.0
tslib: ^2.3.1
checksum: ef5a5f32c7671979c173cded5ca4749f3d4d156c67b7de11eac881a0141b2f43cc6ac5f29facd3e6af2a3883775de64d0c2789b2f7ccb1c6d14f0da5e22a58f0
languageName: node
linkType: hard
"@aws-sdk/smithy-client@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/smithy-client@npm:3.272.0"
@@ -1347,6 +1687,17 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/smithy-client@npm:3.279.0":
version: 3.279.0
resolution: "@aws-sdk/smithy-client@npm:3.279.0"
dependencies:
"@aws-sdk/middleware-stack": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 43d933b714ba7249d7f9f007e6e107d88d34e76db2cf934c43f38b6039699da450227f25bf559a3a6f12f9f62c4dec6dd5c4dda2205e6889e7d530521b879d61
languageName: node
linkType: hard
"@aws-sdk/token-providers@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/token-providers@npm:3.272.0"
@@ -1360,6 +1711,19 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/token-providers@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/token-providers@npm:3.282.0"
dependencies:
"@aws-sdk/client-sso-oidc": 3.282.0
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/shared-ini-file-loader": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 064425ec0373269ccc7c4eeb583dd31e79b02af5e4c4ade25258cec59986dd3f8d4d80770d4802b26882dba9a61f66ca9d49d9ade70002417f73bdd46c64bace
languageName: node
linkType: hard
"@aws-sdk/types@npm:3.208.0":
version: 3.208.0
resolution: "@aws-sdk/types@npm:3.208.0"
@@ -1455,6 +1819,18 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/util-defaults-mode-browser@npm:3.279.0":
version: 3.279.0
resolution: "@aws-sdk/util-defaults-mode-browser@npm:3.279.0"
dependencies:
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/types": 3.272.0
bowser: ^2.11.0
tslib: ^2.3.1
checksum: 727700ae9c741a24cb8d30991344d778ca5e9ec3ad30364a63f22af8889f03a5fedecad87c76b7022118ab2c6a3dfc48abd530502b7e1f0926bf467081189645
languageName: node
linkType: hard
"@aws-sdk/util-defaults-mode-node@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/util-defaults-mode-node@npm:3.272.0"
@@ -1469,6 +1845,20 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/util-defaults-mode-node@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/util-defaults-mode-node@npm:3.282.0"
dependencies:
"@aws-sdk/config-resolver": 3.282.0
"@aws-sdk/credential-provider-imds": 3.272.0
"@aws-sdk/node-config-provider": 3.272.0
"@aws-sdk/property-provider": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
checksum: 56086b64a65f9999923bbba56c87ecdb886cc729d32683107ae3dd8c9077b6aceecdf2acfc934220522883282f03dd6e37690d242a2d63fee3ec7f3db39cecb7
languageName: node
linkType: hard
"@aws-sdk/util-endpoints@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/util-endpoints@npm:3.272.0"
@@ -1516,29 +1906,29 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/util-stream-browser@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/util-stream-browser@npm:3.272.0"
"@aws-sdk/util-stream-browser@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/util-stream-browser@npm:3.282.0"
dependencies:
"@aws-sdk/fetch-http-handler": 3.272.0
"@aws-sdk/fetch-http-handler": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-base64": 3.208.0
"@aws-sdk/util-hex-encoding": 3.201.0
"@aws-sdk/util-utf8": 3.254.0
tslib: ^2.3.1
checksum: 18e3dfa4efcf12e5e4eda55da14c9a98154f063b1bbf0a926fc406ffdf791363a1881e93194fa5a160e7bd26dd1b1933d6a57b19134e6f0a4feda8c6f5cfcb13
checksum: 30dda128249c30052cc7d92fbc08c423d03938c202bd95ffcbeb0b72804da19defe742ca702062fd96803381bb508cedc27b4b4bf4d418175f905849352fdf71
languageName: node
linkType: hard
"@aws-sdk/util-stream-node@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/util-stream-node@npm:3.272.0"
"@aws-sdk/util-stream-node@npm:3.282.0, @aws-sdk/util-stream-node@npm:^3.208.0":
version: 3.282.0
resolution: "@aws-sdk/util-stream-node@npm:3.282.0"
dependencies:
"@aws-sdk/node-http-handler": 3.272.0
"@aws-sdk/node-http-handler": 3.282.0
"@aws-sdk/types": 3.272.0
"@aws-sdk/util-buffer-from": 3.208.0
tslib: ^2.3.1
checksum: 7fa500251680e3eb5fa63d47c6d4846ca66f8c781ee0d990ed79d16a12b0bb074eb7d5c9e26390afd7a18159a758fbc333ce1b788c2a8dea7438cbe2f4c6c7c3
checksum: 0b19609d0c2608c120e317b6127a49016c90f746e38c300893ee16e276951c294fd4fef8dbee42978e655f34c2c56676e8def637fdb5a3f9284c475c73a67f62
languageName: node
linkType: hard
@@ -1567,6 +1957,17 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/util-user-agent-browser@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/util-user-agent-browser@npm:3.282.0"
dependencies:
"@aws-sdk/types": 3.272.0
bowser: ^2.11.0
tslib: ^2.3.1
checksum: cf751b285e57c4d7a00584ac4eab4c27c5fc6d73dc9d6ed8082d297885b262a27bc0a51b882e57779eb807149c27b4d083e07596b99ae145c9acb46f64edf587
languageName: node
linkType: hard
"@aws-sdk/util-user-agent-node@npm:3.272.0":
version: 3.272.0
resolution: "@aws-sdk/util-user-agent-node@npm:3.272.0"
@@ -1583,6 +1984,22 @@ __metadata:
languageName: node
linkType: hard
"@aws-sdk/util-user-agent-node@npm:3.282.0":
version: 3.282.0
resolution: "@aws-sdk/util-user-agent-node@npm:3.282.0"
dependencies:
"@aws-sdk/node-config-provider": 3.272.0
"@aws-sdk/types": 3.272.0
tslib: ^2.3.1
peerDependencies:
aws-crt: ">=1.0.0"
peerDependenciesMeta:
aws-crt:
optional: true
checksum: b13d7e114610c15d0d4d6137e6b6e2ce2d9b696aec1f3ba60515228b9c59068260fb976a0af2d9166705e00c99408c603abf4ebc65384bcd76abfa9003a4afa4
languageName: node
linkType: hard
"@aws-sdk/util-utf8-browser@npm:3.188.0, @aws-sdk/util-utf8-browser@npm:^3.0.0":
version: 3.188.0
resolution: "@aws-sdk/util-utf8-browser@npm:3.188.0"
@@ -3422,6 +3839,11 @@ __metadata:
version: 0.0.0-use.local
resolution: "@backstage/backend-common@workspace:packages/backend-common"
dependencies:
"@aws-sdk/abort-controller": ^3.208.0
"@aws-sdk/client-s3": ^3.208.0
"@aws-sdk/credential-providers": ^3.208.0
"@aws-sdk/types": ^3.208.0
"@aws-sdk/util-stream-node": ^3.208.0
"@backstage/backend-app-api": "workspace:^"
"@backstage/backend-dev-utils": "workspace:^"
"@backstage/backend-plugin-api": "workspace:^"
@@ -3432,6 +3854,7 @@ __metadata:
"@backstage/config-loader": "workspace:^"
"@backstage/errors": "workspace:^"
"@backstage/integration": "workspace:^"
"@backstage/integration-aws-node": "workspace:^"
"@backstage/types": "workspace:^"
"@google-cloud/storage": ^6.0.0
"@keyv/memcache": ^1.3.5
@@ -3461,7 +3884,7 @@ __metadata:
"@types/webpack-env": ^1.15.2
"@types/yauzl": ^2.10.0
archiver: ^5.0.2
aws-sdk: ^2.840.0
aws-sdk-client-mock: ^2.0.0
aws-sdk-mock: ^5.2.1
base64-stream: ^1.0.0
better-sqlite3: ^8.0.0
@@ -4939,6 +5362,8 @@ __metadata:
version: 0.0.0-use.local
resolution: "@backstage/plugin-catalog-backend-module-aws@workspace:plugins/catalog-backend-module-aws"
dependencies:
"@aws-sdk/client-s3": ^3.208.0
"@aws-sdk/util-stream-node": ^3.208.0
"@backstage/backend-common": "workspace:^"
"@backstage/backend-plugin-api": "workspace:^"
"@backstage/backend-tasks": "workspace:^"
@@ -4955,6 +5380,7 @@ __metadata:
"@backstage/types": "workspace:^"
"@types/lodash": ^4.14.151
aws-sdk: ^2.840.0
aws-sdk-client-mock: ^2.0.0
aws-sdk-mock: ^5.2.1
lodash: ^4.17.21
luxon: ^3.0.0