all files / src/ resolve-js.js

100% Statements 22/22
100% Branches 10/10
100% Functions 0/0
100% Lines 18/18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36                   12× 11× 10×     12×       12× 12× 12× 12× 12×        
import { readFileSync } from 'fs'
import { isRelative } from 'ethical-utility-path'
import {
    isAbsolutePackage,
    isRelativePackage,
    resolveRelative,
    resolveNodeModule,
    resolveNodeModuleFile,
    generateModuleID
} from 'ethical-utility-resolve-module-node'
 
const source = (path) => readFileSync(path, 'utf8')
 
const resolveJSPath = (request, parent) => {
    if (isAbsolutePackage(request)) return resolveNodeModule(request)
    if (isRelativePackage(request)) return resolveNodeModuleFile(request)
    if (isRelative(request)) return resolveRelative(request, parent)
    return request
}
 
const resolveAlias = (request, id) => {
    if (isAbsolutePackage(request)) {
        return id
    }
}
 
const resolveJSModule = (request, parent) => {
    const path = resolveJSPath(request, parent)
    const id = generateModuleID(path)
    const alias = resolveAlias(request, id)
    const key = ( alias ? request : id )
    return { key, alias, path, source }
}
 
export default resolveJSModule