Browse Source

@uppy/core: move more internals to private properties (#3041)

Antoine du Hamel 3 years ago
parent
commit
4ac8c9d39c
2 changed files with 28 additions and 68 deletions
  1. 16 23
      packages/@uppy/core/src/index.js
  2. 12 45
      packages/@uppy/core/src/index.test.js

+ 16 - 23
packages/@uppy/core/src/index.js

@@ -41,6 +41,12 @@ class Uppy {
 
   #translator
 
+  #preProcessors = new Set()
+
+  #uploaders = new Set()
+
+  #postProcessors = new Set()
+
   /**
    * Instantiate Uppy
    *
@@ -157,10 +163,6 @@ class Uppy {
     //    [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.
     this.calculateProgress = throttle(this.calculateProgress.bind(this), 500, { leading: true, trailing: true })
 
-    this.preProcessors = []
-    this.uploaders = []
-    this.postProcessors = []
-
     this.store = this.opts.store
     this.setState({
       plugins: {},
@@ -322,36 +324,27 @@ class Uppy {
   }
 
   addPreProcessor (fn) {
-    this.preProcessors.push(fn)
+    this.#preProcessors.add(fn)
   }
 
   removePreProcessor (fn) {
-    const i = this.preProcessors.indexOf(fn)
-    if (i !== -1) {
-      this.preProcessors.splice(i, 1)
-    }
+    return this.#preProcessors.delete(fn)
   }
 
   addPostProcessor (fn) {
-    this.postProcessors.push(fn)
+    this.#postProcessors.add(fn)
   }
 
   removePostProcessor (fn) {
-    const i = this.postProcessors.indexOf(fn)
-    if (i !== -1) {
-      this.postProcessors.splice(i, 1)
-    }
+    return this.#postProcessors.delete(fn)
   }
 
   addUploader (fn) {
-    this.uploaders.push(fn)
+    this.#uploaders.add(fn)
   }
 
   removeUploader (fn) {
-    const i = this.uploaders.indexOf(fn)
-    if (i !== -1) {
-      this.uploaders.splice(i, 1)
-    }
+    return this.#uploaders.delete(fn)
   }
 
   setMeta (data) {
@@ -1160,7 +1153,7 @@ class Uppy {
       this.setFileState(file.id, {
         progress: {
           ...currentProgress,
-          postprocess: this.postProcessors.length > 0 ? {
+          postprocess: this.#postProcessors.size > 0 ? {
             mode: 'indeterminate',
           } : null,
           uploadComplete: true,
@@ -1545,9 +1538,9 @@ class Uppy {
     const restoreStep = uploadData.step
 
     const steps = [
-      ...this.preProcessors,
-      ...this.uploaders,
-      ...this.postProcessors,
+      ...this.#preProcessors,
+      ...this.#uploaders,
+      ...this.#postProcessors,
     ]
     let lastStep = Promise.resolve()
     steps.forEach((fn, step) => {

+ 12 - 45
packages/@uppy/core/src/index.test.js

@@ -327,24 +327,13 @@ describe('src/Core', () => {
   })
 
   describe('preprocessors', () => {
-    it('should add a preprocessor', () => {
+    it('should add and remove preprocessor', () => {
       const core = new Core()
       const preprocessor = () => { }
+      expect(core.removePreProcessor(preprocessor)).toBe(false)
       core.addPreProcessor(preprocessor)
-      expect(core.preProcessors[0]).toEqual(preprocessor)
-    })
-
-    it('should remove a preprocessor', () => {
-      const core = new Core()
-      const preprocessor1 = () => { }
-      const preprocessor2 = () => { }
-      const preprocessor3 = () => { }
-      core.addPreProcessor(preprocessor1)
-      core.addPreProcessor(preprocessor2)
-      core.addPreProcessor(preprocessor3)
-      expect(core.preProcessors.length).toEqual(3)
-      core.removePreProcessor(preprocessor2)
-      expect(core.preProcessors.length).toEqual(2)
+      expect(core.removePreProcessor(preprocessor)).toBe(true)
+      expect(core.removePreProcessor(preprocessor)).toBe(false)
     })
 
     it('should execute all the preprocessors when uploading a file', () => {
@@ -456,24 +445,13 @@ describe('src/Core', () => {
   })
 
   describe('postprocessors', () => {
-    it('should add a postprocessor', () => {
+    it('should add and remove postprocessor', () => {
       const core = new Core()
       const postprocessor = () => { }
+      expect(core.removePostProcessor(postprocessor)).toBe(false)
       core.addPostProcessor(postprocessor)
-      expect(core.postProcessors[0]).toEqual(postprocessor)
-    })
-
-    it('should remove a postprocessor', () => {
-      const core = new Core()
-      const postprocessor1 = () => { }
-      const postprocessor2 = () => { }
-      const postprocessor3 = () => { }
-      core.addPostProcessor(postprocessor1)
-      core.addPostProcessor(postprocessor2)
-      core.addPostProcessor(postprocessor3)
-      expect(core.postProcessors.length).toEqual(3)
-      core.removePostProcessor(postprocessor2)
-      expect(core.postProcessors.length).toEqual(2)
+      expect(core.removePostProcessor(postprocessor)).toBe(true)
+      expect(core.removePostProcessor(postprocessor)).toBe(false)
     })
 
     it('should execute all the postprocessors when uploading a file', () => {
@@ -586,24 +564,13 @@ describe('src/Core', () => {
   })
 
   describe('uploaders', () => {
-    it('should add an uploader', () => {
+    it('should add and remove uploader', () => {
       const core = new Core()
       const uploader = () => { }
+      expect(core.removeUploader(uploader)).toBe(false)
       core.addUploader(uploader)
-      expect(core.uploaders[0]).toEqual(uploader)
-    })
-
-    it('should remove an uploader', () => {
-      const core = new Core()
-      const uploader1 = () => { }
-      const uploader2 = () => { }
-      const uploader3 = () => { }
-      core.addUploader(uploader1)
-      core.addUploader(uploader2)
-      core.addUploader(uploader3)
-      expect(core.uploaders.length).toEqual(3)
-      core.removeUploader(uploader2)
-      expect(core.uploaders.length).toEqual(2)
+      expect(core.removeUploader(uploader)).toBe(true)
+      expect(core.removeUploader(uploader)).toBe(false)
     })
   })