gologin-commonjs 1.1.2 → 1.1.4

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.
Files changed (97) hide show
  1. package/dist/src/browser/browser-checker.js +19 -14
  2. package/dist/src/browser/browser-user-data-manager.js +230 -140
  3. package/dist/src/gologin.js +392 -722
  4. package/dist/src/utils/timezone.js +21 -0
  5. package/dist-old/README.md +163 -0
  6. package/dist-old/example.js +35 -0
  7. package/dist-old/examples/example-amazon-cloud-browser.js +52 -0
  8. package/dist-old/examples/example-amazon-headless.js +56 -0
  9. package/dist-old/examples/example-amazon.js +53 -0
  10. package/dist-old/examples/example-create-custom-profile.js +42 -0
  11. package/dist-old/examples/example-create-profile.js +43 -0
  12. package/dist-old/examples/example-custom-args.js +34 -0
  13. package/dist-old/examples/example-fast-profile-settings.js +59 -0
  14. package/dist-old/examples/example-gmail.js +82 -0
  15. package/dist-old/examples/example-iphey.js +19 -0
  16. package/dist-old/examples/example-local-profile.js +28 -0
  17. package/dist-old/examples/example-login-walmart.js +38 -0
  18. package/dist-old/examples/example-startremote.js +29 -0
  19. package/dist-old/examples/example-stopremote.js +22 -0
  20. package/dist-old/examples/example-timezone.js +51 -0
  21. package/dist-old/fonts.d.ts +22 -0
  22. package/dist-old/fonts.js +3339 -0
  23. package/dist-old/fonts_config +104 -0
  24. package/dist-old/gologin-browser-ext.zip +0 -0
  25. package/dist-old/gologin_zeroprofile.b64 +1 -0
  26. package/dist-old/index.d.ts +61 -0
  27. package/dist-old/profile_export_example.csv +2 -0
  28. package/dist-old/run.sh +1 -0
  29. package/dist-old/src/bookmarks/utils.js +23 -0
  30. package/dist-old/src/browser/browser-api.js +106 -0
  31. package/dist-old/src/browser/browser-checker.js +338 -0
  32. package/dist-old/src/browser/browser-user-data-manager.js +306 -0
  33. package/dist-old/src/cookies/cookies-manager.js +164 -0
  34. package/dist-old/src/extensions/extensions-extractor.js +50 -0
  35. package/dist-old/src/extensions/extensions-manager.js +301 -0
  36. package/dist-old/src/extensions/user-extensions-manager.js +246 -0
  37. package/dist-old/src/gologin-api.d.ts +18 -0
  38. package/dist-old/src/gologin-api.js +103 -0
  39. package/dist-old/src/gologin.d.ts +142 -0
  40. package/dist-old/src/gologin.js +1336 -0
  41. package/dist-old/src/profile/profile-archiver.js +68 -0
  42. package/dist-old/src/profile/profile-directories-to-remove.js +71 -0
  43. package/dist-old/src/utils/browser.js +59 -0
  44. package/dist-old/src/utils/common.js +60 -0
  45. package/dist-old/src/utils/constants.js +7 -0
  46. package/dist-old/src/utils/utils.js +53 -0
  47. package/dist-old/test.html +1 -0
  48. package/dist-old/zero_profile.zip +0 -0
  49. package/gologin/src/gologin.js +636 -395
  50. package/gologin/src/utils/timezone.js +470 -0
  51. package/gologin-old/.eslintrc.json +290 -0
  52. package/gologin-old/.sentry-native/a65389b2-9a7d-41ed-7de5-95c4570f0d3d.run.lock +0 -0
  53. package/gologin-old/README.md +163 -0
  54. package/gologin-old/example.js +36 -0
  55. package/gologin-old/examples/example-amazon-cloud-browser.js +44 -0
  56. package/gologin-old/examples/example-amazon-headless.js +50 -0
  57. package/gologin-old/examples/example-amazon.js +47 -0
  58. package/gologin-old/examples/example-create-custom-profile.js +39 -0
  59. package/gologin-old/examples/example-create-profile.js +40 -0
  60. package/gologin-old/examples/example-custom-args.js +34 -0
  61. package/gologin-old/examples/example-fast-profile-settings.js +69 -0
  62. package/gologin-old/examples/example-gmail.js +67 -0
  63. package/gologin-old/examples/example-iphey.js +17 -0
  64. package/gologin-old/examples/example-local-profile.js +26 -0
  65. package/gologin-old/examples/example-login-walmart.js +35 -0
  66. package/gologin-old/examples/example-startremote.js +25 -0
  67. package/gologin-old/examples/example-stopremote.js +20 -0
  68. package/gologin-old/examples/example-timezone.js +44 -0
  69. package/gologin-old/fonts.js +3339 -0
  70. package/gologin-old/fonts_config +104 -0
  71. package/gologin-old/gologin-browser-ext.zip +0 -0
  72. package/gologin-old/gologin_zeroprofile.b64 +1 -0
  73. package/gologin-old/index.d.ts +61 -0
  74. package/gologin-old/package-lock.json +3491 -0
  75. package/gologin-old/package.json +49 -0
  76. package/gologin-old/profile_export_example.csv +2 -0
  77. package/gologin-old/run.sh +1 -0
  78. package/gologin-old/src/bookmarks/utils.js +16 -0
  79. package/gologin-old/src/browser/browser-api.js +95 -0
  80. package/gologin-old/src/browser/browser-checker.js +394 -0
  81. package/gologin-old/src/browser/browser-user-data-manager.js +335 -0
  82. package/gologin-old/src/cookies/cookies-manager.js +189 -0
  83. package/gologin-old/src/extensions/extensions-extractor.js +56 -0
  84. package/gologin-old/src/extensions/extensions-manager.js +384 -0
  85. package/gologin-old/src/extensions/user-extensions-manager.js +295 -0
  86. package/gologin-old/src/gologin-api.js +110 -0
  87. package/gologin-old/src/gologin.js +1553 -0
  88. package/gologin-old/src/profile/profile-archiver.js +86 -0
  89. package/gologin-old/src/profile/profile-directories-to-remove.js +75 -0
  90. package/gologin-old/src/utils/browser.js +62 -0
  91. package/gologin-old/src/utils/common.js +76 -0
  92. package/gologin-old/src/utils/constants.js +1 -0
  93. package/gologin-old/src/utils/utils.js +49 -0
  94. package/gologin-old/test.html +1 -0
  95. package/gologin-old/zero_profile.zip +0 -0
  96. package/package.json +4 -1
  97. package/tes.js +7 -3
