Skip to content

Commit 50fffe2

Browse files
committed
update all deps
1 parent 144d862 commit 50fffe2

11 files changed

Lines changed: 2867 additions & 14802 deletions

File tree

app/.npmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
omit=optional

app/js/main.js

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ const path = require('path');
99
const fs = require('fs');
1010
const execFile = require('child_process').execFile;
1111

12-
const request = require('request');
1312
const async = require('async');
1413
const numeral = require('numeral');
1514

@@ -135,29 +134,32 @@ class Pussh {
135134
this.settings.save();
136135
}
137136

138-
checkUpdates() {
137+
async checkUpdates() {
139138
if (!this.settings.get('checkForUpdates')) return;
140139

141-
request.get({
142-
url: 'https://pussh.me/dl/version.json',
143-
timeout: 10000,
144-
json: true
145-
}, (error, response, body) => {
146-
if (error || !response || response.statusCode !== 200 || !body.version) return;
147-
148-
if (this.version !== body.version) {
149-
dialog.showMessageBox({
150-
type: 'question',
151-
buttons: ['Maybe later', 'OK'],
152-
title: 'Update available',
153-
message: 'puSSH has an update available. Click "OK" to open the puSSH download page.'
154-
}).then(({response: buttonClicked}) => {
155-
if (buttonClicked === 1) {
156-
this.openInBrowser('https://pussh.me/');
157-
}
158-
});
140+
let body;
141+
try {
142+
const response = await fetch('https://pussh.me/dl/version.json', {
143+
signal: AbortSignal.timeout(10000)
144+
});
145+
if (!response.ok) return;
146+
body = await response.json();
147+
} catch (error) {
148+
return;
149+
}
150+
if (!body || !body.version) return;
151+
152+
if (this.version !== body.version) {
153+
const {response: buttonClicked} = await dialog.showMessageBox({
154+
type: 'question',
155+
buttons: ['Maybe later', 'OK'],
156+
title: 'Update available',
157+
message: 'puSSH has an update available. Click "OK" to open the puSSH download page.'
158+
});
159+
if (buttonClicked === 1) {
160+
this.openInBrowser('https://pussh.me/');
159161
}
160-
});
162+
}
161163
}
162164

163165
showSettingsWindow() {

app/js/ocr-window.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ const { ipcRenderer, shell } = require('electron');
22
const remote = require('@electron/remote');
33
const { app, screen, clipboard } = remote;
44

5+
// Import the prebuilt browser bundle: Electron's renderer is browser-like
6+
// (Web Worker, no `worker_threads`) and tesseract's package entry resolves
7+
// to its node code path via require, which doesn't run here.
58
const { createWorker } = require('tesseract.js/dist/tesseract.min.js');
69
const path = require('path');
710

@@ -13,21 +16,19 @@ $(() => {
1316
// TODO: more languages
1417

1518
(async () => {
16-
const worker = await createWorker({
19+
const worker = await createWorker('eng', 1, {
1720
cachePath: path.join(__dirname, 'ocr-data'),
1821
logger: (ocr) => {
1922
let progress = 10;
20-
23+
2124
if (ocr.status == 'loaded tesseract core') progress = 20;
2225
if (ocr.status == 'loaded language traineddata') progress = 30;
2326
if (ocr.status == 'initialized api') progress = 60;
2427
if (ocr.status == 'recognizing text') progress = 70 + (ocr.progress * 30);
25-
28+
2629
$('#progress').css('right', (100 - progress) + '%');
2730
}
2831
});
29-
await worker.loadLanguage('eng');
30-
await worker.initialize('eng');
3132
const { data: { text } } = await worker.recognize(imageURL);
3233

3334
$('#ocr-text').val(text);

app/js/services/http-post.js

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
const fs = require('fs');
22
const path = require('path');
33

4-
const request = require('request');
5-
64
const ServiceSettings = require('../service-settings');
75

86
class Service extends ServiceSettings {
@@ -48,24 +46,29 @@ class Service extends ServiceSettings {
4846
this.loadSettings();
4947
}
5048

51-
upload(filePath, callback) {
49+
async upload(filePath, callback) {
5250
if (!this.getSetting('upload_url')) return callback(new Error('No upload url configured for upload'));
5351
if (!this.getSetting('form_field')) return callback(new Error('You must set a POST form field'));
5452
if (!this.getSetting('url')) return callback(new Error('No url configured'));
5553

56-
request.post({
57-
url: this.getSetting('upload_url'),
58-
formData: {
59-
[this.getSetting('form_field')]: fs.createReadStream(filePath)
60-
}
61-
}, (err, response, body) => {
62-
if (err || !response || response.statusCode >= 300) {
63-
return callback(new Error(`HTTP error occurred: ${err ? err.message : `${response && response.statusCode} server response code`}`));
54+
try {
55+
const fileBuffer = fs.readFileSync(filePath);
56+
const formData = new FormData();
57+
formData.append(this.getSetting('form_field'), new Blob([fileBuffer]), path.basename(filePath));
58+
59+
const response = await fetch(this.getSetting('upload_url'), {
60+
method: 'POST',
61+
body: formData
62+
});
63+
if (response.status >= 300) {
64+
return callback(new Error(`HTTP error occurred: ${response.status} server response code`));
6465
}
6566

6667
const fileName = this.getSetting('append_extension') ? path.basename(filePath) : path.basename(filePath).split('.')[0];
6768
callback(null, this.getSetting('url') + encodeURIComponent(fileName));
68-
});
69+
} catch (err) {
70+
callback(new Error(`HTTP error occurred: ${err.message}`));
71+
}
6972
}
7073
}
7174

app/js/services/imgur.js

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
const fs = require('fs');
22
const path = require('path');
33

4-
const request = require('request');
5-
64
const ServiceSettings = require('../service-settings');
75

86
const ImgurClientID = 'b4723b6a37fa1bb';
@@ -18,26 +16,32 @@ class Service extends ServiceSettings {
1816
}
1917

2018
upload(filePath, callback) {
21-
fs.readFile(filePath, (err, data) => {
19+
fs.readFile(filePath, async (err, data) => {
2220
if (err) return callback(err);
2321

24-
request.post({
25-
url: 'https://api.imgur.com/3/upload',
26-
headers: {
27-
'Authorization': `Client-ID ${ImgurClientID}`
28-
},
29-
form: {
22+
try {
23+
const body = new URLSearchParams({
3024
type: 'base64',
31-
image: new Buffer(data).toString('base64')
32-
},
33-
json: true
34-
}, (err, res, body) => {
35-
if (err || !res || res.statusCode !== 200 || !body) {
36-
return callback(new Error(`HTTP error occurred: ${err ? err.message : `${response && response.statusCode} server response code`}`));
25+
image: data.toString('base64')
26+
});
27+
const res = await fetch('https://api.imgur.com/3/upload', {
28+
method: 'POST',
29+
headers: {
30+
'Authorization': `Client-ID ${ImgurClientID}`
31+
},
32+
body
33+
});
34+
if (res.status !== 200) {
35+
return callback(new Error(`HTTP error occurred: ${res.status} server response code`));
3736
}
38-
39-
callback(null, body.data.link.replace(/^http:/,'https:'));
40-
});
37+
const json = await res.json();
38+
if (!json || !json.data || !json.data.link) {
39+
return callback(new Error('HTTP error occurred: empty response'));
40+
}
41+
callback(null, json.data.link.replace(/^http:/, 'https:'));
42+
} catch (err) {
43+
callback(new Error(`HTTP error occurred: ${err.message}`));
44+
}
4145
});
4246
}
4347
}

app/js/services/pomf.js

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const fs = require('fs');
2-
const request = require('request');
2+
const path = require('path');
33

44
const ServiceSettings = require('../service-settings');
55

@@ -32,40 +32,41 @@ class Service extends ServiceSettings {
3232
this.loadSettings();
3333
}
3434

35-
upload(filePath, callback) {
35+
async upload(filePath, callback) {
3636
if (!this.getSetting('upload_url')) return callback(new Error('No upload URL configured for upload'));
3737

38-
request.post({
39-
url: this.getSetting('upload_url'),
40-
formData: {
41-
'files[]': {
42-
value: fs.createReadStream(filePath),
43-
options: {
44-
contentType: 'image/png'
45-
}
46-
}
47-
}
48-
}, (err, response, body) => {
49-
if (err || !response || response.statusCode >= 300) {
50-
return callback(new Error(`HTTP error occurred: ${err ? err.message : `${response && response.statusCode} server response code`}`));
51-
}
52-
if (typeof body === 'string') {
53-
try {
54-
body = JSON.parse(body);
55-
} catch (err) {
56-
return callback(new Error('The Pomf API returned an invalid JSON response'));
57-
}
58-
}
59-
if (!body.success || !body.files || body.files.length === 0) {
60-
return callback(new Error('The Pomf API returned an unexpected response'));
61-
}
38+
let response;
39+
try {
40+
const fileBuffer = fs.readFileSync(filePath);
41+
const formData = new FormData();
42+
formData.append('files[]', new Blob([fileBuffer], { type: 'image/png' }), path.basename(filePath));
6243

63-
let result_url = this.getSetting('result_url');
64-
if (result_url.length > 0 && result_url[result_url.length - 1] !== '/') {
65-
result_url += '/';
66-
}
67-
callback(null, result_url + body.files[0].url);
68-
});
44+
response = await fetch(this.getSetting('upload_url'), {
45+
method: 'POST',
46+
body: formData
47+
});
48+
} catch (err) {
49+
return callback(new Error(`HTTP error occurred: ${err.message}`));
50+
}
51+
if (response.status >= 300) {
52+
return callback(new Error(`HTTP error occurred: ${response.status} server response code`));
53+
}
54+
55+
let body;
56+
try {
57+
body = await response.json();
58+
} catch (err) {
59+
return callback(new Error('The Pomf API returned an invalid JSON response'));
60+
}
61+
if (!body.success || !body.files || body.files.length === 0) {
62+
return callback(new Error('The Pomf API returned an unexpected response'));
63+
}
64+
65+
let result_url = this.getSetting('result_url');
66+
if (result_url.length > 0 && result_url[result_url.length - 1] !== '/') {
67+
result_url += '/';
68+
}
69+
callback(null, result_url + body.files[0].url);
6970
}
7071
}
7172

app/js/services/scrup.js

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
const fs = require('fs');
22
const path = require('path');
33

4-
const request = require('request');
5-
64
const ServiceSettings = require('../service-settings');
75

86
class Service extends ServiceSettings {
@@ -26,19 +24,23 @@ class Service extends ServiceSettings {
2624
this.loadSettings();
2725
}
2826

29-
upload(filePath, callback) {
27+
async upload(filePath, callback) {
3028
if (!this.getSetting('upload_url')) return callback(new Error('No url configured for upload'));
3129

32-
request.post({
33-
url: this.getSetting('upload_url'),
34-
body: fs.readFileSync(filePath)
35-
}, (err, res, body) => {
36-
if (err || !res || res.statusCode !== 200 || !body) {
37-
return callback(new Error(`HTTP error occurred: ${err ? err.message : `${response && response.statusCode} server response code`}`));
30+
try {
31+
const res = await fetch(this.getSetting('upload_url'), {
32+
method: 'POST',
33+
body: fs.readFileSync(filePath)
34+
});
35+
if (res.status !== 200) {
36+
return callback(new Error(`HTTP error occurred: ${res.status} server response code`));
3837
}
39-
38+
const body = await res.text();
39+
if (!body) return callback(new Error('HTTP error occurred: empty response'));
4040
callback(null, body);
41-
});
41+
} catch (err) {
42+
callback(new Error(`HTTP error occurred: ${err.message}`));
43+
}
4244
}
4345
}
4446

0 commit comments

Comments
 (0)