Explorar el Código

Merge pull request #15331 from overleaf/csh-issue-11625-mongo-ug-5-contacts

Upgrade mongodb module for contacts from 4.12.1 to 6.1.0

GitOrigin-RevId: 22c4544b21363d82dcf3215c660e4412bb179fe8
Christopher Hoskin hace 3 años
padre
commit
6a118d9439

+ 77 - 64
package-lock.json

@@ -37729,7 +37729,7 @@
         "body-parser": "^1.19.0",
         "bunyan": "^1.8.15",
         "express": "^4.18.2",
-        "mongodb": "^4.12.1",
+        "mongodb": "^6.1.0",
         "request": "~2.88.2",
         "underscore": "~1.13.1"
       },
@@ -37743,37 +37743,11 @@
       }
     },
     "services/contacts/node_modules/bson": {
-      "version": "4.7.2",
-      "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
-      "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
-      "dependencies": {
-        "buffer": "^5.6.0"
-      },
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz",
+      "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==",
       "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "services/contacts/node_modules/buffer": {
-      "version": "5.7.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "dependencies": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.1.13"
+        "node": ">=16.20.1"
       }
     },
     "services/contacts/node_modules/diff": {
@@ -37785,21 +37759,63 @@
         "node": ">=0.3.1"
       }
     },
