nsmockup
Version:
Test your Suitescripts before deploying to NetSuite
37 lines (32 loc) • 1.13 kB
JavaScript
'use strict';
var vmSim = require('../../vm-sim');
exports.exec = (req, res) => {
let db = global.$db,
id = req.query.script,
script = db.object.__scripts[id - 1];
if (!script) {
res.status(500).send('SSS_INVALID_INTERNAL_ID');
} else {
let methods,
method = req.method.toLowerCase();
if (script.type === 'suitelet') {
methods = ['get', 'post'];
}
if (!methods || !~methods.indexOf(method)) {
res.status(500).send('SSS_INVALID_TYPE_SCRIPT');
}
let execFunc;
if (script.functions && method) {
execFunc = script.functions[method];
} else {
execFunc = script.function;
}
// load libs in specific context
let context = vmSim.importSuiteScript(script);
// init request and response variables in context
context.$NS_REQ = new context.nlobjRequest(req);
context.$NS_RES = new context.nlobjResponse(res);
// execute script on his context
vmSim.evalContext(execFunc + '($NS_REQ, $NS_RES)', context);
}
};