Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@supertenant/core / src / tracing / tracingUtil.js
Size: Mime:
// (c) Copyright 2023 Supertenant Ltd. - all rights reserved.
// See LICENSE file in project root for license terms.
"use strict";const crypto=require("crypto"),path=require("path"),StringDecoder=require("string_decoder").StringDecoder,stackTrace=require("../util/stackTrace"),hexDecoder=new StringDecoder("hex");let stackTraceLength=10;function readHexFromBuffer(buffer,offset,length){return hexDecoder.write(buffer.slice(offset,offset+length))}function writeHexToBuffer(hexString,buffer,offset){buffer.hexWrite(hexString,offset,hexString.length/2)}exports.init=function(config){stackTraceLength=config.tracing.stackTraceLength},exports.getStackTrace=function(referenceFunction,drop){return stackTrace.captureStackTrace(stackTraceLength,referenceFunction,drop)},exports.generateRandomTraceId=function(){return exports.generateRandomId(16)},exports.generateRandomLongTraceId=function(){return exports.generateRandomId(32)},exports.generateRandomSpanId=function(){return exports.generateRandomId(16)},exports.generateRandomId=function(length){return crypto.randomBytes(Math.ceil(length/2)).toString("hex").slice(0,length)},exports.readTraceContextFromBuffer=function(buffer){if(!Buffer.isBuffer(buffer))throw new Error("Not a buffer: "+buffer);if(24!==buffer.length)throw new Error("Only buffers of length 24 are supported: "+buffer);return 0!==buffer.readInt32BE(0)||0!==buffer.readInt32BE(4)?{t:readHexFromBuffer(buffer,0,16),s:readHexFromBuffer(buffer,16,8)}:{t:readHexFromBuffer(buffer,8,8),s:readHexFromBuffer(buffer,16,8)}},exports.unsignedHexStringToBuffer=function(hexString,buffer,offsetFromRight){let offset;if(offset=buffer&&null!=offsetFromRight?buffer.length-hexString.length/2-offsetFromRight:0,16===hexString.length)buffer=buffer||Buffer.alloc(8);else{if(32!==hexString.length)throw new Error("Only supported hex string lengths are 16 and 32, got: "+hexString);buffer=buffer||Buffer.alloc(16)}return writeHexToBuffer(hexString,buffer,offset),buffer},exports.unsignedHexStringsToBuffer=function(traceId,spanId){var buffer=Buffer.alloc(24);return exports.unsignedHexStringToBuffer(traceId,buffer,8),exports.unsignedHexStringToBuffer(spanId,buffer,0),buffer},exports.renderTraceContextToBuffer=function(span){return exports.unsignedHexStringsToBuffer(span.t,span.s)},exports.getErrorDetails=function(err){if(null!=err)return String(err.stack||err.message||err).substring(0,500)},exports.shortenDatabaseStatement=function(stmt){if(null!=stmt&&"string"==typeof stmt)return stmt.substring(0,4e3)},exports.sanitizeConnectionStr=function(connectionStr){if(null!=connectionStr&&"string"==typeof connectionStr)return connectionStr.replace(/PWD\s*=\s*[^;]*/,"PWD=<redacted>")},exports.readAttribCaseInsensitive=function(object,key){if(object&&"object"==typeof object&&"string"==typeof key){if(object[key])return object[key];var keyUpper=key.toUpperCase(),allKeys=Object.keys(object);for(let i=0;i<allKeys.length;i++)if("string"==typeof allKeys[i]&&allKeys[i].toUpperCase()===keyUpper)return object[allKeys[i]]}return null},exports.requireModuleFromApplicationUnderMonitoringSafely=function(basePath,...relativePath){return require(path.join(basePath,...relativePath))};