kykint

Switch to google cloud vision for OCR

Also separate text recognition code into a function
...@@ -17,8 +17,9 @@ const languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs' ...@@ -17,8 +17,9 @@ const languagedetect_api_url = 'https://openapi.naver.com/v1/papago/detectLangs'
17 const db = require('./db'); 17 const db = require('./db');
18 db.init(); 18 db.init();
19 19
20 -// Tesseract module for image recognition 20 +// Import Google Cloud client library and create a client
21 -const tesseract = require('node-tesseract-ocr'); 21 +const vision = require('@google-cloud/vision');
22 +const visionClient = new vision.ImageAnnotatorClient(config.gcloud);
22 23
23 // fs module for saving/removing image file upon/after recognition 24 // fs module for saving/removing image file upon/after recognition
24 const fs = require('fs'); 25 const fs = require('fs');
...@@ -136,6 +137,50 @@ function translate(user, message) { ...@@ -136,6 +137,50 @@ function translate(user, message) {
136 }); 137 });
137 } 138 }
138 139
140 +/**
141 + * Detect and read text from an image file using Google Cloud Vision API.
142 + *
143 + * @param {*} fileId Telegram-provided file id of image to read text from
144 + */
145 +function detectText(fileId) {
146 + return new Promise(function (resolve, reject) {
147 + // Download the image, which will later be deleted to avoid git detection
148 + bot.downloadFile(fileId, '.').then(function (filePath) {
149 + console.log('Image downloaded: ', filePath);
150 +
151 + visionClient.documentTextDetection(filePath)
152 + .then(function (result) {
153 + const fullTextAnnotation = result[0].fullTextAnnotation;
154 + const text = fullTextAnnotation.text;
155 +
156 + console.log('Text detection result: ', text);
157 +
158 + resolve(text);
159 + // Delete the image
160 + fs.unlink(filePath, function (error) {
161 + if (error) {
162 + console.log('Error deleting image: ', error);
163 + } else {
164 + console.log('Successfully deleted file ', filePath);
165 + }
166 + });
167 + }).catch(function (error) {
168 + console.log(error);
169 +
170 + reject(error);
171 + // Delete the image
172 + fs.unlink(filePath, function (error) {
173 + if (error) {
174 + console.log('Error deleting image: ', error);
175 + } else {
176 + console.log('Successfully deleted file ', filePath);
177 + }
178 + });
179 + });
180 + });
181 + });
182 +}
183 +
139 // [Any normal message which is not a command (not starting with '/')] 184 // [Any normal message which is not a command (not starting with '/')]
140 bot.onText(/^(?!\/)((.|\n)+)/, (msg, match) => { 185 bot.onText(/^(?!\/)((.|\n)+)/, (msg, match) => {
141 const user = msg.from; 186 const user = msg.from;
...@@ -199,43 +244,16 @@ bot.on('photo', (msg) => { ...@@ -199,43 +244,16 @@ bot.on('photo', (msg) => {
199 const photo = msg.photo[msg.photo.length - 1]; // Choose largest image possible 244 const photo = msg.photo[msg.photo.length - 1]; // Choose largest image possible
200 const photoId = photo.file_id; 245 const photoId = photo.file_id;
201 246
202 - // Download the image, which will later be deleted to avoid git detection 247 + // Detect text from given image
203 - bot.downloadFile(photoId, '.').then(function (filePath) { 248 + detectText(photoId).then(function (text) {
204 - console.log('Image downloaded: ', filePath);
205 -
206 - // Begin tesseract OCR
207 - tesseract.recognize(filePath).then(function (text) {
208 - console.log('OCR result: ', text);
209 -
210 // Translate the result 249 // Translate the result
211 translate(user, text).then(function (result) { 250 translate(user, text).then(function (result) {
212 // Send recognized text to user 251 // Send recognized text to user
213 bot.sendMessage(chatId, result); 252 bot.sendMessage(chatId, result);
214 - // Delete the image
215 - fs.unlink(filePath, function (error) {
216 - if (error) {
217 - console.log('Error deleting image: ', error);
218 - } else {
219 - console.log('Successfully deleted file ', filePath);
220 - }
221 - });
222 - });
223 - }).catch(function (error) {
224 - // OCR failed
225 - console.log('OCR error: ', error);
226 -
227 - // Delete the image
228 - fs.unlink(filePath, function (error) {
229 - if (error) {
230 - console.log('Error deleting image: ', error);
231 - } else {
232 - console.log('Successfully deleted file ', filePath);
233 - }
234 - });
235 }); 253 });
236 }).catch(function (error) { 254 }).catch(function (error) {
237 - // Image download failed 255 + // Text detection failed
238 - console.log('Image download error: ', error); 256 + console.log('Text detection error: ', error);
239 }); 257 });
240 }); 258 });
241 259
......
...@@ -10,5 +10,9 @@ module.exports = { ...@@ -10,5 +10,9 @@ module.exports = {
10 // https://developers.naver.com/apps/#/register 10 // https://developers.naver.com/apps/#/register
11 client_id: 'XXXXXXXXXXXXXXXXXXXX', 11 client_id: 'XXXXXXXXXXXXXXXXXXXX',
12 client_secret: 'XXXXXXXXXX' 12 client_secret: 'XXXXXXXXXX'
13 + },
14 + gcloud: {
15 + projectId: 'your_project_name',
16 + keyFilename: '/path/to/your/keyfile.json'
13 } 17 }
14 } 18 }
......
...@@ -4,6 +4,127 @@ ...@@ -4,6 +4,127 @@
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
7 + "@google-cloud/promisify": {
8 + "version": "1.0.0",
9 + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-1.0.0.tgz",
10 + "integrity": "sha512-B1wYzEqvM71QQgzc47xH3np40dxT17G76gMYew0q/fSwU/iWu7nNfxOU8Ataormee5j/n27G1muKU85LRdecww=="
11 + },
12 + "@google-cloud/vision": {
13 + "version": "1.0.0",
14 + "resolved": "https://registry.npmjs.org/@google-cloud/vision/-/vision-1.0.0.tgz",
15 + "integrity": "sha512-HPlZoBBHShwo8fFFGptKRbNtjI1R0klsbbjEuaRVtYtEtj4c6r9VJ74taeIhFPlvRdhOEVZUcqayAT1x0GfMYw==",
16 + "requires": {
17 + "@google-cloud/promisify": "^1.0.0",
18 + "google-gax": "^1.0.0",
19 + "is": "^3.2.1",
20 + "lodash.merge": "^4.6.1",
21 + "protobufjs": "^6.8.6"
22 + }
23 + },
24 + "@grpc/grpc-js": {
25 + "version": "0.4.2",
26 + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.4.2.tgz",
27 + "integrity": "sha512-EyYIgvTIpaOjHGu3fNybG86/bNXsRzzo+KvIyGD8JFQaAcXl5h3uqFUzwasyZM+Je8YWa1ggfZine3zPi2nvnQ==",
28 + "requires": {
29 + "semver": "^6.0.0"
30 + },
31 + "dependencies": {
32 + "semver": {
33 + "version": "6.1.1",
34 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
35 + "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ=="
36 + }
37 + }
38 + },
39 + "@grpc/proto-loader": {
40 + "version": "0.5.1",
41 + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.1.tgz",
42 + "integrity": "sha512-3y0FhacYAwWvyXshH18eDkUI40wT/uGio7MAegzY8lO5+wVsc19+1A7T0pPptae4kl7bdITL+0cHpnAPmryBjQ==",
43 + "requires": {
44 + "lodash.camelcase": "^4.3.0",
45 + "protobufjs": "^6.8.6"
46 + }
47 + },
48 + "@protobufjs/aspromise": {
49 + "version": "1.1.2",
50 + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
51 + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
52 + },
53 + "@protobufjs/base64": {
54 + "version": "1.1.2",
55 + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
56 + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
57 + },
58 + "@protobufjs/codegen": {
59 + "version": "2.0.4",
60 + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
61 + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
62 + },
63 + "@protobufjs/eventemitter": {
64 + "version": "1.1.0",
65 + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
66 + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
67 + },
68 + "@protobufjs/fetch": {
69 + "version": "1.1.0",
70 + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
71 + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
72 + "requires": {
73 + "@protobufjs/aspromise": "^1.1.1",
74 + "@protobufjs/inquire": "^1.1.0"
75 + }
76 + },
77 + "@protobufjs/float": {
78 + "version": "1.0.2",
79 + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
80 + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
81 + },
82 + "@protobufjs/inquire": {
83 + "version": "1.1.0",
84 + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
85 + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
86 + },
87 + "@protobufjs/path": {
88 + "version": "1.1.2",
89 + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
90 + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
91 + },
92 + "@protobufjs/pool": {
93 + "version": "1.1.0",
94 + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
95 + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
96 + },
97 + "@protobufjs/utf8": {
98 + "version": "1.1.0",
99 + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
100 + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
101 + },
102 + "@types/long": {
103 + "version": "4.0.0",
104 + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz",
105 + "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q=="
106 + },
107 + "@types/node": {
108 + "version": "10.14.8",
109 + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.8.tgz",
110 + "integrity": "sha512-I4+DbJEhLEg4/vIy/2gkWDvXBOOtPKV9EnLhYjMoqxcRW+TTZtUftkHktz/a8suoD5mUL7m6ReLrkPvSsCQQmw=="
111 + },
112 + "abort-controller": {
113 + "version": "3.0.0",
114 + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
115 + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
116 + "requires": {
117 + "event-target-shim": "^5.0.0"
118 + }
119 + },
120 + "agent-base": {
121 + "version": "4.2.1",
122 + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
123 + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
124 + "requires": {
125 + "es6-promisify": "^5.0.0"
126 + }
127 + },
7 "ajv": { 128 "ajv": {
8 "version": "6.10.0", 129 "version": "6.10.0",
9 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", 130 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
...@@ -24,6 +145,11 @@ ...@@ -24,6 +145,11 @@
24 "es-abstract": "^1.5.0" 145 "es-abstract": "^1.5.0"
25 } 146 }
26 }, 147 },
148 + "arrify": {
149 + "version": "2.0.1",
150 + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
151 + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
152 + },
27 "asn1": { 153 "asn1": {
28 "version": "0.2.4", 154 "version": "0.2.4",
29 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 155 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
...@@ -52,6 +178,11 @@ ...@@ -52,6 +178,11 @@
52 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", 178 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
53 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" 179 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
54 }, 180 },
181 + "base64-js": {
182 + "version": "1.3.0",
183 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
184 + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
185 + },
55 "bcrypt-pbkdf": { 186 "bcrypt-pbkdf": {
56 "version": "1.0.2", 187 "version": "1.0.2",
57 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 188 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
...@@ -60,6 +191,11 @@ ...@@ -60,6 +191,11 @@
60 "tweetnacl": "^0.14.3" 191 "tweetnacl": "^0.14.3"
61 } 192 }
62 }, 193 },
194 + "bignumber.js": {
195 + "version": "7.2.1",
196 + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz",
197 + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ=="
198 + },
63 "bl": { 199 "bl": {
64 "version": "1.2.2", 200 "version": "1.2.2",
65 "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", 201 "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
...@@ -79,6 +215,11 @@ ...@@ -79,6 +215,11 @@
79 "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz", 215 "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz",
80 "integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg==" 216 "integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg=="
81 }, 217 },
218 + "buffer-equal-constant-time": {
219 + "version": "1.0.1",
220 + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
221 + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
222 + },
82 "caseless": { 223 "caseless": {
83 "version": "0.12.0", 224 "version": "0.12.0",
84 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 225 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
...@@ -131,6 +272,17 @@ ...@@ -131,6 +272,17 @@
131 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 272 "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
132 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 273 "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
133 }, 274 },
275 + "duplexify": {
276 + "version": "3.7.1",
277 + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
278 + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
279 + "requires": {
280 + "end-of-stream": "^1.0.0",
281 + "inherits": "^2.0.1",
282 + "readable-stream": "^2.0.0",
283 + "stream-shift": "^1.0.0"
284 + }
285 + },
134 "ecc-jsbn": { 286 "ecc-jsbn": {
135 "version": "0.1.2", 287 "version": "0.1.2",
136 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 288 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
...@@ -140,6 +292,14 @@ ...@@ -140,6 +292,14 @@
140 "safer-buffer": "^2.1.0" 292 "safer-buffer": "^2.1.0"
141 } 293 }
142 }, 294 },
295 + "ecdsa-sig-formatter": {
296 + "version": "1.0.11",
297 + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
298 + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
299 + "requires": {
300 + "safe-buffer": "^5.0.1"
301 + }
302 + },
143 "end-of-stream": { 303 "end-of-stream": {
144 "version": "1.4.1", 304 "version": "1.4.1",
145 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", 305 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
...@@ -171,6 +331,24 @@ ...@@ -171,6 +331,24 @@
171 "is-symbol": "^1.0.2" 331 "is-symbol": "^1.0.2"
172 } 332 }
173 }, 333 },
334 + "es6-promise": {
335 + "version": "4.2.6",
336 + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
337 + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q=="
338 + },
339 + "es6-promisify": {
340 + "version": "5.0.0",
341 + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
342 + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
343 + "requires": {
344 + "es6-promise": "^4.0.3"
345 + }
346 + },
347 + "event-target-shim": {
348 + "version": "5.0.1",
349 + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
350 + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
351 + },
174 "eventemitter3": { 352 "eventemitter3": {
175 "version": "3.1.2", 353 "version": "3.1.2",
176 "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", 354 "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
...@@ -196,6 +374,11 @@ ...@@ -196,6 +374,11 @@
196 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 374 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
197 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 375 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
198 }, 376 },
377 + "fast-text-encoding": {
378 + "version": "1.0.0",
379 + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz",
380 + "integrity": "sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ=="
381 + },
199 "forever-agent": { 382 "forever-agent": {
200 "version": "0.6.1", 383 "version": "0.6.1",
201 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 384 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
...@@ -216,6 +399,26 @@ ...@@ -216,6 +399,26 @@
216 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 399 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
217 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 400 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
218 }, 401 },
402 + "gaxios": {
403 + "version": "2.0.1",
404 + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.0.1.tgz",
405 + "integrity": "sha512-c1NXovTxkgRJTIgB2FrFmOFg4YIV6N/bAa4f/FZ4jIw13Ql9ya/82x69CswvotJhbV3DiGnlTZwoq2NVXk2Irg==",
406 + "requires": {
407 + "abort-controller": "^3.0.0",
408 + "extend": "^3.0.2",
409 + "https-proxy-agent": "^2.2.1",
410 + "node-fetch": "^2.3.0"
411 + }
412 + },
413 + "gcp-metadata": {
414 + "version": "2.0.0",
415 + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-2.0.0.tgz",
416 + "integrity": "sha512-BN6KUUWo6WLkDRst+Y7bqpXq1PYMrKUecNLRdZESp7oYtMjWcZdAM0UYvcip8wb0GXNO/j8Z8HTccK4iYtMvyQ==",
417 + "requires": {
418 + "gaxios": "^2.0.0",
419 + "json-bigint": "^0.3.0"
420 + }
421 + },
219 "getpass": { 422 "getpass": {
220 "version": "0.1.7", 423 "version": "0.1.7",
221 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 424 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
...@@ -224,6 +427,81 @@ ...@@ -224,6 +427,81 @@
224 "assert-plus": "^1.0.0" 427 "assert-plus": "^1.0.0"
225 } 428 }
226 }, 429 },
430 + "google-auth-library": {
431 + "version": "4.1.0",
432 + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-4.1.0.tgz",
433 + "integrity": "sha512-vzKMvnXV1wNuoKEgGAp++l79j+U0pMYmihEgc8dH35pbdIoiUZqf2vRd9rNUqlwH1i1pYTMGxv6AdDb+4IPR+g==",
434 + "requires": {
435 + "arrify": "^2.0.0",
436 + "base64-js": "^1.3.0",
437 + "fast-text-encoding": "^1.0.0",
438 + "gaxios": "^2.0.0",
439 + "gcp-metadata": "^2.0.0",
440 + "gtoken": "^3.0.0",
441 + "jws": "^3.1.5",
442 + "lru-cache": "^5.0.0",
443 + "semver": "^6.0.0"
444 + },
445 + "dependencies": {
446 + "semver": {
447 + "version": "6.1.1",
448 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
449 + "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ=="
450 + }
451 + }
452 + },
453 + "google-gax": {
454 + "version": "1.1.1",
455 + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.1.1.tgz",
456 + "integrity": "sha512-30CLetXzyd9B1Ilqvt4q9ETaeSUgJ54ygwtLRDyPrvl6Wb+s2U7WdwCpfkrbWWmEUxh+FTQq5PMcyW8HQ+BiGA==",
457 + "requires": {
458 + "@grpc/grpc-js": "^0.4.0",
459 + "@grpc/proto-loader": "^0.5.1",
460 + "duplexify": "^3.6.0",
461 + "google-auth-library": "^4.0.0",
462 + "is-stream-ended": "^0.1.4",
463 + "lodash.at": "^4.6.0",
464 + "lodash.has": "^4.5.2",
465 + "protobufjs": "^6.8.8",
466 + "retry-request": "^4.0.0",
467 + "semver": "^6.0.0",
468 + "walkdir": "^0.4.0"
469 + },
470 + "dependencies": {
471 + "semver": {
472 + "version": "6.1.1",
473 + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
474 + "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ=="
475 + }
476 + }
477 + },
478 + "google-p12-pem": {
479 + "version": "2.0.0",
480 + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.0.tgz",
481 + "integrity": "sha512-n8eGSKzWOb9/EmSBIh81sPvsQM939QlpHMXahTZDzuRIpCu09x3Oaqz+mXGjL4TeCvSbcnOC0YZRvjkJ9s9lnA==",
482 + "requires": {
483 + "node-forge": "^0.8.0"
484 + }
485 + },
486 + "gtoken": {
487 + "version": "3.0.0",
488 + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-3.0.0.tgz",
489 + "integrity": "sha512-IY9HVi78D4ykVHn+ThI7rlcpdFtKyo9e9YLim9S9T3rp6fEnfeTexcrqzSpExVshPofsdauLKIa8dEnzX7ZLfQ==",
490 + "requires": {
491 + "gaxios": "^2.0.0",
492 + "google-p12-pem": "^2.0.0",
493 + "jws": "^3.1.5",
494 + "mime": "^2.2.0",
495 + "pify": "^4.0.0"
496 + },
497 + "dependencies": {
498 + "mime": {
499 + "version": "2.4.3",
500 + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz",
501 + "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw=="
502 + }
503 + }
504 + },
227 "har-schema": { 505 "har-schema": {
228 "version": "2.0.0", 506 "version": "2.0.0",
229 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 507 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
...@@ -261,11 +539,25 @@ ...@@ -261,11 +539,25 @@
261 "sshpk": "^1.7.0" 539 "sshpk": "^1.7.0"
262 } 540 }
263 }, 541 },
542 + "https-proxy-agent": {
543 + "version": "2.2.1",
544 + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
545 + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
546 + "requires": {
547 + "agent-base": "^4.1.0",
548 + "debug": "^3.1.0"
549 + }
550 + },
264 "inherits": { 551 "inherits": {
265 "version": "2.0.3", 552 "version": "2.0.3",
266 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 553 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
267 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 554 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
268 }, 555 },
556 + "is": {
557 + "version": "3.3.0",
558 + "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz",
559 + "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg=="
560 + },
269 "is-callable": { 561 "is-callable": {
270 "version": "1.1.4", 562 "version": "1.1.4",
271 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 563 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
...@@ -284,6 +576,11 @@ ...@@ -284,6 +576,11 @@
284 "has": "^1.0.1" 576 "has": "^1.0.1"
285 } 577 }
286 }, 578 },
579 + "is-stream-ended": {
580 + "version": "0.1.4",
581 + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
582 + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw=="
583 + },
287 "is-symbol": { 584 "is-symbol": {
288 "version": "1.0.2", 585 "version": "1.0.2",
289 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 586 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
...@@ -312,6 +609,14 @@ ...@@ -312,6 +609,14 @@
312 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 609 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
313 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 610 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
314 }, 611 },
612 + "json-bigint": {
613 + "version": "0.3.0",
614 + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz",
615 + "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=",
616 + "requires": {
617 + "bignumber.js": "^7.0.0"
618 + }
619 + },
315 "json-schema": { 620 "json-schema": {
316 "version": "0.2.3", 621 "version": "0.2.3",
317 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 622 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
...@@ -338,11 +643,63 @@ ...@@ -338,11 +643,63 @@
338 "verror": "1.10.0" 643 "verror": "1.10.0"
339 } 644 }
340 }, 645 },
646 + "jwa": {
647 + "version": "1.4.1",
648 + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
649 + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
650 + "requires": {
651 + "buffer-equal-constant-time": "1.0.1",
652 + "ecdsa-sig-formatter": "1.0.11",
653 + "safe-buffer": "^5.0.1"
654 + }
655 + },
656 + "jws": {
657 + "version": "3.2.2",
658 + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
659 + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
660 + "requires": {
661 + "jwa": "^1.4.1",
662 + "safe-buffer": "^5.0.1"
663 + }
664 + },
341 "lodash": { 665 "lodash": {
342 "version": "4.17.11", 666 "version": "4.17.11",
343 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", 667 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
344 "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" 668 "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
345 }, 669 },
670 + "lodash.at": {
671 + "version": "4.6.0",
672 + "resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz",
673 + "integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g="
674 + },
675 + "lodash.camelcase": {
676 + "version": "4.3.0",
677 + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
678 + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
679 + },
680 + "lodash.has": {
681 + "version": "4.5.2",
682 + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
683 + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI="
684 + },
685 + "lodash.merge": {
686 + "version": "4.6.1",
687 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
688 + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ=="
689 + },
690 + "long": {
691 + "version": "4.0.0",
692 + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
693 + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
694 + },
695 + "lru-cache": {
696 + "version": "5.1.1",
697 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
698 + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
699 + "requires": {
700 + "yallist": "^3.0.2"
701 + }
702 + },
346 "memory-pager": { 703 "memory-pager": {
347 "version": "1.5.0", 704 "version": "1.5.0",
348 "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 705 "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
...@@ -392,6 +749,16 @@ ...@@ -392,6 +749,16 @@
392 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 749 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
393 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 750 "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
394 }, 751 },
752 + "node-fetch": {
753 + "version": "2.6.0",
754 + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
755 + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
756 + },
757 + "node-forge": {
758 + "version": "0.8.4",
759 + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.4.tgz",
760 + "integrity": "sha512-UOfdpxivIYY4g5tqp5FNRNgROVNxRACUxxJREntJLFaJr1E0UEqFtUIk0F/jYx/E+Y6sVXd0KDi/m5My0yGCVw=="
761 + },
395 "node-telegram-bot-api": { 762 "node-telegram-bot-api": {
396 "version": "0.30.0", 763 "version": "0.30.0",
397 "resolved": "https://registry.npmjs.org/node-telegram-bot-api/-/node-telegram-bot-api-0.30.0.tgz", 764 "resolved": "https://registry.npmjs.org/node-telegram-bot-api/-/node-telegram-bot-api-0.30.0.tgz",
...@@ -417,11 +784,6 @@ ...@@ -417,11 +784,6 @@
417 } 784 }
418 } 785 }
419 }, 786 },
420 - "node-tesseract-ocr": {
421 - "version": "0.1.0",
422 - "resolved": "https://registry.npmjs.org/node-tesseract-ocr/-/node-tesseract-ocr-0.1.0.tgz",
423 - "integrity": "sha512-gUp+fy8Wiy2ZZQiSe33ApfyaBPOOlTz8nrHjZqWGAX4l06lW01uO6ABA5KWBhO3B1DmWl1Y9T1aLasfXYpm2Dg=="
424 - },
425 "oauth-sign": { 787 "oauth-sign": {
426 "version": "0.9.0", 788 "version": "0.9.0",
427 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 789 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
...@@ -445,11 +807,36 @@ ...@@ -445,11 +807,36 @@
445 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 807 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
446 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 808 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
447 }, 809 },
810 + "pify": {
811 + "version": "4.0.1",
812 + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
813 + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
814 + },
448 "process-nextick-args": { 815 "process-nextick-args": {
449 "version": "2.0.0", 816 "version": "2.0.0",
450 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 817 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
451 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 818 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
452 }, 819 },
820 + "protobufjs": {
821 + "version": "6.8.8",
822 + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz",
823 + "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==",
824 + "requires": {
825 + "@protobufjs/aspromise": "^1.1.2",
826 + "@protobufjs/base64": "^1.1.2",
827 + "@protobufjs/codegen": "^2.0.4",
828 + "@protobufjs/eventemitter": "^1.1.0",
829 + "@protobufjs/fetch": "^1.1.0",
830 + "@protobufjs/float": "^1.0.2",
831 + "@protobufjs/inquire": "^1.1.0",
832 + "@protobufjs/path": "^1.1.2",
833 + "@protobufjs/pool": "^1.1.0",
834 + "@protobufjs/utf8": "^1.1.0",
835 + "@types/long": "^4.0.0",
836 + "@types/node": "^10.1.0",
837 + "long": "^4.0.0"
838 + }
839 + },
453 "psl": { 840 "psl": {
454 "version": "1.1.32", 841 "version": "1.1.32",
455 "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", 842 "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz",
...@@ -550,6 +937,14 @@ ...@@ -550,6 +937,14 @@
550 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", 937 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
551 "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" 938 "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
552 }, 939 },
940 + "retry-request": {
941 + "version": "4.0.0",
942 + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.0.0.tgz",
943 + "integrity": "sha512-S4HNLaWcMP6r8E4TMH52Y7/pM8uNayOcTDDQNBwsCccL1uI+Ol2TljxRDPzaNfbhOB30+XWP5NnZkB3LiJxi1w==",
944 + "requires": {
945 + "through2": "^2.0.0"
946 + }
947 + },
553 "safe-buffer": { 948 "safe-buffer": {
554 "version": "5.1.2", 949 "version": "5.1.2",
555 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 950 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
...@@ -604,6 +999,11 @@ ...@@ -604,6 +999,11 @@
604 "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 999 "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
605 "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" 1000 "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
606 }, 1001 },
1002 + "stream-shift": {
1003 + "version": "1.0.0",
1004 + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
1005 + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
1006 + },
607 "string_decoder": { 1007 "string_decoder": {
608 "version": "1.1.1", 1008 "version": "1.1.1",
609 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1009 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
...@@ -612,6 +1012,15 @@ ...@@ -612,6 +1012,15 @@
612 "safe-buffer": "~5.1.0" 1012 "safe-buffer": "~5.1.0"
613 } 1013 }
614 }, 1014 },
1015 + "through2": {
1016 + "version": "2.0.5",
1017 + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
1018 + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
1019 + "requires": {
1020 + "readable-stream": "~2.3.6",
1021 + "xtend": "~4.0.1"
1022 + }
1023 + },
615 "tough-cookie": { 1024 "tough-cookie": {
616 "version": "2.4.3", 1025 "version": "2.4.3",
617 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", 1026 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
...@@ -669,10 +1078,25 @@ ...@@ -669,10 +1078,25 @@
669 "extsprintf": "^1.2.0" 1078 "extsprintf": "^1.2.0"
670 } 1079 }
671 }, 1080 },
1081 + "walkdir": {
1082 + "version": "0.4.0",
1083 + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.0.tgz",
1084 + "integrity": "sha512-Ps0LSr9doEPbF4kEQi6sk5RgzIGLz9+OroGj1y2osIVnufjNQWSLEGIbZwW5V+j/jK8lCj/+8HSWs+6Q/rnViA=="
1085 + },
672 "wrappy": { 1086 "wrappy": {
673 "version": "1.0.2", 1087 "version": "1.0.2",
674 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1088 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
675 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1089 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
1090 + },
1091 + "xtend": {
1092 + "version": "4.0.1",
1093 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
1094 + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
1095 + },
1096 + "yallist": {
1097 + "version": "3.0.3",
1098 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
1099 + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A=="
676 } 1100 }
677 } 1101 }
678 } 1102 }
......
...@@ -10,9 +10,9 @@ ...@@ -10,9 +10,9 @@
10 "author": "강수인", 10 "author": "강수인",
11 "license": "MIT", 11 "license": "MIT",
12 "dependencies": { 12 "dependencies": {
13 + "@google-cloud/vision": "^1.0.0",
13 "mongodb": "^3.2.6", 14 "mongodb": "^3.2.6",
14 "node-telegram-bot-api": "^0.30.0", 15 "node-telegram-bot-api": "^0.30.0",
15 - "node-tesseract-ocr": "^0.1.0",
16 "request": "^2.88.0" 16 "request": "^2.88.0"
17 } 17 }
18 } 18 }
......