loadable-ts-transformer
Version:
TypeScript custom transformer for lodable-components SSR
25 lines (24 loc) • 1.49 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var typescript_1 = __importDefault(require("typescript"));
var util_1 = require("../util");
function getCallValue(callNode) {
var importArg = util_1.getImportArg(callNode);
if (typescript_1.default.isBinaryExpression(importArg) ||
typescript_1.default.isStringLiteral(importArg) ||
typescript_1.default.isTemplateLiteral(importArg) ||
typescript_1.default.isTemplateExpression(importArg)) {
return importArg;
}
throw new Error('invalid import argument');
}
function resolveProperty(callNode) {
var id = getCallValue(callNode);
return util_1.createObjectMethod('resolve', [], typescript_1.default.createBlock([
typescript_1.default.createReturn(typescript_1.default.createConditional(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier('require'), 'resolveWeak'), typescript_1.default.createCall(typescript_1.default.createPropertyAccess(typescript_1.default.createIdentifier('require'), 'resolveWeak'), undefined, [id]), typescript_1.default.createCall(typescript_1.default.createCall(typescript_1.default.createIdentifier('eval'), undefined, [typescript_1.default.createStringLiteral('require.resolve')]), undefined, [id]))),
], true));
}
exports.default = resolveProperty;