##// END OF EJS Templates
updated build script, added eslint
cin -
r63:fb1f84f91895 default
parent child
Show More
@@ -1,231 +1,247
1 // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}***
1 // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}***
2 // результатом будет версия '{num}.{distance}' где distance - расстояние от
2 // результатом будет версия '{num}.{distance}' где distance - расстояние от
3 // текущей ревизии до ревизии с тэгом
3 // текущей ревизии до ревизии с тэгом
4 if (!version) {
4 if (!version) {
5 def tagDistance = 0;
5 def tagDistance = 0;
6
6
7 def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim();
7 def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim();
8
8
9 def tagVersion;
9 def tagVersion;
10
10
11 def match = (rev =~ /^v(\d+\.\d+).*-(\d+)$/);
11 def match = (rev =~ /^v(\d+\.\d+).*-(\d+)$/);
12
12
13 if (match.size()) {
13 if (match.size()) {
14 tagVersion = match[0][1];
14 tagVersion = match[0][1];
15 tagDistance = match[0][2].toInteger();
15 tagDistance = match[0][2].toInteger();
16 } else {
16 } else {
17 throw new Exception("A version must be specied");
17 throw new Exception("A version must be specied");
18 }
18 }
19
19
20 version = "${tagVersion}.$tagDistance";
20 version = "${tagVersion}.$tagDistance";
21 } else {
21 } else {
22 println "explicit version: $version";
22 println "explicit version: $version";
23 }
23 }
24
24
25 if (hasProperty('versionSuffix') && versionSuffix) {
25 if (hasProperty('versionSuffix') && versionSuffix) {
26 version += "-$versionSuffix"
26 version += "-$versionSuffix"
27 }
27 }
28
28
29 if(!npmName)
29 if(!npmName)
30 npmName = name;
30 npmName = name;
31
31
32 if(!["amd", "commonjs", "system", "umd", "es6", "esnext"].contains(jsmodule))
32 if(!["amd", "commonjs", "system", "umd", "es6", "esnext"].contains(jsmodule))
33 throw new Exception("Invalid jsmodule specified: $jsmodule");
33 throw new Exception("Invalid jsmodule specified: $jsmodule");
34 if(!["es3", "es5", "es6", "es2016", "es2017", "esnext"].contains(target))
34 if(!["es3", "es5", "es6", "es2016", "es2017", "esnext"].contains(target))
35 throw new Exception("Invalid target specified: $target")
35 throw new Exception("Invalid target specified: $target")
36
36
37 def targetLibs = [
37 def targetLibs = [
38 "es3" : "es5,es2015.promise,es2015.symbol,dom,scripthost",
38 "es3" : "es5,es2015.promise,es2015.symbol,dom,scripthost",
39 "es5" : "es5,es2015.promise,es2015.symbol,dom,scripthost"
39 "es5" : "es5,es2015.promise,es2015.symbol,dom,scripthost"
40 ];
40 ];
41
41
42 ext.packageName="$npmScope/$npmName";
42 ext.packageName="$npmScope/$npmName";
43
43
44 def srcDir = "$projectDir/src"
44 def srcDir = "$projectDir/src"
45 def typingsDir = "$srcDir/typings"
45 def typingsDir = "$srcDir/typings"
46 def distDir = "$buildDir/dist"
46 def distDir = "$buildDir/dist"
47 def testDir = "$buildDir/test"
47 def testDir = "$buildDir/test"
48 def lib = targetLibs[target] ?: "${target},dom";
48 def lib = targetLibs[target] ?: "${target},dom";
49
49
50 println "lib: $lib";
50 println "lib: $lib";
51
51
52 def sourceSets = ["main", "amd", "cjs"];
52 def sourceSets = ["main", "amd", "cjs"];
53 def testSets = ["test", "testAmd", "testCjs"];
53 def testSets = ["test", "testAmd", "testCjs"];
54
54
55 task beforeBuild {
55 task beforeBuild {
56 }
56 }
57
57
58 def createSoursetTasks = { String name, String outDir ->
58 def createSoursetTasks = { String name, String outDir ->
59 def setName = name.capitalize();
59 def setName = name.capitalize();
60
60
61 def destDir = "$buildDir/compile/$name"
61 def compileDir = "$buildDir/compile/$name"
62 def declDir = "$typingsDir/$name"
62 def declDir = "$typingsDir/$name"
63 def setDir = "$projectDir/src/$name"
63 def setDir = "$projectDir/src/$name"
64 def jsDir = outDir;
64
65
65 def beforeBuildTask = task "beforeBuild$setName"(dependsOn: beforeBuild) {
66 def beforeBuildTask = task "beforeBuild$setName"(dependsOn: beforeBuild) {
66 }
67 }
67
68
68 def copyJsTask = task "copyJs$setName"(dependsOn: beforeBuildTask, type: Copy) {
69 def copyJsTask = task "copyJs$setName"(dependsOn: beforeBuildTask, type: Copy) {
69 from "$setDir/js"
70 from "$setDir/js"
70 into outDir
71 into jsDir
72 }
73
74 def lintJsTask = task "lintJs$setName"(dependsOn: beforeBuildTask, type: Exec) {
75 inputs.dir("$setDir/js/").skipWhenEmpty();
76 commandLine "eslint", '--format', 'stylish', "$setDir/js/"
71 }
77 }
72
78
73 def compileTsTask = task "compileTs$setName"(dependsOn: beforeBuildTask, type: Exec) {
79 def compileTsTask = task "compileTs$setName"(dependsOn: beforeBuildTask, type: Exec) {
74 inputs.dir("$setDir/ts")
80 inputs.dir("$setDir/ts").skipWhenEmpty()
75 inputs.file("$srcDir/tsconfig.json")
81 inputs.file("$srcDir/tsconfig.json")
76 inputs.file("$setDir/tsconfig.json")
82 inputs.file("$setDir/tsconfig.json")
77 outputs.dir(destDir)
83 outputs.dir(compileDir)
78 outputs.dir(declDir)
84 outputs.dir(declDir)
79
85
80 commandLine 'node_modules/.bin/tsc',
86 commandLine 'node_modules/.bin/tsc',
81 '-p', "$setDir/tsconfig.json",
87 '-p', "$setDir/tsconfig.json",
82 '-t', target,
88 '-t', target,
83 '-m', jsmodule,
89 '-m', jsmodule,
84 '-d',
90 '-d',
85 '--outDir', destDir,
91 '--outDir', compileDir,
86 '--declarationDir', declDir
92 '--declarationDir', declDir
87
93
88 if (lib)
94 if (lib)
89 args '--lib', lib
95 args '--lib', lib
90 }
96 }
91
97
92 def copyTsOutputTask = task "copyTsOutput$setName"(dependsOn: compileTsTask, type: Copy) {
98 def copyTsOutputTask = task "copyTsOutput$setName"(dependsOn: compileTsTask, type: Copy) {
93 from destDir
99 from compileDir
94 into outDir
100 into jsDir
95 }
101 }
96
102
97 def copyTypingsTask = task "copyTypings$setName"(dependsOn: compileTsTask, type: Copy) {
103 def copyTypingsTask = task "copyTypings$setName"(dependsOn: compileTsTask, type: Copy) {
98 from declDir
104 from declDir
105 into jsDir
106 }
107
108 def copyResourcesTask = task "copyResources$setName"(dependsOn: beforeBuildTask, type: Copy) {
109 from "$setDir/resources"
99 into outDir
110 into outDir
100 }
111 }
101
112
102 task "build$setName"(dependsOn: [copyTypingsTask, copyTsOutputTask, copyJsTask]) {
113 task "build$setName" {
114 dependsOn copyTypingsTask,
115 copyTsOutputTask,
116 copyJsTask,
117 copyResourcesTask,
118 lintJsTask
103 }
119 }
104 }
120 }
105
121
106 task printVersion {
122 task printVersion {
107 doLast {
123 doLast {
108 println "version: $version"
124 println "version: $version"
109 println "packageName: $packageName"
125 println "packageName: $packageName"
110 println "target: $target"
126 println "target: $target"
111 println "module: $jsmodule"
127 println "module: $jsmodule"
112 }
128 }
113 }
129 }
114
130
115 task clean {
131 task clean {
116 doLast {
132 doLast {
117 delete buildDir
133 delete buildDir
118 delete typingsDir
134 delete typingsDir
119 }
135 }
120 }
136 }
121
137
122 task _initBuild {
138 task _initBuild {
123 mustRunAfter clean
139 mustRunAfter clean
124
140
125 def buildInfoFile = "$buildDir/platform";
141 def buildInfoFile = "$buildDir/platform";
126 inputs.property('target',target);
142 inputs.property('target',target);
127 inputs.property('jsmodule',jsmodule);
143 inputs.property('jsmodule',jsmodule);
128 outputs.file(buildInfoFile);
144 outputs.file(buildInfoFile);
129
145
130 doLast {
146 doLast {
131 delete buildDir
147 delete buildDir
132 mkdir buildDir
148 mkdir buildDir
133
149
134 def f = new File(buildInfoFile);
150 def f = new File(buildInfoFile);
135 f << "$target-$jsmodule";
151 f << "$target-$jsmodule";
136 }
152 }
137 }
153 }
138
154
139 task cleanNpm {
155 task cleanNpm {
140 doLast {
156 doLast {
141 delete 'node_modules'
157 delete 'node_modules'
142 }
158 }
143 }
159 }
144
160
145 task _npmInstall() {
161 task _npmInstall() {
146 inputs.file("package.json")
162 inputs.file("package.json")
147 outputs.dir("node_modules")
163 outputs.dir("node_modules")
148 doLast {
164 doLast {
149 exec {
165 exec {
150 commandLine 'npm', 'install'
166 commandLine 'npm', 'install'
151 }
167 }
152 }
168 }
153 }
169 }
154
170
155 beforeBuild {
171 beforeBuild {
156 dependsOn _initBuild
172 dependsOn _initBuild
157 dependsOn _npmInstall
173 dependsOn _npmInstall
158 }
174 }
159
175
160 sourceSets.each { createSoursetTasks(it, distDir) }
176 sourceSets.each { createSoursetTasks(it, distDir) }
161
177
162 testSets.each { createSoursetTasks(it, testDir) }
178 testSets.each { createSoursetTasks(it, testDir) }
163
179
164 compileTsAmd {
180 compileTsAmd {
165 dependsOn compileTsMain
181 dependsOn compileTsMain
166 }
182 }
167
183
168 compileTsCjs {
184 compileTsCjs {
169 dependsOn compileTsMain
185 dependsOn compileTsMain
170 }
186 }
171
187
172 task build(dependsOn: buildMain) {
188 task build(dependsOn: buildMain) {
173 if (jsmodule == "amd")
189 if (jsmodule == "amd")
174 dependsOn buildAmd
190 dependsOn buildAmd
175 if (jsmodule == "commonjs")
191 if (jsmodule == "commonjs")
176 dependsOn buildCjs
192 dependsOn buildCjs
177 }
193 }
178
194
179 compileTsTest {
195 compileTsTest {
180 dependsOn build
196 dependsOn build
181 }
197 }
182
198
183 compileTsTestAmd {
199 compileTsTestAmd {
184 dependsOn compileTsTest
200 dependsOn compileTsTest
185 }
201 }
186
202
187 compileTsTestCjs {
203 compileTsTestCjs {
188 dependsOn compileTsTest
204 dependsOn compileTsTest
189 }
205 }
190
206
191 task _installLocalCjsDependency(dependsOn: [buildTestCjs, "_packageMeta"], type: Exec) {
207 task _installLocalCjsDependency(dependsOn: [buildTestCjs, "_packageMeta"], type: Exec) {
192 inputs.file("$distDir/package.json")
208 inputs.file("$distDir/package.json")
193 outputs.upToDateWhen {
209 outputs.upToDateWhen {
194 new File("$testDir/$packageName").exists()
210 new File("$testDir/$packageName").exists()
195 }
211 }
196
212
197 workingDir testDir
213 workingDir testDir
198
214
199 commandLine 'npm', 'install', '--no-save', '--force', distDir
215 commandLine 'npm', 'install', '--no-save', '--force', distDir
200 }
216 }
201
217
202 task test(dependsOn: [buildTest], type: Exec) {
218 task test(dependsOn: [buildTest], type: Exec) {
203 if (jsmodule == "amd")
219 if (jsmodule == "amd")
204 dependsOn buildTestAmd
220 dependsOn buildTestAmd
205 if (jsmodule == "commonjs") {
221 if (jsmodule == "commonjs") {
206 dependsOn buildTestCjs
222 dependsOn buildTestCjs
207 dependsOn _installLocalCjsDependency
223 dependsOn _installLocalCjsDependency
208 }
224 }
209
225
210 commandLine 'node', "$testDir/run-tests.js"
226 commandLine 'node', "$testDir/run-tests.js"
211 }
227 }
212
228
213 task _packageMeta(type: Copy) {
229 task _packageMeta(type: Copy) {
214 mustRunAfter build
230 mustRunAfter build
215
231
216 inputs.property("version", version)
232 inputs.property("version", version)
217 from('.') {
233 from('.') {
218 include '.npmignore', 'readme.md', 'license', 'history.md'
234 include '.npmignore', 'readme.md', 'license', 'history.md'
219 }
235 }
220 from("$srcDir/package.${jsmodule}.tmpl.json") {
236 from("$srcDir/package.${jsmodule}.tmpl.json") {
221 expand project.properties
237 expand project.properties
222 rename { "package.json" }
238 rename { "package.json" }
223 }
239 }
224 into distDir
240 into distDir
225 }
241 }
226
242
227 task pack(dependsOn: [build, _packageMeta], type: Exec) {
243 task pack(dependsOn: [build, _packageMeta], type: Exec) {
228 workingDir distDir
244 workingDir distDir
229
245
230 commandLine 'npm', 'pack'
246 commandLine 'npm', 'pack'
231 } No newline at end of file
247 }
@@ -1,20 +1,20
1 HISTORY
1 HISTORY
2 =======
2 =======
3
3
4 1.2.0
4 1.2.0
5 -----
5 -----
6
6
7 Major rafactoring, moving to support browser (rjs) and server (cjs) environments.
7 Major rafactoring, moving to support both browser (rjs) and server (cjs) environments.
8
8
9 - dependency injection container ported to typescript
9 - dependency injection container ported to typescript
10 - sources are split to several sets to provide the ability for the conditional build of the project.
10 - sources are split to several sets to provide the ability for the conditional build of the project.
11
11
12 1.0.1
12 1.0.1
13 -----
13 -----
14
14
15 First release, intorduces the following features
15 First release, intorduces the following features
16
16
17 - `di` - dependency injection container
17 - `di` - dependency injection container
18 - `log` - log4 style logging system
18 - `log` - log4 style logging system
19 - `text` - simple and fast text templating and formatting
19 - `text` - simple and fast text templating and formatting
20 - `Uuid` - uuid generation traits No newline at end of file
20 - `Uuid` - uuid generation traits
@@ -1,471 +1,471
1 {
1 {
2 "name": "@implab/core",
2 "name": "@implab/core",
3 "version": "0.0.1-dev",
3 "version": "0.0.1-dev",
4 "lockfileVersion": 1,
4 "lockfileVersion": 1,
5 "requires": true,
5 "requires": true,
6 "dependencies": {
6 "dependencies": {
7 "@types/node": {
7 "@types/node": {
8 "version": "10.12.18",
8 "version": "10.12.18",
9 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
9 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz",
10 "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==",
10 "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==",
11 "dev": true
11 "dev": true
12 },
12 },
13 "@types/requirejs": {
13 "@types/requirejs": {
14 "version": "2.1.31",
14 "version": "2.1.31",
15 "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.31.tgz",
15 "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.31.tgz",
16 "integrity": "sha512-b2soeyuU76rMbcRJ4e0hEl0tbMhFwZeTC0VZnfuWlfGlk6BwWNsev6kFu/twKABPX29wkX84wU2o+cEJoXsiTw==",
16 "integrity": "sha512-b2soeyuU76rMbcRJ4e0hEl0tbMhFwZeTC0VZnfuWlfGlk6BwWNsev6kFu/twKABPX29wkX84wU2o+cEJoXsiTw==",
17 "dev": true
17 "dev": true
18 },
18 },
19 "@types/tape": {
19 "@types/tape": {
20 "version": "4.2.33",
20 "version": "4.2.33",
21 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.2.33.tgz",
21 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.2.33.tgz",
22 "integrity": "sha512-ltfyuY5BIkYlGuQfwqzTDT8f0q8Z5DGppvUnWGs39oqDmMd6/UWhNpX3ZMh/VYvfxs3rFGHMrLC/eGRdLiDGuw==",
22 "integrity": "sha512-ltfyuY5BIkYlGuQfwqzTDT8f0q8Z5DGppvUnWGs39oqDmMd6/UWhNpX3ZMh/VYvfxs3rFGHMrLC/eGRdLiDGuw==",
23 "dev": true,
23 "dev": true,
24 "requires": {
24 "requires": {
25 "@types/node": "*"
25 "@types/node": "*"
26 }
26 }
27 },
27 },
28 "balanced-match": {
28 "balanced-match": {
29 "version": "1.0.0",
29 "version": "1.0.0",
30 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
30 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
31 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
31 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
32 "dev": true
32 "dev": true
33 },
33 },
34 "brace-expansion": {
34 "brace-expansion": {
35 "version": "1.1.11",
35 "version": "1.1.11",
36 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
36 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
37 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
37 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
38 "dev": true,
38 "dev": true,
39 "requires": {
39 "requires": {
40 "balanced-match": "^1.0.0",
40 "balanced-match": "^1.0.0",
41 "concat-map": "0.0.1"
41 "concat-map": "0.0.1"
42 }
42 }
43 },
43 },
44 "concat-map": {
44 "concat-map": {
45 "version": "0.0.1",
45 "version": "0.0.1",
46 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
46 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
47 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
47 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
48 "dev": true
48 "dev": true
49 },
49 },
50 "core-util-is": {
50 "core-util-is": {
51 "version": "1.0.2",
51 "version": "1.0.2",
52 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
52 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
53 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
53 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
54 "dev": true
54 "dev": true
55 },
55 },
56 "deep-equal": {
56 "deep-equal": {
57 "version": "0.1.2",
57 "version": "0.1.2",
58 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz",
58 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz",
59 "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=",
59 "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=",
60 "dev": true
60 "dev": true
61 },
61 },
62 "define-properties": {
62 "define-properties": {
63 "version": "1.1.3",
63 "version": "1.1.3",
64 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
64 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
65 "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
65 "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
66 "dev": true,
66 "dev": true,
67 "requires": {
67 "requires": {
68 "object-keys": "^1.0.12"
68 "object-keys": "^1.0.12"
69 },
69 },
70 "dependencies": {
70 "dependencies": {
71 "object-keys": {
71 "object-keys": {
72 "version": "1.0.12",
72 "version": "1.0.12",
73 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
73 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
74 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
74 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
75 "dev": true
75 "dev": true
76 }
76 }
77 }
77 }
78 },
78 },
79 "defined": {
79 "defined": {
80 "version": "0.0.0",
80 "version": "0.0.0",
81 "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
81 "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
82 "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
82 "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
83 "dev": true
83 "dev": true
84 },
84 },
85 "dojo": {
85 "dojo": {
86 "version": "1.14.2",
86 "version": "1.14.2",
87 "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.14.2.tgz",
87 "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.14.2.tgz",
88 "integrity": "sha512-TI+Ytgfh/VfmHWERp45Jte6NFMdoJTPsvUP/uzJUvAXET8FP2h442LePWWJ/q/xZ4V0V8OtdJhx8It/GB+Zbxg==",
88 "integrity": "sha512-TI+Ytgfh/VfmHWERp45Jte6NFMdoJTPsvUP/uzJUvAXET8FP2h442LePWWJ/q/xZ4V0V8OtdJhx8It/GB+Zbxg==",
89 "dev": true
89 "dev": true
90 },
90 },
91 "duplexer": {
91 "duplexer": {
92 "version": "0.1.1",
92 "version": "0.1.1",
93 "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
93 "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
94 "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
94 "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
95 "dev": true
95 "dev": true
96 },
96 },
97 "es-abstract": {
97 "es-abstract": {
98 "version": "1.13.0",
98 "version": "1.13.0",
99 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
99 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
100 "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
100 "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
101 "dev": true,
101 "dev": true,
102 "requires": {
102 "requires": {
103 "es-to-primitive": "^1.2.0",
103 "es-to-primitive": "^1.2.0",
104 "function-bind": "^1.1.1",
104 "function-bind": "^1.1.1",
105 "has": "^1.0.3",
105 "has": "^1.0.3",
106 "is-callable": "^1.1.4",
106 "is-callable": "^1.1.4",
107 "is-regex": "^1.0.4",
107 "is-regex": "^1.0.4",
108 "object-keys": "^1.0.12"
108 "object-keys": "^1.0.12"
109 },
109 },
110 "dependencies": {
110 "dependencies": {
111 "object-keys": {
111 "object-keys": {
112 "version": "1.0.12",
112 "version": "1.0.12",
113 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
113 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
114 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
114 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
115 "dev": true
115 "dev": true
116 }
116 }
117 }
117 }
118 },
118 },
119 "es-to-primitive": {
119 "es-to-primitive": {
120 "version": "1.2.0",
120 "version": "1.2.0",
121 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
121 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
122 "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
122 "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
123 "dev": true,
123 "dev": true,
124 "requires": {
124 "requires": {
125 "is-callable": "^1.1.4",
125 "is-callable": "^1.1.4",
126 "is-date-object": "^1.0.1",
126 "is-date-object": "^1.0.1",
127 "is-symbol": "^1.0.2"
127 "is-symbol": "^1.0.2"
128 }
128 }
129 },
129 },
130 "faucet": {
130 "faucet": {
131 "version": "0.0.1",
131 "version": "0.0.1",
132 "resolved": "https://registry.npmjs.org/faucet/-/faucet-0.0.1.tgz",
132 "resolved": "https://registry.npmjs.org/faucet/-/faucet-0.0.1.tgz",
133 "integrity": "sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw=",
133 "integrity": "sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw=",
134 "dev": true,
134 "dev": true,
135 "requires": {
135 "requires": {
136 "defined": "0.0.0",
136 "defined": "0.0.0",
137 "duplexer": "~0.1.1",
137 "duplexer": "~0.1.1",
138 "minimist": "0.0.5",
138 "minimist": "0.0.5",
139 "sprintf": "~0.1.3",
139 "sprintf": "~0.1.3",
140 "tap-parser": "~0.4.0",
140 "tap-parser": "~0.4.0",
141 "tape": "~2.3.2",
141 "tape": "~2.3.2",
142 "through2": "~0.2.3"
142 "through2": "~0.2.3"
143 },
143 },
144 "dependencies": {
144 "dependencies": {
145 "tape": {
145 "tape": {
146 "version": "2.3.3",
146 "version": "2.3.3",
147 "resolved": "http://registry.npmjs.org/tape/-/tape-2.3.3.tgz",
147 "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.3.tgz",
148 "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=",
148 "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=",
149 "dev": true,
149 "dev": true,
150 "requires": {
150 "requires": {
151 "deep-equal": "~0.1.0",
151 "deep-equal": "~0.1.0",
152 "defined": "~0.0.0",
152 "defined": "~0.0.0",
153 "inherits": "~2.0.1",
153 "inherits": "~2.0.1",
154 "jsonify": "~0.0.0",
154 "jsonify": "~0.0.0",
155 "resumer": "~0.0.0",
155 "resumer": "~0.0.0",
156 "through": "~2.3.4"
156 "through": "~2.3.4"
157 }
157 }
158 }
158 }
159 }
159 }
160 },
160 },
161 "for-each": {
161 "for-each": {
162 "version": "0.3.3",
162 "version": "0.3.3",
163 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
163 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
164 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
164 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
165 "dev": true,
165 "dev": true,
166 "requires": {
166 "requires": {
167 "is-callable": "^1.1.3"
167 "is-callable": "^1.1.3"
168 }
168 }
169 },
169 },
170 "fs.realpath": {
170 "fs.realpath": {
171 "version": "1.0.0",
171 "version": "1.0.0",
172 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
172 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
173 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
173 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
174 "dev": true
174 "dev": true
175 },
175 },
176 "function-bind": {
176 "function-bind": {
177 "version": "1.1.1",
177 "version": "1.1.1",
178 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
178 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
179 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
179 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
180 "dev": true
180 "dev": true
181 },
181 },
182 "glob": {
182 "glob": {
183 "version": "7.1.3",
183 "version": "7.1.3",
184 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
184 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
185 "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
185 "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
186 "dev": true,
186 "dev": true,
187 "requires": {
187 "requires": {
188 "fs.realpath": "^1.0.0",
188 "fs.realpath": "^1.0.0",
189 "inflight": "^1.0.4",
189 "inflight": "^1.0.4",
190 "inherits": "2",
190 "inherits": "2",
191 "minimatch": "^3.0.4",
191 "minimatch": "^3.0.4",
192 "once": "^1.3.0",
192 "once": "^1.3.0",
193 "path-is-absolute": "^1.0.0"
193 "path-is-absolute": "^1.0.0"
194 }
194 }
195 },
195 },
196 "has": {
196 "has": {
197 "version": "1.0.3",
197 "version": "1.0.3",
198 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
198 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
199 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
199 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
200 "dev": true,
200 "dev": true,
201 "requires": {
201 "requires": {
202 "function-bind": "^1.1.1"
202 "function-bind": "^1.1.1"
203 }
203 }
204 },
204 },
205 "has-symbols": {
205 "has-symbols": {
206 "version": "1.0.0",
206 "version": "1.0.0",
207 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
207 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
208 "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
208 "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
209 "dev": true
209 "dev": true
210 },
210 },
211 "inflight": {
211 "inflight": {
212 "version": "1.0.6",
212 "version": "1.0.6",
213 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
213 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
214 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
214 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
215 "dev": true,
215 "dev": true,
216 "requires": {
216 "requires": {
217 "once": "^1.3.0",
217 "once": "^1.3.0",
218 "wrappy": "1"
218 "wrappy": "1"
219 }
219 }
220 },
220 },
221 "inherits": {
221 "inherits": {
222 "version": "2.0.3",
222 "version": "2.0.3",
223 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
223 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
224 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
224 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
225 "dev": true
225 "dev": true
226 },
226 },
227 "is-callable": {
227 "is-callable": {
228 "version": "1.1.4",
228 "version": "1.1.4",
229 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
229 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
230 "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
230 "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
231 "dev": true
231 "dev": true
232 },
232 },
233 "is-date-object": {
233 "is-date-object": {
234 "version": "1.0.1",
234 "version": "1.0.1",
235 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
235 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
236 "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
236 "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
237 "dev": true
237 "dev": true
238 },
238 },
239 "is-regex": {
239 "is-regex": {
240 "version": "1.0.4",
240 "version": "1.0.4",
241 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
241 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
242 "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
242 "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
243 "dev": true,
243 "dev": true,
244 "requires": {
244 "requires": {
245 "has": "^1.0.1"
245 "has": "^1.0.1"
246 }
246 }
247 },
247 },
248 "is-symbol": {
248 "is-symbol": {
249 "version": "1.0.2",
249 "version": "1.0.2",
250 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
250 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
251 "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
251 "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
252 "dev": true,
252 "dev": true,
253 "requires": {
253 "requires": {
254 "has-symbols": "^1.0.0"
254 "has-symbols": "^1.0.0"
255 }
255 }
256 },
256 },
257 "isarray": {
257 "isarray": {
258 "version": "0.0.1",
258 "version": "0.0.1",
259 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
259 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
260 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
260 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
261 "dev": true
261 "dev": true
262 },
262 },
263 "jsonify": {
263 "jsonify": {
264 "version": "0.0.0",
264 "version": "0.0.0",
265 "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
265 "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
266 "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
266 "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
267 "dev": true
267 "dev": true
268 },
268 },
269 "minimatch": {
269 "minimatch": {
270 "version": "3.0.4",
270 "version": "3.0.4",
271 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
271 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
272 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
272 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
273 "dev": true,
273 "dev": true,
274 "requires": {
274 "requires": {
275 "brace-expansion": "^1.1.7"
275 "brace-expansion": "^1.1.7"
276 }
276 }
277 },
277 },
278 "minimist": {
278 "minimist": {
279 "version": "0.0.5",
279 "version": "0.0.5",
280 "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
280 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
281 "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=",
281 "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=",
282 "dev": true
282 "dev": true
283 },
283 },
284 "object-inspect": {
284 "object-inspect": {
285 "version": "1.6.0",
285 "version": "1.6.0",
286 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
286 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
287 "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
287 "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
288 "dev": true
288 "dev": true
289 },
289 },
290 "object-keys": {
290 "object-keys": {
291 "version": "0.4.0",
291 "version": "0.4.0",
292 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
292 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
293 "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
293 "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
294 "dev": true
294 "dev": true
295 },
295 },
296 "once": {
296 "once": {
297 "version": "1.4.0",
297 "version": "1.4.0",
298 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
298 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
299 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
299 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
300 "dev": true,
300 "dev": true,
301 "requires": {
301 "requires": {
302 "wrappy": "1"
302 "wrappy": "1"
303 }
303 }
304 },
304 },
305 "path-is-absolute": {
305 "path-is-absolute": {
306 "version": "1.0.1",
306 "version": "1.0.1",
307 "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
307 "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
308 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
308 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
309 "dev": true
309 "dev": true
310 },
310 },
311 "path-parse": {
311 "path-parse": {
312 "version": "1.0.6",
312 "version": "1.0.6",
313 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
313 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
314 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
314 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
315 "dev": true
315 "dev": true
316 },
316 },
317 "readable-stream": {
317 "readable-stream": {
318 "version": "1.1.14",
318 "version": "1.1.14",
319 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
319 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
320 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
320 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
321 "dev": true,
321 "dev": true,
322 "requires": {
322 "requires": {
323 "core-util-is": "~1.0.0",
323 "core-util-is": "~1.0.0",
324 "inherits": "~2.0.1",
324 "inherits": "~2.0.1",
325 "isarray": "0.0.1",
325 "isarray": "0.0.1",
326 "string_decoder": "~0.10.x"
326 "string_decoder": "~0.10.x"
327 }
327 }
328 },
328 },
329 "requirejs": {
329 "requirejs": {
330 "version": "2.3.6",
330 "version": "2.3.6",
331 "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
331 "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
332 "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
332 "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
333 "dev": true
333 "dev": true
334 },
334 },
335 "resolve": {
335 "resolve": {
336 "version": "1.7.1",
336 "version": "1.7.1",
337 "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
337 "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
338 "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
338 "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
339 "dev": true,
339 "dev": true,
340 "requires": {
340 "requires": {
341 "path-parse": "^1.0.5"
341 "path-parse": "^1.0.5"
342 }
342 }
343 },
343 },
344 "resumer": {
344 "resumer": {
345 "version": "0.0.0",
345 "version": "0.0.0",
346 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
346 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
347 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
347 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
348 "dev": true,
348 "dev": true,
349 "requires": {
349 "requires": {
350 "through": "~2.3.4"
350 "through": "~2.3.4"
351 }
351 }
352 },
352 },
353 "sprintf": {
353 "sprintf": {
354 "version": "0.1.5",
354 "version": "0.1.5",
355 "resolved": "https://registry.npmjs.org/sprintf/-/sprintf-0.1.5.tgz",
355 "resolved": "https://registry.npmjs.org/sprintf/-/sprintf-0.1.5.tgz",
356 "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=",
356 "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=",
357 "dev": true
357 "dev": true
358 },
358 },
359 "string.prototype.trim": {
359 "string.prototype.trim": {
360 "version": "1.1.2",
360 "version": "1.1.2",
361 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
361 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
362 "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
362 "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
363 "dev": true,
363 "dev": true,
364 "requires": {
364 "requires": {
365 "define-properties": "^1.1.2",
365 "define-properties": "^1.1.2",
366 "es-abstract": "^1.5.0",
366 "es-abstract": "^1.5.0",
367 "function-bind": "^1.0.2"
367 "function-bind": "^1.0.2"
368 }
368 }
369 },
369 },
370 "string_decoder": {
370 "string_decoder": {
371 "version": "0.10.31",
371 "version": "0.10.31",
372 "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
372 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
373 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
373 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
374 "dev": true
374 "dev": true
375 },
375 },
376 "tap-parser": {
376 "tap-parser": {
377 "version": "0.4.3",
377 "version": "0.4.3",
378 "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz",
378 "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz",
379 "integrity": "sha1-pOrhkMENdsehEZIf84u+TVjwnuo=",
379 "integrity": "sha1-pOrhkMENdsehEZIf84u+TVjwnuo=",
380 "dev": true,
380 "dev": true,
381 "requires": {
381 "requires": {
382 "inherits": "~2.0.1",
382 "inherits": "~2.0.1",
383 "readable-stream": "~1.1.11"
383 "readable-stream": "~1.1.11"
384 }
384 }
385 },
385 },
386 "tape": {
386 "tape": {
387 "version": "4.9.2",
387 "version": "4.9.2",
388 "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.2.tgz",
388 "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.2.tgz",
389 "integrity": "sha512-lPXKRKILZ1kZaUy5ynWKs8ATGSUO7HAFHCFnBam6FaGSqPdOwMWbxXHq4EXFLE8WRTleo/YOMXkaUTRmTB1Fiw==",
389 "integrity": "sha512-lPXKRKILZ1kZaUy5ynWKs8ATGSUO7HAFHCFnBam6FaGSqPdOwMWbxXHq4EXFLE8WRTleo/YOMXkaUTRmTB1Fiw==",
390 "dev": true,
390 "dev": true,
391 "requires": {
391 "requires": {
392 "deep-equal": "~1.0.1",
392 "deep-equal": "~1.0.1",
393 "defined": "~1.0.0",
393 "defined": "~1.0.0",
394 "for-each": "~0.3.3",
394 "for-each": "~0.3.3",
395 "function-bind": "~1.1.1",
395 "function-bind": "~1.1.1",
396 "glob": "~7.1.2",
396 "glob": "~7.1.2",
397 "has": "~1.0.3",
397 "has": "~1.0.3",
398 "inherits": "~2.0.3",
398 "inherits": "~2.0.3",
399 "minimist": "~1.2.0",
399 "minimist": "~1.2.0",
400 "object-inspect": "~1.6.0",
400 "object-inspect": "~1.6.0",
401 "resolve": "~1.7.1",
401 "resolve": "~1.7.1",
402 "resumer": "~0.0.0",
402 "resumer": "~0.0.0",
403 "string.prototype.trim": "~1.1.2",
403 "string.prototype.trim": "~1.1.2",
404 "through": "~2.3.8"
404 "through": "~2.3.8"
405 },
405 },
406 "dependencies": {
406 "dependencies": {
407 "deep-equal": {
407 "deep-equal": {
408 "version": "1.0.1",
408 "version": "1.0.1",
409 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
409 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
410 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
410 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
411 "dev": true
411 "dev": true
412 },
412 },
413 "defined": {
413 "defined": {
414 "version": "1.0.0",
414 "version": "1.0.0",
415 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
415 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
416 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
416 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
417 "dev": true
417 "dev": true
418 },
418 },
419 "minimist": {
419 "minimist": {
420 "version": "1.2.0",
420 "version": "1.2.0",
421 "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
421 "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
422 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
422 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
423 "dev": true
423 "dev": true
424 }
424 }
425 }
425 }
426 },
426 },
427 "through": {
427 "through": {
428 "version": "2.3.8",
428 "version": "2.3.8",
429 "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
429 "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
430 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
430 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
431 "dev": true
431 "dev": true
432 },
432 },
433 "through2": {
433 "through2": {
434 "version": "0.2.3",
434 "version": "0.2.3",
435 "resolved": "http://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
435 "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
436 "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
436 "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
437 "dev": true,
437 "dev": true,
438 "requires": {
438 "requires": {
439 "readable-stream": "~1.1.9",
439 "readable-stream": "~1.1.9",
440 "xtend": "~2.1.1"
440 "xtend": "~2.1.1"
441 }
441 }
442 },
442 },
443 "tslib": {
443 "tslib": {
444 "version": "1.9.3",
444 "version": "1.9.3",
445 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
445 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
446 "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
446 "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
447 "dev": true
447 "dev": true
448 },
448 },
449 "typescript": {
449 "typescript": {
450 "version": "3.2.2",
450 "version": "3.2.2",
451 "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz",
451 "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz",
452 "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==",
452 "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==",
453 "dev": true
453 "dev": true
454 },
454 },
455 "wrappy": {
455 "wrappy": {
456 "version": "1.0.2",
456 "version": "1.0.2",
457 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
457 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
458 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
458 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
459 "dev": true
459 "dev": true
460 },
460 },
461 "xtend": {
461 "xtend": {
462 "version": "2.1.2",
462 "version": "2.1.2",
463 "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
463 "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
464 "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
464 "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
465 "dev": true,
465 "dev": true,
466 "requires": {
466 "requires": {
467 "object-keys": "~0.4.0"
467 "object-keys": "~0.4.0"
468 }
468 }
469 }
469 }
470 }
470 }
471 }
471 }
@@ -1,61 +1,61
1 define(
1 define(
2 [ "dojo/_base/declare", "dojo/_base/lang", "dojo/Evented", "../log/_LogMixin" ],
2 [ "dojo/_base/declare", "dojo/_base/lang", "dojo/Evented", "../log/_LogMixin" ],
3
3
4 function(declare, lang, Evented, _LogMixin) {
4 function(declare, lang, Evented, _LogMixin) {
5 return declare([ Evented, _LogMixin ], {
5 return declare([ Evented, _LogMixin ], {
6 _session : null,
6 _session : null,
7 _destination : null,
7 _destination : null,
8 _id : null,
8 _id : null,
9
9
10 constructor : function(session, destination, options) {
10 constructor : function(session, destination) {
11 this._destination = destination;
11 this._destination = destination;
12 this._session = session;
12 this._session = session;
13 },
13 },
14
14
15 getDestination : function() {
15 getDestination : function() {
16 return this._destination;
16 return this._destination;
17 },
17 },
18
18
19 start : function() {
19 start : function() {
20 var me = this;
20 var me = this;
21 return me._session.createClient(me.prepareOptions({})).then(
21 return me._session.createClient(me.prepareOptions({})).then(
22 function(id) {
22 function(id) {
23 me._id = id;
23 me._id = id;
24 return me;
24 return me;
25 });
25 });
26 },
26 },
27
27
28 prepareOptions : function(options) {
28 prepareOptions : function(options) {
29 var me = this;
29 var me = this;
30 options.mode = me.getMode();
30 options.mode = me.getMode();
31 options.destination = me.getDestination();
31 options.destination = me.getDestination();
32 options.client = function(msg) {
32 options.client = function(msg) {
33 me.process(msg);
33 me.process(msg);
34 };
34 };
35 return options;
35 return options;
36 },
36 },
37
37
38 process : function(msg) {
38 process : function() {
39 this.warn("Messages are not acceped by this client");
39 this.warn("Messages are not acceped by this client");
40 },
40 },
41
41
42 stop : function() {
42 stop : function() {
43 var me = this;
43 var me = this;
44 if (me._id) {
44 if (me._id) {
45 me.log("stop");
45 me.log("stop");
46 return me._session.deleteClient({'clientId': me._id}).then(function() {
46 return me._session.deleteClient({'clientId': me._id}).then(function() {
47 me._id = null;
47 me._id = null;
48 return me;
48 return me;
49 });
49 });
50 }
50 }
51 },
51 },
52
52
53 toString : function() {
53 toString : function() {
54 return "["
54 return "["
55 + [
55 + [
56 this.getMode().toUpperCase(),
56 this.getMode().toUpperCase(),
57 this.getDestination(),
57 this.getDestination(),
58 this._id ].join(',') + "]";
58 this._id ].join(',') + "]";
59 }
59 }
60 });
60 });
61 }); No newline at end of file
61 });
@@ -1,215 +1,212
1 define([
1 define([
2 "dojo/_base/declare",
2 "dojo/_base/declare",
3 "dojo/request",
3 "dojo/request",
4 "./Destination",
4 "./Destination",
5 "dojo/Evented",
5 "dojo/Evented",
6 "dojo/Deferred",
6 "dojo/Deferred",
7 "../log/_LogMixin"
7 "../log/_LogMixin"
8 ], function (declare, request, Destination, Evented, Deferred, _LogMixin) {
8 ], function (declare, request, Destination, Evented, Deferred, _LogMixin) {
9
9
10 var cls = declare(
10 var cls = declare(
11 [Evented, _LogMixin], {
11 [Evented, _LogMixin], {
12 _id: null,
12 _id: null,
13 _baseUrl: null,
13 _baseUrl: null,
14 _destinations: null,
14 _destinations: null,
15 _timeout: 100000,
15 _timeout: 100000,
16 _clients: null,
16 _clients: null,
17 _started: null,
17 _started: null,
18 _starting: false,
18 _starting: false,
19
19
20 constructor: function (baseUrl, options) {
20 constructor: function (baseUrl, options) {
21 if (!baseUrl)
21 if (!baseUrl)
22 throw new Error("baseUrl is required");
22 throw new Error("baseUrl is required");
23 options = options || {};
23 options = options || {};
24
24
25 this._baseUrl = baseUrl.replace(/\/*$/, "");
25 this._baseUrl = baseUrl.replace(/\/*$/, "");
26 this._destinations = {};
26 this._destinations = {};
27 this._pending = [];
27 this._pending = [];
28 this._clients = {};
28 this._clients = {};
29 if (options.timeout)
29 if (options.timeout)
30 this._timeout = options.timeout;
30 this._timeout = options.timeout;
31
31
32 this._started = new Deferred();
32 this._started = new Deferred();
33 },
33 },
34
34
35 start: function () {
35 start: function () {
36 if (this._starting)
36 if (this._starting)
37 return this._started;
37 return this._started;
38 this._starting = true;
38 this._starting = true;
39
39
40 var me = this;
40 var me = this;
41 me.log("START");
41 me.log("START");
42 request(this._baseUrl, {
42 request(this._baseUrl, {
43 method: "POST",
43 method: "POST",
44 handleAs: "json"
44 handleAs: "json"
45 }).then(function (result) {
45 }).then(function (result) {
46 me._id = result;
46 me._id = result;
47 me._emitConnected();
47 me._emitConnected();
48 me._poll();
48 me._poll();
49 me._started.resolve(me);
49 me._started.resolve(me);
50 }, function (error) {
50 }, function (error) {
51 me._emitError(error);
51 me._emitError(error);
52 me._started.reject(me);
52 me._started.reject(me);
53 });
53 });
54 return me._started.promise;
54 return me._started.promise;
55 },
55 },
56
56
57 createClient: function (options) {
57 createClient: function (options) {
58 if (!options || !options.destination || !options.mode)
58 if (!options || !options.destination || !options.mode)
59 throw new Error("Invalid argument");
59 throw new Error("Invalid argument");
60
60
61 var me = this;
61 var me = this;
62
62
63 return me._started
63 return me._started
64 .then(function () {
64 .then(function () {
65 var url = me._makeUrl(me._id);
65 var url = me._makeUrl(me._id);
66 me.log(
66 me.log(
67 "CREATE mode=${0}, destination=${1}",
67 "CREATE mode=${0}, destination=${1}",
68 options.mode,
68 options.mode,
69 options.destination);
69 options.destination);
70
70
71 return request(url, {
71 return request(url, {
72 method: "POST",
72 method: "POST",
73 data: {
73 data: {
74 mode: options.mode,
74 mode: options.mode,
75 destination: options.destination
75 destination: options.destination
76 },
76 },
77 handleAs: 'json'
77 handleAs: 'json'
78 })
78 })
79 .then(
79 .then(function (id) {
80 function (id) {
80 me.log(
81 me
81 "CLIENT id=${0}, mode=${1}, destination=${2}",
82 .log(
82 id,
83 "CLIENT id=${0}, mode=${1}, destination=${2}",
83 options.mode,
84 options.destination);
85 me._clients[id] = options.client ?
86 options.client :
87 function () {
88 me.warn(
89 "The client id=${0}, mode=${1}, destination=${2} isn't accepting mesages",
84 id,
90 id,
85 options.mode,
91 options.mode,
86 options.destination);
92 options.destination);
87 me._clients[id] = options.client ?
93 };
88 options.client :
94 return id;
89 function (msg) {
95 });
90 me
91 .warn(
92 "The client id=${0}, mode=${1}, destination=${2} isn't accepting mesages",
93 id,
94 options.mode,
95 options.destination);
96 };
97 return id;
98 });
99 });
96 });
100
97
101 },
98 },
102
99
103 deleteClient: function (options) {
100 deleteClient: function (options) {
104 if (!options || !options.clientId)
101 if (!options || !options.clientId)
105 throw new Error("Invalid argument");
102 throw new Error("Invalid argument");
106
103
107 var me = this,
104 var me = this,
108 id = options.clientId;
105 id = options.clientId;
109
106
110 return me._started.then(function () {
107 return me._started.then(function () {
111 var url = me._makeUrl(me._id, options.clientId);
108 var url = me._makeUrl(me._id, options.clientId);
112
109
113 me.log("DELETE CLIENT ${0}", options.clientId);
110 me.log("DELETE CLIENT ${0}", options.clientId);
114
111
115 return request(url, {
112 return request(url, {
116 method: "DELETE",
113 method: "DELETE",
117 handleAs: 'json'
114 handleAs: 'json'
118 }).then(function () {
115 }).then(function () {
119 me.log("CLIENT DELETED ${0}", options.clientId);
116 me.log("CLIENT DELETED ${0}", options.clientId);
120 me._clients[id] = undefined;
117 me._clients[id] = undefined;
121 });
118 });
122 });
119 });
123 },
120 },
124
121
125 _poll: function () {
122 _poll: function () {
126 var me = this,
123 var me = this,
127 url = this._makeUrl(this._id);
124 url = this._makeUrl(this._id);
128 me.log("POLL timeout=${0}", me._timeout);
125 me.log("POLL timeout=${0}", me._timeout);
129 request(url, {
126 request(url, {
130 method: "GET",
127 method: "GET",
131 handleAs: "json",
128 handleAs: "json",
132 query: {
129 query: {
133 timeout: me._timeout
130 timeout: me._timeout
134 }
131 }
135 }).then(function (response) {
132 }).then(function (response) {
136 me._handlePoll(response);
133 me._handlePoll(response);
137 me._poll();
134 me._poll();
138 }, function (err) {
135 }, function (err) {
139 me.error("POLL faield with ${0}", err);
136 me.error("POLL faield with ${0}", err);
140 me._emitError(err);
137 me._emitError(err);
141 });
138 });
142 },
139 },
143
140
144 _handlePoll: function (response) {
141 _handlePoll: function (response) {
145 if (!response) {
142 if (!response) {
146 this.log("POLL response undefined, looks like a bug");
143 this.log("POLL response undefined, looks like a bug");
147 return;
144 return;
148 }
145 }
149 if (!response.results || !response.results.length) {
146 if (!response.results || !response.results.length) {
150 this.log("POLL response is empty");
147 this.log("POLL response is empty");
151 return;
148 return;
152 }
149 }
153
150
154 var results = response.results;
151 var results = response.results;
155 this.log("POLL got ${0} results", results.length);
152 this.log("POLL got ${0} results", results.length);
156
153
157 for (var i = 0; i < results.length; i++) {
154 for (var i = 0; i < results.length; i++) {
158 var result = results[i];
155 var result = results[i];
159 var client = this._clients[result.clientId];
156 var client = this._clients[result.clientId];
160 if (!client) {
157 if (!client) {
161 // TODO this could happen due to client isn't
158 // TODO this could happen due to client isn't
162 // registered yet
159 // registered yet
163 this.error("Unknown client ${0}", result.clientId);
160 this.error("Unknown client ${0}", result.clientId);
164 continue;
161 continue;
165 }
162 }
166 client.call(this, result);
163 client.call(this, result);
167 }
164 }
168 },
165 },
169
166
170 _emitError: function (err) {
167 _emitError: function (err) {
171 this.emit("error", err);
168 this.emit("error", err);
172 },
169 },
173
170
174 _emitConnected: function () {
171 _emitConnected: function () {
175 var me = this;
172 var me = this;
176 me.log("CONNECTED");
173 me.log("CONNECTED");
177 me.emit("connected");
174 me.emit("connected");
178 },
175 },
179
176
180 _makeUrl: function () {
177 _makeUrl: function () {
181 var parts = [this._baseUrl];
178 var parts = [this._baseUrl];
182 for (var i = 0; i < arguments.length; i++)
179 for (var i = 0; i < arguments.length; i++)
183 parts.push(arguments[i].replace(/\/*$/, ""));
180 parts.push(arguments[i].replace(/\/*$/, ""));
184 return parts.join('/');
181 return parts.join('/');
185 },
182 },
186
183
187 queue: function (name) {
184 queue: function (name) {
188 return this._getDestination("queue://" + name);
185 return this._getDestination("queue://" + name);
189 },
186 },
190
187
191 topic: function (name) {
188 topic: function (name) {
192 return this._getDestination("topic://" + name);
189 return this._getDestination("topic://" + name);
193 },
190 },
194
191
195 _getDestination: function (uri) {
192 _getDestination: function (uri) {
196 if (uri in this._destinations)
193 if (uri in this._destinations)
197 return this._destinations[uri];
194 return this._destinations[uri];
198
195
199 var dest = new Destination(this, uri);
196 var dest = new Destination(this, uri);
200 this._destinations[uri] = dest;
197 this._destinations[uri] = dest;
201 return dest;
198 return dest;
202 },
199 },
203
200
204 toString: function () {
201 toString: function () {
205 return ["[", "SESSION ", this._id, "]"].join(" ");
202 return ["[", "SESSION ", this._id, "]"].join(" ");
206 }
203 }
207 });
204 });
208
205
209 cls.connect = function (url, options) {
206 cls.connect = function (url, options) {
210 var session = new cls(url, options);
207 var session = new cls(url, options);
211 return session.start();
208 return session.start();
212 };
209 };
213
210
214 return cls;
211 return cls;
215 }); No newline at end of file
212 });
General Comments 0
You need to be logged in to leave comments. Login now