[api-minor] Validate the workerPort/workerSrc options
				
					
				
			Ensure that users cannot provide incorrect values when trying to set the global worker-options. This patch was prompted by occasionally seeing users manually loading the `pdf.worker.mjs`-file and then assigning it to the `workerSrc`-option, something that obviously doesn't make sense and will cause fake-workers to be used (with poor performance as a result).
This commit is contained in:
		
							parent
							
								
									0d011472a4
								
							
						
					
					
						commit
						f0af52032b
					
				@ -13,21 +13,52 @@
 | 
				
			|||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					class GlobalWorkerOptions {
 | 
				
			||||||
 * @typedef {Object} GlobalWorkerOptionsType
 | 
					  static #port = null;
 | 
				
			||||||
 * @property {Worker | null} workerPort - Defines global port for worker
 | 
					 | 
				
			||||||
 *   process. Overrides the `workerSrc` option.
 | 
					 | 
				
			||||||
 * @property {string} workerSrc - A string containing the path and filename
 | 
					 | 
				
			||||||
 *   of the worker file.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 *   NOTE: The `workerSrc` option should always be set, in order to prevent any
 | 
					 | 
				
			||||||
 *         issues when using the PDF.js library.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** @type {GlobalWorkerOptionsType} */
 | 
					  static #src = "";
 | 
				
			||||||
const GlobalWorkerOptions = Object.create(null);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
GlobalWorkerOptions.workerPort = null;
 | 
					  /**
 | 
				
			||||||
GlobalWorkerOptions.workerSrc = "";
 | 
					   * @type {Worker | null}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static get workerPort() {
 | 
				
			||||||
 | 
					    return this.#port;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @param {Worker | null} workerPort - Defines global port for worker process.
 | 
				
			||||||
 | 
					   *   Overrides the `workerSrc` option.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static set workerPort(val) {
 | 
				
			||||||
 | 
					    if (
 | 
				
			||||||
 | 
					      !(typeof Worker !== "undefined" && val instanceof Worker) &&
 | 
				
			||||||
 | 
					      val !== null
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					      throw new Error("Invalid `workerPort` type.");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.#port = val;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @type {string}
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static get workerSrc() {
 | 
				
			||||||
 | 
					    return this.#src;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * @param {string} workerSrc - A string containing the path and filename of
 | 
				
			||||||
 | 
					   *   the worker file.
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   *   NOTE: The `workerSrc` option should always be set, in order to prevent
 | 
				
			||||||
 | 
					   *         any issues when using the PDF.js library.
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  static set workerSrc(val) {
 | 
				
			||||||
 | 
					    if (typeof val !== "string") {
 | 
				
			||||||
 | 
					      throw new Error("Invalid `workerSrc` type.");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.#src = val;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { GlobalWorkerOptions };
 | 
					export { GlobalWorkerOptions };
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user