MCPcopy Create free account
hub / github.com/nodejs/node / getJsonOutputItem

Function getJsonOutputItem

deps/npm/lib/commands/ls.js:343–401  ·  view source on GitHub ↗
(node, { global, long })

Source from the content-addressed store, hash-verified

341}
342
343const getJsonOutputItem = (node, { global, long }) => {
344 const item = {}
345
346 if (node.version) {
347 item.version = node.version
348 }
349
350 if (node.resolved) {
351 item.resolved = node.resolved
352 }
353
354 // if the node is the project root, do not add the overridden flag.
355 // the project root can't be overridden anyway, and if we add the flag it causes undesirable behavior when `npm ls --json` is ran in an empty directory since we end up printing an object with only an overridden prop
356 if (!node.isProjectRoot) {
357 item.overridden = node.overridden
358 }
359
360 item[_name] = node.name
361
362 // special formatting for top-level package name
363 const hasPackageJson =
364 node && node.package && Object.keys(node.package).length
365 if (node.isRoot && hasPackageJson) {
366 item.name = node.package.name || node.name
367 }
368
369 if (long && !node[_missing]) {
370 item.name = item[_name]
371 const { dependencies, ...packageInfo } = node.package
372 Object.assign(item, packageInfo)
373 item.extraneous = false
374 item.path = node.path
375 item._dependencies = {
376 ...node.package.dependencies,
377 ...node.package.optionalDependencies,
378 }
379 item.devDependencies = node.package.devDependencies || {}
380 item.peerDependencies = node.package.peerDependencies || {}
381 }
382
383 // augment json output items with extra metadata
384 if (isExtraneous(node, { global })) {
385 item.extraneous = true
386 }
387
388 if (node[_invalid]) {
389 item.invalid = node[_invalid]
390 }
391
392 if (node[_missing] && !isOptional(node)) {
393 item.required = node[_required]
394 item.missing = true
395 }
396 if (node[_include] && node[_problems] && node[_problems].size) {
397 item.problems = [...node[_problems]]
398 }
399
400 return augmentItemWithIncludeMetadata(node, item)

Callers 1

visitMethod · 0.85

Calls 5

isExtraneousFunction · 0.85
isOptionalFunction · 0.85
assignMethod · 0.80
keysMethod · 0.65

Tested by

no test coverage detected