浏览代码

fix(websockets): issue with sending messages to active websocket connections (#806)

Karol Sójko 1 年之前
父节点
当前提交
72ab08a0d0
共有 22 个文件被更改,包括 699 次插入39 次删除
  1. 322 0
      .pnp.cjs
  2. 二进制
      .yarn/cache/@aws-sdk-client-apigatewaymanagementapi-npm-3.405.0-e4e17d811f-d7103d0b37.zip
  3. 二进制
      .yarn/cache/@aws-sdk-client-sso-npm-3.405.0-0b22768239-323f99e024.zip
  4. 二进制
      .yarn/cache/@aws-sdk-client-sts-npm-3.405.0-b83c3faf19-01ea2a8695.zip
  5. 二进制
      .yarn/cache/@aws-sdk-credential-provider-ini-npm-3.405.0-759c2d9674-0d2694b969.zip
  6. 二进制
      .yarn/cache/@aws-sdk-credential-provider-node-npm-3.405.0-33a4e3c01f-58cf90600d.zip
  7. 二进制
      .yarn/cache/@aws-sdk-credential-provider-process-npm-3.405.0-ed6dc867ed-bd23e267bd.zip
  8. 二进制
      .yarn/cache/@aws-sdk-credential-provider-sso-npm-3.405.0-24b76ee82f-754f796b2a.zip
  9. 二进制
      .yarn/cache/@aws-sdk-token-providers-npm-3.405.0-29e68d4065-08e30dbc7b.zip
  10. 二进制
      .yarn/cache/@aws-sdk-util-user-agent-node-npm-3.405.0-160b854f92-6422874d9e.zip
  11. 二进制
      .yarn/cache/@smithy-credential-provider-imds-npm-2.0.7-46bd1e8858-61c59aea7e.zip
  12. 二进制
      .yarn/cache/@smithy-node-config-provider-npm-2.0.7-806b68f393-d4b58ee69f.zip
  13. 二进制
      .yarn/cache/@smithy-property-provider-npm-2.0.6-4f294049d1-b9a4aff1f0.zip
  14. 二进制
      .yarn/cache/@smithy-shared-ini-file-loader-npm-2.0.6-ebbee54019-4b538ef59a.zip
  15. 二进制
      .yarn/cache/@smithy-util-defaults-mode-browser-npm-2.0.6-d40f165a01-286295e6e9.zip
  16. 二进制
      .yarn/cache/@smithy-util-defaults-mode-node-npm-2.0.7-8a9d03e11c-b1c74a3b41.zip
  17. 1 0
      packages/websockets/package.json
  18. 9 1
      packages/websockets/src/Bootstrap/Container.ts
  19. 1 0
      packages/websockets/src/Bootstrap/Types.ts
  20. 23 19
      packages/websockets/src/Infra/WebSockets/WebSocketsClientMessenger.ts
  21. 16 19
      packages/websockets/src/Infra/WebSockets/WebSocketsClientService.spec.ts
  22. 327 0
      yarn.lock

+ 322 - 0
.pnp.cjs

@@ -275,6 +275,51 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["@aws-sdk/client-apigatewaymanagementapi", [\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-client-apigatewaymanagementapi-npm-3.405.0-e4e17d811f-d7103d0b37.zip/node_modules/@aws-sdk/client-apigatewaymanagementapi/",\
+        "packageDependencies": [\
+          ["@aws-sdk/client-apigatewaymanagementapi", "npm:3.405.0"],\
+          ["@aws-crypto/sha256-browser", "npm:3.0.0"],\
+          ["@aws-crypto/sha256-js", "npm:3.0.0"],\
+          ["@aws-sdk/client-sts", "npm:3.405.0"],\
+          ["@aws-sdk/credential-provider-node", "npm:3.405.0"],\
+          ["@aws-sdk/middleware-host-header", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-logger", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-recursion-detection", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-signing", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-user-agent", "npm:3.398.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@aws-sdk/util-endpoints", "npm:3.398.0"],\
+          ["@aws-sdk/util-user-agent-browser", "npm:3.398.0"],\
+          ["@aws-sdk/util-user-agent-node", "virtual:0b227682399940b7e75175c6ae399b938ec07d3986be60e73f8026d2677e9fe96d05ac258f3f223cf1b6bdd7fd2a24f55f0efa40a8406ba949dc1b7af3a6a968#npm:3.405.0"],\
+          ["@smithy/config-resolver", "npm:2.0.5"],\
+          ["@smithy/fetch-http-handler", "npm:2.0.5"],\
+          ["@smithy/hash-node", "npm:2.0.5"],\
+          ["@smithy/invalid-dependency", "npm:2.0.5"],\
+          ["@smithy/middleware-content-length", "npm:2.0.5"],\
+          ["@smithy/middleware-endpoint", "npm:2.0.5"],\
+          ["@smithy/middleware-retry", "npm:2.0.5"],\
+          ["@smithy/middleware-serde", "npm:2.0.5"],\
+          ["@smithy/middleware-stack", "npm:2.0.0"],\
+          ["@smithy/node-config-provider", "npm:2.0.7"],\
+          ["@smithy/node-http-handler", "npm:2.0.5"],\
+          ["@smithy/protocol-http", "npm:2.0.5"],\
+          ["@smithy/smithy-client", "npm:2.0.5"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["@smithy/url-parser", "npm:2.0.5"],\
+          ["@smithy/util-base64", "npm:2.0.0"],\
+          ["@smithy/util-body-length-browser", "npm:2.0.0"],\
+          ["@smithy/util-body-length-node", "npm:2.1.0"],\
+          ["@smithy/util-defaults-mode-browser", "npm:2.0.6"],\
+          ["@smithy/util-defaults-mode-node", "npm:2.0.7"],\
+          ["@smithy/util-retry", "npm:2.0.0"],\
+          ["@smithy/util-utf8", "npm:2.0.0"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["@aws-sdk/client-lambda", [\
       ["npm:3.398.0", {\
         "packageLocation": "./.yarn/cache/@aws-sdk-client-lambda-npm-3.398.0-fa4aacfc7b-85ef0fe18d.zip/node_modules/@aws-sdk/client-lambda/",\
@@ -563,6 +608,46 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-client-sso-npm-3.405.0-0b22768239-323f99e024.zip/node_modules/@aws-sdk/client-sso/",\
+        "packageDependencies": [\
+          ["@aws-sdk/client-sso", "npm:3.405.0"],\
+          ["@aws-crypto/sha256-browser", "npm:3.0.0"],\
+          ["@aws-crypto/sha256-js", "npm:3.0.0"],\
+          ["@aws-sdk/middleware-host-header", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-logger", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-recursion-detection", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-user-agent", "npm:3.398.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@aws-sdk/util-endpoints", "npm:3.398.0"],\
+          ["@aws-sdk/util-user-agent-browser", "npm:3.398.0"],\
+          ["@aws-sdk/util-user-agent-node", "virtual:0b227682399940b7e75175c6ae399b938ec07d3986be60e73f8026d2677e9fe96d05ac258f3f223cf1b6bdd7fd2a24f55f0efa40a8406ba949dc1b7af3a6a968#npm:3.405.0"],\
+          ["@smithy/config-resolver", "npm:2.0.5"],\
+          ["@smithy/fetch-http-handler", "npm:2.0.5"],\
+          ["@smithy/hash-node", "npm:2.0.5"],\
+          ["@smithy/invalid-dependency", "npm:2.0.5"],\
+          ["@smithy/middleware-content-length", "npm:2.0.5"],\
+          ["@smithy/middleware-endpoint", "npm:2.0.5"],\
+          ["@smithy/middleware-retry", "npm:2.0.5"],\
+          ["@smithy/middleware-serde", "npm:2.0.5"],\
+          ["@smithy/middleware-stack", "npm:2.0.0"],\
+          ["@smithy/node-config-provider", "npm:2.0.7"],\
+          ["@smithy/node-http-handler", "npm:2.0.5"],\
+          ["@smithy/protocol-http", "npm:2.0.5"],\
+          ["@smithy/smithy-client", "npm:2.0.5"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["@smithy/url-parser", "npm:2.0.5"],\
+          ["@smithy/util-base64", "npm:2.0.0"],\
+          ["@smithy/util-body-length-browser", "npm:2.0.0"],\
+          ["@smithy/util-body-length-node", "npm:2.1.0"],\
+          ["@smithy/util-defaults-mode-browser", "npm:2.0.6"],\
+          ["@smithy/util-defaults-mode-node", "npm:2.0.7"],\
+          ["@smithy/util-retry", "npm:2.0.0"],\
+          ["@smithy/util-utf8", "npm:2.0.0"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/client-sso-oidc", [\
@@ -695,6 +780,50 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-client-sts-npm-3.405.0-b83c3faf19-01ea2a8695.zip/node_modules/@aws-sdk/client-sts/",\
+        "packageDependencies": [\
+          ["@aws-sdk/client-sts", "npm:3.405.0"],\
+          ["@aws-crypto/sha256-browser", "npm:3.0.0"],\
+          ["@aws-crypto/sha256-js", "npm:3.0.0"],\
+          ["@aws-sdk/credential-provider-node", "npm:3.405.0"],\
+          ["@aws-sdk/middleware-host-header", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-logger", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-recursion-detection", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-sdk-sts", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-signing", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-user-agent", "npm:3.398.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@aws-sdk/util-endpoints", "npm:3.398.0"],\
+          ["@aws-sdk/util-user-agent-browser", "npm:3.398.0"],\
+          ["@aws-sdk/util-user-agent-node", "virtual:0b227682399940b7e75175c6ae399b938ec07d3986be60e73f8026d2677e9fe96d05ac258f3f223cf1b6bdd7fd2a24f55f0efa40a8406ba949dc1b7af3a6a968#npm:3.405.0"],\
+          ["@smithy/config-resolver", "npm:2.0.5"],\
+          ["@smithy/fetch-http-handler", "npm:2.0.5"],\
+          ["@smithy/hash-node", "npm:2.0.5"],\
+          ["@smithy/invalid-dependency", "npm:2.0.5"],\
+          ["@smithy/middleware-content-length", "npm:2.0.5"],\
+          ["@smithy/middleware-endpoint", "npm:2.0.5"],\
+          ["@smithy/middleware-retry", "npm:2.0.5"],\
+          ["@smithy/middleware-serde", "npm:2.0.5"],\
+          ["@smithy/middleware-stack", "npm:2.0.0"],\
+          ["@smithy/node-config-provider", "npm:2.0.7"],\
+          ["@smithy/node-http-handler", "npm:2.0.5"],\
+          ["@smithy/protocol-http", "npm:2.0.5"],\
+          ["@smithy/smithy-client", "npm:2.0.5"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["@smithy/url-parser", "npm:2.0.5"],\
+          ["@smithy/util-base64", "npm:2.0.0"],\
+          ["@smithy/util-body-length-browser", "npm:2.0.0"],\
+          ["@smithy/util-body-length-node", "npm:2.1.0"],\
+          ["@smithy/util-defaults-mode-browser", "npm:2.0.6"],\
+          ["@smithy/util-defaults-mode-node", "npm:2.0.7"],\
+          ["@smithy/util-retry", "npm:2.0.0"],\
+          ["@smithy/util-utf8", "npm:2.0.0"],\
+          ["fast-xml-parser", "npm:4.2.5"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/config-resolver", [\
@@ -780,6 +909,23 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-credential-provider-ini-npm-3.405.0-759c2d9674-0d2694b969.zip/node_modules/@aws-sdk/credential-provider-ini/",\
+        "packageDependencies": [\
+          ["@aws-sdk/credential-provider-ini", "npm:3.405.0"],\
+          ["@aws-sdk/credential-provider-env", "npm:3.398.0"],\
+          ["@aws-sdk/credential-provider-process", "npm:3.405.0"],\
+          ["@aws-sdk/credential-provider-sso", "npm:3.405.0"],\
+          ["@aws-sdk/credential-provider-web-identity", "npm:3.398.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@smithy/credential-provider-imds", "npm:2.0.5"],\
+          ["@smithy/property-provider", "npm:2.0.5"],\
+          ["@smithy/shared-ini-file-loader", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/credential-provider-node", [\
@@ -817,6 +963,24 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-credential-provider-node-npm-3.405.0-33a4e3c01f-58cf90600d.zip/node_modules/@aws-sdk/credential-provider-node/",\
+        "packageDependencies": [\
+          ["@aws-sdk/credential-provider-node", "npm:3.405.0"],\
+          ["@aws-sdk/credential-provider-env", "npm:3.398.0"],\
+          ["@aws-sdk/credential-provider-ini", "npm:3.405.0"],\
+          ["@aws-sdk/credential-provider-process", "npm:3.405.0"],\
+          ["@aws-sdk/credential-provider-sso", "npm:3.405.0"],\
+          ["@aws-sdk/credential-provider-web-identity", "npm:3.398.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@smithy/credential-provider-imds", "npm:2.0.5"],\
+          ["@smithy/property-provider", "npm:2.0.5"],\
+          ["@smithy/shared-ini-file-loader", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/credential-provider-process", [\
@@ -842,6 +1006,18 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-credential-provider-process-npm-3.405.0-ed6dc867ed-bd23e267bd.zip/node_modules/@aws-sdk/credential-provider-process/",\
+        "packageDependencies": [\
+          ["@aws-sdk/credential-provider-process", "npm:3.405.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@smithy/property-provider", "npm:2.0.5"],\
+          ["@smithy/shared-ini-file-loader", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/credential-provider-sso", [\
@@ -871,6 +1047,20 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-credential-provider-sso-npm-3.405.0-24b76ee82f-754f796b2a.zip/node_modules/@aws-sdk/credential-provider-sso/",\
+        "packageDependencies": [\
+          ["@aws-sdk/credential-provider-sso", "npm:3.405.0"],\
+          ["@aws-sdk/client-sso", "npm:3.405.0"],\
+          ["@aws-sdk/token-providers", "npm:3.405.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@smithy/property-provider", "npm:2.0.5"],\
+          ["@smithy/shared-ini-file-loader", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/credential-provider-web-identity", [\
@@ -1538,6 +1728,48 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-token-providers-npm-3.405.0-29e68d4065-08e30dbc7b.zip/node_modules/@aws-sdk/token-providers/",\
+        "packageDependencies": [\
+          ["@aws-sdk/token-providers", "npm:3.405.0"],\
+          ["@aws-crypto/sha256-browser", "npm:3.0.0"],\
+          ["@aws-crypto/sha256-js", "npm:3.0.0"],\
+          ["@aws-sdk/middleware-host-header", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-logger", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-recursion-detection", "npm:3.398.0"],\
+          ["@aws-sdk/middleware-user-agent", "npm:3.398.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@aws-sdk/util-endpoints", "npm:3.398.0"],\
+          ["@aws-sdk/util-user-agent-browser", "npm:3.398.0"],\
+          ["@aws-sdk/util-user-agent-node", "virtual:0b227682399940b7e75175c6ae399b938ec07d3986be60e73f8026d2677e9fe96d05ac258f3f223cf1b6bdd7fd2a24f55f0efa40a8406ba949dc1b7af3a6a968#npm:3.405.0"],\
+          ["@smithy/config-resolver", "npm:2.0.5"],\
+          ["@smithy/fetch-http-handler", "npm:2.0.5"],\
+          ["@smithy/hash-node", "npm:2.0.5"],\
+          ["@smithy/invalid-dependency", "npm:2.0.5"],\
+          ["@smithy/middleware-content-length", "npm:2.0.5"],\
+          ["@smithy/middleware-endpoint", "npm:2.0.5"],\
+          ["@smithy/middleware-retry", "npm:2.0.5"],\
+          ["@smithy/middleware-serde", "npm:2.0.5"],\
+          ["@smithy/middleware-stack", "npm:2.0.0"],\
+          ["@smithy/node-config-provider", "npm:2.0.7"],\
+          ["@smithy/node-http-handler", "npm:2.0.5"],\
+          ["@smithy/property-provider", "npm:2.0.5"],\
+          ["@smithy/protocol-http", "npm:2.0.5"],\
+          ["@smithy/shared-ini-file-loader", "npm:2.0.6"],\
+          ["@smithy/smithy-client", "npm:2.0.5"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["@smithy/url-parser", "npm:2.0.5"],\
+          ["@smithy/util-base64", "npm:2.0.0"],\
+          ["@smithy/util-body-length-browser", "npm:2.0.0"],\
+          ["@smithy/util-body-length-node", "npm:2.1.0"],\
+          ["@smithy/util-defaults-mode-browser", "npm:2.0.6"],\
+          ["@smithy/util-defaults-mode-node", "npm:2.0.7"],\
+          ["@smithy/util-retry", "npm:2.0.0"],\
+          ["@smithy/util-utf8", "npm:2.0.0"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/types", [\
@@ -1798,6 +2030,30 @@ const RAW_RUNTIME_STATE =
         ],\
         "linkType": "SOFT"\
       }],\
+      ["npm:3.405.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-util-user-agent-node-npm-3.405.0-160b854f92-6422874d9e.zip/node_modules/@aws-sdk/util-user-agent-node/",\
+        "packageDependencies": [\
+          ["@aws-sdk/util-user-agent-node", "npm:3.405.0"]\
+        ],\
+        "linkType": "SOFT"\
+      }],\
+      ["virtual:0b227682399940b7e75175c6ae399b938ec07d3986be60e73f8026d2677e9fe96d05ac258f3f223cf1b6bdd7fd2a24f55f0efa40a8406ba949dc1b7af3a6a968#npm:3.405.0", {\
+        "packageLocation": "./.yarn/__virtual__/@aws-sdk-util-user-agent-node-virtual-f09536a53a/0/cache/@aws-sdk-util-user-agent-node-npm-3.405.0-160b854f92-6422874d9e.zip/node_modules/@aws-sdk/util-user-agent-node/",\
+        "packageDependencies": [\
+          ["@aws-sdk/util-user-agent-node", "virtual:0b227682399940b7e75175c6ae399b938ec07d3986be60e73f8026d2677e9fe96d05ac258f3f223cf1b6bdd7fd2a24f55f0efa40a8406ba949dc1b7af3a6a968#npm:3.405.0"],\
+          ["@aws-sdk/types", "npm:3.398.0"],\
+          ["@smithy/node-config-provider", "npm:2.0.7"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["@types/aws-crt", null],\
+          ["aws-crt", null],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "packagePeers": [\
+          "@types/aws-crt",\
+          "aws-crt"\
+        ],\
+        "linkType": "HARD"\
+      }],\
       ["virtual:bc215baaece010534480a5bbeef12e01b493e2e880132aa6bad8e946a74eb78bacf426e63b2a17a031e79d1b4089081937de686f0c09183e86cf908c3bd861cc#npm:3.398.0", {\
         "packageLocation": "./.yarn/__virtual__/@aws-sdk-util-user-agent-node-virtual-cb6c764817/0/cache/@aws-sdk-util-user-agent-node-npm-3.398.0-e1c632b733-6d5dae585a.zip/node_modules/@aws-sdk/util-user-agent-node/",\
         "packageDependencies": [\
@@ -4927,6 +5183,18 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:2.0.7", {\
+        "packageLocation": "./.yarn/cache/@smithy-credential-provider-imds-npm-2.0.7-46bd1e8858-61c59aea7e.zip/node_modules/@smithy/credential-provider-imds/",\
+        "packageDependencies": [\
+          ["@smithy/credential-provider-imds", "npm:2.0.7"],\
+          ["@smithy/node-config-provider", "npm:2.0.7"],\
+          ["@smithy/property-provider", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["@smithy/url-parser", "npm:2.0.5"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@smithy/eventstream-codec", [\
@@ -5111,6 +5379,17 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:2.0.7", {\
+        "packageLocation": "./.yarn/cache/@smithy-node-config-provider-npm-2.0.7-806b68f393-d4b58ee69f.zip/node_modules/@smithy/node-config-provider/",\
+        "packageDependencies": [\
+          ["@smithy/node-config-provider", "npm:2.0.7"],\
+          ["@smithy/property-provider", "npm:2.0.6"],\
+          ["@smithy/shared-ini-file-loader", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@smithy/node-http-handler", [\
@@ -5136,6 +5415,15 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:2.0.6", {\
+        "packageLocation": "./.yarn/cache/@smithy-property-provider-npm-2.0.6-4f294049d1-b9a4aff1f0.zip/node_modules/@smithy/property-provider/",\
+        "packageDependencies": [\
+          ["@smithy/property-provider", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@smithy/protocol-http", [\
@@ -5199,6 +5487,15 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:2.0.6", {\
+        "packageLocation": "./.yarn/cache/@smithy-shared-ini-file-loader-npm-2.0.6-ebbee54019-4b538ef59a.zip/node_modules/@smithy/shared-ini-file-loader/",\
+        "packageDependencies": [\
+          ["@smithy/shared-ini-file-loader", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@smithy/signature-v4", [\
@@ -5324,6 +5621,17 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:2.0.6", {\
+        "packageLocation": "./.yarn/cache/@smithy-util-defaults-mode-browser-npm-2.0.6-d40f165a01-286295e6e9.zip/node_modules/@smithy/util-defaults-mode-browser/",\
+        "packageDependencies": [\
+          ["@smithy/util-defaults-mode-browser", "npm:2.0.6"],\
+          ["@smithy/property-provider", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["bowser", "npm:2.11.0"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@smithy/util-defaults-mode-node", [\
@@ -5339,6 +5647,19 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:2.0.7", {\
+        "packageLocation": "./.yarn/cache/@smithy-util-defaults-mode-node-npm-2.0.7-8a9d03e11c-b1c74a3b41.zip/node_modules/@smithy/util-defaults-mode-node/",\
+        "packageDependencies": [\
+          ["@smithy/util-defaults-mode-node", "npm:2.0.7"],\
+          ["@smithy/config-resolver", "npm:2.0.5"],\
+          ["@smithy/credential-provider-imds", "npm:2.0.7"],\
+          ["@smithy/node-config-provider", "npm:2.0.7"],\
+          ["@smithy/property-provider", "npm:2.0.6"],\
+          ["@smithy/types", "npm:2.2.2"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@smithy/util-hex-encoding", [\
@@ -6161,6 +6482,7 @@ const RAW_RUNTIME_STATE =
         "packageLocation": "./packages/websockets/",\
         "packageDependencies": [\
           ["@standardnotes/websockets-server", "workspace:packages/websockets"],\
+          ["@aws-sdk/client-apigatewaymanagementapi", "npm:3.405.0"],\
           ["@aws-sdk/client-sqs", "npm:3.342.0"],\
           ["@newrelic/winston-enricher", "virtual:c66bf20e88479ada0172094776519a9f51acc4731d22079b60a295bcec7ea42d5545cbce58a77a50d932bf953298799135e99707486e343da6d99ba1d167bdbd#npm:4.0.1"],\
           ["@standardnotes/api", "npm:1.26.26"],\

二进制
.yarn/cache/@aws-sdk-client-apigatewaymanagementapi-npm-3.405.0-e4e17d811f-d7103d0b37.zip


二进制
.yarn/cache/@aws-sdk-client-sso-npm-3.405.0-0b22768239-323f99e024.zip


二进制
.yarn/cache/@aws-sdk-client-sts-npm-3.405.0-b83c3faf19-01ea2a8695.zip


二进制
.yarn/cache/@aws-sdk-credential-provider-ini-npm-3.405.0-759c2d9674-0d2694b969.zip


二进制
.yarn/cache/@aws-sdk-credential-provider-node-npm-3.405.0-33a4e3c01f-58cf90600d.zip


二进制
.yarn/cache/@aws-sdk-credential-provider-process-npm-3.405.0-ed6dc867ed-bd23e267bd.zip


二进制
.yarn/cache/@aws-sdk-credential-provider-sso-npm-3.405.0-24b76ee82f-754f796b2a.zip


二进制
.yarn/cache/@aws-sdk-token-providers-npm-3.405.0-29e68d4065-08e30dbc7b.zip


二进制
.yarn/cache/@aws-sdk-util-user-agent-node-npm-3.405.0-160b854f92-6422874d9e.zip


二进制
.yarn/cache/@smithy-credential-provider-imds-npm-2.0.7-46bd1e8858-61c59aea7e.zip


二进制
.yarn/cache/@smithy-node-config-provider-npm-2.0.7-806b68f393-d4b58ee69f.zip


二进制
.yarn/cache/@smithy-property-provider-npm-2.0.6-4f294049d1-b9a4aff1f0.zip


二进制
.yarn/cache/@smithy-shared-ini-file-loader-npm-2.0.6-ebbee54019-4b538ef59a.zip


二进制
.yarn/cache/@smithy-util-defaults-mode-browser-npm-2.0.6-d40f165a01-286295e6e9.zip


二进制
.yarn/cache/@smithy-util-defaults-mode-node-npm-2.0.7-8a9d03e11c-b1c74a3b41.zip


+ 1 - 0
packages/websockets/package.json

@@ -22,6 +22,7 @@
     "typeorm": "typeorm-ts-node-commonjs"
   },
   "dependencies": {
+    "@aws-sdk/client-apigatewaymanagementapi": "^3.405.0",
     "@aws-sdk/client-sqs": "^3.332.0",
     "@standardnotes/api": "^1.26.26",
     "@standardnotes/common": "workspace:^",

+ 9 - 1
packages/websockets/src/Bootstrap/Container.ts

@@ -4,6 +4,7 @@ const axios = require('axios')
 import { AxiosInstance } from 'axios'
 import Redis from 'ioredis'
 import { SQSClient, SQSClientConfig } from '@aws-sdk/client-sqs'
+import { ApiGatewayManagementApiClient } from '@aws-sdk/client-apigatewaymanagementapi'
 import { Container } from 'inversify'
 import {
   DomainEventHandlerInterface,
@@ -88,6 +89,14 @@ export class ContainerConfigLoader {
       container.bind<SQSClient>(TYPES.SQS).toConstantValue(new SQSClient(sqsConfig))
     }
 
+    container.bind(TYPES.WEBSOCKETS_API_URL).toConstantValue(env.get('WEBSOCKETS_API_URL', true))
+
+    container.bind<ApiGatewayManagementApiClient>(TYPES.WebSockets_ApiGatewayManagementApiClient).toConstantValue(
+      new ApiGatewayManagementApiClient({
+        endpoint: container.get(TYPES.WEBSOCKETS_API_URL),
+      }),
+    )
+
     // Controller
     container.bind<WebSocketServerInterface>(TYPES.WebSocketsController).to(WebSocketsController)
 
@@ -110,7 +119,6 @@ export class ContainerConfigLoader {
     container.bind(TYPES.REDIS_URL).toConstantValue(env.get('REDIS_URL'))
     container.bind(TYPES.SQS_QUEUE_URL).toConstantValue(env.get('SQS_QUEUE_URL'))
     container.bind(TYPES.NEW_RELIC_ENABLED).toConstantValue(env.get('NEW_RELIC_ENABLED', true))
-    container.bind(TYPES.WEBSOCKETS_API_URL).toConstantValue(env.get('WEBSOCKETS_API_URL', true))
     container.bind(TYPES.VERSION).toConstantValue(env.get('VERSION'))
 
     // use cases

+ 1 - 0
packages/websockets/src/Bootstrap/Types.ts

@@ -2,6 +2,7 @@ const TYPES = {
   Logger: Symbol.for('Logger'),
   Redis: Symbol.for('Redis'),
   SQS: Symbol.for('SQS'),
+  WebSockets_ApiGatewayManagementApiClient: Symbol.for('WebSockets_ApiGatewayManagementApiClient'),
   // Controller
   WebSocketsController: Symbol.for('WebSocketsController'),
   // Repositories

+ 23 - 19
packages/websockets/src/Infra/WebSockets/WebSocketsClientMessenger.ts

@@ -1,4 +1,4 @@
-import { AxiosInstance } from 'axios'
+import { ApiGatewayManagementApiClient, PostToConnectionCommand } from '@aws-sdk/client-apigatewaymanagementapi'
 import { Logger } from 'winston'
 import { inject, injectable } from 'inversify'
 
@@ -11,8 +11,8 @@ export class WebSocketsClientMessenger implements ClientMessengerInterface {
   constructor(
     @inject(TYPES.WebSocketsConnectionRepository)
     private webSocketsConnectionRepository: WebSocketsConnectionRepositoryInterface,
-    @inject(TYPES.HTTPClient) private httpClient: AxiosInstance,
-    @inject(TYPES.WEBSOCKETS_API_URL) private webSocketsApiUrl: string,
+    @inject(TYPES.WebSockets_ApiGatewayManagementApiClient)
+    private apiGatewayManagementClient: ApiGatewayManagementApiClient,
     @inject(TYPES.Logger) private logger: Logger,
   ) {}
 
@@ -21,23 +21,27 @@ export class WebSocketsClientMessenger implements ClientMessengerInterface {
 
     for (const connectionUuid of userConnections) {
       this.logger.debug(`Sending message to connection ${connectionUuid} for user ${userUuid}`)
-      const response = await this.httpClient.request({
-        method: 'POST',
-        url: `${this.webSocketsApiUrl}/${connectionUuid}`,
-        headers: {
-          Accept: 'text/plain',
-          'Content-Type': 'text/plain',
-        },
-        data: message,
-        validateStatus:
-          /* istanbul ignore next */
-          (status: number) => status >= 200 && status < 500,
-      })
-      if (response.status !== 200) {
+
+      const requestParams = {
+        ConnectionId: connectionUuid,
+        Data: message,
+      }
+
+      const command = new PostToConnectionCommand(requestParams)
+
+      try {
+        const response = await this.apiGatewayManagementClient.send(command)
+
+        if (response.$metadata.httpStatusCode !== 200) {
+          this.logger.error(
+            `Could not send message to connection ${connectionUuid} for user ${userUuid}. Response status code: ${response.$metadata.httpStatusCode}`,
+          )
+        }
+      } catch (error) {
         this.logger.error(
-          `Could not send message to connection ${connectionUuid} for user ${userUuid}. Response status code: ${
-            response.status
-          }. Response body: ${JSON.stringify(response.data)}`,
+          `Could not send message to connection ${connectionUuid} for user ${userUuid}. Error: ${
+            (error as Error).message
+          }`,
         )
       }
     }

+ 16 - 19
packages/websockets/src/Infra/WebSockets/WebSocketsClientService.spec.ts

@@ -1,7 +1,8 @@
 import 'reflect-metadata'
 
+import { ApiGatewayManagementApiClient } from '@aws-sdk/client-apigatewaymanagementapi'
+
 import { WebSocketsConnectionRepositoryInterface } from '../../Domain/WebSockets/WebSocketsConnectionRepositoryInterface'
-import { AxiosInstance } from 'axios'
 import { Logger } from 'winston'
 
 import { WebSocketsClientMessenger } from './WebSocketsClientMessenger'
@@ -9,13 +10,11 @@ import { WebSocketsClientMessenger } from './WebSocketsClientMessenger'
 describe('WebSocketsClientMessenger', () => {
   let connectionIds: string[]
   let webSocketsConnectionRepository: WebSocketsConnectionRepositoryInterface
-  let httpClient: AxiosInstance
+  let apiGatewayManagementClient: ApiGatewayManagementApiClient
   let logger: Logger
 
-  const webSocketsApiUrl = 'http://test-websockets'
-
   const createService = () =>
-    new WebSocketsClientMessenger(webSocketsConnectionRepository, httpClient, webSocketsApiUrl, logger)
+    new WebSocketsClientMessenger(webSocketsConnectionRepository, apiGatewayManagementClient, logger)
 
   beforeEach(() => {
     connectionIds = ['1', '2']
@@ -23,8 +22,8 @@ describe('WebSocketsClientMessenger', () => {
     webSocketsConnectionRepository = {} as jest.Mocked<WebSocketsConnectionRepositoryInterface>
     webSocketsConnectionRepository.findAllByUserUuid = jest.fn().mockReturnValue(connectionIds)
 
-    httpClient = {} as jest.Mocked<AxiosInstance>
-    httpClient.request = jest.fn().mockReturnValue({ status: 200 })
+    apiGatewayManagementClient = {} as jest.Mocked<ApiGatewayManagementApiClient>
+    apiGatewayManagementClient.send = jest.fn().mockReturnValue({ $metadata: { httpStatusCode: 200 } })
 
     logger = {} as jest.Mocked<Logger>
     logger.debug = jest.fn()
@@ -34,21 +33,19 @@ describe('WebSocketsClientMessenger', () => {
   it('should send a message to all user connections', async () => {
     await createService().send('1-2-3', 'message')
 
-    expect(httpClient.request).toHaveBeenCalledTimes(connectionIds.length)
-    connectionIds.map((id, index) => {
-      expect(httpClient.request).toHaveBeenNthCalledWith(
-        index + 1,
-        expect.objectContaining({
-          method: 'POST',
-          url: `${webSocketsApiUrl}/${id}`,
-          data: 'message',
-        }),
-      )
-    })
+    expect(apiGatewayManagementClient.send).toHaveBeenCalledTimes(connectionIds.length)
   })
 
   it('should log an error if message could not be sent', async () => {
-    httpClient.request = jest.fn().mockReturnValue({ status: 400 })
+    apiGatewayManagementClient.send = jest.fn().mockReturnValue({ $metadata: { httpStatusCode: 500 } })
+
+    await createService().send('1-2-3', 'message')
+
+    expect(logger.error).toHaveBeenCalledTimes(connectionIds.length)
+  })
+
+  it('should log an error if message sending throws error', async () => {
+    apiGatewayManagementClient.send = jest.fn().mockRejectedValue(new Error('error'))
 
     await createService().send('1-2-3', 'message')
 

+ 327 - 0
yarn.lock

@@ -127,6 +127,50 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/client-apigatewaymanagementapi@npm:^3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/client-apigatewaymanagementapi@npm:3.405.0"
+  dependencies:
+    "@aws-crypto/sha256-browser": "npm:3.0.0"
+    "@aws-crypto/sha256-js": "npm:3.0.0"
+    "@aws-sdk/client-sts": "npm:3.405.0"
+    "@aws-sdk/credential-provider-node": "npm:3.405.0"
+    "@aws-sdk/middleware-host-header": "npm:3.398.0"
+    "@aws-sdk/middleware-logger": "npm:3.398.0"
+    "@aws-sdk/middleware-recursion-detection": "npm:3.398.0"
+    "@aws-sdk/middleware-signing": "npm:3.398.0"
+    "@aws-sdk/middleware-user-agent": "npm:3.398.0"
+    "@aws-sdk/types": "npm:3.398.0"
+    "@aws-sdk/util-endpoints": "npm:3.398.0"
+    "@aws-sdk/util-user-agent-browser": "npm:3.398.0"
+    "@aws-sdk/util-user-agent-node": "npm:3.405.0"
+    "@smithy/config-resolver": "npm:^2.0.5"
+    "@smithy/fetch-http-handler": "npm:^2.0.5"
+    "@smithy/hash-node": "npm:^2.0.5"
+    "@smithy/invalid-dependency": "npm:^2.0.5"
+    "@smithy/middleware-content-length": "npm:^2.0.5"
+    "@smithy/middleware-endpoint": "npm:^2.0.5"
+    "@smithy/middleware-retry": "npm:^2.0.5"
+    "@smithy/middleware-serde": "npm:^2.0.5"
+    "@smithy/middleware-stack": "npm:^2.0.0"
+    "@smithy/node-config-provider": "npm:^2.0.6"
+    "@smithy/node-http-handler": "npm:^2.0.5"
+    "@smithy/protocol-http": "npm:^2.0.5"
+    "@smithy/smithy-client": "npm:^2.0.5"
+    "@smithy/types": "npm:^2.2.2"
+    "@smithy/url-parser": "npm:^2.0.5"
+    "@smithy/util-base64": "npm:^2.0.0"
+    "@smithy/util-body-length-browser": "npm:^2.0.0"
+    "@smithy/util-body-length-node": "npm:^2.1.0"
+    "@smithy/util-defaults-mode-browser": "npm:^2.0.6"
+    "@smithy/util-defaults-mode-node": "npm:^2.0.6"
+    "@smithy/util-retry": "npm:^2.0.0"
+    "@smithy/util-utf8": "npm:^2.0.0"
+    tslib: "npm:^2.5.0"
+  checksum: d7103d0b3714e55f6c4e5788a70173ff93075ad4918089373d115a82e024d739a65f35005c371c100dea2c10fe9191cff50b904c7d3979bf1943348b33182102
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/client-lambda@npm:^3.363.0":
   version: 3.398.0
   resolution: "@aws-sdk/client-lambda@npm:3.398.0"
@@ -454,6 +498,47 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/client-sso@npm:3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/client-sso@npm:3.405.0"
+  dependencies:
+    "@aws-crypto/sha256-browser": "npm:3.0.0"
+    "@aws-crypto/sha256-js": "npm:3.0.0"
+    "@aws-sdk/middleware-host-header": "npm:3.398.0"
+    "@aws-sdk/middleware-logger": "npm:3.398.0"
+    "@aws-sdk/middleware-recursion-detection": "npm:3.398.0"
+    "@aws-sdk/middleware-user-agent": "npm:3.398.0"
+    "@aws-sdk/types": "npm:3.398.0"
+    "@aws-sdk/util-endpoints": "npm:3.398.0"
+    "@aws-sdk/util-user-agent-browser": "npm:3.398.0"
+    "@aws-sdk/util-user-agent-node": "npm:3.405.0"
+    "@smithy/config-resolver": "npm:^2.0.5"
+    "@smithy/fetch-http-handler": "npm:^2.0.5"
+    "@smithy/hash-node": "npm:^2.0.5"
+    "@smithy/invalid-dependency": "npm:^2.0.5"
+    "@smithy/middleware-content-length": "npm:^2.0.5"
+    "@smithy/middleware-endpoint": "npm:^2.0.5"
+    "@smithy/middleware-retry": "npm:^2.0.5"
+    "@smithy/middleware-serde": "npm:^2.0.5"
+    "@smithy/middleware-stack": "npm:^2.0.0"
+    "@smithy/node-config-provider": "npm:^2.0.6"
+    "@smithy/node-http-handler": "npm:^2.0.5"
+    "@smithy/protocol-http": "npm:^2.0.5"
+    "@smithy/smithy-client": "npm:^2.0.5"
+    "@smithy/types": "npm:^2.2.2"
+    "@smithy/url-parser": "npm:^2.0.5"
+    "@smithy/util-base64": "npm:^2.0.0"
+    "@smithy/util-body-length-browser": "npm:^2.0.0"
+    "@smithy/util-body-length-node": "npm:^2.1.0"
+    "@smithy/util-defaults-mode-browser": "npm:^2.0.6"
+    "@smithy/util-defaults-mode-node": "npm:^2.0.6"
+    "@smithy/util-retry": "npm:^2.0.0"
+    "@smithy/util-utf8": "npm:^2.0.0"
+    tslib: "npm:^2.5.0"
+  checksum: 323f99e0241650fb04ed9e8ed64f270281aaedd9eb37b12c3c3e003d6b35f000a128f88be462dd595d48a9512892cd425005f4336e1f31c0cb73ba4003357269
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/client-sts@npm:3.342.0":
   version: 3.342.0
   resolution: "@aws-sdk/client-sts@npm:3.342.0"
@@ -544,6 +629,51 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/client-sts@npm:3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/client-sts@npm:3.405.0"
+  dependencies:
+    "@aws-crypto/sha256-browser": "npm:3.0.0"
+    "@aws-crypto/sha256-js": "npm:3.0.0"
+    "@aws-sdk/credential-provider-node": "npm:3.405.0"
+    "@aws-sdk/middleware-host-header": "npm:3.398.0"
+    "@aws-sdk/middleware-logger": "npm:3.398.0"
+    "@aws-sdk/middleware-recursion-detection": "npm:3.398.0"
+    "@aws-sdk/middleware-sdk-sts": "npm:3.398.0"
+    "@aws-sdk/middleware-signing": "npm:3.398.0"
+    "@aws-sdk/middleware-user-agent": "npm:3.398.0"
+    "@aws-sdk/types": "npm:3.398.0"
+    "@aws-sdk/util-endpoints": "npm:3.398.0"
+    "@aws-sdk/util-user-agent-browser": "npm:3.398.0"
+    "@aws-sdk/util-user-agent-node": "npm:3.405.0"
+    "@smithy/config-resolver": "npm:^2.0.5"
+    "@smithy/fetch-http-handler": "npm:^2.0.5"
+    "@smithy/hash-node": "npm:^2.0.5"
+    "@smithy/invalid-dependency": "npm:^2.0.5"
+    "@smithy/middleware-content-length": "npm:^2.0.5"
+    "@smithy/middleware-endpoint": "npm:^2.0.5"
+    "@smithy/middleware-retry": "npm:^2.0.5"
+    "@smithy/middleware-serde": "npm:^2.0.5"
+    "@smithy/middleware-stack": "npm:^2.0.0"
+    "@smithy/node-config-provider": "npm:^2.0.6"
+    "@smithy/node-http-handler": "npm:^2.0.5"
+    "@smithy/protocol-http": "npm:^2.0.5"
+    "@smithy/smithy-client": "npm:^2.0.5"
+    "@smithy/types": "npm:^2.2.2"
+    "@smithy/url-parser": "npm:^2.0.5"
+    "@smithy/util-base64": "npm:^2.0.0"
+    "@smithy/util-body-length-browser": "npm:^2.0.0"
+    "@smithy/util-body-length-node": "npm:^2.1.0"
+    "@smithy/util-defaults-mode-browser": "npm:^2.0.6"
+    "@smithy/util-defaults-mode-node": "npm:^2.0.6"
+    "@smithy/util-retry": "npm:^2.0.0"
+    "@smithy/util-utf8": "npm:^2.0.0"
+    fast-xml-parser: "npm:4.2.5"
+    tslib: "npm:^2.5.0"
+  checksum: 01ea2a8695853b17c7cc5a8cbba6b3af7e24600ac3b1b2d1d33c3f05f895cffb91e73ad8e0bfad3746c9eec86b908d3fd06404f82e50bbe9d41afc2885da18fb
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/config-resolver@npm:3.342.0":
   version: 3.342.0
   resolution: "@aws-sdk/config-resolver@npm:3.342.0"
@@ -627,6 +757,24 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/credential-provider-ini@npm:3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/credential-provider-ini@npm:3.405.0"
+  dependencies:
+    "@aws-sdk/credential-provider-env": "npm:3.398.0"
+    "@aws-sdk/credential-provider-process": "npm:3.405.0"
+    "@aws-sdk/credential-provider-sso": "npm:3.405.0"
+    "@aws-sdk/credential-provider-web-identity": "npm:3.398.0"
+    "@aws-sdk/types": "npm:3.398.0"
+    "@smithy/credential-provider-imds": "npm:^2.0.0"
+    "@smithy/property-provider": "npm:^2.0.0"
+    "@smithy/shared-ini-file-loader": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  checksum: 0d2694b969328dd859ebd6a18e869af90f9263d61591b3ccd0c93bb5b1ab339ad852346b56c497bfb2bb28be814c912ba8072afbbc1763b54cdf46330ba18b8f
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/credential-provider-node@npm:3.342.0":
   version: 3.342.0
   resolution: "@aws-sdk/credential-provider-node@npm:3.342.0"
@@ -664,6 +812,25 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/credential-provider-node@npm:3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/credential-provider-node@npm:3.405.0"
+  dependencies:
+    "@aws-sdk/credential-provider-env": "npm:3.398.0"
+    "@aws-sdk/credential-provider-ini": "npm:3.405.0"
+    "@aws-sdk/credential-provider-process": "npm:3.405.0"
+    "@aws-sdk/credential-provider-sso": "npm:3.405.0"
+    "@aws-sdk/credential-provider-web-identity": "npm:3.398.0"
+    "@aws-sdk/types": "npm:3.398.0"
+    "@smithy/credential-provider-imds": "npm:^2.0.0"
+    "@smithy/property-provider": "npm:^2.0.0"
+    "@smithy/shared-ini-file-loader": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  checksum: 58cf90600d9281ad0c87491d20307b51cd871e1d6560d030809c54f225034078e1daacca1c80d2f71466e71212864293e9a4590d8279bf99c71fcf871242b813
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/credential-provider-process@npm:3.342.0":
   version: 3.342.0
   resolution: "@aws-sdk/credential-provider-process@npm:3.342.0"
@@ -689,6 +856,19 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/credential-provider-process@npm:3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/credential-provider-process@npm:3.405.0"
+  dependencies:
+    "@aws-sdk/types": "npm:3.398.0"
+    "@smithy/property-provider": "npm:^2.0.0"
+    "@smithy/shared-ini-file-loader": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  checksum: bd23e267bd9a2c1a174628e049c033def46dae11647f459eb83f3d1ba938bce71fd313ed4e4c2ff0e41b5f74aefb63410d31c03f4e9041b9e28e074c33578ae7
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/credential-provider-sso@npm:3.342.0":
   version: 3.342.0
   resolution: "@aws-sdk/credential-provider-sso@npm:3.342.0"
@@ -718,6 +898,21 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/credential-provider-sso@npm:3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/credential-provider-sso@npm:3.405.0"
+  dependencies:
+    "@aws-sdk/client-sso": "npm:3.405.0"
+    "@aws-sdk/token-providers": "npm:3.405.0"
+    "@aws-sdk/types": "npm:3.398.0"
+    "@smithy/property-provider": "npm:^2.0.0"
+    "@smithy/shared-ini-file-loader": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  checksum: 754f796b2a5da1915a478d3d749c824c9273dc3299ee303e3ca30260bd66a5d4f120ef7958a47809e019d72b6380e06064eaff0d222e2bc843d63ffc4b35602d
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/credential-provider-web-identity@npm:3.342.0":
   version: 3.342.0
   resolution: "@aws-sdk/credential-provider-web-identity@npm:3.342.0"
@@ -1341,6 +1536,49 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/token-providers@npm:3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/token-providers@npm:3.405.0"
+  dependencies:
+    "@aws-crypto/sha256-browser": "npm:3.0.0"
+    "@aws-crypto/sha256-js": "npm:3.0.0"
+    "@aws-sdk/middleware-host-header": "npm:3.398.0"
+    "@aws-sdk/middleware-logger": "npm:3.398.0"
+    "@aws-sdk/middleware-recursion-detection": "npm:3.398.0"
+    "@aws-sdk/middleware-user-agent": "npm:3.398.0"
+    "@aws-sdk/types": "npm:3.398.0"
+    "@aws-sdk/util-endpoints": "npm:3.398.0"
+    "@aws-sdk/util-user-agent-browser": "npm:3.398.0"
+    "@aws-sdk/util-user-agent-node": "npm:3.405.0"
+    "@smithy/config-resolver": "npm:^2.0.5"
+    "@smithy/fetch-http-handler": "npm:^2.0.5"
+    "@smithy/hash-node": "npm:^2.0.5"
+    "@smithy/invalid-dependency": "npm:^2.0.5"
+    "@smithy/middleware-content-length": "npm:^2.0.5"
+    "@smithy/middleware-endpoint": "npm:^2.0.5"
+    "@smithy/middleware-retry": "npm:^2.0.5"
+    "@smithy/middleware-serde": "npm:^2.0.5"
+    "@smithy/middleware-stack": "npm:^2.0.0"
+    "@smithy/node-config-provider": "npm:^2.0.6"
+    "@smithy/node-http-handler": "npm:^2.0.5"
+    "@smithy/property-provider": "npm:^2.0.0"
+    "@smithy/protocol-http": "npm:^2.0.5"
+    "@smithy/shared-ini-file-loader": "npm:^2.0.6"
+    "@smithy/smithy-client": "npm:^2.0.5"
+    "@smithy/types": "npm:^2.2.2"
+    "@smithy/url-parser": "npm:^2.0.5"
+    "@smithy/util-base64": "npm:^2.0.0"
+    "@smithy/util-body-length-browser": "npm:^2.0.0"
+    "@smithy/util-body-length-node": "npm:^2.1.0"
+    "@smithy/util-defaults-mode-browser": "npm:^2.0.6"
+    "@smithy/util-defaults-mode-node": "npm:^2.0.6"
+    "@smithy/util-retry": "npm:^2.0.0"
+    "@smithy/util-utf8": "npm:^2.0.0"
+    tslib: "npm:^2.5.0"
+  checksum: 08e30dbc7b5d8ddd1d7b72790bb5aed714e586ce0c2caf15afda009e3ed4a32a93b2ad4eb4805826035898a96afbaad834037fdd96231579201b82419899d147
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/types@npm:3.342.0, @aws-sdk/types@npm:^3.222.0":
   version: 3.342.0
   resolution: "@aws-sdk/types@npm:3.342.0"
@@ -1601,6 +1839,23 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/util-user-agent-node@npm:3.405.0":
+  version: 3.405.0
+  resolution: "@aws-sdk/util-user-agent-node@npm:3.405.0"
+  dependencies:
+    "@aws-sdk/types": "npm:3.398.0"
+    "@smithy/node-config-provider": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  peerDependencies:
+    aws-crt: ">=1.0.0"
+  peerDependenciesMeta:
+    aws-crt:
+      optional: true
+  checksum: 6422874d9eba9b07d674e63a800aa5e565182aa23625ffa9fac0224eb10746ec8ee30cdcda44486814cf806d24565c8c41c546e574f02d83c4115058aa1d834f
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/util-utf8-browser@npm:^3.0.0":
   version: 3.259.0
   resolution: "@aws-sdk/util-utf8-browser@npm:3.259.0"
@@ -3837,6 +4092,19 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@smithy/credential-provider-imds@npm:^2.0.7":
+  version: 2.0.7
+  resolution: "@smithy/credential-provider-imds@npm:2.0.7"
+  dependencies:
+    "@smithy/node-config-provider": "npm:^2.0.7"
+    "@smithy/property-provider": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    "@smithy/url-parser": "npm:^2.0.5"
+    tslib: "npm:^2.5.0"
+  checksum: 61c59aea7e8ec100163031ca4606bf8f74db120ae70fb8f70a1310b06642b0a0eca5bd2f9590cb9afc26b46cbe837d8a2182bc1dc48275c5d0b58d3db5f77077
+  languageName: node
+  linkType: hard
+
 "@smithy/eventstream-codec@npm:^2.0.5":
   version: 2.0.5
   resolution: "@smithy/eventstream-codec@npm:2.0.5"
@@ -4006,6 +4274,18 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@smithy/node-config-provider@npm:^2.0.6, @smithy/node-config-provider@npm:^2.0.7":
+  version: 2.0.7
+  resolution: "@smithy/node-config-provider@npm:2.0.7"
+  dependencies:
+    "@smithy/property-provider": "npm:^2.0.6"
+    "@smithy/shared-ini-file-loader": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  checksum: d4b58ee69f013bcf24e2968b5850c7b76ff25834cd66f158f654af2acc402e77c5fdf886a797e4090a0d1ed03455871d24478b4e22d4c1be1118b484390c6518
+  languageName: node
+  linkType: hard
+
 "@smithy/node-http-handler@npm:^2.0.5":
   version: 2.0.5
   resolution: "@smithy/node-http-handler@npm:2.0.5"
@@ -4029,6 +4309,16 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@smithy/property-provider@npm:^2.0.6":
+  version: 2.0.6
+  resolution: "@smithy/property-provider@npm:2.0.6"
+  dependencies:
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  checksum: b9a4aff1f0840dad904b4ba38dee281f284688440c018f9d343b9ab9109798e1ed55bb0e88c2411260f91b8a05e05159b3851bcfa752c14bfffe12f9e43b2f0c
+  languageName: node
+  linkType: hard
+
 "@smithy/protocol-http@npm:^1.0.1":
   version: 1.0.1
   resolution: "@smithy/protocol-http@npm:1.0.1"
@@ -4087,6 +4377,16 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@smithy/shared-ini-file-loader@npm:^2.0.6":
+  version: 2.0.6
+  resolution: "@smithy/shared-ini-file-loader@npm:2.0.6"
+  dependencies:
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  checksum: 4b538ef59a717285d1634e3f84f8514a8c95a680d7be5f4770b4acedd4adf99833408279c364d84e9dbd445264665ca3cda2bd3f381e46ce140e8d37ff0c5408
+  languageName: node
+  linkType: hard
+
 "@smithy/signature-v4@npm:^2.0.0":
   version: 2.0.5
   resolution: "@smithy/signature-v4@npm:2.0.5"
@@ -4203,6 +4503,18 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@smithy/util-defaults-mode-browser@npm:^2.0.6":
+  version: 2.0.6
+  resolution: "@smithy/util-defaults-mode-browser@npm:2.0.6"
+  dependencies:
+    "@smithy/property-provider": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    bowser: "npm:^2.11.0"
+    tslib: "npm:^2.5.0"
+  checksum: 286295e6e9b374581a677c49635c7e91575b04e84fe437f903ad7b0bb91ff1cc47dfe37b61be4d42a8f4d721926263041b4d283be0ce463367e5e571390b9b1b
+  languageName: node
+  linkType: hard
+
 "@smithy/util-defaults-mode-node@npm:^2.0.5":
   version: 2.0.5
   resolution: "@smithy/util-defaults-mode-node@npm:2.0.5"
@@ -4217,6 +4529,20 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@smithy/util-defaults-mode-node@npm:^2.0.6":
+  version: 2.0.7
+  resolution: "@smithy/util-defaults-mode-node@npm:2.0.7"
+  dependencies:
+    "@smithy/config-resolver": "npm:^2.0.5"
+    "@smithy/credential-provider-imds": "npm:^2.0.7"
+    "@smithy/node-config-provider": "npm:^2.0.7"
+    "@smithy/property-provider": "npm:^2.0.6"
+    "@smithy/types": "npm:^2.2.2"
+    tslib: "npm:^2.5.0"
+  checksum: b1c74a3b41aa17d995250107f5ee0227d99c424cb02d1344478047a4cd020beab213d877e537ae0e70186af9f6f1d99d581d7a3a20f96f571ad617ee4a68b318
+  languageName: node
+  linkType: hard
+
 "@smithy/util-hex-encoding@npm:^2.0.0":
   version: 2.0.0
   resolution: "@smithy/util-hex-encoding@npm:2.0.0"
@@ -5045,6 +5371,7 @@ __metadata:
   version: 0.0.0-use.local
   resolution: "@standardnotes/websockets-server@workspace:packages/websockets"
   dependencies:
+    "@aws-sdk/client-apigatewaymanagementapi": "npm:^3.405.0"
     "@aws-sdk/client-sqs": "npm:^3.332.0"
     "@newrelic/winston-enricher": "npm:^4.0.1"
     "@standardnotes/api": "npm:^1.26.26"