@@ -77,28 +77,33 @@ class BrowserChecker {
77
77
  if (!browserFolderExists) {
78
78
  return this.downloadBrowser(browserLatestVersion, browserDownloadUrl);
79
79
  }
80
- const currentVersionReq = await this.getCurrentVersion();
81
- const currentVersion = (currentVersionReq?.stdout || '').replace(/(\r\n|\n|\r)/gm, '');
82
- if (browserLatestVersion === currentVersion || !checkBrowserUpdate) {
83
- return;
84
- }
85
- if (autoUpdateBrowser) {
86
- return this.downloadBrowser(browserLatestVersion, browserDownloadUrl);
87
- }
88
- console.log(`New Orbita ${browserLatestVersion} is available.`)
89
80
  return;
81
+
82
+ // const currentVersionReq = await this.getCurrentVersion();
83
+ // const currentVersion = (currentVersionReq?.stdout || '').replace(/(\r\n|\n|\r)/gm, '');
84
+
85
+ // if (browserLatestVersion === currentVersion || !checkBrowserUpdate) {
86
+ // return;
87
+ // }
88
+
89
+ // if (autoUpdateBrowser) {
90
+ // return this.downloadBrowser(browserLatestVersion, browserDownloadUrl);
91
+ // }
92
+
90
93
  // return new Promise(resolve => {
91
- // const rl = (0, _readline.createInterface)(process.stdin, process.stdout);
94
+ // const rl = createInterface(process.stdin, process.stdout);
92
95
  // const timeout = setTimeout(() => {
93
96
  // console.log(`\nContinue with current ${currentVersion} version.`);
94
97
  // resolve();
95
98
  // }, 10000);
96
- // rl.question(`New Orbita ${browserLatestVersion} is available. Update? [y/n] `, answer => {
99
+
100
+ // rl.question(`New Orbita ${browserLatestVersion} is available. Update? [y/n] `, (answer) => {
97
101
  // clearTimeout(timeout);
98
102
  // rl.close();
99
103
  // if (answer && answer[0].toString().toLowerCase() === 'y') {
100
104
  // return this.downloadBrowser(browserLatestVersion, browserDownloadUrl).then(() => resolve());
101
105
  // }
106
+
102
107
  // console.log(`Continue with current ${currentVersion} version.`);
103
108
  // resolve();
104
109
  // });
@@ -246,9 +251,9 @@ class BrowserChecker {
246
251
  const localHashContent = await exec(`cd ${this.#browserPath} && sha256sum calculatedFolderSha.txt`);
247
252
  let userRes = (localHashContent.stdout || '').toString().trim();
248
253
  userRes = userRes.split(' ')[0];
249
- // if (userRes !== serverRes) {
250
- // throw new Error('Error in sum matching. Please run script again.');
251
- // }
254
+ if (userRes !== serverRes) {
255
+ throw new Error('Error in sum matching. Please run script again.');
256
+ }
252
257
  }
253
258
  async replaceBrowser() {
254
259
  console.log('Copy Orbita to target path');
@@ -1,9 +1,17 @@
1
1
  "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true,
5
5
  });
