jsonpath_lib 0.2.3

It is JsonPath engine written in Rust. it provide a similar API interface in Webassembly and Javascript too. - Webassembly Demo: https://freestrings.github.io/jsonpath
Documentation
#!/bin/bash

set -e

# project_root
DIR="$(pwd)"
WASM="${DIR}"/wasm
WASM_WWW="${WASM}"/www
WASM_WWW_BENCH="${WASM}"/www_bench
WASM_BROWSER_PKG="${WASM}"/browser_pkg
WASM_NODEJS_PKG="${WASM}"/nodejs_pkg
WASM_ALL_PKG="${WASM}"/all_pkg
WASM_TEST="${WASM}"/tests
DOCS="${DIR}"/docs
DOCS_BENCH="${DOCS}"/bench

__msg () {
    echo ">>>>>>>>>>$1<<<<<<<<<<"
}

__cargo_clean () {
    cd "${WASM}" && cargo clean && \
    cd "${DIR}" && cargo clean
}

echo
__msg "clean wasm"
rm -rf \
    "${WASM_NODEJS_PKG}" \
    "${WASM_BROWSER_PKG}" \
    "${WASM_ALL_PKG}" \
    "${WASM_WWW}"/node_modules \
    "${WASM_WWW_BENCH}"/node_modules \
    "${WASM_WWW}"/dist \
    "${WASM_WWW_BENCH}"/dist \
    "${WASM_TEST}"/node_modules

if [ "$1" = "all" ]; then
    __msg "clean all wasm"
    __cargo_clean
fi

__msg "npm install: wasm"
cd "${WASM_WWW}" && npm install
__msg "npm install: wasm_bench"
cd "${WASM_WWW_BENCH}" && npm install
__msg "npm install: wasm test"
cd "${WASM_TEST}" && npm install

echo
echo
__msg "wasm-pack"
cd "${WASM}" && \
    wasm-pack build --release --target=nodejs --out-dir "${WASM_NODEJS_PKG}"

cd "${WASM}" && \
    wasm-pack build --release --target=browser --out-dir "${WASM_BROWSER_PKG}"
#    && \
#    wasm-pack test --chrome --firefox --headless

__msg "wasm npm packaging"
cp -r "${WASM_BROWSER_PKG}" "${WASM_ALL_PKG}/" && \
    sed "s/require[\(]'\.\/jsonpath_wasm_bg/require\('\.\/jsonpath_wasm_nodejs/" "${WASM_NODEJS_PKG}/jsonpath_wasm.js" \
        > "${WASM_ALL_PKG}/jsonpath_wasm_main.js" && \
    sed "s/require[\(]'\.\/jsonpath_wasm/require\('\.\/jsonpath_wasm_main/" "${WASM_NODEJS_PKG}/jsonpath_wasm_bg.js" \
        > "${WASM_ALL_PKG}/jsonpath_wasm_nodejs.js" && \
    jq ".files += [\"jsonpath_wasm_nodejs.js\"]" ${WASM_ALL_PKG}/package.json \
        | jq ".main = \"jsonpath_wasm_main.js\"" \
        | jq ".keywords += [\"jsonpath\", \"json\", \"webassembly\", \"parsing\", \"rust\"]" \
        > ${WASM_ALL_PKG}/temp.json && \
    mv -v "${WASM_ALL_PKG}/temp.json" "${WASM_ALL_PKG}/package.json" && \
    cd "${WASM_ALL_PKG}" && npm link

echo
__msg "link"
cd "${WASM_WWW}" && \
    npm link jsonpath-wasm

cd "${WASM_WWW_BENCH}" && \
    npm link jsonpath-wasm

cd "${WASM_TEST}" && \
    npm link jsonpath-wasm

echo
echo
__msg "wasm test"
cd "${WASM_TEST}" && npm test

if [ "$1" = "all" ] || [ "$1" = "docs" ]; then
    echo
    __msg "docs"
    cd "${WASM_WWW}" && \
        npm run build &&
        rm -f "${DOCS}"/*.js "${DOCS}"/*.wasm "${DOCS}"/*.html && \
        cp "${WASM_WWW}"/dist/*.* "${DOCS}"/

    cd "${WASM_WWW_BENCH}" && \
        npm run build &&
        rm -f "${DOCS_BENCH}"/*.js "${DOCS_BENCH}"/*.wasm "${DOCS_BENCH}"/*.html && \
        cp "${WASM_WWW_BENCH}"/dist/*.* "${DOCS_BENCH}"/
fi

__msg "wasm done"