nodejs-perlnavigator-server
perlnavigator
scanned 2026-10-23 00:02:19.781852
The npx command is used to run 'tsc' (TypeScript compiler) during the build process, which is a standard development tool and not an execution of untrusted remote code; the source is from a legitimate GitHub repository and the build is reproducible.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The npx command is used to run 'tsc' (TypeScript compiler) during the build process, which is a standard development tool and not an execution of untrusted remote code; the source is from a legitimate GitHub repository and the build is reproducible.
1 higher static finding superseded - not the current verdict (shown for transparency)
remote_code_tool
`npx`/`bunx`/`pnpm dlx`/`deno run <url>` downloads AND runs a remote package at build time — the moral equivalent of piping a download into a shell. Severity downgraded: Node.js consumer context.
-
PKGBUILD:63
npx tsc
PKGBUILD
1 offending line(s) highlighted# Maintainer: Beini <bane at iki dot fi>
pkgname=('perlnavigator'
'nodejs-perl-navigator-web-server'
'nodejs-perlnavigator-client'
'nodejs-perlnavigator-server'
)
pkgbase=perlnavigator
_pkgname=PerlNavigator
pkgver=0.8.20
pkgrel=2
pkgdesc="Perl language server that includes syntax checking, perl critic, and code navigation"
arch=('any')
url="https://github.com/bscan/PerlNavigator"
license=('MIT')
makedepends=('npm' 'jq')
source=(
"${pkgbase}-${pkgver}.tar.gz::https://github.com/bscan/${_pkgname}/archive/refs/tags/v${pkgver}.tar.gz")
b2sums=('3ae6507d51f68816d6503cfcfde068fe5c5b9e787c93e6856acaa271cbd5fe21eb083aca748c62035eafb3871a458721bfb0b2b913ed72b3e44dab7d8ea7e140')
_package_node_subdir(){
local subdir=$1
cd "${_pkgname}-${pkgver}"
npm install -g \
--cache "${srcdir}/npm-cache" \
--prefix "${pkgdir}/usr" \
--install-links "./$subdir"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
find "${pkgdir}/usr" -type d -exec chmod 755 {} +
chown -R root:root "${pkgdir}"
find "${pkgdir}" -type f -name "package.json" -print0 \
| xargs -0 sed -i "/_where/d"
local tmppackage="$(mktemp)"
local pkgjson="${pkgdir}/usr/lib/node_modules/${pkgname#nodejs-}/package.json"
jq '.|=with_entries(select(.key|test("_.+")|not))' "${pkgjson}" > "${tmppackage}"
mv "${tmppackage}" "${pkgjson}"
chmod 644 "${pkgjson}"
}
prepare() {
cd "${_pkgname}-${pkgver}"
npm ci --cache "${srcdir}/npm-cache" --ignore-scripts
local subdir
for subdir in browser-ext client server
do
pushd $subdir
npm ci --cache "${srcdir}/npm-cache"
popd
done
}
build() {
cd "${_pkgname}-${pkgver}"
npm run ci-all
cd server
npx tsc
}
package_perlnavigator() {
pkgdesc="Perl language server that includes syntax checking, perl critic, and code navigation. Self-contained executable"
arch=('x86_64' 'aarch64')
depends=('glibc' 'gcc-libs')
# Both provide /usr/bin/perlnavigator
conflicts=('nodejs-perlnavigator-server')
options=("!strip")
cd "${_pkgname}-${pkgver}"
install -d "${pkgdir}/usr/lib/node_modules"
cp -a server "${pkgdir}/usr/lib/node_modules/perlnavigator-server"
install -d "${pkgdir}/usr/bin"
ln -s ../lib/node_modules/perlnavigator-server/bin/perlnavigator \
"${pkgdir}/usr/bin/perlnavigator"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
package_nodejs-perl-navigator-web-server() {
pkgdesc="Perl language server implementation in a web extension"
depends=("nodejs")
_package_node_subdir browser-ext
}
package_nodejs-perlnavigator-client() {
pkgdesc="Perl language server client"
depends=("bash" "nodejs")
_package_node_subdir client
}
package_nodejs-perlnavigator-server() {
depends=("nodejs")
provides=('perlnavigator')
conflicts=('perlnavigator')
_package_node_subdir server
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 00:06:47 | Low | 2 |
| 2026-10-13 00:23:45 | Low | 2 |
| 2026-10-12 00:18:51 | Low | 2 |
| 2026-10-11 00:26:05 | Low | 2 |
| 2026-10-10 00:11:52 | Low | 2 |
| 2026-10-09 00:05:33 | Low | 2 |
| 2026-10-08 00:28:03 | Low | 2 |
| 2026-10-07 00:21:34 | Low | 2 |
| 2026-10-06 00:13:36 | Low | 2 |
| 2026-10-05 00:08:03 | Low | 2 |
| 2026-10-04 00:18:08 | Low | 2 |