File Explorer

/proc/self/task/5/root/var/lang/lib/node_modules/npm/lib/utils

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

allow-scripts-prune.js1.5 KB · 48 lines
const npa = require('npm-package-arg')const { matches } = require('@npmcli/arborist/lib/script-allowed.js') // Pure classifier behind `npm install-scripts prune`.//// Splits the `package.json#allowScripts` map into entries to keep (`remaining`)// and unused ones to drop (`removed`). `nodes` is the install candidates as// `{ node, hasScripts }`; the caller gathers them so this stays sync.//// An entry is unused (version-aware, by trusted identity) when://   - no installed node matches the key  -> reason 'not-installed'//   - it matches but none have scripts   -> reason 'no-scripts'//// Unparseable keys are kept (prune never drops what it can't parse). Both// `true` (approve) and `false` (deny) entries are pruned.const classifyUnusedEntries = (allowScripts, nodes) => {  const remaining = {}  const removed = []   for (const [key, value] of Object.entries(allowScripts || {})) {    let parseable = true    try {      npa(key)    } catch {      parseable = false    }    if (!parseable) {      remaining[key] = value      continue    }     const matching = nodes.filter(({ node }) => matches(node, key))    if (matching.length === 0) {      removed.push({ key, value, reason: 'not-installed' })      continue    }    if (!matching.some(({ hasScripts }) => hasScripts)) {      removed.push({ key, value, reason: 'no-scripts' })      continue    }    remaining[key] = value  }   return { remaining, removed }} module.exports = { classifyUnusedEntries }