Package evidence
@transitive-sdk/[email protected]
Native Addon Gyp Action: binding.gyp runs a script or chains shell during node-gyp build (executes outside package.json lifecycle)
Trust signals
Why this verdict
PkgRadar discounts a release’s score when public reputation argues against novel malware. The verdict above already reflects these — the panel just explains what was applied.
- Versions published
- 31Mature · −50% score
- First published
- Dec 2023
- Publisher
- chfritz
Effective trust discount applied: −50% (max across signals — discounts don’t stack). New install-lifecycle deltas vs the previous release would clear the discount.
Recommended action
Block this updateStatic evidence trips multiple high-signal indicators. Quarantine the release until the publisher validates the change or you can rule out the indicators below.
Block this release in CIcurl · GitHub Actions
Fail the build when this package version is added or upgraded. Replace $PKGRADAR_TOKEN with a Pro / Team API key from your dashboard.
curl -fsS https://pkgradar.com/gate/npm \
-H "Authorization: Bearer $PKGRADAR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"specs":["@transitive-sdk/[email protected]"],"fail_on":"high"}'GitHub Actions step:
- name: PkgRadar gate
run: |
curl -fsS https://pkgradar.com/gate/npm \
-H "Authorization: Bearer ${{ secrets.PKGRADAR_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{"specs":["@transitive-sdk/[email protected]"],"fail_on":"high"}'Why flagged
What the scanner saw
Native Addon Gyp Action: binding.gyp runs a script or chains shell during node-gyp build (executes outside package.json lifecycle)
Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.
Availability ledger
available
Status history (3 events)
- available → available · risk high · score 45 · status available -> available, risk high -> high, score 20 -> 45
- available → available · risk high · score 20 · status available -> available, risk high -> high, score 67 -> 20
- new → available · risk high · score 67 · status changed
Evidence
Static findings
15 static · 0 from release diff · showing high-signal first.
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| high | Native Addon Gyp Action | package/_node_modules/dtrace-provider/src/binding.gyp | binding.gyp runs a script or chains shell during node-gyp build (executes outside package.json lifecycle) | 35 |
| high | Remote Dependency Spec | package.json | optionalDependencies.rosnodejs="github:chfritz/rosjs" | 35 |
| medium | Install Lifecycle Binary Exec | package.json | postinstall="./postinstall.sh" | 15 |
Show all 15 findings (low-signal and informational)
| Severity | Kind | Path | Detail | Points |
|---|---|---|---|---|
| high | Native Addon Gyp Action | package/_node_modules/dtrace-provider/src/binding.gyp | binding.gyp runs a script or chains shell during node-gyp build (executes outside package.json lifecycle) | 35 |
| high | Remote Dependency Spec | package.json | optionalDependencies.rosnodejs="github:chfritz/rosjs" | 35 |
| medium | Install Lifecycle Binary Exec | package.json | postinstall="./postinstall.sh" | 15 |
| low | Install-time lifecycle script | package.json | postinstall="./postinstall.sh" | 5 |
| low | Obfuscation Density | package/_node_modules/esprima/dist/esprima.js | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/@babel/helper-validator-identifier/lib/identifier.js | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/json5/dist/index.js | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/json5/dist/index.min.js | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/cjs-module-lexer/lexer.js | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/moment/min/locales.min.js | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/moment/min/moment-with-locales.min.js | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_package-lock.json | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/.package-lock.json | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/json5/dist/index.min.mjs | high encoded/escaped-token density | 0 |
| low | Obfuscation Density | package/_node_modules/json5/dist/index.mjs | high encoded/escaped-token density | 0 |
Manifest
Package metadata
Scripts5
postinstall./postinstall.shpostpackgit diff --quiet --exit-code || (echo 'Not clean, refusing to publish!\n\n' && exit 1)postpublishgit tag utils-ros@${npm_package_version}prepackcat ../docs.js | node --input-type=module - rostestjest --watch
Dependencies1
@transitive-sdk/utils^0.17.1
Optional dependencies2
rosnodejsgithub:chfritz/rosjszeromq^6.5.0