private JintEngine CreateEngine(ScriptedPatchRequest patch)
{
var scriptWithProperLines = NormalizeLineEnding(patch.Script);
var wrapperScript = String.Format(@"
function ExecutePatchScript(docInner){{
(function(doc){{
{0}
}}).apply(docInner);
}};
", scriptWithProperLines);
var jintEngine = new JintEngine()
.AllowClr(false)
.SetDebugMode(false)
.SetMaxRecursions(50)
.SetMaxSteps(10 * 1000);
AddScript(jintEngine, "Raven.Database.Json.Map.js");
AddScript(jintEngine, "Raven.Database.Json.ToJson.js");
AddScript(jintEngine, "Raven.Database.Json.lodash.js");
AddScript(jintEngine, "Raven.Database.Json.RavenDB.js");
jintEngine.SetFunction("LoadDocument", ((Func<string, object>)(value =>
{
var loadedDoc = loadDocumentStatic(value);
if (loadedDoc == null)
return null;
loadedDoc[Constants.DocumentIdFieldName] = value;
return ToJsObject(jintEngine.Global, loadedDoc);
})));
jintEngine.Run(wrapperScript);
return jintEngine;
}