@open-wa/wa-automate 4.76.0 → 5.0.0-alpha.2

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 (125) hide show
  1. package/README.md +14 -165
  2. package/dist/cli-runtime-B7_3MM0c.cjs +798 -0
  3. package/dist/cli-runtime-B7_3MM0c.cjs.map +1 -0
  4. package/dist/cli-runtime-CmpYxFCk.d.cts +31 -0
  5. package/dist/cli-runtime-CmpYxFCk.d.cts.map +1 -0
  6. package/dist/cli.cjs +17 -0
  7. package/dist/cli.cjs.map +1 -0
  8. package/dist/cli.d.cts +2 -0
  9. package/dist/index.cjs +224 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.cts +81 -0
  12. package/dist/index.d.cts.map +1 -0
  13. package/package.json +34 -177
  14. package/CNAME +0 -1
  15. package/_tsconfig.docs.json +0 -140
  16. package/bin/config-schema.json +0 -1
  17. package/bin/oas-type-schemas.json +0 -1
  18. package/bin/server.js +0 -45
  19. package/build/build-config-json-for-bin.ts +0 -56
  20. package/build/generate-oas-types.ts +0 -31
  21. package/dist/api/Client.d.ts +0 -2255
  22. package/dist/api/Client.js +0 -4358
  23. package/dist/api/functions/exposed.enum.d.ts +0 -7
  24. package/dist/api/functions/exposed.enum.js +0 -11
  25. package/dist/api/model/aliases.d.ts +0 -110
  26. package/dist/api/model/aliases.js +0 -3
  27. package/dist/api/model/button.d.ts +0 -24
  28. package/dist/api/model/button.js +0 -2
  29. package/dist/api/model/call.d.ts +0 -51
  30. package/dist/api/model/call.js +0 -18
  31. package/dist/api/model/chat.d.ts +0 -221
  32. package/dist/api/model/chat.js +0 -52
  33. package/dist/api/model/config.d.ts +0 -836
  34. package/dist/api/model/config.js +0 -111
  35. package/dist/api/model/contact.d.ts +0 -143
  36. package/dist/api/model/contact.js +0 -2
  37. package/dist/api/model/errors.d.ts +0 -90
  38. package/dist/api/model/errors.js +0 -117
  39. package/dist/api/model/events.d.ts +0 -120
  40. package/dist/api/model/events.js +0 -127
  41. package/dist/api/model/group-metadata.d.ts +0 -124
  42. package/dist/api/model/group-metadata.js +0 -25
  43. package/dist/api/model/id.d.ts +0 -5
  44. package/dist/api/model/id.js +0 -2
  45. package/dist/api/model/index.d.ts +0 -110
  46. package/dist/api/model/index.js +0 -128
  47. package/dist/api/model/label.d.ts +0 -24
  48. package/dist/api/model/label.js +0 -2
  49. package/dist/api/model/media.d.ts +0 -93
  50. package/dist/api/model/media.js +0 -12
  51. package/dist/api/model/message.d.ts +0 -422
  52. package/dist/api/model/message.js +0 -40
  53. package/dist/api/model/product.d.ts +0 -141
  54. package/dist/api/model/product.js +0 -2
  55. package/dist/api/model/reactions.d.ts +0 -76
  56. package/dist/api/model/reactions.js +0 -2
  57. package/dist/api/model/sessionInfo.d.ts +0 -77
  58. package/dist/api/model/sessionInfo.js +0 -2
  59. package/dist/build/build-postman.d.ts +0 -1
  60. package/dist/build/build-postman.js +0 -262
  61. package/dist/cli/cli-options.d.ts +0 -9
  62. package/dist/cli/cli-options.js +0 -289
  63. package/dist/cli/collections.d.ts +0 -2
  64. package/dist/cli/collections.js +0 -251
  65. package/dist/cli/file-utils.d.ts +0 -1
  66. package/dist/cli/file-utils.js +0 -71
  67. package/dist/cli/index.d.ts +0 -1
  68. package/dist/cli/index.js +0 -231
  69. package/dist/cli/integrations/chatwoot.d.ts +0 -49
  70. package/dist/cli/integrations/chatwoot.js +0 -672
  71. package/dist/cli/integrations/cloudflare.d.ts +0 -6
  72. package/dist/cli/integrations/cloudflare.js +0 -76
  73. package/dist/cli/logo.d.ts +0 -1
  74. package/dist/cli/logo.js +0 -49
  75. package/dist/cli/server.d.ts +0 -24
  76. package/dist/cli/server.js +0 -540
  77. package/dist/cli/setup.d.ts +0 -30
  78. package/dist/cli/setup.js +0 -308
  79. package/dist/config/puppeteer.config.d.ts +0 -11
  80. package/dist/config/puppeteer.config.js +0 -65
  81. package/dist/controllers/auth.d.ts +0 -36
  82. package/dist/controllers/auth.js +0 -322
  83. package/dist/controllers/browser.d.ts +0 -17
  84. package/dist/controllers/browser.js +0 -603
  85. package/dist/controllers/events.d.ts +0 -82
  86. package/dist/controllers/events.js +0 -173
  87. package/dist/controllers/init_patch.d.ts +0 -13
  88. package/dist/controllers/init_patch.js +0 -42
  89. package/dist/controllers/initializer.d.ts +0 -22
  90. package/dist/controllers/initializer.js +0 -511
  91. package/dist/controllers/launch_checks.d.ts +0 -8
  92. package/dist/controllers/launch_checks.js +0 -130
  93. package/dist/controllers/patch_manager.d.ts +0 -37
  94. package/dist/controllers/patch_manager.js +0 -231
  95. package/dist/controllers/popup/index.d.ts +0 -3
  96. package/dist/controllers/popup/index.html +0 -168
  97. package/dist/controllers/popup/index.js +0 -148
  98. package/dist/controllers/script_preloader.d.ts +0 -17
  99. package/dist/controllers/script_preloader.js +0 -88
  100. package/dist/index.d.ts +0 -13
  101. package/dist/index.js +0 -36
  102. package/dist/lib/README.md +0 -5
  103. package/dist/lib/base64.js +0 -1
  104. package/dist/lib/hash.js +0 -1
  105. package/dist/lib/jsSha.min.js +0 -1
  106. package/dist/lib/launch.js +0 -1
  107. package/dist/lib/qr.min.js +0 -1
  108. package/dist/lib/wapi.js +0 -2163
  109. package/dist/logging/custom_transport.d.ts +0 -9
  110. package/dist/logging/custom_transport.js +0 -35
  111. package/dist/logging/logging.d.ts +0 -50
  112. package/dist/logging/logging.js +0 -196
  113. package/dist/structures/Collector.d.ts +0 -202
  114. package/dist/structures/Collector.js +0 -391
  115. package/dist/structures/Dialog.d.ts +0 -55
  116. package/dist/structures/Dialog.js +0 -21
  117. package/dist/structures/MessageCollector.d.ts +0 -78
  118. package/dist/structures/MessageCollector.js +0 -145
  119. package/dist/structures/preProcessors.d.ts +0 -58
  120. package/dist/structures/preProcessors.js +0 -181
  121. package/dist/utils/pid_utils.d.ts +0 -1
  122. package/dist/utils/pid_utils.js +0 -26
  123. package/dist/utils/tools.d.ts +0 -152
  124. package/dist/utils/tools.js +0 -494
  125. package/tos.md +0 -77
