Duffer Derek

Current Path : /var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/next/dist/build/
Upload File :
Current File : /var/www/sitesecurity.bitkit.dk/httpdocs/node_modules/next/dist/build/collect-build-traces.js.map

{"version":3,"sources":["../../src/build/collect-build-traces.ts"],"sourcesContent":["// Import cpu-profile to start profiling early if enabled\nimport '../server/lib/cpu-profile'\nimport { Span } from '../trace'\nimport type { NextConfigComplete } from '../server/config-shared'\n\nimport {\n  TRACE_IGNORES,\n  type BuildTraceContext,\n  getFilesMapFromReasons,\n} from './webpack/plugins/next-trace-entrypoints-plugin'\n\nimport path from 'path'\nimport fs from 'fs/promises'\nimport { nonNullable } from '../lib/non-nullable'\nimport * as ciEnvironment from '../server/ci-info'\nimport debugOriginal from 'next/dist/compiled/debug'\nimport picomatch from 'next/dist/compiled/picomatch'\nimport { defaultOverrides } from '../server/require-hook'\nimport { nodeFileTrace } from 'next/dist/compiled/@vercel/nft'\nimport { normalizePagePath } from '../shared/lib/page-path/normalize-page-path'\nimport { normalizeAppPath } from '../shared/lib/router/utils/app-paths'\nimport isError from '../lib/is-error'\nimport type { NodeFileTraceReasons } from '@vercel/nft'\nimport type { RoutesUsingEdgeRuntime } from './utils'\n\nconst debug = debugOriginal('next:build:build-traces')\n\nexport const makeIgnoreFn = (root: string, ignores: string[]) => {\n  // pre compile the ignore globs\n  const isMatch = picomatch(ignores, {\n    contains: true,\n    dot: true,\n  })\n\n  return (pathname: string) => {\n    if (path.isAbsolute(pathname) && !pathname.startsWith(root)) {\n      return true\n    }\n\n    return isMatch(pathname)\n  }\n}\n\nfunction shouldIgnore(\n  file: string,\n  serverIgnoreFn: (file: string) => boolean,\n  reasons: NodeFileTraceReasons,\n  cachedIgnoreFiles: Map<string, boolean>,\n  children: Set<string> = new Set()\n) {\n  if (cachedIgnoreFiles.has(file)) {\n    return cachedIgnoreFiles.get(file)\n  }\n\n  if (serverIgnoreFn(file)) {\n    cachedIgnoreFiles.set(file, true)\n    return true\n  }\n  children.add(file)\n\n  const reason = reasons.get(file)\n  if (!reason || reason.parents.size === 0 || reason.type.includes('initial')) {\n    cachedIgnoreFiles.set(file, false)\n    return false\n  }\n\n  // if all parents are ignored the child file\n  // should be ignored as well\n  let allParentsIgnored = true\n\n  for (const parent of reason.parents.values()) {\n    if (!children.has(parent)) {\n      children.add(parent)\n      if (\n        !shouldIgnore(\n          parent,\n          serverIgnoreFn,\n          reasons,\n          cachedIgnoreFiles,\n          children\n        )\n      ) {\n        allParentsIgnored = false\n        break\n      }\n    }\n  }\n\n  cachedIgnoreFiles.set(file, allParentsIgnored)\n  return allParentsIgnored\n}\n\nexport async function collectBuildTraces({\n  dir,\n  config,\n  distDir,\n  edgeRuntimeRoutes,\n  staticPages,\n  nextBuildSpan = new Span({ name: 'build' }),\n  buildTraceContext,\n  outputFileTracingRoot,\n}: {\n  dir: string\n  distDir: string\n  staticPages: string[]\n  outputFileTracingRoot: string\n  // pageInfos is serialized when this function runs in a worker.\n  edgeRuntimeRoutes: RoutesUsingEdgeRuntime\n  nextBuildSpan?: Span\n  config: NextConfigComplete\n  buildTraceContext?: BuildTraceContext\n}) {\n  const startTime = Date.now()\n  debug('starting build traces')\n\n  const { outputFileTracingIncludes = {}, outputFileTracingExcludes = {} } =\n    config\n  const excludeGlobKeys = Object.keys(outputFileTracingExcludes)\n  const includeGlobKeys = Object.keys(outputFileTracingIncludes)\n\n  await nextBuildSpan\n    .traceChild('node-file-trace-build', {\n      isTurbotrace: 'false', // TODO(arlyon): remove this\n    })\n    .traceAsyncFn(async () => {\n      const nextServerTraceOutput = path.join(\n        distDir,\n        'next-server.js.nft.json'\n      )\n      const nextMinimalTraceOutput = path.join(\n        distDir,\n        'next-minimal-server.js.nft.json'\n      )\n      const root = outputFileTracingRoot\n\n      // Under standalone mode, we need to trace the extra IPC server and\n      // worker files.\n      const isStandalone = config.output === 'standalone'\n      const sharedEntriesSet = Object.keys(defaultOverrides).map((value) =>\n        require.resolve(value, {\n          paths: [require.resolve('next/dist/server/require-hook')],\n        })\n      )\n\n      const { cacheHandler, cacheHandlers } = config\n\n      // ensure we trace any dependencies needed for custom\n      // incremental cache handler\n      if (cacheHandler) {\n        sharedEntriesSet.push(\n          require.resolve(\n            path.isAbsolute(cacheHandler)\n              ? cacheHandler\n              : path.join(dir, cacheHandler)\n          )\n        )\n      }\n\n      // Under standalone mode, we need to ensure that the cache entry debug\n      // handler is traced so it can be copied. This is only used for testing,\n      // and is not used in production.\n      if (\n        process.env.__NEXT_TEST_MODE &&\n        process.env.NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS\n      ) {\n        sharedEntriesSet.push(\n          require.resolve(\n            path.isAbsolute(process.env.NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS)\n              ? process.env.NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS\n              : path.join(\n                  dir,\n                  process.env.NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS\n                )\n          )\n        )\n      }\n\n      if (cacheHandlers) {\n        for (const handlerPath of Object.values(cacheHandlers)) {\n          if (handlerPath) {\n            sharedEntriesSet.push(\n              require.resolve(\n                path.isAbsolute(handlerPath)\n                  ? handlerPath\n                  : path.join(dir, handlerPath)\n              )\n            )\n          }\n        }\n      }\n\n      const serverEntries = [\n        ...sharedEntriesSet,\n        ...(isStandalone\n          ? [\n              require.resolve('next/dist/server/lib/start-server'),\n              require.resolve('next/dist/server/next'),\n              require.resolve('next/dist/server/require-hook'),\n            ]\n          : []),\n        require.resolve('next/dist/server/next-server'),\n      ].filter(Boolean) as string[]\n\n      const minimalServerEntries = [\n        ...sharedEntriesSet,\n        require.resolve('next/dist/compiled/next-server/server.runtime.prod'),\n      ].filter(Boolean)\n\n      const additionalIgnores = new Set<string>()\n\n      for (const glob of excludeGlobKeys) {\n        if (picomatch(glob)('next-server')) {\n          outputFileTracingExcludes[glob].forEach((exclude) => {\n            additionalIgnores.add(exclude)\n          })\n        }\n      }\n\n      const sharedIgnores = [\n        '**/next/dist/compiled/next-server/**/*.dev.js',\n        ...(isStandalone ? [] : ['**/next/dist/compiled/jest-worker/**/*']),\n        '**/next/dist/compiled/webpack/*',\n        '**/node_modules/webpack5/**/*',\n        '**/next/dist/server/lib/route-resolver*',\n        'next/dist/compiled/semver/semver/**/*.js',\n\n        ...(ciEnvironment.hasNextSupport\n          ? [\n              // only ignore image-optimizer code when\n              // this is being handled outside of next-server\n              '**/next/dist/server/image-optimizer.js',\n            ]\n          : []),\n\n        ...(isStandalone ? [] : TRACE_IGNORES),\n        ...additionalIgnores,\n      ]\n\n      const sharedIgnoresFn = makeIgnoreFn(root, sharedIgnores)\n\n      const serverIgnores = [\n        ...sharedIgnores,\n        '**/node_modules/react{,-dom,-dom-server-turbopack}/**/*.development.js',\n        '**/*.d.ts',\n        '**/*.map',\n        '**/next/dist/pages/**/*',\n        ...(ciEnvironment.hasNextSupport\n          ? ['**/node_modules/sharp/**/*', '**/@img/sharp-libvips*/**/*']\n          : []),\n      ].filter(nonNullable)\n      const serverIgnoreFn = makeIgnoreFn(root, serverIgnores)\n\n      const minimalServerIgnores = [\n        ...serverIgnores,\n        '**/next/dist/compiled/edge-runtime/**/*',\n        '**/next/dist/server/web/sandbox/**/*',\n        '**/next/dist/server/post-process.js',\n      ]\n      const minimalServerIgnoreFn = makeIgnoreFn(root, minimalServerIgnores)\n\n      const routesIgnores = [\n        ...sharedIgnores,\n        // server chunks are provided via next-trace-entrypoints-plugin plugin\n        // as otherwise all chunks are traced here and included for all pages\n        // whether they are needed or not\n        '**/.next/server/chunks/**',\n        '**/next/dist/server/post-process.js',\n      ].filter(nonNullable)\n\n      const routeIgnoreFn = makeIgnoreFn(root, routesIgnores)\n\n      const serverTracedFiles = new Set<string>()\n      const minimalServerTracedFiles = new Set<string>()\n\n      function addToTracedFiles(base: string, file: string, dest: Set<string>) {\n        dest.add(\n          path.relative(distDir, path.join(base, file)).replace(/\\\\/g, '/')\n        )\n      }\n\n      if (isStandalone) {\n        addToTracedFiles(\n          '',\n          require.resolve('next/dist/compiled/jest-worker/processChild'),\n          serverTracedFiles\n        )\n        addToTracedFiles(\n          '',\n          require.resolve('next/dist/compiled/jest-worker/threadChild'),\n          serverTracedFiles\n        )\n      }\n\n      {\n        const chunksToTrace: string[] = [\n          ...(buildTraceContext?.chunksTrace?.action.input || []),\n          ...serverEntries,\n          ...minimalServerEntries,\n        ]\n        const result = await nodeFileTrace(chunksToTrace, {\n          base: outputFileTracingRoot,\n          processCwd: dir,\n          mixedModules: true,\n          async readFile(p) {\n            try {\n              return await fs.readFile(p, 'utf8')\n            } catch (e) {\n              if (isError(e) && (e.code === 'ENOENT' || e.code === 'EISDIR')) {\n                // since tracing runs in parallel with static generation server\n                // files might be removed from that step so tolerate ENOENT\n                // errors gracefully\n                return ''\n              }\n              throw e\n            }\n          },\n          async readlink(p) {\n            try {\n              return await fs.readlink(p)\n            } catch (e) {\n              if (\n                isError(e) &&\n                (e.code === 'EINVAL' ||\n                  e.code === 'ENOENT' ||\n                  e.code === 'UNKNOWN')\n              ) {\n                return null\n              }\n              throw e\n            }\n          },\n          async stat(p) {\n            try {\n              return await fs.stat(p)\n            } catch (e) {\n              if (isError(e) && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) {\n                return null\n              }\n              throw e\n            }\n          },\n          // handle shared ignores at top-level as it\n          // avoids over-tracing when we don't need to\n          // and speeds up total trace time\n          ignore(p) {\n            if (sharedIgnoresFn(p)) {\n              return true\n            }\n\n            // if a chunk is attempting to be traced that isn't\n            // in our initial list we need to ignore it to prevent\n            // over tracing as webpack needs to be the source of\n            // truth for which chunks should be included for each entry\n            if (\n              p.includes('.next/server/chunks') &&\n              !chunksToTrace.includes(path.join(outputFileTracingRoot, p))\n            ) {\n              return true\n            }\n            return false\n          },\n        })\n        const reasons = result.reasons\n        const fileList = result.fileList\n        for (const file of result.esmFileList) {\n          fileList.add(file)\n        }\n\n        const parentFilesMap = getFilesMapFromReasons(fileList, reasons)\n        const cachedLookupIgnore = new Map<string, boolean>()\n        const cachedLookupIgnoreMinimal = new Map<string, boolean>()\n\n        for (const [entries, tracedFiles] of [\n          [serverEntries, serverTracedFiles],\n          [minimalServerEntries, minimalServerTracedFiles],\n        ] as Array<[string[], Set<string>]>) {\n          for (const file of entries) {\n            const curFiles = [\n              ...(parentFilesMap\n                .get(path.relative(outputFileTracingRoot, file))\n                ?.keys() || []),\n            ]\n            tracedFiles.add(path.relative(distDir, file).replace(/\\\\/g, '/'))\n\n            for (const curFile of curFiles || []) {\n              const filePath = path.join(outputFileTracingRoot, curFile)\n\n              if (\n                !shouldIgnore(\n                  curFile,\n                  tracedFiles === minimalServerTracedFiles\n                    ? minimalServerIgnoreFn\n                    : serverIgnoreFn,\n                  reasons,\n                  tracedFiles === minimalServerTracedFiles\n                    ? cachedLookupIgnoreMinimal\n                    : cachedLookupIgnore\n                )\n              ) {\n                tracedFiles.add(\n                  path.relative(distDir, filePath).replace(/\\\\/g, '/')\n                )\n              }\n            }\n          }\n        }\n\n        const { entryNameFilesMap } = buildTraceContext?.chunksTrace || {}\n\n        const cachedLookupIgnoreRoutes = new Map<string, boolean>()\n\n        await Promise.all(\n          [\n            ...(entryNameFilesMap\n              ? Object.entries(entryNameFilesMap)\n              : new Map()),\n          ].map(async ([entryName, entryNameFiles]) => {\n            const isApp = entryName.startsWith('app/')\n            const isPages = entryName.startsWith('pages/')\n            let route = entryName\n            if (isApp) {\n              route = normalizeAppPath(route.substring('app'.length))\n            }\n            if (isPages) {\n              route = normalizePagePath(route.substring('pages'.length))\n            }\n\n            // we don't need to trace for automatically statically optimized\n            // pages as they don't have server bundles, note there is\n            // the caveat with flying shuttle mode as it needs this for\n            // detecting changed entries\n            if (staticPages.includes(route)) {\n              return\n            }\n            const entryOutputPath = path.join(\n              distDir,\n              'server',\n              `${entryName}.js`\n            )\n            const traceOutputPath = `${entryOutputPath}.nft.json`\n            const existingTrace = JSON.parse(\n              await fs.readFile(traceOutputPath, 'utf8')\n            ) as {\n              version: number\n              files: string[]\n              fileHashes: Record<string, string>\n            }\n            const traceOutputDir = path.dirname(traceOutputPath)\n            const curTracedFiles = new Set<string>()\n\n            for (const file of [...entryNameFiles, entryOutputPath]) {\n              const curFiles = [\n                ...(parentFilesMap\n                  .get(path.relative(outputFileTracingRoot, file))\n                  ?.keys() || []),\n              ]\n              for (const curFile of curFiles || []) {\n                if (\n                  !shouldIgnore(\n                    curFile,\n                    routeIgnoreFn,\n                    reasons,\n                    cachedLookupIgnoreRoutes\n                  )\n                ) {\n                  const filePath = path.join(outputFileTracingRoot, curFile)\n                  const outputFile = path\n                    .relative(traceOutputDir, filePath)\n                    .replace(/\\\\/g, '/')\n                  curTracedFiles.add(outputFile)\n                }\n              }\n            }\n\n            for (const file of existingTrace.files || []) {\n              curTracedFiles.add(file)\n            }\n\n            await fs.writeFile(\n              traceOutputPath,\n              JSON.stringify({\n                ...existingTrace,\n                files: [...curTracedFiles].sort(),\n              })\n            )\n          })\n        )\n      }\n\n      const moduleTypes = ['app-page', 'pages']\n\n      for (const type of moduleTypes) {\n        const modulePath = require.resolve(\n          `next/dist/server/route-modules/${type}/module.compiled`\n        )\n        const relativeModulePath = path.relative(root, modulePath)\n\n        const contextDir = path.join(\n          path.dirname(modulePath),\n          'vendored',\n          'contexts'\n        )\n\n        for (const item of await fs.readdir(contextDir)) {\n          const itemPath = path.relative(root, path.join(contextDir, item))\n          if (!serverIgnoreFn(itemPath)) {\n            addToTracedFiles(root, itemPath, serverTracedFiles)\n            addToTracedFiles(root, itemPath, minimalServerTracedFiles)\n          }\n        }\n        addToTracedFiles(root, relativeModulePath, serverTracedFiles)\n        addToTracedFiles(root, relativeModulePath, minimalServerTracedFiles)\n      }\n\n      const serverTracedFilesSorted = Array.from(serverTracedFiles)\n      serverTracedFilesSorted.sort()\n      const minimalServerTracedFilesSorted = Array.from(\n        minimalServerTracedFiles\n      )\n      minimalServerTracedFilesSorted.sort()\n\n      await Promise.all([\n        fs.writeFile(\n          nextServerTraceOutput,\n          JSON.stringify({\n            version: 1,\n            files: serverTracedFilesSorted,\n          } as {\n            version: number\n            files: string[]\n          })\n        ),\n        fs.writeFile(\n          nextMinimalTraceOutput,\n          JSON.stringify({\n            version: 1,\n            files: minimalServerTracedFilesSorted,\n          } as {\n            version: number\n            files: string[]\n          })\n        ),\n      ])\n    })\n\n  // apply outputFileTracingIncludes/outputFileTracingExcludes after runTurbotrace\n  const includeExcludeSpan = nextBuildSpan.traceChild('apply-include-excludes')\n  await includeExcludeSpan.traceAsyncFn(async () => {\n    const globOrig =\n      require('next/dist/compiled/glob') as typeof import('next/dist/compiled/glob')\n    const glob = (pattern: string): Promise<string[]> => {\n      return new Promise((resolve, reject) => {\n        globOrig(\n          pattern,\n          { cwd: dir, nodir: true, dot: true },\n          (err, files) => {\n            if (err) {\n              return reject(err)\n            }\n            resolve(files)\n          }\n        )\n      })\n    }\n\n    const { entryNameFilesMap } = buildTraceContext?.chunksTrace || {}\n\n    await Promise.all(\n      [\n        ...(entryNameFilesMap ? Object.entries(entryNameFilesMap) : new Map()),\n      ].map(async ([entryName]) => {\n        const isApp = entryName.startsWith('app/')\n        const isPages = entryName.startsWith('pages/')\n        let route = entryName\n        if (isApp) {\n          route = normalizeAppPath(entryName)\n        }\n        if (isPages) {\n          route = normalizePagePath(entryName)\n        }\n\n        if (staticPages.includes(route)) {\n          return\n        }\n\n        // edge routes have no trace files\n        if (edgeRuntimeRoutes.hasOwnProperty(route)) {\n          return\n        }\n\n        const combinedIncludes = new Set<string>()\n        const combinedExcludes = new Set<string>()\n        for (const curGlob of includeGlobKeys) {\n          const isMatch = picomatch(curGlob, { dot: true, contains: true })\n          if (isMatch(route)) {\n            for (const include of outputFileTracingIncludes[curGlob]) {\n              combinedIncludes.add(include.replace(/\\\\/g, '/'))\n            }\n          }\n        }\n\n        for (const curGlob of excludeGlobKeys) {\n          const isMatch = picomatch(curGlob, { dot: true, contains: true })\n          if (isMatch(route)) {\n            for (const exclude of outputFileTracingExcludes[curGlob]) {\n              combinedExcludes.add(exclude)\n            }\n          }\n        }\n\n        if (!combinedIncludes?.size && !combinedExcludes?.size) {\n          return\n        }\n\n        const traceFile = path.join(\n          distDir,\n          `server`,\n          `${entryName}.js.nft.json`\n        )\n        const pageDir = path.dirname(traceFile)\n        const traceContent = JSON.parse(await fs.readFile(traceFile, 'utf8'))\n        const includes: string[] = []\n        const resolvedTraceIncludes = new Map<string, string[]>()\n\n        if (combinedIncludes?.size) {\n          await Promise.all(\n            [...combinedIncludes].map(async (includeGlob) => {\n              const results = await glob(includeGlob)\n              const resolvedInclude = resolvedTraceIncludes.get(\n                includeGlob\n              ) || [\n                ...results.map((file) => {\n                  return path.relative(pageDir, path.join(dir, file))\n                }),\n              ]\n              includes.push(...resolvedInclude)\n              resolvedTraceIncludes.set(includeGlob, resolvedInclude)\n            })\n          )\n        }\n        const combined = new Set([...traceContent.files, ...includes])\n\n        if (combinedExcludes?.size) {\n          const resolvedGlobs = [...combinedExcludes].map((exclude) =>\n            path.join(dir, exclude)\n          )\n\n          // pre compile before forEach\n          const isMatch = picomatch(resolvedGlobs, {\n            dot: true,\n            contains: true,\n          })\n\n          combined.forEach((file) => {\n            if (isMatch(path.join(pageDir, file))) {\n              combined.delete(file)\n            }\n          })\n        }\n\n        // overwrite trace file with custom includes/excludes\n        await fs.writeFile(\n          traceFile,\n          JSON.stringify({\n            version: traceContent.version,\n            files: [...combined],\n          })\n        )\n      })\n    )\n  })\n\n  debug(`finished build tracing ${Date.now() - startTime}ms`)\n}\n"],"names":["collectBuildTraces","makeIgnoreFn","debug","debugOriginal","root","ignores","isMatch","picomatch","contains","dot","pathname","path","isAbsolute","startsWith","shouldIgnore","file","serverIgnoreFn","reasons","cachedIgnoreFiles","children","Set","has","get","set","add","reason","parents","size","type","includes","allParentsIgnored","parent","values","dir","config","distDir","edgeRuntimeRoutes","staticPages","nextBuildSpan","Span","name","buildTraceContext","outputFileTracingRoot","startTime","Date","now","outputFileTracingIncludes","outputFileTracingExcludes","excludeGlobKeys","Object","keys","includeGlobKeys","traceChild","isTurbotrace","traceAsyncFn","nextServerTraceOutput","join","nextMinimalTraceOutput","isStandalone","output","sharedEntriesSet","defaultOverrides","map","value","require","resolve","paths","cacheHandler","cacheHandlers","push","process","env","__NEXT_TEST_MODE","NEXT_PRIVATE_DEBUG_CACHE_ENTRY_HANDLERS","handlerPath","serverEntries","filter","Boolean","minimalServerEntries","additionalIgnores","glob","forEach","exclude","sharedIgnores","ciEnvironment","hasNextSupport","TRACE_IGNORES","sharedIgnoresFn","serverIgnores","nonNullable","minimalServerIgnores","minimalServerIgnoreFn","routesIgnores","routeIgnoreFn","serverTracedFiles","minimalServerTracedFiles","addToTracedFiles","base","dest","relative","replace","chunksToTrace","chunksTrace","action","input","result","nodeFileTrace","processCwd","mixedModules","readFile","p","fs","e","isError","code","readlink","stat","ignore","fileList","esmFileList","parentFilesMap","getFilesMapFromReasons","cachedLookupIgnore","Map","cachedLookupIgnoreMinimal","entries","tracedFiles","curFiles","curFile","filePath","entryNameFilesMap","cachedLookupIgnoreRoutes","Promise","all","entryName","entryNameFiles","isApp","isPages","route","normalizeAppPath","substring","length","normalizePagePath","entryOutputPath","traceOutputPath","existingTrace","JSON","parse","traceOutputDir","dirname","curTracedFiles","outputFile","files","writeFile","stringify","sort","moduleTypes","modulePath","relativeModulePath","contextDir","item","readdir","itemPath","serverTracedFilesSorted","Array","from","minimalServerTracedFilesSorted","version","includeExcludeSpan","globOrig","pattern","reject","cwd","nodir","err","hasOwnProperty","combinedIncludes","combinedExcludes","curGlob","include","traceFile","pageDir","traceContent","resolvedTraceIncludes","includeGlob","results","resolvedInclude","combined","resolvedGlobs","delete"],"mappings":"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","ignoreList":[0]}

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