oc-template-react
Version:
33 lines (32 loc) • 1.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vm_1 = __importDefault(require("vm"));
const getJsFromUrl = ({ model, url, key, componentKey, globals, timeout = 5000, extractor, }) => async () => {
const controller = new AbortController();
const signal = controller.signal;
setTimeout(() => controller.abort(), timeout);
let jsAsText;
try {
const response = await fetch(url, { signal });
jsAsText = await response.text();
}
catch (err) {
throw {
status: err,
response: {
error: `request ${url} failed`,
},
};
}
const context = Object.assign({}, globals);
vm_1.default.runInNewContext(`
${jsAsText}
oc.components['${key}'](${JSON.stringify(model)});
`, context);
const cached = extractor(componentKey, context);
return cached;
};
exports.default = getJsFromUrl;