##// END OF EJS Templates
Added safe.debounce function, this is a preview version
cin -
r159:130129fdbd20 default
parent child
Show More
@@ -1,1314 +1,1314
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 "@babel/code-frame": {
7 "@babel/code-frame": {
8 "version": "7.5.5",
8 "version": "7.5.5",
9 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
9 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
10 "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
10 "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
11 "dev": true,
11 "dev": true,
12 "requires": {
12 "requires": {
13 "@babel/highlight": "^7.0.0"
13 "@babel/highlight": "^7.0.0"
14 }
14 }
15 },
15 },
16 "@babel/highlight": {
16 "@babel/highlight": {
17 "version": "7.5.0",
17 "version": "7.5.0",
18 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
18 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
19 "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
19 "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
20 "dev": true,
20 "dev": true,
21 "requires": {
21 "requires": {
22 "chalk": "^2.0.0",
22 "chalk": "^2.0.0",
23 "esutils": "^2.0.2",
23 "esutils": "^2.0.2",
24 "js-tokens": "^4.0.0"
24 "js-tokens": "^4.0.0"
25 }
25 }
26 },
26 },
27 "@types/chai": {
27 "@types/chai": {
28 "version": "4.2.3",
28 "version": "4.2.3",
29 "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.3.tgz",
29 "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.3.tgz",
30 "integrity": "sha512-VRw2xEGbll3ZiTQ4J02/hUjNqZoue1bMhoo2dgM2LXjDdyaq4q80HgBDHwpI0/VKlo4Eg+BavyQMv/NYgTetzA==",
30 "integrity": "sha512-VRw2xEGbll3ZiTQ4J02/hUjNqZoue1bMhoo2dgM2LXjDdyaq4q80HgBDHwpI0/VKlo4Eg+BavyQMv/NYgTetzA==",
31 "dev": true
31 "dev": true
32 },
32 },
33 "@types/node": {
33 "@types/node": {
34 "version": "8.10.55",
34 "version": "8.10.55",
35 "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.55.tgz",
35 "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.55.tgz",
36 "integrity": "sha512-iZeh1EgupfmAAOASk580R1SL5lWF3CsBVgVH0395qyNF8fhO16xy1UwAav2PdGxIIsYRn7RzJgMGjdsvam6YYg==",
36 "integrity": "sha512-iZeh1EgupfmAAOASk580R1SL5lWF3CsBVgVH0395qyNF8fhO16xy1UwAav2PdGxIIsYRn7RzJgMGjdsvam6YYg==",
37 "dev": true
37 "dev": true
38 },
38 },
39 "@types/requirejs": {
39 "@types/requirejs": {
40 "version": "2.1.31",
40 "version": "2.1.31",
41 "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.31.tgz",
41 "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.31.tgz",
42 "integrity": "sha512-b2soeyuU76rMbcRJ4e0hEl0tbMhFwZeTC0VZnfuWlfGlk6BwWNsev6kFu/twKABPX29wkX84wU2o+cEJoXsiTw==",
42 "integrity": "sha512-b2soeyuU76rMbcRJ4e0hEl0tbMhFwZeTC0VZnfuWlfGlk6BwWNsev6kFu/twKABPX29wkX84wU2o+cEJoXsiTw==",
43 "dev": true
43 "dev": true
44 },
44 },
45 "@types/tape": {
45 "@types/tape": {
46 "version": "4.2.33",
46 "version": "4.2.33",
47 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.2.33.tgz",
47 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.2.33.tgz",
48 "integrity": "sha512-ltfyuY5BIkYlGuQfwqzTDT8f0q8Z5DGppvUnWGs39oqDmMd6/UWhNpX3ZMh/VYvfxs3rFGHMrLC/eGRdLiDGuw==",
48 "integrity": "sha512-ltfyuY5BIkYlGuQfwqzTDT8f0q8Z5DGppvUnWGs39oqDmMd6/UWhNpX3ZMh/VYvfxs3rFGHMrLC/eGRdLiDGuw==",
49 "dev": true,
49 "dev": true,
50 "requires": {
50 "requires": {
51 "@types/node": "*"
51 "@types/node": "*"
52 }
52 }
53 },
53 },
54 "acorn": {
54 "acorn": {
55 "version": "7.1.0",
55 "version": "7.1.0",
56 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
56 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
57 "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
57 "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
58 "dev": true
58 "dev": true
59 },
59 },
60 "acorn-jsx": {
60 "acorn-jsx": {
61 "version": "5.1.0",
61 "version": "5.1.0",
62 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
62 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
63 "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
63 "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
64 "dev": true
64 "dev": true
65 },
65 },
66 "ajv": {
66 "ajv": {
67 "version": "6.10.2",
67 "version": "6.10.2",
68 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
68 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
69 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
69 "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
70 "dev": true,
70 "dev": true,
71 "requires": {
71 "requires": {
72 "fast-deep-equal": "^2.0.1",
72 "fast-deep-equal": "^2.0.1",
73 "fast-json-stable-stringify": "^2.0.0",
73 "fast-json-stable-stringify": "^2.0.0",
74 "json-schema-traverse": "^0.4.1",
74 "json-schema-traverse": "^0.4.1",
75 "uri-js": "^4.2.2"
75 "uri-js": "^4.2.2"
76 }
76 }
77 },
77 },
78 "ansi-escapes": {
78 "ansi-escapes": {
79 "version": "3.2.0",
79 "version": "3.2.0",
80 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
80 "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
81 "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
81 "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
82 "dev": true
82 "dev": true
83 },
83 },
84 "ansi-regex": {
84 "ansi-regex": {
85 "version": "3.0.0",
85 "version": "3.0.0",
86 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
86 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
87 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
87 "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
88 "dev": true
88 "dev": true
89 },
89 },
90 "ansi-styles": {
90 "ansi-styles": {
91 "version": "3.2.1",
91 "version": "3.2.1",
92 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
92 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
93 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
93 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
94 "dev": true,
94 "dev": true,
95 "requires": {
95 "requires": {
96 "color-convert": "^1.9.0"
96 "color-convert": "^1.9.0"
97 }
97 }
98 },
98 },
99 "argparse": {
99 "argparse": {
100 "version": "1.0.10",
100 "version": "1.0.10",
101 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
101 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
102 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
102 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
103 "dev": true,
103 "dev": true,
104 "requires": {
104 "requires": {
105 "sprintf-js": "~1.0.2"
105 "sprintf-js": "~1.0.2"
106 }
106 }
107 },
107 },
108 "astral-regex": {
108 "astral-regex": {
109 "version": "1.0.0",
109 "version": "1.0.0",
110 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
110 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
111 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
111 "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
112 "dev": true
112 "dev": true
113 },
113 },
114 "balanced-match": {
114 "balanced-match": {
115 "version": "1.0.0",
115 "version": "1.0.0",
116 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
116 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
117 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
117 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
118 "dev": true
118 "dev": true
119 },
119 },
120 "brace-expansion": {
120 "brace-expansion": {
121 "version": "1.1.11",
121 "version": "1.1.11",
122 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
122 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
123 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
123 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
124 "dev": true,
124 "dev": true,
125 "requires": {
125 "requires": {
126 "balanced-match": "^1.0.0",
126 "balanced-match": "^1.0.0",
127 "concat-map": "0.0.1"
127 "concat-map": "0.0.1"
128 }
128 }
129 },
129 },
130 "builtin-modules": {
130 "builtin-modules": {
131 "version": "1.1.1",
131 "version": "1.1.1",
132 "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
132 "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
133 "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
133 "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
134 "dev": true
134 "dev": true
135 },
135 },
136 "callsites": {
136 "callsites": {
137 "version": "3.1.0",
137 "version": "3.1.0",
138 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
138 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
139 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
139 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
140 "dev": true
140 "dev": true
141 },
141 },
142 "chalk": {
142 "chalk": {
143 "version": "2.4.2",
143 "version": "2.4.2",
144 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
144 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
145 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
145 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
146 "dev": true,
146 "dev": true,
147 "requires": {
147 "requires": {
148 "ansi-styles": "^3.2.1",
148 "ansi-styles": "^3.2.1",
149 "escape-string-regexp": "^1.0.5",
149 "escape-string-regexp": "^1.0.5",
150 "supports-color": "^5.3.0"
150 "supports-color": "^5.3.0"
151 }
151 }
152 },
152 },
153 "chardet": {
153 "chardet": {
154 "version": "0.7.0",
154 "version": "0.7.0",
155 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
155 "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
156 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
156 "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
157 "dev": true
157 "dev": true
158 },
158 },
159 "cli-cursor": {
159 "cli-cursor": {
160 "version": "2.1.0",
160 "version": "2.1.0",
161 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
161 "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
162 "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
162 "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
163 "dev": true,
163 "dev": true,
164 "requires": {
164 "requires": {
165 "restore-cursor": "^2.0.0"
165 "restore-cursor": "^2.0.0"
166 }
166 }
167 },
167 },
168 "cli-width": {
168 "cli-width": {
169 "version": "2.2.0",
169 "version": "2.2.0",
170 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
170 "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
171 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
171 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
172 "dev": true
172 "dev": true
173 },
173 },
174 "color-convert": {
174 "color-convert": {
175 "version": "1.9.3",
175 "version": "1.9.3",
176 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
176 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
177 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
177 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
178 "dev": true,
178 "dev": true,
179 "requires": {
179 "requires": {
180 "color-name": "1.1.3"
180 "color-name": "1.1.3"
181 }
181 }
182 },
182 },
183 "color-name": {
183 "color-name": {
184 "version": "1.1.3",
184 "version": "1.1.3",
185 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
185 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
186 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
186 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
187 "dev": true
187 "dev": true
188 },
188 },
189 "commander": {
189 "commander": {
190 "version": "2.20.3",
190 "version": "2.20.3",
191 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
191 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
192 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
192 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
193 "dev": true
193 "dev": true
194 },
194 },
195 "concat-map": {
195 "concat-map": {
196 "version": "0.0.1",
196 "version": "0.0.1",
197 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
197 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
198 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
198 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
199 "dev": true
199 "dev": true
200 },
200 },
201 "cross-spawn": {
201 "cross-spawn": {
202 "version": "6.0.5",
202 "version": "6.0.5",
203 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
203 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
204 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
204 "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
205 "dev": true,
205 "dev": true,
206 "requires": {
206 "requires": {
207 "nice-try": "^1.0.4",
207 "nice-try": "^1.0.4",
208 "path-key": "^2.0.1",
208 "path-key": "^2.0.1",
209 "semver": "^5.5.0",
209 "semver": "^5.5.0",
210 "shebang-command": "^1.2.0",
210 "shebang-command": "^1.2.0",
211 "which": "^1.2.9"
211 "which": "^1.2.9"
212 },
212 },
213 "dependencies": {
213 "dependencies": {
214 "semver": {
214 "semver": {
215 "version": "5.7.1",
215 "version": "5.7.1",
216 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
216 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
217 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
217 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
218 "dev": true
218 "dev": true
219 }
219 }
220 }
220 }
221 },
221 },
222 "debug": {
222 "debug": {
223 "version": "4.1.1",
223 "version": "4.1.1",
224 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
224 "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
225 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
225 "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
226 "dev": true,
226 "dev": true,
227 "requires": {
227 "requires": {
228 "ms": "^2.1.1"
228 "ms": "^2.1.1"
229 }
229 }
230 },
230 },
231 "deep-is": {
231 "deep-is": {
232 "version": "0.1.3",
232 "version": "0.1.3",
233 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
233 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
234 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
234 "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
235 "dev": true
235 "dev": true
236 },
236 },
237 "define-properties": {
237 "define-properties": {
238 "version": "1.1.3",
238 "version": "1.1.3",
239 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
239 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
240 "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
240 "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
241 "dev": true,
241 "dev": true,
242 "requires": {
242 "requires": {
243 "object-keys": "^1.0.12"
243 "object-keys": "^1.0.12"
244 },
244 },
245 "dependencies": {
245 "dependencies": {
246 "object-keys": {
246 "object-keys": {
247 "version": "1.1.1",
247 "version": "1.1.1",
248 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
248 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
249 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
249 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
250 "dev": true
250 "dev": true
251 }
251 }
252 }
252 }
253 },
253 },
254 "diff": {
254 "diff": {
255 "version": "3.5.0",
255 "version": "3.5.0",
256 "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
256 "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
257 "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
257 "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
258 "dev": true
258 "dev": true
259 },
259 },
260 "doctrine": {
260 "doctrine": {
261 "version": "3.0.0",
261 "version": "3.0.0",
262 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
262 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
263 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
263 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
264 "dev": true,
264 "dev": true,
265 "requires": {
265 "requires": {
266 "esutils": "^2.0.2"
266 "esutils": "^2.0.2"
267 }
267 }
268 },
268 },
269 "dojo": {
269 "dojo": {
270 "version": "1.10.10",
270 "version": "1.10.10",
271 "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.10.10.tgz",
271 "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.10.10.tgz",
272 "integrity": "sha512-kg79C8Yyd317cG3MgXGMH4AeQ8TgNr8H/PpA3BRms7DTfl0CJCRAgGE/C6d9Nw55s1ID/fEsfS+P3bj1s7dWgA==",
272 "integrity": "sha512-kg79C8Yyd317cG3MgXGMH4AeQ8TgNr8H/PpA3BRms7DTfl0CJCRAgGE/C6d9Nw55s1ID/fEsfS+P3bj1s7dWgA==",
273 "dev": true
273 "dev": true
274 },
274 },
275 "dojo-typings": {
275 "dojo-typings": {
276 "version": "1.11.9",
276 "version": "1.11.9",
277 "resolved": "https://registry.npmjs.org/dojo-typings/-/dojo-typings-1.11.9.tgz",
277 "resolved": "https://registry.npmjs.org/dojo-typings/-/dojo-typings-1.11.9.tgz",
278 "integrity": "sha512-mh8w+Mau2Y1QfTEszEAdO7j6ycNhYxF/Ing6nAk1eUg6NxjeT0viVHjICMd9sU3U463vM2G+KfBBK5grk3/Mlw==",
278 "integrity": "sha512-mh8w+Mau2Y1QfTEszEAdO7j6ycNhYxF/Ing6nAk1eUg6NxjeT0viVHjICMd9sU3U463vM2G+KfBBK5grk3/Mlw==",
279 "dev": true,
279 "dev": true,
280 "requires": {
280 "requires": {
281 "@types/chai": "^4.0.4"
281 "@types/chai": "^4.0.4"
282 }
282 }
283 },
283 },
284 "emoji-regex": {
284 "emoji-regex": {
285 "version": "7.0.3",
285 "version": "7.0.3",
286 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
286 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
287 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
287 "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
288 "dev": true
288 "dev": true
289 },
289 },
290 "es-abstract": {
290 "es-abstract": {
291 "version": "1.15.0",
291 "version": "1.15.0",
292 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
292 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
293 "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
293 "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
294 "dev": true,
294 "dev": true,
295 "requires": {
295 "requires": {
296 "es-to-primitive": "^1.2.0",
296 "es-to-primitive": "^1.2.0",
297 "function-bind": "^1.1.1",
297 "function-bind": "^1.1.1",
298 "has": "^1.0.3",
298 "has": "^1.0.3",
299 "has-symbols": "^1.0.0",
299 "has-symbols": "^1.0.0",
300 "is-callable": "^1.1.4",
300 "is-callable": "^1.1.4",
301 "is-regex": "^1.0.4",
301 "is-regex": "^1.0.4",
302 "object-inspect": "^1.6.0",
302 "object-inspect": "^1.6.0",
303 "object-keys": "^1.1.1",
303 "object-keys": "^1.1.1",
304 "string.prototype.trimleft": "^2.1.0",
304 "string.prototype.trimleft": "^2.1.0",
305 "string.prototype.trimright": "^2.1.0"
305 "string.prototype.trimright": "^2.1.0"
306 },
306 },
307 "dependencies": {
307 "dependencies": {
308 "object-keys": {
308 "object-keys": {
309 "version": "1.1.1",
309 "version": "1.1.1",
310 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
310 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
311 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
311 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
312 "dev": true
312 "dev": true
313 }
313 }
314 }
314 }
315 },
315 },
316 "es-to-primitive": {
316 "es-to-primitive": {
317 "version": "1.2.0",
317 "version": "1.2.0",
318 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
318 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
319 "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
319 "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
320 "dev": true,
320 "dev": true,
321 "requires": {
321 "requires": {
322 "is-callable": "^1.1.4",
322 "is-callable": "^1.1.4",
323 "is-date-object": "^1.0.1",
323 "is-date-object": "^1.0.1",
324 "is-symbol": "^1.0.2"
324 "is-symbol": "^1.0.2"
325 }
325 }
326 },
326 },
327 "escape-string-regexp": {
327 "escape-string-regexp": {
328 "version": "1.0.5",
328 "version": "1.0.5",
329 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
329 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
330 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
330 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
331 "dev": true
331 "dev": true
332 },
332 },
333 "eslint": {
333 "eslint": {
334 "version": "6.1.0",
334 "version": "6.1.0",
335 "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz",
335 "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz",
336 "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==",
336 "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==",
337 "dev": true,
337 "dev": true,
338 "requires": {
338 "requires": {
339 "@babel/code-frame": "^7.0.0",
339 "@babel/code-frame": "^7.0.0",
340 "ajv": "^6.10.0",
340 "ajv": "^6.10.0",
341 "chalk": "^2.1.0",
341 "chalk": "^2.1.0",
342 "cross-spawn": "^6.0.5",
342 "cross-spawn": "^6.0.5",
343 "debug": "^4.0.1",
343 "debug": "^4.0.1",
344 "doctrine": "^3.0.0",
344 "doctrine": "^3.0.0",
345 "eslint-scope": "^5.0.0",
345 "eslint-scope": "^5.0.0",
346 "eslint-utils": "^1.3.1",
346 "eslint-utils": "^1.3.1",
347 "eslint-visitor-keys": "^1.0.0",
347 "eslint-visitor-keys": "^1.0.0",
348 "espree": "^6.0.0",
348 "espree": "^6.0.0",
349 "esquery": "^1.0.1",
349 "esquery": "^1.0.1",
350 "esutils": "^2.0.2",
350 "esutils": "^2.0.2",
351 "file-entry-cache": "^5.0.1",
351 "file-entry-cache": "^5.0.1",
352 "functional-red-black-tree": "^1.0.1",
352 "functional-red-black-tree": "^1.0.1",
353 "glob-parent": "^5.0.0",
353 "glob-parent": "^5.0.0",
354 "globals": "^11.7.0",
354 "globals": "^11.7.0",
355 "ignore": "^4.0.6",
355 "ignore": "^4.0.6",
356 "import-fresh": "^3.0.0",
356 "import-fresh": "^3.0.0",
357 "imurmurhash": "^0.1.4",
357 "imurmurhash": "^0.1.4",
358 "inquirer": "^6.4.1",
358 "inquirer": "^6.4.1",
359 "is-glob": "^4.0.0",
359 "is-glob": "^4.0.0",
360 "js-yaml": "^3.13.1",
360 "js-yaml": "^3.13.1",
361 "json-stable-stringify-without-jsonify": "^1.0.1",
361 "json-stable-stringify-without-jsonify": "^1.0.1",
362 "levn": "^0.3.0",
362 "levn": "^0.3.0",
363 "lodash": "^4.17.14",
363 "lodash": "^4.17.14",
364 "minimatch": "^3.0.4",
364 "minimatch": "^3.0.4",
365 "mkdirp": "^0.5.1",
365 "mkdirp": "^0.5.1",
366 "natural-compare": "^1.4.0",
366 "natural-compare": "^1.4.0",
367 "optionator": "^0.8.2",
367 "optionator": "^0.8.2",
368 "progress": "^2.0.0",
368 "progress": "^2.0.0",
369 "regexpp": "^2.0.1",
369 "regexpp": "^2.0.1",
370 "semver": "^6.1.2",
370 "semver": "^6.1.2",
371 "strip-ansi": "^5.2.0",
371 "strip-ansi": "^5.2.0",
372 "strip-json-comments": "^3.0.1",
372 "strip-json-comments": "^3.0.1",
373 "table": "^5.2.3",
373 "table": "^5.2.3",
374 "text-table": "^0.2.0",
374 "text-table": "^0.2.0",
375 "v8-compile-cache": "^2.0.3"
375 "v8-compile-cache": "^2.0.3"
376 }
376 }
377 },
377 },
378 "eslint-scope": {
378 "eslint-scope": {
379 "version": "5.0.0",
379 "version": "5.0.0",
380 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
380 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
381 "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
381 "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
382 "dev": true,
382 "dev": true,
383 "requires": {
383 "requires": {
384 "esrecurse": "^4.1.0",
384 "esrecurse": "^4.1.0",
385 "estraverse": "^4.1.1"
385 "estraverse": "^4.1.1"
386 }
386 }
387 },
387 },
388 "eslint-utils": {
388 "eslint-utils": {
389 "version": "1.4.2",
389 "version": "1.4.2",
390 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
390 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz",
391 "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
391 "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==",
392 "dev": true,
392 "dev": true,
393 "requires": {
393 "requires": {
394 "eslint-visitor-keys": "^1.0.0"
394 "eslint-visitor-keys": "^1.0.0"
395 }
395 }
396 },
396 },
397 "eslint-visitor-keys": {
397 "eslint-visitor-keys": {
398 "version": "1.1.0",
398 "version": "1.1.0",
399 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
399 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
400 "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
400 "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
401 "dev": true
401 "dev": true
402 },
402 },
403 "espree": {
403 "espree": {
404 "version": "6.1.1",
404 "version": "6.1.1",
405 "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz",
405 "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz",
406 "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==",
406 "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==",
407 "dev": true,
407 "dev": true,
408 "requires": {
408 "requires": {
409 "acorn": "^7.0.0",
409 "acorn": "^7.0.0",
410 "acorn-jsx": "^5.0.2",
410 "acorn-jsx": "^5.0.2",
411 "eslint-visitor-keys": "^1.1.0"
411 "eslint-visitor-keys": "^1.1.0"
412 }
412 }
413 },
413 },
414 "esprima": {
414 "esprima": {
415 "version": "4.0.1",
415 "version": "4.0.1",
416 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
416 "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
417 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
417 "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
418 "dev": true
418 "dev": true
419 },
419 },
420 "esquery": {
420 "esquery": {
421 "version": "1.0.1",
421 "version": "1.0.1",
422 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
422 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
423 "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
423 "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
424 "dev": true,
424 "dev": true,
425 "requires": {
425 "requires": {
426 "estraverse": "^4.0.0"
426 "estraverse": "^4.0.0"
427 }
427 }
428 },
428 },
429 "esrecurse": {
429 "esrecurse": {
430 "version": "4.2.1",
430 "version": "4.2.1",
431 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
431 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
432 "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
432 "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
433 "dev": true,
433 "dev": true,
434 "requires": {
434 "requires": {
435 "estraverse": "^4.1.0"
435 "estraverse": "^4.1.0"
436 }
436 }
437 },
437 },
438 "estraverse": {
438 "estraverse": {
439 "version": "4.3.0",
439 "version": "4.3.0",
440 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
440 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
441 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
441 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
442 "dev": true
442 "dev": true
443 },
443 },
444 "esutils": {
444 "esutils": {
445 "version": "2.0.3",
445 "version": "2.0.3",
446 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
446 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
447 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
447 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
448 "dev": true
448 "dev": true
449 },
449 },
450 "external-editor": {
450 "external-editor": {
451 "version": "3.1.0",
451 "version": "3.1.0",
452 "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
452 "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
453 "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
453 "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
454 "dev": true,
454 "dev": true,
455 "requires": {
455 "requires": {
456 "chardet": "^0.7.0",
456 "chardet": "^0.7.0",
457 "iconv-lite": "^0.4.24",
457 "iconv-lite": "^0.4.24",
458 "tmp": "^0.0.33"
458 "tmp": "^0.0.33"
459 }
459 }
460 },
460 },
461 "fast-deep-equal": {
461 "fast-deep-equal": {
462 "version": "2.0.1",
462 "version": "2.0.1",
463 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
463 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
464 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
464 "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
465 "dev": true
465 "dev": true
466 },
466 },
467 "fast-json-stable-stringify": {
467 "fast-json-stable-stringify": {
468 "version": "2.0.0",
468 "version": "2.0.0",
469 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
469 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
470 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
470 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
471 "dev": true
471 "dev": true
472 },
472 },
473 "fast-levenshtein": {
473 "fast-levenshtein": {
474 "version": "2.0.6",
474 "version": "2.0.6",
475 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
475 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
476 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
476 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
477 "dev": true
477 "dev": true
478 },
478 },
479 "figures": {
479 "figures": {
480 "version": "2.0.0",
480 "version": "2.0.0",
481 "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
481 "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
482 "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
482 "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
483 "dev": true,
483 "dev": true,
484 "requires": {
484 "requires": {
485 "escape-string-regexp": "^1.0.5"
485 "escape-string-regexp": "^1.0.5"
486 }
486 }
487 },
487 },
488 "file-entry-cache": {
488 "file-entry-cache": {
489 "version": "5.0.1",
489 "version": "5.0.1",
490 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
490 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
491 "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
491 "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
492 "dev": true,
492 "dev": true,
493 "requires": {
493 "requires": {
494 "flat-cache": "^2.0.1"
494 "flat-cache": "^2.0.1"
495 }
495 }
496 },
496 },
497 "flat-cache": {
497 "flat-cache": {
498 "version": "2.0.1",
498 "version": "2.0.1",
499 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
499 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
500 "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
500 "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
501 "dev": true,
501 "dev": true,
502 "requires": {
502 "requires": {
503 "flatted": "^2.0.0",
503 "flatted": "^2.0.0",
504 "rimraf": "2.6.3",
504 "rimraf": "2.6.3",
505 "write": "1.0.3"
505 "write": "1.0.3"
506 }
506 }
507 },
507 },
508 "flatted": {
508 "flatted": {
509 "version": "2.0.1",
509 "version": "2.0.1",
510 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
510 "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
511 "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
511 "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
512 "dev": true
512 "dev": true
513 },
513 },
514 "for-each": {
514 "for-each": {
515 "version": "0.3.3",
515 "version": "0.3.3",
516 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
516 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
517 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
517 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
518 "dev": true,
518 "dev": true,
519 "requires": {
519 "requires": {
520 "is-callable": "^1.1.3"
520 "is-callable": "^1.1.3"
521 }
521 }
522 },
522 },
523 "fs.realpath": {
523 "fs.realpath": {
524 "version": "1.0.0",
524 "version": "1.0.0",
525 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
525 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
526 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
526 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
527 "dev": true
527 "dev": true
528 },
528 },
529 "function-bind": {
529 "function-bind": {
530 "version": "1.1.1",
530 "version": "1.1.1",
531 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
531 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
532 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
532 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
533 "dev": true
533 "dev": true
534 },
534 },
535 "functional-red-black-tree": {
535 "functional-red-black-tree": {
536 "version": "1.0.1",
536 "version": "1.0.1",
537 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
537 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
538 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
538 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
539 "dev": true
539 "dev": true
540 },
540 },
541 "glob": {
541 "glob": {
542 "version": "7.1.4",
542 "version": "7.1.4",
543 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
543 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
544 "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
544 "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
545 "dev": true,
545 "dev": true,
546 "requires": {
546 "requires": {
547 "fs.realpath": "^1.0.0",
547 "fs.realpath": "^1.0.0",
548 "inflight": "^1.0.4",
548 "inflight": "^1.0.4",
549 "inherits": "2",
549 "inherits": "2",
550 "minimatch": "^3.0.4",
550 "minimatch": "^3.0.4",
551 "once": "^1.3.0",
551 "once": "^1.3.0",
552 "path-is-absolute": "^1.0.0"
552 "path-is-absolute": "^1.0.0"
553 }
553 }
554 },
554 },
555 "glob-parent": {
555 "glob-parent": {
556 "version": "5.1.0",
556 "version": "5.1.0",
557 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
557 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
558 "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
558 "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
559 "dev": true,
559 "dev": true,
560 "requires": {
560 "requires": {
561 "is-glob": "^4.0.1"
561 "is-glob": "^4.0.1"
562 }
562 }
563 },
563 },
564 "globals": {
564 "globals": {
565 "version": "11.12.0",
565 "version": "11.12.0",
566 "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
566 "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
567 "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
567 "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
568 "dev": true
568 "dev": true
569 },
569 },
570 "has": {
570 "has": {
571 "version": "1.0.3",
571 "version": "1.0.3",
572 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
572 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
573 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
573 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
574 "dev": true,
574 "dev": true,
575 "requires": {
575 "requires": {
576 "function-bind": "^1.1.1"
576 "function-bind": "^1.1.1"
577 }
577 }
578 },
578 },
579 "has-flag": {
579 "has-flag": {
580 "version": "3.0.0",
580 "version": "3.0.0",
581 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
581 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
582 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
582 "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
583 "dev": true
583 "dev": true
584 },
584 },
585 "has-symbols": {
585 "has-symbols": {
586 "version": "1.0.0",
586 "version": "1.0.0",
587 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
587 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
588 "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
588 "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
589 "dev": true
589 "dev": true
590 },
590 },
591 "iconv-lite": {
591 "iconv-lite": {
592 "version": "0.4.24",
592 "version": "0.4.24",
593 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
593 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
594 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
594 "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
595 "dev": true,
595 "dev": true,
596 "requires": {
596 "requires": {
597 "safer-buffer": ">= 2.1.2 < 3"
597 "safer-buffer": ">= 2.1.2 < 3"
598 }
598 }
599 },
599 },
600 "ignore": {
600 "ignore": {
601 "version": "4.0.6",
601 "version": "4.0.6",
602 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
602 "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
603 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
603 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
604 "dev": true
604 "dev": true
605 },
605 },
606 "import-fresh": {
606 "import-fresh": {
607 "version": "3.1.0",
607 "version": "3.1.0",
608 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
608 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz",
609 "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
609 "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==",
610 "dev": true,
610 "dev": true,
611 "requires": {
611 "requires": {
612 "parent-module": "^1.0.0",
612 "parent-module": "^1.0.0",
613 "resolve-from": "^4.0.0"
613 "resolve-from": "^4.0.0"
614 }
614 }
615 },
615 },
616 "imurmurhash": {
616 "imurmurhash": {
617 "version": "0.1.4",
617 "version": "0.1.4",
618 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
618 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
619 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
619 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
620 "dev": true
620 "dev": true
621 },
621 },
622 "inflight": {
622 "inflight": {
623 "version": "1.0.6",
623 "version": "1.0.6",
624 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
624 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
625 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
625 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
626 "dev": true,
626 "dev": true,
627 "requires": {
627 "requires": {
628 "once": "^1.3.0",
628 "once": "^1.3.0",
629 "wrappy": "1"
629 "wrappy": "1"
630 }
630 }
631 },
631 },
632 "inherits": {
632 "inherits": {
633 "version": "2.0.3",
633 "version": "2.0.3",
634 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
634 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
635 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
635 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
636 "dev": true
636 "dev": true
637 },
637 },
638 "inquirer": {
638 "inquirer": {
639 "version": "6.5.2",
639 "version": "6.5.2",
640 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
640 "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
641 "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
641 "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
642 "dev": true,
642 "dev": true,
643 "requires": {
643 "requires": {
644 "ansi-escapes": "^3.2.0",
644 "ansi-escapes": "^3.2.0",
645 "chalk": "^2.4.2",
645 "chalk": "^2.4.2",
646 "cli-cursor": "^2.1.0",
646 "cli-cursor": "^2.1.0",
647 "cli-width": "^2.0.0",
647 "cli-width": "^2.0.0",
648 "external-editor": "^3.0.3",
648 "external-editor": "^3.0.3",
649 "figures": "^2.0.0",
649 "figures": "^2.0.0",
650 "lodash": "^4.17.12",
650 "lodash": "^4.17.12",
651 "mute-stream": "0.0.7",
651 "mute-stream": "0.0.7",
652 "run-async": "^2.2.0",
652 "run-async": "^2.2.0",
653 "rxjs": "^6.4.0",
653 "rxjs": "^6.4.0",
654 "string-width": "^2.1.0",
654 "string-width": "^2.1.0",
655 "strip-ansi": "^5.1.0",
655 "strip-ansi": "^5.1.0",
656 "through": "^2.3.6"
656 "through": "^2.3.6"
657 }
657 }
658 },
658 },
659 "is-callable": {
659 "is-callable": {
660 "version": "1.1.4",
660 "version": "1.1.4",
661 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
661 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
662 "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
662 "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
663 "dev": true
663 "dev": true
664 },
664 },
665 "is-date-object": {
665 "is-date-object": {
666 "version": "1.0.1",
666 "version": "1.0.1",
667 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
667 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
668 "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
668 "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
669 "dev": true
669 "dev": true
670 },
670 },
671 "is-extglob": {
671 "is-extglob": {
672 "version": "2.1.1",
672 "version": "2.1.1",
673 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
673 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
674 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
674 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
675 "dev": true
675 "dev": true
676 },
676 },
677 "is-fullwidth-code-point": {
677 "is-fullwidth-code-point": {
678 "version": "2.0.0",
678 "version": "2.0.0",
679 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
679 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
680 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
680 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
681 "dev": true
681 "dev": true
682 },
682 },
683 "is-glob": {
683 "is-glob": {
684 "version": "4.0.1",
684 "version": "4.0.1",
685 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
685 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
686 "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
686 "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
687 "dev": true,
687 "dev": true,
688 "requires": {
688 "requires": {
689 "is-extglob": "^2.1.1"
689 "is-extglob": "^2.1.1"
690 }
690 }
691 },
691 },
692 "is-promise": {
692 "is-promise": {
693 "version": "2.1.0",
693 "version": "2.1.0",
694 "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
694 "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
695 "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
695 "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
696 "dev": true
696 "dev": true
697 },
697 },
698 "is-regex": {
698 "is-regex": {
699 "version": "1.0.4",
699 "version": "1.0.4",
700 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
700 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
701 "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
701 "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
702 "dev": true,
702 "dev": true,
703 "requires": {
703 "requires": {
704 "has": "^1.0.1"
704 "has": "^1.0.1"
705 }
705 }
706 },
706 },
707 "is-symbol": {
707 "is-symbol": {
708 "version": "1.0.2",
708 "version": "1.0.2",
709 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
709 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
710 "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
710 "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
711 "dev": true,
711 "dev": true,
712 "requires": {
712 "requires": {
713 "has-symbols": "^1.0.0"
713 "has-symbols": "^1.0.0"
714 }
714 }
715 },
715 },
716 "isexe": {
716 "isexe": {
717 "version": "2.0.0",
717 "version": "2.0.0",
718 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
718 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
719 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
719 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
720 "dev": true
720 "dev": true
721 },
721 },
722 "js-tokens": {
722 "js-tokens": {
723 "version": "4.0.0",
723 "version": "4.0.0",
724 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
724 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
725 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
725 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
726 "dev": true
726 "dev": true
727 },
727 },
728 "js-yaml": {
728 "js-yaml": {
729 "version": "3.13.1",
729 "version": "3.13.1",
730 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
730 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
731 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
731 "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
732 "dev": true,
732 "dev": true,
733 "requires": {
733 "requires": {
734 "argparse": "^1.0.7",
734 "argparse": "^1.0.7",
735 "esprima": "^4.0.0"
735 "esprima": "^4.0.0"
736 }
736 }
737 },
737 },
738 "json-schema-traverse": {
738 "json-schema-traverse": {
739 "version": "0.4.1",
739 "version": "0.4.1",
740 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
740 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
741 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
741 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
742 "dev": true
742 "dev": true
743 },
743 },
744 "json-stable-stringify-without-jsonify": {
744 "json-stable-stringify-without-jsonify": {
745 "version": "1.0.1",
745 "version": "1.0.1",
746 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
746 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
747 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
747 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
748 "dev": true
748 "dev": true
749 },
749 },
750 "levn": {
750 "levn": {
751 "version": "0.3.0",
751 "version": "0.3.0",
752 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
752 "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
753 "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
753 "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
754 "dev": true,
754 "dev": true,
755 "requires": {
755 "requires": {
756 "prelude-ls": "~1.1.2",
756 "prelude-ls": "~1.1.2",
757 "type-check": "~0.3.2"
757 "type-check": "~0.3.2"
758 }
758 }
759 },
759 },
760 "lodash": {
760 "lodash": {
761 "version": "4.17.15",
761 "version": "4.17.15",
762 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
762 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
763 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
763 "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
764 "dev": true
764 "dev": true
765 },
765 },
766 "mimic-fn": {
766 "mimic-fn": {
767 "version": "1.2.0",
767 "version": "1.2.0",
768 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
768 "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
769 "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
769 "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
770 "dev": true
770 "dev": true
771 },
771 },
772 "minimatch": {
772 "minimatch": {
773 "version": "3.0.4",
773 "version": "3.0.4",
774 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
774 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
775 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
775 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
776 "dev": true,
776 "dev": true,
777 "requires": {
777 "requires": {
778 "brace-expansion": "^1.1.7"
778 "brace-expansion": "^1.1.7"
779 }
779 }
780 },
780 },
781 "minimist": {
781 "minimist": {
782 "version": "0.0.8",
782 "version": "0.0.8",
783 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
783 "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
784 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
784 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
785 "dev": true
785 "dev": true
786 },
786 },
787 "mkdirp": {
787 "mkdirp": {
788 "version": "0.5.1",
788 "version": "0.5.1",
789 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
789 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
790 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
790 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
791 "dev": true,
791 "dev": true,
792 "requires": {
792 "requires": {
793 "minimist": "0.0.8"
793 "minimist": "0.0.8"
794 }
794 }
795 },
795 },
796 "ms": {
796 "ms": {
797 "version": "2.1.2",
797 "version": "2.1.2",
798 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
798 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
799 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
799 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
800 "dev": true
800 "dev": true
801 },
801 },
802 "mute-stream": {
802 "mute-stream": {
803 "version": "0.0.7",
803 "version": "0.0.7",
804 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
804 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
805 "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
805 "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
806 "dev": true
806 "dev": true
807 },
807 },
808 "natural-compare": {
808 "natural-compare": {
809 "version": "1.4.0",
809 "version": "1.4.0",
810 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
810 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
811 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
811 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
812 "dev": true
812 "dev": true
813 },
813 },
814 "nice-try": {
814 "nice-try": {
815 "version": "1.0.5",
815 "version": "1.0.5",
816 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
816 "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
817 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
817 "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
818 "dev": true
818 "dev": true
819 },
819 },
820 "object-inspect": {
820 "object-inspect": {
821 "version": "1.6.0",
821 "version": "1.6.0",
822 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
822 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
823 "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
823 "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
824 "dev": true
824 "dev": true
825 },
825 },
826 "once": {
826 "once": {
827 "version": "1.4.0",
827 "version": "1.4.0",
828 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
828 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
829 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
829 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
830 "dev": true,
830 "dev": true,
831 "requires": {
831 "requires": {
832 "wrappy": "1"
832 "wrappy": "1"
833 }
833 }
834 },
834 },
835 "onetime": {
835 "onetime": {
836 "version": "2.0.1",
836 "version": "2.0.1",
837 "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
837 "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
838 "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
838 "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
839 "dev": true,
839 "dev": true,
840 "requires": {
840 "requires": {
841 "mimic-fn": "^1.0.0"
841 "mimic-fn": "^1.0.0"
842 }
842 }
843 },
843 },
844 "optionator": {
844 "optionator": {
845 "version": "0.8.2",
845 "version": "0.8.2",
846 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
846 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
847 "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
847 "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
848 "dev": true,
848 "dev": true,
849 "requires": {
849 "requires": {
850 "deep-is": "~0.1.3",
850 "deep-is": "~0.1.3",
851 "fast-levenshtein": "~2.0.4",
851 "fast-levenshtein": "~2.0.4",
852 "levn": "~0.3.0",
852 "levn": "~0.3.0",
853 "prelude-ls": "~1.1.2",
853 "prelude-ls": "~1.1.2",
854 "type-check": "~0.3.2",
854 "type-check": "~0.3.2",
855 "wordwrap": "~1.0.0"
855 "wordwrap": "~1.0.0"
856 }
856 }
857 },
857 },
858 "os-tmpdir": {
858 "os-tmpdir": {
859 "version": "1.0.2",
859 "version": "1.0.2",
860 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
860 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
861 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
861 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
862 "dev": true
862 "dev": true
863 },
863 },
864 "parent-module": {
864 "parent-module": {
865 "version": "1.0.1",
865 "version": "1.0.1",
866 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
866 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
867 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
867 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
868 "dev": true,
868 "dev": true,
869 "requires": {
869 "requires": {
870 "callsites": "^3.0.0"
870 "callsites": "^3.0.0"
871 }
871 }
872 },
872 },
873 "path-is-absolute": {
873 "path-is-absolute": {
874 "version": "1.0.1",
874 "version": "1.0.1",
875 "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
875 "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
876 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
876 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
877 "dev": true
877 "dev": true
878 },
878 },
879 "path-key": {
879 "path-key": {
880 "version": "2.0.1",
880 "version": "2.0.1",
881 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
881 "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
882 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
882 "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
883 "dev": true
883 "dev": true
884 },
884 },
885 "path-parse": {
885 "path-parse": {
886 "version": "1.0.6",
886 "version": "1.0.6",
887 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
887 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
888 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
888 "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
889 "dev": true
889 "dev": true
890 },
890 },
891 "prelude-ls": {
891 "prelude-ls": {
892 "version": "1.1.2",
892 "version": "1.1.2",
893 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
893 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
894 "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
894 "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
895 "dev": true
895 "dev": true
896 },
896 },
897 "progress": {
897 "progress": {
898 "version": "2.0.3",
898 "version": "2.0.3",
899 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
899 "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
900 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
900 "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
901 "dev": true
901 "dev": true
902 },
902 },
903 "punycode": {
903 "punycode": {
904 "version": "2.1.1",
904 "version": "2.1.1",
905 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
905 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
906 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
906 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
907 "dev": true
907 "dev": true
908 },
908 },
909 "regexpp": {
909 "regexpp": {
910 "version": "2.0.1",
910 "version": "2.0.1",
911 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
911 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
912 "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
912 "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
913 "dev": true
913 "dev": true
914 },
914 },
915 "requirejs": {
915 "requirejs": {
916 "version": "2.3.6",
916 "version": "2.3.6",
917 "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
917 "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
918 "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
918 "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
919 "dev": true
919 "dev": true
920 },
920 },
921 "resolve": {
921 "resolve": {
922 "version": "1.11.1",
922 "version": "1.11.1",
923 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
923 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
924 "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
924 "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
925 "dev": true,
925 "dev": true,
926 "requires": {
926 "requires": {
927 "path-parse": "^1.0.6"
927 "path-parse": "^1.0.6"
928 }
928 }
929 },
929 },
930 "resolve-from": {
930 "resolve-from": {
931 "version": "4.0.0",
931 "version": "4.0.0",
932 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
932 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
933 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
933 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
934 "dev": true
934 "dev": true
935 },
935 },
936 "restore-cursor": {
936 "restore-cursor": {
937 "version": "2.0.0",
937 "version": "2.0.0",
938 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
938 "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
939 "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
939 "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
940 "dev": true,
940 "dev": true,
941 "requires": {
941 "requires": {
942 "onetime": "^2.0.0",
942 "onetime": "^2.0.0",
943 "signal-exit": "^3.0.2"
943 "signal-exit": "^3.0.2"
944 }
944 }
945 },
945 },
946 "resumer": {
946 "resumer": {
947 "version": "0.0.0",
947 "version": "0.0.0",
948 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
948 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
949 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
949 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
950 "dev": true,
950 "dev": true,
951 "requires": {
951 "requires": {
952 "through": "~2.3.4"
952 "through": "~2.3.4"
953 }
953 }
954 },
954 },
955 "rimraf": {
955 "rimraf": {
956 "version": "2.6.3",
956 "version": "2.6.3",
957 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
957 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
958 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
958 "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
959 "dev": true,
959 "dev": true,
960 "requires": {
960 "requires": {
961 "glob": "^7.1.3"
961 "glob": "^7.1.3"
962 }
962 }
963 },
963 },
964 "run-async": {
964 "run-async": {
965 "version": "2.3.0",
965 "version": "2.3.0",
966 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
966 "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
967 "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
967 "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
968 "dev": true,
968 "dev": true,
969 "requires": {
969 "requires": {
970 "is-promise": "^2.1.0"
970 "is-promise": "^2.1.0"
971 }
971 }
972 },
972 },
973 "rxjs": {
973 "rxjs": {
974 "version": "6.5.3",
974 "version": "6.5.3",
975 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
975 "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
976 "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
976 "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
977 "dev": true,
977 "dev": true,
978 "requires": {
978 "requires": {
979 "tslib": "^1.9.0"
979 "tslib": "^1.9.0"
980 }
980 }
981 },
981 },
982 "safer-buffer": {
982 "safer-buffer": {
983 "version": "2.1.2",
983 "version": "2.1.2",
984 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
984 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
985 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
985 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
986 "dev": true
986 "dev": true
987 },
987 },
988 "semver": {
988 "semver": {
989 "version": "6.3.0",
989 "version": "6.3.0",
990 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
990 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
991 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
991 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
992 "dev": true
992 "dev": true
993 },
993 },
994 "shebang-command": {
994 "shebang-command": {
995 "version": "1.2.0",
995 "version": "1.2.0",
996 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
996 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
997 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
997 "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
998 "dev": true,
998 "dev": true,
999 "requires": {
999 "requires": {
1000 "shebang-regex": "^1.0.0"
1000 "shebang-regex": "^1.0.0"
1001 }
1001 }
1002 },
1002 },
1003 "shebang-regex": {
1003 "shebang-regex": {
1004 "version": "1.0.0",
1004 "version": "1.0.0",
1005 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1005 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
1006 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1006 "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
1007 "dev": true
1007 "dev": true
1008 },
1008 },
1009 "signal-exit": {
1009 "signal-exit": {
1010 "version": "3.0.2",
1010 "version": "3.0.2",
1011 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1011 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
1012 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
1012 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
1013 "dev": true
1013 "dev": true
1014 },
1014 },
1015 "slice-ansi": {
1015 "slice-ansi": {
1016 "version": "2.1.0",
1016 "version": "2.1.0",
1017 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
1017 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
1018 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
1018 "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
1019 "dev": true,
1019 "dev": true,
1020 "requires": {
1020 "requires": {
1021 "ansi-styles": "^3.2.0",
1021 "ansi-styles": "^3.2.0",
1022 "astral-regex": "^1.0.0",
1022 "astral-regex": "^1.0.0",
1023 "is-fullwidth-code-point": "^2.0.0"
1023 "is-fullwidth-code-point": "^2.0.0"
1024 }
1024 }
1025 },
1025 },
1026 "sprintf-js": {
1026 "sprintf-js": {
1027 "version": "1.0.3",
1027 "version": "1.0.3",
1028 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1028 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1029 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
1029 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
1030 "dev": true
1030 "dev": true
1031 },
1031 },
1032 "string-width": {
1032 "string-width": {
1033 "version": "2.1.1",
1033 "version": "2.1.1",
1034 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1034 "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1035 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1035 "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1036 "dev": true,
1036 "dev": true,
1037 "requires": {
1037 "requires": {
1038 "is-fullwidth-code-point": "^2.0.0",
1038 "is-fullwidth-code-point": "^2.0.0",
1039 "strip-ansi": "^4.0.0"
1039 "strip-ansi": "^4.0.0"
1040 },
1040 },
1041 "dependencies": {
1041 "dependencies": {
1042 "strip-ansi": {
1042 "strip-ansi": {
1043 "version": "4.0.0",
1043 "version": "4.0.0",
1044 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1044 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1045 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1045 "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
1046 "dev": true,
1046 "dev": true,
1047 "requires": {
1047 "requires": {
1048 "ansi-regex": "^3.0.0"
1048 "ansi-regex": "^3.0.0"
1049 }
1049 }
1050 }
1050 }
1051 }
1051 }
1052 },
1052 },
1053 "string.prototype.trim": {
1053 "string.prototype.trim": {
1054 "version": "1.1.2",
1054 "version": "1.1.2",
1055 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
1055 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
1056 "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
1056 "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
1057 "dev": true,
1057 "dev": true,
1058 "requires": {
1058 "requires": {
1059 "define-properties": "^1.1.2",
1059 "define-properties": "^1.1.2",
1060 "es-abstract": "^1.5.0",
1060 "es-abstract": "^1.5.0",
1061 "function-bind": "^1.0.2"
1061 "function-bind": "^1.0.2"
1062 }
1062 }
1063 },
1063 },
1064 "string.prototype.trimleft": {
1064 "string.prototype.trimleft": {
1065 "version": "2.1.0",
1065 "version": "2.1.0",
1066 "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
1066 "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
1067 "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
1067 "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
1068 "dev": true,
1068 "dev": true,
1069 "requires": {
1069 "requires": {
1070 "define-properties": "^1.1.3",
1070 "define-properties": "^1.1.3",
1071 "function-bind": "^1.1.1"
1071 "function-bind": "^1.1.1"
1072 }
1072 }
1073 },
1073 },
1074 "string.prototype.trimright": {
1074 "string.prototype.trimright": {
1075 "version": "2.1.0",
1075 "version": "2.1.0",
1076 "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
1076 "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
1077 "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
1077 "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
1078 "dev": true,
1078 "dev": true,
1079 "requires": {
1079 "requires": {
1080 "define-properties": "^1.1.3",
1080 "define-properties": "^1.1.3",
1081 "function-bind": "^1.1.1"
1081 "function-bind": "^1.1.1"
1082 }
1082 }
1083 },
1083 },
1084 "strip-ansi": {
1084 "strip-ansi": {
1085 "version": "5.2.0",
1085 "version": "5.2.0",
1086 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1086 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
1087 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1087 "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
1088 "dev": true,
1088 "dev": true,
1089 "requires": {
1089 "requires": {
1090 "ansi-regex": "^4.1.0"
1090 "ansi-regex": "^4.1.0"
1091 },
1091 },
1092 "dependencies": {
1092 "dependencies": {
1093 "ansi-regex": {
1093 "ansi-regex": {
1094 "version": "4.1.0",
1094 "version": "4.1.0",
1095 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1095 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
1096 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1096 "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
1097 "dev": true
1097 "dev": true
1098 }
1098 }
1099 }
1099 }
1100 },
1100 },
1101 "strip-json-comments": {
1101 "strip-json-comments": {
1102 "version": "3.0.1",
1102 "version": "3.0.1",
1103 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
1103 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
1104 "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
1104 "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
1105 "dev": true
1105 "dev": true
1106 },
1106 },
1107 "supports-color": {
1107 "supports-color": {
1108 "version": "5.5.0",
1108 "version": "5.5.0",
1109 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1109 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1110 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1110 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1111 "dev": true,
1111 "dev": true,
1112 "requires": {
1112 "requires": {
1113 "has-flag": "^3.0.0"
1113 "has-flag": "^3.0.0"
1114 }
1114 }
1115 },
1115 },
1116 "table": {
1116 "table": {
1117 "version": "5.4.6",
1117 "version": "5.4.6",
1118 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
1118 "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
1119 "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
1119 "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
1120 "dev": true,
1120 "dev": true,
1121 "requires": {
1121 "requires": {
1122 "ajv": "^6.10.2",
1122 "ajv": "^6.10.2",
1123 "lodash": "^4.17.14",
1123 "lodash": "^4.17.14",
1124 "slice-ansi": "^2.1.0",
1124 "slice-ansi": "^2.1.0",
1125 "string-width": "^3.0.0"
1125 "string-width": "^3.0.0"
1126 },
1126 },
1127 "dependencies": {
1127 "dependencies": {
1128 "string-width": {
1128 "string-width": {
1129 "version": "3.1.0",
1129 "version": "3.1.0",
1130 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
1130 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
1131 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
1131 "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
1132 "dev": true,
1132 "dev": true,
1133 "requires": {
1133 "requires": {
1134 "emoji-regex": "^7.0.1",
1134 "emoji-regex": "^7.0.1",
1135 "is-fullwidth-code-point": "^2.0.0",
1135 "is-fullwidth-code-point": "^2.0.0",
1136 "strip-ansi": "^5.1.0"
1136 "strip-ansi": "^5.1.0"
1137 }
1137 }
1138 }
1138 }
1139 }
1139 }
1140 },
1140 },
1141 "tape": {
1141 "tape": {
1142 "version": "4.11.0",
1142 "version": "4.11.0",
1143 "resolved": "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz",
1143 "resolved": "https://registry.npmjs.org/tape/-/tape-4.11.0.tgz",
1144 "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==",
1144 "integrity": "sha512-yixvDMX7q7JIs/omJSzSZrqulOV51EC9dK8dM0TzImTIkHWfe2/kFyL5v+d9C+SrCMaICk59ujsqFAVidDqDaA==",
1145 "dev": true,
1145 "dev": true,
1146 "requires": {
1146 "requires": {
1147 "deep-equal": "~1.0.1",
1147 "deep-equal": "~1.0.1",
1148 "defined": "~1.0.0",
1148 "defined": "~1.0.0",
1149 "for-each": "~0.3.3",
1149 "for-each": "~0.3.3",
1150 "function-bind": "~1.1.1",
1150 "function-bind": "~1.1.1",
1151 "glob": "~7.1.4",
1151 "glob": "~7.1.4",
1152 "has": "~1.0.3",
1152 "has": "~1.0.3",
1153 "inherits": "~2.0.4",
1153 "inherits": "~2.0.4",
1154 "minimist": "~1.2.0",
1154 "minimist": "~1.2.0",
1155 "object-inspect": "~1.6.0",
1155 "object-inspect": "~1.6.0",
1156 "resolve": "~1.11.1",
1156 "resolve": "~1.11.1",
1157 "resumer": "~0.0.0",
1157 "resumer": "~0.0.0",
1158 "string.prototype.trim": "~1.1.2",
1158 "string.prototype.trim": "~1.1.2",
1159 "through": "~2.3.8"
1159 "through": "~2.3.8"
1160 },
1160 },
1161 "dependencies": {
1161 "dependencies": {
1162 "deep-equal": {
1162 "deep-equal": {
1163 "version": "1.0.1",
1163 "version": "1.0.1",
1164 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
1164 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
1165 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
1165 "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
1166 "dev": true
1166 "dev": true
1167 },
1167 },
1168 "defined": {
1168 "defined": {
1169 "version": "1.0.0",
1169 "version": "1.0.0",
1170 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1170 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1171 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
1171 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
1172 "dev": true
1172 "dev": true
1173 },
1173 },
1174 "inherits": {
1174 "inherits": {
1175 "version": "2.0.4",
1175 "version": "2.0.4",
1176 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1176 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1177 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1177 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1178 "dev": true
1178 "dev": true
1179 },
1179 },
1180 "minimist": {
1180 "minimist": {
1181 "version": "1.2.0",
1181 "version": "1.2.0",
1182 "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1182 "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1183 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
1183 "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
1184 "dev": true
1184 "dev": true
1185 }
1185 }
1186 }
1186 }
1187 },
1187 },
1188 "text-table": {
1188 "text-table": {
1189 "version": "0.2.0",
1189 "version": "0.2.0",
1190 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1190 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1191 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1191 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1192 "dev": true
1192 "dev": true
1193 },
1193 },
1194 "through": {
1194 "through": {
1195 "version": "2.3.8",
1195 "version": "2.3.8",
1196 "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
1196 "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
1197 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
1197 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
1198 "dev": true
1198 "dev": true
1199 },
1199 },
1200 "tmp": {
1200 "tmp": {
1201 "version": "0.0.33",
1201 "version": "0.0.33",
1202 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
1202 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
1203 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
1203 "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
1204 "dev": true,
1204 "dev": true,
1205 "requires": {
1205 "requires": {
1206 "os-tmpdir": "~1.0.2"
1206 "os-tmpdir": "~1.0.2"
1207 }
1207 }
1208 },
1208 },
1209 "tslib": {
1209 "tslib": {
1210 "version": "1.10.0",
1210 "version": "1.10.0",
1211 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
1211 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
1212 "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
1212 "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
1213 "dev": true
1213 "dev": true
1214 },
1214 },
1215 "tslint": {
1215 "tslint": {
1216 "version": "5.18.0",
1216 "version": "5.18.0",
1217 "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
1217 "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz",
1218 "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
1218 "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==",
1219 "dev": true,
1219 "dev": true,
1220 "requires": {
1220 "requires": {
1221 "@babel/code-frame": "^7.0.0",
1221 "@babel/code-frame": "^7.0.0",
1222 "builtin-modules": "^1.1.1",
1222 "builtin-modules": "^1.1.1",
1223 "chalk": "^2.3.0",
1223 "chalk": "^2.3.0",
1224 "commander": "^2.12.1",
1224 "commander": "^2.12.1",
1225 "diff": "^3.2.0",
1225 "diff": "^3.2.0",
1226 "glob": "^7.1.1",
1226 "glob": "^7.1.1",
1227 "js-yaml": "^3.13.1",
1227 "js-yaml": "^3.13.1",
1228 "minimatch": "^3.0.4",
1228 "minimatch": "^3.0.4",
1229 "mkdirp": "^0.5.1",
1229 "mkdirp": "^0.5.1",
1230 "resolve": "^1.3.2",
1230 "resolve": "^1.3.2",
1231 "semver": "^5.3.0",
1231 "semver": "^5.3.0",
1232 "tslib": "^1.8.0",
1232 "tslib": "^1.8.0",
1233 "tsutils": "^2.29.0"
1233 "tsutils": "^2.29.0"
1234 },
1234 },
1235 "dependencies": {
1235 "dependencies": {
1236 "semver": {
1236 "semver": {
1237 "version": "5.7.1",
1237 "version": "5.7.1",
1238 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1238 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1239 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1239 "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1240 "dev": true
1240 "dev": true
1241 }
1241 }
1242 }
1242 }
1243 },
1243 },
1244 "tsutils": {
1244 "tsutils": {
1245 "version": "2.29.0",
1245 "version": "2.29.0",
1246 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
1246 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
1247 "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
1247 "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
1248 "dev": true,
1248 "dev": true,
1249 "requires": {
1249 "requires": {
1250 "tslib": "^1.8.1"
1250 "tslib": "^1.8.1"
1251 }
1251 }
1252 },
1252 },
1253 "type-check": {
1253 "type-check": {
1254 "version": "0.3.2",
1254 "version": "0.3.2",
1255 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1255 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1256 "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
1256 "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
1257 "dev": true,
1257 "dev": true,
1258 "requires": {
1258 "requires": {
1259 "prelude-ls": "~1.1.2"
1259 "prelude-ls": "~1.1.2"
1260 }
1260 }
1261 },
1261 },
1262 "typescript": {
1262 "typescript": {
1263 "version": "3.6.4",
1263 "version": "4.1.5",
1264 "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
1264 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz",
1265 "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
1265 "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==",
1266 "dev": true
1266 "dev": true
1267 },
1267 },
1268 "uri-js": {
1268 "uri-js": {
1269 "version": "4.2.2",
1269 "version": "4.2.2",
1270 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
1270 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
1271 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
1271 "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
1272 "dev": true,
1272 "dev": true,
1273 "requires": {
1273 "requires": {
1274 "punycode": "^2.1.0"
1274 "punycode": "^2.1.0"
1275 }
1275 }
1276 },
1276 },
1277 "v8-compile-cache": {
1277 "v8-compile-cache": {
1278 "version": "2.1.0",
1278 "version": "2.1.0",
1279 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
1279 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
1280 "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
1280 "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
1281 "dev": true
1281 "dev": true
1282 },
1282 },
1283 "which": {
1283 "which": {
1284 "version": "1.3.1",
1284 "version": "1.3.1",
1285 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1285 "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1286 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1286 "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1287 "dev": true,
1287 "dev": true,
1288 "requires": {
1288 "requires": {
1289 "isexe": "^2.0.0"
1289 "isexe": "^2.0.0"
1290 }
1290 }
1291 },
1291 },
1292 "wordwrap": {
1292 "wordwrap": {
1293 "version": "1.0.0",
1293 "version": "1.0.0",
1294 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
1294 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
1295 "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
1295 "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
1296 "dev": true
1296 "dev": true
1297 },
1297 },
1298 "wrappy": {
1298 "wrappy": {
1299 "version": "1.0.2",
1299 "version": "1.0.2",
1300 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1300 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1301 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1301 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1302 "dev": true
1302 "dev": true
1303 },
1303 },
1304 "write": {
1304 "write": {
1305 "version": "1.0.3",
1305 "version": "1.0.3",
1306 "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
1306 "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
1307 "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
1307 "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
1308 "dev": true,
1308 "dev": true,
1309 "requires": {
1309 "requires": {
1310 "mkdirp": "^0.5.1"
1310 "mkdirp": "^0.5.1"
1311 }
1311 }
1312 }
1312 }
1313 }
1313 }
1314 }
1314 }
@@ -1,34 +1,34
1 {
1 {
2 "name": "@implab/core",
2 "name": "@implab/core",
3 "version": "0.0.1-dev",
3 "version": "0.0.1-dev",
4 "description": "Dependency injection, logging, simple and fast text template engine",
4 "description": "Dependency injection, logging, simple and fast text template engine",
5 "main": "main.js",
5 "main": "main.js",
6 "keywords": [
6 "keywords": [
7 "di",
7 "di",
8 "ioc",
8 "ioc",
9 "logging",
9 "logging",
10 "template engine",
10 "template engine",
11 "dependency injection"
11 "dependency injection"
12 ],
12 ],
13 "author": "Implab team",
13 "author": "Implab team",
14 "license": "BSD-2-Clause",
14 "license": "BSD-2-Clause",
15 "repository": "https://bitbucket.org/implab/implabjs",
15 "repository": "https://bitbucket.org/implab/implabjs",
16 "publishConfig": {
16 "publishConfig": {
17 "access": "public"
17 "access": "public"
18 },
18 },
19 "peerDependencies": {
19 "peerDependencies": {
20 "dojo": "^1.10.0"
20 "dojo": "^1.10.0"
21 },
21 },
22 "devDependencies": {
22 "devDependencies": {
23 "@types/node": "^8.0.0",
23 "@types/node": "^8.0.0",
24 "@types/requirejs": "~2.1.31",
24 "@types/requirejs": "~2.1.31",
25 "@types/tape": "~4.2.33",
25 "@types/tape": "~4.2.33",
26 "dojo": "~1.10.0",
26 "dojo": "~1.10.0",
27 "dojo-typings": "^1.11.9",
27 "dojo-typings": "^1.11.9",
28 "requirejs": "latest",
28 "requirejs": "latest",
29 "tape": "~4.11.0",
29 "tape": "~4.11.0",
30 "typescript": "~3.6.4",
30 "typescript": "~4.1.5",
31 "eslint": "6.1.0",
31 "eslint": "6.1.0",
32 "tslint": "5.18.0"
32 "tslint": "5.18.0"
33 }
33 }
34 }
34 }
@@ -1,520 +1,574
1 import { ICancellable, Constructor, IDestroyable, ICancellation, IRemovable } from "./interfaces";
1 import { ICancellable, Constructor, IDestroyable, ICancellation, IRemovable } from "./interfaces";
2
2
3 let _nextOid = 0;
3 let _nextOid = 0;
4 const _oid = typeof Symbol === "function" ?
4 const _oid = typeof Symbol === "function" ?
5 Symbol("__implab__oid__") :
5 Symbol("__implab__oid__") :
6 "__implab__oid__";
6 "__implab__oid__";
7
7
8 function _noop() { }
9
8 export function oid(instance: null | undefined): undefined;
10 export function oid(instance: null | undefined): undefined;
9 export function oid(instance: NonNullable<any>): string;
11 export function oid(instance: NonNullable<any>): string;
10 export function oid(instance: any): string | undefined {
12 export function oid(instance: any): string | undefined {
11 if (isNull(instance))
13 if (isNull(instance))
12 return undefined;
14 return undefined;
13
15
14 if (_oid in instance)
16 if (_oid in instance)
15 return instance[_oid];
17 return instance[_oid];
16 else
18 else
17 return (instance[_oid] = "oid_" + (++_nextOid));
19 return (instance[_oid] = "oid_" + (++_nextOid));
18 }
20 }
19
21
20 const cancellationNone: ICancellation = {
22 const cancellationNone: ICancellation = {
21 isSupported(): boolean {
23 isSupported(): boolean {
22 return false;
24 return false;
23 },
25 },
24
26
25 throwIfRequested(): void {
27 throwIfRequested(): void {
26 },
28 },
27
29
28 isRequested(): boolean {
30 isRequested(): boolean {
29 return false;
31 return false;
30 },
32 },
31
33
32 register(_cb: (e: any) => void): IDestroyable {
34 register(_cb: (e: any) => void): IDestroyable {
33 return destroyed;
35 return destroyed;
34 }
36 }
35 };
37 };
36
38
37 export function keys<T>(arg: T): (Extract<keyof T, string>)[] {
39 export function keys<T>(arg: T): (Extract<keyof T, string>)[] {
38 return isObject(arg) && arg ? Object.keys(arg) as (Extract<keyof T, string>)[] : [];
40 return isObject(arg) && arg ? Object.keys(arg) as (Extract<keyof T, string>)[] : [];
39 }
41 }
40
42
41 export function isKeyof<T>(k: string, target: T): k is Extract<keyof T, string> {
43 export function isKeyof<T>(k: string, target: T): k is Extract<keyof T, string> {
42 return target && typeof target === "object" && k in target;
44 return target && typeof target === "object" && k in target;
43 }
45 }
44
46
45 export function argumentNotNull(arg: any, name: string) {
47 export function argumentNotNull(arg: any, name: string) {
46 if (arg === null || arg === undefined)
48 if (arg === null || arg === undefined)
47 throw new Error("The argument " + name + " can't be null or undefined");
49 throw new Error("The argument " + name + " can't be null or undefined");
48 }
50 }
49
51
50 export function argumentNotEmptyString(arg: any, name: string) {
52 export function argumentNotEmptyString(arg: any, name: string) {
51 if (typeof (arg) !== "string" || !arg.length)
53 if (typeof (arg) !== "string" || !arg.length)
52 throw new Error("The argument '" + name + "' must be a not empty string");
54 throw new Error("The argument '" + name + "' must be a not empty string");
53 }
55 }
54
56
55 export function argumentNotEmptyArray(arg: any, name: string) {
57 export function argumentNotEmptyArray(arg: any, name: string) {
56 if (!(arg instanceof Array) || !arg.length)
58 if (!(arg instanceof Array) || !arg.length)
57 throw new Error("The argument '" + name + "' must be a not empty array");
59 throw new Error("The argument '" + name + "' must be a not empty array");
58 }
60 }
59
61
60 export function argumentOfType(arg: any, type: Constructor<{}>, name: string) {
62 export function argumentOfType(arg: any, type: Constructor<{}>, name: string) {
61 if (!(arg instanceof type))
63 if (!(arg instanceof type))
62 throw new Error("The argument '" + name + "' type doesn't match");
64 throw new Error("The argument '" + name + "' type doesn't match");
63 }
65 }
64
66
65 export function isNull(val: any): val is null | undefined {
67 export function isNull(val: any): val is null | undefined {
66 return (val === null || val === undefined);
68 return (val === null || val === undefined);
67 }
69 }
68
70
69 export type primitive = symbol | string | number | boolean | undefined | null;
71 export type primitive = symbol | string | number | boolean | undefined | null;
70
72
71 export function isPrimitive(val: any): val is primitive {
73 export function isPrimitive(val: any): val is primitive {
72 return (val === null || val === undefined || typeof (val) === "string" ||
74 return (val === null || val === undefined || typeof (val) === "string" ||
73 typeof (val) === "number" || typeof (val) === "boolean");
75 typeof (val) === "number" || typeof (val) === "boolean");
74 }
76 }
75
77
76 export function isObject<T>(value: T): value is Exclude<T & object, primitive> {
78 export function isObject<T>(value: T): value is Exclude<T & object, primitive> {
77 return !!(value && typeof value === "object");
79 return !!(value && typeof value === "object");
78 }
80 }
79
81
80 export function isInteger(val: any): val is number {
82 export function isInteger(val: any): val is number {
81 return parseInt(val, 10) === val;
83 return parseInt(val, 10) === val;
82 }
84 }
83
85
84 export function isNumber(val: any): val is number {
86 export function isNumber(val: any): val is number {
85 return parseFloat(val) === val;
87 return parseFloat(val) === val;
86 }
88 }
87
89
88 export function isString(val: any): val is string {
90 export function isString(val: any): val is string {
89 return typeof (val) === "string";
91 return typeof (val) === "string";
90 }
92 }
91
93
92 export function isPromise<T = any>(val: any): val is PromiseLike<T> {
94 export function isPromise<T = any>(val: any): val is PromiseLike<T> {
93 return !!(val && typeof val.then === "function");
95 return !!(val && typeof val.then === "function");
94 }
96 }
95
97
96 export function isCancellable(val: any): val is ICancellable {
98 export function isCancellable(val: any): val is ICancellable {
97 return !!(val && typeof val.cancel === "function");
99 return !!(val && typeof val.cancel === "function");
98 }
100 }
99
101
100 export function isNullOrEmptyString(val: any): val is ("" | null | undefined) {
102 export function isNullOrEmptyString(val: any): val is ("" | null | undefined) {
101 return (val === null || val === undefined ||
103 return (val === null || val === undefined ||
102 ((typeof (val) === "string" || val instanceof String) && val.length === 0));
104 ((typeof (val) === "string" || val instanceof String) && val.length === 0));
103 }
105 }
104
106
105 export function isNotEmptyArray<T = any>(arg: any): arg is T[] {
107 export function isNotEmptyArray<T = any>(arg: any): arg is T[] {
106 return (arg instanceof Array && arg.length > 0);
108 return (arg instanceof Array && arg.length > 0);
107 }
109 }
108
110
109 function _isStrictMode(this: any) {
111 function _isStrictMode(this: any) {
110 return !this;
112 return !this;
111 }
113 }
112
114
113 function _getNonStrictGlobal(this: any) {
115 function _getNonStrictGlobal(this: any) {
114 return this;
116 return this;
115 }
117 }
116
118
117 export function getGlobal() {
119 export function getGlobal() {
118 // in es3 we can't use indirect call to eval, since it will
120 // in es3 we can't use indirect call to eval, since it will
119 // be executed in the current call context.
121 // be executed in the current call context.
120 if (!_isStrictMode()) {
122 if (!_isStrictMode()) {
121 return _getNonStrictGlobal();
123 return _getNonStrictGlobal();
122 } else {
124 } else {
123 // tslint:disable-next-line:no-eval
125 // tslint:disable-next-line:no-eval
124 return eval.call(null, "this");
126 return eval.call(null, "this");
125 }
127 }
126 }
128 }
127
129
128 export function get(member: string, context?: object) {
130 export function get(member: string, context?: object) {
129 argumentNotEmptyString(member, "member");
131 argumentNotEmptyString(member, "member");
130 let that = context || getGlobal();
132 let that = context || getGlobal();
131 const parts = member.split(".");
133 const parts = member.split(".");
132 for (const m of parts) {
134 for (const m of parts) {
133 if (!m)
135 if (!m)
134 continue;
136 continue;
135 if (isNull(that = that[m]))
137 if (isNull(that = that[m]))
136 break;
138 break;
137 }
139 }
138 return that;
140 return that;
139 }
141 }
140
142
141 /**
143 /**
142 * ВыполняСт ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива, останавливаСтся, ΠΊΠΎΠ³Π΄Π°
144 * ВыполняСт ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива, останавливаСтся, ΠΊΠΎΠ³Π΄Π°
143 * Π»ΠΈΠ±ΠΎ достигнут ΠΊΠΎΠ½Π΅Ρ† массива, Π»ΠΈΠ±ΠΎ функция <c>cb</c> Π²Π΅Ρ€Π½ΡƒΠ»Π°
145 * Π»ΠΈΠ±ΠΎ достигнут ΠΊΠΎΠ½Π΅Ρ† массива, Π»ΠΈΠ±ΠΎ функция <c>cb</c> Π²Π΅Ρ€Π½ΡƒΠ»Π°
144 * Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
146 * Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
145 *
147 *
146 * @param {Array | Object} obj массив элСмСнтов для просмотра
148 * @param {Array | Object} obj массив элСмСнтов для просмотра
147 * @param {Function} cb функция, вызываСмая для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта
149 * @param {Function} cb функция, вызываСмая для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта
148 * @param {Object} thisArg Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π² качСствС
150 * @param {Object} thisArg Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π² качСствС
149 * <c>this</c> Π² <c>cb</c>.
151 * <c>this</c> Π² <c>cb</c>.
150 * @returns {void}
152 * @returns {void}
151 */
153 */
152 export function each<T>(obj: T, cb: <X extends Extract<keyof T, string>>(v: NonNullable<T[X]>, k: X) => void): void;
154 export function each<T>(obj: T, cb: <X extends Extract<keyof T, string>>(v: NonNullable<T[X]>, k: X) => void): void;
153 export function each<T>(array: T[], cb: (v: T, i: number) => void): void;
155 export function each<T>(array: T[], cb: (v: T, i: number) => void): void;
154 export function each(obj: any, cb: any, thisArg?: any): any;
156 export function each(obj: any, cb: any, thisArg?: any): any;
155 export function each(obj: any, cb: any, thisArg?: any) {
157 export function each(obj: any, cb: any, thisArg?: any) {
156 argumentNotNull(cb, "cb");
158 argumentNotNull(cb, "cb");
157 if (obj instanceof Array) {
159 if (obj instanceof Array) {
158 let v: any;
160 let v: any;
159 for (let i = 0; i < obj.length; i++) {
161 for (let i = 0; i < obj.length; i++) {
160 v = obj[i];
162 v = obj[i];
161 if (v !== undefined)
163 if (v !== undefined)
162 cb.call(thisArg, v, i);
164 cb.call(thisArg, v, i);
163 }
165 }
164 } else {
166 } else {
165 Object.keys(obj).forEach(k => obj[k] !== undefined && cb.call(thisArg, obj[k], k));
167 Object.keys(obj).forEach(k => obj[k] !== undefined && cb.call(thisArg, obj[k], k));
166 }
168 }
167 }
169 }
168
170
169 /** Copies property values from a source object to the destination and returns
171 /** Copies property values from a source object to the destination and returns
170 * the destination object.
172 * the destination object.
171 *
173 *
172 * @param dest The destination object into which properties from the source
174 * @param dest The destination object into which properties from the source
173 * object will be copied.
175 * object will be copied.
174 * @param source The source of values which will be copied to the destination
176 * @param source The source of values which will be copied to the destination
175 * object.
177 * object.
176 * @param template An optional parameter specifies which properties should be
178 * @param template An optional parameter specifies which properties should be
177 * copied from the source and how to map them to the destination. If the
179 * copied from the source and how to map them to the destination. If the
178 * template is an array it contains the list of property names to copy from the
180 * template is an array it contains the list of property names to copy from the
179 * source to the destination. In case of object the templates contains the map
181 * source to the destination. In case of object the templates contains the map
180 * where keys are property names in the source and the values are property
182 * where keys are property names in the source and the values are property
181 * names in the destination object. If the template isn't specified then the
183 * names in the destination object. If the template isn't specified then the
182 * own properties of the source are entirely copied to the destination.
184 * own properties of the source are entirely copied to the destination.
183 *
185 *
184 */
186 */
185 export function mixin<T extends object, S extends object>(dest: T, source: S, template?: (keyof S)[]): T & S;
187 export function mixin<T extends object, S extends object>(dest: T, source: S, template?: (keyof S)[]): T & S;
186 export function mixin<T extends object, S extends object, R extends object = T>(dest: T, source: S, template: { [p in keyof S]?: keyof R; }): T & R;
188 export function mixin<T extends object, S extends object, R extends object = T>(dest: T, source: S, template: { [p in keyof S]?: keyof R; }): T & R;
187 export function mixin<T extends object, S extends object>(dest: T, source: S, template?: any): any {
189 export function mixin<T extends object, S extends object>(dest: T, source: S, template?: any): any {
188 argumentNotNull(dest, "dest");
190 argumentNotNull(dest, "dest");
189 const _res: any = dest as any;
191 const _res: any = dest as any;
190
192
191 if (isPrimitive(source))
193 if (isPrimitive(source))
192 return _res;
194 return _res;
193
195
194 if (template instanceof Array) {
196 if (template instanceof Array) {
195 template.forEach(p => {
197 template.forEach(p => {
196 if (isKeyof(p, source))
198 if (isKeyof(p, source))
197 _res[p] = source[p];
199 _res[p] = source[p];
198 });
200 });
199 } else if (template) {
201 } else if (template) {
200 keys(source).forEach(p => {
202 keys(source).forEach(p => {
201 if (isKeyof(p, template))
203 if (isKeyof(p, template))
202 _res[template[p]] = source[p];
204 _res[template[p]] = source[p];
203 });
205 });
204 } else {
206 } else {
205 keys(source).forEach(p => _res[p] = source[p]);
207 keys(source).forEach(p => _res[p] = source[p]);
206 }
208 }
207
209
208 return _res;
210 return _res;
209 }
211 }
210
212
211 /** Wraps the specified function to emulate an asynchronous execution.
213 /** Wraps the specified function to emulate an asynchronous execution.
212 * @param{Object} thisArg [Optional] Object which will be passed as 'this' to the function.
214 * @param{Object} thisArg [Optional] Object which will be passed as 'this' to the function.
213 * @param{Function|String} fn [Required] Function wich will be wrapped.
215 * @param{Function|String} fn [Required] Function wich will be wrapped.
214 */
216 */
215 export function async<T, F extends (...args: any[]) => T | PromiseLike<T>>(
217 export function async<T, F extends (...args: any[]) => T | PromiseLike<T>>(
216 fn: F,
218 fn: F,
217 thisArg?: ThisParameterType<F>
219 thisArg?: ThisParameterType<F>
218 ): (...args: Parameters<F>) => PromiseLike<T>;
220 ): (...args: Parameters<F>) => PromiseLike<T>;
219 export function async<T, M extends string, O extends { [m in M]?: (...args: any[]) => T | PromiseLike<T> }>(
221 export function async<T, M extends string, O extends { [m in M]?: (...args: any[]) => T | PromiseLike<T> }>(
220 fn: M,
222 fn: M,
221 thisArg: O
223 thisArg: O
222 ): (...args: Parameters<NonNullable<O[M]>>) => PromiseLike<T>;
224 ): (...args: Parameters<NonNullable<O[M]>>) => PromiseLike<T>;
223 export function async(_fn: any, thisArg: any): (...args: any[]) => PromiseLike<any> {
225 export function async(_fn: any, thisArg: any): (...args: any[]) => PromiseLike<any> {
224 let fn = _fn;
226 let fn = _fn;
225
227
226 if (arguments.length === 2 && !(fn instanceof Function))
228 if (arguments.length === 2 && !(fn instanceof Function))
227 fn = thisArg[fn];
229 fn = thisArg[fn];
228
230
229 if (fn == null)
231 if (fn == null)
230 throw new Error("The function must be specified");
232 throw new Error("The function must be specified");
231
233
232 function wrapresult(x: any, e?: any): PromiseLike<any> {
234 function wrapresult(x: any, e?: any): PromiseLike<any> {
233 if (e) {
235 if (e) {
234 return {
236 return {
235 then(cb, eb) {
237 then(cb, eb) {
236 try {
238 try {
237 return eb ? wrapresult(eb(e)) : this;
239 return eb ? wrapresult(eb(e)) : this;
238 } catch (e2) {
240 } catch (e2) {
239 return wrapresult(null, e2);
241 return wrapresult(null, e2);
240 }
242 }
241 }
243 }
242 };
244 };
243 } else {
245 } else {
244 if (x && x.then)
246 if (x && x.then)
245 return x;
247 return x;
246 return {
248 return {
247 then(cb) {
249 then(cb) {
248 try {
250 try {
249 return cb ? wrapresult(cb(x)) : this;
251 return cb ? wrapresult(cb(x)) : this;
250 } catch (e2) {
252 } catch (e2) {
251 return wrapresult(e2);
253 return wrapresult(e2);
252 }
254 }
253 }
255 }
254 };
256 };
255 }
257 }
256 }
258 }
257
259
258 return (...args) => {
260 return (...args) => {
259 try {
261 try {
260 return wrapresult(fn.apply(thisArg, args));
262 return wrapresult(fn.apply(thisArg, args));
261 } catch (e) {
263 } catch (e) {
262 return wrapresult(null, e);
264 return wrapresult(null, e);
263 }
265 }
264 };
266 };
265 }
267 }
266
268
267 export function delegate<T extends object, F extends (this: T, ...args: any[]) => any>(
269 export function delegate<T extends object, F extends (this: T, ...args: any[]) => any>(
268 target: T,
270 target: T,
269 method: F
271 method: F
270 ): OmitThisParameter<F>;
272 ): OmitThisParameter<F>;
271 export function delegate<M extends string, T extends { [m in M]?: (...args: any[]) => any; }>(
273 export function delegate<M extends string, T extends { [m in M]?: (...args: any[]) => any; }>(
272 target: T,
274 target: T,
273 method: M
275 method: M
274 ): OmitThisParameter<T[M]>;
276 ): OmitThisParameter<T[M]>;
275 export function delegate(target: any, _method: any): (...args: any[]) => any {
277 export function delegate(target: any, _method: any): (...args: any[]) => any {
276 let method: any;
278 let method: any;
277 if (!(_method instanceof Function)) {
279 if (!(_method instanceof Function)) {
278 argumentNotNull(target, "target");
280 argumentNotNull(target, "target");
279 method = target[_method];
281 method = target[_method];
280 if (!(method instanceof Function))
282 if (!(method instanceof Function))
281 throw new Error("'method' argument must be a Function or a method name");
283 throw new Error("'method' argument must be a Function or a method name");
282 } else {
284 } else {
283 method = _method;
285 method = _method;
284 }
286 }
285
287
286 return (...args) => {
288 return (...args) => {
287 return method.apply(target, args);
289 return method.apply(target, args);
288 };
290 };
289 }
291 }
290
292
293 /** Returns promise which will be resolved after the specified amount of time.
294 *
295 * @param timeMs The delay before the promise will be resolved in milliseconds.
296 * @param ct Optional. A cancellation token for the operation.
297 */
291 export function delay(timeMs: number, ct = cancellationNone) {
298 export function delay(timeMs: number, ct = cancellationNone) {
292 ct.throwIfRequested();
299 ct.throwIfRequested();
293 return new Promise((resolve, reject) => {
300 return new Promise<void>((resolve, reject) => {
294 const h = ct.register(e => {
301 const h = ct.register(e => {
295 clearTimeout(id);
302 clearTimeout(id);
296 reject(e);
303 reject(e);
297 // we don't nedd to unregister h, since ct is already disposed
304 // we don't nedd to unregister h, since ct is already disposed
298 });
305 });
299 const id = setTimeout(() => {
306 const id = setTimeout(() => {
300 h.destroy();
307 h.destroy();
301 resolve();
308 resolve();
302 }, timeMs);
309 }, timeMs);
303
310
304 });
311 });
305 }
312 }
306
313
314 export function debounce<T extends any[], R, This>(func: (this: This, ...args: T) => R | PromiseLike<R>, wait: number) {
315 let cancel: (e?: any) => void = _noop;
316
317 const fn = function executedFunction(this: This, ...args: T) {
318 return new Promise<R>((resolve, reject) => {
319
320 // used to cleanup currently allocated resources
321 const _cleanup = () => {
322 cancel = _noop;
323 clearTimeout(handle);
324 };
325
326 // used in case of cancellation of the current operation
327 const _cancel = (e: any) => {
328 _cleanup();
329 reject(e);
330 };
331
332 // performs actual work
333 const _later = () => {
334 _cleanup();
335 resolve(func.apply(this, args));
336 };
337
338 // cancel previously queued operation
339 if (cancel !== _noop)
340 cancel(new Error("Operation cancelled due to debouncing"));
341 cancel = _cancel;
342
343 const handle = setTimeout(_later, wait);
344 });
345 };
346
347 fn.cancel = (e?: any) => cancel(e);
348
349 fn.applyAsync = async (thisArg: This, args: T, ct: ICancellation) => {
350 const h = ct.register(cancel);
351 try {
352 await fn.apply(thisArg, args);
353 } finally {
354 h.destroy();
355 }
356 };
357
358 return fn;
359 }
360
307 /** Returns resolved promise, awaiting this method will cause the asynchronous
361 /** Returns resolved promise, awaiting this method will cause the asynchronous
308 * completion of the rest of the code.
362 * completion of the rest of the code.
309 */
363 */
310 export function fork() {
364 export function fork() {
311 return Promise.resolve();
365 return Promise.resolve();
312 }
366 }
313
367
314 /** Always throws Error, can be used as a stub for the methods which should be
368 /** Always throws Error, can be used as a stub for the methods which should be
315 * assigned later and are required to be not null.
369 * assigned later and are required to be not null.
316 */
370 */
317 export function notImplemented(): never {
371 export function notImplemented(): never {
318 throw new Error("Not implemented");
372 throw new Error("Not implemented");
319 }
373 }
320 /**
374 /**
321 * Iterates over the specified array of items and calls the callback `cb`, if
375 * Iterates over the specified array of items and calls the callback `cb`, if
322 * the result of the callback is a promise the next item from the array will be
376 * the result of the callback is a promise the next item from the array will be
323 * proceeded after the promise is resolved.
377 * proceeded after the promise is resolved.
324 *
378 *
325 */
379 */
326 export function pmap<T, T2>(
380 export function pmap<T, T2>(
327 items: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
381 items: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
328 cb: (item: T, i: number) => T2 | PromiseLike<T2>
382 cb: (item: T, i: number) => T2 | PromiseLike<T2>
329 ): T2[] | PromiseLike<T2[]> {
383 ): T2[] | PromiseLike<T2[]> {
330 argumentNotNull(cb, "cb");
384 argumentNotNull(cb, "cb");
331
385
332 if (isPromise(items)) {
386 if (isPromise(items)) {
333 return items.then(data => pmap(data, cb));
387 return items.then(data => pmap(data, cb));
334 } else {
388 } else {
335
389
336 if (isNull(items) || !items.length)
390 if (isNull(items) || !items.length)
337 return [];
391 return [];
338
392
339 let i = 0;
393 let i = 0;
340 const result = new Array<T2>();
394 const result = new Array<T2>();
341
395
342 const next = (): any => {
396 const next = (): any => {
343 while (i < items.length) {
397 while (i < items.length) {
344 const r = cb(items[i], i);
398 const r = cb(items[i], i);
345 const ri = i;
399 const ri = i;
346 i++;
400 i++;
347 if (isPromise(r)) {
401 if (isPromise(r)) {
348 return r.then(x => {
402 return r.then(x => {
349 result[ri] = x;
403 result[ri] = x;
350 return next();
404 return next();
351 });
405 });
352 } else {
406 } else {
353 result[ri] = r;
407 result[ri] = r;
354 }
408 }
355 }
409 }
356 return result;
410 return result;
357 };
411 };
358
412
359 return next();
413 return next();
360 }
414 }
361 }
415 }
362
416
363 export function pfor<T>(
417 export function pfor<T>(
364 items: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
418 items: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
365 cb: (item: T, i: number) => any
419 cb: (item: T, i: number) => any
366 ): void | PromiseLike<void> {
420 ): void | PromiseLike<void> {
367 argumentNotNull(cb, "cb");
421 argumentNotNull(cb, "cb");
368
422
369 if (isPromise(items)) {
423 if (isPromise(items)) {
370 return items.then(data => pfor(data, cb));
424 return items.then(data => pfor(data, cb));
371 } else {
425 } else {
372 if (isNull(items) || !items.length)
426 if (isNull(items) || !items.length)
373 return;
427 return;
374
428
375 let i = 0;
429 let i = 0;
376
430
377 const next = (): any => {
431 const next = (): any => {
378 while (i < items.length) {
432 while (i < items.length) {
379 const r = cb(items[i], i);
433 const r = cb(items[i], i);
380 i++;
434 i++;
381 if (isPromise(r))
435 if (isPromise(r))
382 return r.then(next);
436 return r.then(next);
383 }
437 }
384 };
438 };
385
439
386 return next();
440 return next();
387 }
441 }
388 }
442 }
389
443
390 export function first<T>(sequence: ArrayLike<T>): T;
444 export function first<T>(sequence: ArrayLike<T>): T;
391 export function first<T>(sequence: PromiseLike<ArrayLike<T>>): PromiseLike<T>;
445 export function first<T>(sequence: PromiseLike<ArrayLike<T>>): PromiseLike<T>;
392 export function first<T>(
446 export function first<T>(
393 sequence: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
447 sequence: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
394 cb?: (x: T) => void,
448 cb?: (x: T) => void,
395 err?: (x: Error) => void
449 err?: (x: Error) => void
396 ): void;
450 ): void;
397 /**
451 /**
398 * Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΈΠ»ΠΈ обСщания, Ссли Π²
452 * Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΈΠ»ΠΈ обСщания, Ссли Π²
399 * качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ массив.
453 * качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ массив.
400 *
454 *
401 * @param {Function} cb ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ
455 * @param {Function} cb ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ
402 * элСмСнт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² случаС успСха
456 * элСмСнт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² случаС успСха
403 * @param {Function} err ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ссли массив пустой, Π»ΠΈΠ±ΠΎ
457 * @param {Function} err ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ссли массив пустой, Π»ΠΈΠ±ΠΎ
404 * нС массив
458 * нС массив
405 *
459 *
406 * @remarks Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π½ΠΈ cb Π½ΠΈ err, Ρ‚ΠΎΠ³Π΄Π° функция Π²Π΅Ρ€Π½Π΅Ρ‚ Π»ΠΈΠ±ΠΎ
460 * @remarks Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π½ΠΈ cb Π½ΠΈ err, Ρ‚ΠΎΠ³Π΄Π° функция Π²Π΅Ρ€Π½Π΅Ρ‚ Π»ΠΈΠ±ΠΎ
407 * ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт.
461 * ΠΎΠ±Π΅Ρ‰Π°Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт.
408 * @async
462 * @async
409 */
463 */
410 export function first<T>(
464 export function first<T>(
411 sequence: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
465 sequence: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
412 cb?: (x: T) => void,
466 cb?: (x: T) => void,
413 err?: (x: Error) => void
467 err?: (x: Error) => void
414 ) {
468 ) {
415 if (isPromise(sequence)) {
469 if (isPromise(sequence)) {
416 return sequence.then(res => first(res, cb as any /* force to pass undefined cb */, err));
470 return sequence.then(res => first(res, cb as any /* force to pass undefined cb */, err));
417 } else if (sequence && "length" in sequence) {
471 } else if (sequence && "length" in sequence) {
418 if (sequence.length === 0) {
472 if (sequence.length === 0) {
419 if (err)
473 if (err)
420 return err(new Error("The sequence is empty"));
474 return err(new Error("The sequence is empty"));
421 else
475 else
422 throw new Error("The sequence is empty");
476 throw new Error("The sequence is empty");
423 } else if (cb) {
477 } else if (cb) {
424 return cb(sequence[0]);
478 return cb(sequence[0]);
425 } else {
479 } else {
426 return sequence[0];
480 return sequence[0];
427 }
481 }
428 } else {
482 } else {
429 if (err)
483 if (err)
430 return err(new Error("The sequence is required"));
484 return err(new Error("The sequence is required"));
431 else
485 else
432 throw new Error("The sequence is required");
486 throw new Error("The sequence is required");
433 }
487 }
434 }
488 }
435
489
436 export function firstWhere<T>(
490 export function firstWhere<T>(
437 sequence: ArrayLike<T>,
491 sequence: ArrayLike<T>,
438 predicate: (x: T) => boolean
492 predicate: (x: T) => boolean
439 ): T;
493 ): T;
440 export function firstWhere<T>(
494 export function firstWhere<T>(
441 sequence: PromiseLike<ArrayLike<T>>,
495 sequence: PromiseLike<ArrayLike<T>>,
442 predicate: (x: T) => boolean
496 predicate: (x: T) => boolean
443 ): PromiseLike<T>;
497 ): PromiseLike<T>;
444 export function firstWhere<T>(
498 export function firstWhere<T>(
445 sequence: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
499 sequence: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
446 predicate: (x: T) => boolean,
500 predicate: (x: T) => boolean,
447 cb: (x: T) => void,
501 cb: (x: T) => void,
448 err?: (x: Error) => void
502 err?: (x: Error) => void
449 ): void;
503 ): void;
450
504
451 export function firstWhere<T>(
505 export function firstWhere<T>(
452 sequence: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
506 sequence: ArrayLike<T> | PromiseLike<ArrayLike<T>>,
453 predicate?: (x: T) => boolean,
507 predicate?: (x: T) => boolean,
454 cb?: (x: T) => any,
508 cb?: (x: T) => any,
455 err?: (x: Error) => any
509 err?: (x: Error) => any
456 ) {
510 ) {
457 if (isPromise(sequence)) {
511 if (isPromise(sequence)) {
458 return sequence.then(res => firstWhere(
512 return sequence.then(res => firstWhere(
459 res,
513 res,
460 predicate as any /* force to pass undefined predicate */,
514 predicate as any /* force to pass undefined predicate */,
461 cb as any /* force to pass undefined cb */,
515 cb as any /* force to pass undefined cb */,
462 err)
516 err)
463 );
517 );
464 } else if (sequence && "length" in sequence) {
518 } else if (sequence && "length" in sequence) {
465 if (sequence.length === 0) {
519 if (sequence.length === 0) {
466 if (err)
520 if (err)
467 err(new Error("The sequence is empty"));
521 err(new Error("The sequence is empty"));
468 else
522 else
469 throw new Error("The sequence is empty");
523 throw new Error("The sequence is empty");
470 } else {
524 } else {
471 if (!predicate) {
525 if (!predicate) {
472 return cb ? cb(sequence[0]) && void (0) : sequence[0];
526 return cb ? cb(sequence[0]) && void (0) : sequence[0];
473 } else {
527 } else {
474 for (let i = 0; i < sequence.length; i++) {
528 for (let i = 0; i < sequence.length; i++) {
475 const v = sequence[i];
529 const v = sequence[i];
476 if (predicate(v))
530 if (predicate(v))
477 return cb ? cb(v) : v;
531 return cb ? cb(v) : v;
478 }
532 }
479 if (err)
533 if (err)
480 err(new Error("The sequence doesn't contain matching items"));
534 err(new Error("The sequence doesn't contain matching items"));
481 else
535 else
482 throw new Error("The sequence doesn't contain matching items");
536 throw new Error("The sequence doesn't contain matching items");
483 }
537 }
484 }
538 }
485 } else {
539 } else {
486 if (err)
540 if (err)
487 err(new Error("The sequence is required"));
541 err(new Error("The sequence is required"));
488 else
542 else
489 throw new Error("The sequence is required");
543 throw new Error("The sequence is required");
490 }
544 }
491 }
545 }
492
546
493 export function isDestroyable(d: any): d is IDestroyable {
547 export function isDestroyable(d: any): d is IDestroyable {
494 return !!(d && typeof d.destroy === "function");
548 return !!(d && typeof d.destroy === "function");
495 }
549 }
496
550
497 export function isRemovable(value: any): value is IRemovable {
551 export function isRemovable(value: any): value is IRemovable {
498 return !!(value && typeof value.remove === "function");
552 return !!(value && typeof value.remove === "function");
499 }
553 }
500
554
501 export function destroy(d: any) {
555 export function destroy(d: any) {
502 if (isDestroyable(d))
556 if (isDestroyable(d))
503 d.destroy();
557 d.destroy();
504 }
558 }
505
559
506 /**
560 /**
507 * Used to mark that the async operation isn't awaited intentionally.
561 * Used to mark that the async operation isn't awaited intentionally.
508 * @param p The promise which represents the async operation.
562 * @param p The promise which represents the async operation.
509 */
563 */
510 export function nowait(p: Promise<any>) {
564 export function nowait(p: Promise<any>) {
511 }
565 }
512
566
513 /** represents already destroyed object.
567 /** represents already destroyed object.
514 */
568 */
515 export const destroyed = {
569 export const destroyed = {
516 /** Calling to this method doesn't affect anything, noop.
570 /** Calling to this method doesn't affect anything, noop.
517 */
571 */
518 destroy() {
572 destroy() {
519 }
573 }
520 };
574 };
@@ -1,95 +1,156
1 import { Cancellation } from "../Cancellation";
1 import { Cancellation } from "../Cancellation";
2 import { first, isPromise, firstWhere, delay, nowait, notImplemented } from "../safe";
2 import { ICancellation } from "../interfaces";
3 import { first, isPromise, firstWhere, delay, nowait, notImplemented, debounce, fork } from "../safe";
3 import { test } from "./TestTraits";
4 import { test } from "./TestTraits";
4
5
5 test("await delay test", async t => {
6 test("await delay test", async t => {
6 // schedule delay
7 // schedule delay
7 let resolved = false;
8 let resolved = false;
8 let res = delay(0).then(() => resolved = true);
9 let res = delay(0).then(() => resolved = true);
9
10
10 t.false(resolved, "the delay should be async");
11 t.false(resolved, "the delay should be async");
11
12
12 await res;
13 await res;
13 t.pass("await delay");
14 t.pass("await delay");
14
15
15 // create cancellation token
16 // create cancellation token
16 let cancel: (e?: any) => void = notImplemented;
17 let cancel: (e?: any) => void = notImplemented;
17 const ct = new Cancellation(c => cancel = c);
18 const ct = new Cancellation(c => cancel = c);
18
19
19 // schedule delay
20 // schedule delay
20 resolved = false;
21 resolved = false;
21 res = delay(0, ct).then(() => resolved = true);
22 res = delay(0, ct).then(() => resolved = true);
22
23
23 t.false(resolved, "created delay with ct");
24 t.false(resolved, "created delay with ct");
24
25
25 // cancel
26 // cancel
26 cancel();
27 cancel();
27
28
28 try {
29 try {
29 await res;
30 await res;
30 t.fail("the delay should fail when it is cancelled");
31 t.fail("the delay should fail when it is cancelled");
31 } catch {
32 } catch {
32 t.pass("the delay is cancelled");
33 t.pass("the delay is cancelled");
33 }
34 }
34
35
35 t.throws(() => {
36 t.throws(() => {
36 // try schedule delay after the cancellation is requested
37 // try schedule delay after the cancellation is requested
37 nowait(delay(0, ct));
38 nowait(delay(0, ct));
38 }, "Should throw if cancelled before start");
39 }, "Should throw if cancelled before start");
39 });
40 });
40
41
41 test("sequemce test", async t => {
42 test("sequemce test", async t => {
42 const sequence = ["a", "b", "c"];
43 const sequence = ["a", "b", "c"];
43 const empty: string[] = [];
44 const empty: string[] = [];
44
45
45 // synchronous tests
46 // synchronous tests
46 t.equals(first(sequence), "a", "Should return the first element");
47 t.equals(first(sequence), "a", "Should return the first element");
47 t.equals(firstWhere(sequence, x => x === "b"), "b", "Should get the second element");
48 t.equals(firstWhere(sequence, x => x === "b"), "b", "Should get the second element");
48
49
49 let v: string | undefined;
50 let v: string | undefined;
50 let e: Error | undefined;
51 let e: Error | undefined;
51 first(sequence, x => v = x);
52 first(sequence, x => v = x);
52 t.equal(v, "a", "The callback should be called for the first element");
53 t.equal(v, "a", "The callback should be called for the first element");
53 firstWhere(sequence, x => x === "b", x => v = x);
54 firstWhere(sequence, x => x === "b", x => v = x);
54 t.equal(v, "b", "The callback should be called for the second element");
55 t.equal(v, "b", "The callback should be called for the second element");
55
56
56 t.throws(() => {
57 t.throws(() => {
57 first(empty);
58 first(empty);
58 }, "Should throw when the sequence is empty");
59 }, "Should throw when the sequence is empty");
59
60
60 t.throws(() => {
61 t.throws(() => {
61 firstWhere(empty, x => x === "b");
62 firstWhere(empty, x => x === "b");
62 }, "Should throw when the sequence is empty");
63 }, "Should throw when the sequence is empty");
63
64
64 t.throws(() => {
65 t.throws(() => {
65 first(empty, x => v = x);
66 first(empty, x => v = x);
66 }, "Should throw when the sequence is empty");
67 }, "Should throw when the sequence is empty");
67
68
68 t.throws(() => {
69 t.throws(() => {
69 firstWhere(empty, x => x === "b", x => v = x);
70 firstWhere(empty, x => x === "b", x => v = x);
70 }, "Should throw when the sequence is empty");
71 }, "Should throw when the sequence is empty");
71
72
72 t.throws(() => {
73 t.throws(() => {
73 firstWhere(sequence, x => x === "z");
74 firstWhere(sequence, x => x === "z");
74 }, "Should throw when the element isn't found");
75 }, "Should throw when the element isn't found");
75
76
76 t.throws(() => {
77 t.throws(() => {
77 firstWhere(sequence, x => x === "z", x => v = x);
78 firstWhere(sequence, x => x === "z", x => v = x);
78 }, "Should throw when the element isn't found");
79 }, "Should throw when the element isn't found");
79
80
80 first(empty, undefined, x => e = x);
81 first(empty, undefined, x => e = x);
81 t.true(e, "The errorback should be called for the empty sequence");
82 t.true(e, "The errorback should be called for the empty sequence");
82
83
83 // async tests
84 // async tests
84 const asyncSequence = Promise.resolve(sequence);
85 const asyncSequence = Promise.resolve(sequence);
85 const asyncEmptySequence = Promise.resolve(empty);
86 const asyncEmptySequence = Promise.resolve(empty);
86
87
87 const promise = first(asyncSequence);
88 const promise = first(asyncSequence);
88 t.true(isPromise(promise), "Should return promise");
89 t.true(isPromise(promise), "Should return promise");
89
90
90 v = await promise;
91 v = await promise;
91 t.equal(v, "a", "Should return the first element");
92 t.equal(v, "a", "Should return the first element");
92
93
93 v = await new Promise(resolve => first(asyncSequence, resolve));
94 v = await new Promise(resolve => first(asyncSequence, resolve));
94 t.equal(v, "a", "The callback should be called for the first element");
95 t.equal(v, "a", "The callback should be called for the first element");
95 });
96 });
97
98 test("debounce tests", async (t, trace) => {
99 let count = 0;
100 let rejected = 0;
101 function increment(step: number = 1) {
102 count += step;
103 return count;
104 }
105
106 const f = debounce(increment, 100);
107 f().then(undefined, () => rejected++);
108 f().then(undefined, () => rejected++);
109
110 await f(1);
111
112 t.equal(rejected, 2, "Previous operations should be rejected");
113 t.equal(count, 1, "The operation should run once");
114
115 const acc = debounce(
116 (...values: number[]) => count = values.reduce((a, v) => v + a, count),
117 100
118 );
119
120 acc(1, 2, 3).catch(() => { });
121 const result = acc(1, 2, 3);
122 acc.cancel();
123
124 try {
125 await result;
126 t.notOk("fn.cancel() should make current operation to throw an exception");
127 } catch {
128 t.ok("fn.cancel() should make current operation to throw an exception");
129 }
130
131 t.equal(count, 1, "fn.cancel() The operation should not run");
132
133 acc.cancel();
134 await acc(1, 2);
135 t.equal(count, 4, "The variable arguments list shoud be handled correctly");
136
137 // create cancellation token
138 let cancel: (e?: any) => void = notImplemented;
139 const ct = new Cancellation(c => cancel = c);
140
141 const d = debounce(async (ct2: ICancellation = Cancellation.none) => {
142 ct2.throwIfRequested();
143 trace.debug("do async increment");
144 await fork();
145 count++;
146 return count;
147 }, 0);
148
149 const p = d.applyAsync(null, [ct], ct).then(undefined, () => rejected++);
150 cancel();
151 await p;
152
153 t.equal(count, 4, "Cancellation token should prevent the function execution");
154 t.equal(rejected, 3, "Cancellation token should reject operation");
155
156 });
General Comments 0
You need to be logged in to leave comments. Login now