From d1d83c19da7dc2291dd65c0fca1a80de5d725a75 Mon Sep 17 00:00:00 2001 From: Alexander Drozdov Date: Tue, 14 Nov 2023 14:28:16 +0200 Subject: [PATCH] build artif --- .github/workflows/ci.yml | 6 +-- CMakeLists.txt | 1 + index.js | 92 +++++++++++++++++----------------------- package.json | 3 +- 4 files changed, 44 insertions(+), 58 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 252c68a..705a76d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,12 +9,12 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: mymindstorm/setup-emsdk@v10 + - uses: actions/checkout@v4 + - uses: mymindstorm/setup-emsdk@v12 - run: emcmake cmake -B build -DCMAKE_BUILD_TYPE=Release - run: cmake --build build - run: npm pack - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: package path: ooz-wasm-*.tgz diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e2e726..335d94c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ target_link_options(ooz PRIVATE "SHELL:-s WASM=1" "SHELL:-s FILESYSTEM=0" "SHELL:-s MODULARIZE=1" + "SHELL:-s EXPORT_ES6=1" "SHELL:-s STRICT=1" "SHELL:-s SINGLE_FILE=1" "SHELL:-s ALLOW_MEMORY_GROWTH=1" diff --git a/index.js b/index.js index 58b204c..ae080dc 100644 --- a/index.js +++ b/index.js @@ -1,72 +1,56 @@ -'use strict' +import oozFactory from './build/ooz.js'; -var oozModule = require('./build/ooz.js'); +const OOZ_SAFE_SPACE = 64; -var OOZ_SAFE_SPACE = 64; - -var module_ = null; -var lastDecompressionPtr_ = 0; - -function load () { - if (!module_) { - module_ = oozModule(); - } - return module_; -} +const oozInst = await oozFactory(); +let lastDecompressionPtr_ = 0; /** - * @param {Uint8Array} data - * @param {number} rawSize - * @returns {Promise} + * @param {Uint8Array} data + * @param {number} rawSize + * @returns {Uint8Array} */ -function decompressUnsafe (data, rawSize) { - return load().then(module => { - if (lastDecompressionPtr_) { - module._free(lastDecompressionPtr_); - lastDecompressionPtr_ = 0; - } +export function decompressUnsafe (data, rawSize) { + if (lastDecompressionPtr_) { + oozInst._free(lastDecompressionPtr_); + lastDecompressionPtr_ = 0; + } - var compressedPtr = module._malloc(data.byteLength); - module.HEAPU8.set(data, compressedPtr); + const compressedPtr = oozInst._malloc(data.byteLength); + oozInst.HEAPU8.set(data, compressedPtr); - var decompressedPtr = module._malloc(rawSize + OOZ_SAFE_SPACE); - lastDecompressionPtr_ = decompressedPtr; + const decompressedPtr = oozInst._malloc(rawSize + OOZ_SAFE_SPACE); + lastDecompressionPtr_ = decompressedPtr; - var res = module._Kraken_Decompress( - compressedPtr, data.byteLength, - decompressedPtr, rawSize - ); + const res = oozInst._Kraken_Decompress( + compressedPtr, data.byteLength, + decompressedPtr, rawSize + ); - module._free(compressedPtr); + oozInst._free(compressedPtr); - if (res < 0) { - throw new Error('Failed to decode'); - } - if (res !== rawSize) { - throw new Error('Decompresed size is different from expected'); - } + if (res < 0) { + throw new Error('Failed to decode'); + } + if (res !== rawSize) { + throw new Error('Decompresed size is different from expected'); + } - return module.HEAPU8.subarray(decompressedPtr, decompressedPtr + rawSize); - }) + return oozInst.HEAPU8.subarray(decompressedPtr, decompressedPtr + rawSize); } /** - * @param {Uint8Array} data - * @param {number} rawSize - * @returns {Promise} + * @param {Uint8Array} data + * @param {number} rawSize + * @returns {Uint8Array} */ -function decompress (data, rawSize) { - return decompressUnsafe(data, rawSize).then(decompressed => { - const decompressedCopy = new Uint8Array(decompressed.byteLength); - decompressedCopy.set(decompressed); +export function decompress (data, rawSize) { + const decompressed = decompressUnsafe(data, rawSize); + const decompressedCopy = new Uint8Array(decompressed.byteLength); + decompressedCopy.set(decompressed); - module._free(lastDecompressionPtr_); - lastDecompressionPtr_ = 0; + oozInst._free(lastDecompressionPtr_); + lastDecompressionPtr_ = 0; - return decompressedCopy; - }); + return decompressedCopy; } - -exports.load = load; -exports.decompressUnsafe = decompressUnsafe; -exports.decompress = decompress; diff --git a/package.json b/package.json index 4c85297..d6faf2c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "ooz-wasm", - "version": "1.0.1", + "version": "2.0.0", + "type": "module", "author": { "name": "Alexander Drozdov" },