UNPKG

trifid-core

Version:
72 lines (71 loc) 1.78 kB
import { resolve, join } from 'node:path'; /** * Register a resolver. * * @param name Name of the resolver. * @param callback Callback to call when the resolver matches. * @param value Value to resolve. */ export const registerResolver = (name, callback, value) => { const split = value.split(':'); if (split.length === 1) { return value; } if (split[0] !== name) { return value; } split.shift(); return callback(split.join(':')); }; export const pathResolver = (base, path) => { const resolvedPath = resolve(path); if (resolvedPath === path) { return path; } return join(base, path); }; /** * Environment resolver */ export const envCallback = (name) => { if (process.env[name] === undefined) { // eslint-disable-next-line no-console console.warn(`WARNING: '${name}' environment variable is not set`); return ''; } return process.env[name]; }; export const envResolver = (value) => { return registerResolver('env', envCallback, value); }; /** * Current working directory resolver. */ export const cwdCallback = (name) => { return pathResolver(process.cwd(), name); }; export const cwdResolver = (value) => { return registerResolver('cwd', cwdCallback, value); }; /** * File resolver. * * @param base Base path to resolve from. */ export const fileCallback = (base) => { return (name) => { if (base === undefined) { base = process.cwd(); } return pathResolver(base, name); }; }; /** * Register the file resolver. * * @param value Value to resolve. * @param base Base path to resolve from. */ export const fileResolver = (value, base) => { return registerResolver('file', fileCallback(base), value); };