From 1c124715fec3961455b2967ea117c171bc0713b5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Pallar=C3=A9s?= <cristianp@monada.co>
Date: Tue, 18 Apr 2023 11:14:09 +0200
Subject: [PATCH 1/5] start clockwing
---
dogfooding/clockwing/.gitignore | 3 +
dogfooding/clockwing/index.w | 56 +
dogfooding/clockwing/package-lock.json | 2449 +++++++++++++++++++++++
dogfooding/clockwing/package.json | 14 +
dogfooding/clockwing/readme.md | 15 +
dogfooding/clockwing/src/nanoid.ts | 3 +
dogfooding/clockwing/src/rekognition.ts | 6 +
7 files changed, 2546 insertions(+)
create mode 100644 dogfooding/clockwing/.gitignore
create mode 100644 dogfooding/clockwing/index.w
create mode 100644 dogfooding/clockwing/package-lock.json
create mode 100644 dogfooding/clockwing/package.json
create mode 100644 dogfooding/clockwing/readme.md
create mode 100644 dogfooding/clockwing/src/nanoid.ts
create mode 100644 dogfooding/clockwing/src/rekognition.ts
diff --git a/dogfooding/clockwing/.gitignore b/dogfooding/clockwing/.gitignore
new file mode 100644
index 0000000..b1b96aa
--- /dev/null
+++ b/dogfooding/clockwing/.gitignore
@@ -0,0 +1,3 @@
+dist/
+node_modules/
+target/
diff --git a/dogfooding/clockwing/index.w b/dogfooding/clockwing/index.w
new file mode 100644
index 0000000..503896e
--- /dev/null
+++ b/dogfooding/clockwing/index.w
@@ -0,0 +1,56 @@
+bring cloud;
+
+resource Nanoids {
+ init() {}
+ extern "./dist/nanoid.js" inflight create(): str;
+}
+
+interface IRekognition {
+ images(): cloud.Bucket;
+
+ inflight create_collection(collection_id: str): str;
+ inflight index_faces(
+ collection_id: str,
+ external_image_id: str,
+ image_name: str,
+ max_faces: num?,
+ ): Json;
+ inflight search_faces_by_image(
+ collection_id: str,
+ face_match_threshold: num,
+ image_name: str,
+ max_faces: num?,
+ ): Json;
+}
+
+let nanoids = new Nanoids() as "nanoids";
+
+let users = new cloud.Table(
+ name: "users",
+ primary_key: "id",
+ columns: {
+ id: cloud.ColumnType.STRING,
+ },
+) as "users";
+
+let create_user = new cloud.Function(inflight (input: Json): Json => {
+ let id = nanoids.create();
+ users.insert(Json {
+ id: id,
+ });
+ return Json { id: id };
+}) as "create_user";
+
+let list_users = new cloud.Function(inflight (): Json => {
+ return users.list();
+}) as "list_users";
+
+let photos = new cloud.Bucket();
+
+photos.on_create(inflight (filename: str) => {
+ log("File ${filename} was created!");
+});
+
+photos.on_update(inflight (filename: str) => {
+ log("File ${filename} was updated!");
+});
diff --git a/dogfooding/clockwing/package-lock.json b/dogfooding/clockwing/package-lock.json
new file mode 100644
index 0000000..ee4e502
--- /dev/null
+++ b/dogfooding/clockwing/package-lock.json
@@ -0,0 +1,2449 @@
+{
+ "name": "clockwing",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "clockwing",
+ "dependencies": {
+ "@aws-sdk/client-rekognition": "^3.315.0",
+ "nanoid": "^4.0.2"
+ },
+ "devDependencies": {
+ "esbuild": "^0.17.17"
+ }
+ },
+ "node_modules/@aws-crypto/ie11-detection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
+ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/sha256-browser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
+ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
+ "dependencies": {
+ "@aws-crypto/ie11-detection": "^3.0.0",
+ "@aws-crypto/sha256-js": "^3.0.0",
+ "@aws-crypto/supports-web-crypto": "^3.0.0",
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/sha256-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
+ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
+ "dependencies": {
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/supports-web-crypto": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
+ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/util": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
+ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
+ "dependencies": {
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/util/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-sdk/abort-controller": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz",
+ "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-rekognition": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-rekognition/-/client-rekognition-3.315.0.tgz",
+ "integrity": "sha512-HLQm87juzxdZIsRfV6LHop6yV1lXnWPW+BO7z4ypBk99ye4DnBOTE1kiVnwk8PMRkqGadd+gyJod36NNO7JB0w==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.315.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-node": "3.315.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.315.0",
+ "@aws-sdk/util-defaults-mode-node": "3.315.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "@aws-sdk/util-waiter": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.315.0.tgz",
+ "integrity": "sha512-P3QOOyHQER7EDVCzXOsAaJE2p/qfdsSFsYv8k2S8LqEKGH0fViQ4Ph540uKlmaOt1kEhwH1wI6cLRMJJX9XV4Q==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.315.0",
+ "@aws-sdk/util-defaults-mode-node": "3.315.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.315.0.tgz",
+ "integrity": "sha512-OJgtmx6SpCWHBDCxBBi36Ro44uCqZBufGkThP/PVYrgVnRVnJ4V18d2wNGKmS37zKmCHHJPnhMPlGOgE2qyVPQ==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.315.0",
+ "@aws-sdk/util-defaults-mode-node": "3.315.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sts": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.315.0.tgz",
+ "integrity": "sha512-e34plg6m0hScADIPiu5kCKoiJVXRLRiAuens+iwMse0oPUmrv41hdjgufwWGA/pcNkEGzMdVS88Z4khxB3LHBw==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-node": "3.315.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-sdk-sts": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.315.0",
+ "@aws-sdk/util-defaults-mode-node": "3.315.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "fast-xml-parser": "4.1.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/config-resolver": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz",
+ "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-config-provider": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz",
+ "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==",
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-imds": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz",
+ "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==",
+ "dependencies": {
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.315.0.tgz",
+ "integrity": "sha512-TZbYNbQkNgANx3KsWmJEyBsnfUBq/XKqYYc/VQf1L4eI+GMUw2eKpNV0MTsyviViy2st7W4SiSgtsvXyeVp9xg==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/credential-provider-process": "3.310.0",
+ "@aws-sdk/credential-provider-sso": "3.315.0",
+ "@aws-sdk/credential-provider-web-identity": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.315.0.tgz",
+ "integrity": "sha512-OuzKAIg+xPAzBrb/Big5VKDpJmBhVR+N0Hfflrjj2BunQGWO7zxtkKFCz921MtP9ZunDV+UxzTpar8U5TAPtzA==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/credential-provider-ini": "3.315.0",
+ "@aws-sdk/credential-provider-process": "3.310.0",
+ "@aws-sdk/credential-provider-sso": "3.315.0",
+ "@aws-sdk/credential-provider-web-identity": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz",
+ "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==",
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.315.0.tgz",
+ "integrity": "sha512-oMDGwT67cLgLiLEj5UwAiOVo7mb0l4vi2nk+5pgPMpC3cBlAfA0y1IJe4FHp+Vz52F0nvURZZbdWhX6RgMMaqQ==",
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.315.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/token-providers": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz",
+ "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==",
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/fetch-http-handler": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz",
+ "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==",
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/querystring-builder": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/hash-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz",
+ "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/invalid-dependency": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz",
+ "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/is-array-buffer": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz",
+ "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-content-length": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz",
+ "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==",
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-endpoint": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz",
+ "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==",
+ "dependencies": {
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz",
+ "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==",
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz",
+ "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz",
+ "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==",
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-retry": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz",
+ "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==",
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/service-error-classification": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz",
+ "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==",
+ "dependencies": {
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-serde": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz",
+ "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz",
+ "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==",
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/signature-v4": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-stack": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz",
+ "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.310.0.tgz",
+ "integrity": "sha512-x3IOwSwSbwKidlxRk3CNVHVUb06SRuaELxggCaR++QVI8NU6qD/l4VHXKVRvbTHiC/cYxXE/GaBDgQVpDR7V/g==",
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-config-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz",
+ "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==",
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-http-handler": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.310.0.tgz",
+ "integrity": "sha512-irv9mbcM9xC2xYjArQF5SYmHBMu4ciMWtGsoHII1nRuFOl9FoT4ffTvEPuLlfC6pznzvKt9zvnm6xXj7gDChKg==",
+ "dependencies": {
+ "@aws-sdk/abort-controller": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/querystring-builder": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/property-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz",
+ "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/protocol-http": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz",
+ "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/querystring-builder": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz",
+ "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-uri-escape": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/querystring-parser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz",
+ "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/service-error-classification": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz",
+ "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/shared-ini-file-loader": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz",
+ "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/signature-v4": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz",
+ "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==",
+ "dependencies": {
+ "@aws-sdk/is-array-buffer": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-hex-encoding": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "@aws-sdk/util-uri-escape": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.315.0.tgz",
+ "integrity": "sha512-qTm0lwTh6IZMiWs3U9k2veoF6gV9yE0B9Z34yMxagOfQFQgxMih0aiH25MD25eRigjJ3sfUeZ+B0mRycmJZdkQ==",
+ "dependencies": {
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/token-providers": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.315.0.tgz",
+ "integrity": "sha512-EjLUQ9JLqU3eJfJyzpcVjFnuJ1MCCodZaVJmuX/a/as4TK41bKMvkVojjsU7pDSYzl+tuXE+ceivcWK4H0HQdQ==",
+ "dependencies": {
+ "@aws-sdk/client-sso-oidc": "3.315.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/types": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz",
+ "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/url-parser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz",
+ "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==",
+ "dependencies": {
+ "@aws-sdk/querystring-parser": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-base64": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz",
+ "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==",
+ "dependencies": {
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-body-length-browser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz",
+ "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-body-length-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz",
+ "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-buffer-from": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz",
+ "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==",
+ "dependencies": {
+ "@aws-sdk/is-array-buffer": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-config-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz",
+ "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-defaults-mode-browser": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.315.0.tgz",
+ "integrity": "sha512-5cqNvfGos3FB/MHNl+g2fr+tPY7s3k3+96V3wOPWLOksdACth10OxPpHfboXXZDHHkR0hmyJwJcfgA4uQrUcGg==",
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-defaults-mode-node": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.315.0.tgz",
+ "integrity": "sha512-vSPIGpzh6NJIMLoh31p7CczSatN46kJdJBrHfODHaIGe4t156x+LfkkcxGQhtifqxglhL7l+fmn5D1fM5exHuA==",
+ "dependencies": {
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.310.0.tgz",
+ "integrity": "sha512-zG+/d/O5KPmAaeOMPd6bW1abifdT0H03f42keLjYEoRZzYtHPC5DuPE0UayiWGckI6BCDgy0sRKXCYS49UNFaQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-hex-encoding": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz",
+ "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-locate-window": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz",
+ "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-middleware": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz",
+ "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-retry": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz",
+ "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==",
+ "dependencies": {
+ "@aws-sdk/service-error-classification": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-uri-escape": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz",
+ "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz",
+ "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.310.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz",
+ "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==",
+ "dependencies": {
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/util-utf8": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz",
+ "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==",
+ "dependencies": {
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-utf8-browser": {
+ "version": "3.259.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
+ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
+ "dependencies": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/util-waiter": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.310.0.tgz",
+ "integrity": "sha512-AV5j3guH/Y4REu+Qh3eXQU9igljHuU4XjX2sADAgf54C0kkhcCCkkiuzk3IsX089nyJCqIcj5idbjdvpnH88Vw==",
+ "dependencies": {
+ "@aws-sdk/abort-controller": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.17.tgz",
+ "integrity": "sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.17.tgz",
+ "integrity": "sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.17.tgz",
+ "integrity": "sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.17.tgz",
+ "integrity": "sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.17.tgz",
+ "integrity": "sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.17.tgz",
+ "integrity": "sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.17.tgz",
+ "integrity": "sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.17.tgz",
+ "integrity": "sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.17.tgz",
+ "integrity": "sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.17.tgz",
+ "integrity": "sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.17.tgz",
+ "integrity": "sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.17.tgz",
+ "integrity": "sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.17.tgz",
+ "integrity": "sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.17.tgz",
+ "integrity": "sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.17.tgz",
+ "integrity": "sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.17.tgz",
+ "integrity": "sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.17.tgz",
+ "integrity": "sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.17.tgz",
+ "integrity": "sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.17.tgz",
+ "integrity": "sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.17.tgz",
+ "integrity": "sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.17.tgz",
+ "integrity": "sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.17.tgz",
+ "integrity": "sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/bowser": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
+ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
+ },
+ "node_modules/esbuild": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.17.tgz",
+ "integrity": "sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.17.17",
+ "@esbuild/android-arm64": "0.17.17",
+ "@esbuild/android-x64": "0.17.17",
+ "@esbuild/darwin-arm64": "0.17.17",
+ "@esbuild/darwin-x64": "0.17.17",
+ "@esbuild/freebsd-arm64": "0.17.17",
+ "@esbuild/freebsd-x64": "0.17.17",
+ "@esbuild/linux-arm": "0.17.17",
+ "@esbuild/linux-arm64": "0.17.17",
+ "@esbuild/linux-ia32": "0.17.17",
+ "@esbuild/linux-loong64": "0.17.17",
+ "@esbuild/linux-mips64el": "0.17.17",
+ "@esbuild/linux-ppc64": "0.17.17",
+ "@esbuild/linux-riscv64": "0.17.17",
+ "@esbuild/linux-s390x": "0.17.17",
+ "@esbuild/linux-x64": "0.17.17",
+ "@esbuild/netbsd-x64": "0.17.17",
+ "@esbuild/openbsd-x64": "0.17.17",
+ "@esbuild/sunos-x64": "0.17.17",
+ "@esbuild/win32-arm64": "0.17.17",
+ "@esbuild/win32-ia32": "0.17.17",
+ "@esbuild/win32-x64": "0.17.17"
+ }
+ },
+ "node_modules/fast-xml-parser": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz",
+ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==",
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ },
+ "funding": {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz",
+ "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.js"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18"
+ }
+ },
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
+ "node_modules/tslib": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ }
+ },
+ "dependencies": {
+ "@aws-crypto/ie11-detection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
+ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
+ "requires": {
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ }
+ }
+ },
+ "@aws-crypto/sha256-browser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
+ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
+ "requires": {
+ "@aws-crypto/ie11-detection": "^3.0.0",
+ "@aws-crypto/sha256-js": "^3.0.0",
+ "@aws-crypto/supports-web-crypto": "^3.0.0",
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ }
+ }
+ },
+ "@aws-crypto/sha256-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
+ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
+ "requires": {
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ }
+ }
+ },
+ "@aws-crypto/supports-web-crypto": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
+ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
+ "requires": {
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ }
+ }
+ },
+ "@aws-crypto/util": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
+ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
+ "requires": {
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ }
+ }
+ },
+ "@aws-sdk/abort-controller": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz",
+ "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/client-rekognition": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-rekognition/-/client-rekognition-3.315.0.tgz",
+ "integrity": "sha512-HLQm87juzxdZIsRfV6LHop6yV1lXnWPW+BO7z4ypBk99ye4DnBOTE1kiVnwk8PMRkqGadd+gyJod36NNO7JB0w==",
+ "requires": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.315.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-node": "3.315.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.315.0",
+ "@aws-sdk/util-defaults-mode-node": "3.315.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "@aws-sdk/util-waiter": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/client-sso": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.315.0.tgz",
+ "integrity": "sha512-P3QOOyHQER7EDVCzXOsAaJE2p/qfdsSFsYv8k2S8LqEKGH0fViQ4Ph540uKlmaOt1kEhwH1wI6cLRMJJX9XV4Q==",
+ "requires": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.315.0",
+ "@aws-sdk/util-defaults-mode-node": "3.315.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/client-sso-oidc": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.315.0.tgz",
+ "integrity": "sha512-OJgtmx6SpCWHBDCxBBi36Ro44uCqZBufGkThP/PVYrgVnRVnJ4V18d2wNGKmS37zKmCHHJPnhMPlGOgE2qyVPQ==",
+ "requires": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.315.0",
+ "@aws-sdk/util-defaults-mode-node": "3.315.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/client-sts": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.315.0.tgz",
+ "integrity": "sha512-e34plg6m0hScADIPiu5kCKoiJVXRLRiAuens+iwMse0oPUmrv41hdjgufwWGA/pcNkEGzMdVS88Z4khxB3LHBw==",
+ "requires": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-node": "3.315.0",
+ "@aws-sdk/fetch-http-handler": "3.310.0",
+ "@aws-sdk/hash-node": "3.310.0",
+ "@aws-sdk/invalid-dependency": "3.310.0",
+ "@aws-sdk/middleware-content-length": "3.310.0",
+ "@aws-sdk/middleware-endpoint": "3.310.0",
+ "@aws-sdk/middleware-host-header": "3.310.0",
+ "@aws-sdk/middleware-logger": "3.310.0",
+ "@aws-sdk/middleware-recursion-detection": "3.310.0",
+ "@aws-sdk/middleware-retry": "3.310.0",
+ "@aws-sdk/middleware-sdk-sts": "3.310.0",
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/middleware-user-agent": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/node-http-handler": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/smithy-client": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.315.0",
+ "@aws-sdk/util-defaults-mode-node": "3.315.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "@aws-sdk/util-user-agent-browser": "3.310.0",
+ "@aws-sdk/util-user-agent-node": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "fast-xml-parser": "4.1.2",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/config-resolver": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz",
+ "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-config-provider": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/credential-provider-env": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz",
+ "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==",
+ "requires": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/credential-provider-imds": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz",
+ "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==",
+ "requires": {
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/credential-provider-ini": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.315.0.tgz",
+ "integrity": "sha512-TZbYNbQkNgANx3KsWmJEyBsnfUBq/XKqYYc/VQf1L4eI+GMUw2eKpNV0MTsyviViy2st7W4SiSgtsvXyeVp9xg==",
+ "requires": {
+ "@aws-sdk/credential-provider-env": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/credential-provider-process": "3.310.0",
+ "@aws-sdk/credential-provider-sso": "3.315.0",
+ "@aws-sdk/credential-provider-web-identity": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/credential-provider-node": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.315.0.tgz",
+ "integrity": "sha512-OuzKAIg+xPAzBrb/Big5VKDpJmBhVR+N0Hfflrjj2BunQGWO7zxtkKFCz921MtP9ZunDV+UxzTpar8U5TAPtzA==",
+ "requires": {
+ "@aws-sdk/credential-provider-env": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/credential-provider-ini": "3.315.0",
+ "@aws-sdk/credential-provider-process": "3.310.0",
+ "@aws-sdk/credential-provider-sso": "3.315.0",
+ "@aws-sdk/credential-provider-web-identity": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/credential-provider-process": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz",
+ "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==",
+ "requires": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/credential-provider-sso": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.315.0.tgz",
+ "integrity": "sha512-oMDGwT67cLgLiLEj5UwAiOVo7mb0l4vi2nk+5pgPMpC3cBlAfA0y1IJe4FHp+Vz52F0nvURZZbdWhX6RgMMaqQ==",
+ "requires": {
+ "@aws-sdk/client-sso": "3.315.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/token-providers": "3.315.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/credential-provider-web-identity": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz",
+ "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==",
+ "requires": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/fetch-http-handler": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz",
+ "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==",
+ "requires": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/querystring-builder": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/hash-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz",
+ "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/invalid-dependency": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz",
+ "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/is-array-buffer": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz",
+ "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-content-length": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz",
+ "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==",
+ "requires": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-endpoint": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz",
+ "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==",
+ "requires": {
+ "@aws-sdk/middleware-serde": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/url-parser": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-host-header": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz",
+ "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==",
+ "requires": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-logger": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz",
+ "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-recursion-detection": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz",
+ "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==",
+ "requires": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-retry": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz",
+ "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==",
+ "requires": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/service-error-classification": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "@aws-sdk/util-retry": "3.310.0",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ }
+ },
+ "@aws-sdk/middleware-sdk-sts": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz",
+ "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==",
+ "requires": {
+ "@aws-sdk/middleware-signing": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-serde": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz",
+ "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-signing": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz",
+ "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==",
+ "requires": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/signature-v4": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-stack": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz",
+ "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/middleware-user-agent": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.310.0.tgz",
+ "integrity": "sha512-x3IOwSwSbwKidlxRk3CNVHVUb06SRuaELxggCaR++QVI8NU6qD/l4VHXKVRvbTHiC/cYxXE/GaBDgQVpDR7V/g==",
+ "requires": {
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-endpoints": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/node-config-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz",
+ "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==",
+ "requires": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/node-http-handler": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.310.0.tgz",
+ "integrity": "sha512-irv9mbcM9xC2xYjArQF5SYmHBMu4ciMWtGsoHII1nRuFOl9FoT4ffTvEPuLlfC6pznzvKt9zvnm6xXj7gDChKg==",
+ "requires": {
+ "@aws-sdk/abort-controller": "3.310.0",
+ "@aws-sdk/protocol-http": "3.310.0",
+ "@aws-sdk/querystring-builder": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/property-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz",
+ "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/protocol-http": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz",
+ "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/querystring-builder": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz",
+ "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-uri-escape": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/querystring-parser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz",
+ "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/service-error-classification": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz",
+ "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw=="
+ },
+ "@aws-sdk/shared-ini-file-loader": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz",
+ "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/signature-v4": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz",
+ "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==",
+ "requires": {
+ "@aws-sdk/is-array-buffer": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "@aws-sdk/util-hex-encoding": "3.310.0",
+ "@aws-sdk/util-middleware": "3.310.0",
+ "@aws-sdk/util-uri-escape": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/smithy-client": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.315.0.tgz",
+ "integrity": "sha512-qTm0lwTh6IZMiWs3U9k2veoF6gV9yE0B9Z34yMxagOfQFQgxMih0aiH25MD25eRigjJ3sfUeZ+B0mRycmJZdkQ==",
+ "requires": {
+ "@aws-sdk/middleware-stack": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/token-providers": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.315.0.tgz",
+ "integrity": "sha512-EjLUQ9JLqU3eJfJyzpcVjFnuJ1MCCodZaVJmuX/a/as4TK41bKMvkVojjsU7pDSYzl+tuXE+ceivcWK4H0HQdQ==",
+ "requires": {
+ "@aws-sdk/client-sso-oidc": "3.315.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/shared-ini-file-loader": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/types": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz",
+ "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/url-parser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz",
+ "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==",
+ "requires": {
+ "@aws-sdk/querystring-parser": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-base64": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz",
+ "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==",
+ "requires": {
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-body-length-browser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz",
+ "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-body-length-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz",
+ "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-buffer-from": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz",
+ "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==",
+ "requires": {
+ "@aws-sdk/is-array-buffer": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-config-provider": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz",
+ "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-defaults-mode-browser": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.315.0.tgz",
+ "integrity": "sha512-5cqNvfGos3FB/MHNl+g2fr+tPY7s3k3+96V3wOPWLOksdACth10OxPpHfboXXZDHHkR0hmyJwJcfgA4uQrUcGg==",
+ "requires": {
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-defaults-mode-node": {
+ "version": "3.315.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.315.0.tgz",
+ "integrity": "sha512-vSPIGpzh6NJIMLoh31p7CczSatN46kJdJBrHfODHaIGe4t156x+LfkkcxGQhtifqxglhL7l+fmn5D1fM5exHuA==",
+ "requires": {
+ "@aws-sdk/config-resolver": "3.310.0",
+ "@aws-sdk/credential-provider-imds": "3.310.0",
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/property-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-endpoints": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.310.0.tgz",
+ "integrity": "sha512-zG+/d/O5KPmAaeOMPd6bW1abifdT0H03f42keLjYEoRZzYtHPC5DuPE0UayiWGckI6BCDgy0sRKXCYS49UNFaQ==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-hex-encoding": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz",
+ "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-locate-window": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz",
+ "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-middleware": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz",
+ "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-retry": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz",
+ "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==",
+ "requires": {
+ "@aws-sdk/service-error-classification": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-uri-escape": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz",
+ "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==",
+ "requires": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-user-agent-browser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz",
+ "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==",
+ "requires": {
+ "@aws-sdk/types": "3.310.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-user-agent-node": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz",
+ "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==",
+ "requires": {
+ "@aws-sdk/node-config-provider": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-utf8": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz",
+ "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==",
+ "requires": {
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@aws-sdk/util-utf8-browser": {
+ "version": "3.259.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
+ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
+ "requires": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "@aws-sdk/util-waiter": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.310.0.tgz",
+ "integrity": "sha512-AV5j3guH/Y4REu+Qh3eXQU9igljHuU4XjX2sADAgf54C0kkhcCCkkiuzk3IsX089nyJCqIcj5idbjdvpnH88Vw==",
+ "requires": {
+ "@aws-sdk/abort-controller": "3.310.0",
+ "@aws-sdk/types": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@esbuild/android-arm": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.17.tgz",
+ "integrity": "sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/android-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.17.tgz",
+ "integrity": "sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/android-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.17.tgz",
+ "integrity": "sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/darwin-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.17.tgz",
+ "integrity": "sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/darwin-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.17.tgz",
+ "integrity": "sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/freebsd-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.17.tgz",
+ "integrity": "sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/freebsd-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.17.tgz",
+ "integrity": "sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-arm": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.17.tgz",
+ "integrity": "sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.17.tgz",
+ "integrity": "sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-ia32": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.17.tgz",
+ "integrity": "sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.17.tgz",
+ "integrity": "sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-mips64el": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.17.tgz",
+ "integrity": "sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-ppc64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.17.tgz",
+ "integrity": "sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-riscv64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.17.tgz",
+ "integrity": "sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-s390x": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.17.tgz",
+ "integrity": "sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/linux-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.17.tgz",
+ "integrity": "sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/netbsd-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.17.tgz",
+ "integrity": "sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/openbsd-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.17.tgz",
+ "integrity": "sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/sunos-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.17.tgz",
+ "integrity": "sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/win32-arm64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.17.tgz",
+ "integrity": "sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/win32-ia32": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.17.tgz",
+ "integrity": "sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@esbuild/win32-x64": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.17.tgz",
+ "integrity": "sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==",
+ "dev": true,
+ "optional": true
+ },
+ "bowser": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
+ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
+ },
+ "esbuild": {
+ "version": "0.17.17",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.17.tgz",
+ "integrity": "sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==",
+ "dev": true,
+ "requires": {
+ "@esbuild/android-arm": "0.17.17",
+ "@esbuild/android-arm64": "0.17.17",
+ "@esbuild/android-x64": "0.17.17",
+ "@esbuild/darwin-arm64": "0.17.17",
+ "@esbuild/darwin-x64": "0.17.17",
+ "@esbuild/freebsd-arm64": "0.17.17",
+ "@esbuild/freebsd-x64": "0.17.17",
+ "@esbuild/linux-arm": "0.17.17",
+ "@esbuild/linux-arm64": "0.17.17",
+ "@esbuild/linux-ia32": "0.17.17",
+ "@esbuild/linux-loong64": "0.17.17",
+ "@esbuild/linux-mips64el": "0.17.17",
+ "@esbuild/linux-ppc64": "0.17.17",
+ "@esbuild/linux-riscv64": "0.17.17",
+ "@esbuild/linux-s390x": "0.17.17",
+ "@esbuild/linux-x64": "0.17.17",
+ "@esbuild/netbsd-x64": "0.17.17",
+ "@esbuild/openbsd-x64": "0.17.17",
+ "@esbuild/sunos-x64": "0.17.17",
+ "@esbuild/win32-arm64": "0.17.17",
+ "@esbuild/win32-ia32": "0.17.17",
+ "@esbuild/win32-x64": "0.17.17"
+ }
+ },
+ "fast-xml-parser": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz",
+ "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==",
+ "requires": {
+ "strnum": "^1.0.5"
+ }
+ },
+ "nanoid": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz",
+ "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw=="
+ },
+ "strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
+ "tslib": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
+ },
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+ }
+ }
+}
diff --git a/dogfooding/clockwing/package.json b/dogfooding/clockwing/package.json
new file mode 100644
index 0000000..8a0465b
--- /dev/null
+++ b/dogfooding/clockwing/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "clockwing",
+ "type": "module",
+ "scripts": {
+ "dev": "esbuild src/*.ts --bundle --format=cjs --platform=node --target=node18 --outdir=dist --watch"
+ },
+ "dependencies": {
+ "@aws-sdk/client-rekognition": "^3.315.0",
+ "nanoid": "^4.0.2"
+ },
+ "devDependencies": {
+ "esbuild": "^0.17.17"
+ }
+}
diff --git a/dogfooding/clockwing/readme.md b/dogfooding/clockwing/readme.md
new file mode 100644
index 0000000..031253c
--- /dev/null
+++ b/dogfooding/clockwing/readme.md
@@ -0,0 +1,15 @@
+# clockwing
+
+## Development
+
+Watch TS files:
+
+```sh
+npm run dev
+```
+
+Run the Console:
+
+```sh
+wing it index.w
+```
diff --git a/dogfooding/clockwing/src/nanoid.ts b/dogfooding/clockwing/src/nanoid.ts
new file mode 100644
index 0000000..913d4ff
--- /dev/null
+++ b/dogfooding/clockwing/src/nanoid.ts
@@ -0,0 +1,3 @@
+import { nanoid } from "nanoid";
+
+export const create = () => nanoid();
diff --git a/dogfooding/clockwing/src/rekognition.ts b/dogfooding/clockwing/src/rekognition.ts
new file mode 100644
index 0000000..ec51f8c
--- /dev/null
+++ b/dogfooding/clockwing/src/rekognition.ts
@@ -0,0 +1,6 @@
+import {
+ RekognitionClient,
+ CompareFacesCommand,
+} from "@aws-sdk/client-rekognition";
+
+export const createRekognitionClient = () => new RekognitionClient({});
From 0488c7a399ee0ef5ee9e8abc6c5b4607c026305f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Pallar=C3=A9s?= <cristianp@monada.co>
Date: Tue, 18 Apr 2023 15:49:00 +0200
Subject: [PATCH 2/5] wip
---
dogfooding/clockwing/index.w | 96 +++++++++++++++++++------
dogfooding/clockwing/src/rekognition.ts | 10 ++-
2 files changed, 82 insertions(+), 24 deletions(-)
diff --git a/dogfooding/clockwing/index.w b/dogfooding/clockwing/index.w
index 503896e..9066b30 100644
--- a/dogfooding/clockwing/index.w
+++ b/dogfooding/clockwing/index.w
@@ -5,26 +5,77 @@ resource Nanoids {
extern "./dist/nanoid.js" inflight create(): str;
}
-interface IRekognition {
- images(): cloud.Bucket;
+// interface IRekognition {
+// photos(): cloud.Bucket;
+
+// inflight create_collection(collection_id: str): str;
+// inflight index_faces(
+// collection_id: str,
+// external_image_id: str,
+// image_name: str,
+// max_faces: num?,
+// ): Json;
+// inflight search_faces_by_image(
+// collection_id: str,
+// face_match_threshold: num,
+// image_name: str,
+// max_faces: num?,
+// ): Json;
+// }
+
+resource Rekognition {
+ photos: cloud.Bucket;
+
+ init() {
+ this.photos = new cloud.Bucket();
+ }
+
+ inflight create_collection(collection_id: str): str {
+ let response = this.create_collection_private(collection_id);
+ log("${response}");
+ }
+
+ extern "./dist/rekognition.js" private inflight create_collection_private(collection_id: str): Json;
- inflight create_collection(collection_id: str): str;
inflight index_faces(
collection_id: str,
external_image_id: str,
- image_name: str,
- max_faces: num?,
- ): Json;
- inflight search_faces_by_image(
- collection_id: str,
- face_match_threshold: num,
- image_name: str,
+ image_data: str,
max_faces: num?,
- ): Json;
+ ): Json {
+ this.photos.put(external_image_id, image_data);
+ // let response = this.index_faces_private(collection_id, external_image_id, image_name, max_faces);
+ // log("${response}");
+ }
+
+ // inflight index_faces(
+ // collection_id: str,
+ // external_image_id: str,
+ // image_name: str,
+ // max_faces: num?,
+ // ): Json {
+ // return Json {
+ // collection_id: collection_id,
+ // };
+ // }
+
+ // inflight search_faces_by_image(
+ // collection_id: str,
+ // face_match_threshold: num,
+ // image_name: str,
+ // max_faces: num?,
+ // ): Json {
+ // return Json {
+ // collection_id: collection_id,
+ // };
+ // }
+
}
let nanoids = new Nanoids() as "nanoids";
+let rekognition = new Rekognition() as "rekognition";
+
let users = new cloud.Table(
name: "users",
primary_key: "id",
@@ -33,24 +84,25 @@ let users = new cloud.Table(
},
) as "users";
-let create_user = new cloud.Function(inflight (input: Json): Json => {
+let create_user = new cloud.Function(inflight (input: str): Json => {
let id = nanoids.create();
users.insert(Json {
id: id,
});
+
+ rekognition.create_collection("default");
+
+ let json = Json.parse(input);
+ rekognition.photos.put(id, "${json.get("photo")}");
+ // rekognition.photos.put("${id}.txt", "${json.get("photo")}");
+ // rekognition.index_faces(
+ // "photos",
+ // id,
+ // photos.get(filename),
+ // );
return Json { id: id };
}) as "create_user";
let list_users = new cloud.Function(inflight (): Json => {
return users.list();
}) as "list_users";
-
-let photos = new cloud.Bucket();
-
-photos.on_create(inflight (filename: str) => {
- log("File ${filename} was created!");
-});
-
-photos.on_update(inflight (filename: str) => {
- log("File ${filename} was updated!");
-});
diff --git a/dogfooding/clockwing/src/rekognition.ts b/dogfooding/clockwing/src/rekognition.ts
index ec51f8c..19d1971 100644
--- a/dogfooding/clockwing/src/rekognition.ts
+++ b/dogfooding/clockwing/src/rekognition.ts
@@ -1,6 +1,12 @@
import {
RekognitionClient,
- CompareFacesCommand,
+ CreateCollectionCommand,
} from "@aws-sdk/client-rekognition";
-export const createRekognitionClient = () => new RekognitionClient({});
+export const create_collection_private = async (collectionId: string) => {
+ const client = new RekognitionClient({});
+ const command = new CreateCollectionCommand({
+ CollectionId: collectionId,
+ });
+ return await client.send(command);
+};
From d89648d064dcb02c28953cda97c8e4c706c147c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Pallar=C3=A9s?= <cristianp@monada.co>
Date: Wed, 19 Apr 2023 17:01:41 +0200
Subject: [PATCH 3/5] wip
---
dogfooding/clockwing/index.w | 79 ++-----------------------
dogfooding/clockwing/src/nanoid.ts | 2 +-
dogfooding/clockwing/src/rekognition.ts | 2 +
3 files changed, 8 insertions(+), 75 deletions(-)
diff --git a/dogfooding/clockwing/index.w b/dogfooding/clockwing/index.w
index 9066b30..7ccb6e4 100644
--- a/dogfooding/clockwing/index.w
+++ b/dogfooding/clockwing/index.w
@@ -1,28 +1,5 @@
bring cloud;
-resource Nanoids {
- init() {}
- extern "./dist/nanoid.js" inflight create(): str;
-}
-
-// interface IRekognition {
-// photos(): cloud.Bucket;
-
-// inflight create_collection(collection_id: str): str;
-// inflight index_faces(
-// collection_id: str,
-// external_image_id: str,
-// image_name: str,
-// max_faces: num?,
-// ): Json;
-// inflight search_faces_by_image(
-// collection_id: str,
-// face_match_threshold: num,
-// image_name: str,
-// max_faces: num?,
-// ): Json;
-// }
-
resource Rekognition {
photos: cloud.Bucket;
@@ -44,65 +21,19 @@ resource Rekognition {
max_faces: num?,
): Json {
this.photos.put(external_image_id, image_data);
- // let response = this.index_faces_private(collection_id, external_image_id, image_name, max_faces);
- // log("${response}");
}
-
- // inflight index_faces(
- // collection_id: str,
- // external_image_id: str,
- // image_name: str,
- // max_faces: num?,
- // ): Json {
- // return Json {
- // collection_id: collection_id,
- // };
- // }
-
- // inflight search_faces_by_image(
- // collection_id: str,
- // face_match_threshold: num,
- // image_name: str,
- // max_faces: num?,
- // ): Json {
- // return Json {
- // collection_id: collection_id,
- // };
- // }
-
}
-let nanoids = new Nanoids() as "nanoids";
-
let rekognition = new Rekognition() as "rekognition";
let users = new cloud.Table(
name: "users",
- primary_key: "id",
+ primary_key: "faceId",
columns: {
- id: cloud.ColumnType.STRING,
+ faceId: cloud.ColumnType.STRING,
+ name: cloud.ColumnType.STRING,
},
) as "users";
-let create_user = new cloud.Function(inflight (input: str): Json => {
- let id = nanoids.create();
- users.insert(Json {
- id: id,
- });
-
- rekognition.create_collection("default");
-
- let json = Json.parse(input);
- rekognition.photos.put(id, "${json.get("photo")}");
- // rekognition.photos.put("${id}.txt", "${json.get("photo")}");
- // rekognition.index_faces(
- // "photos",
- // id,
- // photos.get(filename),
- // );
- return Json { id: id };
-}) as "create_user";
-
-let list_users = new cloud.Function(inflight (): Json => {
- return users.list();
-}) as "list_users";
+// let compare_photo = new cloud.Bucket() as "compare_photo";
+// let change_name = new cloud.Bucket() as "change_name";
\ No newline at end of file
diff --git a/dogfooding/clockwing/src/nanoid.ts b/dogfooding/clockwing/src/nanoid.ts
index 913d4ff..16a7a1d 100644
--- a/dogfooding/clockwing/src/nanoid.ts
+++ b/dogfooding/clockwing/src/nanoid.ts
@@ -1,3 +1,3 @@
import { nanoid } from "nanoid";
-export const create = () => nanoid();
+export const create = () => `!!!${nanoid()}`;
diff --git a/dogfooding/clockwing/src/rekognition.ts b/dogfooding/clockwing/src/rekognition.ts
index 19d1971..484bcef 100644
--- a/dogfooding/clockwing/src/rekognition.ts
+++ b/dogfooding/clockwing/src/rekognition.ts
@@ -3,6 +3,8 @@ import {
CreateCollectionCommand,
} from "@aws-sdk/client-rekognition";
+// global.URL = require("node:url").URL;
+
export const create_collection_private = async (collectionId: string) => {
const client = new RekognitionClient({});
const command = new CreateCollectionCommand({
From 83418b664f31ad4d129fa3646cd3a39f1ebca9f5 Mon Sep 17 00:00:00 2001
From: Hasan <hasanaburayyan21@gmail.com>
Date: Wed, 19 Apr 2023 19:29:15 -0400
Subject: [PATCH 4/5] added static site to take images
---
dogfooding/clockwing/site/index.html | 114 +++++++++++++++++++++++++++
dogfooding/clockwing/site/style.css | 0
2 files changed, 114 insertions(+)
create mode 100644 dogfooding/clockwing/site/index.html
create mode 100644 dogfooding/clockwing/site/style.css
diff --git a/dogfooding/clockwing/site/index.html b/dogfooding/clockwing/site/index.html
new file mode 100644
index 0000000..715b4b2
--- /dev/null
+++ b/dogfooding/clockwing/site/index.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>Take a Picture</title>
+ <style>
+ body {
+ text-align: center;
+ }
+ #container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 40px;
+ }
+ #video-container {
+ position: relative;
+ }
+ #canvas {
+ display: none;
+ }
+ button {
+ position: absolute;
+ bottom: 20px;
+ background-color: #4CAF50;
+ border: none;
+ color: white;
+ padding: 10px 24px;
+ font-size: 16px;
+ cursor: pointer;
+ border-radius: 4px;
+ }
+ #snap {
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ #photo-container {
+ position: relative;
+ display: none;
+ }
+ #submit {
+ left: 50%;
+ transform: translateX(-50%);
+ background-color: #007BFF;
+ }
+ video, img {
+ border-radius: 50%;
+ object-fit: cover;
+ width: 480px;
+ height: 640px;
+ }
+ </style>
+</head>
+<body>
+ <h1>Take a Picture</h1>
+ <div id="container">
+ <div id="video-container">
+ <video id="video" width="640" height="480" autoplay></video>
+ <button id="snap">Take Picture</button>
+ </div>
+ <div id="photo-container">
+ <img id="photo" alt="The picture will be displayed here." width="640" height="480">
+ <button id="submit">Submit</button>
+ </div>
+ </div>
+ <canvas id="canvas" width="640" height="480"></canvas>
+ <script>
+ const video = document.getElementById('video');
+ const canvas = document.getElementById('canvas');
+ const photo = document.getElementById('photo');
+ const snap = document.getElementById('snap');
+ const submit = document.getElementById('submit');
+ const photoContainer = document.getElementById('photo-container');
+ const ctx = canvas.getContext('2d');
+
+ navigator.mediaDevices.getUserMedia({ video: true, audio: false })
+ .then(stream => {
+ video.srcObject = stream;
+ video.play();
+ })
+ .catch(err => {
+ console.error('An error occurred: ', err);
+ });
+
+ snap.addEventListener('click', () => {
+ ctx.drawImage(video, 0, 0, 640, 480);
+ const dataURL = canvas.toDataURL('image/png');
+ photo.setAttribute('src', dataURL);
+ photoContainer.style.display = 'block';
+ });
+
+ submit.addEventListener('click', () => {
+ const dataURL = canvas.toDataURL('image/png');
+ const API = ""; // TODO: replace with API URL
+ console.log(JSON.stringify({ image: dataURL }));
+ // fetch(API, {
+ // method: 'POST',
+ // headers: {
+ // 'Content-Type': 'application/json'
+ // },
+ // body: JSON.stringify({ image: dataURL })
+ // })
+ // .then(response => response.json())
+ // .then(data => {
+ // console.log('Success:', data);
+ // })
+ // .catch(error => {
+ // console.error('Error:', error);
+ // });
+ });
+ </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/dogfooding/clockwing/site/style.css b/dogfooding/clockwing/site/style.css
new file mode 100644
index 0000000..e69de29
From cf0927a5e0faac1b00025bddf3e2b739c5ddc9c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cristian=20Pallar=C3=A9s?= <cristianp@monada.co>
Date: Thu, 20 Apr 2023 16:32:39 +0200
Subject: [PATCH 5/5] wip
---
dogfooding/clockwing/index.w | 48 +++++-
dogfooding/clockwing/package-lock.json | 13 ++
dogfooding/clockwing/package.json | 1 +
dogfooding/clockwing/site/index.html | 227 +++++++++++++------------
dogfooding/clockwing/src/base64.ts | 3 +
5 files changed, 182 insertions(+), 110 deletions(-)
create mode 100644 dogfooding/clockwing/src/base64.ts
diff --git a/dogfooding/clockwing/index.w b/dogfooding/clockwing/index.w
index 7ccb6e4..860ab01 100644
--- a/dogfooding/clockwing/index.w
+++ b/dogfooding/clockwing/index.w
@@ -24,6 +24,11 @@ resource Rekognition {
}
}
+resource Decode {
+ init() {}
+ extern "./dist/base64.js" inflight decode(data: str): str;
+}
+
let rekognition = new Rekognition() as "rekognition";
let users = new cloud.Table(
@@ -35,5 +40,44 @@ let users = new cloud.Table(
},
) as "users";
-// let compare_photo = new cloud.Bucket() as "compare_photo";
-// let change_name = new cloud.Bucket() as "change_name";
\ No newline at end of file
+let photos = new cloud.Bucket();
+
+let api = new cloud.Api();
+api.options("/lol", inflight (request: cloud.ApiRequest): cloud.ApiResponse => {
+ return cloud.ApiResponse {
+ status: 200,
+ headers: {
+ "Access-Control-Allow-Origin": "*",
+ "Access-Control-Allow-Headers": "Content-Type",
+ },
+ };
+});
+
+let decode = new Decode();
+api.post("/lol", inflight (request: cloud.ApiRequest): cloud.ApiResponse => {
+ let body = request.body ?? Json { empty: "https://github.com/winglang/wing/issues/1947" };
+ let photo_data_url = str.from_json(body.get("photo"));
+ log(photo_data_url);
+ photos.put("photo_data_url.txt", photo_data_url);
+
+ // "data:image/png;base64," is 22 characters long
+ let photo_base64 = photo_data_url.substring(22);
+ photos.put("photo_base64.txt", photo_base64);
+
+ // log(decode.decode(photo_base64));
+ photos.put("photo.png", decode.decode(photo_base64));
+
+ return cloud.ApiResponse {
+ status: 200,
+ headers: {
+ "Access-Control-Allow-Origin": "*",
+ "Access-Control-Allow-Headers": "Content-Type",
+ "Content-Type": "application/json",
+ },
+ body: Json { message: "Ok.", base64: photo_base64 },
+ };
+});
+
+new cloud.Function(inflight () => {
+ rekognition.create_collection("default");
+});
diff --git a/dogfooding/clockwing/package-lock.json b/dogfooding/clockwing/package-lock.json
index ee4e502..aa150c5 100644
--- a/dogfooding/clockwing/package-lock.json
+++ b/dogfooding/clockwing/package-lock.json
@@ -10,6 +10,7 @@
"nanoid": "^4.0.2"
},
"devDependencies": {
+ "@types/node": "^18.15.12",
"esbuild": "^0.17.17"
}
},
@@ -1328,6 +1329,12 @@
"node": ">=12"
}
},
+ "node_modules/@types/node": {
+ "version": "18.15.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.12.tgz",
+ "integrity": "sha512-Wha1UwsB3CYdqUm2PPzh/1gujGCNtWVUYF0mB00fJFoR4gTyWTDPjSm+zBF787Ahw8vSGgBja90MkgFwvB86Dg==",
+ "dev": true
+ },
"node_modules/bowser": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
@@ -2382,6 +2389,12 @@
"dev": true,
"optional": true
},
+ "@types/node": {
+ "version": "18.15.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.12.tgz",
+ "integrity": "sha512-Wha1UwsB3CYdqUm2PPzh/1gujGCNtWVUYF0mB00fJFoR4gTyWTDPjSm+zBF787Ahw8vSGgBja90MkgFwvB86Dg==",
+ "dev": true
+ },
"bowser": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
diff --git a/dogfooding/clockwing/package.json b/dogfooding/clockwing/package.json
index 8a0465b..4bebd2d 100644
--- a/dogfooding/clockwing/package.json
+++ b/dogfooding/clockwing/package.json
@@ -9,6 +9,7 @@
"nanoid": "^4.0.2"
},
"devDependencies": {
+ "@types/node": "^18.15.12",
"esbuild": "^0.17.17"
}
}
diff --git a/dogfooding/clockwing/site/index.html b/dogfooding/clockwing/site/index.html
index 715b4b2..f08642b 100644
--- a/dogfooding/clockwing/site/index.html
+++ b/dogfooding/clockwing/site/index.html
@@ -1,114 +1,125 @@
<!DOCTYPE html>
<html lang="en">
-<head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Take a Picture</title>
- <style>
- body {
- text-align: center;
- }
- #container {
- display: flex;
- justify-content: center;
- align-items: center;
- gap: 40px;
- }
- #video-container {
- position: relative;
- }
- #canvas {
- display: none;
- }
- button {
- position: absolute;
- bottom: 20px;
- background-color: #4CAF50;
- border: none;
- color: white;
- padding: 10px 24px;
- font-size: 16px;
- cursor: pointer;
- border-radius: 4px;
- }
- #snap {
- left: 50%;
- transform: translateX(-50%);
- }
- #photo-container {
- position: relative;
- display: none;
- }
- #submit {
- left: 50%;
- transform: translateX(-50%);
- background-color: #007BFF;
- }
- video, img {
- border-radius: 50%;
- object-fit: cover;
- width: 480px;
- height: 640px;
- }
- </style>
-</head>
-<body>
- <h1>Take a Picture</h1>
- <div id="container">
- <div id="video-container">
- <video id="video" width="640" height="480" autoplay></video>
- <button id="snap">Take Picture</button>
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Take a Picture</title>
+ <style>
+ body {
+ text-align: center;
+ }
+ #container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 40px;
+ }
+ #video-container {
+ position: relative;
+ }
+ #canvas {
+ display: none;
+ }
+ button {
+ position: absolute;
+ bottom: -10px;
+ background-color: #4caf50;
+ border: none;
+ color: white;
+ padding: 10px 24px;
+ font-size: 16px;
+ cursor: pointer;
+ border-radius: 4px;
+ }
+ #snap {
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ #photo-container {
+ position: relative;
+ display: none;
+ }
+ #submit {
+ left: 50%;
+ transform: translateX(-50%);
+ background-color: #007bff;
+ }
+ video,
+ img {
+ border-radius: 50%;
+ object-fit: cover;
+ width: 120px;
+ height: 160px;
+ }
+ </style>
+ </head>
+ <body>
+ <h1>Take a Picture</h1>
+ <div id="container">
+ <div id="video-container">
+ <video id="video" width="160" height="120" autoplay></video>
+ <button id="snap">Take Picture</button>
+ </div>
+ <div id="photo-container">
+ <img
+ id="photo"
+ alt="The picture will be displayed here."
+ width="160"
+ height="120"
+ />
+ <button id="submit">Submit</button>
+ </div>
</div>
- <div id="photo-container">
- <img id="photo" alt="The picture will be displayed here." width="640" height="480">
- <button id="submit">Submit</button>
- </div>
- </div>
- <canvas id="canvas" width="640" height="480"></canvas>
- <script>
- const video = document.getElementById('video');
- const canvas = document.getElementById('canvas');
- const photo = document.getElementById('photo');
- const snap = document.getElementById('snap');
- const submit = document.getElementById('submit');
- const photoContainer = document.getElementById('photo-container');
- const ctx = canvas.getContext('2d');
+ <canvas id="canvas" width="160" height="120"></canvas>
+ <script>
+ const video = document.getElementById("video");
+ const canvas = document.getElementById("canvas");
+ const photo = document.getElementById("photo");
+ const snap = document.getElementById("snap");
+ const submit = document.getElementById("submit");
+ const photoContainer = document.getElementById("photo-container");
+ const ctx = canvas.getContext("2d");
- navigator.mediaDevices.getUserMedia({ video: true, audio: false })
- .then(stream => {
- video.srcObject = stream;
- video.play();
- })
- .catch(err => {
- console.error('An error occurred: ', err);
- });
+ navigator.mediaDevices
+ .getUserMedia({ video: true, audio: false })
+ .then((stream) => {
+ video.srcObject = stream;
+ video.play();
+ })
+ .catch((err) => {
+ console.error("An error occurred: ", err);
+ });
- snap.addEventListener('click', () => {
- ctx.drawImage(video, 0, 0, 640, 480);
- const dataURL = canvas.toDataURL('image/png');
- photo.setAttribute('src', dataURL);
- photoContainer.style.display = 'block';
- });
+ snap.addEventListener("click", () => {
+ ctx.drawImage(video, 0, 0, 160, 120);
+ const dataURL = canvas.toDataURL("image/png");
+ photo.setAttribute("src", dataURL);
+ photoContainer.style.display = "block";
+ });
- submit.addEventListener('click', () => {
- const dataURL = canvas.toDataURL('image/png');
- const API = ""; // TODO: replace with API URL
- console.log(JSON.stringify({ image: dataURL }));
- // fetch(API, {
- // method: 'POST',
- // headers: {
- // 'Content-Type': 'application/json'
- // },
- // body: JSON.stringify({ image: dataURL })
- // })
- // .then(response => response.json())
- // .then(data => {
- // console.log('Success:', data);
- // })
- // .catch(error => {
- // console.error('Error:', error);
- // });
- });
- </script>
-</body>
-</html>
\ No newline at end of file
+ submit.addEventListener("click", () => {
+ const dataURL = canvas.toDataURL("image/png");
+ const API = "http://127.0.0.1:53900"; // TODO: replace with API URL
+ console.log(JSON.stringify({ image: dataURL }));
+ fetch(`${API}/lol`, {
+ method: "POST",
+ mode: "cors",
+ // mode: "no-cors",
+ // credentials: "omit",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({ photo: dataURL }),
+ // body: JSON.stringify({ photo: "hoo" }),
+ });
+ // .then(response => response.json())
+ // .then(data => {
+ // console.log('Success:', data);
+ // })
+ // .catch(error => {
+ // console.error('Error:', error);
+ // });
+ });
+ </script>
+ </body>
+</html>
diff --git a/dogfooding/clockwing/src/base64.ts b/dogfooding/clockwing/src/base64.ts
new file mode 100644
index 0000000..5b02891
--- /dev/null
+++ b/dogfooding/clockwing/src/base64.ts
@@ -0,0 +1,3 @@
+export const decode = (input: string) => {
+ return Buffer.from(input, "base64").toString("binary");
+};