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