6
- exports.uploadCookies = exports.setOriginalExtPaths = exports.setExtPathsAndRemoveDeleted = exports.recalculateId = exports.downloadFonts = exports.downloadCookies = exports.copyFontsConfigFile = exports.composeFonts = void 0;
6
+ exports.uploadCookies =
7
+ exports.setOriginalExtPaths =
8
+ exports.setExtPathsAndRemoveDeleted =
9
+ exports.recalculateId =
10
+ exports.downloadFonts =
11
+ exports.downloadCookies =
12
+ exports.copyFontsConfigFile =
13
+ exports.composeFonts =
14
+ void 0;
7
15
  var _crypto = require("crypto");
8
16
  var _fs = require("fs");
9
17
  var _os = require("os");
@@ -11,65 +19,69 @@ var _path = require("path");
11
19
  var _url = require("url");
12
20
  var _requestretry = _interopRequireDefault(require("requestretry"));
13
21
  var _fonts = require("../../fonts.js");
14
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
- const {
16
- access,
17
- readFile,
18
- writeFile,
19
- mkdir,
20
- readdir,
21
- copyFile,
22
- rename
23
- } = _fs.promises;
24
- const _filename = (0, _url.fileURLToPath)(require('url').pathToFileURL(__filename).toString());
22
+ function _interopRequireDefault(e) {
23
+ return e && e.__esModule ? e : { default: e };
24
+ }
25
+ const { access, readFile, writeFile, mkdir, readdir, copyFile, rename } =
26
+ _fs.promises;
27
+ const _filename = (0, _url.fileURLToPath)(
28
+ require("url").pathToFileURL(__filename).toString()
29
+ );
25
30
  const _dirname = (0, _path.dirname)(_filename);
26
- const FONTS_URL = 'https://fonts.gologin.com/';
27
- const FONTS_DIR_NAME = 'fonts';
31
+ const FONTS_URL = "https://fonts.gologin.com/";
32
+ const FONTS_DIR_NAME = "fonts";
28
33
  const HOMEDIR = (0, _os.homedir)();
29
- const BROWSER_PATH = (0, _path.join)(HOMEDIR, '.gologin', 'browser');
34
+ const BROWSER_PATH = (0, _path.join)(HOMEDIR, ".gologin", "browser");
30
35
  const OS_PLATFORM = process.platform;
31
- const DEFAULT_ORBITA_EXTENSIONS_NAMES = ['Google Hangouts', 'Chromium PDF Viewer', 'CryptoTokenExtension', 'Web Store'];
32
- const GOLOGIN_BASE_FOLDER_NAME = '.gologin';
33
- const GOLOGIN_TEST_FOLDER_NAME = '.gologin_test';
36
+ const DEFAULT_ORBITA_EXTENSIONS_NAMES = [
37
+ "Google Hangouts",
38
+ "Chromium PDF Viewer",
39
+ "CryptoTokenExtension",
40
+ "Web Store",
41
+ ];
42
+ const GOLOGIN_BASE_FOLDER_NAME = ".gologin";
43
+ const GOLOGIN_TEST_FOLDER_NAME = ".gologin_test";
34
44
  const osPlatform = process.platform;
