summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/internal/hide_stack_frames.ts
blob: 1f1451a38b2f7602afcd856f3dea018a4ebc76a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.

// TODO(petamoriken): enable prefer-primordials for node polyfills
// deno-lint-ignore-file prefer-primordials

// deno-lint-ignore no-explicit-any
type GenericFunction = (...args: any[]) => any;

/** This function removes unnecessary frames from Node.js core errors. */
export function hideStackFrames<T extends GenericFunction = GenericFunction>(
  fn: T,
): T {
  // We rename the functions that will be hidden to cut off the stacktrace
  // at the outermost one.
  const hidden = "__node_internal_" + fn.name;
  Object.defineProperty(fn, "name", { value: hidden });

  return fn;
}