##// END OF EJS Templates
rewritten TraceSource
cin -
r10:57344e243cdf propose cancellat...
parent child
Show More
@@ -0,0 +1,12
1 declare interface ILog {
2 debug(...args: any[]): void;
3 log(...args: any[]): void;
4 warn(...args: any[]): void;
5 error(...args: any[]): void;
6 }
7
8 declare module "@implab/core/log/trace!*" {
9 const channel: ILog;
10
11 export = channel;
12 } No newline at end of file
@@ -0,0 +1,1
1 export declare function argumentNotNull(v: any, paramName: string); No newline at end of file
@@ -1,445 +1,445
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.5.1",
8 "version": "10.5.1",
9 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.1.tgz",
9 "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.1.tgz",
10 "integrity": "sha512-AFLl1IALIuyt6oK4AYZsgWVJ/5rnyzQWud7IebaZWWV3YmgtPZkQmYio9R5Ze/2pdd7XfqF5bP+hWS11mAKoOQ==",
10 "integrity": "sha512-AFLl1IALIuyt6oK4AYZsgWVJ/5rnyzQWud7IebaZWWV3YmgtPZkQmYio9R5Ze/2pdd7XfqF5bP+hWS11mAKoOQ==",
11 "dev": true
11 "dev": true
12 },
12 },
13 "@types/tape": {
13 "@types/tape": {
14 "version": "4.2.32",
14 "version": "4.2.32",
15 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.2.32.tgz",
15 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.2.32.tgz",
16 "integrity": "sha512-xil0KO5wkPoixdBWGIGolPv9dekf6dVkjjJLAFYchfKcd4DICou67rgGCIO7wAh3i5Ff/6j9IDgZz+GU9cMaqQ==",
16 "integrity": "sha512-xil0KO5wkPoixdBWGIGolPv9dekf6dVkjjJLAFYchfKcd4DICou67rgGCIO7wAh3i5Ff/6j9IDgZz+GU9cMaqQ==",
17 "dev": true,
17 "dev": true,
18 "requires": {
18 "requires": {
19 "@types/node": "10.5.1"
19 "@types/node": "10.5.1"
20 }
20 }
21 },
21 },
22 "balanced-match": {
22 "balanced-match": {
23 "version": "1.0.0",
23 "version": "1.0.0",
24 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
24 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
25 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
25 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
26 "dev": true
26 "dev": true
27 },
27 },
28 "brace-expansion": {
28 "brace-expansion": {
29 "version": "1.1.11",
29 "version": "1.1.11",
30 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
30 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
31 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
31 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
32 "dev": true,
32 "dev": true,
33 "requires": {
33 "requires": {
34 "balanced-match": "1.0.0",
34 "balanced-match": "1.0.0",
35 "concat-map": "0.0.1"
35 "concat-map": "0.0.1"
36 }
36 }
37 },
37 },
38 "concat-map": {
38 "concat-map": {
39 "version": "0.0.1",
39 "version": "0.0.1",
40 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
40 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
41 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
41 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
42 "dev": true
42 "dev": true
43 },
43 },
44 "core-util-is": {
44 "core-util-is": {
45 "version": "1.0.2",
45 "version": "1.0.2",
46 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
46 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
47 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
47 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
48 "dev": true
48 "dev": true
49 },
49 },
50 "deep-equal": {
50 "deep-equal": {
51 "version": "1.0.1",
51 "version": "1.0.1",
52 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
52 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
53 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
53 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
54 "dev": true
54 "dev": true
55 },
55 },
56 "define-properties": {
56 "define-properties": {
57 "version": "1.1.2",
57 "version": "1.1.2",
58 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
58 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
59 "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
59 "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
60 "dev": true,
60 "dev": true,
61 "requires": {
61 "requires": {
62 "foreach": "2.0.5",
62 "foreach": "2.0.5",
63 "object-keys": "1.0.12"
63 "object-keys": "1.0.12"
64 }
64 }
65 },
65 },
66 "defined": {
66 "defined": {
67 "version": "1.0.0",
67 "version": "1.0.0",
68 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
68 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
69 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
69 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
70 "dev": true
70 "dev": true
71 },
71 },
72 "dojo": {
72 "dojo": {
73 "version": "1.13.0",
73 "version": "1.13.0",
74 "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.13.0.tgz",
74 "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.13.0.tgz",
75 "integrity": "sha512-mGoGvsXAbPkUrBnxCoO7m6CFH8jvWq7rAL7fP7jrhJEOyswA/bZwWdXwEH0ovs68t8S0+xOpV/3V7addYbaiAA=="
75 "integrity": "sha512-mGoGvsXAbPkUrBnxCoO7m6CFH8jvWq7rAL7fP7jrhJEOyswA/bZwWdXwEH0ovs68t8S0+xOpV/3V7addYbaiAA=="
76 },
76 },
77 "duplexer": {
77 "duplexer": {
78 "version": "0.1.1",
78 "version": "0.1.1",
79 "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
79 "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
80 "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
80 "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
81 "dev": true
81 "dev": true
82 },
82 },
83 "es-abstract": {
83 "es-abstract": {
84 "version": "1.12.0",
84 "version": "1.12.0",
85 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
85 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
86 "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
86 "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
87 "dev": true,
87 "dev": true,
88 "requires": {
88 "requires": {
89 "es-to-primitive": "1.1.1",
89 "es-to-primitive": "1.1.1",
90 "function-bind": "1.1.1",
90 "function-bind": "1.1.1",
91 "has": "1.0.3",
91 "has": "1.0.3",
92 "is-callable": "1.1.3",
92 "is-callable": "1.1.3",
93 "is-regex": "1.0.4"
93 "is-regex": "1.0.4"
94 }
94 }
95 },
95 },
96 "es-to-primitive": {
96 "es-to-primitive": {
97 "version": "1.1.1",
97 "version": "1.1.1",
98 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
98 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
99 "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
99 "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
100 "dev": true,
100 "dev": true,
101 "requires": {
101 "requires": {
102 "is-callable": "1.1.3",
102 "is-callable": "1.1.3",
103 "is-date-object": "1.0.1",
103 "is-date-object": "1.0.1",
104 "is-symbol": "1.0.1"
104 "is-symbol": "1.0.1"
105 }
105 }
106 },
106 },
107 "faucet": {
107 "faucet": {
108 "version": "0.0.1",
108 "version": "0.0.1",
109 "resolved": "https://registry.npmjs.org/faucet/-/faucet-0.0.1.tgz",
109 "resolved": "https://registry.npmjs.org/faucet/-/faucet-0.0.1.tgz",
110 "integrity": "sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw=",
110 "integrity": "sha1-WX3PHSGJosBiMhtZHo8VHtIDnZw=",
111 "dev": true,
111 "dev": true,
112 "requires": {
112 "requires": {
113 "defined": "0.0.0",
113 "defined": "0.0.0",
114 "duplexer": "0.1.1",
114 "duplexer": "0.1.1",
115 "minimist": "0.0.5",
115 "minimist": "0.0.5",
116 "sprintf": "0.1.5",
116 "sprintf": "0.1.5",
117 "tap-parser": "0.4.3",
117 "tap-parser": "0.4.3",
118 "tape": "2.3.3",
118 "tape": "2.3.3",
119 "through2": "0.2.3"
119 "through2": "0.2.3"
120 },
120 },
121 "dependencies": {
121 "dependencies": {
122 "deep-equal": {
122 "deep-equal": {
123 "version": "0.1.2",
123 "version": "0.1.2",
124 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz",
124 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz",
125 "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=",
125 "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=",
126 "dev": true
126 "dev": true
127 },
127 },
128 "defined": {
128 "defined": {
129 "version": "0.0.0",
129 "version": "0.0.0",
130 "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
130 "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
131 "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
131 "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=",
132 "dev": true
132 "dev": true
133 },
133 },
134 "minimist": {
134 "minimist": {
135 "version": "0.0.5",
135 "version": "0.0.5",
136 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
136 "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz",
137 "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=",
137 "integrity": "sha1-16oye87PUY+RBqxrjwA/o7zqhWY=",
138 "dev": true
138 "dev": true
139 },
139 },
140 "tape": {
140 "tape": {
141 "version": "2.3.3",
141 "version": "2.3.3",
142 "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.3.tgz",
142 "resolved": "https://registry.npmjs.org/tape/-/tape-2.3.3.tgz",
143 "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=",
143 "integrity": "sha1-Lnzgox3wn41oUWZKcYQuDKUFevc=",
144 "dev": true,
144 "dev": true,
145 "requires": {
145 "requires": {
146 "deep-equal": "0.1.2",
146 "deep-equal": "0.1.2",
147 "defined": "0.0.0",
147 "defined": "0.0.0",
148 "inherits": "2.0.3",
148 "inherits": "2.0.3",
149 "jsonify": "0.0.0",
149 "jsonify": "0.0.0",
150 "resumer": "0.0.0",
150 "resumer": "0.0.0",
151 "through": "2.3.8"
151 "through": "2.3.8"
152 }
152 }
153 }
153 }
154 }
154 }
155 },
155 },
156 "for-each": {
156 "for-each": {
157 "version": "0.3.3",
157 "version": "0.3.3",
158 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
158 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
159 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
159 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
160 "dev": true,
160 "dev": true,
161 "requires": {
161 "requires": {
162 "is-callable": "1.1.3"
162 "is-callable": "1.1.3"
163 }
163 }
164 },
164 },
165 "foreach": {
165 "foreach": {
166 "version": "2.0.5",
166 "version": "2.0.5",
167 "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
167 "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
168 "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
168 "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
169 "dev": true
169 "dev": true
170 },
170 },
171 "fs.realpath": {
171 "fs.realpath": {
172 "version": "1.0.0",
172 "version": "1.0.0",
173 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
173 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
174 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
174 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
175 "dev": true
175 "dev": true
176 },
176 },
177 "function-bind": {
177 "function-bind": {
178 "version": "1.1.1",
178 "version": "1.1.1",
179 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
179 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
180 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
180 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
181 "dev": true
181 "dev": true
182 },
182 },
183 "glob": {
183 "glob": {
184 "version": "7.1.2",
184 "version": "7.1.2",
185 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
185 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
186 "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
186 "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
187 "dev": true,
187 "dev": true,
188 "requires": {
188 "requires": {
189 "fs.realpath": "1.0.0",
189 "fs.realpath": "1.0.0",
190 "inflight": "1.0.6",
190 "inflight": "1.0.6",
191 "inherits": "2.0.3",
191 "inherits": "2.0.3",
192 "minimatch": "3.0.4",
192 "minimatch": "3.0.4",
193 "once": "1.4.0",
193 "once": "1.4.0",
194 "path-is-absolute": "1.0.1"
194 "path-is-absolute": "1.0.1"
195 }
195 }
196 },
196 },
197 "has": {
197 "has": {
198 "version": "1.0.3",
198 "version": "1.0.3",
199 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
199 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
200 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
200 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
201 "dev": true,
201 "dev": true,
202 "requires": {
202 "requires": {
203 "function-bind": "1.1.1"
203 "function-bind": "1.1.1"
204 }
204 }
205 },
205 },
206 "inflight": {
206 "inflight": {
207 "version": "1.0.6",
207 "version": "1.0.6",
208 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
208 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
209 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
209 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
210 "dev": true,
210 "dev": true,
211 "requires": {
211 "requires": {
212 "once": "1.4.0",
212 "once": "1.4.0",
213 "wrappy": "1.0.2"
213 "wrappy": "1.0.2"
214 }
214 }
215 },
215 },
216 "inherits": {
216 "inherits": {
217 "version": "2.0.3",
217 "version": "2.0.3",
218 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
218 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
219 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
219 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
220 "dev": true
220 "dev": true
221 },
221 },
222 "is-callable": {
222 "is-callable": {
223 "version": "1.1.3",
223 "version": "1.1.3",
224 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
224 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
225 "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
225 "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
226 "dev": true
226 "dev": true
227 },
227 },
228 "is-date-object": {
228 "is-date-object": {
229 "version": "1.0.1",
229 "version": "1.0.1",
230 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
230 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
231 "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
231 "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
232 "dev": true
232 "dev": true
233 },
233 },
234 "is-regex": {
234 "is-regex": {
235 "version": "1.0.4",
235 "version": "1.0.4",
236 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
236 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
237 "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
237 "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
238 "dev": true,
238 "dev": true,
239 "requires": {
239 "requires": {
240 "has": "1.0.3"
240 "has": "1.0.3"
241 }
241 }
242 },
242 },
243 "is-symbol": {
243 "is-symbol": {
244 "version": "1.0.1",
244 "version": "1.0.1",
245 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
245 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
246 "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
246 "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
247 "dev": true
247 "dev": true
248 },
248 },
249 "isarray": {
249 "isarray": {
250 "version": "0.0.1",
250 "version": "0.0.1",
251 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
251 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
252 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
252 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
253 "dev": true
253 "dev": true
254 },
254 },
255 "jsonify": {
255 "jsonify": {
256 "version": "0.0.0",
256 "version": "0.0.0",
257 "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
257 "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
258 "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
258 "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
259 "dev": true
259 "dev": true
260 },
260 },
261 "minimatch": {
261 "minimatch": {
262 "version": "3.0.4",
262 "version": "3.0.4",
263 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
263 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
264 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
264 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
265 "dev": true,
265 "dev": true,
266 "requires": {
266 "requires": {
267 "brace-expansion": "1.1.11"
267 "brace-expansion": "1.1.11"
268 }
268 }
269 },
269 },
270 "minimist": {
270 "minimist": {
271 "version": "1.2.0",
271 "version": "1.2.0",
272 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
272 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
273 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
273 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
274 "dev": true
274 "dev": true
275 },
275 },
276 "object-inspect": {
276 "object-inspect": {
277 "version": "1.6.0",
277 "version": "1.6.0",
278 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
278 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
279 "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
279 "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
280 "dev": true
280 "dev": true
281 },
281 },
282 "object-keys": {
282 "object-keys": {
283 "version": "1.0.12",
283 "version": "1.0.12",
284 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
284 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
285 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
285 "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
286 "dev": true
286 "dev": true
287 },
287 },
288 "once": {
288 "once": {
289 "version": "1.4.0",
289 "version": "1.4.0",
290 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
290 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
291 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
291 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
292 "dev": true,
292 "dev": true,
293 "requires": {
293 "requires": {
294 "wrappy": "1.0.2"
294 "wrappy": "1.0.2"
295 }
295 }
296 },
296 },
297 "path-is-absolute": {
297 "path-is-absolute": {
298 "version": "1.0.1",
298 "version": "1.0.1",
299 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
299 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
300 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
300 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
301 "dev": true
301 "dev": true
302 },
302 },
303 "path-parse": {
303 "path-parse": {
304 "version": "1.0.5",
304 "version": "1.0.5",
305 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
305 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
306 "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
306 "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
307 "dev": true
307 "dev": true
308 },
308 },
309 "readable-stream": {
309 "readable-stream": {
310 "version": "1.1.14",
310 "version": "1.1.14",
311 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
311 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
312 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
312 "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
313 "dev": true,
313 "dev": true,
314 "requires": {
314 "requires": {
315 "core-util-is": "1.0.2",
315 "core-util-is": "1.0.2",
316 "inherits": "2.0.3",
316 "inherits": "2.0.3",
317 "isarray": "0.0.1",
317 "isarray": "0.0.1",
318 "string_decoder": "0.10.31"
318 "string_decoder": "0.10.31"
319 }
319 }
320 },
320 },
321 "requirejs": {
321 "requirejs": {
322 "version": "2.3.5",
322 "version": "2.3.6",
323 "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.5.tgz",
323 "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
324 "integrity": "sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw==",
324 "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
325 "dev": true
325 "dev": true
326 },
326 },
327 "resolve": {
327 "resolve": {
328 "version": "1.7.1",
328 "version": "1.7.1",
329 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
329 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
330 "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
330 "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
331 "dev": true,
331 "dev": true,
332 "requires": {
332 "requires": {
333 "path-parse": "1.0.5"
333 "path-parse": "1.0.5"
334 }
334 }
335 },
335 },
336 "resumer": {
336 "resumer": {
337 "version": "0.0.0",
337 "version": "0.0.0",
338 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
338 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
339 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
339 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
340 "dev": true,
340 "dev": true,
341 "requires": {
341 "requires": {
342 "through": "2.3.8"
342 "through": "2.3.8"
343 }
343 }
344 },
344 },
345 "sprintf": {
345 "sprintf": {
346 "version": "0.1.5",
346 "version": "0.1.5",
347 "resolved": "https://registry.npmjs.org/sprintf/-/sprintf-0.1.5.tgz",
347 "resolved": "https://registry.npmjs.org/sprintf/-/sprintf-0.1.5.tgz",
348 "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=",
348 "integrity": "sha1-j4PjmpMXwaUCy324BQ5Rxnn27c8=",
349 "dev": true
349 "dev": true
350 },
350 },
351 "string.prototype.trim": {
351 "string.prototype.trim": {
352 "version": "1.1.2",
352 "version": "1.1.2",
353 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
353 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
354 "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
354 "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
355 "dev": true,
355 "dev": true,
356 "requires": {
356 "requires": {
357 "define-properties": "1.1.2",
357 "define-properties": "1.1.2",
358 "es-abstract": "1.12.0",
358 "es-abstract": "1.12.0",
359 "function-bind": "1.1.1"
359 "function-bind": "1.1.1"
360 }
360 }
361 },
361 },
362 "string_decoder": {
362 "string_decoder": {
363 "version": "0.10.31",
363 "version": "0.10.31",
364 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
364 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
365 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
365 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
366 "dev": true
366 "dev": true
367 },
367 },
368 "tap-parser": {
368 "tap-parser": {
369 "version": "0.4.3",
369 "version": "0.4.3",
370 "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz",
370 "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-0.4.3.tgz",
371 "integrity": "sha1-pOrhkMENdsehEZIf84u+TVjwnuo=",
371 "integrity": "sha1-pOrhkMENdsehEZIf84u+TVjwnuo=",
372 "dev": true,
372 "dev": true,
373 "requires": {
373 "requires": {
374 "inherits": "2.0.3",
374 "inherits": "2.0.3",
375 "readable-stream": "1.1.14"
375 "readable-stream": "1.1.14"
376 }
376 }
377 },
377 },
378 "tape": {
378 "tape": {
379 "version": "4.9.1",
379 "version": "4.9.1",
380 "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.1.tgz",
380 "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.1.tgz",
381 "integrity": "sha512-6fKIXknLpoe/Jp4rzHKFPpJUHDHDqn8jus99IfPnHIjyz78HYlefTGD3b5EkbQzuLfaEvmfPK3IolLgq2xT3kw==",
381 "integrity": "sha512-6fKIXknLpoe/Jp4rzHKFPpJUHDHDqn8jus99IfPnHIjyz78HYlefTGD3b5EkbQzuLfaEvmfPK3IolLgq2xT3kw==",
382 "dev": true,
382 "dev": true,
383 "requires": {
383 "requires": {
384 "deep-equal": "1.0.1",
384 "deep-equal": "1.0.1",
385 "defined": "1.0.0",
385 "defined": "1.0.0",
386 "for-each": "0.3.3",
386 "for-each": "0.3.3",
387 "function-bind": "1.1.1",
387 "function-bind": "1.1.1",
388 "glob": "7.1.2",
388 "glob": "7.1.2",
389 "has": "1.0.3",
389 "has": "1.0.3",
390 "inherits": "2.0.3",
390 "inherits": "2.0.3",
391 "minimist": "1.2.0",
391 "minimist": "1.2.0",
392 "object-inspect": "1.6.0",
392 "object-inspect": "1.6.0",
393 "resolve": "1.7.1",
393 "resolve": "1.7.1",
394 "resumer": "0.0.0",
394 "resumer": "0.0.0",
395 "string.prototype.trim": "1.1.2",
395 "string.prototype.trim": "1.1.2",
396 "through": "2.3.8"
396 "through": "2.3.8"
397 }
397 }
398 },
398 },
399 "through": {
399 "through": {
400 "version": "2.3.8",
400 "version": "2.3.8",
401 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
401 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
402 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
402 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
403 "dev": true
403 "dev": true
404 },
404 },
405 "through2": {
405 "through2": {
406 "version": "0.2.3",
406 "version": "0.2.3",
407 "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
407 "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
408 "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
408 "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
409 "dev": true,
409 "dev": true,
410 "requires": {
410 "requires": {
411 "readable-stream": "1.1.14",
411 "readable-stream": "1.1.14",
412 "xtend": "2.1.2"
412 "xtend": "2.1.2"
413 }
413 }
414 },
414 },
415 "typescript": {
415 "typescript": {
416 "version": "2.9.2",
416 "version": "3.0.3",
417 "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
417 "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz",
418 "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
418 "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==",
419 "dev": true
419 "dev": true
420 },
420 },
421 "wrappy": {
421 "wrappy": {
422 "version": "1.0.2",
422 "version": "1.0.2",
423 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
423 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
424 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
424 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
425 "dev": true
425 "dev": true
426 },
426 },
427 "xtend": {
427 "xtend": {
428 "version": "2.1.2",
428 "version": "2.1.2",
429 "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
429 "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
430 "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
430 "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
431 "dev": true,
431 "dev": true,
432 "requires": {
432 "requires": {
433 "object-keys": "0.4.0"
433 "object-keys": "0.4.0"
434 },
434 },
435 "dependencies": {
435 "dependencies": {
436 "object-keys": {
436 "object-keys": {
437 "version": "0.4.0",
437 "version": "0.4.0",
438 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
438 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
439 "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
439 "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
440 "dev": true
440 "dev": true
441 }
441 }
442 }
442 }
443 }
443 }
444 }
444 }
445 }
445 }
@@ -1,23 +1,27
1 var requirejs = require('requirejs');
1 var requirejs = require('requirejs');
2
2
3 requirejs.config({
3 requirejs.config({
4 baseUrl: '.',
4 baseUrl: '.',
5 map: {
5 map: {
6 "*": {
6 "*": {
7 "@implab/core": "core"
7 "@implab/core": "core"
8 }
8 }
9 },
9 },
10 packages: [{
10 packages: [{
11 name: "core",
11 name: "core",
12 location: "build/dist"
12 location: "build/dist"
13 },
13 },
14 {
14 {
15 name: "test",
15 name: "test",
16 location: "build/test"
16 location: "build/test"
17 },
18 {
19 name: "dojo",
20 location: "node_modules/dojo"
17 }
21 }
18 ],
22 ],
19 nodeRequire: require
23 nodeRequire: require
20 });
24 });
21
25
22
26
23 requirejs(['test/plan']); No newline at end of file
27 requirejs(['test/plan']);
@@ -1,116 +1,50
1 define(["../text/format"], function (format) {
1 define(["./TraceSource"], function (TraceSource) {
2 'use strict';
2 'use strict';
3
3
4 var listeners = [];
4 return {
5 var channels = {};
6
7 var Trace = function (name) {
8 this.name = name;
9 this._subscribers = [];
10 };
11
12 Trace.prototype.debug = function () {
13 if (Trace.level >= 4)
14 this.notify("debug", format.apply(null, arguments));
15 };
16
17 Trace.prototype.log = function () {
18 if (Trace.level >= 3)
19 this.notify("log", format.apply(null, arguments));
20 };
21
22 Trace.prototype.warn = function () {
23 if (Trace.level >= 2)
24 this.notify("warn", format.apply(null, arguments));
25
26 };
27
5
28 Trace.prototype.error = function () {
6 on: function (filter, cb) {
29 if (Trace.level >= 1)
7 if (arguments.length == 1) {
30 this.notify("error", format.apply(null, arguments));
8 cb = filter;
31 };
9 filter = undefined;
32
10 }
33 Trace.prototype.notify = function (name, msg) {
11 var test;
34 var me = this;
12 if (filter instanceof RegExp) {
35 me._subscribers.forEach(function (cb) {
13 test = function (chId) {
36 cb(me, name, msg);
14 return filter.test(chId);
37 });
15 };
38 };
16 } else if (filter instanceof Function) {
39
17 test = filter;
40 Trace.prototype.subscribe = function (cb) {
18 } else if (filter) {
41 this._subscribers.push(cb);
19 test = function (chId) {
42 };
20 return chId == filter;
43
21 };
44 Trace.prototype.toString = function () {
22 }
45 return this.name;
46 };
47
48 Trace.createChannel = function (type, name, cb) {
49 var chId = name;
50 if (channels[chId])
51 return channels[chId];
52
53 var channel = new type(chId);
54 channels[chId] = channel;
55
56 Trace._onNewChannel(chId, channel);
57 cb(channel);
58 };
59
23
60 Trace._onNewChannel = function (chId, ch) {
24 if (test) {
61 listeners.forEach(function (listener) {
25 TraceSource.on(function (source) {
62 listener(chId, ch);
26 if (test(source.id))
63 });
27 source.on(cb);
64 };
28 });
65
29 } else {
66 Trace.on = function (filter, cb) {
30 TraceSource.on(function (source) {
67 if (arguments.length == 1) {
31 source.on(cb);
68 cb = filter;
32 });
69 filter = undefined;
33 }
70 }
34 },
71 var d, test;
72 if (filter instanceof RegExp) {
73 test = function (chId) {
74 return filter.test(chId);
75 };
76 } else if (filter instanceof Function) {
77 test = filter;
78 } else if (filter) {
79 test = function (chId) {
80 return chId == filter;
81 };
82 }
83
35
84 if (test) {
36 load: function (id, require, cb) {
85 d = function(chId, ch) {
37 if (id) {
86 if(test(chId))
38 cb(TraceSource.get(id));
87 ch.subscribe(cb);
39 } else if (require.module && require.module.mid) {
88 };
40 cb(TraceSource.get(require.module.mid));
89 } else {
41 } else {
90 d = function(chId, ch) {
42 require(['module'], function (module) {
91 ch.subscribe(cb);
43 cb(TraceSource.get(module && module.id));
92 };
44 });
93 }
45 }
94 listeners.push(d);
46 },
95
96 for(var chId in channels)
97 d(chId,channels[chId]);
98 };
99
47
100 Trace.load = function (id, require, cb) {
48 dynamic: true,
101 if (id)
102 Trace.createChannel(Trace, id, cb);
103 else if (require.module && require.module.mid)
104 Trace.createChannel(Trace, require.module.mid, cb);
105 else
106 require(['module'], function (module) {
107 Trace.createChannel(Trace, module && module.id, cb);
108 });
109 };
49 };
110
111 Trace.dynamic = true;
112
113 Trace.level = 4;
114
115 return Trace;
116 }); No newline at end of file
50 });
@@ -1,92 +1,94
1 import { IActivationController } from './IActivationController';
1 import { IActivationController } from './IActivationController';
2 import { IActivatable } from './IActivatable';
2 import { IActivatable } from './IActivatable';
3 import { AsyncComponent } from './AsyncComponent';
3 import { AsyncComponent } from './AsyncComponent';
4 import { ICancellation } from '../ICancellation';
4 import { ICancellation } from '../ICancellation';
5 import { EmptyCancellation } from '../EmptyCancellation';
5 import { EmptyCancellation } from '../EmptyCancellation';
6 import * as log from '@implab/core/log/trace!';
6
7
7 type Constructor<T = {}> = new (...args: any[]) => T;
8 type Constructor<T = {}> = new (...args: any[]) => T;
8
9
9 function ActivatableMixin<TBase extends Constructor<AsyncComponent>>(Base: TBase) {
10 function ActivatableMixin<TBase extends Constructor<AsyncComponent>>(Base: TBase) {
10 return class extends Base implements IActivatable {
11 return class extends Base implements IActivatable {
11 _controller: IActivationController;
12 _controller: IActivationController;
12
13
13 _active: boolean;
14 _active: boolean;
14
15
15 isActive() {
16 isActive() {
16 return this._active;
17 return this._active;
17 }
18 }
18
19
19 getActivationController() {
20 getActivationController() {
20 return this._controller;
21 return this._controller;
21 }
22 }
22
23
23 setActivationController(controller: IActivationController) {
24 setActivationController(controller: IActivationController) {
24 this._controller = controller;
25 this._controller = controller;
25 }
26 }
26
27
27 async onActivating(ct: ICancellation) {
28 async onActivating(ct: ICancellation) {
28 if (this._controller)
29 if (this._controller)
29 await this._controller.activating(this, ct);
30 await this._controller.activating(this, ct);
30 }
31 }
31
32
32 async onActivated(ct: ICancellation) {
33 async onActivated(ct: ICancellation) {
33 if (this._controller)
34 if (this._controller)
34 await this._controller.activated(this, ct);
35 await this._controller.activated(this, ct);
35 }
36 }
36
37
37 async activate(ct: ICancellation = EmptyCancellation.default) {
38 async activate(ct: ICancellation = EmptyCancellation.default) {
38 if (this.isActive())
39 if (this.isActive())
39 return;
40 return;
40 ct = this.startOperation(ct);
41 ct = this.startOperation(ct);
41 try {
42 try {
42 await this.onActivating(ct);
43 await this.onActivating(ct);
43 this._active = true;
44 this._active = true;
44 try {
45 try {
45 await this.onActivated(ct);
46 await this.onActivated(ct);
46 } catch {
47 } catch(e) {
48 log.error(e);
47 // TODO log error
49 // TODO log error
48 }
50 }
49 this.completeSuccess();
51 this.completeSuccess();
50 } catch (e) {
52 } catch (e) {
51 this.completeFail(e);
53 this.completeFail(e);
52 }
54 }
53 return this.getCompletion();
55 return this.getCompletion();
54 }
56 }
55
57
56 async onDeactivating(ct: ICancellation) {
58 async onDeactivating(ct: ICancellation) {
57 if (this._controller)
59 if (this._controller)
58 await this._controller.deactivating(this, ct);
60 await this._controller.deactivating(this, ct);
59 }
61 }
60
62
61 async onDeactivated(ct: ICancellation) {
63 async onDeactivated(ct: ICancellation) {
62 if (this._controller)
64 if (this._controller)
63 await this._controller.deactivated(this, ct);
65 await this._controller.deactivated(this, ct);
64 }
66 }
65
67
66 async deactivate(ct: ICancellation = EmptyCancellation.default) {
68 async deactivate(ct: ICancellation = EmptyCancellation.default) {
67 if (!this.isActive())
69 if (!this.isActive())
68 return;
70 return;
69 ct = this.startOperation(ct);
71 ct = this.startOperation(ct);
70 try {
72 try {
71 await this.onDeactivating(ct);
73 await this.onDeactivating(ct);
72 this._active = false;
74 this._active = false;
73 try {
75 try {
74 await this.onDeactivated(ct);
76 await this.onDeactivated(ct);
75 } catch {
77 } catch {
76 // TODO log error
78 // TODO log error
77 }
79 }
78 this.completeSuccess();
80 this.completeSuccess();
79 } catch (e) {
81 } catch (e) {
80 this.completeFail(e);
82 this.completeFail(e);
81 }
83 }
82 return this.getCompletion();
84 return this.getCompletion();
83 }
85 }
84
86
85 }
87 }
86 }
88 }
87
89
88 namespace ActivatableMixin {
90 namespace ActivatableMixin {
89
91
90 }
92 }
91
93
92 export = ActivatableMixin; No newline at end of file
94 export = ActivatableMixin;
@@ -1,116 +1,175
1 import * as TraceEventArgs from './TraceEventArgs'
2 import * as format from '../text/format'
1 import * as format from '../text/format'
2 import { argumentNotNull } from '../safe';
3
3
4 interface Handler {
4 interface TraceEventHandler {
5 (arg: TraceEventArgs): void;
5 (sender: TraceSource, level: number, arg: any): void;
6 }
7
8 interface TraceSourceHandler {
9 (source: TraceSource): void;
6 }
10 }
7
11
8 interface Destroyable {
12 interface Destroyable {
9 destroy();
13 destroy();
10 }
14 }
11
15
12 class HandlerDescriptor implements Destroyable {
16 class Registry {
13 private _target: TraceSource
17 static readonly instance = new Registry();
18
19 private _registry: object = new Object();
20 private _listeners: object = new Object();
21 private _nextCookie: number = 1;
14
22
15 readonly handler: Handler;
23 get(id: any): TraceSource {
24 argumentNotNull(id, "id");
25
26 if (this._registry[id])
27 return this._registry[id];
16
28
17 constructor(target: TraceSource, handler: Handler) {
29 var source = new TraceSource(id);
18 this._target = target;
30 this._registry[id] = source;
19 this.handler = handler;
31 this._onNewSource(source);
32
33 return source;
20 }
34 }
21
35
22 destroy() {
36 add(id: any, source: TraceSource) {
23 this._target.remove(this);
37 argumentNotNull(id, "id");
38 argumentNotNull(source, "source");
39
40 this._registry[id] = source;
41 this._onNewSource(source);
42 }
43
44 _onNewSource(source: TraceSource) {
45 for (let i in this._listeners)
46 this._listeners[i].call(null, source);
47 }
48
49 on(handler: TraceSourceHandler): Destroyable {
50 argumentNotNull(handler, "handler");
51 var me = this;
52
53 var cookie = this._nextCookie++;
54
55 this._listeners[cookie] = handler;
56
57 for (let i in this._registry)
58 handler(this._registry[i]);
59
60 return {
61 destroy() {
62 delete me._listeners[cookie];
63 }
64 };
24 }
65 }
25 }
66 }
26
67
68 class TraceSource {
27
69
28 class TraceSource {
29 readonly id: any
70 readonly id: any
30
71
31 private _handlers: Array<HandlerDescriptor>
72 // using array will provide faster iteration the with object
73 private _handlers: Array<TraceEventHandler> = new Array<TraceEventHandler>();
32
74
33 level: number
75 level: number
34
76
35 constructor(id: any) {
77 constructor(id: any) {
36 this.id = id || new Object();
78 this.id = id || new Object();
37 this._handlers = new Array<HandlerDescriptor>();
38 }
79 }
39
80
40 on(handler: Handler): Destroyable {
81 on(handler: TraceEventHandler): Destroyable {
41 if (!handler)
82 argumentNotNull(handler, "handler");
42 throw new Error("A handler must be specified");
83 var me = this;
84 me._handlers.push(handler);
43
85
44 let d = new HandlerDescriptor(this, handler)
86 return {
45
87 destroy() {
46 this._handlers.push(d);
88 me.remove(handler);
47
89 }
48 return d;
90 }
49 }
91 }
50
92
51 remove(cookie: any): void {
93 remove(handler: TraceEventHandler): void {
52 let i = this._handlers.indexOf(cookie);
94 let i = this._handlers.indexOf(handler);
53 if (i >= 0)
95 if (i >= 0)
54 this._handlers.splice(i, 1);
96 this._handlers.splice(i, 1);
55 }
97 }
56
98
57 protected emit(level: number, msg: string, ...args: any[]) {
99 protected emit(level: number, arg: any) {
58 if (level <= this.level) {
100 this._handlers.forEach(h => {
59 let event = new TraceEventArgs(this, format(msg, args));
101 try {
60
102 h(this, level, arg);
61 this._handlers.forEach(d => {
103 } catch (e) {
62 try {
104 // suppress error in log handlers
63 d.handler.call(null, event);
105 }
64 } catch {
106 });
65 // suppress error in log handlers
66 }
67 });
68 }
69 }
107 }
70
108
71 isDebugEnabled() {
109 isDebugEnabled() {
72 return this.level >= TraceSource.DebugLevel;
110 return this.level >= TraceSource.DebugLevel;
73 }
111 }
74
112
75 debug(msg: string, ...args: any[]): void {
113 debug(msg: string, ...args: any[]) {
76 this.emit(TraceSource.DebugLevel, msg, args);
114 if (this.isEnabled(TraceSource.DebugLevel))
115 this.emit(TraceSource.DebugLevel, format(msg, args));
77 }
116 }
78
117
79 isLogEnabled() {
118 isLogEnabled() {
80 return this.level >= TraceSource.LogLevel;
119 return this.level >= TraceSource.LogLevel;
81 }
120 }
82
121
83 log(msg: string, ...args: any[]): void {
122 log(msg: string, ...args: any[]) {
84 this.emit(TraceSource.LogLevel, msg, args);
123 if (this.isEnabled(TraceSource.LogLevel))
124 this.emit(TraceSource.LogLevel, format(msg, args));
85 }
125 }
86
126
87 isWarnEnabled() {
127 isWarnEnabled() {
88 return this.level >= TraceSource.WarnLevel;
128 return this.level >= TraceSource.WarnLevel;
89 }
129 }
90
130
91 warn(msg: string, ...args: any[]): void {
131 warn(msg: string, ...args: any[]) {
92 this.emit(TraceSource.WarnLevel, msg, args);
132 if (this.isEnabled(TraceSource.WarnLevel))
133 this.emit(TraceSource.WarnLevel, format(msg, args));
93 }
134 }
94
135
95 isErrorEnabled() {
136 isErrorEnabled() {
96 return this.level >= TraceSource.ErrorLevel;
137 return this.level >= TraceSource.ErrorLevel;
97 }
138 }
98
139
99 error(msg: string, ...args: any[]): void {
140 error(msg: string, ...args: any[]) {
100 this.emit(TraceSource.ErrorLevel, msg, args);
141 if (this.isEnabled(TraceSource.ErrorLevel))
142 this.emit(TraceSource.ErrorLevel, format(msg, args));
143 }
144
145 isEnabled(level: number) {
146 return (this.level >= level);
147 }
148
149 traceEvent(level: number, arg: any) {
150 if (this.isEnabled(level))
151 this.emit(level, arg);
152 }
153
154 static on(handler: TraceSourceHandler) {
155 Registry.instance.on(handler);
156 }
157
158 static get(id: any) {
159 return Registry.instance.get(id);
101 }
160 }
102 }
161 }
103
162
104 namespace TraceSource {
163 namespace TraceSource {
105 export const DebugLevel = 400;
164 export const DebugLevel = 400;
106
165
107 export const LogLevel = 300;
166 export const LogLevel = 300;
108
167
109 export const WarnLevel = 200;
168 export const WarnLevel = 200;
110
169
111 export const ErrorLevel = 100;
170 export const ErrorLevel = 100;
112
171
113 export const SilentLevel = 0;
172 export const SilentLevel = 0;
114 }
173 }
115
174
116 export = TraceSource; No newline at end of file
175 export = TraceSource;
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now