Skip to content

Commit ef36b99

Browse files
committed
Updates to better support require. Also added better readme content.
1 parent a299280 commit ef36b99

20 files changed

Lines changed: 398 additions & 94 deletions

README.md

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ The script will be compiled and cached in the same way as a normal script.
147147
public string Code { get; set; }
148148
}
149149

150-
#### Using Require
150+
### Using Require
151151
Another way to include scripts and host objects is to use the require. Require is meant to bring in dependencies for the current script
152152
in the manner that javascript frameworks (like node) do. So instead of including scripts, your script can instead use require
153153
in the script itself.
@@ -166,10 +166,51 @@ in the script itself.
166166

167167

168168
#### Require can accept:
169+
169170
* The name of an existing RequirePackage
171+
172+
var subject = new TestObject();
173+
var manager = new RuntimeManager(new ManualManagerSettings {ScriptTimeoutMilliSeconds = 0});
174+
175+
//Use the require manager to add a package - probably at startup
176+
RequireManager.RegisterPackage(
177+
new RequiredPackage { PackageId = "testRequire", ScriptUri = ".\\TestRequire.js" });
178+
179+
//Require the package from inside of javascript
180+
await manager.ExecuteAsync("testscript",
181+
"var testObject = require('testRequire'); subject.Count = 10;
182+
subject.TestString = testObject.getText();",
183+
new ExecutionOptions
184+
{
185+
HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
186+
});
187+
170188
* A file path to a local script
189+
190+
var subject = new TestObject();
191+
var manager = new RuntimeManager(new ManualManagerSettings {ScriptTimeoutMilliSeconds = 0});
192+
193+
await manager.ExecuteAsync("testscript",
194+
@"var testObject = require('.\\TestRequire.js'); subject.Count = 10;
195+
subject.TestString = testObject.getText();",
196+
new ExecutionOptions
197+
{
198+
HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
199+
});
200+
171201
* An http Uri to a script (if ClearScript.Manager.Http is installed)
172202

203+
var subject = new TestObject();
204+
var manager = new RuntimeManager(new ManualManagerSettings {ScriptTimeoutMilliSeconds = 0});
205+
206+
await manager.ExecuteAsync("testscript",
207+
@"var testObject = require('https://randomendpoint.com/testRequire'); subject.Count = 10;
208+
subject.TestString = testObject.getText();",
209+
new ExecutionOptions
210+
{
211+
HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
212+
});
213+
173214

174215
### Using the Manager Pool
175216

src/ClearScript.Manager.Http.Test/ClearScript.Manager.Http.Test.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<Compile Include="Properties\AssemblyInfo.cs" />
5252
<Compile Include="WhenExecutingMainIncludeScript.cs" />
5353
<Compile Include="WhenExecutingScriptWithIncludeScripts.cs" />
54+
<Compile Include="WhenExecutingScriptWithRequire.cs" />
5455
<Compile Include="WhenMakingHttpCall.cs" />
5556
</ItemGroup>
5657
<ItemGroup>
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
using System.Collections.Generic;
2+
using ClearScript.Manager.Loaders;
3+
using NUnit.Framework;
4+
using Should;
5+
6+
namespace ClearScript.Manager.Http.Test
7+
{
8+
[TestFixture]
9+
public class WhenExecutingScriptWithRequire
10+
{
11+
[SetUp]
12+
public void Setup()
13+
{
14+
RequireManager.ClearPackages();
15+
}
16+
17+
[Test]
18+
public async void Script_With_Require_Is_Used()
19+
{
20+
var subject = new TestObject();
21+
var manager = new RuntimeManager(new ManualManagerSettings {ScriptTimeoutMilliSeconds = 0});
22+
23+
RequireManager.RegisterPackage(new RequiredPackage { PackageId = "testRequire", ScriptUri = "https://gist.githubusercontent.com/eswann/76ecaba02dee33cf26b4/raw/bcafe0a389c84ba44d6ee1661e66b2213aa2ffa0/testRequire" });
24+
25+
await
26+
manager.ExecuteAsync("testscript",
27+
"var testObject = require('testRequire'); subject.Count = 10; subject.TestString = testObject.getText();",
28+
new ExecutionOptions
29+
{
30+
HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
31+
});
32+
33+
subject.Name.ShouldEqual("Name");
34+
subject.Count.ShouldEqual(10);
35+
subject.TestString.ShouldEqual("testText");
36+
}
37+
38+
[Test]
39+
public async void Require_Specified_As_Script_HttpPath_Path_Is_Used()
40+
{
41+
var subject = new TestObject();
42+
var manager = new RuntimeManager(new ManualManagerSettings {ScriptTimeoutMilliSeconds = 0});
43+
44+
await
45+
manager.ExecuteAsync("testscript",
46+
@"var testObject = require('https://gist.githubusercontent.com/eswann/76ecaba02dee33cf26b4/raw/bcafe0a389c84ba44d6ee1661e66b2213aa2ffa0/testRequire'); subject.Count = 10; subject.TestString = testObject.getText();",
47+
new ExecutionOptions
48+
{
49+
HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
50+
});
51+
52+
subject.Name.ShouldEqual("Name");
53+
subject.Count.ShouldEqual(10);
54+
subject.TestString.ShouldEqual("testText");
55+
}
56+
57+
[Test]
58+
public async void Require_Named_With_Explicit_Name_Succeeds()
59+
{
60+
var subject = new TestObject();
61+
var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 });
62+
63+
await
64+
manager.ExecuteAsync("testscript",
65+
@"var testObject = requireNamed('testRequire', 'https://gist.githubusercontent.com/eswann/3ff5ec2bcc63b7d2cdaa/raw/26e30f6a9761dbbe5634b2de1549c4a455b7a7d6/TestDiffNameRequire.js'); subject.Count = 10; subject.TestString = testObject.getText();",
66+
new ExecutionOptions
67+
{
68+
HostObjects = new List<HostObject> { new HostObject { Name = "subject", Target = subject } },
69+
});
70+
71+
subject.Name.ShouldEqual("Name");
72+
subject.Count.ShouldEqual(10);
73+
subject.TestString.ShouldEqual("testText");
74+
}
75+
76+
}
77+
78+
79+
public class TestObject
80+
{
81+
private string _name = "Name";
82+
83+
public string Name
84+
{
85+
get { return _name; }
86+
set { _name = value; }
87+
}
88+
89+
public string TestString { get; set; }
90+
91+
public int Count { get; set; }
92+
}
93+
}

