UNPKG

dependency-cruiser-fork

Version:

Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.

68 lines (62 loc) 1.93 kB
const fs = require("fs"); const path = require("path"); const memoize = require("lodash/memoize"); const pathToPosix = require("../../utl/path-to-posix"); const determineDependencyTypes = require("./determine-dependency-types"); const isCore = require("./is-core"); const readPackageDeps = require("./get-manifest-dependencies"); const resolveHelpers = require("./resolve-helpers"); const fileExists = memoize((pFile) => { try { fs.accessSync(pFile, fs.R_OK); } catch (pError) { return false; } return true; }); module.exports = function resolveAMD( pModuleName, pBaseDirectory, pFileDirectory, pResolveOptions ) { // lookups: // - [x] could be relative in the end (implemented) // - [ ] require.config kerfuffle (command line, html, file, ...) // - [ ] maybe use mrjoelkemp/module-lookup-amd ? // - [ ] or https://github.com/jaredhanson/amd-resolve ? // - [x] funky plugins (json!wappie, ./screeching-cat!sabertooth) -> fixed in 'extract' const lProbablePath = pathToPosix( path.relative( pBaseDirectory, path.join(pFileDirectory, `${pModuleName}.js`) ) ); let lReturnValue = { resolved: fileExists(lProbablePath) ? lProbablePath : pModuleName, coreModule: Boolean(isCore(pModuleName)), followable: fileExists(lProbablePath), couldNotResolve: !Boolean(isCore(pModuleName)) && !fileExists(lProbablePath), }; // we might want to use resolve options instead of {} here return { ...lReturnValue, ...resolveHelpers.addLicenseAttribute(pModuleName, pBaseDirectory, {}), dependencyTypes: determineDependencyTypes( lReturnValue, pModuleName, readPackageDeps( pFileDirectory, pBaseDirectory, pResolveOptions.combinedDependencies ), pFileDirectory, pResolveOptions, pBaseDirectory ), }; }; module.exports.clearCache = () => { fileExists.cache.clear(); };