UNPKG

@ayonli/jsext

Version:

A JavaScript extension package for building strong and modern applications.

80 lines (76 loc) 2.5 kB
'use strict'; var env = require('../env.js'); var path = require('../path.js'); var string = require('../string.js'); require('../fs.js'); var module_web = require('../module/web.js'); var module_util = require('../module/util.js'); var path_util = require('../path/util.js'); const moduleCache = new Map(); function sanitizeModuleId(id, strict = false) { let _id = ""; if (typeof id === "function") { let str = id.toString(); let offset = "import(".length; let start = str.lastIndexOf("import("); if (start === -1) { offset = "require(".length; start = str.lastIndexOf("require("); } if (start === -1) { throw new TypeError("The given script is not a dynamic import expression."); } else { start += offset; const end = str.indexOf(")", start); _id = string.trim(str.slice(start, end), ` '"\'`); } } else { _id = id; } if (env.isNode && path_util.isFsPath(_id) && !/\.[cm]?(js|ts|)x?$/.test(_id)) { _id += ".js"; // In Node.js, if no suffix is provided, it fallback to .js } if (!strict && !path_util.isAbsolute(_id)) { _id = "./" + _id; } return _id; } async function resolveModule(modId, baseUrl = undefined) { let module; if (env.isNode || env.isBun) { const path$1 = baseUrl ? path.toFsPath(new URL(modId, baseUrl).href) : modId; module = await import(path$1); } else { const url = new URL(modId, baseUrl).href; module = moduleCache.get(url); if (!module) { if (env.isDeno) { module = await import(url); moduleCache.set(url, module); } else { try { module = await import(url); moduleCache.set(url, module); } catch (err) { if (String(err).includes("Failed")) { const _url = await module_util.getObjectURL(url); module = await import(_url); moduleCache.set(url, module); } else { throw err; } } } } } return module_web.interop(module); } exports.resolveModule = resolveModule; exports.sanitizeModuleId = sanitizeModuleId; //# sourceMappingURL=module.js.map