35
- const downloadCookies = ({
36
- profileId,
37
- ACCESS_TOKEN,
38
- API_BASE_URL
39
- }) => _requestretry.default.get(`${API_BASE_URL}/browser/${profileId}/cookies`, {
40
- headers: {
41
- Authorization: `Bearer ${ACCESS_TOKEN}`,
42
- 'user-agent': 'gologin-api'
43
- },
44
- json: true,
45
- maxAttempts: 3,
46
- retryDelay: 2000,
47
- timeout: 10 * 1000
48
- }).catch(e => {
49
- console.log(e);
50
- return {
51
- body: []
52
- };
53
- });
45
+ const downloadCookies = ({ profileId, ACCESS_TOKEN, API_BASE_URL }) =>
46
+ _requestretry.default
47
+ .get(`${API_BASE_URL}/browser/${profileId}/cookies`, {
48
+ headers: {
49
+ Authorization: `Bearer ${ACCESS_TOKEN}`,
50
+ "user-agent": "gologin-api",
51
+ },
52
+ json: true,
53
+ maxAttempts: 3,
54
+ retryDelay: 2000,
55
+ timeout: 10 * 1000,
56
+ })
57
+ .catch((e) => {
58
+ console.log(e);
59
+ return {
60
+ body: [],
61
+ };
62
+ });
54
63
  exports.downloadCookies = downloadCookies;
55
64
  const uploadCookies = ({
56
65
  cookies = [],
57
66
  profileId,
58
67
  ACCESS_TOKEN,
59
- API_BASE_URL
60
- }) => _requestretry.default.post(`${API_BASE_URL}/browser/${profileId}/cookies/?encrypted=true`, {
61
- headers: {
62
- Authorization: `Bearer ${ACCESS_TOKEN}`,
63
- 'User-Agent': 'gologin-api'
64
- },
65
- json: cookies,
66
- maxAttempts: 3,
67
- retryDelay: 2000,
68
- timeout: 20 * 1000
69
- }).catch(e => {
70
- console.log(e);
71
- return e;
72
- });
68
+ API_BASE_URL,
69
+ }) =>
70
+ _requestretry.default
71
+ .post(`${API_BASE_URL}/browser/${profileId}/cookies/?encrypted=true`, {
72
+ headers: {
73
+ Authorization: `Bearer ${ACCESS_TOKEN}`,
74
+ "User-Agent": "gologin-api",
75
+ },
76
+ json: cookies,
77
+ maxAttempts: 3,
78
+ retryDelay: 2000,
79
+ timeout: 20 * 1000,
80
+ })
81
+ .catch((e) => {
82
+ console.log(e);
83
+ return e;
84
+ });
73
85
  exports.uploadCookies = uploadCookies;
