set -e
set -o pipefail
if ! [ -x "$(command -v jq)" ]; then
echo "jq is not installed" >& 2
exit 1
fi
source "${HOME}/.nvm/nvm.sh"
nvm use
source "${HOME}/.cargo/env"
TARGET_DIR="target/npm"
BROWSER_PKG_DIR="${TARGET_DIR}/pkg-browser"
NODE_PKG_DIR="${TARGET_DIR}/pkg-node"
PKG_DIR="${TARGET_DIR}/pkg"
if [ -d "${TARGET_DIR}" ]; then
rm -rf "${TARGET_DIR}"
fi
mkdir -p "${TARGET_DIR}"
echo "Packing NodeJS NPM package..."
wasm-pack build --target nodejs --out-dir "${NODE_PKG_DIR}"
echo "Packing browser NPM package..."
wasm-pack build --target browser --out-dir "${BROWSER_PKG_DIR}"
echo "Building isomorphic NPM package..."
cp -r "${BROWSER_PKG_DIR}" "${PKG_DIR}/"
PKG_NAME=$(jq -r .name "${PKG_DIR}/package.json" | sed 's/\-/_/g')
cp -v "${NODE_PKG_DIR}/${PKG_NAME}.js" "${PKG_DIR}/${PKG_NAME}_main.js"
sed "s/require[\(]'\.\/${PKG_NAME}/require\('\.\/${PKG_NAME}_main/" "${NODE_PKG_DIR}/${PKG_NAME}_bg.js" \
> "${PKG_DIR}/${PKG_NAME}_bg.js"
jq ".files += [\"${PKG_NAME}_bg.js\"]" ${PKG_DIR}/package.json \
| jq ".main = \"${PKG_NAME}_main.js\"" \
> ${PKG_DIR}/temp.json
mv -v "${PKG_DIR}/temp.json" "${PKG_DIR}/package.json"
rm -rf "${NODE_PKG_DIR}"
rm -rf "${BROWSER_PKG_DIR}"