diff --git a/README.md b/README.md index ecfa98d..d10b9e1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![codecov](https://codecov.io/gh/dforsber/s3-selectable/branch/master/graph/badge.svg)](https://codecov.io/gh/dforsber/s3-selectable) ![BuiltBy](https://img.shields.io/badge/TypeScript-Lovers-black.svg "img.shields.io") -This module runs parallel [S3 Select](https://aws.amazon.com/blogs/developer/introducing-support-for-amazon-s3-select-in-the-aws-sdk-for-javascript/) over all the S3 Keys of a [Glue Table](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) and returns a single [merged event stream](https://github.com/grncdr/merge-stream). The API is the same as for [S3 Select NodeJS SDK (`S3.selectObjectContent`)](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#selectObjectContent-property), i.e. params are passed thorugh, but `Bucket` and `Key` are replaced from values for the Glue Table S3 Data. +This module runs parallel [S3 Select](https://aws.amazon.com/blogs/developer/introducing-support-for-amazon-s3-select-in-the-aws-sdk-for-javascript/) over all the S3 Keys of a [Glue Table](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html) and returns a single [merged event stream](https://github.com/grncdr/merge-stream). The API is the same as for [S3 Select NodeJS SDK (`S3.selectObjectContent`)](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#selectObjectContent-property), i.e. params are passed through, but `Bucket` and `Key` are replaced from values for the Glue Table S3 Data. Additionally, `ExpressionType` is optional and defaults to `SQL`, `InputSerialization` is deducted from Glue Table serde if not provided, and `OutputSerialization` defaults to `JSON`. ```shell yarn add @dforsber/s3-selectable @@ -15,31 +15,35 @@ const { S3 } = require("@aws-sdk/client-s3"); const { Glue } = require("@aws-sdk/client-glue"); const { S3Selectable } = require("@dforsber/s3-selectable"); +const region = { region: "eu-west-1" }; + async function main() { // NOTE: Instantiation of the class will start querying AWS Glue and S3 to // fetch all S3 Object Keys that corresponds with the Glue Table data. - const glueTable = new S3Selectable({ - s3: new S3({ region: "eu-west-1" }), - glue: new Glue({ region: "eu-west-1" }), - tableName: "elb_logs", - databaseName: "sampledb", + const selectable = new S3Selectable({ + s3: new S3(region), + glue: new Glue(region), + databaseName: "default", + tableName: "partitioned_elb_logs", }); - const selectStream = await glueTable.selectObjectContent( - { - // Bucket: "BucketIsOptionalAndNotUsed", - // Key: "KeyIsOptionalAndNotUsed", - // ..otherwise the interface is the same. - // ExpressionType: "SQL", // default - // InputSerialization: { CSV: {} }, // deduced from Hive Metastore - // OutputSerialization: { JSON: {} }, // by default JSON - Expression: "SELECT * FROM s3Object[*] LIMIT 2", - }, - chunk => { - if (chunk.Records?.Payload) process.stdout.write(Buffer.from(chunk.Records.Payload).toString()); - }, - () => console.log("Stream end"), - ); + const onData = chunk => { + const data = Buffer.from((chunk.Records || {}).Payload || "").toString(); + process.stdout.write(data); + }; + + const onEnd = () => console.log("Stream end"); + + const selectParams = { + // Bucket: "", // optional and not used + // Key: "", // optional and not used + // ExpressionType: "SQL", // defaults to SQL + // InputSerialization: { CSV: {}, // some rudimentary autodetection + // CompressionType: "GZIP" }, // from Glue Table metadata + // OutputSerialization: { JSON: {} }, // defaults to JSON + Expression: "SELECT * FROM s3Object LIMIT 2", + }; + await selectable.selectObjectContent(selectParams, onData, onEnd); } main().catch(err => console.log(err)); @@ -49,13 +53,13 @@ main().catch(err => console.log(err)); [AWS S3 Select](https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html) is a filtering stream over S3 Objects, where filtering is defined with SQL syntax. Glue Tables are metadata about structured data on S3 that can point to hundreds of different S3 Objects in separate Hive Partitions and Hive Buckets. -S3 Select doesn't understand anything about Glue Tables, but it supports high parallelism. This module provides the same `S3.selectObjectContent` method in the `s3SelectOnTable` class, but makes `Bucket` and `Key` optional as those are read from the Glue Table itself. For each S3 Object in the Glue Table data location and partitions, it launches S3 Select and returns a single stream as merged stream of all the concurrent S3 Select calls. +S3 Select doesn't understand anything about Glue Tables, but it supports high parallelism. This module provides the same `S3.selectObjectContent` method in the `s3Selectable` class, but makes `Bucket` and `Key` optional as those are read from the Glue Table itself. For each S3 Object in the Glue Table data location and partitions, it launches S3 Select and returns a single stream as merged stream of all the concurrent S3 Select calls. -When the class `s3SelectOnTable` is instantiated it triggers AWS API calls for fetching table metadata and getting all S3 Keys for the table data. You can then issue multiple S3 Select calls over the same table, while the metadata is in-memory. +When the class `s3Selectable` is instantiated it triggers AWS API calls for fetching table metadata and getting all S3 Keys for the table data. You can then issue multiple S3 Select calls over the same table, while the metadata is in-memory. ### Usage with Lambda -`s3SelectOnTable` should be instantiated outside the Lambda handler, i.e. during the cold start. This way warm Lambda container has the Glue Table "metadata" already in-memory. +`s3Selectable` should be instantiated outside the Lambda handler, i.e. during the cold start. This way warm Lambda container has the Glue Table "metadata" already in-memory. ## Narrowed scope with partition filtering diff --git a/integration-tests/example.js b/integration-tests/example.js new file mode 100644 index 0000000..2d9ebdc --- /dev/null +++ b/integration-tests/example.js @@ -0,0 +1,36 @@ +const { S3 } = require("@aws-sdk/client-s3"); +const { Glue } = require("@aws-sdk/client-glue"); +const { S3Selectable } = require("@dforsber/s3-selectable"); + +const region = { region: "eu-west-1" }; + +async function main() { + // NOTE: Instantiation of the class will start querying AWS Glue and S3 to + // fetch all S3 Object Keys that corresponds with the Glue Table data. + const selectable = new S3Selectable({ + s3: new S3(region), + glue: new Glue(region), + databaseName: "default", + tableName: "partitioned_elb_logs", + }); + + const onData = chunk => { + const data = Buffer.from((chunk.Records || {}).Payload || "").toString(); + process.stdout.write(data); + }; + + const onEnd = () => console.log("Stream end"); + + const selectParams = { + // Bucket: "", // optional and not used + // Key: "", // optional and not used + // ExpressionType: "SQL", // defaults to SQL + // InputSerialization: { CSV: {}, // some rudimentary autodetection + // CompressionType: "GZIP" }, // from Glue Table metadata + // OutputSerialization: { JSON: {} }, // defaults to JSON + Expression: "SELECT * FROM s3Object LIMIT 2", + }; + await selectable.selectObjectContent(selectParams, onData, onEnd); +} + +main().catch(err => console.log(err)); diff --git a/integration-tests/example.ts b/integration-tests/example.ts index 8979954..bed724f 100644 --- a/integration-tests/example.ts +++ b/integration-tests/example.ts @@ -13,8 +13,8 @@ async function classBasedExample(): Promise { const tableParams: IS3Selectable = { s3: new S3(region), glue: new Glue(region), - tableName: process.env.TABLE_NAME ?? "partitioned_elb_logs", databaseName: process.env.DATABASE_NAME ?? "default", + tableName: process.env.TABLE_NAME ?? "partitioned_elb_logs", }; const glueTable = new S3Selectable(tableParams); const selectStream = await glueTable.selectObjectContent({ diff --git a/integration-tests/package.json b/integration-tests/package.json index 66d01c6..a59d114 100644 --- a/integration-tests/package.json +++ b/integration-tests/package.json @@ -6,7 +6,7 @@ "dependencies": { "@aws-sdk/client-glue": "^3.1.0", "@aws-sdk/client-s3": "^3.1.0", - "@dforsber/s3-selectable": "^1.0.0" + "@dforsber/s3-selectable": "../" }, "devDependencies": { "@aws-sdk/types": "3.1.0", diff --git a/integration-tests/yarn.lock b/integration-tests/yarn.lock index 5699631..370c755 100644 --- a/integration-tests/yarn.lock +++ b/integration-tests/yarn.lock @@ -103,6 +103,42 @@ "@aws-sdk/util-utf8-node" "3.1.0" tslib "^2.0.0" +"@aws-sdk/client-glue@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-glue/-/client-glue-3.2.0.tgz#1e25f70338dbad9298cfaecc1d0c14cd07976c35" + integrity sha512-bVhtoQG3tbINk2jrxcS9co8RuZWUW5F4GcnLQ6qFR6PdO9jlkP11aqrq2C8uQpU/dCWYUV2xM48Rxl+xvix8Bw== + dependencies: + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "3.2.0" + "@aws-sdk/credential-provider-node" "3.1.0" + "@aws-sdk/fetch-http-handler" "3.2.0" + "@aws-sdk/hash-node" "3.1.0" + "@aws-sdk/invalid-dependency" "3.2.0" + "@aws-sdk/middleware-content-length" "3.2.0" + "@aws-sdk/middleware-host-header" "3.2.0" + "@aws-sdk/middleware-logger" "3.2.0" + "@aws-sdk/middleware-retry" "3.2.0" + "@aws-sdk/middleware-serde" "3.2.0" + "@aws-sdk/middleware-signing" "3.2.0" + "@aws-sdk/middleware-stack" "3.1.0" + "@aws-sdk/middleware-user-agent" "3.2.0" + "@aws-sdk/node-config-provider" "3.1.0" + "@aws-sdk/node-http-handler" "3.2.0" + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/smithy-client" "3.2.0" + "@aws-sdk/url-parser-browser" "3.1.0" + "@aws-sdk/url-parser-node" "3.1.0" + "@aws-sdk/util-base64-browser" "3.1.0" + "@aws-sdk/util-base64-node" "3.1.0" + "@aws-sdk/util-body-length-browser" "3.1.0" + "@aws-sdk/util-body-length-node" "3.1.0" + "@aws-sdk/util-user-agent-browser" "3.2.0" + "@aws-sdk/util-user-agent-node" "3.2.0" + "@aws-sdk/util-utf8-browser" "3.1.0" + "@aws-sdk/util-utf8-node" "3.1.0" + tslib "^2.0.0" + "@aws-sdk/client-s3@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.1.0.tgz#9c39f4588420696e1a4920f8315f778a7896b858" @@ -154,6 +190,57 @@ fast-xml-parser "^3.16.0" tslib "^2.0.0" +"@aws-sdk/client-s3@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.2.0.tgz#413b504d6f63059ee8e20f4da7bfd62a775b162a" + integrity sha512-iK/NkA/mysiNsZYLdvBSU/2/CKUHnqbjPbCwYIJqlRK04ymIsA02cayissQNQ2H5ZEJR5BCBm3KhR9tb41o5Hg== + dependencies: + "@aws-crypto/sha256-browser" "^1.0.0" + "@aws-crypto/sha256-js" "^1.0.0" + "@aws-sdk/config-resolver" "3.2.0" + "@aws-sdk/credential-provider-node" "3.1.0" + "@aws-sdk/eventstream-serde-browser" "3.2.0" + "@aws-sdk/eventstream-serde-config-resolver" "3.2.0" + "@aws-sdk/eventstream-serde-node" "3.2.0" + "@aws-sdk/fetch-http-handler" "3.2.0" + "@aws-sdk/hash-blob-browser" "3.1.0" + "@aws-sdk/hash-node" "3.1.0" + "@aws-sdk/hash-stream-node" "3.1.0" + "@aws-sdk/invalid-dependency" "3.2.0" + "@aws-sdk/md5-js" "3.1.0" + "@aws-sdk/middleware-apply-body-checksum" "3.2.0" + "@aws-sdk/middleware-bucket-endpoint" "3.2.0" + "@aws-sdk/middleware-content-length" "3.2.0" + "@aws-sdk/middleware-expect-continue" "3.2.0" + "@aws-sdk/middleware-host-header" "3.2.0" + "@aws-sdk/middleware-location-constraint" "3.1.0" + "@aws-sdk/middleware-logger" "3.2.0" + "@aws-sdk/middleware-retry" "3.2.0" + "@aws-sdk/middleware-sdk-s3" "3.2.0" + "@aws-sdk/middleware-serde" "3.2.0" + "@aws-sdk/middleware-signing" "3.2.0" + "@aws-sdk/middleware-ssec" "3.1.0" + "@aws-sdk/middleware-stack" "3.1.0" + "@aws-sdk/middleware-user-agent" "3.2.0" + "@aws-sdk/node-config-provider" "3.1.0" + "@aws-sdk/node-http-handler" "3.2.0" + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/smithy-client" "3.2.0" + "@aws-sdk/url-parser-browser" "3.1.0" + "@aws-sdk/url-parser-node" "3.1.0" + "@aws-sdk/util-base64-browser" "3.1.0" + "@aws-sdk/util-base64-node" "3.1.0" + "@aws-sdk/util-body-length-browser" "3.1.0" + "@aws-sdk/util-body-length-node" "3.1.0" + "@aws-sdk/util-user-agent-browser" "3.2.0" + "@aws-sdk/util-user-agent-node" "3.2.0" + "@aws-sdk/util-utf8-browser" "3.1.0" + "@aws-sdk/util-utf8-node" "3.1.0" + "@aws-sdk/util-waiter" "3.2.0" + "@aws-sdk/xml-builder" "3.1.0" + fast-xml-parser "^3.16.0" + tslib "^2.0.0" + "@aws-sdk/config-resolver@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.1.0.tgz#36987002c18884847aa1c96e0daf546b5f9caff6" @@ -162,6 +249,14 @@ "@aws-sdk/signature-v4" "3.1.0" tslib "^1.8.0" +"@aws-sdk/config-resolver@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.2.0.tgz#c83de904f155282c91e0972b5053937ea1f05160" + integrity sha512-+PRjXpWq8JlN/ilO2F5sh/HAOkoCJkGnu/e8rfnND88tghVVauFPm7xTR2LHOGp1ugpUJm8lG/iEzpYP1EUcpA== + dependencies: + "@aws-sdk/signature-v4" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/credential-provider-env@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.1.0.tgz#eaa3ed04960faafd4536e9fbb051d5007985ba03" @@ -227,6 +322,15 @@ "@aws-sdk/eventstream-serde-universal" "3.1.0" tslib "^1.8.0" +"@aws-sdk/eventstream-serde-browser@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.2.0.tgz#74716fe631c560f1d90fec25bdf0601435553545" + integrity sha512-i4cUajOcI4uNxGgd133D2PAKb1/wkztGQOuak2SFGw5mgMWVPjy/WpRReEV/Fl9I+sk/c6RePhkypexwSjXo9A== + dependencies: + "@aws-sdk/eventstream-marshaller" "3.1.0" + "@aws-sdk/eventstream-serde-universal" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/eventstream-serde-config-resolver@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.1.0.tgz#f4f95c4770ea34b06d79ef61eb8cbd73ac8403bc" @@ -234,6 +338,13 @@ dependencies: tslib "^1.8.0" +"@aws-sdk/eventstream-serde-config-resolver@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.2.0.tgz#8ae2561c5e867868fb723c9f24b5fe1b44fa4ac0" + integrity sha512-1/G0MyB35C7WVdDkHfnQ/x9r3NxdN62KZ45oZT0QddnYqvWDn37Ze8oVd583Zz53za8xvEqeHhibNrnDNWoFPg== + dependencies: + tslib "^1.8.0" + "@aws-sdk/eventstream-serde-node@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.1.0.tgz#23d6630385d7023d3da9c905174ee391b5d9e5d6" @@ -243,6 +354,15 @@ "@aws-sdk/eventstream-serde-universal" "3.1.0" tslib "^1.8.0" +"@aws-sdk/eventstream-serde-node@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.2.0.tgz#363a1edeca9960f5298554865a3a7c660bfe29f0" + integrity sha512-BraMm315MUuVIiunox9pC9VZ3kZeFW1LpfXuc2kIji/LTZjEZchiyUHfwDkjcq9GkGHDyPLhdlNtquEXk4gtow== + dependencies: + "@aws-sdk/eventstream-marshaller" "3.1.0" + "@aws-sdk/eventstream-serde-universal" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/eventstream-serde-universal@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.1.0.tgz#c48f51c92711cf0ec3a8e93b466d4dde8128d936" @@ -251,6 +371,14 @@ "@aws-sdk/eventstream-marshaller" "3.1.0" tslib "^1.8.0" +"@aws-sdk/eventstream-serde-universal@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.2.0.tgz#d7b19bf85fd9f83e5fec0202e7ea3b51d02de5b3" + integrity sha512-WAS6+sDrFqSHrw3r37Tw815jaWH1IiEn+lYSONoqZE7lD2ySLFQPWdDgHtOnhidmZYpzi8OGjB4ebh8aFXXiZA== + dependencies: + "@aws-sdk/eventstream-marshaller" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/fetch-http-handler@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.1.0.tgz#2e495cbd5a633c3a5f9935b59faa9c8c0ed8b5e2" @@ -261,6 +389,16 @@ "@aws-sdk/util-base64-browser" "3.1.0" tslib "^1.8.0" +"@aws-sdk/fetch-http-handler@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.2.0.tgz#116bfc06b3de797d4c746962874ef00e66fda024" + integrity sha512-Y8cw7+HNhxSpYZmd78Bq46rYUUCqnRH9AgHXkLifsigt4RsEAfYhODhEUQhEhJ/zwgadvj/fIKJWKdSiCbiC1A== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/querystring-builder" "3.1.0" + "@aws-sdk/util-base64-browser" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/hash-blob-browser@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.1.0.tgz#5c6548b05d155d3141b47da958be13043a96a17f" @@ -292,6 +430,13 @@ dependencies: tslib "^1.8.0" +"@aws-sdk/invalid-dependency@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.2.0.tgz#2c2c19cbec17ff28333c68e28420db6902a4374b" + integrity sha512-8hlqE4pWo2DoM6pAqjL+A3zYwUMaxP/RCGO+0zKbZHVw2stdRDzpO+jUfzZHR+mPJ+L/2wPwhK8D9n3yBriNBQ== + dependencies: + tslib "^1.8.0" + "@aws-sdk/is-array-buffer@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.1.0.tgz#7ac296d6408e34083ac007630541a1cdf67387fd" @@ -316,6 +461,15 @@ "@aws-sdk/protocol-http" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-apply-body-checksum@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.2.0.tgz#0c18db7ad715037736ed56adaad08bb42c3f2d62" + integrity sha512-tkkWT0ieOPbE59kb6VbrQGzsqj9fXUY29mCM2wrnz2C00jtmfKP+ipHMCH0Lj/+09tvwkjCMW3Tm4WtYv+5NRw== + dependencies: + "@aws-sdk/is-array-buffer" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/middleware-bucket-endpoint@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.1.0.tgz#38fb980fe99c42ddc264db40b93f28f84b3cc1e2" @@ -325,6 +479,15 @@ "@aws-sdk/util-arn-parser" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-bucket-endpoint@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.2.0.tgz#639c57393fa5a744b3596792609eb39660e513cf" + integrity sha512-K3aHf/NldosV17tSS/EkgaLThI6fOlbkTxBDj5JwhRehxHytS4qTYD4RiWgnDhCnYMAiKpsI2GSmC3a/+AYf2w== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/util-arn-parser" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/middleware-content-length@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.1.0.tgz#af100e6f724a188bb2963372de8d40868905be51" @@ -333,6 +496,14 @@ "@aws-sdk/protocol-http" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-content-length@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.2.0.tgz#876943c7498e930595621395e5928fc59cf8ed68" + integrity sha512-xS7zdcRcubv7WKs5L/RG69EuuatuPxYNQT4O9epQyUaOpTHKzdVd1wnBK+otWYxI9qnCjIXwwmMyGbJXD9OHhw== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/middleware-expect-continue@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.1.0.tgz#3453aeb345ea852ebeefe392f7706b7573dd3c23" @@ -342,6 +513,15 @@ "@aws-sdk/protocol-http" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-expect-continue@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.2.0.tgz#73c30e79080ac80a70602e4c9995e37a806fa26f" + integrity sha512-NSeOgcY0FOloRPOqjiSPu5rWjhk+531MEqvDRWaZL3L8+ZauRHTBfnaB3nTdoaEj6ULhH0+vNgKUJnxsd3Z5Dw== + dependencies: + "@aws-sdk/middleware-header-default" "3.2.0" + "@aws-sdk/protocol-http" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/middleware-header-default@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-3.1.0.tgz#0b41d113f878d95132e10a48ca4c9667c28cf325" @@ -350,6 +530,14 @@ "@aws-sdk/protocol-http" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-header-default@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-3.2.0.tgz#0c3b683931416c51cfc36d0c6f2692a412a10855" + integrity sha512-dv7CvAg9/rCIXcLMLX1cbeZL9DaVsqZjXS3ebYGfa8nZi0Qs+b6bdZH9q7B5qPw6pBImIDDRzj1J9va1z4NnLA== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/middleware-host-header@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.1.0.tgz#61f22f7d7ce8907d0dbc817ff67ec5545012dc51" @@ -358,6 +546,14 @@ "@aws-sdk/protocol-http" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-host-header@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.2.0.tgz#cf5d0868f939834fb45c4490c1118eaf25317505" + integrity sha512-URRRaqO74DSdhqYyKbyCyadJ9No17KBMmgwz2OKecdwp6/pUVNQmlxhj1cG9leWUkBuOHo6weRvWc5zXwvfy1Q== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/middleware-location-constraint@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.1.0.tgz#181007815ca9167b333666eb073b131e17d86fe7" @@ -372,6 +568,13 @@ dependencies: tslib "^1.8.0" +"@aws-sdk/middleware-logger@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.2.0.tgz#9d4bf84fbf7a0ddc144e6c660f1b806a23a42a6e" + integrity sha512-vkex6bsYqafdvrLe4MXJDJrEfvRb5Z8z01lVlaEV2bzXFqw7WNuFVDRC80GE/YB+r2ds/n9QU4EYUSX9wewoJQ== + dependencies: + tslib "^1.8.0" + "@aws-sdk/middleware-retry@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.1.0.tgz#4df049c73121a83e19f5078e90a411b93a8cf7de" @@ -383,6 +586,17 @@ tslib "^1.8.0" uuid "^3.0.0" +"@aws-sdk/middleware-retry@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.2.0.tgz#72bf988d90d9b0192aa7b290fc340b9f2e57a193" + integrity sha512-roecjUD9di1kqyCewk8pGXcsiHyi8kte5Is5bo9kCPfqHhtDN9L/efOhC+rhT0N9nKplC4rZGE4aopxNhMbLtQ== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/service-error-classification" "3.2.0" + react-native-get-random-values "^1.4.0" + tslib "^1.8.0" + uuid "^3.0.0" + "@aws-sdk/middleware-sdk-s3@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.1.0.tgz#e602bde5b9b5abe33e9087f61cf0f0cae9157bad" @@ -392,6 +606,15 @@ "@aws-sdk/util-arn-parser" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-sdk-s3@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.2.0.tgz#983197d248e4445cc60ac7c73dd5d912e49017fd" + integrity sha512-EJmOAqjc0qWV5OUQ9PRC20GaKQGz5JhZaELRs1cYaMKOY2h8MKGhF6aZFo0dTvYEv3t2T2t0qsWqHdEc3A/CcA== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/util-arn-parser" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/middleware-serde@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.1.0.tgz#a80b96dc0008546d9e9e9bce7e9b1ec134edbc6d" @@ -399,6 +622,13 @@ dependencies: tslib "^1.8.0" +"@aws-sdk/middleware-serde@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.2.0.tgz#aff46b0457f44738cdc542ea4bea01160d437300" + integrity sha512-dWTL5lIjosKCUDyaNtEolaGpo/KwoM1Zx4NdMUBLYBy9v0vKSnpRLPXxyM2EREVJYHTVrvm6UoW8dM+5RFiN7A== + dependencies: + tslib "^1.8.0" + "@aws-sdk/middleware-signing@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.1.0.tgz#d48c18f159f867ca5efe34c4993880e6820cc11e" @@ -408,6 +638,15 @@ "@aws-sdk/signature-v4" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-signing@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.2.0.tgz#2ad5288d6543281a7e704102f6d446acdb9efaaa" + integrity sha512-XkDu0lMkdlf95nE2aYyAFmXOzBD+noVebyB1dlJDQCZWNzGkefc+8Nez3lCgyd2+KuEyHXMmQsqZwnmygpRvLQ== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/signature-v4" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/middleware-ssec@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.1.0.tgz#af57795facc29673568277d1d9aa090e57d69669" @@ -430,6 +669,14 @@ "@aws-sdk/protocol-http" "3.1.0" tslib "^1.8.0" +"@aws-sdk/middleware-user-agent@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.2.0.tgz#19e64961feb6a41721e3164538031e21858ad7ee" + integrity sha512-rME49AFlVZSwgxTLQo/5Ok012HRcg9xhSFK4oOEkPJiYyGedvsF+Qy6sz3VjQRL2SvUvoAp03Wqbxe/Keewdbw== + dependencies: + "@aws-sdk/protocol-http" "3.2.0" + tslib "^1.8.0" + "@aws-sdk/node-config-provider@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.1.0.tgz#74b37f65faa90fa6b4acb640e0f215f50aaa4904" @@ -449,6 +696,16 @@ "@aws-sdk/querystring-builder" "3.1.0" tslib "^1.8.0" +"@aws-sdk/node-http-handler@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.2.0.tgz#cf6b12b021d61933202522179e5bd5710e565afa" + integrity sha512-C6bwM9RNINF2r7wTjQ7esjwlTnEIUZkJ+hyMGwOUxc4AqHCdc1PGEFwuMjQWhiyUtvR3hd7hfPj5GWvFP/PUTQ== + dependencies: + "@aws-sdk/abort-controller" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/querystring-builder" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/property-provider@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.1.0.tgz#19cf1da802a09be429e26f8eafec9b4c3473f8b0" @@ -463,6 +720,13 @@ dependencies: tslib "^1.8.0" +"@aws-sdk/protocol-http@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.2.0.tgz#0d352045bae38c66a2c97611983bfb545351c4e0" + integrity sha512-7FA23ABTZ18MsQD0GcICj6dU9HRInf6l6XvtnlPUS6ZvjDbsNRqEROUtvjl8dkDDP1mFpEQuHJ5e9MO5peEm7g== + dependencies: + tslib "^1.8.0" + "@aws-sdk/querystring-builder@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.1.0.tgz#6cb859cfd906faa21de32641a960f080be78f0f3" @@ -483,6 +747,11 @@ resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.1.0.tgz#9471f761f36ebe3efeb0791d7e2af517f87ef4a2" integrity sha512-zUNV9Fyguto8VOhinKvzIoQxwfYMSSLO6xTKJLyTB+cDv51SX5sh+lqX6IKGhuqz2Wse1ynuoLGOnmVoe4aUpQ== +"@aws-sdk/service-error-classification@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.2.0.tgz#286ba27368276132db89f21b79724bf95cbd8d97" + integrity sha512-ZzeSZ0HnJq5zUkA466zVEZAE1SVqYuvGzxRGTEszbMW2eWPLonJgUwiT5nDScmJQcDju044iP//2KnBvn62Rhg== + "@aws-sdk/shared-ini-file-loader@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.1.0.tgz#b1bc7ed4e16535f20c788915060a121e457efdfb" @@ -500,6 +769,16 @@ "@aws-sdk/util-uri-escape" "3.1.0" tslib "^1.8.0" +"@aws-sdk/signature-v4@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.2.0.tgz#9eb5c4c3f5c3d448f3929f310baa4ad3682d1ddc" + integrity sha512-Fb81gqaSnuCwO9HFYnztksyFud5X6/Ikr95X3pfrtLcHlHe/S079woWmlDUEgy7lw2X2GY94TcX9jlXuMhTfhA== + dependencies: + "@aws-sdk/is-array-buffer" "3.1.0" + "@aws-sdk/util-hex-encoding" "3.1.0" + "@aws-sdk/util-uri-escape" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/smithy-client@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.1.0.tgz#dc60223b9af1e99d076871e8138ea9b6ecbf737b" @@ -508,6 +787,14 @@ "@aws-sdk/middleware-stack" "3.1.0" tslib "^1.8.0" +"@aws-sdk/smithy-client@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.2.0.tgz#ba93d125f83f385ce6a4600e47339bf036fc7d0a" + integrity sha512-LpBGQ5m/oQ6QkMPQl7yxvBll/NRww4GUCEwpEXw412SUbX7aVTu+CNoUmF2lg8Gwp2XM3NgOkJ9DQ94YwZ/dug== + dependencies: + "@aws-sdk/middleware-stack" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/types@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.1.0.tgz#04d77c37a80b422e8123f296338d129e51f3e1fc" @@ -609,6 +896,14 @@ bowser "^2.11.0" tslib "^1.8.0" +"@aws-sdk/util-user-agent-browser@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.2.0.tgz#f6fdee45817d80a637d7bd66985f516182b6f550" + integrity sha512-ugkLsntS2wpLWCjPs49wnAGhuIAFyHYzTznp0v+Qj/uOkm0ddq4kWp+FwtMxeQMRY0eoBdfqXJAbJLz8w4xlUQ== + dependencies: + bowser "^2.11.0" + tslib "^1.8.0" + "@aws-sdk/util-user-agent-node@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.1.0.tgz#3fa66564a5fdb0e2851554688dc507127356f941" @@ -618,6 +913,14 @@ "@aws-sdk/types" "3.1.0" tslib "^1.8.0" +"@aws-sdk/util-user-agent-node@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.2.0.tgz#9190f69afdd81bacde16e253af2545a0e3f443cd" + integrity sha512-Ovyq6yc7SL0NWZWBrPKRc0D38xkMH2ulslcnukdNOitv0s8V2Ge09R4T63U0I8IJ7nrKa75Uus6A8vC8Zko3yg== + dependencies: + "@aws-sdk/node-config-provider" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/util-utf8-browser@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.1.0.tgz#7be17b545af101c320d34aace47139cf9987d796" @@ -648,6 +951,14 @@ "@aws-sdk/abort-controller" "3.1.0" tslib "^1.8.0" +"@aws-sdk/util-waiter@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.2.0.tgz#a7d9b1b094ca517eb3691b35e6bd39c31316ed65" + integrity sha512-1kEr8fGdgTyQyTAnyU5yDCCU4xsMgemrBQSj2qQMNotjDTr02OnDk5drYB0WWuaVZgzVNufqRK6y9AeM6VKoWw== + dependencies: + "@aws-sdk/abort-controller" "3.1.0" + tslib "^1.8.0" + "@aws-sdk/xml-builder@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.1.0.tgz#ad7113075416436d8c822199674c45fc6ef42441" @@ -655,13 +966,11 @@ dependencies: tslib "^1.8.0" -"@dforsber/s3-selectable@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@dforsber/s3-selectable/-/s3-selectable-1.0.0.tgz#fa8510f3e9c63d4e8a24c464d32a3289c7fc4162" - integrity sha512-BbQCz9fdtQNxgS2ywsO9M0uCCb6P3BQn8HYF4h56CFqYU2Y/hFn4LleZiGBal392ETW7W7QUqH5TRkG/SHlTlQ== +"@dforsber/s3-selectable@../": + version "1.1.0" dependencies: - "@aws-sdk/client-glue" "^3.1.0" - "@aws-sdk/client-s3" "^3.1.0" + "@aws-sdk/client-glue" "^3.2.0" + "@aws-sdk/client-s3" "^3.2.0" merge-stream "^2.0.0" node-sql-parser "^1.11.0" sqlite3 "^5.0.0" @@ -1107,17 +1416,17 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.45.0: + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + version "2.1.28" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" + integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== dependencies: - mime-db "1.44.0" + mime-db "1.45.0" minimatch@^3.0.4: version "3.0.4" @@ -1159,18 +1468,18 @@ ms@^2.1.1: integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== needle@^2.2.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.5.2.tgz#cf1a8fce382b5a280108bba90a14993c00e4010a" - integrity sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ== + version "2.6.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.6.0.tgz#24dbb55f2509e2324b4a99d61f413982013ccdbe" + integrity sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== dependencies: debug "^3.2.6" iconv-lite "^0.4.4" sax "^1.2.4" -node-addon-api@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.0.tgz#f9afb8d777a91525244b01775ea0ddbe1125483b" - integrity sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA== +node-addon-api@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239" + integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== node-gyp@3.x: version "3.8.0" @@ -1456,11 +1765,11 @@ source-map@^0.6.0: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== sqlite3@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.0.tgz#1bfef2151c6bc48a3ab1a6c126088bb8dd233566" - integrity sha512-rjvqHFUaSGnzxDy2AHCwhHy6Zp6MNJzCPGYju4kD8yi6bze4d1/zMTg6C7JI49b7/EM7jKMTvyfN/4ylBKdwfw== + version "5.0.1" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.1.tgz#d5b58c8d1568bbaf13062eb9465982f36324f78a" + integrity sha512-kh2lTIcYNfmVcvhVJihsYuPj9U0xzBbh6bmqILO2hkryWSC9RRhzYmkIDtJkJ+d8Kg4wZRJ0T1reyHUEspICfg== dependencies: - node-addon-api "2.0.0" + node-addon-api "^3.0.0" node-pre-gyp "^0.11.0" optionalDependencies: node-gyp "3.x" @@ -1592,9 +1901,9 @@ typescript@^4.0.5: integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" diff --git a/package.json b/package.json index 402661d..488dd91 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dforsber/s3-selectable", - "version": "1.1.0", + "version": "1.1.1", "description": "S3 Select over Glue Table", "main": "dist/cjs/index.js", "types": "dist/cjs/index.d.ts", @@ -39,30 +39,30 @@ } }, "dependencies": { - "@aws-sdk/client-glue": "^3.1.0", - "@aws-sdk/client-s3": "^3.1.0", + "@aws-sdk/client-glue": "^3.2.0", + "@aws-sdk/client-s3": "^3.2.0", "merge-stream": "^2.0.0", "node-sql-parser": "^1.11.0", "sqlite3": "^5.0.0" }, "devDependencies": { "@aws-sdk/types": "3.1.0", - "@types/jest": "^26.0.15", + "@types/jest": "^26.0.20", "@types/merge-stream": "^1.1.2", - "@types/node": "^14.14.6", + "@types/node": "^14.14.20", "@types/sqlite3": "^3.1.6", - "@typescript-eslint/eslint-plugin": "^4.6.1", - "@typescript-eslint/parser": "^4.6.1", - "eslint": "^7.2.0", + "@typescript-eslint/eslint-plugin": "^4.13.0", + "@typescript-eslint/parser": "^4.13.0", + "eslint": "^7.17.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest": "^24.1.0", - "eslint-plugin-prettier": "^3.1.3", - "husky": "^4.2.5", + "eslint-plugin-prettier": "^3.3.1", + "husky": "^4.3.7", "jest": "^26.6.3", "onchange": "^7.0.2", "prettier": "^2.0.5", "rimraf": "^3.0.2", "ts-jest": "^26.4.3", - "typescript": "^4.0.5" + "typescript": "^4.1.3" } } diff --git a/src/mappers/glueTableToS3Keys.mapper.test.ts b/src/mappers/glueTableToS3Keys.mapper.test.ts index d3e670f..950abbe 100644 --- a/src/mappers/glueTableToS3Keys.mapper.test.ts +++ b/src/mappers/glueTableToS3Keys.mapper.test.ts @@ -173,6 +173,7 @@ describe("When fetching partitioning information", () => { "Bucket": "dummy-test-bucket", "InputSerialization": Object { "CSV": Object {}, + "CompressionType": "GZIP", }, "PartitionColumns": Array [], } @@ -183,6 +184,7 @@ describe("When fetching partitioning information", () => { "Bucket": "dummy-test-bucket", "InputSerialization": Object { "CSV": Object {}, + "CompressionType": "GZIP", }, "PartitionColumns": Array [], } @@ -211,7 +213,9 @@ describe("When fetching partitioning information", () => { Object { "Bucket": "dummy-test-bucket", "InputSerialization": Object { - "JSON": Object {}, + "JSON": Object { + "Type": "DOCUMENT", + }, }, "PartitionColumns": Array [], } @@ -221,7 +225,9 @@ describe("When fetching partitioning information", () => { Object { "Bucket": "dummy-test-bucket", "InputSerialization": Object { - "JSON": Object {}, + "JSON": Object { + "Type": "DOCUMENT", + }, }, "PartitionColumns": Array [], } diff --git a/src/mappers/glueTableToS3Keys.mapper.ts b/src/mappers/glueTableToS3Keys.mapper.ts index f411adb..81819a7 100644 --- a/src/mappers/glueTableToS3Keys.mapper.ts +++ b/src/mappers/glueTableToS3Keys.mapper.ts @@ -90,11 +90,12 @@ export class GlueTableToS3Key { .map(v => this.partitionColumns.reduce((a, c, i) => `${a}/${c}=${v ? v[i] : "ValueUndefined"}`, "")); } + // This is rudimentary and assumes e.g. that CSV files are GZIP compressed. private getInputSerialisation(desc?: StorageDescriptor): InputSerialization | undefined { if (!desc?.SerdeInfo?.SerializationLibrary) return; const serLib = desc.SerdeInfo.SerializationLibrary.toLowerCase(); - if (serLib.includes("json")) return { JSON: {} }; - if (serLib.includes("simple")) return { CSV: {} }; + if (serLib.includes("json")) return { JSON: { Type: "DOCUMENT" } }; + if (serLib.includes("simple")) return { CSV: {}, CompressionType: "GZIP" }; if (serLib.includes("parquet")) return { Parquet: {} }; return; } diff --git a/src/s3-selectable/s3-selectable.test.ts b/src/s3-selectable/s3-selectable.test.ts index 661b800..afc9079 100644 --- a/src/s3-selectable/s3-selectable.test.ts +++ b/src/s3-selectable/s3-selectable.test.ts @@ -128,6 +128,19 @@ describe("Test selectObjectContent", () => { `); }); + it("selectObjectContent throws when Expression is not SQL", async () => { + const selectable = new S3Selectable(params); + await expect(() => selectable.selectObjectContent({ Expression: "" })).rejects.toThrowError(); + }); + + it("selectObjectContent throws when Expression is not SQL", async () => { + const selectable = new S3Selectable(params); + const sql = "SELECT * FROM db.t WHERE elb_response_code='302' AND ssl_protocol='-'"; + await expect(() => + selectable.selectObjectContent({ Expression: sql, ExpressionType: "PartiQL" }), + ).rejects.toThrowError(); + }); + it("selectObjectContent provides correct results", async () => { const sql = "SELECT * FROM db.t WHERE elb_response_code='302' AND ssl_protocol='-'"; const selectable = new S3Selectable(params); diff --git a/src/s3-selectable/s3-selectable.ts b/src/s3-selectable/s3-selectable.ts index 09420ad..c657b66 100644 --- a/src/s3-selectable/s3-selectable.ts +++ b/src/s3-selectable/s3-selectable.ts @@ -56,6 +56,8 @@ export class S3Selectable { ): Promise { await this.cacheTableMetadata(); if (!params.Expression) throw new Error("S3 Select params Expression is required"); + if (params.ExpressionType && params.ExpressionType !== "SQL") + throw new Error("S3 Select ExpressionType must be SQL"); const whereSql = getSQLWhereString(params.Expression, this.partitionColumns); const filteredPartitionValues = await this.partitionsFilter.filterPartitions(whereSql); const s3Keys = await this.mapper.getKeysByPartitions(filteredPartitionValues); diff --git a/src/utils/sql-query.helper.test.ts b/src/utils/sql-query.helper.test.ts index 8934ef2..5d05848 100644 --- a/src/utils/sql-query.helper.test.ts +++ b/src/utils/sql-query.helper.test.ts @@ -1,4 +1,5 @@ import { + getPlainSQLAndExpr, getSQLWhereAST, getSQLWhereString, getSQLWhereStringFromAST, @@ -76,6 +77,25 @@ describe("ensuring JSON table queries work too", () => { it("SELECT * FROM db.t[*].path1[*].id AS d", () => { expect(getTableAndDbAndExpr("SELECT * FROM db.t[*].path1[*].id AS d")).toEqual(["db", "t", "[*].path1[*].id"]); }); + // get plain SQL and expression with s3Object "table" + it("SELECT * FROM s3Object[*]", () => { + expect(getPlainSQLAndExpr("SELECT * FROM s3Object[*]")).toEqual(["SELECT * FROM s3Object", "[*]"]); + }); + it("SELECT * FROM s3Object[*].path1", () => { + expect(getPlainSQLAndExpr("SELECT * FROM s3Object[*].path1")).toEqual(["SELECT * FROM s3Object", "[*].path1"]); + }); + it("SELECT * FROM s3Object[*].path1[*].id", () => { + expect(getPlainSQLAndExpr("SELECT * FROM s3Object[*].path1[*].id")).toEqual([ + "SELECT * FROM s3Object", + "[*].path1[*].id", + ]); + }); + it("SELECT * FROM s3Object[*].path1[*].id AS d", () => { + expect(getPlainSQLAndExpr("SELECT * FROM s3Object[*].path1[*].id AS d")).toEqual([ + "SELECT * FROM s3Object AS d", + "[*].path1[*].id", + ]); + }); }); describe("SQL WHERE clauses", () => { diff --git a/src/utils/sql-query.helper.ts b/src/utils/sql-query.helper.ts index ce5b645..dfb417d 100644 --- a/src/utils/sql-query.helper.ts +++ b/src/utils/sql-query.helper.ts @@ -28,13 +28,14 @@ export function getTableAndDbFromAST(ast: AST | AST[]): [string | null, string] return [db, table]; } -function getPlainSQLAndExpr(sql: string): [string, string] { - const matches = sql.match(/FROM (\w+)\.(\w+)(\S*)\s*(.*)$/im); - const expr = matches && matches.length >= 4 ? matches[3] : ""; - //const rest = matches && matches.length >= 5 ? matches[4] : ""; +export function getPlainSQLAndExpr(sql: string): [string, string] { + const regex = /FROM (\w+)(\.*)(\w*)(\S*)\s*(.*)$/im; + const matches = sql.match(regex); + const expr = matches && matches.length >= 5 ? matches[4] : ""; + //const rest = matches && matches.length >= 6 ? matches[5] : ""; if (expr.trim() === ";") throw new Error("Multiple queries not supported (;)"); if (expr.trim()[0] === ".") throw new Error("Can not use format FROM a.b.c"); - const plainSql = sql.replace(/FROM (\w+)\.(\w+)(\S*)\s*(.*)$/im, `FROM $1.$2 $4`); + const plainSql = sql.replace(regex, `FROM $1$2$3 $5`).trim(); return [plainSql, expr]; } diff --git a/yarn.lock b/yarn.lock index be814b0..e8618a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -67,99 +67,99 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/client-glue@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-glue/-/client-glue-3.1.0.tgz#2ec3e925bf09dddf783c8c210b56145b17610ff5" - integrity sha512-EjOKUrNYA3Yzz7r0yiYsfQZMc9/prRrOtnsd7l/9dzoTOpaD0NtuOBwOFogK8eVfdfOkeEnPprLZELS/W5wdyw== +"@aws-sdk/client-glue@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-glue/-/client-glue-3.2.0.tgz#1e25f70338dbad9298cfaecc1d0c14cd07976c35" + integrity sha512-bVhtoQG3tbINk2jrxcS9co8RuZWUW5F4GcnLQ6qFR6PdO9jlkP11aqrq2C8uQpU/dCWYUV2xM48Rxl+xvix8Bw== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.1.0" + "@aws-sdk/config-resolver" "3.2.0" "@aws-sdk/credential-provider-node" "3.1.0" - "@aws-sdk/fetch-http-handler" "3.1.0" + "@aws-sdk/fetch-http-handler" "3.2.0" "@aws-sdk/hash-node" "3.1.0" - "@aws-sdk/invalid-dependency" "3.1.0" - "@aws-sdk/middleware-content-length" "3.1.0" - "@aws-sdk/middleware-host-header" "3.1.0" - "@aws-sdk/middleware-logger" "3.1.0" - "@aws-sdk/middleware-retry" "3.1.0" - "@aws-sdk/middleware-serde" "3.1.0" - "@aws-sdk/middleware-signing" "3.1.0" + "@aws-sdk/invalid-dependency" "3.2.0" + "@aws-sdk/middleware-content-length" "3.2.0" + "@aws-sdk/middleware-host-header" "3.2.0" + "@aws-sdk/middleware-logger" "3.2.0" + "@aws-sdk/middleware-retry" "3.2.0" + "@aws-sdk/middleware-serde" "3.2.0" + "@aws-sdk/middleware-signing" "3.2.0" "@aws-sdk/middleware-stack" "3.1.0" - "@aws-sdk/middleware-user-agent" "3.1.0" + "@aws-sdk/middleware-user-agent" "3.2.0" "@aws-sdk/node-config-provider" "3.1.0" - "@aws-sdk/node-http-handler" "3.1.0" - "@aws-sdk/protocol-http" "3.1.0" - "@aws-sdk/smithy-client" "3.1.0" + "@aws-sdk/node-http-handler" "3.2.0" + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/smithy-client" "3.2.0" "@aws-sdk/url-parser-browser" "3.1.0" "@aws-sdk/url-parser-node" "3.1.0" "@aws-sdk/util-base64-browser" "3.1.0" "@aws-sdk/util-base64-node" "3.1.0" "@aws-sdk/util-body-length-browser" "3.1.0" "@aws-sdk/util-body-length-node" "3.1.0" - "@aws-sdk/util-user-agent-browser" "3.1.0" - "@aws-sdk/util-user-agent-node" "3.1.0" + "@aws-sdk/util-user-agent-browser" "3.2.0" + "@aws-sdk/util-user-agent-node" "3.2.0" "@aws-sdk/util-utf8-browser" "3.1.0" "@aws-sdk/util-utf8-node" "3.1.0" tslib "^2.0.0" -"@aws-sdk/client-s3@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.1.0.tgz#9c39f4588420696e1a4920f8315f778a7896b858" - integrity sha512-RX/eBi3mHoJGkS146tA4ScSdOwSLEkHWlETFkcqVYdH6IP5FT9CiwRqSf6aNRE+LQiZXoBxeOdvGFXg2jWg83w== +"@aws-sdk/client-s3@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.2.0.tgz#413b504d6f63059ee8e20f4da7bfd62a775b162a" + integrity sha512-iK/NkA/mysiNsZYLdvBSU/2/CKUHnqbjPbCwYIJqlRK04ymIsA02cayissQNQ2H5ZEJR5BCBm3KhR9tb41o5Hg== dependencies: "@aws-crypto/sha256-browser" "^1.0.0" "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.1.0" + "@aws-sdk/config-resolver" "3.2.0" "@aws-sdk/credential-provider-node" "3.1.0" - "@aws-sdk/eventstream-serde-browser" "3.1.0" - "@aws-sdk/eventstream-serde-config-resolver" "3.1.0" - "@aws-sdk/eventstream-serde-node" "3.1.0" - "@aws-sdk/fetch-http-handler" "3.1.0" + "@aws-sdk/eventstream-serde-browser" "3.2.0" + "@aws-sdk/eventstream-serde-config-resolver" "3.2.0" + "@aws-sdk/eventstream-serde-node" "3.2.0" + "@aws-sdk/fetch-http-handler" "3.2.0" "@aws-sdk/hash-blob-browser" "3.1.0" "@aws-sdk/hash-node" "3.1.0" "@aws-sdk/hash-stream-node" "3.1.0" - "@aws-sdk/invalid-dependency" "3.1.0" + "@aws-sdk/invalid-dependency" "3.2.0" "@aws-sdk/md5-js" "3.1.0" - "@aws-sdk/middleware-apply-body-checksum" "3.1.0" - "@aws-sdk/middleware-bucket-endpoint" "3.1.0" - "@aws-sdk/middleware-content-length" "3.1.0" - "@aws-sdk/middleware-expect-continue" "3.1.0" - "@aws-sdk/middleware-host-header" "3.1.0" + "@aws-sdk/middleware-apply-body-checksum" "3.2.0" + "@aws-sdk/middleware-bucket-endpoint" "3.2.0" + "@aws-sdk/middleware-content-length" "3.2.0" + "@aws-sdk/middleware-expect-continue" "3.2.0" + "@aws-sdk/middleware-host-header" "3.2.0" "@aws-sdk/middleware-location-constraint" "3.1.0" - "@aws-sdk/middleware-logger" "3.1.0" - "@aws-sdk/middleware-retry" "3.1.0" - "@aws-sdk/middleware-sdk-s3" "3.1.0" - "@aws-sdk/middleware-serde" "3.1.0" - "@aws-sdk/middleware-signing" "3.1.0" + "@aws-sdk/middleware-logger" "3.2.0" + "@aws-sdk/middleware-retry" "3.2.0" + "@aws-sdk/middleware-sdk-s3" "3.2.0" + "@aws-sdk/middleware-serde" "3.2.0" + "@aws-sdk/middleware-signing" "3.2.0" "@aws-sdk/middleware-ssec" "3.1.0" "@aws-sdk/middleware-stack" "3.1.0" - "@aws-sdk/middleware-user-agent" "3.1.0" + "@aws-sdk/middleware-user-agent" "3.2.0" "@aws-sdk/node-config-provider" "3.1.0" - "@aws-sdk/node-http-handler" "3.1.0" - "@aws-sdk/protocol-http" "3.1.0" - "@aws-sdk/smithy-client" "3.1.0" + "@aws-sdk/node-http-handler" "3.2.0" + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/smithy-client" "3.2.0" "@aws-sdk/url-parser-browser" "3.1.0" "@aws-sdk/url-parser-node" "3.1.0" "@aws-sdk/util-base64-browser" "3.1.0" "@aws-sdk/util-base64-node" "3.1.0" "@aws-sdk/util-body-length-browser" "3.1.0" "@aws-sdk/util-body-length-node" "3.1.0" - "@aws-sdk/util-user-agent-browser" "3.1.0" - "@aws-sdk/util-user-agent-node" "3.1.0" + "@aws-sdk/util-user-agent-browser" "3.2.0" + "@aws-sdk/util-user-agent-node" "3.2.0" "@aws-sdk/util-utf8-browser" "3.1.0" "@aws-sdk/util-utf8-node" "3.1.0" - "@aws-sdk/util-waiter" "3.1.0" + "@aws-sdk/util-waiter" "3.2.0" "@aws-sdk/xml-builder" "3.1.0" fast-xml-parser "^3.16.0" tslib "^2.0.0" -"@aws-sdk/config-resolver@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.1.0.tgz#36987002c18884847aa1c96e0daf546b5f9caff6" - integrity sha512-/8hNlmeUPd1Ey9WqaZsydjWpDh1rcZpzOiiIhszOj3gGhUhsGsYGqP5oCwR9vMJf0Z5+o9diGT1QLMy9Rno6pw== +"@aws-sdk/config-resolver@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.2.0.tgz#c83de904f155282c91e0972b5053937ea1f05160" + integrity sha512-+PRjXpWq8JlN/ilO2F5sh/HAOkoCJkGnu/e8rfnND88tghVVauFPm7xTR2LHOGp1ugpUJm8lG/iEzpYP1EUcpA== dependencies: - "@aws-sdk/signature-v4" "3.1.0" + "@aws-sdk/signature-v4" "3.2.0" tslib "^1.8.0" "@aws-sdk/credential-provider-env@3.1.0": @@ -218,45 +218,45 @@ "@aws-sdk/util-hex-encoding" "3.1.0" tslib "^1.8.0" -"@aws-sdk/eventstream-serde-browser@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.1.0.tgz#e62f745ecb5336a957fe645f6d596501051ab73a" - integrity sha512-a7P8JzJhHTFAc6sY2uBVMr8RpLap58LXOgWUEQmozFOK6Klu2NxsdzfNGJAURsc1tK6cw126fidA9UMH/NR20Q== +"@aws-sdk/eventstream-serde-browser@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.2.0.tgz#74716fe631c560f1d90fec25bdf0601435553545" + integrity sha512-i4cUajOcI4uNxGgd133D2PAKb1/wkztGQOuak2SFGw5mgMWVPjy/WpRReEV/Fl9I+sk/c6RePhkypexwSjXo9A== dependencies: "@aws-sdk/eventstream-marshaller" "3.1.0" - "@aws-sdk/eventstream-serde-universal" "3.1.0" + "@aws-sdk/eventstream-serde-universal" "3.2.0" tslib "^1.8.0" -"@aws-sdk/eventstream-serde-config-resolver@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.1.0.tgz#f4f95c4770ea34b06d79ef61eb8cbd73ac8403bc" - integrity sha512-OxgQNKNKOuXAy4ID77EC7glHALGOGdDt+fDteeajEEZ+XXQ2q4maIAbQ8N44bZcy4E8D20YEesaHDAtsDiUvPA== +"@aws-sdk/eventstream-serde-config-resolver@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.2.0.tgz#8ae2561c5e867868fb723c9f24b5fe1b44fa4ac0" + integrity sha512-1/G0MyB35C7WVdDkHfnQ/x9r3NxdN62KZ45oZT0QddnYqvWDn37Ze8oVd583Zz53za8xvEqeHhibNrnDNWoFPg== dependencies: tslib "^1.8.0" -"@aws-sdk/eventstream-serde-node@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.1.0.tgz#23d6630385d7023d3da9c905174ee391b5d9e5d6" - integrity sha512-xn3SwHhi9UDi6gE9fQxD8j+fxRzfnMWiu688sneoGSSzZl4e5lZtrRbMGWKdtT840dp+GrEXE6BVobUelOyVHA== +"@aws-sdk/eventstream-serde-node@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.2.0.tgz#363a1edeca9960f5298554865a3a7c660bfe29f0" + integrity sha512-BraMm315MUuVIiunox9pC9VZ3kZeFW1LpfXuc2kIji/LTZjEZchiyUHfwDkjcq9GkGHDyPLhdlNtquEXk4gtow== dependencies: "@aws-sdk/eventstream-marshaller" "3.1.0" - "@aws-sdk/eventstream-serde-universal" "3.1.0" + "@aws-sdk/eventstream-serde-universal" "3.2.0" tslib "^1.8.0" -"@aws-sdk/eventstream-serde-universal@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.1.0.tgz#c48f51c92711cf0ec3a8e93b466d4dde8128d936" - integrity sha512-dnrsnLqBnFddxLtFGzDE9SBNl7+xJmgsL7SI9ALqxgvJkK7MVVj9+kzCEyypNHcRCG6OUTypvY+wjgMXJAtHUg== +"@aws-sdk/eventstream-serde-universal@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.2.0.tgz#d7b19bf85fd9f83e5fec0202e7ea3b51d02de5b3" + integrity sha512-WAS6+sDrFqSHrw3r37Tw815jaWH1IiEn+lYSONoqZE7lD2ySLFQPWdDgHtOnhidmZYpzi8OGjB4ebh8aFXXiZA== dependencies: "@aws-sdk/eventstream-marshaller" "3.1.0" tslib "^1.8.0" -"@aws-sdk/fetch-http-handler@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.1.0.tgz#2e495cbd5a633c3a5f9935b59faa9c8c0ed8b5e2" - integrity sha512-QCYGCdQuV3XLgqvKoJD3C/GO+cEZQOazII/rPfaeVXquv8Xrn85UJ3PZ3uFCzVVmjnm1RidwseRQoYrSsjmRhQ== +"@aws-sdk/fetch-http-handler@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.2.0.tgz#116bfc06b3de797d4c746962874ef00e66fda024" + integrity sha512-Y8cw7+HNhxSpYZmd78Bq46rYUUCqnRH9AgHXkLifsigt4RsEAfYhODhEUQhEhJ/zwgadvj/fIKJWKdSiCbiC1A== dependencies: - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" "@aws-sdk/querystring-builder" "3.1.0" "@aws-sdk/util-base64-browser" "3.1.0" tslib "^1.8.0" @@ -285,10 +285,10 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/invalid-dependency@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.1.0.tgz#834c4e4a34d481bd3d4467437441ab035634710d" - integrity sha512-PNKFfIC9w25MA/fV5FnjFfFpbNiLaojgS2RtT/+L5pyic2NJ3spGNlF0pMrnPPtbrFFHaOy/E7bRa0qVtNWEyw== +"@aws-sdk/invalid-dependency@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.2.0.tgz#2c2c19cbec17ff28333c68e28420db6902a4374b" + integrity sha512-8hlqE4pWo2DoM6pAqjL+A3zYwUMaxP/RCGO+0zKbZHVw2stdRDzpO+jUfzZHR+mPJ+L/2wPwhK8D9n3yBriNBQ== dependencies: tslib "^1.8.0" @@ -307,55 +307,55 @@ "@aws-sdk/util-utf8-browser" "3.1.0" tslib "^1.8.0" -"@aws-sdk/middleware-apply-body-checksum@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.1.0.tgz#85504e7e7883830ffa06954a07f57b1fdb003408" - integrity sha512-q1Jx8HhC7fQjfrCUjbdlRw5F0Vr+gwjHf4sKd+S+FYO+15+PVtukBiKfP3lEW4KKREjTv1h/qPEjhv+CK4nN7w== +"@aws-sdk/middleware-apply-body-checksum@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.2.0.tgz#0c18db7ad715037736ed56adaad08bb42c3f2d62" + integrity sha512-tkkWT0ieOPbE59kb6VbrQGzsqj9fXUY29mCM2wrnz2C00jtmfKP+ipHMCH0Lj/+09tvwkjCMW3Tm4WtYv+5NRw== dependencies: "@aws-sdk/is-array-buffer" "3.1.0" - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" tslib "^1.8.0" -"@aws-sdk/middleware-bucket-endpoint@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.1.0.tgz#38fb980fe99c42ddc264db40b93f28f84b3cc1e2" - integrity sha512-/NZuSbqSNARgsZqrRZ8yDXGqF0MSdA/vhNwXAk8BVz/oav4fveJ4KiMMO7Pq5918ZWJ3v//4bSezTnKLDzKmAw== +"@aws-sdk/middleware-bucket-endpoint@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.2.0.tgz#639c57393fa5a744b3596792609eb39660e513cf" + integrity sha512-K3aHf/NldosV17tSS/EkgaLThI6fOlbkTxBDj5JwhRehxHytS4qTYD4RiWgnDhCnYMAiKpsI2GSmC3a/+AYf2w== dependencies: - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" "@aws-sdk/util-arn-parser" "3.1.0" tslib "^1.8.0" -"@aws-sdk/middleware-content-length@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.1.0.tgz#af100e6f724a188bb2963372de8d40868905be51" - integrity sha512-+QGIYkAch0q3a8LrbCS21MEKlE0WgtZBOJl76M3LZtvnbvgKkAmL4oDc+HjGD1jYuNRSt+hQZgqofuBDe8fyyw== +"@aws-sdk/middleware-content-length@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.2.0.tgz#876943c7498e930595621395e5928fc59cf8ed68" + integrity sha512-xS7zdcRcubv7WKs5L/RG69EuuatuPxYNQT4O9epQyUaOpTHKzdVd1wnBK+otWYxI9qnCjIXwwmMyGbJXD9OHhw== dependencies: - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" tslib "^1.8.0" -"@aws-sdk/middleware-expect-continue@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.1.0.tgz#3453aeb345ea852ebeefe392f7706b7573dd3c23" - integrity sha512-NCuF3BMf5QqXv4iYr4eGnmg7BfIpFjPvjxapB5cQbzUOXIyUtlYWUu7QrsdBxCsqgOhVJ4mAiqliVsdxML5yZA== +"@aws-sdk/middleware-expect-continue@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.2.0.tgz#73c30e79080ac80a70602e4c9995e37a806fa26f" + integrity sha512-NSeOgcY0FOloRPOqjiSPu5rWjhk+531MEqvDRWaZL3L8+ZauRHTBfnaB3nTdoaEj6ULhH0+vNgKUJnxsd3Z5Dw== dependencies: - "@aws-sdk/middleware-header-default" "3.1.0" - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/middleware-header-default" "3.2.0" + "@aws-sdk/protocol-http" "3.2.0" tslib "^1.8.0" -"@aws-sdk/middleware-header-default@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-3.1.0.tgz#0b41d113f878d95132e10a48ca4c9667c28cf325" - integrity sha512-BJFQXxkkuIkN679bqqTo9hBUuTFtO4izzSY3WPnnYYcQwYTIH/4JSifCpJWw+AjbvTZ2rA2DrWaTNGz3zuiBGA== +"@aws-sdk/middleware-header-default@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-header-default/-/middleware-header-default-3.2.0.tgz#0c3b683931416c51cfc36d0c6f2692a412a10855" + integrity sha512-dv7CvAg9/rCIXcLMLX1cbeZL9DaVsqZjXS3ebYGfa8nZi0Qs+b6bdZH9q7B5qPw6pBImIDDRzj1J9va1z4NnLA== dependencies: - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" tslib "^1.8.0" -"@aws-sdk/middleware-host-header@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.1.0.tgz#61f22f7d7ce8907d0dbc817ff67ec5545012dc51" - integrity sha512-x86fAcqhtK6ObgPJHFLRaZP+cC4gI185QwxqP72balLgIsJJ6InS7441sOMPr5AZ9xgLJyPPKXouQ5zFBYjwpw== +"@aws-sdk/middleware-host-header@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.2.0.tgz#cf5d0868f939834fb45c4490c1118eaf25317505" + integrity sha512-URRRaqO74DSdhqYyKbyCyadJ9No17KBMmgwz2OKecdwp6/pUVNQmlxhj1cG9leWUkBuOHo6weRvWc5zXwvfy1Q== dependencies: - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" tslib "^1.8.0" "@aws-sdk/middleware-location-constraint@3.1.0": @@ -365,47 +365,47 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/middleware-logger@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.1.0.tgz#6356f6d79524493a0485bfd86f621d7a882daa1a" - integrity sha512-RYJbms7ECg1FgYmN/IyK9U9nzWZtUmt2ZPBunUqvab/ldjaXpAtJq3IYdl1E/rgbc0LSTRDjyGC4erMDOT8IJg== +"@aws-sdk/middleware-logger@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.2.0.tgz#9d4bf84fbf7a0ddc144e6c660f1b806a23a42a6e" + integrity sha512-vkex6bsYqafdvrLe4MXJDJrEfvRb5Z8z01lVlaEV2bzXFqw7WNuFVDRC80GE/YB+r2ds/n9QU4EYUSX9wewoJQ== dependencies: tslib "^1.8.0" -"@aws-sdk/middleware-retry@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.1.0.tgz#4df049c73121a83e19f5078e90a411b93a8cf7de" - integrity sha512-jNewsmLhuSHCtwpuQlsOuQ/Cig7BE4BIF7cfpWaczqYaG1F/rdTlAmb69ugg5pVby7ccj2jgA4aw+achjuzqSw== +"@aws-sdk/middleware-retry@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.2.0.tgz#72bf988d90d9b0192aa7b290fc340b9f2e57a193" + integrity sha512-roecjUD9di1kqyCewk8pGXcsiHyi8kte5Is5bo9kCPfqHhtDN9L/efOhC+rhT0N9nKplC4rZGE4aopxNhMbLtQ== dependencies: - "@aws-sdk/protocol-http" "3.1.0" - "@aws-sdk/service-error-classification" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/service-error-classification" "3.2.0" react-native-get-random-values "^1.4.0" tslib "^1.8.0" uuid "^3.0.0" -"@aws-sdk/middleware-sdk-s3@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.1.0.tgz#e602bde5b9b5abe33e9087f61cf0f0cae9157bad" - integrity sha512-qH2RBt9EdDIO/2PGl7/QyIt9C4WuY6kVfx/S1Bh26wSY9s11VU73CDanZtgNQwIiX20v8DaPlg5dp2hse7Nr7w== +"@aws-sdk/middleware-sdk-s3@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.2.0.tgz#983197d248e4445cc60ac7c73dd5d912e49017fd" + integrity sha512-EJmOAqjc0qWV5OUQ9PRC20GaKQGz5JhZaELRs1cYaMKOY2h8MKGhF6aZFo0dTvYEv3t2T2t0qsWqHdEc3A/CcA== dependencies: - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" "@aws-sdk/util-arn-parser" "3.1.0" tslib "^1.8.0" -"@aws-sdk/middleware-serde@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.1.0.tgz#a80b96dc0008546d9e9e9bce7e9b1ec134edbc6d" - integrity sha512-vXdYlzeBoJCqe+xhlFE9J62EyREvU1MVC6p3m3QPtfXuYlQwRb8WhlFFDFrDdA7V2usBjx5aM67OZnapplyUfg== +"@aws-sdk/middleware-serde@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.2.0.tgz#aff46b0457f44738cdc542ea4bea01160d437300" + integrity sha512-dWTL5lIjosKCUDyaNtEolaGpo/KwoM1Zx4NdMUBLYBy9v0vKSnpRLPXxyM2EREVJYHTVrvm6UoW8dM+5RFiN7A== dependencies: tslib "^1.8.0" -"@aws-sdk/middleware-signing@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.1.0.tgz#d48c18f159f867ca5efe34c4993880e6820cc11e" - integrity sha512-3zNsonJ/nkBL8gUWr2v1vQ/NKIQQgSjmrxIa4xUxRcqOOO1qgZgjablxYHQlX07B6defhaOS2/p/EDmF+LfPqQ== +"@aws-sdk/middleware-signing@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.2.0.tgz#2ad5288d6543281a7e704102f6d446acdb9efaaa" + integrity sha512-XkDu0lMkdlf95nE2aYyAFmXOzBD+noVebyB1dlJDQCZWNzGkefc+8Nez3lCgyd2+KuEyHXMmQsqZwnmygpRvLQ== dependencies: - "@aws-sdk/protocol-http" "3.1.0" - "@aws-sdk/signature-v4" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" + "@aws-sdk/signature-v4" "3.2.0" tslib "^1.8.0" "@aws-sdk/middleware-ssec@3.1.0": @@ -422,12 +422,12 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/middleware-user-agent@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.1.0.tgz#b35ce7fae8f672aa9922bc28082137fa8c2f0486" - integrity sha512-ghUD5ZhGdvPEctacO+INnQpdpQUV8N9hC9We7ftAE75PGBG/aB8qnVWYV8uKAxx8ruNAi+iU4j+4B4qLFNMx2A== +"@aws-sdk/middleware-user-agent@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.2.0.tgz#19e64961feb6a41721e3164538031e21858ad7ee" + integrity sha512-rME49AFlVZSwgxTLQo/5Ok012HRcg9xhSFK4oOEkPJiYyGedvsF+Qy6sz3VjQRL2SvUvoAp03Wqbxe/Keewdbw== dependencies: - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" tslib "^1.8.0" "@aws-sdk/node-config-provider@3.1.0": @@ -439,13 +439,13 @@ "@aws-sdk/shared-ini-file-loader" "3.1.0" tslib "^1.8.0" -"@aws-sdk/node-http-handler@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.1.0.tgz#b7fdbc3a1928127b2eb2064177502e11324f7bb8" - integrity sha512-T1yLundJ4tPeIt9IaOk24kBNBCe54UhCXXrh/0SSZZ26DLINPV5mF22wZKxgMpvKTbtJ6vlag+DhJe/ldqJ2qQ== +"@aws-sdk/node-http-handler@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.2.0.tgz#cf6b12b021d61933202522179e5bd5710e565afa" + integrity sha512-C6bwM9RNINF2r7wTjQ7esjwlTnEIUZkJ+hyMGwOUxc4AqHCdc1PGEFwuMjQWhiyUtvR3hd7hfPj5GWvFP/PUTQ== dependencies: "@aws-sdk/abort-controller" "3.1.0" - "@aws-sdk/protocol-http" "3.1.0" + "@aws-sdk/protocol-http" "3.2.0" "@aws-sdk/querystring-builder" "3.1.0" tslib "^1.8.0" @@ -456,10 +456,10 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/protocol-http@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.1.0.tgz#7da0ebcf02a40a8300f3bd52f9206f25fdf1ca7f" - integrity sha512-61qInY/AESslV6ZYTAgwoB172K/H+5EiXeWnmWExOGH3vkfkkxQBYCTcATdtasP6QYTfYiePhyjJ8eUyQL3C0w== +"@aws-sdk/protocol-http@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.2.0.tgz#0d352045bae38c66a2c97611983bfb545351c4e0" + integrity sha512-7FA23ABTZ18MsQD0GcICj6dU9HRInf6l6XvtnlPUS6ZvjDbsNRqEROUtvjl8dkDDP1mFpEQuHJ5e9MO5peEm7g== dependencies: tslib "^1.8.0" @@ -478,10 +478,10 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/service-error-classification@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.1.0.tgz#9471f761f36ebe3efeb0791d7e2af517f87ef4a2" - integrity sha512-zUNV9Fyguto8VOhinKvzIoQxwfYMSSLO6xTKJLyTB+cDv51SX5sh+lqX6IKGhuqz2Wse1ynuoLGOnmVoe4aUpQ== +"@aws-sdk/service-error-classification@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.2.0.tgz#286ba27368276132db89f21b79724bf95cbd8d97" + integrity sha512-ZzeSZ0HnJq5zUkA466zVEZAE1SVqYuvGzxRGTEszbMW2eWPLonJgUwiT5nDScmJQcDju044iP//2KnBvn62Rhg== "@aws-sdk/shared-ini-file-loader@3.1.0": version "3.1.0" @@ -490,20 +490,20 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/signature-v4@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.1.0.tgz#b5d480af74629e86163ffe86a3f13a37f1f1b250" - integrity sha512-TFbe/Xf02a4baU1tg/S/w1A5AKaD7YHuqQg4Ak+HbRvAFe77/C/rbqWGnl66BDcukMvx13Ywd5ZkraAVSaTlzg== +"@aws-sdk/signature-v4@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.2.0.tgz#9eb5c4c3f5c3d448f3929f310baa4ad3682d1ddc" + integrity sha512-Fb81gqaSnuCwO9HFYnztksyFud5X6/Ikr95X3pfrtLcHlHe/S079woWmlDUEgy7lw2X2GY94TcX9jlXuMhTfhA== dependencies: "@aws-sdk/is-array-buffer" "3.1.0" "@aws-sdk/util-hex-encoding" "3.1.0" "@aws-sdk/util-uri-escape" "3.1.0" tslib "^1.8.0" -"@aws-sdk/smithy-client@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.1.0.tgz#dc60223b9af1e99d076871e8138ea9b6ecbf737b" - integrity sha512-l/xCyQ0xLvIX/VZDYC3CGAphXtV7/t1gqfxfATbx1TD3E23PS0XvaV8JAmMWF+Q+rShk+otuYpdaRjGrygTK5w== +"@aws-sdk/smithy-client@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.2.0.tgz#ba93d125f83f385ce6a4600e47339bf036fc7d0a" + integrity sha512-LpBGQ5m/oQ6QkMPQl7yxvBll/NRww4GUCEwpEXw412SUbX7aVTu+CNoUmF2lg8Gwp2XM3NgOkJ9DQ94YwZ/dug== dependencies: "@aws-sdk/middleware-stack" "3.1.0" tslib "^1.8.0" @@ -600,22 +600,20 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/util-user-agent-browser@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.1.0.tgz#471dec78305f39ac9a05968970917b5c66e4312b" - integrity sha512-w31WYjRTXbBn9z/sRy/4IyjIyEeTOon1JvRzlKDbEWm4JXarVbiJcZKs1U3q+9fS9la5uLM1NEQCsgdI1iYERA== +"@aws-sdk/util-user-agent-browser@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.2.0.tgz#f6fdee45817d80a637d7bd66985f516182b6f550" + integrity sha512-ugkLsntS2wpLWCjPs49wnAGhuIAFyHYzTznp0v+Qj/uOkm0ddq4kWp+FwtMxeQMRY0eoBdfqXJAbJLz8w4xlUQ== dependencies: - "@aws-sdk/types" "3.1.0" bowser "^2.11.0" tslib "^1.8.0" -"@aws-sdk/util-user-agent-node@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.1.0.tgz#3fa66564a5fdb0e2851554688dc507127356f941" - integrity sha512-VyyZUR4vrHyT4aLH+ufoaTxFy65K9OtoCEdH1X748HinLZY9JObCCO6lZVNr5b26fGJrbqzoAqaXWgHkmEUpoQ== +"@aws-sdk/util-user-agent-node@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.2.0.tgz#9190f69afdd81bacde16e253af2545a0e3f443cd" + integrity sha512-Ovyq6yc7SL0NWZWBrPKRc0D38xkMH2ulslcnukdNOitv0s8V2Ge09R4T63U0I8IJ7nrKa75Uus6A8vC8Zko3yg== dependencies: "@aws-sdk/node-config-provider" "3.1.0" - "@aws-sdk/types" "3.1.0" tslib "^1.8.0" "@aws-sdk/util-utf8-browser@3.1.0": @@ -640,10 +638,10 @@ "@aws-sdk/util-buffer-from" "3.1.0" tslib "^1.8.0" -"@aws-sdk/util-waiter@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.1.0.tgz#e01dbd6bc903e03101152f65ab9d2e0613f08c2f" - integrity sha512-nMaE3aGCZGVQw10IUXBxIbCXkyaX8T1Fn7GvJxeFJflKcXuKFKBfvkhzimSe/hJDC6Ykn7gNuI+EY+ZoCVXqtQ== +"@aws-sdk/util-waiter@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.2.0.tgz#a7d9b1b094ca517eb3691b35e6bd39c31316ed65" + integrity sha512-1kEr8fGdgTyQyTAnyU5yDCCU4xsMgemrBQSj2qQMNotjDTr02OnDk5drYB0WWuaVZgzVNufqRK6y9AeM6VKoWw== dependencies: "@aws-sdk/abort-controller" "3.1.0" tslib "^1.8.0" @@ -1238,7 +1236,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@26.x", "@types/jest@^26.0.15": +"@types/jest@26.x": version "26.0.19" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.19.tgz#e6fa1e3def5842ec85045bd5210e9bb8289de790" integrity sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ== @@ -1246,6 +1244,14 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" +"@types/jest@^26.0.20": + version "26.0.20" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" + integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + "@types/json-schema@^7.0.3": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" @@ -1258,11 +1264,16 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^14.14.6": +"@types/node@*": version "14.14.16" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.16.tgz#3cc351f8d48101deadfed4c9e4f116048d437b4b" integrity sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw== +"@types/node@^14.14.20": + version "14.14.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340" + integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== + "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" @@ -1302,20 +1313,33 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.6.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.11.1.tgz#7579c6d17ad862154c10bc14b40e5427b729e209" - integrity sha512-fABclAX2QIEDmTMk6Yd7Muv1CzFLwWM4505nETzRHpP3br6jfahD9UUJkhnJ/g2m7lwfz8IlswcwGGPGiq9exw== +"@typescript-eslint/eslint-plugin@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz#5f580ea520fa46442deb82c038460c3dd3524bb6" + integrity sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w== dependencies: - "@typescript-eslint/experimental-utils" "4.11.1" - "@typescript-eslint/scope-manager" "4.11.1" + "@typescript-eslint/experimental-utils" "4.13.0" + "@typescript-eslint/scope-manager" "4.13.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" + lodash "^4.17.15" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.11.1", "@typescript-eslint/experimental-utils@^4.0.1": +"@typescript-eslint/experimental-utils@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz#9dc9ab375d65603b43d938a0786190a0c72be44e" + integrity sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.13.0" + "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/typescript-estree" "4.13.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/experimental-utils@^4.0.1": version "4.11.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.11.1.tgz#2dad3535b878c25c7424e40bfa79d899f3f485bc" integrity sha512-mAlWowT4A6h0TC9F+J5pdbEhjNiEMO+kqPKQ4sc3fVieKL71dEqfkKgtcFVSX3cjSBwYwhImaQ/mXQF0oaI38g== @@ -1327,14 +1351,14 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^4.6.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.11.1.tgz#981e18de2e019d6ca312596615f92e8f6f6598ed" - integrity sha512-BJ3jwPQu1jeynJ5BrjLuGfK/UJu6uwHxJ/di7sanqmUmxzmyIcd3vz58PMR7wpi8k3iWq2Q11KMYgZbUpRoIPw== +"@typescript-eslint/parser@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.13.0.tgz#c413d640ea66120cfcc37f891e8cb3fd1c9d247d" + integrity sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg== dependencies: - "@typescript-eslint/scope-manager" "4.11.1" - "@typescript-eslint/types" "4.11.1" - "@typescript-eslint/typescript-estree" "4.11.1" + "@typescript-eslint/scope-manager" "4.13.0" + "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/typescript-estree" "4.13.0" debug "^4.1.1" "@typescript-eslint/scope-manager@4.11.1": @@ -1345,11 +1369,24 @@ "@typescript-eslint/types" "4.11.1" "@typescript-eslint/visitor-keys" "4.11.1" +"@typescript-eslint/scope-manager@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz#5b45912a9aa26b29603d8fa28f5e09088b947141" + integrity sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ== + dependencies: + "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/visitor-keys" "4.13.0" + "@typescript-eslint/types@4.11.1": version "4.11.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.11.1.tgz#3ba30c965963ef9f8ced5a29938dd0c465bd3e05" integrity sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA== +"@typescript-eslint/types@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.13.0.tgz#6a7c6015a59a08fbd70daa8c83dfff86250502f8" + integrity sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ== + "@typescript-eslint/typescript-estree@4.11.1": version "4.11.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz#a4416b4a65872a48773b9e47afabdf7519eb10bc" @@ -1364,6 +1401,20 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/typescript-estree@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz#cf6e2207c7d760f5dfd8d18051428fadfc37b45e" + integrity sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg== + dependencies: + "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/visitor-keys" "4.13.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + "@typescript-eslint/visitor-keys@4.11.1": version "4.11.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz#4c050a4c1f7239786e2dd4e69691436143024e05" @@ -1372,6 +1423,14 @@ "@typescript-eslint/types" "4.11.1" eslint-visitor-keys "^2.0.0" +"@typescript-eslint/visitor-keys@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz#9acb1772d3b3183182b6540d3734143dce9476fe" + integrity sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g== + dependencies: + "@typescript-eslint/types" "4.13.0" + eslint-visitor-keys "^2.0.0" + abab@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -2189,10 +2248,10 @@ eslint-plugin-jest@^24.1.0: dependencies: "@typescript-eslint/experimental-utils" "^4.0.1" -eslint-plugin-prettier@^3.1.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.0.tgz#61e295349a65688ffac0b7808ef0a8244bdd8d40" - integrity sha512-tMTwO8iUWlSRZIwS9k7/E4vrTsfvsrcM5p1eftyuqWH25nKsz/o6/54I7jwQ/3zobISyC7wMy9ZsFwgTxOcOpQ== +eslint-plugin-prettier@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== dependencies: prettier-linter-helpers "^1.0.0" @@ -2221,10 +2280,10 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.2.0: - version "7.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.16.0.tgz#a761605bf9a7b32d24bb7cde59aeb0fd76f06092" - integrity sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw== +eslint@^7.17.0: + version "7.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" + integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ== dependencies: "@babel/code-frame" "^7.0.0" "@eslint/eslintrc" "^0.2.2" @@ -2502,12 +2561,20 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-versions@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" - integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - semver-regex "^2.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-versions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" + integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== + dependencies: + semver-regex "^3.1.2" flat-cache@^3.0.4: version "3.0.4" @@ -2800,18 +2867,18 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -husky@^4.2.5: - version "4.3.6" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.6.tgz#ebd9dd8b9324aa851f1587318db4cccb7665a13c" - integrity sha512-o6UjVI8xtlWRL5395iWq9LKDyp/9TE7XMOTvIpEVzW638UcGxTmV5cfel6fsk/jbZSTlvfGVJf2svFtybcIZag== +husky@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.7.tgz#ca47bbe6213c1aa8b16bbd504530d9600de91e88" + integrity sha512-0fQlcCDq/xypoyYSJvEuzbDPHFf8ZF9IXKJxlrnvxABTSzK1VPT2RKYQKrcgJ+YD39swgoB6sbzywUqFxUiqjw== dependencies: chalk "^4.0.0" ci-info "^2.0.0" compare-versions "^3.6.0" cosmiconfig "^7.0.0" - find-versions "^3.2.0" + find-versions "^4.0.0" opencollective-postinstall "^2.0.2" - pkg-dir "^4.2.0" + pkg-dir "^5.0.0" please-upgrade-node "^3.2.0" slash "^3.0.0" which-pm-runs "^1.0.0" @@ -3663,6 +3730,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -4152,6 +4226,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -4159,6 +4240,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -4245,6 +4333,13 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -4599,10 +4694,10 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -semver-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== +semver-regex@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" + integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.7.1" @@ -5177,7 +5272,7 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.0.5: +typescript@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== @@ -5447,3 +5542,8 @@ yargs@^15.4.1: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==