74
86
  const downloadFonts = async (fontsList = [], profilePath) => {
75
87
  if (!fontsList.length) {
@@ -77,107 +89,159 @@ const downloadFonts = async (fontsList = [], profilePath) => {
77
89
  }
78
90
  const browserFontsPath = (0, _path.join)(BROWSER_PATH, FONTS_DIR_NAME);
79
91
  await mkdir(browserFontsPath, {
80
- recursive: true
92
+ recursive: true,
81
93
  });
82
94
  const files = await readdir(browserFontsPath);
83
- const fontsToDownload = fontsList.filter(font => !files.includes(font));
84
- let promises = fontsToDownload.map(font => _requestretry.default.get(FONTS_URL + font, {
85
- maxAttempts: 5,
86
- retryDelay: 2000,
87
- timeout: 30 * 1000
88
- }).pipe((0, _fs.createWriteStream)((0, _path.join)(browserFontsPath, font))));
95
+ const fontsToDownload = fontsList.filter((font) => !files.includes(font));
96
+ let promises = fontsToDownload.map((font) =>
97
+ _requestretry.default
98
+ .get(FONTS_URL + font, {
99
+ maxAttempts: 5,
100
+ retryDelay: 2000,
101
+ timeout: 30 * 1000,
102
+ })
103
+ .pipe((0, _fs.createWriteStream)((0, _path.join)(browserFontsPath, font)))
104
+ );
89
105
  if (promises.length) {
90
106
  await Promise.all(promises);
91
107
  }
92
- promises = fontsList.map(font => copyFile((0, _path.join)(browserFontsPath, font), (0, _path.join)(profilePath, FONTS_DIR_NAME, font)));
108
+ promises = fontsList.map((font) =>
109
+ copyFile(
110
+ (0, _path.join)(browserFontsPath, font),
111
+ (0, _path.join)(profilePath, FONTS_DIR_NAME, font)
112
+ )
113
+ );
93
114
  await Promise.all(promises);
94
115
  };
95
116
  exports.downloadFonts = downloadFonts;
96
- const composeFonts = async (fontsList = [], profilePath, differentOs = false) => {
117
+ const composeFonts = async (
118
+ fontsList = [],
119
+ profilePath,
120
+ differentOs = false
121
+ ) => {
97
122
  if (!(fontsList.length && profilePath)) {
98
123
  return;
99
124
  }
100
- const fontsToDownload = _fonts.fontsCollection.filter(elem => fontsList.includes(elem.value)).reduce((res, elem) => res.concat(elem.fileNames || []), []);
125
+ const fontsToDownload = _fonts.fontsCollection
126
+ .filter((elem) => fontsList.includes(elem.value))
127
+ .reduce((res, elem) => res.concat(elem.fileNames || []), []);
101
128
  if (differentOs && !fontsToDownload.length) {
102
- throw new Error('No fonts to download found. Use getAvailableFonts() method and set some fonts from this list');
129
+ throw new Error(
130
+ "No fonts to download found. Use getAvailableFonts() method and set some fonts from this list"
131
+ );
103
132
  }
104
- fontsToDownload.push('LICENSE.txt');
105
- fontsToDownload.push('OFL.txt');
133
+ fontsToDownload.push("LICENSE.txt");
134
+ fontsToDownload.push("OFL.txt");
106
135
  const pathToFontsDir = (0, _path.join)(profilePath, FONTS_DIR_NAME);
107
- const fontsDirExists = await access(pathToFontsDir).then(() => true, () => false);
136
+ const fontsDirExists = await access(pathToFontsDir).then(
137
+ () => true,
138
+ () => false
139
+ );
108
140
  if (fontsDirExists) {
109
141
  (0, _fs.rmdirSync)(pathToFontsDir, {
110
- recursive: true
142
+ recursive: true,
111
143
  });
112
144
  }
113
145
  await mkdir(pathToFontsDir, {
114
- recursive: true
146
+ recursive: true,
115
147
  });
116
148
  await downloadFonts(fontsToDownload, profilePath);
117
- if (OS_PLATFORM === 'linux') {
149
+ if (OS_PLATFORM === "linux") {
118
150
  await copyFontsConfigFile(profilePath);
119
151
  }
120
152
  };
121
153
  exports.composeFonts = composeFonts;
122
- const copyFontsConfigFile = async profilePath => {
154
+ const copyFontsConfigFile = async (profilePath) => {
123
155
  if (!profilePath) {
124
156
  return;
125
157
  }
126
- const fileContent = await readFile((0, _path.resolve)(_dirname, '..', '..', 'fonts_config'), 'utf-8');
127
- const result = fileContent.replace(/\$\$GOLOGIN_FONTS\$\$/g, (0, _path.join)(profilePath, FONTS_DIR_NAME));
128
- const defaultFolderPath = (0, _path.join)(profilePath, 'Default');
158
+ const fileContent = await readFile(
159
+ (0, _path.resolve)(_dirname, "..", "..", "fonts_config"),
160
+ "utf-8"
161
+ );
162
+ const result = fileContent.replace(
163
+ /\$\$GOLOGIN_FONTS\$\$/g,
164
+ (0, _path.join)(profilePath, FONTS_DIR_NAME)
165
+ );
166
+ const defaultFolderPath = (0, _path.join)(profilePath, "Default");
129
167
  await mkdir(defaultFolderPath, {
130
- recursive: true
168
+ recursive: true,
131
169
  });
132
- await writeFile((0, _path.join)(defaultFolderPath, 'fonts_config'), result);
170
+ await writeFile((0, _path.join)(defaultFolderPath, "fonts_config"), result);
133
171
  };
134
172
  exports.copyFontsConfigFile = copyFontsConfigFile;
135
- const setExtPathsAndRemoveDeleted = (settings = {}, profileExtensionsCheckRes = [], profileId = '') => {
136
- const formattedLocalExtArray = profileExtensionsCheckRes.map(el => {
137
- const [extFolderName = ''] = el.split(_path.sep).reverse();
138
- const [originalId] = extFolderName.split('@');
139
- if (!originalId) {
140
- return null;
141
- }
142
- return {
143
- path: el,
144
- originalId
145
- };
146
- }).filter(Boolean);
173
+ const setExtPathsAndRemoveDeleted = (
174
+ settings = {},
175
+ profileExtensionsCheckRes = [],
176
+ profileId = ""
177
+ ) => {
178
+ const formattedLocalExtArray = profileExtensionsCheckRes
179
+ .map((el) => {
180
+ const [extFolderName = ""] = el.split(_path.sep).reverse();
181
+ const [originalId] = extFolderName.split("@");
182
+ if (!originalId) {
183
+ return null;
184
+ }
185
+ return {
186
+ path: el,
187
+ originalId,
188
+ };
189
+ })
190
+ .filter(Boolean);
147
191
  const extensionsSettings = settings.extensions?.settings || {};
148
192
  const extensionsEntries = Object.entries(extensionsSettings);
149
- const promises = extensionsEntries.map(async extensionObj => {
193
+ const promises = extensionsEntries.map(async (extensionObj) => {
150
194
  let [extensionId, currentExtSettings = {}] = extensionObj;
151
- const extName = currentExtSettings.manifest?.name || '';
152
- let extPath = currentExtSettings.path || '';
153
- let originalId = '';
154
- const isExtensionToBeDeleted = ['resources', 'passwords-ext', 'cookies-ext'].some(substring => extPath.includes(substring)) && [GOLOGIN_BASE_FOLDER_NAME, GOLOGIN_TEST_FOLDER_NAME].some(substring => extPath.includes(substring)) || DEFAULT_ORBITA_EXTENSIONS_NAMES.includes(extName) && [GOLOGIN_BASE_FOLDER_NAME, GOLOGIN_TEST_FOLDER_NAME].some(substring => extPath.includes(substring));
195
+ const extName = currentExtSettings.manifest?.name || "";
196
+ let extPath = currentExtSettings.path || "";
197
+ let originalId = "";
198
+ const isExtensionToBeDeleted =
199
+ (["resources", "passwords-ext", "cookies-ext"].some((substring) =>
200
+ extPath.includes(substring)
201
+ ) &&
202
+ [GOLOGIN_BASE_FOLDER_NAME, GOLOGIN_TEST_FOLDER_NAME].some((substring) =>
203
+ extPath.includes(substring)
204
+ )) ||
205
+ (DEFAULT_ORBITA_EXTENSIONS_NAMES.includes(extName) &&
206
+ [GOLOGIN_BASE_FOLDER_NAME, GOLOGIN_TEST_FOLDER_NAME].some((substring) =>
207
+ extPath.includes(substring)
208
+ ));
155
209
  if (isExtensionToBeDeleted) {
156
210
  delete extensionsSettings[extensionId];
157
211
  return;
158
212
  }
159
- if (osPlatform === 'win32') {
160
- extPath = extPath.replace(/\//g, '\\');
213
+ if (osPlatform === "win32") {
214
+ extPath = extPath.replace(/\//g, "\\");
161
215
  } else {
162
- extPath = extPath.replace(/\\/g, '/');
216
+ extPath = extPath.replace(/\\/g, "/");
163
217
  }
164
218
  extensionsSettings[extensionId].path = extPath;
165
219
  const splittedPath = extPath.split(_path.sep);
166
- const isExtensionManageable = ['chrome-extensions', 'user-extensions'].some(substring => extPath.includes(substring)) && [GOLOGIN_BASE_FOLDER_NAME, GOLOGIN_TEST_FOLDER_NAME].some(substring => extPath.includes(substring));
220
+ const isExtensionManageable =
221
+ ["chrome-extensions", "user-extensions"].some((substring) =>
222
+ extPath.includes(substring)
223
+ ) &&
224
+ [GOLOGIN_BASE_FOLDER_NAME, GOLOGIN_TEST_FOLDER_NAME].some((substring) =>
225
+ extPath.includes(substring)
226
+ );
167
227
  if (isExtensionManageable) {
168
228
  const [extFolderName] = extPath.split(_path.sep).reverse();
169
- [originalId] = extFolderName.split('@');
229
+ [originalId] = extFolderName.split("@");
170
230
  } else if (splittedPath.length === 2) {
171
231
  [originalId] = splittedPath;
172
232
  }
173
233
  if (isExtensionManageable || splittedPath.length === 2) {
174
- const isExtensionInProfileSettings = formattedLocalExtArray.find(el => el.path.includes(originalId));
234
+ const isExtensionInProfileSettings = formattedLocalExtArray.find((el) =>
235
+ el.path.includes(originalId)
236
+ );
175
237
  if (!isExtensionInProfileSettings) {
176
238
  delete extensionsSettings[extensionId];
177
239
  return;
178
240
  }
179
241
  }
180
- const localExtObj = originalId && formattedLocalExtArray.find(el => el.path.includes(originalId));
242
+ const localExtObj =
243
+ originalId &&
244
+ formattedLocalExtArray.find((el) => el.path.includes(originalId));
181
245
  if (!localExtObj) {
182
246
  return;
183
247
  }
@@ -186,62 +250,82 @@ const setExtPathsAndRemoveDeleted = (settings = {}, profileExtensionsCheckRes =
186
250
  localExtObj,
187
251
  extensionId,
188
252
  extensionsSettings,
189
- currentExtSettings
253
+ currentExtSettings,
190
254
  });
191
255
  if (initialExtName !== extensionId) {
192
- const profilePath = (0, _path.join)((0, _os.tmpdir)(), `gologin_profile_${profileId}`);
193
- const extSyncFolder = (0, _path.join)(profilePath, 'Default', 'Sync Extension Settings', initialExtName);
194
- const newSyncFolder = (0, _path.join)(profilePath, 'Default', 'Sync Extension Settings', extensionId);
256
+ const profilePath = (0, _path.join)(
257
+ (0, _os.tmpdir)(),
258
+ `gologin_profile_${profileId}`
259
+ );
260
+ const extSyncFolder = (0, _path.join)(
261
+ profilePath,
262
+ "Default",
263
+ "Sync Extension Settings",
264
+ initialExtName
265
+ );
266
+ const newSyncFolder = (0, _path.join)(
267
+ profilePath,
268
+ "Default",
269
+ "Sync Extension Settings",
270
+ extensionId
271
+ );
195
272
  await rename(extSyncFolder, newSyncFolder).catch(() => null);
196
273
  }
197
- if (localExtObj.path.endsWith('.zip')) {
198
- localExtObj.path = localExtObj.path.replace('.zip', '');
274
+ if (localExtObj.path.endsWith(".zip")) {
275
+ localExtObj.path = localExtObj.path.replace(".zip", "");
199
276
  }
200
- extensionsSettings[extensionId].path = localExtObj.path || '';
277
+ extensionsSettings[extensionId].path = localExtObj.path || "";
201
278
  });
202
279
  return Promise.all(promises).then(() => extensionsSettings);
203
280
  };
204
281
  exports.setExtPathsAndRemoveDeleted = setExtPathsAndRemoveDeleted;
205
- const setOriginalExtPaths = async (settings = {}, originalExtensionsFolder = '') => {
282
+ const setOriginalExtPaths = async (
283
+ settings = {},
284
+ originalExtensionsFolder = ""
285
+ ) => {
206
286
  if (!originalExtensionsFolder) {
207
287
  return null;
208
288
  }
209
289
  const extensionsSettings = settings.extensions?.settings || {};
210
290
  const extensionsEntries = Object.entries(extensionsSettings);
211
- const originalExtensionsList = await readdir(originalExtensionsFolder).catch(() => []);
291
+ const originalExtensionsList = await readdir(originalExtensionsFolder).catch(
292
+ () => []
293
+ );
212
294
  if (!originalExtensionsList.length) {
213
295
  return null;
214
296
  }
215
- const promises = originalExtensionsList.map(async originalId => {
297
+ const promises = originalExtensionsList.map(async (originalId) => {
216
298
  const extFolderPath = (0, _path.join)(originalExtensionsFolder, originalId);
217
299
  const extFolderContent = await readdir(extFolderPath);
218
300
  if (!extFolderPath.length) {
219
301
  return {};
220
302
  }
221
- if (extFolderContent.includes('manifest.json')) {
303
+ if (extFolderContent.includes("manifest.json")) {
222
304
  return {
223
305
  originalId,
224
- path: (0, _path.join)(originalExtensionsFolder, originalId)
306
+ path: (0, _path.join)(originalExtensionsFolder, originalId),
225
307
  };
226
308
  }
227
309
  const [version] = extFolderContent;
228
310
  return {
229
311
  originalId,
230
- path: (0, _path.join)(originalExtensionsFolder, originalId, version)
312
+ path: (0, _path.join)(originalExtensionsFolder, originalId, version),
231
313
  };
232
314
  });
233
315
  const originalExtPaths = await Promise.all(promises);
234
- extensionsEntries.forEach(extensionObj => {
316
+ extensionsEntries.forEach((extensionObj) => {
235
317
  const [extensionsId] = extensionObj;
236
318
  const extPath = extensionsSettings[extensionsId].path;
237
319
  if (!/chrome-extensions/.test(extPath)) {
238
320
  return;
239
321
  }
240
- const originalExtPath = originalExtPaths.find(el => el.originalId === extensionsId);
322
+ const originalExtPath = originalExtPaths.find(
323
+ (el) => el.originalId === extensionsId
324
+ );
241
325
  if (!originalExtPath) {
242
326
  return;
243
327
  }
244
- extensionsSettings[extensionsId].path = originalExtPath.path || '';
328
+ extensionsSettings[extensionsId].path = originalExtPath.path || "";
245
329
  });
246
330
  return extensionsSettings;
247
331
  };
@@ -250,14 +334,14 @@ const recalculateId = async ({
250
334
  localExtObj,
251
335
  extensionId,
252
336
  extensionsSettings,
253
- currentExtSettings
337
+ currentExtSettings,
254
338
  }) => {
255
339
  if (currentExtSettings.manifest?.key) {
256
340
  return extensionId;
257
341
  }
258
- const manifestFilePath = (0, _path.join)(localExtObj.path, 'manifest.json');
342
+ const manifestFilePath = (0, _path.join)(localExtObj.path, "manifest.json");
259
343
  const manifestString = await readFile(manifestFilePath, {
260
- encoding: 'utf8'
344
+ encoding: "utf8",
261
345
  }).catch(() => ({}));
262
346
  if (!manifestString) {
263
347
  return extensionId;
@@ -271,13 +355,19 @@ const recalculateId = async ({
271
355
  if (manifestObject.key) {
272
356
  return extensionId;
273
357
  }
274
- let encoding = 'utf8';
275
- if (osPlatform === 'win32') {
276
- encoding = 'utf16le';
358
+ let encoding = "utf8";
359
+ if (osPlatform === "win32") {
360
+ encoding = "utf16le";
277
361
  }
278
362
  const extPathToEncode = Buffer.from(localExtObj.path, encoding);
279
- const hexEncodedPath = (0, _crypto.createHash)('sha256').update(extPathToEncode).digest('hex');
280
- const newId = hexEncodedPath.split('').slice(0, 32).map(symbol => extIdEncoding[symbol]).join('');
363
+ const hexEncodedPath = (0, _crypto.createHash)("sha256")
364
+ .update(extPathToEncode)
365
+ .digest("hex");
366
+ const newId = hexEncodedPath
367
+ .split("")
368
+ .slice(0, 32)
369
+ .map((symbol) => extIdEncoding[symbol])
370
+ .join("");
281
371
  if (extensionId !== newId) {
282
372
  delete extensionsSettings[extensionId];
283
373
  extensionsSettings[newId] = currentExtSettings;
@@ -287,20 +377,20 @@ const recalculateId = async ({
287
377
  };
288
378
  exports.recalculateId = recalculateId;
289
379
  const extIdEncoding = {
290
- 0: 'a',
291
- 1: 'b',
292
- 2: 'c',
293
- 3: 'd',
294
- 4: 'e',
295
- 5: 'f',
296
- 6: 'g',
297
- 7: 'h',
298
- 8: 'i',
299
- 9: 'j',
300
- a: 'k',
301
- b: 'l',
302
- c: 'm',
303
- d: 'n',
304
- e: 'o',
305
- f: 'p'
306
- };
380
+ 0: "a",
381
+ 1: "b",
382
+ 2: "c",
383
+ 3: "d",
384
+ 4: "e",
385
+ 5: "f",
386
+ 6: "g",
387
+ 7: "h",
388
+ 8: "i",
389
+ 9: "j",
390
+ a: "k",
391
+ b: "l",
392
+ c: "m",
393
+ d: "n",
394
+ e: "o",
395
+ f: "p",
396
+ };