Duffer Derek

Current Path : /var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/next/dist/server/
Upload File :
Current File : /var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/next/dist/server/patch-error-inspect.js.map

{"version":3,"sources":["../../src/server/patch-error-inspect.ts"],"sourcesContent":["import { findSourceMap as nativeFindSourceMap } from 'module'\nimport * as path from 'path'\nimport * as url from 'url'\nimport type * as util from 'util'\nimport { SourceMapConsumer as SyncSourceMapConsumer } from 'next/dist/compiled/source-map'\nimport {\n  type ModernSourceMapPayload,\n  devirtualizeReactServerURL,\n  findApplicableSourceMapPayload,\n  ignoreListAnonymousStackFramesIfSandwiched as ignoreListAnonymousStackFramesIfSandwichedGeneric,\n  sourceMapIgnoreListsEverything,\n} from './lib/source-maps'\nimport { parseStack, type StackFrame } from './lib/parse-stack'\nimport type { IgnorableStackFrame } from '../next-devtools/server/shared'\nimport { workUnitAsyncStorage } from './app-render/work-unit-async-storage.external'\nimport { dim, italic } from '../lib/picocolors'\n\ntype FindSourceMapPayload = (\n  sourceURL: string\n) => ModernSourceMapPayload | undefined\n// Find a source map using the bundler's API.\n// This is only a fallback for when Node.js fails to due to bugs e.g. https://github.com/nodejs/node/issues/52102\n// TODO: Remove once all supported Node.js versions are fixed.\n// TODO(veil): Set from Webpack as well\nlet bundlerFindSourceMapPayload: FindSourceMapPayload = () => undefined\n\nexport function setBundlerFindSourceMapImplementation(\n  findSourceMapImplementation: FindSourceMapPayload\n): void {\n  bundlerFindSourceMapPayload = findSourceMapImplementation\n}\n\n// Code frame renderer - injected by dev/build to avoid hard dependency on native bindings\ntype CodeFrameRenderer = (\n  frame: IgnorableStackFrame,\n  source: string | null,\n  colors: boolean\n) => string | null\n\nlet codeFrameRenderer: CodeFrameRenderer | undefined\n\nexport function setCodeFrameRenderer(renderer: CodeFrameRenderer): void {\n  codeFrameRenderer = renderer\n}\n\nfunction getOriginalCodeFrame(\n  frame: IgnorableStackFrame,\n  source: string | null,\n  colors: boolean = process.stdout.isTTY\n): string | null {\n  if (!codeFrameRenderer) {\n    // No renderer available - gracefully degrade\n    return null\n  }\n  return codeFrameRenderer(frame, source, colors)\n}\n\ntype SourceMapCache = Map<\n  string,\n  null | { map: SyncSourceMapConsumer; payload: ModernSourceMapPayload }\n>\n\nfunction frameToString(\n  methodName: string | null,\n  sourceURL: string | null,\n  line1: number | null,\n  column1: number | null\n): string {\n  let sourceLocation = line1 !== null ? `:${line1}` : ''\n  if (column1 !== null && sourceLocation !== '') {\n    sourceLocation += `:${column1}`\n  }\n\n  let fileLocation: string | null\n  if (\n    sourceURL !== null &&\n    sourceURL.startsWith('file://') &&\n    URL.canParse(sourceURL)\n  ) {\n    // If not relative to CWD, the path is ambiguous to IDEs and clicking will prompt to select the file first.\n    // In a multi-app repo, this leads to potentially larger file names but will make clicking snappy.\n    // There's no tradeoff for the cases where `dir` in `next dev [dir]` is omitted\n    // since relative to cwd is both the shortest and snappiest.\n    fileLocation = path.relative(process.cwd(), url.fileURLToPath(sourceURL))\n  } else if (sourceURL !== null && sourceURL.startsWith('/')) {\n    fileLocation = path.relative(process.cwd(), sourceURL)\n  } else {\n    fileLocation = sourceURL\n  }\n\n  return methodName\n    ? `    at ${methodName} (${fileLocation}${sourceLocation})`\n    : `    at ${fileLocation}${sourceLocation}`\n}\n\nfunction computeErrorName(error: Error): string {\n  // TODO: Node.js seems to use a different algorithm\n  // class ReadonlyRequestCookiesError extends Error {}` would read `ReadonlyRequestCookiesError: [...]`\n  // in the stack i.e. seems like under certain conditions it favors the constructor name.\n  return error.name || 'Error'\n}\n\nfunction prepareUnsourcemappedStackTrace(\n  error: Error,\n  structuredStackTrace: any[]\n): string {\n  const name = computeErrorName(error)\n  const message = error.message || ''\n  let stack = name + ': ' + message\n  for (let i = 0; i < structuredStackTrace.length; i++) {\n    stack += '\\n    at ' + structuredStackTrace[i].toString()\n  }\n  return stack\n}\n\nfunction shouldIgnoreListGeneratedFrame(file: string): boolean {\n  return file.startsWith('node:') || file.includes('node_modules')\n}\n\nfunction shouldIgnoreListOriginalFrame(file: string): boolean {\n  return file.includes('node_modules')\n}\n\ninterface SourcemappableStackFrame extends StackFrame {\n  file: NonNullable<StackFrame['file']>\n}\n\ninterface SourceMappedFrame {\n  stack: IgnorableStackFrame\n  // DEV only\n  code: string | null\n}\n\nfunction createUnsourcemappedFrame(\n  frame: SourcemappableStackFrame\n): SourceMappedFrame {\n  return {\n    stack: {\n      file: frame.file,\n      line1: frame.line1,\n      column1: frame.column1,\n      methodName: frame.methodName,\n      arguments: frame.arguments,\n      ignored: shouldIgnoreListGeneratedFrame(frame.file),\n    },\n    code: null,\n  }\n}\n\nfunction ignoreListAnonymousStackFramesIfSandwiched(\n  sourceMappedFrames: Array<{\n    stack: IgnorableStackFrame\n    code: string | null\n  }>\n) {\n  return ignoreListAnonymousStackFramesIfSandwichedGeneric(\n    sourceMappedFrames,\n    (frame) => frame.stack.file === '<anonymous>',\n    (frame) => frame.stack.ignored,\n    (frame) => frame.stack.methodName,\n    (frame) => {\n      frame.stack.ignored = true\n    }\n  )\n}\n\n/**\n * @param frame\n * @param sourceMapCache\n * @returns The original frame if not sourcemapped.\n */\nfunction getSourcemappedFrameIfPossible(\n  frame: SourcemappableStackFrame,\n  sourceMapCache: SourceMapCache,\n  inspectOptions: util.InspectOptions\n): {\n  stack: IgnorableStackFrame\n  code: string | null\n} {\n  const sourceMapCacheEntry = sourceMapCache.get(frame.file)\n  let sourceMapConsumer: SyncSourceMapConsumer\n  let sourceMapPayload: ModernSourceMapPayload\n  if (sourceMapCacheEntry === undefined) {\n    let sourceURL = frame.file\n    // e.g. \"/Users/foo/APP/.next/server/chunks/ssr/[root-of-the-server]__2934a0._.js\"\n    // or \"C:\\Users\\foo\\APP\\.next\\server\\chunks\\ssr\\[root-of-the-server]__2934a0._.js\"\n    // will be keyed by Node.js as \"file:///APP/.next/server/chunks/ssr/[root-of-the-server]__2934a0._.js\".\n    // This is likely caused by `callsite.toString()` in `Error.prepareStackTrace converting file URLs to paths.\n    //\n    // But frame.file might also be \"webpack-internal:///(rsc)/./app/bad-sourcemap/page.js\" or\n    // \"<anonymous>\" or \"node:internal/process/task_queues\" here\n    if (path.isAbsolute(frame.file)) {\n      sourceURL = url.pathToFileURL(frame.file).toString()\n    }\n    let maybeSourceMapPayload: ModernSourceMapPayload | undefined\n    try {\n      const sourceMap = nativeFindSourceMap(sourceURL)\n      maybeSourceMapPayload = sourceMap?.payload\n    } catch (cause) {\n      // We should not log an actual error instance here because that will re-enter\n      // this codepath during error inspection and could lead to infinite recursion.\n      console.error(\n        `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code. Cause: ${cause}`\n      )\n      // If loading fails once, it'll fail every time.\n      // So set the cache to avoid duplicate errors.\n      sourceMapCache.set(frame.file, null)\n      // Don't even fall back to the bundler because it might be not as strict\n      // with regards to parsing and then we fail later once we consume the\n      // source map payload.\n      // This essentially avoids a redundant error where we fail here and then\n      // later on consumption because the bundler just handed back an invalid\n      // source map.\n      return createUnsourcemappedFrame(frame)\n    }\n    if (maybeSourceMapPayload === undefined) {\n      maybeSourceMapPayload = bundlerFindSourceMapPayload(sourceURL)\n    }\n\n    if (maybeSourceMapPayload === undefined) {\n      return createUnsourcemappedFrame(frame)\n    }\n    sourceMapPayload = maybeSourceMapPayload\n    try {\n      // Pass the source map URL as the second parameter so that the consumer\n      // can resolve relative paths in the source map's `sources` array. This is\n      // a guess! Turbopack places .map files as siblings to the chunks so this\n      // is sufficient to compute relative paths but is actually wrong (the\n      // chunk and sourcemap have different content hashes). We are using the\n      // node API to read the sourcemap and it doesn't give us access to the\n      // URI. Devirtualize `about://React/Server/file:///path/to/chunk.js?4` to\n      // `file:///path/to/chunk.js` so that relative `sources` in the source map\n      // resolve against the real chunk URL, not the virtual one.\n      const sourceMapURL = devirtualizeReactServerURL(sourceURL) + '.map'\n      sourceMapConsumer = new SyncSourceMapConsumer(\n        sourceMapPayload,\n        // @ts-expect-error: our typings don't include this parameter but it is here.\n        sourceMapURL\n      )\n    } catch (cause) {\n      // We should not log an actual error instance here because that will re-enter\n      // this codepath during error inspection and could lead to infinite recursion.\n      console.error(\n        `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code. Cause: ${cause}`\n      )\n      // If creating the consumer fails once, it'll fail every time.\n      // So set the cache to avoid duplicate errors.\n      sourceMapCache.set(frame.file, null)\n      return createUnsourcemappedFrame(frame)\n    }\n    sourceMapCache.set(frame.file, {\n      map: sourceMapConsumer,\n      payload: sourceMapPayload,\n    })\n  } else if (sourceMapCacheEntry === null) {\n    // We failed earlier getting the payload or consumer.\n    // Just return an unsourcemapped frame.\n    // Errors will already be logged.\n    return createUnsourcemappedFrame(frame)\n  } else {\n    sourceMapConsumer = sourceMapCacheEntry.map\n    sourceMapPayload = sourceMapCacheEntry.payload\n  }\n\n  const sourcePosition = sourceMapConsumer.originalPositionFor({\n    column: (frame.column1 ?? 1) - 1,\n    line: frame.line1 ?? 1,\n  })\n\n  const applicableSourceMap = findApplicableSourceMapPayload(\n    (frame.line1 ?? 1) - 1,\n    (frame.column1 ?? 1) - 1,\n    sourceMapPayload\n  )\n  let ignored =\n    applicableSourceMap !== undefined &&\n    sourceMapIgnoreListsEverything(applicableSourceMap)\n  if (sourcePosition.source === null) {\n    return {\n      stack: {\n        arguments: frame.arguments,\n        file: frame.file,\n        line1: frame.line1,\n        column1: frame.column1,\n        methodName: frame.methodName,\n        ignored: ignored || shouldIgnoreListGeneratedFrame(frame.file),\n      },\n      code: null,\n    }\n  }\n\n  // TODO(veil): Upstream a method to sourcemap consumer that immediately says if a frame is ignored or not.\n  if (applicableSourceMap === undefined) {\n    console.error('No applicable source map found in sections for frame', frame)\n  } else if (!ignored && shouldIgnoreListOriginalFrame(sourcePosition.source)) {\n    // Externals may be libraries that don't ship ignoreLists.\n    // This is really taking control away from libraries.\n    // They should still ship `ignoreList` so that attached debuggers ignore-list their frames.\n    // TODO: Maybe only ignore library sourcemaps if `ignoreList` is absent?\n    // Though keep in mind that Turbopack omits empty `ignoreList`.\n    // So if we establish this convention, we should communicate it to the ecosystem.\n    ignored = true\n  } else if (!ignored) {\n    // TODO: O(n^2). Consider moving `ignoreList` into a Set\n    const sourceIndex = applicableSourceMap.sources.indexOf(\n      sourcePosition.source\n    )\n    ignored = applicableSourceMap.ignoreList?.includes(sourceIndex) ?? false\n  }\n\n  const originalFrame: IgnorableStackFrame = {\n    // We ignore the sourcemapped name since it won't be the correct name.\n    // The callsite will point to the column of the variable name instead of the\n    // name of the enclosing function.\n    // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n    methodName: frame.methodName\n      ?.replace('__WEBPACK_DEFAULT_EXPORT__', 'default')\n      ?.replace('__webpack_exports__.', ''),\n    file: sourcePosition.source,\n    line1: sourcePosition.line,\n    column1: sourcePosition.column + 1,\n    // TODO: c&p from async createOriginalStackFrame but why not frame.arguments?\n    arguments: [],\n    ignored,\n  }\n\n  /** undefined = not yet computed */\n  let codeFrame: string | null | undefined\n\n  return {\n    stack: originalFrame,\n    get code() {\n      if (codeFrame === undefined) {\n        const sourceContent: string | null =\n          sourceMapConsumer.sourceContentFor(\n            sourcePosition.source,\n            /* returnNullOnMissing */ true\n          ) ?? null\n        codeFrame = getOriginalCodeFrame(\n          originalFrame,\n          sourceContent,\n          inspectOptions.colors\n        )\n      }\n      return codeFrame\n    },\n  }\n}\n\nfunction parseAndSourceMap(\n  error: Error,\n  inspectOptions: util.InspectOptions\n): string {\n  const showIgnoreListed = process.env.__NEXT_SHOW_IGNORE_LISTED === 'true'\n  // We overwrote Error.prepareStackTrace earlier so error.stack is not sourcemapped.\n  let unparsedStack = String(error.stack)\n  // We could just read it from `error.stack`.\n  // This works around cases where a 3rd party `Error.prepareStackTrace` implementation\n  // doesn't implement the name computation correctly.\n  const errorName = computeErrorName(error)\n\n  let idx = unparsedStack.indexOf('react_stack_bottom_frame')\n  if (idx !== -1) {\n    idx = unparsedStack.lastIndexOf('\\n', idx)\n  } else {\n    idx = unparsedStack.indexOf('react-stack-bottom-frame')\n    if (idx !== -1) {\n      idx = unparsedStack.lastIndexOf('\\n', idx)\n    }\n  }\n  if (idx !== -1 && !showIgnoreListed) {\n    // Cut off everything after the bottom frame since it'll be React internals.\n    unparsedStack = unparsedStack.slice(0, idx)\n  }\n\n  const unsourcemappedStack = parseStack(unparsedStack)\n  const sourceMapCache: SourceMapCache = new Map()\n\n  const sourceMappedFrames: Array<{\n    stack: IgnorableStackFrame\n    code: string | null\n  }> = []\n  let sourceFrame: null | string = null\n  for (const frame of unsourcemappedStack) {\n    if (frame.file === null) {\n      sourceMappedFrames.push({\n        code: null,\n        stack: {\n          file: frame.file,\n          line1: frame.line1,\n          column1: frame.column1,\n          methodName: frame.methodName,\n          arguments: frame.arguments,\n          ignored: false,\n        },\n      })\n    } else {\n      const sourcemappedFrame = getSourcemappedFrameIfPossible(\n        // We narrowed this earlier by bailing if `frame.file` is null.\n        frame as SourcemappableStackFrame,\n        sourceMapCache,\n        inspectOptions\n      )\n      sourceMappedFrames.push(sourcemappedFrame)\n\n      // We can determine the sourceframe here.\n      // anonymous frames won't have a sourceframe so we don't need to scan\n      // all stacks again to check if they are sandwiched between ignored frames.\n      if (\n        sourceFrame === null &&\n        // TODO: Is this the right choice?\n        !sourcemappedFrame.stack.ignored &&\n        sourcemappedFrame.code !== null\n      ) {\n        sourceFrame = sourcemappedFrame.code\n      }\n    }\n  }\n\n  ignoreListAnonymousStackFramesIfSandwiched(sourceMappedFrames)\n\n  let sourceMappedStack = ''\n  for (let i = 0; i < sourceMappedFrames.length; i++) {\n    const frame = sourceMappedFrames[i]\n\n    if (!frame.stack.ignored) {\n      sourceMappedStack +=\n        '\\n' +\n        frameToString(\n          frame.stack.methodName,\n          frame.stack.file,\n          frame.stack.line1,\n          frame.stack.column1\n        )\n    } else if (showIgnoreListed) {\n      sourceMappedStack +=\n        '\\n' +\n        dim(\n          frameToString(\n            frame.stack.methodName,\n            frame.stack.file,\n            frame.stack.line1,\n            frame.stack.column1\n          )\n        )\n    }\n  }\n\n  if (sourceMappedStack === '' && sourceMappedFrames.length > 0) {\n    // The `at` marker is important so that Node.js doesn't add square brackets\n    // around the stringified error i.e. this results in\n    // Error: message\n    //   at <ignore-listed frames>\n    // instead of\n    // [Error: message\n    //   at <ignore-listed frames>]\n    sourceMappedStack = '\\n    at ' + italic('ignore-listed frames')\n  }\n\n  return (\n    errorName +\n    ': ' +\n    error.message +\n    sourceMappedStack +\n    (sourceFrame !== null ? '\\n' + sourceFrame : '')\n  )\n}\n\nfunction sourceMapError(\n  this: void,\n  error: Error,\n  inspectOptions: util.InspectOptions\n): Error {\n  // Setting an undefined `cause` would print `[cause]: undefined`\n  const options = error.cause !== undefined ? { cause: error.cause } : undefined\n\n  // Create a new Error object with the source mapping applied and then use native\n  // Node.js formatting on the result.\n  const newError =\n    error instanceof AggregateError\n      ? // Preserve AggregateError's `errors` instance property\n        new AggregateError(error.errors, error.message, options)\n      : new Error(error.message, options)\n\n  // TODO: Ensure `class MyError extends Error {}` prints `MyError` as the name\n  newError.stack = parseAndSourceMap(error, inspectOptions)\n\n  for (const key in error) {\n    if (!Object.prototype.hasOwnProperty.call(newError, key)) {\n      // @ts-expect-error -- We're copying all enumerable properties.\n      // So they definitely exist on `this` and obviously have no type on `newError` (yet)\n      newError[key] = error[key]\n    }\n  }\n\n  return newError\n}\n\nexport function patchErrorInspectNodeJS(\n  errorConstructor: ErrorConstructor\n): void {\n  const inspectSymbol = Symbol.for('nodejs.util.inspect.custom')\n\n  errorConstructor.prepareStackTrace = prepareUnsourcemappedStackTrace\n\n  // @ts-expect-error -- TODO upstream types\n  errorConstructor.prototype[inspectSymbol] = function (\n    depth: number,\n    inspectOptions: util.InspectOptions,\n    inspect: typeof util.inspect\n  ): string {\n    // avoid false-positive dynamic i/o warnings e.g. due to usage of `Math.random` in `source-map`.\n    return workUnitAsyncStorage.exit(() => {\n      const newError = sourceMapError(this, inspectOptions)\n\n      const originalCustomInspect = (newError as any)[inspectSymbol]\n      // Prevent infinite recursion.\n      // { customInspect: false } would result in `error.cause` not using our inspect.\n      Object.defineProperty(newError, inspectSymbol, {\n        value: undefined,\n        enumerable: false,\n        writable: true,\n      })\n      try {\n        return inspect(newError, {\n          ...inspectOptions,\n          depth,\n        })\n      } finally {\n        ;(newError as any)[inspectSymbol] = originalCustomInspect\n      }\n    })\n  }\n}\n\nexport function patchErrorInspectEdgeLite(\n  errorConstructor: ErrorConstructor\n): void {\n  const inspectSymbol = Symbol.for('edge-runtime.inspect.custom')\n\n  errorConstructor.prepareStackTrace = prepareUnsourcemappedStackTrace\n\n  // @ts-expect-error -- TODO upstream types\n  errorConstructor.prototype[inspectSymbol] = function ({\n    format,\n  }: {\n    format: (...args: unknown[]) => string\n  }): string {\n    // avoid false-positive dynamic i/o warnings e.g. due to usage of `Math.random` in `source-map`.\n    return workUnitAsyncStorage.exit(() => {\n      const newError = sourceMapError(this, {})\n\n      const originalCustomInspect = (newError as any)[inspectSymbol]\n      // Prevent infinite recursion.\n      Object.defineProperty(newError, inspectSymbol, {\n        value: undefined,\n        enumerable: false,\n        writable: true,\n      })\n      try {\n        return format(newError)\n      } finally {\n        ;(newError as any)[inspectSymbol] = originalCustomInspect\n      }\n    })\n  }\n}\n"],"names":["patchErrorInspectEdgeLite","patchErrorInspectNodeJS","setBundlerFindSourceMapImplementation","setCodeFrameRenderer","bundlerFindSourceMapPayload","undefined","findSourceMapImplementation","codeFrameRenderer","renderer","getOriginalCodeFrame","frame","source","colors","process","stdout","isTTY","frameToString","methodName","sourceURL","line1","column1","sourceLocation","fileLocation","startsWith","URL","canParse","path","relative","cwd","url","fileURLToPath","computeErrorName","error","name","prepareUnsourcemappedStackTrace","structuredStackTrace","message","stack","i","length","toString","shouldIgnoreListGeneratedFrame","file","includes","shouldIgnoreListOriginalFrame","createUnsourcemappedFrame","arguments","ignored","code","ignoreListAnonymousStackFramesIfSandwiched","sourceMappedFrames","ignoreListAnonymousStackFramesIfSandwichedGeneric","getSourcemappedFrameIfPossible","sourceMapCache","inspectOptions","sourceMapCacheEntry","get","sourceMapConsumer","sourceMapPayload","isAbsolute","pathToFileURL","maybeSourceMapPayload","sourceMap","nativeFindSourceMap","payload","cause","console","set","sourceMapURL","devirtualizeReactServerURL","SyncSourceMapConsumer","map","sourcePosition","originalPositionFor","column","line","applicableSourceMap","findApplicableSourceMapPayload","sourceMapIgnoreListsEverything","sourceIndex","sources","indexOf","ignoreList","originalFrame","replace","codeFrame","sourceContent","sourceContentFor","parseAndSourceMap","showIgnoreListed","env","__NEXT_SHOW_IGNORE_LISTED","unparsedStack","String","errorName","idx","lastIndexOf","slice","unsourcemappedStack","parseStack","Map","sourceFrame","push","sourcemappedFrame","sourceMappedStack","dim","italic","sourceMapError","options","newError","AggregateError","errors","Error","key","Object","prototype","hasOwnProperty","call","errorConstructor","inspectSymbol","Symbol","for","prepareStackTrace","depth","inspect","workUnitAsyncStorage","exit","originalCustomInspect","defineProperty","value","enumerable","writable","format"],"mappings":"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","ignoreList":[0]}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists