"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.load = exports.resolveSync = void 0; const fs = __importStar(require("fs")); const globby_1 = require("globby"); const path_1 = require("path"); const gather_deps_1 = require("./gather-deps"); const file_1 = require("./file"); const enhanced_resolve_1 = require("enhanced-resolve"); const { readFileSync, lstatSync, statSync, realpathSync } = fs; const supportedJsExtensions = ['.js', '.cjs', '.mjs']; const fileSystem = new enhanced_resolve_1.CachedInputFileSystem(fs, 4000), esmResolver = enhanced_resolve_1.ResolverFactory.createResolver({ extensions: [], conditionNames: ['node', 'import', 'require', 'default'], useSyncFileSystemCalls: true, symlinks: false, fileSystem, }), cjsResolver = enhanced_resolve_1.ResolverFactory.createResolver({ extensions: ['.js', '.cjs', '.mjs', '.json', '.node'], conditionNames: ['node', 'require', 'default'], useSyncFileSystemCalls: true, symlinks: false, fileSystem, }), defaultOptions = { loadContent: true, expand: 'none', isEntry: false, type: 'commonjs', }; function stripControlCharacters(path) { return path && path.replace(/[\u0000-\u001F\u007F-\u009F]/g, ''); } const emptyContext = {}, emptyResolveContext = {}; function resolveSync(from, request, resolver = cjsResolver) { const result = { absPath: '', pkgPath: '', pkg: null, warning: '', }; resolver.resolve(emptyContext, from, request, emptyResolveContext, (err, path, data) => { if (err) { result.warning = err.message; return; } result.absPath = stripControlCharacters(path); result.pkgPath = stripControlCharacters(data.descriptionFilePath); result.pkg = data.descriptionFileData; return; }); return result; } exports.resolveSync = resolveSync; async function expand(file, fileDir, baseDir, globs) { const files = globby_1.sync(globs, { cwd: baseDir, followSymbolicLinks: false, }); files .sort() //glob search is width first and not deterministic .map((dep) => file_1.ensureDottedRelative(fileDir, path_1.join(baseDir, dep))) .filter((relDep) => file.absPath !== path_1.join(baseDir, relDep)) .forEach((relDep) => { file.deps[relDep] = file.deps[relDep] || null; }); const currentDeps = Object.keys(file.deps); file.package && file.package.dependencies && Object.keys(file.package.dependencies || {}).forEach((dependency) => { if (!currentDeps.some((curDep) => curDep.startsWith(dependency))) { file.deps[dependency] = file.deps[dependency] || null; } }); } function load(workingDirectory, request, options = defaultOptions) { var _a; const resolver = options.type === 'module' ? esmResolver : cjsResolver, { absPath, pkg, pkgPath, warning } = resolveSync(workingDirectory, request, resolver); if (!absPath) { return { warning: warning }; } const file = file_1.createFile(absPath), isJs = options.isEntry || supportedJsExtensions.some((x) => absPath.endsWith(x)); file.absPath = absPath; if (isJs || absPath.endsWith('json')) { file.contents = readFileSync(absPath, 'utf-8'); } if (isJs) { try { const isModule = absPath.endsWith('.mjs') || !file_1.isScript(file.contents); const parseResult = gather_deps_1.gatherDependencies(file.contents, isModule); Object.assign(file.deps, parseResult.deps); file.moduleType = isModule ? 'module' : 'commonjs'; file.variableImports = parseResult.variable; } catch (e) { return { warning: `Error parsing file: "${file.absPath}"\n${e.stack}` }; } } const fileDir = path_1.dirname(file.absPath), expandVariable = Boolean(options.expand === 'variable' && file.variableImports); if (file_1.isNodeModule(request) && pkg && pkgPath) { file.package = pkg; file.deps[file_1.ensureDottedRelative(fileDir, pkgPath)] = null; const pkgDir = (file.moduleRoot = path_1.dirname(pkgPath)), expandAll = options.expand === 'all'; if (expandVariable || expandAll) { expand(file, fileDir, pkgDir, file_1.nodeModuleGlobs(file)); file.contextExpanded = true; } if (file_1.extraGlobs(file).length) { expand(file, fileDir, pkgDir, file_1.extraGlobs(file)); } } else if (expandVariable && ((_a = options.context) === null || _a === void 0 ? void 0 : _a.moduleRoot) && !options.context.expanded) { expand(file, fileDir, options.context.moduleRoot, file_1.nodeModuleGlobs({ package: { files: options.context.globs } })); file.contextExpanded = true; } if (!options.loadContent) { file.contents = null; } const stats = lstatSync(file.absPath); if (stats.isSymbolicLink()) { const path = realpathSync(file.absPath); const absStat = statSync(file.absPath); file.realPath = path; file.realSize = absStat.size; } file.size = stats.size; return file; } exports.load = load; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbm9kZS1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF3QjtBQUN4QixtQ0FBcUM7QUFDckMsK0JBQW9DO0FBQ3BDLCtDQUFrRDtBQUNsRCxpQ0FTZTtBQUNmLHVEQUF5RTtBQUV6RSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFBO0FBQzlELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0FBTXJELE1BQU0sVUFBVSxHQUFHLElBQUksd0NBQXFCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBUSxFQUMzRCxXQUFXLEdBQUcsa0NBQWUsQ0FBQyxjQUFjLENBQUM7SUFDM0MsVUFBVSxFQUFFLEVBQUU7SUFDZCxjQUFjLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDeEQsc0JBQXNCLEVBQUUsSUFBSTtJQUM1QixRQUFRLEVBQUUsS0FBSztJQUNmLFVBQVU7Q0FDWCxDQUFhLEVBQ2QsV0FBVyxHQUFHLGtDQUFlLENBQUMsY0FBYyxDQUFDO0lBQzNDLFVBQVUsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDckQsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDOUMsc0JBQXNCLEVBQUUsSUFBSTtJQUM1QixRQUFRLEVBQUUsS0FBSztJQUNmLFVBQVU7Q0FDWCxDQUFhLEVBQ2QsY0FBYyxHQUE2QjtJQUN6QyxXQUFXLEVBQUUsSUFBSTtJQUNqQixNQUFNLEVBQUUsTUFBTTtJQUNkLE9BQU8sRUFBRSxLQUFLO0lBQ2QsSUFBSSxFQUFFLFVB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