Преглед изворни кода

[object-persistor] lazy load all the persistor implementations (#31431)

GitOrigin-RevId: ca8a5a7d6402810b01351c89318cb2c5ed0b7385
Jakob Ackermann пре 6 месеци
родитељ
комит
a1a248cf9b
1 измењених фајлова са 15 додато и 11 уклоњено
  1. 15 11
      libraries/object-persistor/src/PersistorFactory.js

+ 15 - 11
libraries/object-persistor/src/PersistorFactory.js

@@ -1,27 +1,30 @@
 const Logger = require('@overleaf/logger')
 const { SettingsError } = require('./Errors')
-const GcsPersistor = require('./GcsPersistor')
-const { S3Persistor } = require('./S3Persistor')
-const FSPersistor = require('./FSPersistor')
-const MigrationPersistor = require('./MigrationPersistor')
-const {
-  PerProjectEncryptedS3Persistor,
-} = require('./PerProjectEncryptedS3Persistor')
 
 function getPersistor(backend, settings) {
   switch (backend) {
     case 'aws-sdk':
-    case 's3':
+    case 's3': {
+      const { S3Persistor } = require('./S3Persistor')
       return new S3Persistor(settings.s3)
-    case 's3SSEC':
+    }
+    case 's3SSEC': {
+      const {
+        PerProjectEncryptedS3Persistor,
+      } = require('./PerProjectEncryptedS3Persistor')
       return new PerProjectEncryptedS3Persistor(settings.s3SSEC)
-    case 'fs':
+    }
+    case 'fs': {
+      const FSPersistor = require('./FSPersistor')
       return new FSPersistor({
         useSubdirectories: settings.useSubdirectories,
         paths: settings.paths,
       })
-    case 'gcs':
+    }
+    case 'gcs': {
+      const GcsPersistor = require('./GcsPersistor')
       return new GcsPersistor(settings.gcs)
+    }
     default:
       throw new SettingsError('unknown backend', { backend })
   }
@@ -44,6 +47,7 @@ module.exports = function create(settings) {
   if (settings.fallback && settings.fallback.backend) {
     const primary = persistor
     const fallback = getPersistor(settings.fallback.backend, settings)
+    const MigrationPersistor = require('./MigrationPersistor')
     persistor = new MigrationPersistor(primary, fallback, settings.fallback)
   }