@@ -1,37 +0,0 @@
1
- import { ConfigObject } from '../api/model/index';
2
- import { Spin } from './events';
3
- import { SessionInfo } from '../api/model/sessionInfo';
4
- import { Page } from 'puppeteer';
5
- /**
6
- * @private
7
- */
8
- export declare function getPatch(config: ConfigObject, spinner?: Spin, sessionInfo?: SessionInfo): Promise<{
9
- data: any;
10
- tag: string;
11
- }>;
12
- /**
13
- * @private
14
- * @param page
15
- * @param spinner
16
- */
17
- export declare function injectLivePatch(page: Page, patch: {
18
- data: any;
19
- tag: string;
20
- }, spinner?: Spin): Promise<string>;
21
- /**
22
- * @private
23
- */
24
- export declare function getAndInjectLivePatch(page: Page, spinner?: Spin, preloadedPatch?: {
25
- data: any;
26
- tag: string;
27
- }, config?: ConfigObject, sessionInfo?: SessionInfo): Promise<void>;
28
- /**
29
- * @private
30
- */
31
- export declare function getLicense(config: ConfigObject, me: {
32
- _serialized: string;
33
- }, debugInfo: SessionInfo, spinner?: Spin): Promise<string | false>;
34
- export declare function earlyInjectionCheck(page: Page): Promise<(page: Page) => boolean>;
35
- export declare function getAndInjectLicense(page: Page, config: ConfigObject, me: {
36
- _serialized: string;
37
- }, debugInfo: SessionInfo, spinner?: Spin, preloadedLicense?: string | false): Promise<boolean>;
@@ -1,231 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.getAndInjectLicense = exports.earlyInjectionCheck = exports.getLicense = exports.getAndInjectLivePatch = exports.injectLivePatch = exports.getPatch = void 0;
39
- const crypto = __importStar(require("crypto"));
40
- const events_1 = require("./events");
41
- const initializer_1 = require("./initializer");
42
- const axios_1 = __importDefault(require("axios"));
43
- const fs_1 = require("fs");
44
- const { default: PQueue } = require("p-queue");
45
- const queue = new PQueue();
46
- /**
47
- * @private
48
- */
49
- function getPatch(config, spinner, sessionInfo) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- var data = null;
52
- var headers = {};
53
- const ghUrl = `https://raw.githubusercontent.com/open-wa/wa-automate-nodejs/master/patches.json`;
54
- const hasSpin = !!spinner;
55
- const patchFilePath = `${process.cwd()}/patches.ignore.data.json`;
56
- /**
57
- * If cachedPatch is true then search for patch in current working directory.
58
- */
59
- if (config === null || config === void 0 ? void 0 : config.cachedPatch) {
60
- spinner.info('Searching for cached patch');
61
- // open file called patches.json and read as string
62
- if ((0, fs_1.existsSync)(patchFilePath)) {
63
- spinner.info('Found cached patch');
64
- const lastModifiedDate = (0, fs_1.statSync)(patchFilePath).mtimeMs;
65
- /**
66
- * Check if patchFilePath file is more than 1 day old
67
- */
68
- if ((lastModifiedDate + 86400000) < Date.now()) {
69
- //this patch is stale.
70
- spinner.fail('Cached patch is stale.');
71
- }
72
- else {
73
- const patch = (0, fs_1.readFileSync)(patchFilePath, 'utf8');
74
- data = JSON.parse(patch);
75
- spinner.info('Cached patch loaded');
76
- }
77
- }
78
- else
79
- spinner.fail('Cached patch not found');
80
- }
81
- const freshPatchFetchPromise = () => new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
82
- const patchesBaseUrl = (config === null || config === void 0 ? void 0 : config.ghPatch) ? ghUrl : initializer_1.pkg.patches;
83
- const patchesUrl = patchesBaseUrl + `?wv=${sessionInfo.WA_VERSION}&wav=${sessionInfo.WA_AUTOMATE_VERSION}`;
84
- if (!spinner)
85
- spinner = new events_1.Spin(config.sessionId, "FETCH_PATCH", config.disableSpins, true);
86
- spinner === null || spinner === void 0 ? void 0 : spinner.start(`Downloading ${(config === null || config === void 0 ? void 0 : config.cachedPatch) ? 'cached ' : ''}patches from ${patchesBaseUrl}`, hasSpin ? undefined : 2);
87
- const START = Date.now();
88
- var { data, headers } = yield axios_1.default.get(patchesUrl).catch(() => {
89
- spinner === null || spinner === void 0 ? void 0 : spinner.info('Downloading patches. Retrying.');
90
- return axios_1.default.get(`${ghUrl}?v=${Date.now()}`);
91
- });
92
- const END = Date.now();
93
- if (!headers['etag']) {
94
- spinner === null || spinner === void 0 ? void 0 : spinner.info('Generating patch hash');
95
- headers['etag'] = crypto.createHash('md5').update(typeof data === 'string' ? data : JSON.stringify(data)).digest("hex").slice(-5);
96
- }
97
- spinner === null || spinner === void 0 ? void 0 : spinner.succeed(`Downloaded patches in ${(END - START) / 1000}s`);
98
- if (config === null || config === void 0 ? void 0 : config.cachedPatch) {
99
- //save patches.json to current working directory
100
- spinner === null || spinner === void 0 ? void 0 : spinner.info('Saving patches to current working directory');
101
- (0, fs_1.writeFileSync)(patchFilePath, JSON.stringify(data, null, 2));
102
- spinner === null || spinner === void 0 ? void 0 : spinner.succeed('Saved patches to current working directory');
103
- }
104
- return resolve({
105
- data,
106
- tag: `${(headers.etag || '').replace(/"/g, '').slice(-5)}`
107
- });
108
- }));
109
- if ((config === null || config === void 0 ? void 0 : config.cachedPatch) && data) {
110
- queue.add(freshPatchFetchPromise);
111
- return { data, tag: `CACHED-${(crypto.createHash('md5').update(typeof data === 'string' ? data : JSON.stringify(data)).digest("hex").slice(-5)).replace(/"/g, '').slice(-5)}` };
112
- }
113
- else
114
- return yield freshPatchFetchPromise();
115
- });
116
- }
117
- exports.getPatch = getPatch;
118
- /**
119
- * @private
120
- * @param page
121
- * @param spinner
122
- */
123
- function injectLivePatch(page, patch, spinner) {
124
- return __awaiter(this, void 0, void 0, function* () {
125
- const { data, tag } = patch;
126
- spinner === null || spinner === void 0 ? void 0 : spinner.info('Installing patches');
127
- yield Promise.all(data.map(patch => page.evaluate(`${patch}`)));
128
- spinner === null || spinner === void 0 ? void 0 : spinner.succeed(`Patches Installed: ${tag}`);
129
- return tag;
130
- });
131
- }
132
- exports.injectLivePatch = injectLivePatch;
133
- /**
134
- * @private
135
- */
136
- function getAndInjectLivePatch(page, spinner, preloadedPatch, config, sessionInfo) {
137
- return __awaiter(this, void 0, void 0, function* () {
138
- let patch = preloadedPatch;
139
- if (!patch)
140
- patch = yield getPatch(config, spinner, sessionInfo);
141
- const patch_hash = yield injectLivePatch(page, patch, spinner);
142
- sessionInfo.PATCH_HASH = patch_hash;
143
- });
144
- }
145
- exports.getAndInjectLivePatch = getAndInjectLivePatch;
146
- /**
147
- * @private
148
- */
149
- function getLicense(config, me, debugInfo, spinner) {
150
- return __awaiter(this, void 0, void 0, function* () {
151
- if (!(config === null || config === void 0 ? void 0 : config.licenseKey) || !(me === null || me === void 0 ? void 0 : me._serialized))
152
- return false;
153
- const hasSpin = !!spinner;
154
- if (!spinner)
155
- spinner = new events_1.Spin(config.sessionId || "session", "FETCH_LICENSE", config.disableSpins, true);
156
- if (typeof config.licenseKey === "function") {
157
- //run the funciton to get the key
158
- config.licenseKey = yield config.licenseKey(config.sessionId, me._serialized);
159
- }
160
- if (config.licenseKey && typeof config.licenseKey === "object") {
161
- //attempt to get the key from the object
162
- //@ts-ignore
163
- config.licenseKey = config.licenseKey[me._serialized] || config.licenseKey[config.sessionId];
164
- }
165
- //asume by now the key is a string
166
- spinner === null || spinner === void 0 ? void 0 : spinner.start(`Fetching License: ${Array.isArray(config.licenseKey) ? config.licenseKey : typeof config.licenseKey === "string" ? config.licenseKey.indexOf("-") == -1 ? config.licenseKey.slice(-4) : config.licenseKey.split("-").slice(-1)[0] : config.licenseKey}`, hasSpin ? undefined : 2);
167
- try {
168
- const START = Date.now();
169
- const { data } = yield axios_1.default.post(initializer_1.pkg.licenseCheckUrl, Object.assign({ key: config.licenseKey, number: me._serialized }, debugInfo));
170
- const END = Date.now();
171
- spinner === null || spinner === void 0 ? void 0 : spinner.succeed(`Downloaded License in ${(END - START) / 1000}s`);
172
- return data;
173
- }
174
- catch (error) {
175
- spinner === null || spinner === void 0 ? void 0 : spinner.fail(`License request failed: ${error.statusCode || error.status || error.code} ${error.message}`);
176
- return false;
177
- }
178
- });
179
- }
180
- exports.getLicense = getLicense;
181
- function earlyInjectionCheck(page) {
182
- return __awaiter(this, void 0, void 0, function* () {
183
- //@ts-ignore
184
- yield page.waitForFunction(`require("__debug").modulesMap["WAWebCollections"] ? true : false`, { timeout: 10, polling: 500 }).catch(() => { });
185
- //@ts-ignore
186
- // return await page.evaluate(() => { if (window.webpackChunkwhatsapp_web_client) { window.webpackChunkbuild = window.webpackChunkwhatsapp_web_client; } else { (function () { const f = Object.entries(window).filter(([, o]) => o && o.push && (o.push != [].push)); if (f[0]) { window.webpackChunkbuild = window[f[0][0]]; } })(); } return (typeof window.webpackChunkbuild !== "undefined"); });
187
- return true;
188
- });
189
- }
190
- exports.earlyInjectionCheck = earlyInjectionCheck;
191
- function getAndInjectLicense(page, config, me, debugInfo, spinner, preloadedLicense) {
192
- return __awaiter(this, void 0, void 0, function* () {
193
- if (!(config === null || config === void 0 ? void 0 : config.licenseKey) || !(me === null || me === void 0 ? void 0 : me._serialized))
194
- return false;
195
- let l_err;
196
- let data = preloadedLicense;
197
- spinner === null || spinner === void 0 ? void 0 : spinner.info('Checking License');
198
- try {
199
- if (!data) {
200
- spinner === null || spinner === void 0 ? void 0 : spinner.info('Fethcing License...');
201
- data = yield getLicense(config, me, debugInfo, spinner);
202
- }
203
- if (data) {
204
- spinner === null || spinner === void 0 ? void 0 : spinner.info('Injecting License...');
205
- const l_success = yield page.evaluate(data => eval(data), data);
206
- if (!l_success) {
207
- spinner === null || spinner === void 0 ? void 0 : spinner.info('License injection failed. Getting error..');
208
- l_err = yield page.evaluate('window.launchError');
209
- }
210
- else {
211
- spinner === null || spinner === void 0 ? void 0 : spinner.info('License injected successfully..');
212
- const keyType = yield page.evaluate('window.KEYTYPE || false');
213
- spinner === null || spinner === void 0 ? void 0 : spinner.succeed(`License Valid${keyType ? `: ${keyType}` : ''}`);
214
- return true;
215
- }
216
- }
217
- else
218
- l_err = "The key is invalid";
219
- if (l_err) {
220
- spinner === null || spinner === void 0 ? void 0 : spinner.fail(`License issue${l_err ? `: ${l_err}` : ""}`);
221
- }
222
- return false;
223
- }
224
- catch (error) {
225
- spinner === null || spinner === void 0 ? void 0 : spinner.fail(`License request failed: ${error.statusCode || error.status || error.code} ${error.message}`);
226
- return false;
227
- }
228
- });
229
- }
230
- exports.getAndInjectLicense = getAndInjectLicense;
231
- // export * from './init_patch';
@@ -1,3 +0,0 @@
1
- import { ConfigObject } from "../../api/model";
2
- export declare function popup(config: ConfigObject): Promise<string>;
3
- export declare const closeHttp: () => Promise<void>;
@@ -1,168 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
-
4
- <head>
5
- <title>open-wa</title>
6
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
- <script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
8
- <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.2.0/socket.io.js"
9
- integrity="sha512-WL6WGKMPBiM9PnHRYIn5YEtq0Z8XP4fkVb4qy7PP4vhmYQErJ/dySyXuFIMDf1eEYCXCrQrMJfkNwKc9gsjTjA=="
10
- crossorigin="anonymous" referrerpolicy="no-referrer"></script>
11
-
12
-
13
- <style>
14
- body {
15
- color: #1a2c37;
16
- font-family: 'Helvetica', sans-serif;
17
- font-size: 86%;
18
- padding: 2em;
19
- }
20
-
21
- .info {
22
- font-size: 120%;
23
- font-weight: bold;
24
- }
25
-
26
- .log {
27
- border: 1px solid #ccc;
28
- height: 300px;
29
- padding: 0.5em;
30
- overflow: hidden;
31
- position: relative;
32
- overflow-y: scroll;
33
- height: 400px;
34
- min-width: 400px;
35
- margin: auto;
36
- margin-left: 16px;
37
- max-width: 50%;
38
- width: 50%;
39
- white-space: pre-wrap; /* css-3 */
40
- white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
41
- white-space: -pre-wrap; /* Opera 4-6 */
42
- white-space: -o-pre-wrap; /* Opera 7 */
43
- word-wrap: break-word; /* Internet Explorer 5.5+ */
44
- }
45
-
46
- .qr {
47
- width: 400px;
48
- height: 400px;
49
- margin: auto;
50
- }
51
-
52
- .eventwrap {
53
- display: flex;
54
- flex-direction: row;
55
- }
56
- </style>
57
-
58
- </head>
59
-
60
- <body>
61
- <div id="wrap">
62
-
63
- </div>
64
-
65
- <script>
66
-
67
- var Application = function () {
68
- var sessions = [];
69
- function c() {
70
- var n = $('.c').attr('id');
71
- var c = n;
72
- $('.c').text(c);
73
- setInterval(function () {
74
- c--;
75
- if (c >= 0) {
76
- $('.c').text(c);
77
- }
78
- }, 1000);
79
- }
80
-
81
- function consume(message) {
82
- console.log('Received message:', message);
83
- if (!sessions.includes(message.sessionId)) {
84
- $('#wrap').append(`
85
- <div id=${message.sessionId}>
86
- <h1 class="info"></h1>
87
- <div class="eventwrap">
88
- <pre class="log"></pre>
89
- <img class="qr" />
90
- <div>
91
- </div>
92
- `);
93
- sessions.push(message.sessionId);
94
- setInterval(() => {
95
- var element = document.getElementById(message.sessionId).children[1];
96
- element.scrollTop = element.scrollHeight;
97
- }, 1000);
98
- };
99
-
100
- if (message.sessionId) {
101
- $(`#${message.sessionId} .info`).html('Session: ' + message.sessionId);
102
- };
103
- if (message.namespace === "qr") {
104
- $(`#${message.sessionId} .qr`)[0].src = message.data
105
- }
106
- if (message.namespace === "ready") {
107
- const link = (message.data || location.href.substring(0, location.href.length - 1)) + "/api-docs/"
108
- $(`#${message.sessionId} .log`).html(`${$(`#${message.sessionId} .log`).html()} API Explorer: <a href="${link}" target="_blank" >${link}</a>\n You may need to refresh the page. and wait <span class="c" id="5"></span> seconds. <br><br><br><br>`);
109
- // Start
110
- c();
111
- }
112
- if (message.data) {
113
- if (message.namespace !== "sessionDataBase64") $(`#${message.sessionId} .log`).html(`${$(`#${message.sessionId} .log`).html()} ${message.namespace} ${typeof message.data === 'object' ? JSON.stringify(message.data, null, 4) : message.data} <br>`);
114
- }
115
- }
116
- console.log("Application -> window.location.origin", window.location.origin, window.location.href)
117
-
118
- const socketUrl = window.location.origin
119
- const fallback = `${window.location.origin}${window.location.pathname.split('/').filter(x => !x.includes('.')).join('/')}`;
120
- const isReverseProxied = window.location.pathname.split('/').includes('api')
121
- let socket = io(socketUrl, {
122
- path: isReverseProxied ? `${window.location.pathname.replace(/\/$/, '')}/socket.io` : `/socket.io`
123
- });
124
-
125
- socket.io.reconnectionAttempts(3)
126
-
127
- socket.io.on("reconnect_attempt", () => {
128
- console.log("reconnect_attempt");
129
- });
130
-
131
- socket.io.on("reconnect_failed", () => {
132
- console.log("reconnect_failed");
133
- console.log('trying different URL, transferring all event listeners')
134
- const callbacks = [
135
- ...Object.entries(socket._callbacks)
136
- ]
137
- socket = io(fallback, {
138
- path: isReverseProxied ? `${window.location.pathname.replace(/\/$/, '')}/socket.io` : `/socket.io`
139
- });
140
-
141
- callbacks.map(([key, callbacks]) => callbacks.map(cb => socket.on(`${key.replace('$', '')}`, cb)))
142
- });
143
-
144
- socket.on('connect', function () {
145
- console.log('Connected to:', socket);
146
- });
147
-
148
- socket.on('disconnect', (reason) => {
149
- sessions.map(sessionId => consume({
150
- sessionId,
151
- data: `Connection to the launch logs socket is now closed. You can now close this window or go to the api docs ${window.location.href}/api-docs/`,
152
- namespace: 'SOCKET'
153
- }));
154
- socket.close();
155
- });
156
- socket.on('message', consume);
157
- return {
158
- socket
159
- };
160
- };
161
-
162
- $(function () { var app = Application(); });
163
-
164
- </script>
165
-
166
- </body>
167
-
168
- </html>
@@ -1,148 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.closeHttp = exports.popup = void 0;
39
- /** @internal */ /** */
40
- const events_1 = require("../events");
41
- const socket_io_1 = require("socket.io");
42
- const os_name_1 = __importDefault(require("os-name"));
43
- const open_1 = __importDefault(require("open"));
44
- const get_port_1 = __importDefault(require("get-port"));
45
- const command_exists_1 = __importDefault(require("command-exists"));
46
- const http_1 = __importDefault(require("http"));
47
- const tools_1 = require("../../utils/tools");
48
- const logging_1 = require("../../logging/logging");
49
- const placeholders = {
50
- "authenticated": "data:image/png;base64,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",
51
- "loading": "data:image/png;base64,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"
52
- }, currentQrCodes = {
53
- "latest": placeholders.loading
54
- }, serverSockets = {};
55
- let io, express, app, gClient, PORT, server;
56
- const setUpApp = () => __awaiter(void 0, void 0, void 0, function* () {
57
- express = (yield Promise.resolve().then(() => __importStar(require('express')))).default;
58
- app = express();
59
- app.use(express.static(__dirname + '/node_modules'));
60
- app.get('/', function (req, res) {
61
- res.sendFile(__dirname + '/index.html');
62
- });
63
- app.get('/qr', function (req, res) {
64
- const { sessionId } = req.query;
65
- const qr = sessionId ? currentQrCodes[sessionId] || currentQrCodes.latest : currentQrCodes.latest;
66
- res.writeHead(200, { 'Content-Type': 'image/png' });
67
- res.write(Buffer.from(qr.replace('data:image/png;base64,', ''), 'base64'), 'utf8');
68
- res.end();
69
- });
70
- });
71
- function popup(config) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- yield setUpApp();
74
- const _p = process.env.PORT || config.port;
75
- const preferredPort = typeof config.popup === "boolean" && config.popup && _p ? Number(_p) : config.popup;
76
- const popupListener = events_1.ev.on('**', (data, sessionId, namespace) => __awaiter(this, void 0, void 0, function* () {
77
- if (namespace === null || namespace === void 0 ? void 0 : namespace.includes("sessionData"))
78
- return;
79
- if (gClient) {
80
- yield gClient.send({ data, sessionId, namespace });
81
- if ((data === null || data === void 0 ? void 0 : data.includes) && (data === null || data === void 0 ? void 0 : data.includes("ready for account"))) {
82
- yield gClient.send({ data: config === null || config === void 0 ? void 0 : config.apiHost, sessionId, namespace: "ready" });
83
- }
84
- }
85
- if (namespace === 'qr') {
86
- currentQrCodes['latest'] = currentQrCodes[sessionId] = data;
87
- }
88
- if ((data === null || data === void 0 ? void 0 : data.includes) && (data === null || data === void 0 ? void 0 : data.includes("Authenticated"))) {
89
- currentQrCodes['latest'] = currentQrCodes[sessionId] = placeholders.authenticated;
90
- }
91
- if ((data === null || data === void 0 ? void 0 : data.includes) && (data === null || data === void 0 ? void 0 : data.includes("ready for account"))) {
92
- //@ts-ignore
93
- popupListener.off();
94
- yield (0, exports.closeHttp)();
95
- }
96
- }), { objectify: true });
97
- /**
98
- * There should only be one instance of this open. If the server is already running, respond with the address.
99
- */
100
- if (server)
101
- return `http://localhost:${PORT}`;
102
- PORT = yield (0, get_port_1.default)({ host: 'localhost', port: typeof preferredPort == 'number' ? [preferredPort, 7000, 7001, 7002] : [7000, 7001, 7002] });
103
- logging_1.log.info(`popup port set to ${PORT}`);
104
- server = http_1.default.createServer(app);
105
- if (!(config === null || config === void 0 ? void 0 : config.qrPopUpOnly)) {
106
- io = new socket_io_1.Server(server);
107
- io.on('connection', function (client) {
108
- gClient = client;
109
- gClient.send({ data: 'CONNECTED', sessionId: (config === null || config === void 0 ? void 0 : config.sessionId) || 'session', namespace: 'SOCKET' });
110
- gClient.send({ data: (config === null || config === void 0 ? void 0 : config.sessionId) ? currentQrCodes[config === null || config === void 0 ? void 0 : config.sessionId] || currentQrCodes.latest : currentQrCodes.latest, sessionId: (config === null || config === void 0 ? void 0 : config.sessionId) || 'session', namespace: 'qr' });
111
- });
112
- }
113
- server.on("connection", (conn) => {
114
- const key = conn.remoteAddress + ':' + conn.remotePort;
115
- serverSockets[key] = conn;
116
- conn.on("close", () => {
117
- delete serverSockets[key];
118
- });
119
- });
120
- server.listen(PORT);
121
- (0, tools_1.processSendData)({ port: PORT });
122
- const os = (0, os_name_1.default)();
123
- const appName = os.includes('macOS') ? 'google chrome' : os.includes('Windows') ? 'chrome' : 'google-chrome';
124
- const hasChrome = yield (0, command_exists_1.default)(appName).then(() => true).catch(() => false);
125
- if (hasChrome) {
126
- if (!(config === null || config === void 0 ? void 0 : config.inDocker))
127
- yield (0, open_1.default)(`http://localhost:${PORT}${(config === null || config === void 0 ? void 0 : config.qrPopUpOnly) ? `/qr` : ``}`, { app: {
128
- name: (config === null || config === void 0 ? void 0 : config.executablePath) || appName,
129
- arguments: ['--incognito']
130
- }, allowNonzeroExitCode: true }).catch(() => { return; });
131
- else
132
- return `http://localhost:${PORT}`;
133
- }
134
- else
135
- return `http://localhost:${PORT}${(config === null || config === void 0 ? void 0 : config.qrPopUpOnly) ? '/qr' : ''}`;
136
- return `http://localhost:${PORT}${(config === null || config === void 0 ? void 0 : config.qrPopUpOnly) ? '/qr' : ''}`;
137
- });
138
- }
139
- exports.popup = popup;
140
- const closeHttp = () => __awaiter(void 0, void 0, void 0, function* () {
141
- if (!server)
142
- return;
143
- for (const key in serverSockets) {
144
- serverSockets[key].destroy();
145
- }
146
- return yield new Promise(resolve => server.close(resolve));
147
- });
148
- exports.closeHttp = closeHttp;
@@ -1,17 +0,0 @@
1
- export declare class ScriptLoader {
2
- scripts: string[];
3
- contentRegistry: {
4
- [key: string]: string;
5
- };
6
- constructor();
7
- loadScripts(): Promise<{
8
- [key: string]: string;
9
- }>;
10
- getScript(scriptName: string): Promise<string>;
11
- flush(): void;
12
- getScripts(): {
13
- [key: string]: string;
14
- };
15
- }
16
- declare const scriptLoader: ScriptLoader;
17
- export { scriptLoader };