@tapcart/app-studio-utils
Version:
A utility library for Tapcart's App Studio
30 lines • 1.41 kB
JavaScript
// Block dependencies - can make dynamic with async imports but this will cause a performance hit
import React from "react";
import * as TapcartMobileComponents from "@tapcart/mobile-components";
import jsxRuntime from "react/jsx-runtime";
// This function links the dependencies of the dynamic module import with the config
// defined in component-config.js
export const createRequires = (dependencies) => (name) => {
const _dependencies = dependencies || {};
if (!(name in _dependencies)) {
throw new Error(`Could not require '${name}'. '${name}' does not exist in dependencies.`);
}
// @ts-ignore
return _dependencies[name];
};
const dependencies = {
react: React,
"react/jsx-runtime": jsxRuntime,
"@tapcart/mobile-components": TapcartMobileComponents,
};
const evalCode = (code, appStudioComponents, scopeOverrides) => {
const _requires = createRequires(Object.assign(Object.assign({}, dependencies), { "@tapcart/app-studio-components": appStudioComponents }));
const exports = {};
const _module = { exports };
// Spread keys and values of scopeOverrides as arguments to the function
const func = new Function("require", "module", "exports", ...Object.keys(scopeOverrides), code);
func(_requires, _module, exports, ...Object.values(scopeOverrides));
return _module.exports;
};
export default evalCode;
//# sourceMappingURL=eval.js.map