draco_decoder 0.0.26

a draco decoder on rust (wip)
Documentation
import createWorker from './dracoWorker.js?worker&inline';

const worker = createWorker();

let requestId = 0;
const callbacks = new Map();

export function decodeDracoMeshInWorker(view, bufferLength) {
    return new Promise((resolve, reject) => {
        const id = requestId++;
        callbacks.set(id, { resolve, reject });

        worker.postMessage({ id, view, bufferLength, withConfig: false }, [view.buffer]);
    });
}

export function decodeDracoMeshInWorkerWithConfig(view) {
    return new Promise((resolve, reject) => {
        const id = requestId++;
        callbacks.set(id, { resolve, reject });

        worker.postMessage({ id, view, withConfig: true }, [view.buffer]);
    });
}

worker.onmessage = (e) => {
    const { id, success, decoded, error, config } = e.data;
    const cb = callbacks.get(id);
    if (!cb) return;

    if (success) {
        if (config) {
            cb.resolve({ decoded, config });
        } else {
            cb.resolve(decoded);
        }
    } else {
        cb.reject(error);
    }

    callbacks.delete(id);
};