| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- Copyright (c) 2025 Gildas Lormeau. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the distribution.
-
- 3. The names of the authors may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
- INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
- import { FUNCTION_TYPE } from "./core/constants.js";
- import { configure } from "./core/configuration.js";
- import { configureZlibModule } from "./core/zlib-streams-inline.js";
- import { configureWorker } from "./core/codec-worker.js";
- import { terminateWorkers } from "./core/codec-pool.js";
- import { initModule, resetWasmModule, CompressionStreamZlib, DecompressionStreamZlib } from "./core/streams/zlib-wasm/zlib-streams-loader.js";
-
- let modulePromise;
-
- configureZlibModule(configure);
- configureWorker({
- initModule: config => {
- if (!modulePromise) {
- let { wasmURI } = config;
- // deno-lint-ignore valid-typeof
- if (typeof wasmURI == FUNCTION_TYPE) {
- wasmURI = wasmURI();
- }
- modulePromise = initModule(wasmURI, config);
-
- }
- return modulePromise;
- }
- });
- configure({
- CompressionStreamZlib,
- DecompressionStreamZlib
- });
-
- export { terminateWorkersAndModule as terminateWorkers };
-
- function terminateWorkersAndModule() {
- modulePromise = null;
- terminateWorkers();
- resetWasmModule();
- }
|