public abstract void GenerateScript(ScriptRunner runner);
public JavaScriptUtils(ScriptRunner runner, Engine engine) { _runner = runner; _scriptEngine = engine; }
public ReturnRun(ScriptRunner parent, SingleRun run) { _parent = parent; _run = run; }
public SingleRun(DocumentDatabase database, RavenConfiguration configuration, ScriptRunner runner, List <string> scriptsSource) { _database = database; _configuration = configuration; _runner = runner; ScriptEngine = new Engine(options => { options.LimitRecursion(64) .SetReferencesResolver(new JintPreventResolvingTasksReferenceResolver()) .MaxStatements(_configuration.Patching.MaxStepsForScript) .Strict() .AddObjectConverter(new JintGuidConverter()) .AddObjectConverter(new JintStringConverter()) .AddObjectConverter(new JintEnumConverter()) .AddObjectConverter(new JintDateTimeConverter()) .AddObjectConverter(new JintTimeSpanConverter()) .LocalTimeZone(TimeZoneInfo.Utc); }); ScriptEngine.SetValue("output", new ClrFunctionInstance(ScriptEngine, OutputDebug)); ScriptEngine.SetValue("include", new ClrFunctionInstance(ScriptEngine, IncludeDoc)); ScriptEngine.SetValue("load", new ClrFunctionInstance(ScriptEngine, LoadDocument)); ScriptEngine.SetValue("LoadDocument", new ClrFunctionInstance(ScriptEngine, ThrowOnLoadDocument)); ScriptEngine.SetValue("loadPath", new ClrFunctionInstance(ScriptEngine, LoadDocumentByPath)); ScriptEngine.SetValue("del", new ClrFunctionInstance(ScriptEngine, DeleteDocument)); ScriptEngine.SetValue("DeleteDocument", new ClrFunctionInstance(ScriptEngine, ThrowOnDeleteDocument)); ScriptEngine.SetValue("put", new ClrFunctionInstance(ScriptEngine, PutDocument)); ScriptEngine.SetValue("PutDocument", new ClrFunctionInstance(ScriptEngine, ThrowOnPutDocument)); ScriptEngine.SetValue("cmpxchg", new ClrFunctionInstance(ScriptEngine, CmpXchangeValue)); ScriptEngine.SetValue("getMetadata", new ClrFunctionInstance(ScriptEngine, GetMetadata)); ScriptEngine.SetValue("id", new ClrFunctionInstance(ScriptEngine, GetDocumentId)); ScriptEngine.SetValue("lastModified", new ClrFunctionInstance(ScriptEngine, GetLastModified)); ScriptEngine.SetValue("startsWith", new ClrFunctionInstance(ScriptEngine, StartsWith)); ScriptEngine.SetValue("endsWith", new ClrFunctionInstance(ScriptEngine, EndsWith)); ScriptEngine.SetValue("regex", new ClrFunctionInstance(ScriptEngine, Regex)); ScriptEngine.SetValue("convertJsTimeToTimeSpanString", new ClrFunctionInstance(ScriptEngine, ConvertJsTimeToTimeSpanString)); ScriptEngine.Execute(ScriptRunnerCache.PolyfillJs); foreach (var script in scriptsSource) { try { ScriptEngine.Execute(script); } catch (Exception e) { throw new JavaScriptParseException("Failed to parse: " + Environment.NewLine + script, e); } } }
public override void GenerateScript(ScriptRunner runner) { runner.AddScript(GenerateScript()); }