src/ClearScript.Manager.Http.Test/WhenMakingHttpCall.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class WhenMakingHttpCall
1414
[SetUp]
1515
public void Setup()
1616
{
17-
Requirer.ClearPackages();
17+
RequireManager.ClearPackages();
1818
}
1919

2020
[Test]
@@ -23,8 +23,7 @@ public async void Basic_Http_Get_Succeeds()
2323
var subject = new TestObject();
2424
var manager = new RuntimeManager(new ManualManagerSettings{ScriptTimeoutMilliSeconds = 0});
2525

26-
Requirer.RegisterPackage(new HttpPackage());
27-
Requirer.RegisterPackage(new RequestPackage());
26+
PackageHelpers.RegisterRequestPackages();
2827

2928
manager.AddConsoleReference = true;
3029
var options = new ExecutionOptions();
@@ -49,8 +48,7 @@ public async void Basic_Http_Get_Body_Is_Retrieved()
4948
var subject = new TestObject();
5049
var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 });
5150

52-
Requirer.RegisterPackage(new HttpPackage());
53-
Requirer.RegisterPackage(new RequestPackage());
51+
PackageHelpers.RegisterRequestPackages();
5452

5553
manager.AddConsoleReference = true;
5654
var options = new ExecutionOptions();
@@ -75,8 +73,7 @@ public async void Basic_Http_Get_Headers_Are_Retrieved()
7573
var subject = new TestObject();
7674
var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 });
7775

78-
Requirer.RegisterPackage(new HttpPackage());
79-
Requirer.RegisterPackage(new RequestPackage());
76+
PackageHelpers.RegisterRequestPackages();
8077

8178
manager.AddConsoleReference = true;
8279
var options = new ExecutionOptions();

src/ClearScript.Manager.Http/ClearScript.Manager.Http.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
<Compile Include="Helpers\Node\NodeHttpResponse.cs" />
6464
<Compile Include="Helpers\Node\NodeRequestModule.cs" />
6565
<Compile Include="Loaders\HttpScriptLoader.cs" />
66+
<Compile Include="Packages\PackageHelpers.cs" />
6667
<Compile Include="Packages\HttpPackage.cs" />
6768
<Compile Include="Packages\RequestPackage.cs" />
6869
<Compile Include="Properties\AssemblyInfo.cs" />

src/ClearScript.Manager.Http/Packages/HttpPackage.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using ClearScript.Manager.Http.Helpers.Node;
1+
using ClearScript.Manager.Http.Helpers.Node;
32
using ClearScript.Manager.Loaders;
43

54
namespace ClearScript.Manager.Http.Packages

src/ClearScript.Manager.Http/Properties/AssemblyInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
[assembly: AssemblyConfiguration("")]
1111
[assembly: AssemblyCompany("")]
1212
[assembly: AssemblyProduct("ClearScript.Manager.Http")]
13-
[assembly: AssemblyCopyright("Copyright © 2014 Eric Swann, Thom Phipps et. al. - All rights reserved.")]
13+
[assembly: AssemblyCopyright("Copyright © 2014 Eric Swann et. al. - All rights reserved.")]
1414
[assembly: AssemblyTrademark("")]
1515
[assembly: AssemblyCulture("")]
1616

@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.3.1.*")]
36-
[assembly: AssemblyFileVersion("1.3.1.*")]
35+
[assembly: AssemblyVersion("1.3.3.*")]
36+
[assembly: AssemblyFileVersion("1.3.3.*")]

src/ClearScript.Manager.Http/Scripts/request.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,4 @@ if (typeof module != 'undefined' && module != null) {
9191

9292
requestFactory.Request = Request;
9393

94-
request = requestFactory;
94+
request.exports = requestFactory;

src/ClearScript.Manager.Test/ClearScript.Manager.Test.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@
5151
<ItemGroup>
5252
<Compile Include="Properties\AssemblyInfo.cs" />
5353
<Compile Include="ScriptSubject.cs" />
54+
<Content Include="TestDiffNameRequire.js">
55+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
56+
</Content>
5457
<Content Include="TestMainScript.js">
5558
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
5659
</Content>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+

2+
function TestType() {}
3+
4+
TestType.prototype.getText = function() { return "testText"; };
5+
6+
testRequire.exports = new TestType();

0 commit comments

Comments
 (0)