How to use stack-trace - 10 common examples

To help you get started, we’ve selected a few stack-trace examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github microclimate-dev2ops / microclimate-vscode-tools / dev / src / Logger.ts View on Github external
private static getCaller(): string {
        // get the stack trace above logInner. casting is necessary because the stack trace package only accepts () => void functions.
        const stack = Stacktrace.get(Log.logInner as unknown as () => void);
        // 6 frames is the magic number to get around __awaiters, past the Log.x function, and up to the frame we care about.
        const frame = stack[6];
        if (frame == null) {
            return "N/A";
        }

        let methodName = frame.getMethodName() || frame.getFunctionName();
        if (methodName != null) {
            // If it's a callback, there will be extra stuff we aren't interested in separated by dots
            // eg "Project.__dirname.constructor.connection.update"
            // strip out everything up to the last dot, if there is one
            const splitByPeriod: string[] = methodName.split(".");
            if (splitByPeriod.length > 1) {
                methodName = splitByPeriod[splitByPeriod.length - 1];
            }
            methodName = `.${methodName}()`;
github thenativeweb / flaschenpost / lib / Middleware / index.js View on Github external
constructor (level, source) {
    if (!level) {
      throw new Error('Level is missing.');
    }

    /* eslint-disable global-require */
    const flaschenpost = require('../flaschenpost');
    /* eslint-enable global-require */

    const options = {};

    options.objectMode = true;
    options.source = source || stackTrace.get()[1].getFileName();

    super(options);

    this.level = level;
    this.logger = flaschenpost.getLogger(options.source);

    if (!this.logger[this.level]) {
      throw new Error('Level is invalid.');
    }
  }
github zowe / imperative / packages / logger / src / Logger.ts View on Github external
private getCallerFileAndLineTag(): string {
        const frame: StackTrace.StackFrame[] = StackTrace.parse(new Error());
        let callerStackIndex = 1;
        while (frame[callerStackIndex].getFileName().indexOf(path.basename(__filename)) >= 0) {
            // go up the stack until we're outside of the BrightsideLogger file
            callerStackIndex += 1;
        }
        const filename = path.basename(frame[callerStackIndex].getFileName());
        const lineNumber = frame[callerStackIndex].getLineNumber();
        return format("[%s:%s] ", filename, lineNumber);
    }
github probmods / webppl / src / errors / parsers.js View on Github external
function parseV8(error) {
  assert.ok(error instanceof Error);
  var parsed = stackTrace.parse(error);
  return parsed.map(function(entry) {
    var e = _.pick(entry, 'fileName', 'lineNumber', 'columnNumber', 'native');
    // Flag entries that originated in eval'd webppl code. These will
    // be looked up in the source map later.
    e.webppl = entry.fileName === '';
    // v8 column numbers are one indexed. Standardize on zero-based
    // indexed as this is used by the source map library.
    if (entry.columnNumber !== null) {
      e.columnNumber = entry.columnNumber - 1;
    }
    e.name = null;
    return e;
  });
}
github hbenl / vscode-jasmine-test-adapter / src / worker / patchJasmine.ts View on Github external
function findCallLocation(functionName: string): Location | undefined {

	const stackTrace = parseStackTrace(new Error());

	for (var i = 0; i < stackTrace.length - 1; i++) {
		if (stackTrace[i].getFunctionName() === functionName) {
			const callSite = stackTrace[i + 1];
			return {
				file: callSite.getFileName(),
				line: callSite.getLineNumber() - 1
			};
		}
	}

	return undefined;
}
github jan-molak / serenity-js / lib / serenity / reporting / test_reports.ts View on Github external
private stackTraceOf(error: Error): Array {
        return parse(error).map((frame) => {
            return {
                declaringClass: frame.getTypeName() || frame.getFunctionName() || '',
                methodName:     frame.getMethodName() || frame.getFunctionName() || '',
                fileName:       frame.getFileName(),
                lineNumber:     frame.getLineNumber()
            }
        });
    }
github hbenl / vscode-mocha-test-adapter / src / worker / reporter.ts View on Github external
runner.on('fail', (test: Mocha.ITest, err: Error & { actual?: any, expected?: any, showDiff?: boolean }) => {

				const testId = `${test.file}: ${test.fullTitle()}`;
				const description = getElapsedTime(testId);

				let decorations: TestDecoration[] = [];
				if (err.stack) {
					const parsedStack = stackTrace.parse(err);
					for (const stackFrame of parsedStack) {
						let filename = stackFrame.getFileName();
						if (typeof filename === 'string') {
							filename = path.resolve(filename);
							let matchFound = false;
							if (sloppyMatch && test.file) {
								const f1 = filename.substring(0, filename.length - path.extname(filename).length);
								const f2 = test.file.substring(0, test.file.length - path.extname(test.file).length);
								if (f1 === f2) {
									matchFound = true;
								}
							} else {
								if (filename === test.file) {
									matchFound = true;
								}
							}
github di-ninja / di-ninja / src / nodeRequireContext.js View on Github external
export default function (folder, recursive = false, pattern = patternDefault, parentDir = undefined) {
  folder = path.normalize(folder)
  if (!parentDir) {
    parentDir = path.dirname(stackTrace.get()[1].getFileName())
  }
  const contextDir = path.join(parentDir, folder)
  const contextDirLen = contextDir.length + 1
  const normalizedFolder = path.resolve(parentDir, folder)
  const folderContents = getFolderContents(normalizedFolder, recursive)
    .filter(item => {
      return pattern.test(item)
    })
    .map(item => {
      return '.' + SEP + item.substr(contextDirLen)
    })

  const keys = function () {
    return folderContents
  }
github atomist / automation-client / lib / util / logger.ts View on Github external
export function callsite(logInfo: logform.TransformableInfo): logform.TransformableInfo {
    const oldLimit = Error.stackTraceLimit;
    try {
        Error.stackTraceLimit = Infinity;
        throw new Error();
    } catch (e) {
        const root = appRoot.path;
        const callsites = trace.parse(e).map(l => ({
            fileName: l.getFileName(),
            lineNumber: l.getLineNumber(),
        })).filter(cs => !!cs.fileName).reverse();
        const callsite = callsites[callsites.findIndex(cs => cs.fileName.includes("node_modules/winston")) - 1];
        if (!!callsite) {
            return {
                ...logInfo,
                callsite: {
                    ...callsite,
                    fileName: callsite.fileName.split(root)[1].slice(1),
                },
            };
        }
    } finally {
        Error.stackTraceLimit = oldLimit;
    }
github atomist / automation-client / lib / graph / ApolloGraphClient.ts View on Github external
public mutate(options: MutationOptions<q> | string): Promise {
        if (typeof options === "string") {
            options = {
                name: options,
            };
        }
        const m = internalGraphql.mutate({
            mutation: options.mutation,
            path: options.path,
            name: options.name,
            moduleDir: (options as any).moduleDir ? (options as any).moduleDir : trace.get()[1].getFileName(),
        });
        return this.executeMutation(m, options.variables, options.options);
    }
</q>

stack-trace

Get v8 stack traces as an array of CallSite objects.

MIT
Latest version published 2 years ago

Package Health Score

74 / 100
Full package analysis

Popular stack-trace functions