/
opt
/
canhelp
/
node_modules
/
next
/
dist
/
esm
/
build
/
webpack
/
loaders
/
/opt/canhelp/node_modules/next/dist/esm/build/webpack/loaders
mkdir
upload
Name
Size
Mode
Actions
css-loader/
-
0755
rm
devtool/
-
0755
rm
lightningcss-loader/
-
0755
rm
metadata/
-
0755
rm
next-app-loader/
-
0755
rm
next-edge-app-route-loader/
-
0755
rm
next-edge-ssr-loader/
-
0755
rm
next-flight-loader/
-
0755
rm
next-font-loader/
-
0755
rm
next-image-loader/
-
0755
rm
next-route-loader/
-
0755
rm
next-style-loader/
-
0755
rm
postcss-loader/
-
0755
rm
resolve-url-loader/
-
0755
rm
empty-loader.js
114
0644
edit
dl
rm
empty-loader.js.map
374
0644
edit
dl
rm
error-loader.js
1028
0644
edit
dl
rm
error-loader.js.map
1673
0644
edit
dl
rm
get-module-build-info.js
276
0644
edit
dl
rm
get-module-build-info.js.map
1932
0644
edit
dl
rm
modularize-import-loader.js
881
0644
edit
dl
rm
modularize-import-loader.js.map
1703
0644
edit
dl
rm
next-barrel-loader.js
9964
0644
edit
dl
rm
next-barrel-loader.js.map
15507
0644
edit
dl
rm
next-client-pages-loader.js
1007
0644
edit
dl
rm
next-client-pages-loader.js.map
1904
0644
edit
dl
rm
next-edge-function-loader.js
1650
0644
edit
dl
rm
next-edge-function-loader.js.map
3216
0644
edit
dl
rm
next-error-browser-binary-loader.js
505
0644
edit
dl
rm
next-error-browser-binary-loader.js.map
913
0644
edit
dl
rm
next-flight-action-entry-loader.js
766
0644
edit
dl
rm
next-flight-action-entry-loader.js.map
1941
0644
edit
dl
rm
next-flight-client-entry-loader.js
1760
0644
edit
dl
rm
next-flight-client-entry-loader.js.map
4145
0644
edit
dl
rm
next-flight-client-module-loader.js
1982
0644
edit
dl
rm
next-flight-client-module-loader.js.map
3436
0644
edit
dl
rm
next-flight-css-loader.js
1705
0644
edit
dl
rm
next-flight-css-loader.js.map
3052
0644
edit
dl
rm
next-flight-server-reference-proxy-loader.js
1128
0644
edit
dl
rm
next-flight-server-reference-proxy-loader.js.map
1869
0644
edit
dl
rm
next-invalid-import-error-loader.js
362
0644
edit
dl
rm
next-invalid-import-error-loader.js.map
721
0644
edit
dl
rm
next-metadata-image-loader.js
5582
0644
edit
dl
rm
next-metadata-image-loader.js.map
9774
0644
edit
dl
rm
next-metadata-route-loader.js
8714
0644
edit
dl
rm
next-metadata-route-loader.js.map
13696
0644
edit
dl
rm
next-middleware-asset-loader.js
718
0644
edit
dl
rm
next-middleware-asset-loader.js.map
1515
0644
edit
dl
rm
next-middleware-loader.js
1560
0644
edit
dl
rm
next-middleware-loader.js.map
3585
0644
edit
dl
rm
next-middleware-wasm-loader.js
661
0644
edit
dl
rm
next-middleware-wasm-loader.js.map
1468
0644
edit
dl
rm
next-root-params-loader.js
4862
0644
edit
dl
rm
next-root-params-loader.js.map
8558
0644
edit
dl
rm
next-swc-loader.js
9073
0644
edit
dl
rm
next-swc-loader.js.map
15038
0644
edit
dl
rm
utils.js
2963
0644
edit
dl
rm
utils.js.map
5821
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/next/dist/esm/build/webpack/loaders/next-root-params-loader.js
(4862B)
import * as path from 'node:path'; import * as fs from 'node:fs/promises'; import { normalizeAppPath } from '../../../shared/lib/router/utils/app-paths'; import { ensureLeadingSlash } from '../../../shared/lib/page-path/ensure-leading-slash'; import { getSegmentParam } from '../../../server/app-render/get-segment-param'; const rootParamsLoader = async function() { const { appDir, pageExtensions } = this.getOptions(); const allRootParams = await collectRootParamsFromFileSystem({ appDir, pageExtensions }); // invalidate the result whenever a file/directory is added/removed inside the app dir or its subdirectories, // because that might mean that a root layout has been moved. this.addContextDependency(appDir); // If there's no root params, there's nothing to generate. if (allRootParams.size === 0) { return 'export {}'; } // Generate a getter for each root param we found. const sortedRootParamNames = Array.from(allRootParams).sort(); const content = [ `import { getRootParam } from 'next/dist/server/request/root-params';`, ...sortedRootParamNames.map((paramName)=>{ return `export function ${paramName}() { return getRootParam('${paramName}'); }`; }) ].join('\n'); return content; }; export default rootParamsLoader; async function collectRootParamsFromFileSystem(opts) { return collectRootParams({ appDir: opts.appDir, rootLayoutFilePaths: await findRootLayouts(opts) }); } function collectRootParams({ rootLayoutFilePaths, appDir }) { const allRootParams = new Set(); for (const rootLayoutFilePath of rootLayoutFilePaths){ const params = getParamsFromLayoutFilePath({ appDir, layoutFilePath: rootLayoutFilePath }); for (const param of params){ allRootParams.add(param); } } return allRootParams; } async function findRootLayouts({ appDir, pageExtensions }) { const layoutFilenameRegex = new RegExp(`^layout\\.(?:${pageExtensions.join('|')})$`); async function visit(directory) { let dir; try { dir = await fs.readdir(directory, { withFileTypes: true }); } catch (err) { // If the directory was removed before we managed to read it, just ignore it. if (err && typeof err === 'object' && 'code' in err && err.code === 'ENOENT') { return []; } throw err; } const subdirectories = []; for (const entry of dir){ if (entry.isDirectory()) { // Directories that start with an underscore are excluded from routing, so we shouldn't look for layouts inside. if (entry.name[0] === '_') { continue; } // Parallel routes cannot occur above a layout, so they can't contain a root layout. if (entry.name[0] === '@') { continue; } const absolutePathname = path.join(directory, entry.name); subdirectories.push(absolutePathname); } else if (entry.isFile()) { if (layoutFilenameRegex.test(entry.name)) { // We found a root layout, so we're not going to recurse into subdirectories, // meaning that we can skip the rest of the entries. // Note that we don't need to track any of the subdirectories as dependencies -- // changes in the subdirectories will only become relevant if this root layout is (re)moved, // in which case the loader will re-run, traverse deeper (because it no longer stops at this root layout) // and then track those directories as needed. const rootLayoutPath = path.join(directory, entry.name); return [ rootLayoutPath ]; } } } if (subdirectories.length === 0) { return []; } const subdirectoryRootLayouts = await Promise.all(subdirectories.map((subdirectory)=>visit(subdirectory))); return subdirectoryRootLayouts.flat(1); } return visit(appDir); } function getParamsFromLayoutFilePath({ appDir, layoutFilePath }) { const rootLayoutPath = normalizeAppPath(ensureLeadingSlash(path.dirname(path.relative(appDir, layoutFilePath)))); const segments = rootLayoutPath.split('/'); const paramNames = []; for (const segment of segments){ const param = getSegmentParam(segment); if (param !== null) { paramNames.push(param.param); } } return paramNames; } //# sourceMappingURL=next-root-params-loader.js.map
Save
cmd:
run