import assert from 'assert'; import {Packager} from '@atlaspack/plugin'; // @ts-expect-error TS7016 import * as wasmmap from './wasm-sourcemap'; export default new Packager({ async package({bundle, getSourceMapReference}) { // @ts-expect-error TS2552 let assets: Array = []; bundle.traverseAssets((asset) => { assets.push(asset); }); assert.equal(assets.length, 1, 'Wasm bundles must only contain one asset'); let [contents, map] = await Promise.all([ assets[0].getBuffer(), assets[0].getMap(), ]); let sourcemapReference = await getSourceMapReference(map); if (sourcemapReference != null) { return { contents: Buffer.from( wasmmap.SetSourceMapURL( contents, sourcemapReference, sourcemapReference.includes('HASH_REF_') ? // HASH_REF_\w{16} -> \w{8} sourcemapReference.length - (9 + 16 - 8) : undefined, ), ), map, }; } else { return {contents, map}; } }, }) as Packager;