@graphql-mesh/utils
Version:
60 lines (59 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultImportFn = defaultImportFn;
exports.handleImport = handleImport;
const tslib_1 = require("tslib");
const cross_helpers_1 = require("@graphql-mesh/cross-helpers");
function defaultImportFn(path) {
return Promise.resolve(`${path}`).then(s => tslib_1.__importStar(require(s))).then(module => {
let i = 0;
while (module?.default != null) {
if (i > 10 || module === module.default) {
break;
}
module = module.default;
i++;
}
if (typeof module === 'object' && module != null) {
const prototypeOfObject = Object.getPrototypeOf(module);
if (prototypeOfObject == null || prototypeOfObject === Object.prototype) {
const normalizedVal = {};
for (const key in module) {
normalizedVal[key] = module[key];
}
return normalizedVal;
}
}
return module;
}, e => {
if (e.code === 'ERR_REQUIRE_ESM') {
// eslint-disable-next-line no-new-func
return new Function(`return import(${JSON.stringify(path)})`)();
}
if (cross_helpers_1.path.isAbsolute(path) && !path.endsWith('.js') && !path.endsWith('.ts')) {
return defaultImportFn(`${path}.ts`);
}
throw e;
});
}
function handleImport(module) {
let i = 0;
while (module?.default != null) {
if (i > 10 || module === module.default) {
break;
}
module = module.default;
i++;
}
if (typeof module === 'object' && module != null) {
const prototypeOfObject = Object.getPrototypeOf(module);
if (prototypeOfObject == null || prototypeOfObject === Object.prototype) {
const normalizedVal = {};
for (const key in module) {
normalizedVal[key] = module[key];
}
return normalizedVal;
}
}
return module;
}