gologin 2.0.29 → 2.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gologin",
3
- "version": "2.0.29",
3
+ "version": "2.0.30",
4
4
  "description": "A high-level API to control Orbita browser over GoLogin API",
5
5
  "main": "./src/gologin.js",
6
6
  "repository": {
@@ -10,6 +10,7 @@ import { createInterface } from 'readline';
10
10
  import util from 'util';
11
11
 
12
12
  import { findLatestBrowserVersionDirectory } from '../utils/utils.js';
13
+ import { API_URL, getOS } from '../utils/common.js';
13
14
 
14
15
  const exec = util.promisify(execNonPromise);
15
16
  const { access, mkdir, readdir, rmdir, unlink, copyFile, readlink, symlink, lstat, rename, writeFile } = _promises;
@@ -18,19 +19,11 @@ const PLATFORM = process.platform;
18
19
  const ARCH = process.arch;
19
20
 
20
21
  const VERSION_FILE = 'latest-version.txt';
21
- const MAC_VERSION_FILE_URL = `https://orbita-browser-mac.gologin.com/${VERSION_FILE}`;
22
- const DEB_VERSION_FILE_URL = `https://orbita-browser-linux.gologin.com/${VERSION_FILE}`;
23
- const WIN_VERSION_FILE_URL = `https://orbita-browser-windows.gologin.com/${VERSION_FILE}`;
24
- const MAC_ARM_VERSION_FILE_URL = `https://orbita-browser-mac-arm.gologin.com/${VERSION_FILE}`;
25
22
 
26
23
  const WIN_FOLDERSIZE_FILE = 'foldersize.txt';
27
24
  const WIN_FOLDERSIZE_FILE_LINK = `https://orbita-browser-windows.gologin.com/${WIN_FOLDERSIZE_FILE}`;
28
25
 
29
26
  const BROWSER_ARCHIVE_NAME = `orbita-browser-latest.${PLATFORM === 'win32' ? 'zip' : 'tar.gz'}`;
30
- const MAC_BROWSER_LINK = `https://orbita-browser-mac.gologin.com/${BROWSER_ARCHIVE_NAME}`;
31
- const DEB_BROWSER_LINK = `https://orbita-browser-linux.gologin.com/${BROWSER_ARCHIVE_NAME}`;
32
- const WIN_BROWSER_LINK = `https://orbita-browser-windows.gologin.com/${BROWSER_ARCHIVE_NAME}`;
33
- const MAC_ARM_BROWSER_LINK = `https://orbita-browser-mac-arm.gologin.com/${BROWSER_ARCHIVE_NAME}`;
34
27
 
35
28
  const MAC_HASH_FILE = 'hashfile.mtree';
36
29
  const DEB_HASH_FILE = 'hashfile.txt';
@@ -73,12 +66,12 @@ export class BrowserChecker {
73
66
  async checkBrowser(autoUpdateBrowser = false) {
74
67
  const browserFolderExists = await access(this.#executableFilePath).then(() => true).catch(() => false);
75
68
 
76
- const browserLatestVersion = await this.getLatestBrowserVersion();
69
+ const { latestVersion: browserLatestVersion, browserDownloadUrl } = await this.getLatestBrowserVersion();
70
+
77
71
  if (!browserFolderExists) {
78
- return this.downloadBrowser(browserLatestVersion);
72
+ return this.downloadBrowser(browserLatestVersion, browserDownloadUrl);
79
73
  }
80
74
 
81
-
82
75
  const currentVersionReq = await this.getCurrentVersion();
83
76
  const currentVersion = (currentVersionReq?.stdout || '').replace(/(\r\n|\n|\r)/gm, '');
84
77
 
@@ -87,7 +80,7 @@ export class BrowserChecker {
87
80
  }
88
81
 
89
82
  if (autoUpdateBrowser) {
90
- return this.downloadBrowser(browserLatestVersion);
83
+ return this.downloadBrowser(browserLatestVersion, browserDownloadUrl);
91
84
  }
92
85
 
93
86
  return new Promise(resolve => {
@@ -101,7 +94,7 @@ export class BrowserChecker {
101
94
  clearTimeout(timeout);
102
95
  rl.close();
103
96
  if (answer && answer[0].toString().toLowerCase() === 'y') {
104
- return this.downloadBrowser(browserLatestVersion).then(() => resolve());
97
+ return this.downloadBrowser(browserLatestVersion, browserDownloadUrl).then(() => resolve());
105
98
  }
106
99
 
107
100
  console.log(`Continue with current ${currentVersion} version.`);
@@ -110,26 +103,16 @@ export class BrowserChecker {
110
103
  });
111
104
  }
112
105
 
113
- async downloadBrowser(latestVersion) {
106
+ async downloadBrowser(latestVersion, browserDownloadUrl) {
114
107
  await this.deleteOldArchives(true);
115
108
  await mkdir(this.#browserPath, { recursive: true });
116
109
 
117
110
  const pathStr = join(this.#browserPath, BROWSER_ARCHIVE_NAME);
118
- let link = DEB_BROWSER_LINK;
119
- if (PLATFORM === 'win32') {
120
- link = WIN_BROWSER_LINK;
121
- } else if (PLATFORM === 'darwin') {
122
- link = MAC_BROWSER_LINK;
123
-
124
- if (ARCH === 'arm64') {
125
- link = MAC_ARM_BROWSER_LINK;
126
- }
127
- }
128
111
 
129
- await this.downloadBrowserArchive(link, pathStr);
112
+ await this.downloadBrowserArchive(browserDownloadUrl, pathStr);
130
113
  await this.checkBrowserArchive(pathStr);
131
114
  await this.extractBrowser();
132
- await this.checkBrowserSum();
115
+ await this.checkBrowserSum(latestVersion);
133
116
  console.log('Orbita hash checked successfully');
134
117
  await this.replaceBrowser();
135
118
  await this.addLatestVersion(latestVersion).catch(() => null);
@@ -217,7 +200,7 @@ export class BrowserChecker {
217
200
  );
218
201
  }
219
202
 
220
- async downloadHashFile() {
203
+ async downloadHashFile(latestVersion) {
221
204
  let hashLink = DEB_HASHFILE_LINK;
222
205
  let resultPath = join(this.#browserPath, DEB_HASH_FILE);
223
206
  if (PLATFORM === 'darwin') {
@@ -228,6 +211,11 @@ export class BrowserChecker {
228
211
  resultPath = join(this.#browserPath, MAC_HASH_FILE);
229
212
  }
230
213
 
214
+ if (latestVersion) {
215
+ const [majorVer] = latestVersion.split('.');
216
+ hashLink = hashLink.replace('hashfile.', `hashfile-${majorVer}.`);
217
+ }
218
+
231
219
  const writableStream = createWriteStream(resultPath);
232
220
  writableStream.on('error', async (err) => {
233
221
  await unlink(resultPath);
@@ -253,7 +241,7 @@ export class BrowserChecker {
253
241
  return access(hashFilePath);
254
242
  }
255
243
 
256
- async checkBrowserSum() {
244
+ async checkBrowserSum(latestVersion) {
257
245
  if (this.#skipOrbitaHashChecking) {
258
246
  return Promise.resolve();
259
247
  }
@@ -263,7 +251,7 @@ export class BrowserChecker {
263
251
  return Promise.resolve();
264
252
  }
265
253
 
266
- await this.downloadHashFile();
254
+ await this.downloadHashFile(latestVersion);
267
255
  if (PLATFORM === 'darwin') {
268
256
  const calculatedHash = await exec(
269
257
  `mtree -p ${join(this.#browserPath, EXTRACTED_FOLDER, 'Orbita-Browser.app')} < ${join(this.#browserPath, MAC_HASH_FILE)} || echo ${FAIL_SUM_MATCH_MESSAGE}`,
@@ -362,22 +350,13 @@ export class BrowserChecker {
362
350
  }
363
351
 
364
352
  getLatestBrowserVersion() {
365
- let url = DEB_VERSION_FILE_URL;
366
- if (PLATFORM === 'win32') {
367
- url = WIN_VERSION_FILE_URL;
368
- } else if (PLATFORM === 'darwin') {
369
- url = MAC_VERSION_FILE_URL;
370
-
371
- if (ARCH === 'arm64') {
372
- url = MAC_ARM_VERSION_FILE_URL;
373
- }
374
- }
353
+ const userOs = getOS();
375
354
 
376
- return new Promise(resolve => get(url,
355
+ return new Promise(resolve => get(`${API_URL}/gologin-global-settings/latest-browser-info?os=${userOs}`,
377
356
  {
378
357
  timeout: 15 * 1000,
379
358
  headers: {
380
- 'Content-Type': 'text/plain',
359
+ 'Content-Type': 'application/json',
381
360
  },
382
361
  }, (res) => {
383
362
  res.setEncoding('utf8');
@@ -386,7 +365,7 @@ export class BrowserChecker {
386
365
  res.on('data', (data) => resultResponse += data);
387
366
 
388
367
  res.on('end', () => {
389
- resolve(resultResponse.trim());
368
+ resolve(JSON.parse(resultResponse.trim()));
390
369
  });
391
370
  }).on('error', (err) => resolve('')));
392
371
  }
@@ -21,8 +21,22 @@ const composeExtractionPromises = (filteredArchives, destPath = CHROME_EXTENSION
21
21
  })
22
22
  );
23
23
 
24
+ const getOS = () => {
25
+ if (process.platform === 'win32') {
26
+ return 'win';
27
+ }
28
+
29
+ if (process.platform === 'darwin') {
30
+ return process.arch === 'arm64' ? 'macM1' : 'mac';
31
+ }
32
+
33
+ return 'lin';
34
+ };
35
+
24
36
  const _composeExtractionPromises = composeExtractionPromises;
25
37
  export { _composeExtractionPromises as composeExtractionPromises };
38
+ const _getOS = getOS;
39
+ export { _getOS as getOS };
26
40
  const _USER_EXTENSIONS_PATH = USER_EXTENSIONS_PATH;
27
41
  export { _USER_EXTENSIONS_PATH as USER_EXTENSIONS_PATH };
28
42
  const _CHROME_EXTENSIONS_PATH = CHROME_EXTENSIONS_PATH;