Repository URL to install this package:
|
Version:
0.7.0 ▾
|
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const fs=require("fs"),applicationUnderMonitoring=require("@supertenant/core").util["applicationUnderMonitoring"];let logger=require("@supertenant/core").logger.getLogger("metrics");exports.setLogger=function(_logger){logger=_logger},exports.payloadPrefix="directDependencies",exports.currentPayload={dependencies:{},peerDependencies:{},optionalDependencies:{}};const MAX_ATTEMPTS=20,DELAY=1e3;let attempts=0;function addDirectDependenciesFromMainPackageJson(packageJsonPath){const started=Date.now();fs.readFile(packageJsonPath,{encoding:"utf8"},(err,contents)=>{if(err)return logger.debug("Failed to analyze direct dependencies dependency due to: %s.",err.message);try{var pckg=JSON.parse(contents);exports.currentPayload.dependencies=pckg.dependencies||{},exports.currentPayload.peerDependencies=pckg.peerDependencies||{},exports.currentPayload.optionalDependencies=pckg.optionalDependencies||{},exports.currentPayload[pckg.name]=pckg.version,logger.debug(`Collection of direct dependencies took ${Date.now()-started} ms.`)}catch(subErr){return logger.debug(`Collection of direct dependencies took ${Date.now()-started} ms.`),logger.debug("Failed to parse package.json %s dependency due to: %s",packageJsonPath,subErr.message)}})}exports.activate=function(){attempts++,applicationUnderMonitoring.getMainPackageJsonPathStartingAtMainModule((err,packageJsonPath)=>{if(err)return logger.info("Failed to determine main package.json for analysis of direct dependencies. Reason: %s %s ",err.message,err.stack);!packageJsonPath&&attempts<MAX_ATTEMPTS?setTimeout(exports.activate,DELAY).unref():packageJsonPath&&addDirectDependenciesFromMainPackageJson(packageJsonPath)})};