public async void Testtabris1() { RequireManager requireManager = new RequireManager(); ManagerPool.InitializeCurrentPool(new ManagerSettings()); JavaScript.Manager.Tabris.Tabris.Register(requireManager, new JavaScript.Manager.Tabris.TabrisOptions { }); using (var scope = new ManagerScope(requireManager)) { var code = @"var tabris; (function (){ tabris = tabris || require('javascript_tabris'); try{ var lib = require('../TestDll.dll'); var myClrObject = new lib.TestDll.MyClass('tttt'); myClrObject.SayHello(); }catch(err){ host.err=err.message; host.ex=err; } })();"; await scope.RuntimeManager.ExecuteAsync("btnExcutor_Click", code); } //RequireManager.ClearPackages(); }
public async void Script_With_Multiple_Requires_Is_Used() { var subject = new TestObject(); var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 }); RequireManager.RegisterPackage(new RequiredPackage { PackageId = "testRequire", ScriptUri = ".\\TestRequire.js" }); RequireManager.RegisterPackage(new RequiredPackage { PackageId = "testRequire2", ScriptUri = ".\\TestRequire2.js" }); await manager.ExecuteAsync("testscript", "var testObject = require('testRequire'); var testObject2 = require('testRequire2');subject.Count = testObject2.getNumber(); subject.TestString = testObject.getText();", new ExecutionOptions { HostObjects = new List <HostObject> { new HostObject { Name = "subject", Target = subject } }, }); subject.Name.ShouldEqual("Name"); subject.Count.ShouldEqual(300); subject.TestString.ShouldEqual("testText"); }
public async void Script_With_Require_Is_Used() { var subject = new TestObject(); var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 }); RequireManager.RegisterPackage(new RequiredPackage { PackageId = "testRequire", ScriptUri = "https://gist.githubusercontent.com/eswann/76ecaba02dee33cf26b4/raw/bcafe0a389c84ba44d6ee1661e66b2213aa2ffa0/testRequire" }); await manager.ExecuteAsync("testscript", "var testObject = require('testRequire'); subject.Count = 10; subject.TestString = testObject.getText();", new ExecutionOptions { HostObjects = new List <HostObject> { new HostObject { Name = "subject", Target = subject } }, }); subject.Name.ShouldEqual("Name"); subject.Count.ShouldEqual(10); subject.TestString.ShouldEqual("testText"); }
private void Awake() { if (!Instance) { Instance = this; } LoadJSON(); }
/// <summary> /// 注册所有需要使用的包 /// </summary> /// <param name="RequireManager"></param> /// <param name="options"></param> public static void Register(RequireManager RequireManager, TabrisOptions options = null) { //tabris RequireManager.RegisterPackage(new TabrisPackage()); //sql SqlPackageHelpers.RegisterPackage(RequireManager, options?.DbExecutor ?? new AntOrmDbExecutor()); //http HttpPackageHelpers.RegisterPackage(RequireManager); //log LogPackageHelpers.RegisterPackage(RequireManager, options?.LogExecutor); }
/// <summary> /// Creates a new Runtime Manager. /// </summary> /// <param name="settings">Settings to apply to the Runtime Manager and the scripts it runs.</param> public RuntimeManager(IManagerSettings settings) { _settings = settings; _v8Runtime = new V8Runtime(new V8RuntimeConstraints { MaxExecutableSize = settings.MaxExecutableBytes, MaxOldSpaceSize = settings.MaxOldSpaceBytes, MaxNewSpaceSize = settings.MaxNewSpaceBytes }); _scriptCompiler = new ScriptCompiler(_v8Runtime, settings); RequireManager = new RequireManager(); }
public async void Testtabris() { RequireManager requireManager = new RequireManager(); Tabris.Register(requireManager); ManagerPool.InitializeCurrentPool(new ManagerSettings()); using (var scope = new ManagerScope(requireManager)) { var code = "var log = this.tabris.create('LOG');" + "try{ aa.ttt =1}catch(err){log.info(err)}"; code = "var tabris;" + "(function (){\n tabris = tabris || require('javascript_tabris'); \n" + code + "\n})();"; await scope.RuntimeManager.ExecuteAsync("btnExcutor_Click", code); code = "var log = this.tabris.create('LOG');" + "try{ aa.ttt =1}catch(err){log.info(err)}"; code = "var tabris;" + "(function (){\n tabris = tabris || require('javascript_tabris'); \n" + code + "\n})();"; await scope.RuntimeManager.ExecuteAsync("btnExcutor_Click", code); } //RequireManager.ClearPackages(); }
public void Setup() { RequireManager.ClearPackages(); }
public async Task <V8ScriptEngine> ExecuteAsync(IEnumerable <IncludeScript> scripts, Action <V8ScriptEngine> configAction, ExecutionOptions options = null) { var scriptList = PrecheckScripts(scripts); if (scriptList == null) { return(null); } if (options == null) { options = new ExecutionOptions(); } IEnumerable <V8Script> compiledScripts = scriptList.Select(x => _scriptCompiler.Compile(x, options.AddToCache, options.CacheExpirationSeconds)); GetEngine(); if (AddConsoleReference) { _scriptEngine.AddHostType("Console", typeof(Console)); } RequireManager.BuildRequirer(_scriptCompiler, _scriptEngine); if (configAction != null) { configAction(_scriptEngine); } if (options.Scripts != null) { foreach (var script in options.Scripts) { var compiledInclude = _scriptCompiler.Compile(script, options.AddToCache); if (compiledInclude != null) { _scriptEngine.Execute(compiledInclude); } } } foreach (var compiledScript in compiledScripts) { //Only create a wrapping task if the script has a timeout. CancellationToken cancellationToken; if (TryCreateCancellationToken(out cancellationToken)) { using (cancellationToken.Register(_scriptEngine.Interrupt)) { try { V8Script script = compiledScript; await Task.Run(() => _scriptEngine.Execute(script), cancellationToken).ConfigureAwait(false); } catch (ScriptInterruptedException ex) { var newEx = new ScriptInterruptedException( "Script interruption occurred, this often indicates a script timeout. Examine the data and inner exception for more information.", ex); newEx.Data.Add("Timeout", _settings.ScriptTimeoutMilliSeconds); newEx.Data.Add("ScriptId", compiledScript.Name); throw newEx; } } } else { _scriptEngine.Execute(compiledScript); } } return(_scriptEngine); }
/// <summary> /// Registers packages needed for using the request include. /// </summary> public static void RegisterPackage(RequireManager RequireManager) { RequireManager.RegisterPackage(new HttpPackage()); RequireManager.RegisterPackage(new RequestPackage()); }
public ManagerScope(RequireManager requireManager) { RuntimeManager = ManagerPool.CurrentPool.GetRuntime(); RuntimeManager.RequireManager = requireManager; }
/// <summary> /// Registers packages needed for using the request include. /// </summary> public static void RegisterPackage(RequireManager RequireManager, object sqlExcutor) { RequireManager.RegisterPackage(new SqlExecutor(sqlExcutor)); RequireManager.RegisterPackage(new SqlPackage()); }
/// <summary> /// Registers packages needed for using the request include. /// </summary> public static void RegisterPackage(RequireManager RequireManager, object webViewExecutor) { RequireManager.RegisterPackage(new WebViewExcutorPackage(webViewExecutor)); RequireManager.RegisterPackage(new WebViewPackage()); }
/// <summary> /// Registers packages needed for using the request include. /// </summary> public static void RegisterPackage(RequireManager RequireManager, object logExcutor = null) { RequireManager.RegisterPackage(new LogExcutorPackage(logExcutor)); RequireManager.RegisterPackage(new LogPackage()); }
/// <summary> /// Registers packages needed for using the request include. /// </summary> public static void RegisterPackage(RequireManager RequireManager) { RequireManager.RegisterPackage(new TimerPackageExecutor()); RequireManager.RegisterPackage(new TimerPackage()); }