# shellcheck shell=dash

___x_cmd_npm___nv(){
    if ___x_cmd_is_stdout2tty && ___x_cmd_runmode_allow_manual; then
        ___x_cmd_npm___nv_app
    else
        ___x_cmd_npm___nv_list
    fi
}

___x_cmd_npm___nv_list(){
    local fp="$___X_CMD_PKG_ROOT_PATH/metadata/$___X_CMD_PKG_VERSION/npm/data.list"
    [ -f "$fp" ] || ___x_cmd pkg update
    ___x_cmd_cmds_cat "$fp"
}

___x_cmd_npm___nv_app(){
    local x_
    ___X_CMD_PICK_SHBIN_CODE="xrc npm;" \
    ___x_cmd storeread_ ___x_cmd pick --width 30 --col 6 ___x_cmd_npm___nv_list # || return
    local pkg="$x_"

    [ -n "$pkg" ] || N=npm M="ABORT because no pkg was selected" log:ret:1

    local cmd
    ___x_cmd ui select ,cmd  "Next for   $pkg"           \
        "x npm info                 $pkg"           \
        "x npm install --save       $pkg"           \
        "x npm install --save-dev   $pkg"           \
        "x npm install              $pkg"           \
        "x npm install -g           $pkg"           \
        "x npm search               $pkg"           \
        "x open https://www.npmjs.com/package/$pkg" \
        "return 1" || return 1

    eval "$cmd"
}

# ___x_cmd npm search --json chalk | ___x_cmd jo .1 | ___x_cmd json2yml

___x_cmd_npm___info(){
    ___x_cmd npm search --json "$1" | ___x_cmd jo .1 | ___x_cmd j2y
}
