mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 04:10:32 +00:00
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
// @ts-nocheck
|
|
import * as fs from 'fs';
|
|
import * as path from 'path';
|
|
|
|
/**
|
|
* Detarmines the module type of the given file path.
|
|
* @param {string} filepath
|
|
* @returns {boolean}
|
|
*/
|
|
async function isModuleType(filepath: string): boolean {
|
|
if (process.env.npm_package_json) {
|
|
const { promisify } = require('util');
|
|
const readFile = promisify(fs.readFile);
|
|
// npm >= 7.0.0
|
|
const packageJson = JSON.parse(
|
|
await readFile(process.env.npm_package_json, 'utf-8'),
|
|
);
|
|
if (packageJson.type === 'module') {
|
|
return true;
|
|
}
|
|
}
|
|
return process.env.npm_package_type === 'module' || filepath.endsWith('.mjs');
|
|
}
|
|
|
|
/**
|
|
* Imports content of the given file path.
|
|
* @param {string} filepath
|
|
* @returns
|
|
*/
|
|
export async function importFile(filepath: string): any {
|
|
return (await isModuleType(filepath))
|
|
? import(require('url').pathToFileURL(filepath))
|
|
: require(filepath);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {string} moduleName
|
|
* @param {string} seedsDirectory - The seeds directory path from config
|
|
* @returns
|
|
*/
|
|
export async function importWebpackSeedModule(
|
|
moduleName: string,
|
|
seedsDirectory: string,
|
|
): any {
|
|
// Convert the seeds directory to a relative path from this file's location
|
|
const utilsDir = __dirname;
|
|
const seedsDirAbsolute = path.isAbsolute(seedsDirectory)
|
|
? seedsDirectory
|
|
: path.resolve(process.cwd(), seedsDirectory);
|
|
|
|
// Get relative path from Utils.js location to seeds directory
|
|
const relativePath = path.relative(utilsDir, seedsDirAbsolute);
|
|
|
|
// Convert to forward slashes for import (works on all platforms)
|
|
const importPath = relativePath.split(path.sep).join('/');
|
|
|
|
// Construct the import path (add ./ prefix if not already present, or handle empty/current dir)
|
|
let finalPath = importPath;
|
|
if (!finalPath || finalPath === '.') {
|
|
finalPath = './';
|
|
} else if (!finalPath.startsWith('.')) {
|
|
finalPath = `./${finalPath}`;
|
|
}
|
|
|
|
return import(`${finalPath}/${moduleName}`);
|
|
}
|