/**
 * Minified by jsDelivr using Terser v5.19.2.
 * Original file: /npm/jalangi2@0.2.6/src/js/utils/api.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
require("./../Constants.js"),require("./../Config.js"),require("./../instrument/astUtil.js"),require("./../instrument/esnstrument.js"),acorn=require("acorn"),esotope=require("esotope");var path=require("path"),temp=require("temp"),Q=require("q"),instDir=require("./../commands/instrument"),cp=require("child_process");function getInstOutputFile(n){return n?path.resolve(n):temp.path({suffix:".js"})}function setupConfig(n){var t=J$.Config;t.INSTR_READ=n.instrRead,t.INSTR_WRITE=n.instrWrite,t.INSTR_GETFIELD=n.instrGetfield,t.INSTR_PUTFIELD=n.instrPutfield,t.INSTR_BINARY=n.instrBinary,t.INSTR_PROPERTY_BINARY_ASSIGNMENT=n.instrPropBinaryAssignment,t.INSTR_UNARY=n.instrUnary,t.INSTR_LITERAL=n.instrLiteral,t.INSTR_CONDITIONAL=n.instrConditional}function clearConfig(){var n=J$.Config;n.INSTR_READ=null,n.INSTR_WRITE=null,n.INSTR_GETFIELD=null,n.INSTR_PUTFIELD=null,n.INSTR_BINARY=null,n.INSTR_PROPERTY_BINARY_ASSIGNMENT=null,n.INSTR_UNARY=null,n.INSTR_LITERAL=null,n.INSTR_CONDITIONAL=null}function instrumentString(n,t){t||(t={});var r=getInstOutputFile(t.outputFile),e={code:n,origCodeFileName:t.inputFileName,instCodeFileName:r,inlineSourceMap:t.inlineSourceMap,inlineSource:t.inlineSource};t.instHandler&&setupConfig(t.instHandler);var i=J$.instrumentCode(e);if(clearConfig(),t.astHandler){var u=t.astHandler(i.instAST);u&&(i.code=J$.Constants.JALANGI_VAR+".ast_info = "+JSON.stringify(u)+";\n"+i.code)}return i}function instrumentDir(n){n.outputDir||(n.outputDir=temp.mkdirSync()),n.instHandler&&setupConfig(n.instHandler);var t=Q.defer();return instDir.instrument(n,(function(r){clearConfig(),r?t.reject(r):t.resolve({outputDir:n.outputDir})})),t.promise}function convertToString(n,t){for(var r=new Buffer(t),e=0,i=0;i<n.length;i++)n[i].copy(r,e,0,n[i].length),e+=n[i].length;return r.toString()}function runChildAndCaptureOutput(n){var t=[],r=0,e=[],i=0,u=Q.defer();return n.stdout.on("data",(function(n){t.push(n),r+=n.length})),n.stderr.on("data",(function(n){e.push(n),i+=n.length})),n.on("close",(function(n){var o=convertToString(t,r),s=convertToString(e,i),a={exitCode:n,stdout:o,stderr:s,toString:function(){return s}};0!==n?u.reject(a):u.resolve(a)})),u.promise}function analyze(n,t,r){var e=path.resolve(__dirname,"../commands/direct.js"),i=[];if(!n)throw new Error("must provide a script to analyze");if(!t)throw new Error("must provide an analysis to run");return t.forEach((function(n){i.push("--analysis"),i.push(n)})),r&&Object.keys(r).forEach((function(n){i.push("--initParam"),i.push(n+":"+r[n])})),i.push(n),runChildAndCaptureOutput(cp.fork(e,i,{silent:!0}))}exports.instrumentString=instrumentString,exports.instrumentDir=instrumentDir,exports.analyze=analyze;
//# sourceMappingURL=/sm/6925a5d19d97f7617badbedfc468b3e360f54ab92b23141f0bda507cc0348e73.map