+    "services/contacts/node_modules/gcp-metadata": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
+      "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
+      "optional": true,
+      "peer": true,
+      "dependencies": {
+        "gaxios": "^5.0.0",
+        "json-bigint": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "services/contacts/node_modules/mongodb": {
-      "version": "4.17.1",
-      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.1.tgz",
-      "integrity": "sha512-MBuyYiPUPRTqfH2dV0ya4dcr2E5N52ocBuZ8Sgg/M030nGF78v855B3Z27mZJnp8PxjnUquEnAtjOsphgMZOlQ==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.1.0.tgz",
+      "integrity": "sha512-AvzNY0zMkpothZ5mJAaIo2bGDjlJQqqAbn9fvtVgwIIUPEfdrqGxqNjjbuKyrgQxg2EvCmfWdjq+4uj96c0YPw==",
       "dependencies": {
-        "bson": "^4.7.2",
-        "mongodb-connection-string-url": "^2.6.0",
-        "socks": "^2.7.1"
+        "@mongodb-js/saslprep": "^1.1.0",
+        "bson": "^6.1.0",
+        "mongodb-connection-string-url": "^2.6.0"
       },
       "engines": {
-        "node": ">=12.9.0"
+        "node": ">=16.20.1"
       },
-      "optionalDependencies": {
-        "@aws-sdk/credential-providers": "^3.186.0",
-        "@mongodb-js/saslprep": "^1.1.0"
+      "peerDependencies": {
+        "@aws-sdk/credential-providers": "^3.188.0",
+        "@mongodb-js/zstd": "^1.1.0",
+        "gcp-metadata": "^5.2.0",
+        "kerberos": "^2.0.1",
+        "mongodb-client-encryption": ">=6.0.0 <7",
+        "snappy": "^7.2.2",
+        "socks": "^2.7.1"
+      },
+      "peerDependenciesMeta": {
+        "@aws-sdk/credential-providers": {
+          "optional": true
+        },
+        "@mongodb-js/zstd": {
+          "optional": true
+        },
+        "gcp-metadata": {
+          "optional": true
+        },
+        "kerberos": {
+          "optional": true
+        },
+        "mongodb-client-encryption": {
+          "optional": true
+        },
+        "snappy": {
+          "optional": true
+        },
+        "socks": {
+          "optional": true
+        }
       }
     },
     "services/contacts/node_modules/sinon": {
@@ -46188,7 +46204,7 @@
         "esmock": "^2.1.0",
         "express": "^4.18.2",
         "mocha": "^10.2.0",
-        "mongodb": "^4.12.1",
+        "mongodb": "^6.1.0",
         "request": "~2.88.2",
         "sinon": "~9.0.1",
         "sinon-chai": "^3.7.0",
@@ -46196,21 +46212,9 @@
       },
       "dependencies": {
         "bson": {
-          "version": "4.7.2",
-          "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
-          "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
-          "requires": {
-            "buffer": "^5.6.0"
-          }
-        },
-        "buffer": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-          "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-          "requires": {
-            "base64-js": "^1.3.1",
-            "ieee754": "^1.1.13"
-          }
+          "version": "6.2.0",
+          "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz",
+          "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q=="
         },
         "diff": {
           "version": "4.0.2",
@@ -46218,16 +46222,25 @@
           "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
           "dev": true
         },
+        "gcp-metadata": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
+          "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
+          "optional": true,
+          "peer": true,
+          "requires": {
+            "gaxios": "^5.0.0",
+            "json-bigint": "^1.0.0"
+          }
+        },
         "mongodb": {
-          "version": "4.17.1",
-          "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.1.tgz",
-          "integrity": "sha512-MBuyYiPUPRTqfH2dV0ya4dcr2E5N52ocBuZ8Sgg/M030nGF78v855B3Z27mZJnp8PxjnUquEnAtjOsphgMZOlQ==",
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.1.0.tgz",
+          "integrity": "sha512-AvzNY0zMkpothZ5mJAaIo2bGDjlJQqqAbn9fvtVgwIIUPEfdrqGxqNjjbuKyrgQxg2EvCmfWdjq+4uj96c0YPw==",
           "requires": {
-            "@aws-sdk/credential-providers": "^3.186.0",
             "@mongodb-js/saslprep": "^1.1.0",
-            "bson": "^4.7.2",
-            "mongodb-connection-string-url": "^2.6.0",
-            "socks": "^2.7.1"
+            "bson": "^6.1.0",
+            "mongodb-connection-string-url": "^2.6.0"
           }
         },
         "sinon": {

+ 2 - 2
services/contacts/app/js/ContactManager.js

@@ -2,7 +2,7 @@ import { db, ObjectId } from './mongodb.js'
 
 export async function touchContact(userId, contactId) {
   await db.contacts.updateOne(
-    { user_id: ObjectId(userId.toString()) },
+    { user_id: new ObjectId(userId.toString()) },
     {
       $inc: {
         [`contacts.${contactId}.n`]: 1,
@@ -17,7 +17,7 @@ export async function touchContact(userId, contactId) {
 
 export async function getContacts(userId) {
   const user = await db.contacts.findOne({
-    user_id: ObjectId(userId.toString()),
+    user_id: new ObjectId(userId.toString()),
   })
 
   return user?.contacts

+ 1 - 1
services/contacts/package.json

@@ -24,7 +24,7 @@
     "body-parser": "^1.19.0",
     "bunyan": "^1.8.15",
     "express": "^4.18.2",
-    "mongodb": "^4.12.1",
+    "mongodb": "^6.1.0",
     "request": "~2.88.2",
     "underscore": "~1.13.1"
   },

+ 5 - 5
services/contacts/test/acceptance/js/GettingContactsTests.js

@@ -22,7 +22,7 @@ describe('Getting Contacts', function () {
 
   describe('with no contacts', function () {
     beforeEach(function () {
-      this.user_id = ObjectId().toString()
+      this.user_id = new ObjectId().toString()
     })
 
     it('should return an empty array', function (done) {
@@ -46,10 +46,10 @@ describe('Getting Contacts', function () {
 
   describe('with contacts', function () {
     beforeEach(function (done) {
-      this.user_id = ObjectId().toString()
-      this.contact_id_1 = ObjectId().toString()
-      this.contact_id_2 = ObjectId().toString()
-      this.contact_id_3 = ObjectId().toString()
+      this.user_id = new ObjectId().toString()
+      this.contact_id_1 = new ObjectId().toString()
+      this.contact_id_2 = new ObjectId().toString()
+      this.contact_id_3 = new ObjectId().toString()
 
       const touchContact = (userId, contactId, cb) =>
         request(

+ 3 - 3
services/contacts/test/unit/js/ContactsManagerTests.js

@@ -16,8 +16,8 @@ describe('ContactManager', function () {
       },
     })
 
-    this.user_id = ObjectId().toString()
-    this.contact_id = ObjectId().toString()
+    this.user_id = new ObjectId().toString()
+    this.contact_id = new ObjectId().toString()
   })
 
   afterEach(function () {
@@ -62,7 +62,7 @@ describe('ContactManager', function () {
             this.contact_id
           )
         ).to.be.rejectedWith(
-          'Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer'
+          'input must be a 24 character hex string, 12 byte Uint8Array, or an integer'
         )
       })
     })