From 36625ad7a9d83b324cd0e1944f3f7d818540d6ae Mon Sep 17 00:00:00 2001 From: nyyu Date: Sat, 31 May 2025 11:40:28 +0200 Subject: [PATCH] feat: use s3-lite-client --- .gitignore | 4 +- deno.json | 9 + deno.lock | 1110 +------------------------------------------------- package.json | 15 - src/index.ts | 9 +- src/s3.ts | 88 ++-- 6 files changed, 57 insertions(+), 1178 deletions(-) create mode 100644 deno.json delete mode 100644 package.json diff --git a/.gitignore b/.gitignore index cb581e4..31f439b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /build /cache -/node_modules \ No newline at end of file +/node_modules +.env +.vscode diff --git a/deno.json b/deno.json new file mode 100644 index 0000000..811edf9 --- /dev/null +++ b/deno.json @@ -0,0 +1,9 @@ +{ + "imports": { + "@bradenmacdonald/s3-lite-client": "jsr:@bradenmacdonald/s3-lite-client@^0.9.0", + "node-html-parser": "npm:node-html-parser@^7.0.1" + }, + "tasks": { + "start": "deno --allow-env --allow-read --allow-net --allow-sys src/index.ts" + } +} diff --git a/deno.lock b/deno.lock index b370a82..cf26e60 100644 --- a/deno.lock +++ b/deno.lock @@ -1,1075 +1,19 @@ { "version": "5", "specifiers": { - "npm:@aws-sdk/client-s3@^3.820.0": "3.820.0", - "npm:@types/node@^22.15.27": "22.15.27", + "jsr:@bradenmacdonald/s3-lite-client@0.9": "0.9.0", "npm:node-html-parser@^7.0.1": "7.0.1" }, + "jsr": { + "@bradenmacdonald/s3-lite-client@0.9.0": { + "integrity": "76e6f0e61b801b193b82a25a6d5aeac8e407e71a6549da0df539f4642eb15924" + } + }, "npm": { - "@aws-crypto/crc32@5.2.0": { - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "dependencies": [ - "@aws-crypto/util", - "@aws-sdk/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-crypto/crc32/-/crc32-5.2.0.tgz" - }, - "@aws-crypto/crc32c@5.2.0": { - "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", - "dependencies": [ - "@aws-crypto/util", - "@aws-sdk/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz" - }, - "@aws-crypto/sha1-browser@5.2.0": { - "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", - "dependencies": [ - "@aws-crypto/supports-web-crypto", - "@aws-crypto/util", - "@aws-sdk/types", - "@aws-sdk/util-locate-window", - "@smithy/util-utf8@2.3.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz" - }, - "@aws-crypto/sha256-browser@5.2.0": { - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "dependencies": [ - "@aws-crypto/sha256-js", - "@aws-crypto/supports-web-crypto", - "@aws-crypto/util", - "@aws-sdk/types", - "@aws-sdk/util-locate-window", - "@smithy/util-utf8@2.3.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz" - }, - "@aws-crypto/sha256-js@5.2.0": { - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "dependencies": [ - "@aws-crypto/util", - "@aws-sdk/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz" - }, - "@aws-crypto/supports-web-crypto@5.2.0": { - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz" - }, - "@aws-crypto/util@5.2.0": { - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/util-utf8@2.3.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-crypto/util/-/util-5.2.0.tgz" - }, - "@aws-sdk/client-s3@3.820.0": { - "integrity": "sha512-SrKNAj2ztGuyXWH14TG/MmCrbNufPfaDo3zbpxoO5qbpUi2SvOA1xSyJKD23mtzrLGs0+P7U6J/znP2UjdBIWA==", - "dependencies": [ - "@aws-crypto/sha1-browser", - "@aws-crypto/sha256-browser", - "@aws-crypto/sha256-js", - "@aws-sdk/core", - "@aws-sdk/credential-provider-node", - "@aws-sdk/middleware-bucket-endpoint", - "@aws-sdk/middleware-expect-continue", - "@aws-sdk/middleware-flexible-checksums", - "@aws-sdk/middleware-host-header", - "@aws-sdk/middleware-location-constraint", - "@aws-sdk/middleware-logger", - "@aws-sdk/middleware-recursion-detection", - "@aws-sdk/middleware-sdk-s3", - "@aws-sdk/middleware-ssec", - "@aws-sdk/middleware-user-agent", - "@aws-sdk/region-config-resolver", - "@aws-sdk/signature-v4-multi-region", - "@aws-sdk/types", - "@aws-sdk/util-endpoints", - "@aws-sdk/util-user-agent-browser", - "@aws-sdk/util-user-agent-node", - "@aws-sdk/xml-builder", - "@smithy/config-resolver", - "@smithy/core", - "@smithy/eventstream-serde-browser", - "@smithy/eventstream-serde-config-resolver", - "@smithy/eventstream-serde-node", - "@smithy/fetch-http-handler", - "@smithy/hash-blob-browser", - "@smithy/hash-node", - "@smithy/hash-stream-node", - "@smithy/invalid-dependency", - "@smithy/md5-js", - "@smithy/middleware-content-length", - "@smithy/middleware-endpoint", - "@smithy/middleware-retry", - "@smithy/middleware-serde", - "@smithy/middleware-stack", - "@smithy/node-config-provider", - "@smithy/node-http-handler", - "@smithy/protocol-http", - "@smithy/smithy-client", - "@smithy/types", - "@smithy/url-parser", - "@smithy/util-base64", - "@smithy/util-body-length-browser", - "@smithy/util-body-length-node", - "@smithy/util-defaults-mode-browser", - "@smithy/util-defaults-mode-node", - "@smithy/util-endpoints", - "@smithy/util-middleware", - "@smithy/util-retry", - "@smithy/util-stream", - "@smithy/util-utf8@4.0.0", - "@smithy/util-waiter", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/client-s3/-/client-s3-3.820.0.tgz" - }, - "@aws-sdk/client-sso@3.817.0": { - "integrity": "sha512-fCh5rUHmWmWDvw70NNoWpE5+BRdtNi45kDnIoeoszqVg7UKF79SlG+qYooUT52HKCgDNHqgbWaXxMOSqd2I/OQ==", - "dependencies": [ - "@aws-crypto/sha256-browser", - "@aws-crypto/sha256-js", - "@aws-sdk/core", - "@aws-sdk/middleware-host-header", - "@aws-sdk/middleware-logger", - "@aws-sdk/middleware-recursion-detection", - "@aws-sdk/middleware-user-agent", - "@aws-sdk/region-config-resolver", - "@aws-sdk/types", - "@aws-sdk/util-endpoints", - "@aws-sdk/util-user-agent-browser", - "@aws-sdk/util-user-agent-node", - "@smithy/config-resolver", - "@smithy/core", - "@smithy/fetch-http-handler", - "@smithy/hash-node", - "@smithy/invalid-dependency", - "@smithy/middleware-content-length", - "@smithy/middleware-endpoint", - "@smithy/middleware-retry", - "@smithy/middleware-serde", - "@smithy/middleware-stack", - "@smithy/node-config-provider", - "@smithy/node-http-handler", - "@smithy/protocol-http", - "@smithy/smithy-client", - "@smithy/types", - "@smithy/url-parser", - "@smithy/util-base64", - "@smithy/util-body-length-browser", - "@smithy/util-body-length-node", - "@smithy/util-defaults-mode-browser", - "@smithy/util-defaults-mode-node", - "@smithy/util-endpoints", - "@smithy/util-middleware", - "@smithy/util-retry", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/client-sso/-/client-sso-3.817.0.tgz" - }, - "@aws-sdk/core@3.816.0": { - "integrity": "sha512-Lx50wjtyarzKpMFV6V+gjbSZDgsA/71iyifbClGUSiNPoIQ4OCV0KVOmAAj7mQRVvGJqUMWKVM+WzK79CjbjWA==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/core", - "@smithy/node-config-provider", - "@smithy/property-provider", - "@smithy/protocol-http", - "@smithy/signature-v4", - "@smithy/smithy-client", - "@smithy/types", - "@smithy/util-middleware", - "fast-xml-parser", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/core/-/core-3.816.0.tgz" - }, - "@aws-sdk/credential-provider-env@3.816.0": { - "integrity": "sha512-wUJZwRLe+SxPxRV9AENYBLrJZRrNIo+fva7ZzejsC83iz7hdfq6Rv6B/aHEdPwG/nQC4+q7UUvcRPlomyrpsBA==", - "dependencies": [ - "@aws-sdk/core", - "@aws-sdk/types", - "@smithy/property-provider", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/credential-provider-env/-/credential-provider-env-3.816.0.tgz" - }, - "@aws-sdk/credential-provider-http@3.816.0": { - "integrity": "sha512-gcWGzMQ7yRIF+ljTkR8Vzp7727UY6cmeaPrFQrvcFB8PhOqWpf7g0JsgOf5BSaP8CkkSQcTQHc0C5ZYAzUFwPg==", - "dependencies": [ - "@aws-sdk/core", - "@aws-sdk/types", - "@smithy/fetch-http-handler", - "@smithy/node-http-handler", - "@smithy/property-provider", - "@smithy/protocol-http", - "@smithy/smithy-client", - "@smithy/types", - "@smithy/util-stream", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/credential-provider-http/-/credential-provider-http-3.816.0.tgz" - }, - "@aws-sdk/credential-provider-ini@3.817.0": { - "integrity": "sha512-kyEwbQyuXE+phWVzloMdkFv6qM6NOon+asMXY5W0fhDKwBz9zQLObDRWBrvQX9lmqq8BbDL1sCfZjOh82Y+RFw==", - "dependencies": [ - "@aws-sdk/core", - "@aws-sdk/credential-provider-env", - "@aws-sdk/credential-provider-http", - "@aws-sdk/credential-provider-process", - "@aws-sdk/credential-provider-sso", - "@aws-sdk/credential-provider-web-identity", - "@aws-sdk/nested-clients", - "@aws-sdk/types", - "@smithy/credential-provider-imds", - "@smithy/property-provider", - "@smithy/shared-ini-file-loader", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.817.0.tgz" - }, - "@aws-sdk/credential-provider-node@3.817.0": { - "integrity": "sha512-b5mz7av0Lhavs1Bz3Zb+jrs0Pki93+8XNctnVO0drBW98x1fM4AR38cWvGbM/w9F9Q0/WEH3TinkmrMPrP4T/w==", - "dependencies": [ - "@aws-sdk/credential-provider-env", - "@aws-sdk/credential-provider-http", - "@aws-sdk/credential-provider-ini", - "@aws-sdk/credential-provider-process", - "@aws-sdk/credential-provider-sso", - "@aws-sdk/credential-provider-web-identity", - "@aws-sdk/types", - "@smithy/credential-provider-imds", - "@smithy/property-provider", - "@smithy/shared-ini-file-loader", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/credential-provider-node/-/credential-provider-node-3.817.0.tgz" - }, - "@aws-sdk/credential-provider-process@3.816.0": { - "integrity": "sha512-9Tm+AxMoV2Izvl5b9tyMQRbBwaex8JP06HN7ZeCXgC5sAsSN+o8dsThnEhf8jKN+uBpT6CLWKN1TXuUMrAmW1A==", - "dependencies": [ - "@aws-sdk/core", - "@aws-sdk/types", - "@smithy/property-provider", - "@smithy/shared-ini-file-loader", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/credential-provider-process/-/credential-provider-process-3.816.0.tgz" - }, - "@aws-sdk/credential-provider-sso@3.817.0": { - "integrity": "sha512-gFUAW3VmGvdnueK1bh6TOcRX+j99Xm0men1+gz3cA4RE+rZGNy1Qjj8YHlv0hPwI9OnTPZquvPzA5fkviGREWg==", - "dependencies": [ - "@aws-sdk/client-sso", - "@aws-sdk/core", - "@aws-sdk/token-providers", - "@aws-sdk/types", - "@smithy/property-provider", - "@smithy/shared-ini-file-loader", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.817.0.tgz" - }, - "@aws-sdk/credential-provider-web-identity@3.817.0": { - "integrity": "sha512-A2kgkS9g6NY0OMT2f2EdXHpL17Ym81NhbGnQ8bRXPqESIi7TFypFD2U6osB2VnsFv+MhwM+Ke4PKXSmLun22/A==", - "dependencies": [ - "@aws-sdk/core", - "@aws-sdk/nested-clients", - "@aws-sdk/types", - "@smithy/property-provider", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.817.0.tgz" - }, - "@aws-sdk/middleware-bucket-endpoint@3.808.0": { - "integrity": "sha512-wEPlNcs8dir9lXbuviEGtSzYSxG/NRKQrJk5ybOc7OpPGHovsN+QhDOdY3lcjOFdwMTiMIG9foUkPz3zBpLB1A==", - "dependencies": [ - "@aws-sdk/types", - "@aws-sdk/util-arn-parser", - "@smithy/node-config-provider", - "@smithy/protocol-http", - "@smithy/types", - "@smithy/util-config-provider", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.808.0.tgz" - }, - "@aws-sdk/middleware-expect-continue@3.804.0": { - "integrity": "sha512-YW1hySBolALMII6C8y7Z0CRG2UX1dGJjLEBNFeefhO/xP7ZuE1dvnmfJGaEuBMnvc3wkRS63VZ3aqX6sevM1CA==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/protocol-http", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.804.0.tgz" - }, - "@aws-sdk/middleware-flexible-checksums@3.816.0": { - "integrity": "sha512-kftcwDxB/VoCBsUiRgkm5CIuKbTfCN1WLPbis9LRwX3kQhKgGVxG2gG78SHk4TBB0qviWVAd/t+i/KaUgwiAcA==", - "dependencies": [ - "@aws-crypto/crc32", - "@aws-crypto/crc32c", - "@aws-crypto/util", - "@aws-sdk/core", - "@aws-sdk/types", - "@smithy/is-array-buffer@4.0.0", - "@smithy/node-config-provider", - "@smithy/protocol-http", - "@smithy/types", - "@smithy/util-middleware", - "@smithy/util-stream", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.816.0.tgz" - }, - "@aws-sdk/middleware-host-header@3.804.0": { - "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/protocol-http", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz" - }, - "@aws-sdk/middleware-location-constraint@3.804.0": { - "integrity": "sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.804.0.tgz" - }, - "@aws-sdk/middleware-logger@3.804.0": { - "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz" - }, - "@aws-sdk/middleware-recursion-detection@3.804.0": { - "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/protocol-http", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz" - }, - "@aws-sdk/middleware-sdk-s3@3.816.0": { - "integrity": "sha512-jJ+EAXM7gnOwiCM6rrl4AUNY5urmtIsX7roTkxtb4DevJxcS+wFYRRg3/j33fQbuxQZrvk21HqxyZYx5UH70PA==", - "dependencies": [ - "@aws-sdk/core", - "@aws-sdk/types", - "@aws-sdk/util-arn-parser", - "@smithy/core", - "@smithy/node-config-provider", - "@smithy/protocol-http", - "@smithy/signature-v4", - "@smithy/smithy-client", - "@smithy/types", - "@smithy/util-config-provider", - "@smithy/util-middleware", - "@smithy/util-stream", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.816.0.tgz" - }, - "@aws-sdk/middleware-ssec@3.804.0": { - "integrity": "sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-ssec/-/middleware-ssec-3.804.0.tgz" - }, - "@aws-sdk/middleware-user-agent@3.816.0": { - "integrity": "sha512-bHRSlWZ0xDsFR8E2FwDb//0Ff6wMkVx4O+UKsfyNlAbtqCiiHRt5ANNfKPafr95cN2CCxLxiPvFTFVblQM5TsQ==", - "dependencies": [ - "@aws-sdk/core", - "@aws-sdk/types", - "@aws-sdk/util-endpoints", - "@smithy/core", - "@smithy/protocol-http", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.816.0.tgz" - }, - "@aws-sdk/nested-clients@3.817.0": { - "integrity": "sha512-vQ2E06A48STJFssueJQgxYD8lh1iGJoLJnHdshRDWOQb8gy1wVQR+a7MkPGhGR6lGoS0SCnF/Qp6CZhnwLsqsQ==", - "dependencies": [ - "@aws-crypto/sha256-browser", - "@aws-crypto/sha256-js", - "@aws-sdk/core", - "@aws-sdk/middleware-host-header", - "@aws-sdk/middleware-logger", - "@aws-sdk/middleware-recursion-detection", - "@aws-sdk/middleware-user-agent", - "@aws-sdk/region-config-resolver", - "@aws-sdk/types", - "@aws-sdk/util-endpoints", - "@aws-sdk/util-user-agent-browser", - "@aws-sdk/util-user-agent-node", - "@smithy/config-resolver", - "@smithy/core", - "@smithy/fetch-http-handler", - "@smithy/hash-node", - "@smithy/invalid-dependency", - "@smithy/middleware-content-length", - "@smithy/middleware-endpoint", - "@smithy/middleware-retry", - "@smithy/middleware-serde", - "@smithy/middleware-stack", - "@smithy/node-config-provider", - "@smithy/node-http-handler", - "@smithy/protocol-http", - "@smithy/smithy-client", - "@smithy/types", - "@smithy/url-parser", - "@smithy/util-base64", - "@smithy/util-body-length-browser", - "@smithy/util-body-length-node", - "@smithy/util-defaults-mode-browser", - "@smithy/util-defaults-mode-node", - "@smithy/util-endpoints", - "@smithy/util-middleware", - "@smithy/util-retry", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/nested-clients/-/nested-clients-3.817.0.tgz" - }, - "@aws-sdk/region-config-resolver@3.808.0": { - "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/node-config-provider", - "@smithy/types", - "@smithy/util-config-provider", - "@smithy/util-middleware", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz" - }, - "@aws-sdk/signature-v4-multi-region@3.816.0": { - "integrity": "sha512-idcr9NW86sSIXASSej3423Selu6fxlhhJJtMgpAqoCH/HJh1eQrONJwNKuI9huiruPE8+02pwxuePvLW46X2mw==", - "dependencies": [ - "@aws-sdk/middleware-sdk-s3", - "@aws-sdk/types", - "@smithy/protocol-http", - "@smithy/signature-v4", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.816.0.tgz" - }, - "@aws-sdk/token-providers@3.817.0": { - "integrity": "sha512-CYN4/UO0VaqyHf46ogZzNrVX7jI3/CfiuktwKlwtpKA6hjf2+ivfgHSKzPpgPBcSEfiibA/26EeLuMnB6cpSrQ==", - "dependencies": [ - "@aws-sdk/core", - "@aws-sdk/nested-clients", - "@aws-sdk/types", - "@smithy/property-provider", - "@smithy/shared-ini-file-loader", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/token-providers/-/token-providers-3.817.0.tgz" - }, - "@aws-sdk/types@3.804.0": { - "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/types/-/types-3.804.0.tgz" - }, - "@aws-sdk/util-arn-parser@3.804.0": { - "integrity": "sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz" - }, - "@aws-sdk/util-endpoints@3.808.0": { - "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/types", - "@smithy/util-endpoints", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz" - }, - "@aws-sdk/util-locate-window@3.804.0": { - "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz" - }, - "@aws-sdk/util-user-agent-browser@3.804.0": { - "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", - "dependencies": [ - "@aws-sdk/types", - "@smithy/types", - "bowser", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz" - }, - "@aws-sdk/util-user-agent-node@3.816.0": { - "integrity": "sha512-Q6dxmuj4hL7pudhrneWEQ7yVHIQRBFr0wqKLF1opwOi1cIePuoEbPyJ2jkel6PDEv1YMfvsAKaRshp6eNA8VHg==", - "dependencies": [ - "@aws-sdk/middleware-user-agent", - "@aws-sdk/types", - "@smithy/node-config-provider", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.816.0.tgz" - }, - "@aws-sdk/xml-builder@3.804.0": { - "integrity": "sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@aws-sdk/xml-builder/-/xml-builder-3.804.0.tgz" - }, - "@smithy/abort-controller@4.0.4": { - "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/abort-controller/-/abort-controller-4.0.4.tgz" - }, - "@smithy/chunked-blob-reader-native@4.0.0": { - "integrity": "sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==", - "dependencies": [ - "@smithy/util-base64", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz" - }, - "@smithy/chunked-blob-reader@5.0.0": { - "integrity": "sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.0.0.tgz" - }, - "@smithy/config-resolver@4.1.4": { - "integrity": "sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==", - "dependencies": [ - "@smithy/node-config-provider", - "@smithy/types", - "@smithy/util-config-provider", - "@smithy/util-middleware", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/config-resolver/-/config-resolver-4.1.4.tgz" - }, - "@smithy/core@3.5.1": { - "integrity": "sha512-xSw7bZEFKwOKrm/iv8e2BLt2ur98YZdrRD6nII8ditQeUsY2Q1JmIQ0rpILOhaLKYxxG2ivnoOpokzr9qLyDWA==", - "dependencies": [ - "@smithy/middleware-serde", - "@smithy/protocol-http", - "@smithy/types", - "@smithy/util-base64", - "@smithy/util-body-length-browser", - "@smithy/util-middleware", - "@smithy/util-stream", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/core/-/core-3.5.1.tgz" - }, - "@smithy/credential-provider-imds@4.0.6": { - "integrity": "sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==", - "dependencies": [ - "@smithy/node-config-provider", - "@smithy/property-provider", - "@smithy/types", - "@smithy/url-parser", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz" - }, - "@smithy/eventstream-codec@4.0.4": { - "integrity": "sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==", - "dependencies": [ - "@aws-crypto/crc32", - "@smithy/types", - "@smithy/util-hex-encoding", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/eventstream-codec/-/eventstream-codec-4.0.4.tgz" - }, - "@smithy/eventstream-serde-browser@4.0.4": { - "integrity": "sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==", - "dependencies": [ - "@smithy/eventstream-serde-universal", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.4.tgz" - }, - "@smithy/eventstream-serde-config-resolver@4.1.2": { - "integrity": "sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.2.tgz" - }, - "@smithy/eventstream-serde-node@4.0.4": { - "integrity": "sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==", - "dependencies": [ - "@smithy/eventstream-serde-universal", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.4.tgz" - }, - "@smithy/eventstream-serde-universal@4.0.4": { - "integrity": "sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==", - "dependencies": [ - "@smithy/eventstream-codec", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.4.tgz" - }, - "@smithy/fetch-http-handler@5.0.4": { - "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==", - "dependencies": [ - "@smithy/protocol-http", - "@smithy/querystring-builder", - "@smithy/types", - "@smithy/util-base64", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz" - }, - "@smithy/hash-blob-browser@4.0.4": { - "integrity": "sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==", - "dependencies": [ - "@smithy/chunked-blob-reader", - "@smithy/chunked-blob-reader-native", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.4.tgz" - }, - "@smithy/hash-node@4.0.4": { - "integrity": "sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==", - "dependencies": [ - "@smithy/types", - "@smithy/util-buffer-from@4.0.0", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/hash-node/-/hash-node-4.0.4.tgz" - }, - "@smithy/hash-stream-node@4.0.4": { - "integrity": "sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==", - "dependencies": [ - "@smithy/types", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/hash-stream-node/-/hash-stream-node-4.0.4.tgz" - }, - "@smithy/invalid-dependency@4.0.4": { - "integrity": "sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz" - }, - "@smithy/is-array-buffer@2.2.0": { - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz" - }, - "@smithy/is-array-buffer@4.0.0": { - "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz" - }, - "@smithy/md5-js@4.0.4": { - "integrity": "sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==", - "dependencies": [ - "@smithy/types", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/md5-js/-/md5-js-4.0.4.tgz" - }, - "@smithy/middleware-content-length@4.0.4": { - "integrity": "sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==", - "dependencies": [ - "@smithy/protocol-http", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz" - }, - "@smithy/middleware-endpoint@4.1.9": { - "integrity": "sha512-AjDgX4UjORLltD/LZCBQTwjQqEfyrx/GeDTHcYLzIgf87pIT70tMWnN87NQpJru1K4ITirY2htSOxNECZJCBOg==", - "dependencies": [ - "@smithy/core", - "@smithy/middleware-serde", - "@smithy/node-config-provider", - "@smithy/shared-ini-file-loader", - "@smithy/types", - "@smithy/url-parser", - "@smithy/util-middleware", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.9.tgz" - }, - "@smithy/middleware-retry@4.1.10": { - "integrity": "sha512-RyhcA3sZIIvAo6r48b2Nx2qfg0OnyohlaV0fw415xrQyx5HQ2bvHl9vs/WBiDXIP49mCfws5wX4308c9Pi/isw==", - "dependencies": [ - "@smithy/node-config-provider", - "@smithy/protocol-http", - "@smithy/service-error-classification", - "@smithy/smithy-client", - "@smithy/types", - "@smithy/util-middleware", - "@smithy/util-retry", - "tslib", - "uuid" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/middleware-retry/-/middleware-retry-4.1.10.tgz" - }, - "@smithy/middleware-serde@4.0.8": { - "integrity": "sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==", - "dependencies": [ - "@smithy/protocol-http", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz" - }, - "@smithy/middleware-stack@4.0.4": { - "integrity": "sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz" - }, - "@smithy/node-config-provider@4.1.3": { - "integrity": "sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==", - "dependencies": [ - "@smithy/property-provider", - "@smithy/shared-ini-file-loader", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz" - }, - "@smithy/node-http-handler@4.0.6": { - "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==", - "dependencies": [ - "@smithy/abort-controller", - "@smithy/protocol-http", - "@smithy/querystring-builder", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz" - }, - "@smithy/property-provider@4.0.4": { - "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/property-provider/-/property-provider-4.0.4.tgz" - }, - "@smithy/protocol-http@5.1.2": { - "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/protocol-http/-/protocol-http-5.1.2.tgz" - }, - "@smithy/querystring-builder@4.0.4": { - "integrity": "sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==", - "dependencies": [ - "@smithy/types", - "@smithy/util-uri-escape", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz" - }, - "@smithy/querystring-parser@4.0.4": { - "integrity": "sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz" - }, - "@smithy/service-error-classification@4.0.5": { - "integrity": "sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==", - "dependencies": [ - "@smithy/types" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/service-error-classification/-/service-error-classification-4.0.5.tgz" - }, - "@smithy/shared-ini-file-loader@4.0.4": { - "integrity": "sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz" - }, - "@smithy/signature-v4@5.1.2": { - "integrity": "sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==", - "dependencies": [ - "@smithy/is-array-buffer@4.0.0", - "@smithy/protocol-http", - "@smithy/types", - "@smithy/util-hex-encoding", - "@smithy/util-middleware", - "@smithy/util-uri-escape", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/signature-v4/-/signature-v4-5.1.2.tgz" - }, - "@smithy/smithy-client@4.4.1": { - "integrity": "sha512-XPbcHRfd0iwx8dY5XCBCGyI7uweMW0oezYezxXcG8ANgvZ5YPuC6Ylh+n0bTHpdU3SCMZOnhzgVklYz+p3fIhw==", - "dependencies": [ - "@smithy/core", - "@smithy/middleware-endpoint", - "@smithy/middleware-stack", - "@smithy/protocol-http", - "@smithy/types", - "@smithy/util-stream", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/smithy-client/-/smithy-client-4.4.1.tgz" - }, - "@smithy/types@4.3.1": { - "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/types/-/types-4.3.1.tgz" - }, - "@smithy/url-parser@4.0.4": { - "integrity": "sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==", - "dependencies": [ - "@smithy/querystring-parser", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/url-parser/-/url-parser-4.0.4.tgz" - }, - "@smithy/util-base64@4.0.0": { - "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", - "dependencies": [ - "@smithy/util-buffer-from@4.0.0", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-base64/-/util-base64-4.0.0.tgz" - }, - "@smithy/util-body-length-browser@4.0.0": { - "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz" - }, - "@smithy/util-body-length-node@4.0.0": { - "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz" - }, - "@smithy/util-buffer-from@2.2.0": { - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dependencies": [ - "@smithy/is-array-buffer@2.2.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz" - }, - "@smithy/util-buffer-from@4.0.0": { - "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", - "dependencies": [ - "@smithy/is-array-buffer@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz" - }, - "@smithy/util-config-provider@4.0.0": { - "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz" - }, - "@smithy/util-defaults-mode-browser@4.0.17": { - "integrity": "sha512-HXq5181qnXmIwB7VrwqwP8rsJybHMoYuJnNoXy4PROs2pfSI4sWDMASF2i+7Lo+u64Y6xowhegcdxczowgJtZg==", - "dependencies": [ - "@smithy/property-provider", - "@smithy/smithy-client", - "@smithy/types", - "bowser", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.17.tgz" - }, - "@smithy/util-defaults-mode-node@4.0.17": { - "integrity": "sha512-RfU2A5LjFhEHw4Nwl1GZNitK4AUWu5jGtigAUDoQtfDUvYHpQxcuLw2QGAdKDtKRflIiHSZ8wXBDR36H9R2Ang==", - "dependencies": [ - "@smithy/config-resolver", - "@smithy/credential-provider-imds", - "@smithy/node-config-provider", - "@smithy/property-provider", - "@smithy/smithy-client", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.17.tgz" - }, - "@smithy/util-endpoints@3.0.6": { - "integrity": "sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==", - "dependencies": [ - "@smithy/node-config-provider", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz" - }, - "@smithy/util-hex-encoding@4.0.0": { - "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz" - }, - "@smithy/util-middleware@4.0.4": { - "integrity": "sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==", - "dependencies": [ - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-middleware/-/util-middleware-4.0.4.tgz" - }, - "@smithy/util-retry@4.0.5": { - "integrity": "sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==", - "dependencies": [ - "@smithy/service-error-classification", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-retry/-/util-retry-4.0.5.tgz" - }, - "@smithy/util-stream@4.2.2": { - "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==", - "dependencies": [ - "@smithy/fetch-http-handler", - "@smithy/node-http-handler", - "@smithy/types", - "@smithy/util-base64", - "@smithy/util-buffer-from@4.0.0", - "@smithy/util-hex-encoding", - "@smithy/util-utf8@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-stream/-/util-stream-4.2.2.tgz" - }, - "@smithy/util-uri-escape@4.0.0": { - "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", - "dependencies": [ - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz" - }, - "@smithy/util-utf8@2.3.0": { - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dependencies": [ - "@smithy/util-buffer-from@2.2.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-utf8/-/util-utf8-2.3.0.tgz" - }, - "@smithy/util-utf8@4.0.0": { - "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", - "dependencies": [ - "@smithy/util-buffer-from@4.0.0", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-utf8/-/util-utf8-4.0.0.tgz" - }, - "@smithy/util-waiter@4.0.5": { - "integrity": "sha512-4QvC49HTteI1gfemu0I1syWovJgPvGn7CVUoN9ZFkdvr/cCFkrEL7qNCdx/2eICqDWEGnnr68oMdSIPCLAriSQ==", - "dependencies": [ - "@smithy/abort-controller", - "@smithy/types", - "tslib" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@smithy/util-waiter/-/util-waiter-4.0.5.tgz" - }, - "@types/node@22.15.27": { - "integrity": "sha512-5fF+eu5mwihV2BeVtX5vijhdaZOfkQTATrePEaXTcKqI16LhJ7gi2/Vhd9OZM0UojcdmiOCVg5rrax+i1MdoQQ==", - "dependencies": [ - "undici-types" - ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/@types/node/-/node-22.15.27.tgz" - }, "boolbase@1.0.0": { "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "tarball": "https://nexus.nyyu.dev/repository/npm-registry/boolbase/-/boolbase-1.0.0.tgz" }, - "bowser@2.11.0": { - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/bowser/-/bowser-2.11.0.tgz" - }, "css-select@5.1.0": { "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dependencies": [ @@ -1105,27 +49,19 @@ ], "tarball": "https://nexus.nyyu.dev/repository/npm-registry/domhandler/-/domhandler-5.0.3.tgz" }, - "domutils@3.2.1": { - "integrity": "sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw==", + "domutils@3.2.2": { + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dependencies": [ "dom-serializer", "domelementtype", "domhandler" ], - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/domutils/-/domutils-3.2.1.tgz" + "tarball": "https://nexus.nyyu.dev/repository/npm-registry/domutils/-/domutils-3.2.2.tgz" }, "entities@4.5.0": { "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "tarball": "https://nexus.nyyu.dev/repository/npm-registry/entities/-/entities-4.5.0.tgz" }, - "fast-xml-parser@4.4.1": { - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "dependencies": [ - "strnum" - ], - "bin": true, - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz" - }, "he@1.2.0": { "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "bin": true, @@ -1145,32 +81,12 @@ "boolbase" ], "tarball": "https://nexus.nyyu.dev/repository/npm-registry/nth-check/-/nth-check-2.1.1.tgz" - }, - "strnum@1.1.2": { - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/strnum/-/strnum-1.1.2.tgz" - }, - "tslib@2.8.1": { - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/tslib/-/tslib-2.8.1.tgz" - }, - "undici-types@6.21.0": { - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/undici-types/-/undici-types-6.21.0.tgz" - }, - "uuid@9.0.1": { - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "bin": true, - "tarball": "https://nexus.nyyu.dev/repository/npm-registry/uuid/-/uuid-9.0.1.tgz" } }, "workspace": { - "packageJson": { - "dependencies": [ - "npm:@aws-sdk/client-s3@^3.820.0", - "npm:@types/node@^22.15.27", - "npm:node-html-parser@^7.0.1" - ] - } + "dependencies": [ + "jsr:@bradenmacdonald/s3-lite-client@0.9", + "npm:node-html-parser@^7.0.1" + ] } } diff --git a/package.json b/package.json deleted file mode 100644 index 7b0f449..0000000 --- a/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "check-bios", - "version": "1.0.0", - "type": "module", - "scripts": { - "start": "deno --allow-env --allow-read --allow-net --allow-sys src/index.ts" - }, - "dependencies": { - "@aws-sdk/client-s3": "^3.820.0", - "node-html-parser": "^7.0.1" - }, - "devDependencies": { - "@types/node": "^22.15.27" - } -} diff --git a/src/index.ts b/src/index.ts index e2a7e87..c58ab41 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import { Bios, getBios } from "./bios.ts"; -import { downloadFile, uploadFile } from "./s3.ts"; +import { getObject, putObject } from "./s3.ts"; import { notify } from "./notify.ts"; import process from "node:process"; @@ -15,8 +15,7 @@ async function main() { console.log(`Found ${biosList.length} BIOS versions online`); // Get current list from S3 - const file = await downloadFile(BIOS_LIST_KEY, BIOS_BUCKET); - const curList = file ? (JSON.parse(file) as Bios[]) : []; + const curList = await getObject(BIOS_LIST_KEY, BIOS_BUCKET) || []; console.log(`Current BIOS versions in storage: ${curList.length}`); // Find new versions @@ -28,8 +27,8 @@ async function main() { console.log(`Found ${newBios.length} new BIOS version(s)`); // Update S3 storage - const uploaded = await uploadFile( - JSON.stringify(biosList, null, 2), + const uploaded = await putObject( + biosList, BIOS_LIST_KEY, BIOS_BUCKET, ); diff --git a/src/s3.ts b/src/s3.ts index d019e97..3a5b6c9 100644 --- a/src/s3.ts +++ b/src/s3.ts @@ -1,11 +1,4 @@ -import { - GetObjectCommand, - PutObjectCommand, - S3Client, - S3ServiceException, -} from "@aws-sdk/client-s3"; -import { Readable } from "node:stream"; -import { Buffer } from "node:buffer"; +import { S3Client } from "@bradenmacdonald/s3-lite-client"; import process from "node:process"; // Validate required environment variables @@ -21,59 +14,36 @@ for (const envVar of requiredEnvVars) { } } -const s3 = new S3Client({ +const s3client = new S3Client({ region: process.env.AWS_DEFAULT_REGION!, - endpoint: process.env.AWS_ENDPOINT_URL, - forcePathStyle: true, - credentials: { - accessKeyId: process.env.AWS_ACCESS_KEY_ID!, - secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!, - }, - requestChecksumCalculation: "WHEN_REQUIRED", + endPoint: process.env.AWS_ENDPOINT_URL!, + accessKey: process.env.AWS_ACCESS_KEY_ID!, + secretKey: process.env.AWS_SECRET_ACCESS_KEY!, }); /** - * Converts a readable stream to string - * @param stream - The readable stream to convert - * @returns Promise containing the stream contents as string - */ -async function streamToString(stream: Readable): Promise { - const chunks: Buffer[] = []; - for await (const chunk of stream) { - chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)); - } - return Buffer.concat(chunks).toString("utf-8"); -} - -/** - * Downloads a file from S3 + * get object from S3 * @param key - The S3 object key * @param bucket - The S3 bucket name - * @returns Promise containing the file contents as string or null if failed + * @returns Promise containing the content * @throws Error if key or bucket is empty */ -async function downloadFile( +async function getObject( key: string, bucket: string, -): Promise { +): Promise { if (!key || !bucket) { throw new Error("Key and bucket must not be empty"); } - const command = new GetObjectCommand({ Bucket: bucket, Key: key }); try { - const response = await s3.send(command); - if (!response.Body) { + const response = await s3client.getObject(key, { bucketName: bucket }); + if (!response.ok) { throw new Error("Empty response body"); } - const body = response.Body as Readable; - return await streamToString(body); + return response.json(); } catch (error) { - if (error instanceof S3ServiceException) { - console.error(`S3 error downloading ${key}:`, error.message); - } else { - console.error(`Unexpected error downloading ${key}:`, error); - } + console.error(`Unexpected error downloading ${key}:`, error); return null; } } @@ -87,8 +57,8 @@ async function downloadFile( * @returns Promise indicating success or failure * @throws Error if key or bucket is empty */ -async function uploadFile( - content: string, +async function putObject( + content: Type, key: string, bucket: string, contentType = "application/json", @@ -97,26 +67,24 @@ async function uploadFile( throw new Error("Key and bucket must not be empty"); } - const command = new PutObjectCommand({ - Bucket: bucket, - Key: key, - Body: content, - ContentType: contentType, - }); - try { - const response = await s3.send(command); - const success = response.$metadata.httpStatusCode === 200; + const response = await s3client.putObject( + key, + JSON.stringify(content, null, 2), + { + bucketName: bucket, + metadata: { + "Content-Type": contentType, + }, + }, + ); + const success = response.versionId !== undefined; console.log(`File uploaded: ${key}, ${success ? "Success" : "Failed"}`); return success; } catch (error) { - if (error instanceof S3ServiceException) { - console.error(`S3 error uploading ${key}:`, error.message); - } else { - console.error(`Unexpected error uploading ${key}:`, error); - } + console.error(`Unexpected error uploading ${key}:`, error); return false; } } -export { downloadFile, uploadFile }; +export { getObject, putObject };