瀏覽代碼

feat(auth): introduce AWS X-Ray SDK (#859)

* feat(auth): configure aws-xray-sdk for express

* configured aws sdk clients

* configure setting user metadata on segment

* fix binding

* fix binding order
Karol Sójko 1 年之前
父節點
當前提交
1a388f00c3
共有 36 個文件被更改,包括 643 次插入29 次删除
  1. 318 0
      .pnp.cjs
  2. 二進制
      .yarn/cache/@aws-sdk-service-error-classification-npm-3.370.0-0d5b615252-500f067ba1.zip
  3. 二進制
      .yarn/cache/@aws-sdk-types-npm-3.418.0-451c0cadd0-627955c2c9.zip
  4. 二進制
      .yarn/cache/@smithy-types-npm-2.3.4-7d0b3a2a2f-8a5ad3b47e.zip
  5. 二進制
      .yarn/cache/@types-cls-hooked-npm-4.3.6-8787b64e86-f5b9864348.zip
  6. 二進制
      .yarn/cache/@types-mysql-npm-2.15.22-d643eb999e-6be0aac58f.zip
  7. 二進制
      .yarn/cache/@types-pg-npm-8.10.3-3fc3365c7b-22d4836bd9.zip
  8. 二進制
      .yarn/cache/async-hook-jl-npm-1.7.6-9999815029-f61a3bd4c3.zip
  9. 二進制
      .yarn/cache/atomic-batcher-npm-1.0.2-6fcd3a3097-025e334f1f.zip
  10. 二進制
      .yarn/cache/aws-xray-sdk-core-npm-3.5.2-9083a0c00f-a643998187.zip
  11. 二進制
      .yarn/cache/aws-xray-sdk-express-npm-3.5.2-c4574a664b-62a07d0f3b.zip
  12. 二進制
      .yarn/cache/aws-xray-sdk-mysql-npm-3.5.2-095483ab95-f910a96630.zip
  13. 二進制
      .yarn/cache/aws-xray-sdk-npm-3.5.2-15fc4e54ee-576d0d5ccb.zip
  14. 二進制
      .yarn/cache/aws-xray-sdk-postgres-npm-3.5.2-3a7e7bcc42-f2d6da22c7.zip
  15. 二進制
      .yarn/cache/cls-hooked-npm-4.2.2-db33b9b95f-59081fcc0f.zip
  16. 二進制
      .yarn/cache/emitter-listener-npm-1.1.2-0fe118d0b3-697f53c308.zip
  17. 二進制
      .yarn/cache/obuf-npm-1.1.2-8db5fae8dd-53ff4ab3a1.zip
  18. 二進制
      .yarn/cache/pg-int8-npm-1.0.1-5cd67f3e22-a1e3a05a69.zip
  19. 二進制
      .yarn/cache/pg-numeric-npm-1.0.2-9026ec3427-8899f8200c.zip
  20. 二進制
      .yarn/cache/pg-protocol-npm-1.6.0-089a4b1d3c-995864cc2a.zip
  21. 二進制
      .yarn/cache/pg-types-npm-4.0.1-8f922557d3-2c686ef361.zip
  22. 二進制
      .yarn/cache/postgres-array-npm-3.0.2-da6a3f1fed-0159517e4e.zip
  23. 二進制
      .yarn/cache/postgres-bytea-npm-3.0.0-5de4c664f6-f5c01758fd.zip
  24. 二進制
      .yarn/cache/postgres-date-npm-2.0.1-00e0e0bc9e-908eacec35.zip
  25. 二進制
      .yarn/cache/postgres-interval-npm-3.0.0-936c769b98-c7a1cf006d.zip
  26. 二進制
      .yarn/cache/postgres-range-npm-1.1.3-46f68e1a9e-356a46d97e.zip
  27. 二進制
      .yarn/cache/semver-npm-5.7.2-938ee91eaa-fca14418a1.zip
  28. 二進制
      .yarn/cache/shimmer-npm-1.2.1-8b50bf3206-aa0d6252ad.zip
  29. 二進制
      .yarn/cache/stack-chain-npm-1.3.7-c803ef2abb-6420637b76.zip
  30. 13 0
      packages/auth/bin/server.ts
  31. 1 0
      packages/auth/package.json
  32. 39 16
      packages/auth/src/Bootstrap/Container.ts
  33. 9 0
      packages/auth/src/Infra/InversifyExpressUtils/Middleware/ApiGatewayAuthMiddleware.ts
  34. 4 6
      packages/auth/src/Infra/InversifyExpressUtils/Middleware/OptionalCrossServiceTokenMiddleware.ts
  35. 4 6
      packages/auth/src/Infra/InversifyExpressUtils/Middleware/RequiredCrossServiceTokenMiddleware.ts
  36. 255 1
      yarn.lock

+ 318 - 0
.pnp.cjs

@@ -1605,6 +1605,13 @@ const RAW_RUNTIME_STATE =
           ["@aws-sdk/service-error-classification", "npm:3.342.0"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.370.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-service-error-classification-npm-3.370.0-0d5b615252-500f067ba1.zip/node_modules/@aws-sdk/service-error-classification/",\
+        "packageDependencies": [\
+          ["@aws-sdk/service-error-classification", "npm:3.370.0"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/shared-ini-file-loader", [\
@@ -1788,6 +1795,15 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:3.418.0", {\
+        "packageLocation": "./.yarn/cache/@aws-sdk-types-npm-3.418.0-451c0cadd0-627955c2c9.zip/node_modules/@aws-sdk/types/",\
+        "packageDependencies": [\
+          ["@aws-sdk/types", "npm:3.418.0"],\
+          ["@smithy/types", "npm:2.3.4"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@aws-sdk/url-parser", [\
@@ -5488,6 +5504,14 @@ const RAW_RUNTIME_STATE =
           ["tslib", "npm:2.5.2"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:2.3.4", {\
+        "packageLocation": "./.yarn/cache/@smithy-types-npm-2.3.4-7d0b3a2a2f-8a5ad3b47e.zip/node_modules/@smithy/types/",\
+        "packageDependencies": [\
+          ["@smithy/types", "npm:2.3.4"],\
+          ["tslib", "npm:2.5.2"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@smithy/url-parser", [\
@@ -5835,6 +5859,7 @@ const RAW_RUNTIME_STATE =
           ["@types/uuid", "npm:9.0.3"],\
           ["@typescript-eslint/eslint-plugin", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
           ["@typescript-eslint/parser", "virtual:fd909b174d079e30b336c4ce72c38a88c1e447767b1a8dd7655e07719a1e31b97807f0931368724fc78897ff15e6a6d00b83316c0f76d11f85111f342e08bb79#npm:6.5.0"],\
+          ["aws-xray-sdk", "npm:3.5.2"],\
           ["axios", "npm:1.4.0"],\
           ["bcryptjs", "npm:2.4.3"],\
           ["cors", "npm:2.8.5"],\
@@ -6609,6 +6634,16 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["@types/cls-hooked", [\
+      ["npm:4.3.6", {\
+        "packageLocation": "./.yarn/cache/@types-cls-hooked-npm-4.3.6-8787b64e86-f5b9864348.zip/node_modules/@types/cls-hooked/",\
+        "packageDependencies": [\
+          ["@types/cls-hooked", "npm:4.3.6"],\
+          ["@types/node", "npm:20.2.5"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["@types/concat-stream", [\
       ["npm:1.6.1", {\
         "packageLocation": "./.yarn/cache/@types-concat-stream-npm-1.6.1-42cd06b019-7d211e7433.zip/node_modules/@types/concat-stream/",\
@@ -6868,6 +6903,16 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["@types/mysql", [\
+      ["npm:2.15.22", {\
+        "packageLocation": "./.yarn/cache/@types-mysql-npm-2.15.22-d643eb999e-6be0aac58f.zip/node_modules/@types/mysql/",\
+        "packageDependencies": [\
+          ["@types/mysql", "npm:2.15.22"],\
+          ["@types/node", "npm:20.2.5"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["@types/newrelic", [\
       ["npm:9.14.0", {\
         "packageLocation": "./.yarn/cache/@types-newrelic-npm-9.14.0-4668da51a1-3a54ea75a4.zip/node_modules/@types/newrelic/",\
@@ -6936,6 +6981,18 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["@types/pg", [\
+      ["npm:8.10.3", {\
+        "packageLocation": "./.yarn/cache/@types-pg-npm-8.10.3-3fc3365c7b-22d4836bd9.zip/node_modules/@types/pg/",\
+        "packageDependencies": [\
+          ["@types/pg", "npm:8.10.3"],\
+          ["@types/node", "npm:20.2.5"],\
+          ["pg-protocol", "npm:1.6.0"],\
+          ["pg-types", "npm:4.0.1"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["@types/prettier", [\
       ["npm:2.7.3", {\
         "packageLocation": "./.yarn/cache/@types-prettier-npm-2.7.3-497316f37c-cda84c19ac.zip/node_modules/@types/prettier/",\
@@ -7946,6 +8003,16 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["async-hook-jl", [\
+      ["npm:1.7.6", {\
+        "packageLocation": "./.yarn/cache/async-hook-jl-npm-1.7.6-9999815029-f61a3bd4c3.zip/node_modules/async-hook-jl/",\
+        "packageDependencies": [\
+          ["async-hook-jl", "npm:1.7.6"],\
+          ["stack-chain", "npm:1.3.7"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["asynckit", [\
       ["npm:0.4.0", {\
         "packageLocation": "./.yarn/cache/asynckit-npm-0.4.0-c718858525-3ce727cbc7.zip/node_modules/asynckit/",\
@@ -7955,6 +8022,112 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["atomic-batcher", [\
+      ["npm:1.0.2", {\
+        "packageLocation": "./.yarn/cache/atomic-batcher-npm-1.0.2-6fcd3a3097-025e334f1f.zip/node_modules/atomic-batcher/",\
+        "packageDependencies": [\
+          ["atomic-batcher", "npm:1.0.2"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["aws-xray-sdk", [\
+      ["npm:3.5.2", {\
+        "packageLocation": "./.yarn/cache/aws-xray-sdk-npm-3.5.2-15fc4e54ee-576d0d5ccb.zip/node_modules/aws-xray-sdk/",\
+        "packageDependencies": [\
+          ["aws-xray-sdk", "npm:3.5.2"],\
+          ["aws-xray-sdk-core", "npm:3.5.2"],\
+          ["aws-xray-sdk-express", "virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2"],\
+          ["aws-xray-sdk-mysql", "virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2"],\
+          ["aws-xray-sdk-postgres", "virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["aws-xray-sdk-core", [\
+      ["npm:3.5.2", {\
+        "packageLocation": "./.yarn/cache/aws-xray-sdk-core-npm-3.5.2-9083a0c00f-a643998187.zip/node_modules/aws-xray-sdk-core/",\
+        "packageDependencies": [\
+          ["aws-xray-sdk-core", "npm:3.5.2"],\
+          ["@aws-sdk/service-error-classification", "npm:3.370.0"],\
+          ["@aws-sdk/types", "npm:3.418.0"],\
+          ["@types/cls-hooked", "npm:4.3.6"],\
+          ["atomic-batcher", "npm:1.0.2"],\
+          ["cls-hooked", "npm:4.2.2"],\
+          ["semver", "npm:7.5.4"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["aws-xray-sdk-express", [\
+      ["npm:3.5.2", {\
+        "packageLocation": "./.yarn/cache/aws-xray-sdk-express-npm-3.5.2-c4574a664b-62a07d0f3b.zip/node_modules/aws-xray-sdk-express/",\
+        "packageDependencies": [\
+          ["aws-xray-sdk-express", "npm:3.5.2"]\
+        ],\
+        "linkType": "SOFT"\
+      }],\
+      ["virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2", {\
+        "packageLocation": "./.yarn/__virtual__/aws-xray-sdk-express-virtual-36027c3d91/0/cache/aws-xray-sdk-express-npm-3.5.2-c4574a664b-62a07d0f3b.zip/node_modules/aws-xray-sdk-express/",\
+        "packageDependencies": [\
+          ["aws-xray-sdk-express", "virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2"],\
+          ["@types/aws-xray-sdk-core", null],\
+          ["@types/express", "npm:4.17.17"],\
+          ["aws-xray-sdk-core", "npm:3.5.2"]\
+        ],\
+        "packagePeers": [\
+          "@types/aws-xray-sdk-core",\
+          "aws-xray-sdk-core"\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["aws-xray-sdk-mysql", [\
+      ["npm:3.5.2", {\
+        "packageLocation": "./.yarn/cache/aws-xray-sdk-mysql-npm-3.5.2-095483ab95-f910a96630.zip/node_modules/aws-xray-sdk-mysql/",\
+        "packageDependencies": [\
+          ["aws-xray-sdk-mysql", "npm:3.5.2"]\
+        ],\
+        "linkType": "SOFT"\
+      }],\
+      ["virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2", {\
+        "packageLocation": "./.yarn/__virtual__/aws-xray-sdk-mysql-virtual-d8a5f29b75/0/cache/aws-xray-sdk-mysql-npm-3.5.2-095483ab95-f910a96630.zip/node_modules/aws-xray-sdk-mysql/",\
+        "packageDependencies": [\
+          ["aws-xray-sdk-mysql", "virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2"],\
+          ["@types/aws-xray-sdk-core", null],\
+          ["@types/mysql", "npm:2.15.22"],\
+          ["aws-xray-sdk-core", "npm:3.5.2"]\
+        ],\
+        "packagePeers": [\
+          "@types/aws-xray-sdk-core",\
+          "aws-xray-sdk-core"\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["aws-xray-sdk-postgres", [\
+      ["npm:3.5.2", {\
+        "packageLocation": "./.yarn/cache/aws-xray-sdk-postgres-npm-3.5.2-3a7e7bcc42-f2d6da22c7.zip/node_modules/aws-xray-sdk-postgres/",\
+        "packageDependencies": [\
+          ["aws-xray-sdk-postgres", "npm:3.5.2"]\
+        ],\
+        "linkType": "SOFT"\
+      }],\
+      ["virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2", {\
+        "packageLocation": "./.yarn/__virtual__/aws-xray-sdk-postgres-virtual-c6edb063fc/0/cache/aws-xray-sdk-postgres-npm-3.5.2-3a7e7bcc42-f2d6da22c7.zip/node_modules/aws-xray-sdk-postgres/",\
+        "packageDependencies": [\
+          ["aws-xray-sdk-postgres", "virtual:15fc4e54eec18d85ce3f22aa2405619072c35fbd500ad809cce2c9e4ead8a191fcc189cef6a5d76df3bea5576f09735fc4d32f086db561623afc56dd36794c8f#npm:3.5.2"],\
+          ["@types/aws-xray-sdk-core", null],\
+          ["@types/pg", "npm:8.10.3"],\
+          ["aws-xray-sdk-core", "npm:3.5.2"]\
+        ],\
+        "packagePeers": [\
+          "@types/aws-xray-sdk-core",\
+          "aws-xray-sdk-core"\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["axios", [\
       ["npm:0.21.4", {\
         "packageLocation": "./.yarn/cache/axios-npm-0.21.4-e278873748-da644592cb.zip/node_modules/axios/",\
@@ -8745,6 +8918,18 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["cls-hooked", [\
+      ["npm:4.2.2", {\
+        "packageLocation": "./.yarn/cache/cls-hooked-npm-4.2.2-db33b9b95f-59081fcc0f.zip/node_modules/cls-hooked/",\
+        "packageDependencies": [\
+          ["cls-hooked", "npm:4.2.2"],\
+          ["async-hook-jl", "npm:1.7.6"],\
+          ["emitter-listener", "npm:1.1.2"],\
+          ["semver", "npm:5.7.2"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["cluster-key-slot", [\
       ["npm:1.1.2", {\
         "packageLocation": "./.yarn/cache/cluster-key-slot-npm-1.1.2-0571a28825-516ed8b5e1.zip/node_modules/cluster-key-slot/",\
@@ -9635,6 +9820,16 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["emitter-listener", [\
+      ["npm:1.1.2", {\
+        "packageLocation": "./.yarn/cache/emitter-listener-npm-1.1.2-0fe118d0b3-697f53c308.zip/node_modules/emitter-listener/",\
+        "packageDependencies": [\
+          ["emitter-listener", "npm:1.1.2"],\
+          ["shimmer", "npm:1.2.1"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["emittery", [\
       ["npm:0.13.1", {\
         "packageLocation": "./.yarn/cache/emittery-npm-0.13.1-cb6cd1bb03-fbe214171d.zip/node_modules/emittery/",\
@@ -14007,6 +14202,15 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["obuf", [\
+      ["npm:1.1.2", {\
+        "packageLocation": "./.yarn/cache/obuf-npm-1.1.2-8db5fae8dd-53ff4ab3a1.zip/node_modules/obuf/",\
+        "packageDependencies": [\
+          ["obuf", "npm:1.1.2"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["on-finished", [\
       ["npm:2.4.1", {\
         "packageLocation": "./.yarn/cache/on-finished-npm-2.4.1-907af70f88-8e81472c50.zip/node_modules/on-finished/",\
@@ -14467,6 +14671,49 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["pg-int8", [\
+      ["npm:1.0.1", {\
+        "packageLocation": "./.yarn/cache/pg-int8-npm-1.0.1-5cd67f3e22-a1e3a05a69.zip/node_modules/pg-int8/",\
+        "packageDependencies": [\
+          ["pg-int8", "npm:1.0.1"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["pg-numeric", [\
+      ["npm:1.0.2", {\
+        "packageLocation": "./.yarn/cache/pg-numeric-npm-1.0.2-9026ec3427-8899f8200c.zip/node_modules/pg-numeric/",\
+        "packageDependencies": [\
+          ["pg-numeric", "npm:1.0.2"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["pg-protocol", [\
+      ["npm:1.6.0", {\
+        "packageLocation": "./.yarn/cache/pg-protocol-npm-1.6.0-089a4b1d3c-995864cc2a.zip/node_modules/pg-protocol/",\
+        "packageDependencies": [\
+          ["pg-protocol", "npm:1.6.0"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["pg-types", [\
+      ["npm:4.0.1", {\
+        "packageLocation": "./.yarn/cache/pg-types-npm-4.0.1-8f922557d3-2c686ef361.zip/node_modules/pg-types/",\
+        "packageDependencies": [\
+          ["pg-types", "npm:4.0.1"],\
+          ["pg-int8", "npm:1.0.1"],\
+          ["pg-numeric", "npm:1.0.2"],\
+          ["postgres-array", "npm:3.0.2"],\
+          ["postgres-bytea", "npm:3.0.0"],\
+          ["postgres-date", "npm:2.0.1"],\
+          ["postgres-interval", "npm:3.0.0"],\
+          ["postgres-range", "npm:1.1.3"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["picocolors", [\
       ["npm:1.0.0", {\
         "packageLocation": "./.yarn/cache/picocolors-npm-1.0.0-d81e0b1927-a2e8092dd8.zip/node_modules/picocolors/",\
@@ -14538,6 +14785,52 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["postgres-array", [\
+      ["npm:3.0.2", {\
+        "packageLocation": "./.yarn/cache/postgres-array-npm-3.0.2-da6a3f1fed-0159517e4e.zip/node_modules/postgres-array/",\
+        "packageDependencies": [\
+          ["postgres-array", "npm:3.0.2"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["postgres-bytea", [\
+      ["npm:3.0.0", {\
+        "packageLocation": "./.yarn/cache/postgres-bytea-npm-3.0.0-5de4c664f6-f5c01758fd.zip/node_modules/postgres-bytea/",\
+        "packageDependencies": [\
+          ["postgres-bytea", "npm:3.0.0"],\
+          ["obuf", "npm:1.1.2"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["postgres-date", [\
+      ["npm:2.0.1", {\
+        "packageLocation": "./.yarn/cache/postgres-date-npm-2.0.1-00e0e0bc9e-908eacec35.zip/node_modules/postgres-date/",\
+        "packageDependencies": [\
+          ["postgres-date", "npm:2.0.1"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["postgres-interval", [\
+      ["npm:3.0.0", {\
+        "packageLocation": "./.yarn/cache/postgres-interval-npm-3.0.0-936c769b98-c7a1cf006d.zip/node_modules/postgres-interval/",\
+        "packageDependencies": [\
+          ["postgres-interval", "npm:3.0.0"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
+    ["postgres-range", [\
+      ["npm:1.1.3", {\
+        "packageLocation": "./.yarn/cache/postgres-range-npm-1.1.3-46f68e1a9e-356a46d97e.zip/node_modules/postgres-range/",\
+        "packageDependencies": [\
+          ["postgres-range", "npm:1.1.3"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["prelude-ls", [\
       ["npm:1.2.1", {\
         "packageLocation": "./.yarn/cache/prelude-ls-npm-1.2.1-3e4d272a55-0b9d2c7680.zip/node_modules/prelude-ls/",\
@@ -15297,6 +15590,13 @@ const RAW_RUNTIME_STATE =
         ],\
         "linkType": "HARD"\
       }],\
+      ["npm:5.7.2", {\
+        "packageLocation": "./.yarn/cache/semver-npm-5.7.2-938ee91eaa-fca14418a1.zip/node_modules/semver/",\
+        "packageDependencies": [\
+          ["semver", "npm:5.7.2"]\
+        ],\
+        "linkType": "HARD"\
+      }],\
       ["npm:6.3.0", {\
         "packageLocation": "./.yarn/cache/semver-npm-6.3.0-b3eace8bfd-8dd72e7c7c.zip/node_modules/semver/",\
         "packageDependencies": [\
@@ -15441,6 +15741,15 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["shimmer", [\
+      ["npm:1.2.1", {\
+        "packageLocation": "./.yarn/cache/shimmer-npm-1.2.1-8b50bf3206-aa0d6252ad.zip/node_modules/shimmer/",\
+        "packageDependencies": [\
+          ["shimmer", "npm:1.2.1"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["side-channel", [\
       ["npm:1.0.4", {\
         "packageLocation": "./.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-c4998d9fc5.zip/node_modules/side-channel/",\
@@ -15765,6 +16074,15 @@ const RAW_RUNTIME_STATE =
         "linkType": "HARD"\
       }]\
     ]],\
+    ["stack-chain", [\
+      ["npm:1.3.7", {\
+        "packageLocation": "./.yarn/cache/stack-chain-npm-1.3.7-c803ef2abb-6420637b76.zip/node_modules/stack-chain/",\
+        "packageDependencies": [\
+          ["stack-chain", "npm:1.3.7"]\
+        ],\
+        "linkType": "HARD"\
+      }]\
+    ]],\
     ["stack-trace", [\
       ["npm:0.0.10", {\
         "packageLocation": "./.yarn/cache/stack-trace-npm-0.0.10-9460b173e1-7bd633f0e9.zip/node_modules/stack-trace/",\

二進制
.yarn/cache/@aws-sdk-service-error-classification-npm-3.370.0-0d5b615252-500f067ba1.zip


二進制
.yarn/cache/@aws-sdk-types-npm-3.418.0-451c0cadd0-627955c2c9.zip


二進制
.yarn/cache/@smithy-types-npm-2.3.4-7d0b3a2a2f-8a5ad3b47e.zip


二進制
.yarn/cache/@types-cls-hooked-npm-4.3.6-8787b64e86-f5b9864348.zip


二進制
.yarn/cache/@types-mysql-npm-2.15.22-d643eb999e-6be0aac58f.zip


二進制
.yarn/cache/@types-pg-npm-8.10.3-3fc3365c7b-22d4836bd9.zip


二進制
.yarn/cache/async-hook-jl-npm-1.7.6-9999815029-f61a3bd4c3.zip


二進制
.yarn/cache/atomic-batcher-npm-1.0.2-6fcd3a3097-025e334f1f.zip


二進制
.yarn/cache/aws-xray-sdk-core-npm-3.5.2-9083a0c00f-a643998187.zip


二進制
.yarn/cache/aws-xray-sdk-express-npm-3.5.2-c4574a664b-62a07d0f3b.zip


二進制
.yarn/cache/aws-xray-sdk-mysql-npm-3.5.2-095483ab95-f910a96630.zip


二進制
.yarn/cache/aws-xray-sdk-npm-3.5.2-15fc4e54ee-576d0d5ccb.zip


二進制
.yarn/cache/aws-xray-sdk-postgres-npm-3.5.2-3a7e7bcc42-f2d6da22c7.zip


二進制
.yarn/cache/cls-hooked-npm-4.2.2-db33b9b95f-59081fcc0f.zip


二進制
.yarn/cache/emitter-listener-npm-1.1.2-0fe118d0b3-697f53c308.zip


二進制
.yarn/cache/obuf-npm-1.1.2-8db5fae8dd-53ff4ab3a1.zip


二進制
.yarn/cache/pg-int8-npm-1.0.1-5cd67f3e22-a1e3a05a69.zip


二進制
.yarn/cache/pg-numeric-npm-1.0.2-9026ec3427-8899f8200c.zip


二進制
.yarn/cache/pg-protocol-npm-1.6.0-089a4b1d3c-995864cc2a.zip


二進制
.yarn/cache/pg-types-npm-4.0.1-8f922557d3-2c686ef361.zip


二進制
.yarn/cache/postgres-array-npm-3.0.2-da6a3f1fed-0159517e4e.zip


二進制
.yarn/cache/postgres-bytea-npm-3.0.0-5de4c664f6-f5c01758fd.zip


二進制
.yarn/cache/postgres-date-npm-2.0.1-00e0e0bc9e-908eacec35.zip


二進制
.yarn/cache/postgres-interval-npm-3.0.0-936c769b98-c7a1cf006d.zip


二進制
.yarn/cache/postgres-range-npm-1.1.3-46f68e1a9e-356a46d97e.zip


二進制
.yarn/cache/semver-npm-5.7.2-938ee91eaa-fca14418a1.zip


二進制
.yarn/cache/shimmer-npm-1.2.1-8b50bf3206-aa0d6252ad.zip


二進制
.yarn/cache/stack-chain-npm-1.3.7-c803ef2abb-6420637b76.zip


+ 13 - 0
packages/auth/bin/server.ts

@@ -24,11 +24,13 @@ import { urlencoded, json, Request, Response, NextFunction } from 'express'
 import * as winston from 'winston'
 import * as dayjs from 'dayjs'
 import * as utc from 'dayjs/plugin/utc'
+import { express } from 'aws-xray-sdk'
 
 import { InversifyExpressServer } from 'inversify-express-utils'
 import { ContainerConfigLoader } from '../src/Bootstrap/Container'
 import TYPES from '../src/Bootstrap/Types'
 import { Env } from '../src/Bootstrap/Env'
+import { ServiceIdentifier } from '@standardnotes/domain-core'
 
 const container = new ContainerConfigLoader()
 void container.load().then((container) => {
@@ -37,9 +39,16 @@ void container.load().then((container) => {
   const env: Env = new Env()
   env.load()
 
+  const isConfiguredForAWSProduction =
+    env.get('MODE', true) !== 'home-server' && env.get('MODE', true) !== 'self-hosted'
+
   const server = new InversifyExpressServer(container)
 
   server.setConfig((app) => {
+    if (isConfiguredForAWSProduction) {
+      app.use(express.openSegment(ServiceIdentifier.NAMES.Auth))
+    }
+
     app.use((_request: Request, response: Response, next: NextFunction) => {
       response.setHeader('X-Auth-Version', container.get(TYPES.Auth_VERSION))
       next()
@@ -66,6 +75,10 @@ void container.load().then((container) => {
 
   const serverInstance = server.build()
 
+  if (isConfiguredForAWSProduction) {
+    serverInstance.use(express.closeSegment())
+  }
+
   serverInstance.listen(env.get('PORT'))
 
   logger.info(`Server started on port ${process.env.PORT}`)

+ 1 - 0
packages/auth/package.json

@@ -54,6 +54,7 @@
     "@standardnotes/sncrypto-common": "^1.13.4",
     "@standardnotes/sncrypto-node": "workspace:*",
     "@standardnotes/time": "workspace:*",
+    "aws-xray-sdk": "^3.5.2",
     "axios": "^1.1.3",
     "bcryptjs": "2.4.3",
     "cors": "2.8.5",

+ 39 - 16
packages/auth/src/Bootstrap/Container.ts

@@ -1,5 +1,6 @@
 import * as winston from 'winston'
 import Redis from 'ioredis'
+import { captureAWSv3Client } from 'aws-xray-sdk'
 import { SNSClient, SNSClientConfig } from '@aws-sdk/client-sns'
 import { SQSClient, SQSClientConfig } from '@aws-sdk/client-sqs'
 import { Container } from 'inversify'
@@ -320,6 +321,8 @@ export class ContainerConfigLoader {
     logger.debug('Database initialized')
 
     const isConfiguredForHomeServer = env.get('MODE', true) === 'home-server'
+    const isConfiguredForSelfHosting = env.get('MODE', true) === 'self-hosted'
+    const isConfiguredForAWSProduction = !isConfiguredForHomeServer && !isConfiguredForSelfHosting
     const isConfiguredForInMemoryCache = env.get('CACHE_TYPE', true) === 'memory'
 
     if (!isConfiguredForInMemoryCache) {
@@ -350,7 +353,11 @@ export class ContainerConfigLoader {
           secretAccessKey: env.get('SNS_SECRET_ACCESS_KEY', true),
         }
       }
-      container.bind<SNSClient>(TYPES.Auth_SNS).toConstantValue(new SNSClient(snsConfig))
+      let snsClient = new SNSClient(snsConfig)
+      if (isConfiguredForAWSProduction) {
+        snsClient = captureAWSv3Client(snsClient)
+      }
+      container.bind<SNSClient>(TYPES.Auth_SNS).toConstantValue(snsClient)
 
       const sqsConfig: SQSClientConfig = {
         region: env.get('SQS_AWS_REGION', true),
@@ -364,7 +371,11 @@ export class ContainerConfigLoader {
           secretAccessKey: env.get('SQS_SECRET_ACCESS_KEY', true),
         }
       }
-      container.bind<SQSClient>(TYPES.Auth_SQS).toConstantValue(new SQSClient(sqsConfig))
+      let sqsClient = new SQSClient(sqsConfig)
+      if (isConfiguredForAWSProduction) {
+        sqsClient = captureAWSv3Client(sqsClient)
+      }
+      container.bind<SQSClient>(TYPES.Auth_SQS).toConstantValue(sqsClient)
     }
 
     // Mapping
@@ -499,20 +510,6 @@ export class ContainerConfigLoader {
         ),
       )
 
-    // Middleware
-    container.bind<SessionMiddleware>(TYPES.Auth_SessionMiddleware).to(SessionMiddleware)
-    container.bind<LockMiddleware>(TYPES.Auth_LockMiddleware).to(LockMiddleware)
-    container
-      .bind<RequiredCrossServiceTokenMiddleware>(TYPES.Auth_RequiredCrossServiceTokenMiddleware)
-      .to(RequiredCrossServiceTokenMiddleware)
-    container
-      .bind<OptionalCrossServiceTokenMiddleware>(TYPES.Auth_OptionalCrossServiceTokenMiddleware)
-      .to(OptionalCrossServiceTokenMiddleware)
-    container
-      .bind<ApiGatewayOfflineAuthMiddleware>(TYPES.Auth_ApiGatewayOfflineAuthMiddleware)
-      .to(ApiGatewayOfflineAuthMiddleware)
-    container.bind<OfflineUserAuthMiddleware>(TYPES.Auth_OfflineUserAuthMiddleware).to(OfflineUserAuthMiddleware)
-
     // Projectors
     container.bind<SessionProjector>(TYPES.Auth_SessionProjector).to(SessionProjector)
     container.bind<UserProjector>(TYPES.Auth_UserProjector).to(UserProjector)
@@ -741,6 +738,32 @@ export class ContainerConfigLoader {
           : new SNSDomainEventPublisher(container.get(TYPES.Auth_SNS), container.get(TYPES.Auth_SNS_TOPIC_ARN)),
       )
 
+    // Middleware
+    container.bind<SessionMiddleware>(TYPES.Auth_SessionMiddleware).to(SessionMiddleware)
+    container.bind<LockMiddleware>(TYPES.Auth_LockMiddleware).to(LockMiddleware)
+    container
+      .bind<RequiredCrossServiceTokenMiddleware>(TYPES.Auth_RequiredCrossServiceTokenMiddleware)
+      .toConstantValue(
+        new RequiredCrossServiceTokenMiddleware(
+          container.get<TokenDecoderInterface<CrossServiceTokenData>>(TYPES.Auth_CrossServiceTokenDecoder),
+          isConfiguredForAWSProduction,
+          container.get<winston.Logger>(TYPES.Auth_Logger),
+        ),
+      )
+    container
+      .bind<OptionalCrossServiceTokenMiddleware>(TYPES.Auth_OptionalCrossServiceTokenMiddleware)
+      .toConstantValue(
+        new OptionalCrossServiceTokenMiddleware(
+          container.get<TokenDecoderInterface<CrossServiceTokenData>>(TYPES.Auth_CrossServiceTokenDecoder),
+          isConfiguredForAWSProduction,
+          container.get<winston.Logger>(TYPES.Auth_Logger),
+        ),
+      )
+    container
+      .bind<ApiGatewayOfflineAuthMiddleware>(TYPES.Auth_ApiGatewayOfflineAuthMiddleware)
+      .to(ApiGatewayOfflineAuthMiddleware)
+    container.bind<OfflineUserAuthMiddleware>(TYPES.Auth_OfflineUserAuthMiddleware).to(OfflineUserAuthMiddleware)
+
     // use cases
     container
       .bind<TraceSession>(TYPES.Auth_TraceSession)

+ 9 - 0
packages/auth/src/Infra/InversifyExpressUtils/Middleware/ApiGatewayAuthMiddleware.ts

@@ -2,10 +2,12 @@ import { CrossServiceTokenData, TokenDecoderInterface } from '@standardnotes/sec
 import { NextFunction, Request, Response } from 'express'
 import { BaseMiddleware } from 'inversify-express-utils'
 import { Logger } from 'winston'
+import { Segment, getSegment } from 'aws-xray-sdk'
 
 export abstract class ApiGatewayAuthMiddleware extends BaseMiddleware {
   constructor(
     private tokenDecoder: TokenDecoderInterface<CrossServiceTokenData>,
+    private isConfiguredForAWSProduction: boolean,
     private logger: Logger,
   ) {
     super()
@@ -39,6 +41,13 @@ export abstract class ApiGatewayAuthMiddleware extends BaseMiddleware {
       response.locals.session = token.session
       response.locals.readOnlyAccess = token.session?.readonly_access ?? false
 
+      if (this.isConfiguredForAWSProduction) {
+        const segment = getSegment()
+        if (segment instanceof Segment) {
+          segment.setUser(token.user.uuid)
+        }
+      }
+
       return next()
     } catch (error) {
       return next(error)

+ 4 - 6
packages/auth/src/Infra/InversifyExpressUtils/Middleware/OptionalCrossServiceTokenMiddleware.ts

@@ -1,18 +1,16 @@
 import { CrossServiceTokenData, TokenDecoderInterface } from '@standardnotes/security'
 import { NextFunction, Request, Response } from 'express'
-import { inject, injectable } from 'inversify'
 import { Logger } from 'winston'
 
-import TYPES from '../../../Bootstrap/Types'
 import { ApiGatewayAuthMiddleware } from './ApiGatewayAuthMiddleware'
 
-@injectable()
 export class OptionalCrossServiceTokenMiddleware extends ApiGatewayAuthMiddleware {
   constructor(
-    @inject(TYPES.Auth_CrossServiceTokenDecoder) tokenDecoder: TokenDecoderInterface<CrossServiceTokenData>,
-    @inject(TYPES.Auth_Logger) logger: Logger,
+    tokenDecoder: TokenDecoderInterface<CrossServiceTokenData>,
+    isConfiguredForAWSProduction: boolean,
+    logger: Logger,
   ) {
-    super(tokenDecoder, logger)
+    super(tokenDecoder, isConfiguredForAWSProduction, logger)
   }
 
   protected override handleMissingToken(request: Request, _response: Response, next: NextFunction): boolean {

+ 4 - 6
packages/auth/src/Infra/InversifyExpressUtils/Middleware/RequiredCrossServiceTokenMiddleware.ts

@@ -1,18 +1,16 @@
 import { CrossServiceTokenData, TokenDecoderInterface } from '@standardnotes/security'
 import { NextFunction, Request, Response } from 'express'
-import { inject, injectable } from 'inversify'
 import { Logger } from 'winston'
 
-import TYPES from '../../../Bootstrap/Types'
 import { ApiGatewayAuthMiddleware } from './ApiGatewayAuthMiddleware'
 
-@injectable()
 export class RequiredCrossServiceTokenMiddleware extends ApiGatewayAuthMiddleware {
   constructor(
-    @inject(TYPES.Auth_CrossServiceTokenDecoder) tokenDecoder: TokenDecoderInterface<CrossServiceTokenData>,
-    @inject(TYPES.Auth_Logger) logger: Logger,
+    tokenDecoder: TokenDecoderInterface<CrossServiceTokenData>,
+    isConfiguredForAWSProduction: boolean,
+    logger: Logger,
   ) {
-    super(tokenDecoder, logger)
+    super(tokenDecoder, isConfiguredForAWSProduction, logger)
   }
 
   protected override handleMissingToken(request: Request, response: Response, _next: NextFunction): boolean {

+ 255 - 1
yarn.lock

@@ -1426,6 +1426,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/service-error-classification@npm:^3.4.1":
+  version: 3.370.0
+  resolution: "@aws-sdk/service-error-classification@npm:3.370.0"
+  checksum: 500f067ba170c8801437cb317078e6cbb3bc523e476cf773b9cdb21af76bc78d2daf37d63aa9ea3af720c24fac3fb387e073dd4865ee02ac356ae0fb9efd39cd
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/shared-ini-file-loader@npm:3.342.0":
   version: 3.342.0
   resolution: "@aws-sdk/shared-ini-file-loader@npm:3.342.0"
@@ -1598,6 +1605,16 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@aws-sdk/types@npm:^3.4.1":
+  version: 3.418.0
+  resolution: "@aws-sdk/types@npm:3.418.0"
+  dependencies:
+    "@smithy/types": "npm:^2.3.3"
+    tslib: "npm:^2.5.0"
+  checksum: 627955c2c92f7dd80ab5ac0fd23b6f5d5ff7a8cbc3dcc6f8b86b702f73b844219c3192990dc7048bbca9b36e2e46cdb48d21a8dc3eaf36861623348c1c1427a1
+  languageName: node
+  linkType: hard
+
 "@aws-sdk/url-parser@npm:3.342.0":
   version: 3.342.0
   resolution: "@aws-sdk/url-parser@npm:3.342.0"
@@ -4385,6 +4402,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@smithy/types@npm:^2.3.3":
+  version: 2.3.4
+  resolution: "@smithy/types@npm:2.3.4"
+  dependencies:
+    tslib: "npm:^2.5.0"
+  checksum: 8a5ad3b47e6318215786bc61787e1ff7a11b002c9d27b4af2d307edbfa522d21097b2a6bd7f83657736f6c646a61e03cd2d1be3c3f8f7353860e976e64323584
+  languageName: node
+  linkType: hard
+
 "@smithy/url-parser@npm:^2.0.5":
   version: 2.0.5
   resolution: "@smithy/url-parser@npm:2.0.5"
@@ -4723,6 +4749,7 @@ __metadata:
     "@types/uuid": "npm:^9.0.3"
     "@typescript-eslint/eslint-plugin": "npm:^6.5.0"
     "@typescript-eslint/parser": "npm:^6.5.0"
+    aws-xray-sdk: "npm:^3.5.2"
     axios: "npm:^1.1.3"
     bcryptjs: "npm:2.4.3"
     cors: "npm:2.8.5"
@@ -5491,6 +5518,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@types/cls-hooked@npm:^4.3.3":
+  version: 4.3.6
+  resolution: "@types/cls-hooked@npm:4.3.6"
+  dependencies:
+    "@types/node": "npm:*"
+  checksum: f5b9864348c132fef6983b6b3aab233599ed3d93849c28e73d7498d664991e5675cf052899bb7a81991f7d9450b6c6c895b7464c4797a31ab3b6f52502f44e8c
+  languageName: node
+  linkType: hard
+
 "@types/concat-stream@npm:^1.6.0":
   version: 1.6.1
   resolution: "@types/concat-stream@npm:1.6.1"
@@ -5716,6 +5752,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@types/mysql@npm:*":
+  version: 2.15.22
+  resolution: "@types/mysql@npm:2.15.22"
+  dependencies:
+    "@types/node": "npm:*"
+  checksum: 6be0aac58fe5c0f20ebf149d2ab228c620f751569a24fda33df457e0520b3c2f071bda06973ad54815ef54b0e0fa2176e56aba96b65b5990054930f4e2b7bb4e
+  languageName: node
+  linkType: hard
+
 "@types/newrelic@npm:^9.14.0":
   version: 9.14.0
   resolution: "@types/newrelic@npm:9.14.0"
@@ -5776,6 +5821,17 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@types/pg@npm:*":
+  version: 8.10.3
+  resolution: "@types/pg@npm:8.10.3"
+  dependencies:
+    "@types/node": "npm:*"
+    pg-protocol: "npm:*"
+    pg-types: "npm:^4.0.1"
+  checksum: 22d4836bd9a272e047e068b2bd9278287137ad191651952474fc13e3dd8e70df6b3fc1211bf1cd353cd7591fb6b9754a0755929e8a2a584a5f76921a91cff488
+  languageName: node
+  linkType: hard
+
 "@types/prettier@npm:^2.1.5":
   version: 2.7.3
   resolution: "@types/prettier@npm:2.7.3"
@@ -6552,6 +6608,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"async-hook-jl@npm:^1.7.6":
+  version: 1.7.6
+  resolution: "async-hook-jl@npm:1.7.6"
+  dependencies:
+    stack-chain: "npm:^1.3.7"
+  checksum: f61a3bd4c34c01dfdf7f571a22b5308b5c4cfc1574879bf57d86384e1944f50d4dc4873dbb31e718801dd1121604b22c316f88e5abd0f44b8ba15c97b4b73388
+  languageName: node
+  linkType: hard
+
 "async@npm:^3.2.3":
   version: 3.2.4
   resolution: "async@npm:3.2.4"
@@ -6566,6 +6631,72 @@ __metadata:
   languageName: node
   linkType: hard
 
+"atomic-batcher@npm:^1.0.2":
+  version: 1.0.2
+  resolution: "atomic-batcher@npm:1.0.2"
+  checksum: 025e334f1f2d0e47cb0703c6c4ae626457fc0d542f55cdf7ccb7dc9068198c743f05a96e0d6d5d2c08a58496acf536fb37751ed84d94aba1b2e76493b160d2b7
+  languageName: node
+  linkType: hard
+
+"aws-xray-sdk-core@npm:3.5.2":
+  version: 3.5.2
+  resolution: "aws-xray-sdk-core@npm:3.5.2"
+  dependencies:
+    "@aws-sdk/service-error-classification": "npm:^3.4.1"
+    "@aws-sdk/types": "npm:^3.4.1"
+    "@types/cls-hooked": "npm:^4.3.3"
+    atomic-batcher: "npm:^1.0.2"
+    cls-hooked: "npm:^4.2.2"
+    semver: "npm:^7.5.3"
+  checksum: a643998187ac38d49b2a79c3633223a261a8a6290e64ba450359c965bd4aed070ae48634f9d4c9a835f0b7cdc2da1498399b891a6c2aa5cbd2a5a8308a83940f
+  languageName: node
+  linkType: hard
+
+"aws-xray-sdk-express@npm:3.5.2":
+  version: 3.5.2
+  resolution: "aws-xray-sdk-express@npm:3.5.2"
+  dependencies:
+    "@types/express": "npm:*"
+  peerDependencies:
+    aws-xray-sdk-core: ^3.5.2
+  checksum: 62a07d0f3ba647d02d597ee749a56669dcd62b16c3eccd2ff661e2cfad3135b4af78fa4cf66fc6a32d636914713f89c399387c64575b9022b6d9e86002e6c61a
+  languageName: node
+  linkType: hard
+
+"aws-xray-sdk-mysql@npm:3.5.2":
+  version: 3.5.2
+  resolution: "aws-xray-sdk-mysql@npm:3.5.2"
+  dependencies:
+    "@types/mysql": "npm:*"
+  peerDependencies:
+    aws-xray-sdk-core: ^3.5.2
+  checksum: f910a96630169fa1591b68aaac591d24d116ea749dc49e66340bb70915d474d45ddeead3c46b49b1fec4516d5a586e10960b5ff1e5553e6fe2d287caff98e03e
+  languageName: node
+  linkType: hard
+
+"aws-xray-sdk-postgres@npm:3.5.2":
+  version: 3.5.2
+  resolution: "aws-xray-sdk-postgres@npm:3.5.2"
+  dependencies:
+    "@types/pg": "npm:*"
+  peerDependencies:
+    aws-xray-sdk-core: ^3.5.2
+  checksum: f2d6da22c74b65ba30d700776924ab7a5037e11f428545ba5b3bbdbacac095e958ceb829db2aa8445f1c718c8e375ab98d1dd9c7a2f5eb486c53b82ea414c768
+  languageName: node
+  linkType: hard
+
+"aws-xray-sdk@npm:^3.5.2":
+  version: 3.5.2
+  resolution: "aws-xray-sdk@npm:3.5.2"
+  dependencies:
+    aws-xray-sdk-core: "npm:3.5.2"
+    aws-xray-sdk-express: "npm:3.5.2"
+    aws-xray-sdk-mysql: "npm:3.5.2"
+    aws-xray-sdk-postgres: "npm:3.5.2"
+  checksum: 576d0d5ccb0f069e8da0afd041a47f1516ab5f8e637fa9595f711da136a49db57aff37b662b3c123234b4934a0c582c8deee677856b3c82884541e12b63df377
+  languageName: node
+  linkType: hard
+
 "axios@npm:0.21.4":
   version: 0.21.4
   resolution: "axios@npm:0.21.4"
@@ -7246,6 +7377,17 @@ __metadata:
   languageName: node
   linkType: hard
 
+"cls-hooked@npm:^4.2.2":
+  version: 4.2.2
+  resolution: "cls-hooked@npm:4.2.2"
+  dependencies:
+    async-hook-jl: "npm:^1.7.6"
+    emitter-listener: "npm:^1.0.1"
+    semver: "npm:^5.4.1"
+  checksum: 59081fcc0f8b7ed929ac8eb0d16bd96946c82b3dd6a89213013e70874e5e7e202c09b07fc0ef0e2dd91b375c3f86d8d57b695e6a3e3bb9e6e25b20f144d712e8
+  languageName: node
+  linkType: hard
+
 "cluster-key-slot@npm:^1.1.0":
   version: 1.1.2
   resolution: "cluster-key-slot@npm:1.1.2"
@@ -7982,6 +8124,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"emitter-listener@npm:^1.0.1":
+  version: 1.1.2
+  resolution: "emitter-listener@npm:1.1.2"
+  dependencies:
+    shimmer: "npm:^1.2.0"
+  checksum: 697f53c30841eb380240b27b385f55596d66ff2d8c479ca3af2ad448cbbeb930d87f7c70105be5467a1424bdd0dfb161173238df413a2c79d8263b9140f917be
+  languageName: node
+  linkType: hard
+
 "emittery@npm:^0.13.1":
   version: 0.13.1
   resolution: "emittery@npm:0.13.1"
@@ -11888,6 +12039,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"obuf@npm:~1.1.2":
+  version: 1.1.2
+  resolution: "obuf@npm:1.1.2"
+  checksum: 53ff4ab3a13cc33ba6c856cf281f2965c0aec9720967af450e8fd06cfd50aceeefc791986a16bcefa14e7898b3ca9acdfcf15b9d9a1b9c7e1366581a8ad6e65e
+  languageName: node
+  linkType: hard
+
 "on-finished@npm:2.4.1":
   version: 2.4.1
   resolution: "on-finished@npm:2.4.1"
@@ -12309,6 +12467,42 @@ __metadata:
   languageName: node
   linkType: hard
 
+"pg-int8@npm:1.0.1":
+  version: 1.0.1
+  resolution: "pg-int8@npm:1.0.1"
+  checksum: a1e3a05a69005ddb73e5f324b6b4e689868a447c5fa280b44cd4d04e6916a344ac289e0b8d2695d66e8e89a7fba023affb9e0e94778770ada5df43f003d664c9
+  languageName: node
+  linkType: hard
+
+"pg-numeric@npm:1.0.2":
+  version: 1.0.2
+  resolution: "pg-numeric@npm:1.0.2"
+  checksum: 8899f8200caa1744439a8778a9eb3ceefb599d893e40a09eef84ee0d4c151319fd416634a6c0fc7b7db4ac268710042da5be700b80ef0de716fe089b8652c84f
+  languageName: node
+  linkType: hard
+
+"pg-protocol@npm:*":
+  version: 1.6.0
+  resolution: "pg-protocol@npm:1.6.0"
+  checksum: 995864cc2a8517368b84697c753caff769a4db292eda66f96d9eec46e3aa84737cd0b0fe171aca9d7d4b4a4c46bb25bd399713cb1027a5bf8f38adea0b4284f4
+  languageName: node
+  linkType: hard
+
+"pg-types@npm:^4.0.1":
+  version: 4.0.1
+  resolution: "pg-types@npm:4.0.1"
+  dependencies:
+    pg-int8: "npm:1.0.1"
+    pg-numeric: "npm:1.0.2"
+    postgres-array: "npm:~3.0.1"
+    postgres-bytea: "npm:~3.0.0"
+    postgres-date: "npm:~2.0.1"
+    postgres-interval: "npm:^3.0.0"
+    postgres-range: "npm:^1.1.1"
+  checksum: 2c686ef361856ff9695a40cf34d7bb59bcf2218bd1f121d7fc8b77a75cc4106c09519e9520a82aac8fce4540dec81f695458b8e43bfc420ba74eb9b5005b5619
+  languageName: node
+  linkType: hard
+
 "picocolors@npm:^1.0.0":
   version: 1.0.0
   resolution: "picocolors@npm:1.0.0"
@@ -12370,6 +12564,43 @@ __metadata:
   languageName: node
   linkType: hard
 
+"postgres-array@npm:~3.0.1":
+  version: 3.0.2
+  resolution: "postgres-array@npm:3.0.2"
+  checksum: 0159517e4e5f263bf9e324f0c4d3c10244a294021f2b5980abc8c23afdb965370a7fc0c82012fce4d28e83186ad089b6476b05fcef6c88f8e43e37a3a2fa0ad5
+  languageName: node
+  linkType: hard
+
+"postgres-bytea@npm:~3.0.0":
+  version: 3.0.0
+  resolution: "postgres-bytea@npm:3.0.0"
+  dependencies:
+    obuf: "npm:~1.1.2"
+  checksum: f5c01758fd2fa807afbd34e1ba2146f683818ebc2d23f4a62f0fd627c0b1126fc543cab1b63925f97ce6c7d8f5f316043218619c447445210ea82f10411efb1b
+  languageName: node
+  linkType: hard
+
+"postgres-date@npm:~2.0.1":
+  version: 2.0.1
+  resolution: "postgres-date@npm:2.0.1"
+  checksum: 908eacec35faf9b6fa4248074e7c8db0fc4ac6a2e0a00eacef9fb9cf44a25fc6f100af7cda09f5d89d076c87923b59e940a309560d86aded4753985c97255be1
+  languageName: node
+  linkType: hard
+
+"postgres-interval@npm:^3.0.0":
+  version: 3.0.0
+  resolution: "postgres-interval@npm:3.0.0"
+  checksum: c7a1cf006de97de663b6b8c4d2b167aa9909a238c4866a94b15d303762f5ac884ff4796cd6e2111b7f0a91302b83c570453aa8506fd005b5a5d5dfa87441bebc
+  languageName: node
+  linkType: hard
+
+"postgres-range@npm:^1.1.1":
+  version: 1.1.3
+  resolution: "postgres-range@npm:1.1.3"
+  checksum: 356a46d97eab301cca0dbf7a65be6f68c4a7e33d304909e5ca840038b1210390e1d33fcc3b566c42020f7b97e9de189bc5286d1ec8d7ba2445ed3377c576ce9e
+  languageName: node
+  linkType: hard
+
 "prelude-ls@npm:^1.2.1":
   version: 1.2.1
   resolution: "prelude-ls@npm:1.2.1"
@@ -13078,6 +13309,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"semver@npm:^5.4.1":
+  version: 5.7.2
+  resolution: "semver@npm:5.7.2"
+  bin:
+    semver: bin/semver
+  checksum: fca14418a174d4b4ef1fecb32c5941e3412d52a4d3d85165924ce3a47fbc7073372c26faf7484ceb4bbc2bde25880c6b97e492473dc7e9708fdfb1c6a02d546e
+  languageName: node
+  linkType: hard
+
 "semver@npm:^6.0.0, semver@npm:^6.3.0":
   version: 6.3.0
   resolution: "semver@npm:6.3.0"
@@ -13087,7 +13327,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"semver@npm:^7.5.2, semver@npm:^7.5.4":
+"semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4":
   version: 7.5.4
   resolution: "semver@npm:7.5.4"
   dependencies:
@@ -13198,6 +13438,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"shimmer@npm:^1.2.0":
+  version: 1.2.1
+  resolution: "shimmer@npm:1.2.1"
+  checksum: aa0d6252ad1c682a4fdfda69e541be987f7a265ac7b00b1208e5e48cc68dc55f293955346ea4c71a169b7324b82c70f8400b3d3d2d60b2a7519f0a3522423250
+  languageName: node
+  linkType: hard
+
 "side-channel@npm:^1.0.4":
   version: 1.0.4
   resolution: "side-channel@npm:1.0.4"
@@ -13482,6 +13729,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"stack-chain@npm:^1.3.7":
+  version: 1.3.7
+  resolution: "stack-chain@npm:1.3.7"
+  checksum: 6420637b7607566763f2452aa058af06ad31773333c4bb55ceb2a71338016fd82f55425bf2ea950bf148576b28d72a235ec46b8f01d117a194a2ec123e577d18
+  languageName: node
+  linkType: hard
+
 "stack-trace@npm:0.0.x":
   version: 0.0.10
   resolution: "stack-trace@npm:0.0.10"