@open-wa/wa-automate 4.29.0 → 4.30.3

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.
@@ -0,0 +1,27 @@
1
+ import * as fs from 'fs'
2
+ import glob = require('tiny-glob');
3
+ import * as path from 'path';
4
+
5
+ import {
6
+ getTypeScriptReader,
7
+ getOpenApiWriter,
8
+ makeConverter,
9
+ } from 'typeconv'
10
+
11
+ export const getTypeSchemas : any = async () => {
12
+ const reader = getTypeScriptReader( );
13
+ const writer = getOpenApiWriter( { format: 'json', title: 'My API', version: 'v3.0.3' } );
14
+ const { convert } = makeConverter( reader, writer, {
15
+ simplify: true
16
+ });
17
+ const s = (await Promise.all([...(await glob(path.resolve(__dirname,'../**/*.d.ts'))),...(await glob(path.resolve(__dirname,'../**/message.js'))), ...(await glob(path.resolve(__dirname,'../**/chat.js')))])).filter(f=>!f.includes('node_modules'))
18
+ const res = {};
19
+ await Promise.all(s.map(async x=>{
20
+ const {data} = await convert({ data: fs.readFileSync(x, 'utf8') } );
21
+ const schemas = JSON.parse(data)?.components?.schemas;
22
+ Object.keys(schemas).forEach(k => {
23
+ res[k] = schemas[k];
24
+ })
25
+ }))
26
+ return res;
27
+ }
@@ -3386,7 +3386,15 @@ class Client {
3386
3386
  return yield this._webhookQueue.add(() => __awaiter(this, void 0, void 0, function* () {
3387
3387
  return yield Promise.all([
3388
3388
  ...Object.keys(this._registeredWebhooks).map(webhookId => this._registeredWebhooks[webhookId]).filter(webhookEntry => webhookEntry.events.includes(event))
3389
- ].map(({ id, url, requestConfig }) => (0, axios_1.default)(Object.assign({ method: 'post', url, data: this.prepEventData(_data, event, { webhook_id: id }) }, requestConfig)).catch(err => console.error(`WEBHOOK ERROR: `, url, err.message))));
3389
+ ].map(({ id, url, requestConfig }) => {
3390
+ const whStart = (0, tools_1.now)();
3391
+ return (0, axios_1.default)(Object.assign({ method: 'post', url, data: this.prepEventData(_data, event, { webhook_id: id }) }, requestConfig))
3392
+ .then(({ status }) => {
3393
+ const t = ((0, tools_1.now)() - whStart).toFixed(0);
3394
+ logging_1.log.info("Client Webhook", event, status, t);
3395
+ })
3396
+ .catch(err => console.error(`WEBHOOK ERROR: `, url, err.message));
3397
+ }));
3390
3398
  }));
3391
3399
  }), 10000);
3392
3400
  }
@@ -1,3 +1,2 @@
1
1
  export declare const collections: {};
2
2
  export declare const generateCollections: any;
3
- export declare const getTypeSchemas: any;
@@ -1,23 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -31,19 +12,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
13
  };
33
14
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.getTypeSchemas = exports.generateCollections = exports.collections = void 0;
15
+ exports.generateCollections = exports.collections = void 0;
35
16
  const __1 = require("..");
36
17
  const postman_2_swagger_1 = __importDefault(require("postman-2-swagger"));
37
18
  const fs_extra_1 = require("fs-extra");
38
- const typeconv_1 = require("typeconv");
39
- const fs = __importStar(require("fs"));
40
- const glob = require("tiny-glob");
41
- const path = __importStar(require("path"));
42
19
  exports.collections = {};
43
20
  const generateCollections = (config, spinner) => __awaiter(void 0, void 0, void 0, function* () {
44
21
  let swCol = null;
45
22
  let pmCol = null;
46
- const _types = yield (0, exports.getTypeSchemas)();
23
+ //TODO GENERATE TYPE SCHEMAS ON BUILD. AXIOS GET FROM GITHUB!
24
+ const _types = {};
47
25
  spinner.info('Generating Swagger Spec');
48
26
  pmCol = yield (0, __1.generatePostmanJson)(config);
49
27
  spinner.succeed(`Postman collection generated: open-wa-${config.sessionId}.postman_collection.json`);
@@ -114,22 +92,3 @@ const generateCollections = (config, spinner) => __awaiter(void 0, void 0, void
114
92
  return;
115
93
  });
116
94
  exports.generateCollections = generateCollections;
117
- const getTypeSchemas = () => __awaiter(void 0, void 0, void 0, function* () {
118
- const reader = (0, typeconv_1.getTypeScriptReader)();
119
- const writer = (0, typeconv_1.getOpenApiWriter)({ format: 'json', title: 'My API', version: 'v3.0.3' });
120
- const { convert } = (0, typeconv_1.makeConverter)(reader, writer, {
121
- simplify: true
122
- });
123
- const s = (yield Promise.all([...(yield glob(path.resolve(__dirname, '../**/*.d.ts'))), ...(yield glob(path.resolve(__dirname, '../**/message.js'))), ...(yield glob(path.resolve(__dirname, '../**/chat.js')))])).filter(f => !f.includes('node_modules'));
124
- const res = {};
125
- yield Promise.all(s.map((x) => __awaiter(void 0, void 0, void 0, function* () {
126
- var _a, _b;
127
- const { data } = yield convert({ data: fs.readFileSync(x, 'utf8') });
128
- const schemas = (_b = (_a = JSON.parse(data)) === null || _a === void 0 ? void 0 : _a.components) === null || _b === void 0 ? void 0 : _b.schemas;
129
- Object.keys(schemas).forEach(k => {
130
- res[k] = schemas[k];
131
- });
132
- })));
133
- return res;
134
- });
135
- exports.getTypeSchemas = getTypeSchemas;
package/dist/cli/index.js CHANGED
@@ -80,6 +80,7 @@ function start() {
80
80
  }
81
81
  if (!cliConfig.allowSessionDataWebhook && (namespace == "sessionData" || namespace == "sessionDataBase64"))
82
82
  return;
83
+ const whStart = (0, index_1.now)();
83
84
  yield (0, axios_1.default)({
84
85
  method: 'post',
85
86
  url: cliConfig.ev,
@@ -89,6 +90,9 @@ function start() {
89
90
  sessionId,
90
91
  namespace
91
92
  }
93
+ }).then(({ status }) => {
94
+ const t = ((0, index_1.now)() - whStart).toFixed(0);
95
+ index_1.log.info("EV Webhook", namespace, status, t);
92
96
  }).catch(err => console.error(`WEBHOOK ERROR: ${cliConfig.ev} ${err.message}`));
93
97
  }));
94
98
  }
@@ -179,6 +183,7 @@ function start() {
179
183
  spinner.succeed(`Port ${PORT} is now free.`);
180
184
  server_1.server.listen(PORT, () => __awaiter(this, void 0, void 0, function* () {
181
185
  spinner.succeed(`\n• Listening on port ${PORT}!`);
186
+ (0, index_1.processSendData)({ port: PORT });
182
187
  yield ready(Object.assign(Object.assign(Object.assign(Object.assign({}, cliConfig), createConfig), client.getSessionInfo()), { hostAccountNumber: yield client.getHostNumber() }));
183
188
  }));
184
189
  if (cliConfig.tunnel) {
@@ -13,4 +13,20 @@ export declare const isInsideChat: (waPage: Page) => Observable<boolean>;
13
13
  export declare const waitForRipeSession: (waPage: Page) => Promise<boolean>;
14
14
  export declare const sessionDataInvalid: (waPage: Page) => Promise<string>;
15
15
  export declare const phoneIsOutOfReach: (waPage: Page) => Promise<boolean>;
16
- export declare function smartQr(waPage: Page, config?: ConfigObject, spinner?: Spin): Promise<boolean | void | string>;
16
+ export declare class QRManager {
17
+ qrEv: any;
18
+ qrNum: number;
19
+ hash: string;
20
+ config: ConfigObject;
21
+ firstEmitted: boolean;
22
+ _internalQrPngLoaded: boolean;
23
+ qrCheck: string;
24
+ constructor(config?: any);
25
+ setConfig(config: any): void;
26
+ qrEvF(config?: ConfigObject): any;
27
+ grabAndEmit(qrData: any, waPage: Page, config: ConfigObject, spinner: Spin): Promise<void>;
28
+ smartQr(waPage: Page, config?: ConfigObject, spinner?: Spin): Promise<boolean | void | string>;
29
+ emitFirst(waPage: Page, config?: ConfigObject, spinner?: Spin): Promise<void>;
30
+ waitFirstQr(waPage: Page, config?: ConfigObject, spinner?: Spin): Promise<void>;
31
+ }
32
+ export declare const qrManager: QRManager;
@@ -31,7 +31,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.smartQr = exports.phoneIsOutOfReach = exports.sessionDataInvalid = exports.waitForRipeSession = exports.isInsideChat = exports.needsToScan = exports.isAuthenticated = void 0;
34
+ exports.qrManager = exports.QRManager = exports.phoneIsOutOfReach = exports.sessionDataInvalid = exports.waitForRipeSession = exports.isInsideChat = exports.needsToScan = exports.isAuthenticated = void 0;
35
35
  const qrcode = __importStar(require("qrcode-terminal"));
36
36
  const rxjs_1 = require("rxjs");
37
37
  const events_1 = require("./events");
@@ -100,24 +100,38 @@ const phoneIsOutOfReach = (waPage) => __awaiter(void 0, void 0, void 0, function
100
100
  .catch(() => false);
101
101
  });
102
102
  exports.phoneIsOutOfReach = phoneIsOutOfReach;
103
- function smartQr(waPage, config, spinner) {
104
- return __awaiter(this, void 0, void 0, function* () {
105
- let qrNum = 0;
106
- const evalResult = yield waPage.evaluate("window.Store && window.Store.State");
107
- if (evalResult === false) {
108
- console.log('Seems as though you have been TOS_BLOCKed, unable to refresh QR Code. Please see https://github.com/open-wa/wa-automate-nodejs#best-practice for information on how to prevent this from happeing. You will most likely not get a QR Code');
109
- logging_1.log.warn('Seems as though you have been TOS_BLOCKed, unable to refresh QR Code. Please see https://github.com/open-wa/wa-automate-nodejs#best-practice for information on how to prevent this from happeing. You will most likely not get a QR Code');
110
- if (config.throwErrorOnTosBlock)
111
- throw new Error('TOSBLOCK');
112
- }
113
- const isAuthed = yield (0, exports.isAuthenticated)(waPage);
114
- if (isAuthed)
115
- return true;
116
- let hash = 'START';
117
- const grabAndEmit = (qrData) => __awaiter(this, void 0, void 0, function* () {
118
- if (!qrNum && browser_1.BROWSER_START_TS)
103
+ class QRManager {
104
+ constructor(config = null) {
105
+ this.qrEv = null;
106
+ this.qrNum = 0;
107
+ this.hash = 'START';
108
+ this.config = null;
109
+ this.firstEmitted = false;
110
+ this._internalQrPngLoaded = false;
111
+ this.qrCheck = `document.querySelector("canvas[aria-label='Scan me!']")?document.querySelector("canvas[aria-label='Scan me!']").parentElement.getAttribute("data-ref"):false`;
112
+ this.config = config;
113
+ }
114
+ setConfig(config) {
115
+ this.config = config;
116
+ this.qrEvF(this.config);
117
+ }
118
+ qrEvF(config = this.config) {
119
+ if (!this.qrEv)
120
+ this.qrEv = new events_1.EvEmitter(config.sessionId || 'session', 'qr');
121
+ return this.qrEv;
122
+ }
123
+ grabAndEmit(qrData, waPage, config, spinner) {
124
+ return __awaiter(this, void 0, void 0, function* () {
125
+ this.qrNum++;
126
+ if (config.qrMax && this.qrNum > config.qrMax) {
127
+ spinner.info('QR Code limit reached, exiting...');
128
+ yield (0, browser_1.kill)(waPage, null, true, null, "QR_LIMIT_REACHED");
129
+ }
130
+ const qrEv = this.qrEvF(config);
131
+ if ((!this.qrNum || this.qrNum == 1) && browser_1.BROWSER_START_TS)
119
132
  spinner.info(`First QR: ${Date.now() - browser_1.BROWSER_START_TS} ms`);
120
133
  if (qrData) {
134
+ qrEv.emit(qrData, `qrData`);
121
135
  if (!config.qrLogSkip)
122
136
  qrcode.generate(qrData, { small: true });
123
137
  else {
@@ -125,31 +139,32 @@ function smartQr(waPage, config, spinner) {
125
139
  logging_1.log.info(`New QR Code generated. Not printing in console because qrLogSkip is set to true`);
126
140
  }
127
141
  }
142
+ if (!this._internalQrPngLoaded) {
143
+ logging_1.log.info("Waiting for internal QR renderer to load");
144
+ const t = yield (0, tools_1.timePromise)(() => waPage.waitForFunction(`window.getQrPng || false`, { timeout: 0, polling: 'mutation' }));
145
+ logging_1.log.info(`Internal QR renderer loaded in ${t} ms`);
146
+ this._internalQrPngLoaded = true;
147
+ }
128
148
  try {
129
149
  const qrPng = yield waPage.evaluate(`window.getQrPng()`);
130
150
  if (qrPng) {
131
151
  qrEv.emit(qrPng);
132
- qrNum++;
133
152
  (0, tools_1.processSend)('ready');
134
- if (config.qrMax && qrNum >= config.qrMax) {
135
- spinner.info('QR Code limit reached, exiting...');
136
- yield (0, browser_1.kill)(waPage, null, true, null, "QR_LIMIT_REACHED");
137
- }
138
- if (config.ezqr || config.inDocker) {
153
+ if (config.ezqr) {
139
154
  const host = 'https://qr.openwa.cloud/';
140
155
  yield axios_1.default.post(host, {
141
156
  value: qrPng,
142
- hash
157
+ hash: this.hash
143
158
  }).then(({ data }) => {
144
- if (hash === 'START') {
159
+ if (this.hash === 'START') {
145
160
  const qrUrl = `${host}${data}`;
146
161
  qrEv.emit(qrUrl, `qrUrl`);
147
162
  console.log(`Scan the qr code at ${qrUrl}`);
148
163
  logging_1.log.info(`Scan the qr code at ${qrUrl}`);
149
164
  }
150
- hash = data;
165
+ this.hash = data;
151
166
  }).catch(e => {
152
- hash = 'START';
167
+ this.hash = 'START';
153
168
  });
154
169
  }
155
170
  }
@@ -165,42 +180,76 @@ function smartQr(waPage, config, spinner) {
165
180
  spinner.info(`Something went wrong while retreiving new the QR code but it should not affect the session launch procedure: ${error.message}`);
166
181
  }
167
182
  });
168
- const qrEv = new events_1.EvEmitter(config.sessionId || 'session', 'qr');
169
- const _hasDefaultStateYet = yield waPage.evaluate("!!(window.Store && window.Store.State && window.Store.State.Socket)");
170
- if (!_hasDefaultStateYet) {
171
- //expecting issue, take a screenshot then wait a few seconds before continuing
172
- yield (0, tools_1.timeout)(2000);
173
- }
174
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
175
- const funcName = '_smartQr';
176
- const md = "MULTI_DEVICE_DETECTED";
177
- let gotResult = false;
178
- const fn = (qrData) => __awaiter(this, void 0, void 0, function* () {
179
- if (qrData.length > 200 && !(config === null || config === void 0 ? void 0 : config.multiDevice)) {
180
- spinner.fail(`Multi-Device detected, please set multiDevice to true in your config or add the --multi-device flag`);
181
- return resolve(md);
182
- }
183
- if (!gotResult && (qrData === 'QR_CODE_SUCCESS' || qrData === md)) {
184
- gotResult = true;
185
- spinner === null || spinner === void 0 ? void 0 : spinner.succeed(qrData === md ? "Multi device support for this project is EXPERIMENTAL. Some things may not work...." : "QR code scanned. Loading session...");
186
- return resolve(yield (0, exports.isInsideChat)(waPage).toPromise());
187
- }
188
- if (!gotResult)
189
- grabAndEmit(qrData);
190
- });
191
- const set = () => waPage.evaluate(({ funcName }) => {
192
- //@ts-ignore
193
- return window['smartQr'] ? window[`smartQr`](obj => window[funcName](obj)) : false;
194
- }, { funcName });
195
- yield waPage.exposeFunction(funcName, (obj) => fn(obj)).then(set).catch((e) => __awaiter(this, void 0, void 0, function* () {
196
- //if an error occurs during the qr launcher then take a screenshot.
197
- yield (0, initializer_1.screenshot)(waPage);
198
- console.log("qr -> e", e);
199
- logging_1.log.error("qr -> e", e);
183
+ }
184
+ smartQr(waPage, config, spinner) {
185
+ return __awaiter(this, void 0, void 0, function* () {
186
+ const evalResult = yield waPage.evaluate("window.Store && window.Store.State");
187
+ if (evalResult === false) {
188
+ console.log('Seems as though you have been TOS_BLOCKed, unable to refresh QR Code. Please see https://github.com/open-wa/wa-automate-nodejs#best-practice for information on how to prevent this from happeing. You will most likely not get a QR Code');
189
+ logging_1.log.warn('Seems as though you have been TOS_BLOCKed, unable to refresh QR Code. Please see https://github.com/open-wa/wa-automate-nodejs#best-practice for information on how to prevent this from happeing. You will most likely not get a QR Code');
190
+ if (config.throwErrorOnTosBlock)
191
+ throw new Error('TOSBLOCK');
192
+ }
193
+ const isAuthed = yield (0, exports.isAuthenticated)(waPage);
194
+ if (isAuthed)
195
+ return true;
196
+ const _hasDefaultStateYet = yield waPage.evaluate("!!(window.Store && window.Store.State && window.Store.State.Socket)");
197
+ if (!_hasDefaultStateYet) {
198
+ //expecting issue, take a screenshot then wait a few seconds before continuing
199
+ yield (0, tools_1.timeout)(2000);
200
+ }
201
+ return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
202
+ const funcName = '_smartQr';
203
+ const md = "MULTI_DEVICE_DETECTED";
204
+ let gotResult = false;
205
+ const fn = (qrData) => __awaiter(this, void 0, void 0, function* () {
206
+ if (qrData.length > 200 && !(config === null || config === void 0 ? void 0 : config.multiDevice)) {
207
+ spinner.fail(`Multi-Device detected, please set multiDevice to true in your config or add the --multi-device flag`);
208
+ return resolve(md);
209
+ }
210
+ if (!gotResult && (qrData === 'QR_CODE_SUCCESS' || qrData === md)) {
211
+ gotResult = true;
212
+ spinner === null || spinner === void 0 ? void 0 : spinner.succeed(qrData === md ? "Multi device support for this project is EXPERIMENTAL. Some things may not work...." : "QR code scanned. Loading session...");
213
+ return resolve(yield (0, exports.isInsideChat)(waPage).toPromise());
214
+ }
215
+ if (!gotResult)
216
+ this.grabAndEmit(qrData, waPage, config, spinner);
217
+ });
218
+ const set = () => waPage.evaluate(({ funcName }) => {
219
+ //@ts-ignore
220
+ return window['smartQr'] ? window[`smartQr`](obj => window[funcName](obj)) : false;
221
+ }, { funcName });
222
+ yield waPage.exposeFunction(funcName, (obj) => fn(obj)).then(set).catch((e) => __awaiter(this, void 0, void 0, function* () {
223
+ //if an error occurs during the qr launcher then take a screenshot.
224
+ yield (0, initializer_1.screenshot)(waPage);
225
+ console.log("qr -> e", e);
226
+ logging_1.log.error("qr -> e", e);
227
+ }));
228
+ yield this.emitFirst(waPage, config, spinner);
200
229
  }));
201
- const firstQr = yield waPage.evaluate(`document.querySelector("canvas[aria-label='Scan me!']")?document.querySelector("canvas[aria-label='Scan me!']").parentElement.getAttribute("data-ref"):false`);
202
- yield grabAndEmit(firstQr);
203
- }));
204
- });
230
+ });
231
+ }
232
+ emitFirst(waPage, config, spinner) {
233
+ return __awaiter(this, void 0, void 0, function* () {
234
+ if (this.firstEmitted)
235
+ return;
236
+ this.firstEmitted = true;
237
+ const firstQr = yield waPage.evaluate(this.qrCheck);
238
+ yield this.grabAndEmit(firstQr, waPage, config, spinner);
239
+ });
240
+ }
241
+ waitFirstQr(waPage, config, spinner) {
242
+ return __awaiter(this, void 0, void 0, function* () {
243
+ const fqr = yield waPage.waitForFunction(`!!(${this.qrCheck})`, {
244
+ polling: 500,
245
+ timeout: 10000
246
+ })
247
+ .catch(e => false);
248
+ if (fqr)
249
+ yield this.emitFirst(waPage, config, spinner);
250
+ return;
251
+ });
252
+ }
205
253
  }
206
- exports.smartQr = smartQr;
254
+ exports.QRManager = QRManager;
255
+ exports.qrManager = new QRManager();
@@ -6,7 +6,9 @@ export declare function initPage(sessionId?: string, config?: ConfigObject, cust
6
6
  export declare const deleteSessionData: (config: ConfigObject) => boolean;
7
7
  export declare const getSessionDataFilePath: (sessionId: string, config: ConfigObject) => string | boolean;
8
8
  export declare const addScript: (page: Page, js: string) => Promise<unknown>;
9
- export declare function injectApi(page: Page): Promise<Page>;
9
+ export declare function injectPreApiScripts(page: Page, spinner?: Spin): Promise<Page>;
10
+ export declare function injectWapi(page: Page, spinner?: Spin): Promise<Page>;
11
+ export declare function injectApi(page: Page, spinner?: Spin): Promise<Page>;
10
12
  /**
11
13
  * @internal
12
14
  */
@@ -31,7 +31,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.kill = exports.injectApi = exports.addScript = exports.getSessionDataFilePath = exports.deleteSessionData = exports.initPage = exports.BROWSER_START_TS = void 0;
34
+ exports.kill = exports.injectApi = exports.injectWapi = exports.injectPreApiScripts = exports.addScript = exports.getSessionDataFilePath = exports.deleteSessionData = exports.initPage = exports.BROWSER_START_TS = void 0;
35
35
  const path = __importStar(require("path"));
36
36
  const fs = __importStar(require("fs"));
37
37
  const death_1 = __importDefault(require("death"));
@@ -44,6 +44,7 @@ const puppeteer = require('puppeteer-extra');
44
44
  const promise_1 = __importDefault(require("terminate/promise"));
45
45
  const logging_1 = require("../logging/logging");
46
46
  const tools_1 = require("../utils/tools");
47
+ const auth_1 = require("./auth");
47
48
  let browser;
48
49
  exports.BROWSER_START_TS = 0;
49
50
  function initPage(sessionId, config, customUserAgent, spinner, _page, skipAuth) {
@@ -59,9 +60,12 @@ function initPage(sessionId, config, customUserAgent, spinner, _page, skipAuth)
59
60
  let waPage = _page;
60
61
  if (!waPage) {
61
62
  spinner === null || spinner === void 0 ? void 0 : spinner.info('Launching Browser');
63
+ const startBrowser = (0, tools_1.now)();
62
64
  browser = yield initBrowser(sessionId, config, spinner);
65
+ spinner === null || spinner === void 0 ? void 0 : spinner.info(`Browser launched: ${((0, tools_1.now)() - startBrowser).toFixed(0)}ms`);
63
66
  waPage = yield getWAPage(browser);
64
67
  }
68
+ const postBrowserLaunchTs = (0, tools_1.now)();
65
69
  spinner === null || spinner === void 0 ? void 0 : spinner.info('Setting Up Page');
66
70
  if (config === null || config === void 0 ? void 0 : config.proxyServerCredentials) {
67
71
  yield waPage.authenticate(config.proxyServerCredentials);
@@ -174,11 +178,13 @@ function initPage(sessionId, config, customUserAgent, spinner, _page, skipAuth)
174
178
  if ((_e = config === null || config === void 0 ? void 0 : config.proxyServerCredentials) === null || _e === void 0 ? void 0 : _e.address)
175
179
  spinner.succeed(`Active proxy: ${config.proxyServerCredentials.address}`);
176
180
  yield Promise.all(setupPromises);
181
+ spinner === null || spinner === void 0 ? void 0 : spinner.info(`Pre page launch setup complete: ${((0, tools_1.now)() - postBrowserLaunchTs).toFixed(0)}ms`);
177
182
  spinner === null || spinner === void 0 ? void 0 : spinner.info('Navigating to WA');
178
183
  try {
179
184
  //try twice
180
185
  const WEB_START_TS = new Date().getTime();
181
186
  const webRes = yield waPage.goto(puppeteer_config_1.puppeteerConfig.WAUrl);
187
+ Promise.all([injectApi(waPage, spinner), auth_1.qrManager.waitFirstQr(waPage, config, spinner)]);
182
188
  const WEB_END_TS = new Date().getTime();
183
189
  if (webRes == null) {
184
190
  spinner === null || spinner === void 0 ? void 0 : spinner.info(`Page loaded but something may have gone wrong: ${WEB_END_TS - WEB_START_TS}ms`);
@@ -260,24 +266,46 @@ const addScript = (page, js) => page.addScriptTag({
260
266
  path: require.resolve(path.join(__dirname, '../lib', js))
261
267
  });
262
268
  exports.addScript = addScript;
263
- function injectApi(page) {
269
+ function injectPreApiScripts(page, spinner) {
264
270
  return __awaiter(this, void 0, void 0, function* () {
265
- yield Promise.all([
271
+ const t1 = yield (0, tools_1.timePromise)(() => Promise.all([
266
272
  'axios.min.js',
267
273
  'jsSha.min.js',
268
274
  'qr.min.js',
269
275
  'base64.js',
270
276
  'hash.js'
271
- ].map(js => (0, exports.addScript)(page, js)));
272
- yield (0, exports.addScript)(page, 'wapi.js');
273
- yield (0, exports.addScript)(page, 'wapi.js');
274
- yield (0, exports.addScript)(page, 'wapi.js');
275
- yield (0, exports.addScript)(page, 'wapi.js');
276
- yield (0, exports.addScript)(page, 'wapi.js');
277
- yield (0, exports.addScript)(page, 'wapi.js');
278
- yield (0, exports.addScript)(page, 'wapi.js');
279
- yield (0, exports.addScript)(page, 'wapi.js');
280
- yield (0, exports.addScript)(page, 'launch.js');
277
+ ].map(js => (0, exports.addScript)(page, js))));
278
+ spinner === null || spinner === void 0 ? void 0 : spinner.info(`Base inject: ${t1}ms`);
279
+ return page;
280
+ });
281
+ }
282
+ exports.injectPreApiScripts = injectPreApiScripts;
283
+ function injectWapi(page, spinner) {
284
+ return __awaiter(this, void 0, void 0, function* () {
285
+ const wapi = yield (0, tools_1.timePromise)(() => (0, exports.addScript)(page, 'wapi.js'));
286
+ spinner === null || spinner === void 0 ? void 0 : spinner.info(`WAPI inject: ${wapi}ms`);
287
+ spinner === null || spinner === void 0 ? void 0 : spinner.info("Checking WAPI Injection");
288
+ const check = (c) => `window.${c} ? true : false`;
289
+ yield page.waitForFunction(check('WAPI'), { timeout: 0, polling: 500 });
290
+ return;
291
+ });
292
+ }
293
+ exports.injectWapi = injectWapi;
294
+ function injectApi(page, spinner) {
295
+ return __awaiter(this, void 0, void 0, function* () {
296
+ yield injectPreApiScripts(page, spinner);
297
+ yield injectWapi(page, spinner);
298
+ // const wapi = await timePromise(()=>addScript(page,'wapi.js'))
299
+ // spinner?.info(`WAPI inject: ${wapi}ms`)
300
+ // await addScript(page,'wapi.js')
301
+ // await addScript(page,'wapi.js')
302
+ // await addScript(page,'wapi.js')
303
+ // await addScript(page,'wapi.js')
304
+ // await addScript(page,'wapi.js')
305
+ // await addScript(page,'wapi.js')
306
+ // await addScript(page,'wapi.js')
307
+ const launch = yield (0, tools_1.timePromise)(() => (0, exports.addScript)(page, 'launch.js'));
308
+ spinner === null || spinner === void 0 ? void 0 : spinner.info(`Launch inject: ${launch}ms`);
281
309
  return page;
282
310
  });
283
311
  }
@@ -54,8 +54,10 @@ export declare const ev: EventEmitter2;
54
54
  export declare class EvEmitter {
55
55
  sessionId: string;
56
56
  eventNamespace: string;
57
+ bannedTransports: string[];
57
58
  constructor(sessionId: string, eventNamespace: string);
58
59
  emit(data: unknown, eventNamespaceOverride?: string): void;
60
+ emitAsync(data: unknown, eventNamespaceOverride?: string): Promise<any>;
59
61
  }
60
62
  /**
61
63
  * @internal
@@ -82,6 +82,12 @@ const getGlobalSpinner = (disableSpins = false) => {
82
82
  */
83
83
  class EvEmitter {
84
84
  constructor(sessionId, eventNamespace) {
85
+ this.bannedTransports = [
86
+ //DO NOT ALLOW THESE NAMESPACES ON TRANSPORTS!!
87
+ "sessionData",
88
+ "sessionDataBase64",
89
+ "qr",
90
+ ];
85
91
  this.sessionId = sessionId;
86
92
  this.eventNamespace = eventNamespace;
87
93
  }
@@ -90,18 +96,27 @@ class EvEmitter {
90
96
  const sessionId = this.sessionId;
91
97
  const eventNamespace = eventNamespaceOverride || this.eventNamespace;
92
98
  exports.ev.emit(eventName, data, sessionId, eventNamespace);
93
- if (![
94
- //DO NOT ALLOW THESE NAMESPACES ON TRANSPORTS!!
95
- "sessionData",
96
- "sessionDataBase64",
97
- "qr",
98
- ].find(x => eventNamespace == x))
99
+ if (!this.bannedTransports.find(x => eventNamespace == x))
100
+ logging_1.log.info(typeof data === 'string' ? data : eventName, {
101
+ eventName,
102
+ data,
103
+ sessionId,
104
+ eventNamespace
105
+ });
106
+ // ev.emit(`${this.sessionId}.${this.eventNamespace}`,data,this.sessionId,this.eventNamespace);
107
+ }
108
+ emitAsync(data, eventNamespaceOverride) {
109
+ const eventName = `${eventNamespaceOverride || this.eventNamespace}.${this.sessionId}`;
110
+ const sessionId = this.sessionId;
111
+ const eventNamespace = eventNamespaceOverride || this.eventNamespace;
112
+ if (!this.bannedTransports.find(x => eventNamespace == x))
99
113
  logging_1.log.info(typeof data === 'string' ? data : eventName, {
100
114
  eventName,
101
115
  data,
102
116
  sessionId,
103
117
  eventNamespace
104
118
  });
119
+ return exports.ev.emitAsync(eventName, data, sessionId, eventNamespace);
105
120
  // ev.emit(`${this.sessionId}.${this.eventNamespace}`,data,this.sessionId,this.eventNamespace);
106
121
  }
107
122
  }
@@ -145,6 +145,7 @@ function create(config = {}) {
145
145
  if (!sessionId)
146
146
  sessionId = 'session';
147
147
  const spinner = new events_1.Spin(sessionId, 'STARTUP', config === null || config === void 0 ? void 0 : config.disableSpins);
148
+ auth_1.qrManager.setConfig(config);
148
149
  try {
149
150
  if (typeof config === 'string')
150
151
  console.error("AS OF VERSION 3+ YOU CAN NO LONGER SET THE SESSION ID AS THE FIRST PARAMETER OF CREATE. CREATE CAN ONLY TAKE A CONFIG OBJECT. IF YOU STILL HAVE CONFIGS AS A SECOND PARAMETER, THEY WILL HAVE NO EFFECT! PLEASE SEE DOCS.");
@@ -164,7 +165,8 @@ function create(config = {}) {
164
165
  if ((config === null || config === void 0 ? void 0 : config.multiDevice) && !(config === null || config === void 0 ? void 0 : config.useChrome))
165
166
  spinner.info(`It is recommended to set useChrome: true or use the --use-chrome flag if you are experiencing issues with Multi device support`);
166
167
  waPage = yield (0, browser_1.initPage)(sessionId, config, customUserAgent, spinner);
167
- spinner.succeed('Browser Launched');
168
+ spinner.succeed('Page loaded');
169
+ const browserLaunchedTs = (0, tools_1.now)();
168
170
  const throwOnError = config && config.throwErrorOnTosBlock == true;
169
171
  const PAGE_UA = yield waPage.evaluate('navigator.userAgent');
170
172
  const BROWSER_VERSION = yield waPage.browser().version();
@@ -211,11 +213,12 @@ function create(config = {}) {
211
213
  debugInfo.CLI = process.env.OWA_CLI && true || false;
212
214
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
213
215
  spinner.succeed('Use this easy pre-filled link to report an issue: ' + (0, tools_1.generateGHIssueLink)(config, debugInfo));
216
+ spinner.info(`Time to injection: ${((0, tools_1.now)() - browserLaunchedTs).toFixed(0)}ms`);
214
217
  if (canInjectEarly) {
215
218
  if (attemptingReauth)
216
219
  yield waPage.evaluate(`window.Store = {"Msg": true}`);
217
220
  spinner.start('Injecting api');
218
- waPage = yield (0, browser_1.injectApi)(waPage);
221
+ waPage = yield (0, browser_1.injectApi)(waPage, spinner);
219
222
  spinner.start('WAPI injected');
220
223
  }
221
224
  else {
@@ -265,7 +268,7 @@ function create(config = {}) {
265
268
  else {
266
269
  spinner.info('Authenticate to continue');
267
270
  const race = [];
268
- race.push((0, auth_1.smartQr)(waPage, config, spinner));
271
+ race.push(auth_1.qrManager.smartQr(waPage, config, spinner));
269
272
  if ((config === null || config === void 0 ? void 0 : config.qrTimeout) !== 0) {
270
273
  let to = ((config === null || config === void 0 ? void 0 : config.qrTimeout) || 60) * 1000;
271
274
  if (config === null || config === void 0 ? void 0 : config.multiDevice)
@@ -300,7 +303,7 @@ function create(config = {}) {
300
303
  }
301
304
  const pre = canInjectEarly ? 'Rei' : 'I';
302
305
  spinner.start(`${pre}njecting api`);
303
- waPage = yield (0, browser_1.injectApi)(waPage);
306
+ waPage = yield (0, browser_1.injectApi)(waPage, spinner);
304
307
  spinner.succeed(`WAPI ${pre}njected`);
305
308
  if (canInjectEarly) {
306
309
  //check if page is valid after 5 seconds
@@ -1,3 +1,3 @@
1
- /* axios v0.19.2 | (c) 2020 by Matt Zabriskie */
2
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new s(e),n=i(s.prototype.request,t);return o.extend(n,s.prototype,t),o.extend(n,t),n}var o=n(2),i=n(3),s=n(4),a=n(22),u=n(10),c=r(u);c.Axios=s,c.create=function(e){return r(a(c.defaults,e))},c.Cancel=n(23),c.CancelToken=n(24),c.isCancel=n(9),c.all=function(e){return Promise.all(e)},c.spread=n(25),e.exports=c,e.exports.default=c},function(e,t,n){"use strict";function r(e){return"[object Array]"===j.call(e)}function o(e){return"undefined"==typeof e}function i(e){return null!==e&&!o(e)&&null!==e.constructor&&!o(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function s(e){return"[object ArrayBuffer]"===j.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function u(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function c(e){return"string"==typeof e}function f(e){return"number"==typeof e}function p(e){return null!==e&&"object"==typeof e}function d(e){return"[object Date]"===j.call(e)}function l(e){return"[object File]"===j.call(e)}function h(e){return"[object Blob]"===j.call(e)}function m(e){return"[object Function]"===j.call(e)}function y(e){return p(e)&&m(e.pipe)}function g(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function v(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function x(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function w(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n<o;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}function b(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=b(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;n<r;n++)w(arguments[n],e);return t}function E(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=E(t[n],e):"object"==typeof e?t[n]=E({},e):t[n]=e}for(var t={},n=0,r=arguments.length;n<r;n++)w(arguments[n],e);return t}function S(e,t,n){return w(t,function(t,r){n&&"function"==typeof t?e[r]=C(t,n):e[r]=t}),e}var C=n(3),j=Object.prototype.toString;e.exports={isArray:r,isArrayBuffer:s,isBuffer:i,isFormData:a,isArrayBufferView:u,isString:c,isNumber:f,isObject:p,isUndefined:o,isDate:d,isFile:l,isBlob:h,isFunction:m,isStream:y,isURLSearchParams:g,isStandardBrowserEnv:x,forEach:w,merge:b,deepMerge:E,extend:S,trim:v}},function(e,t){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new s,response:new s}}var o=n(2),i=n(5),s=n(6),a=n(7),u=n(22);r.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{},e.url=arguments[0]):e=e||{},e=u(this.defaults,e),e.method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},r.prototype.getUri=function(e){return e=u(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else if(o.isURLSearchParams(t))i=t.toString();else{var s=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),s.push(r(t)+"="+r(e))}))}),i=s.join("&")}if(i){var a=e.indexOf("#");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),i=n(8),s=n(9),a=n(10);e.exports=function(e){r(e),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||a.adapter;return t(e).then(function(t){return r(e),t.data=i(t.data,t.headers,e.transformResponse),t},function(t){return s(t)||(r(e),t&&t.response&&(t.response.data=i(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";function r(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(12):"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(e=n(12)),e}var i=n(2),s=n(11),a={"Content-Type":"application/x-www-form-urlencoded"},u={adapter:o(),transformRequest:[function(e,t){return s(t,"Accept"),s(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){u.headers[e]={}}),i.forEach(["post","put","patch"],function(e){u.headers[e]=i.merge(a)}),e.exports=u},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(13),i=n(5),s=n(16),a=n(19),u=n(20),c=n(14);e.exports=function(e){return new Promise(function(t,f){var p=e.data,d=e.headers;r.isFormData(p)&&delete d["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password||"";d.Authorization="Basic "+btoa(h+":"+m)}var y=s(e.baseURL,e.url);if(l.open(e.method.toUpperCase(),i(y,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,l.onreadystatechange=function(){if(l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in l?a(l.getAllResponseHeaders()):null,r=e.responseType&&"text"!==e.responseType?l.response:l.responseText,i={data:r,status:l.status,statusText:l.statusText,headers:n,config:e,request:l};o(t,f,i),l=null}},l.onabort=function(){l&&(f(c("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){f(c("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),f(c(t,e,"ECONNABORTED",l)),l=null},r.isStandardBrowserEnv()){var g=n(21),v=(e.withCredentials||u(y))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;v&&(d[e.xsrfHeaderName]=v)}if("setRequestHeader"in l&&r.forEach(d,function(e,t){"undefined"==typeof p&&"content-type"===t.toLowerCase()?delete d[t]:l.setRequestHeader(t,e)}),r.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),e.responseType)try{l.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){l&&(l.abort(),f(e),l=null)}),void 0===p&&(p=null),l.send(p)})}},function(e,t,n){"use strict";var r=n(14);e.exports=function(e,t,n){var o=n.config.validateStatus;!o||o(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";var r=n(15);e.exports=function(e,t,n,o,i){var s=new Error(e);return r(s,t,n,o,i)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(17),o=n(18);e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,i,s={};return e?(r.forEach(e.split("\n"),function(e){if(i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t){if(s[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?s[t]=(s[t]?s[t]:[]).concat([n]):s[t]=s[t]?s[t]+", "+n:n}}),s):s}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,s){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(i)&&a.push("domain="+i),s===!0&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){t=t||{};var n={},o=["url","method","params","data"],i=["headers","auth","proxy"],s=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(o,function(e){"undefined"!=typeof t[e]&&(n[e]=t[e])}),r.forEach(i,function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!=typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!=typeof e[o]&&(n[o]=e[o])}),r.forEach(s,function(r){"undefined"!=typeof t[r]?n[r]=t[r]:"undefined"!=typeof e[r]&&(n[r]=e[r])});var a=o.concat(i).concat(s),u=Object.keys(t).filter(function(e){return a.indexOf(e)===-1});return r.forEach(u,function(r){"undefined"!=typeof t[r]?n[r]=t[r]:"undefined"!=typeof e[r]&&(n[r]=e[r])}),n}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])});
1
+ /* axios v0.25.0 | (c) 2022 by Matt Zabriskie */
2
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=11)}([function(e,t,n){"use strict";var r=n(3),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function s(e){return void 0===e}function a(e){return null!==e&&"object"==typeof e}function u(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function c(e){return"[object Function]"===o.call(e)}function f(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.call(null,e[o],o,e)}e.exports={isArray:i,isArrayBuffer:function(e){return"[object ArrayBuffer]"===o.call(e)},isBuffer:function(e){return null!==e&&!s(e)&&null!==e.constructor&&!s(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:a,isPlainObject:u,isUndefined:s,isDate:function(e){return"[object Date]"===o.call(e)},isFile:function(e){return"[object File]"===o.call(e)},isBlob:function(e){return"[object Blob]"===o.call(e)},isFunction:c,isStream:function(e){return a(e)&&c(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:f,merge:function e(){var t={};function n(n,r){u(t[r])&&u(n)?t[r]=e(t[r],n):u(n)?t[r]=e({},n):i(n)?t[r]=n.slice():t[r]=n}for(var r=0,o=arguments.length;r<o;r++)f(arguments[r],n);return t},extend:function(e,t,n){return f(t,(function(t,o){e[o]=n&&"function"==typeof t?r(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}}},function(e,t,n){"use strict";var r=n(0),o=n(17),i=n(5),s={"Content-Type":"application/x-www-form-urlencoded"};function a(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var u,c={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(u=n(6)),u),transformRequest:[function(e,t){return o(t,"Accept"),o(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(a(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)||t&&"application/json"===t["Content-Type"]?(a(t,"application/json"),function(e,t,n){if(r.isString(e))try{return(t||JSON.parse)(e),r.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||c.transitional,n=t&&t.silentJSONParsing,o=t&&t.forcedJSONParsing,s=!n&&"json"===this.responseType;if(s||o&&r.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw i(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){c.headers[e]=r.merge(s)})),e.exports=c},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}}},function(e,t,n){"use strict";var r=n(0);function o(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else if(r.isURLSearchParams(t))i=t.toString();else{var s=[];r.forEach(t,(function(e,t){null!=e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),s.push(o(t)+"="+o(e))})))})),i=s.join("&")}if(i){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},e}},function(e,t,n){"use strict";var r=n(0),o=n(18),i=n(19),s=n(4),a=n(20),u=n(23),c=n(24),f=n(7),l=n(1),p=n(2);e.exports=function(e){return new Promise((function(t,n){var d,h=e.data,m=e.headers,v=e.responseType;function y(){e.cancelToken&&e.cancelToken.unsubscribe(d),e.signal&&e.signal.removeEventListener("abort",d)}r.isFormData(h)&&delete m["Content-Type"];var g=new XMLHttpRequest;if(e.auth){var b=e.auth.username||"",x=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";m.Authorization="Basic "+btoa(b+":"+x)}var w=a(e.baseURL,e.url);function E(){if(g){var r="getAllResponseHeaders"in g?u(g.getAllResponseHeaders()):null,i={data:v&&"text"!==v&&"json"!==v?g.response:g.responseText,status:g.status,statusText:g.statusText,headers:r,config:e,request:g};o((function(e){t(e),y()}),(function(e){n(e),y()}),i),g=null}}if(g.open(e.method.toUpperCase(),s(w,e.params,e.paramsSerializer),!0),g.timeout=e.timeout,"onloadend"in g?g.onloadend=E:g.onreadystatechange=function(){g&&4===g.readyState&&(0!==g.status||g.responseURL&&0===g.responseURL.indexOf("file:"))&&setTimeout(E)},g.onabort=function(){g&&(n(f("Request aborted",e,"ECONNABORTED",g)),g=null)},g.onerror=function(){n(f("Network Error",e,null,g)),g=null},g.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||l.transitional;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(f(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",g)),g=null},r.isStandardBrowserEnv()){var S=(e.withCredentials||c(w))&&e.xsrfCookieName?i.read(e.xsrfCookieName):void 0;S&&(m[e.xsrfHeaderName]=S)}"setRequestHeader"in g&&r.forEach(m,(function(e,t){void 0===h&&"content-type"===t.toLowerCase()?delete m[t]:g.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(g.withCredentials=!!e.withCredentials),v&&"json"!==v&&(g.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&g.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&g.upload&&g.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(d=function(e){g&&(n(!e||e&&e.type?new p("canceled"):e),g.abort(),g=null)},e.cancelToken&&e.cancelToken.subscribe(d),e.signal&&(e.signal.aborted?d():e.signal.addEventListener("abort",d))),h||(h=null),g.send(h)}))}},function(e,t,n){"use strict";var r=n(5);e.exports=function(e,t,n,o,i){var s=new Error(e);return r(s,t,n,o,i)}},function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t,n){"use strict";var r=n(0);e.exports=function(e,t){t=t||{};var n={};function o(e,t){return r.isPlainObject(e)&&r.isPlainObject(t)?r.merge(e,t):r.isPlainObject(t)?r.merge({},t):r.isArray(t)?t.slice():t}function i(n){return r.isUndefined(t[n])?r.isUndefined(e[n])?void 0:o(void 0,e[n]):o(e[n],t[n])}function s(e){if(!r.isUndefined(t[e]))return o(void 0,t[e])}function a(n){return r.isUndefined(t[n])?r.isUndefined(e[n])?void 0:o(void 0,e[n]):o(void 0,t[n])}function u(n){return n in t?o(e[n],t[n]):n in e?o(void 0,e[n]):void 0}var c={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:u};return r.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=c[e]||i,o=t(e);r.isUndefined(o)&&t!==u||(n[e]=o)})),n}},function(e,t){e.exports={version:"0.24.0"}},function(e,t,n){e.exports=n(12)},function(e,t,n){"use strict";var r=n(0),o=n(3),i=n(13),s=n(9);var a=function e(t){var n=new i(t),a=o(i.prototype.request,n);return r.extend(a,i.prototype,n),r.extend(a,n),a.create=function(n){return e(s(t,n))},a}(n(1));a.Axios=i,a.Cancel=n(2),a.CancelToken=n(26),a.isCancel=n(8),a.VERSION=n(10).version,a.all=function(e){return Promise.all(e)},a.spread=n(27),a.isAxiosError=n(28),e.exports=a,e.exports.default=a},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(14),s=n(15),a=n(9),u=n(25),c=u.validators;function f(e){this.defaults=e,this.interceptors={request:new i,response:new i}}f.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=a(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&u.assertOptions(t,{silentJSONParsing:c.transitional(c.boolean),forcedJSONParsing:c.transitional(c.boolean),clarifyTimeoutError:c.transitional(c.boolean)},!1);var n=[],r=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(r=r&&t.synchronous,n.unshift(t.fulfilled,t.rejected))}));var o,i=[];if(this.interceptors.response.forEach((function(e){i.push(e.fulfilled,e.rejected)})),!r){var f=[s,void 0];for(Array.prototype.unshift.apply(f,n),f=f.concat(i),o=Promise.resolve(e);f.length;)o=o.then(f.shift(),f.shift());return o}for(var l=e;n.length;){var p=n.shift(),d=n.shift();try{l=p(l)}catch(e){d(e);break}}try{o=s(l)}catch(e){return Promise.reject(e)}for(;i.length;)o=o.then(i.shift(),i.shift());return o},f.prototype.getUri=function(e){return e=a(this.defaults,e),o(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(e){f.prototype[e]=function(t,n){return this.request(a(n||{},{method:e,url:t,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(e){f.prototype[e]=function(t,n,r){return this.request(a(r||{},{method:e,url:t,data:n}))}})),e.exports=f},function(e,t,n){"use strict";var r=n(0);function o(){this.handlers=[]}o.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=o},function(e,t,n){"use strict";var r=n(0),o=n(16),i=n(8),s=n(1),a=n(2);function u(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new a("canceled")}e.exports=function(e){return u(e),e.headers=e.headers||{},e.data=o.call(e,e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||s.adapter)(e).then((function(t){return u(e),t.data=o.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return i(t)||(u(e),t&&t.response&&(t.response.data=o.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},function(e,t,n){"use strict";var r=n(0),o=n(1);e.exports=function(e,t,n){var i=this||o;return r.forEach(n,(function(n){e=n.call(i,e,t)})),e}},function(e,t,n){"use strict";var r=n(0);e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(0);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,o,i,s){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(i)&&a.push("domain="+i),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";var r=n(21),o=n(22);e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(0),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,i,s={};return e?(r.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t){if(s[t]&&o.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([n]):s[t]?s[t]+", "+n:n}})),s):s}},function(e,t,n){"use strict";var r=n(0);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";var r=n(10).version,o={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){o[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var i={};o.transitional=function(e,t,n){function o(e,t){return"[Axios v"+r+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,r,s){if(!1===e)throw new Error(o(r," has been removed"+(t?" in "+t:"")));return t&&!i[r]&&(i[r]=!0,console.warn(o(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,s)}},e.exports={assertOptions:function(e,t,n){if("object"!=typeof e)throw new TypeError("options must be an object");for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],s=t[i];if(s){var a=e[i],u=void 0===a||s(a,i,e);if(!0!==u)throw new TypeError("option "+i+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+i)}},validators:o}},function(e,t,n){"use strict";var r=n(2);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},o.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},o.source=function(){var e;return{token:new o((function(t){e=t})),cancel:e}},e.exports=o},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}}])}));
3
3
  //# sourceMappingURL=axios.min.map
@@ -1,224 +1 @@
1
- /*
2
- * base64.js
3
- *
4
- * Licensed under the BSD 3-Clause License.
5
- * http://opensource.org/licenses/BSD-3-Clause
6
- *
7
- * References:
8
- * http://en.wikipedia.org/wiki/Base64
9
- */
10
- ;(function (global, factory) {
11
- typeof exports === 'object' && typeof module !== 'undefined'
12
- ? module.exports = factory(global)
13
- : typeof define === 'function' && define.amd
14
- ? define(factory) : factory(global)
15
- }((
16
- typeof self !== 'undefined' ? self
17
- : typeof window !== 'undefined' ? window
18
- : typeof global !== 'undefined' ? global
19
- : this
20
- ), function(global) {
21
- 'use strict';
22
- // existing version for noConflict()
23
- global = global || {};
24
- var _Base64 = global.Base64;
25
- var version = "2.5.2";
26
- // if node.js and NOT React Native, we use Buffer
27
- var buffer;
28
- if (typeof module !== 'undefined' && module.exports) {
29
- try {
30
- buffer = eval("require('buffer').Buffer");
31
- } catch (err) {
32
- buffer = undefined;
33
- }
34
- }
35
- // constants
36
- var b64chars
37
- = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
38
- var b64tab = function(bin) {
39
- var t = {};
40
- for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
41
- return t;
42
- }(b64chars);
43
- var fromCharCode = String.fromCharCode;
44
- // encoder stuff
45
- var cb_utob = function(c) {
46
- if (c.length < 2) {
47
- var cc = c.charCodeAt(0);
48
- return cc < 0x80 ? c
49
- : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))
50
- + fromCharCode(0x80 | (cc & 0x3f)))
51
- : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))
52
- + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
53
- + fromCharCode(0x80 | ( cc & 0x3f)));
54
- } else {
55
- var cc = 0x10000
56
- + (c.charCodeAt(0) - 0xD800) * 0x400
57
- + (c.charCodeAt(1) - 0xDC00);
58
- return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))
59
- + fromCharCode(0x80 | ((cc >>> 12) & 0x3f))
60
- + fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
61
- + fromCharCode(0x80 | ( cc & 0x3f)));
62
- }
63
- };
64
- var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
65
- var utob = function(u) {
66
- return u.replace(re_utob, cb_utob);
67
- };
68
- var cb_encode = function(ccc) {
69
- var padlen = [0, 2, 1][ccc.length % 3],
70
- ord = ccc.charCodeAt(0) << 16
71
- | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)
72
- | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
73
- chars = [
74
- b64chars.charAt( ord >>> 18),
75
- b64chars.charAt((ord >>> 12) & 63),
76
- padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
77
- padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
78
- ];
79
- return chars.join('');
80
- };
81
- var btoa = global.btoa ? function(b) {
82
- return global.btoa(b);
83
- } : function(b) {
84
- return b.replace(/[\s\S]{1,3}/g, cb_encode);
85
- };
86
- var _encode = function(u) {
87
- var isUint8Array = Object.prototype.toString.call(u) === '[object Uint8Array]';
88
- return isUint8Array ? u.toString('base64')
89
- : btoa(utob(String(u)));
90
- }
91
- var encode = function(u, urisafe) {
92
- return !urisafe
93
- ? _encode(u)
94
- : _encode(String(u)).replace(/[+\/]/g, function(m0) {
95
- return m0 == '+' ? '-' : '_';
96
- }).replace(/=/g, '');
97
- };
98
- var encodeURI = function(u) { return encode(u, true) };
99
- // decoder stuff
100
- var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
101
- var cb_btou = function(cccc) {
102
- switch(cccc.length) {
103
- case 4:
104
- var cp = ((0x07 & cccc.charCodeAt(0)) << 18)
105
- | ((0x3f & cccc.charCodeAt(1)) << 12)
106
- | ((0x3f & cccc.charCodeAt(2)) << 6)
107
- | (0x3f & cccc.charCodeAt(3)),
108
- offset = cp - 0x10000;
109
- return (fromCharCode((offset >>> 10) + 0xD800)
110
- + fromCharCode((offset & 0x3FF) + 0xDC00));
111
- case 3:
112
- return fromCharCode(
113
- ((0x0f & cccc.charCodeAt(0)) << 12)
114
- | ((0x3f & cccc.charCodeAt(1)) << 6)
115
- | (0x3f & cccc.charCodeAt(2))
116
- );
117
- default:
118
- return fromCharCode(
119
- ((0x1f & cccc.charCodeAt(0)) << 6)
120
- | (0x3f & cccc.charCodeAt(1))
121
- );
122
- }
123
- };
124
- var btou = function(b) {
125
- return b.replace(re_btou, cb_btou);
126
- };
127
- var cb_decode = function(cccc) {
128
- var len = cccc.length,
129
- padlen = len % 4,
130
- n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)
131
- | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)
132
- | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)
133
- | (len > 3 ? b64tab[cccc.charAt(3)] : 0),
134
- chars = [
135
- fromCharCode( n >>> 16),
136
- fromCharCode((n >>> 8) & 0xff),
137
- fromCharCode( n & 0xff)
138
- ];
139
- chars.length -= [0, 0, 2, 1][padlen];
140
- return chars.join('');
141
- };
142
- var _atob = global.atob ? function(a) {
143
- return global.atob(a);
144
- } : function(a){
145
- return a.replace(/\S{1,4}/g, cb_decode);
146
- };
147
- var atob = function(a) {
148
- return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, ''));
149
- };
150
- var _decode = buffer ?
151
- buffer.from && Uint8Array && buffer.from !== Uint8Array.from
152
- ? function(a) {
153
- return (a.constructor === buffer.constructor
154
- ? a : buffer.from(a, 'base64')).toString();
155
- }
156
- : function(a) {
157
- return (a.constructor === buffer.constructor
158
- ? a : new buffer(a, 'base64')).toString();
159
- }
160
- : function(a) { return btou(_atob(a)) };
161
- var decode = function(a){
162
- return _decode(
163
- String(a).replace(/[-_]/g, function(m0) { return m0 == '-' ? '+' : '/' })
164
- .replace(/[^A-Za-z0-9\+\/]/g, '')
165
- );
166
- };
167
- var noConflict = function() {
168
- var Base64 = global.Base64;
169
- global.Base64 = _Base64;
170
- return Base64;
171
- };
172
- // export Base64
173
- global.Base64 = {
174
- VERSION: version,
175
- atob: atob,
176
- btoa: btoa,
177
- fromBase64: decode,
178
- toBase64: encode,
179
- utob: utob,
180
- encode: encode,
181
- encodeURI: encodeURI,
182
- btou: btou,
183
- decode: decode,
184
- noConflict: noConflict,
185
- __buffer__: buffer
186
- };
187
- // if ES5 is available, make Base64.extendString() available
188
- if (typeof Object.defineProperty === 'function') {
189
- var noEnum = function(v){
190
- return {value:v,enumerable:false,writable:true,configurable:true};
191
- };
192
- global.Base64.extendString = function () {
193
- Object.defineProperty(
194
- String.prototype, 'fromBase64', noEnum(function () {
195
- return decode(this)
196
- }));
197
- Object.defineProperty(
198
- String.prototype, 'toBase64', noEnum(function (urisafe) {
199
- return encode(this, urisafe)
200
- }));
201
- Object.defineProperty(
202
- String.prototype, 'toBase64URI', noEnum(function () {
203
- return encode(this, true)
204
- }));
205
- };
206
- }
207
- //
208
- // export Base64 to the namespace
209
- //
210
- if (global['Meteor']) { // Meteor.js
211
- Base64 = global.Base64;
212
- }
213
- // module.exports and AMD are mutually exclusive.
214
- // module.exports has precedence.
215
- if (typeof module !== 'undefined' && module.exports) {
216
- module.exports.Base64 = global.Base64;
217
- }
218
- else if (typeof define === 'function' && define.amd) {
219
- // AMD. Register as an anonymous module.
220
- define([], function(){ return global.Base64 });
221
- }
222
- // that's it!
223
- return {Base64: global.Base64}
224
- }));
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(e):"function"==typeof define&&define.amd?define(o):o(e)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:this,function(global){"use strict";global=global||{};var _Base64=global.Base64,version="2.5.2",buffer;if("undefined"!=typeof module&&module.exports)try{buffer=eval("require('buffer').Buffer")}catch(e){buffer=void 0}var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",b64tab=function(e){for(var o={},r=0,t=e.length;r<t;r++)o[e.charAt(r)]=r;return o}(b64chars),fromCharCode=String.fromCharCode,cb_utob=function(e){if(e.length<2)return(o=e.charCodeAt(0))<128?e:o<2048?fromCharCode(192|o>>>6)+fromCharCode(128|63&o):fromCharCode(224|o>>>12&15)+fromCharCode(128|o>>>6&63)+fromCharCode(128|63&o);var o=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return fromCharCode(240|o>>>18&7)+fromCharCode(128|o>>>12&63)+fromCharCode(128|o>>>6&63)+fromCharCode(128|63&o)},re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,utob=function(e){return e.replace(re_utob,cb_utob)},cb_encode=function(e){var o=[0,2,1][e.length%3],r=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0);return[b64chars.charAt(r>>>18),b64chars.charAt(r>>>12&63),o>=2?"=":b64chars.charAt(r>>>6&63),o>=1?"=":b64chars.charAt(63&r)].join("")},btoa=global.btoa?function(e){return global.btoa(e)}:function(e){return e.replace(/[\s\S]{1,3}/g,cb_encode)},_encode=function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)?e.toString("base64"):btoa(utob(String(e)))},encode=function(e,o){return o?_encode(String(e)).replace(/[+\/]/g,function(e){return"+"==e?"-":"_"}).replace(/=/g,""):_encode(e)},encodeURI=function(e){return encode(e,!0)},re_btou=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,cb_btou=function(e){switch(e.length){case 4:var o=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return fromCharCode(55296+(o>>>10))+fromCharCode(56320+(1023&o));case 3:return fromCharCode((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return fromCharCode((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},btou=function(e){return e.replace(re_btou,cb_btou)},cb_decode=function(e){var o=e.length,r=o%4,t=(o>0?b64tab[e.charAt(0)]<<18:0)|(o>1?b64tab[e.charAt(1)]<<12:0)|(o>2?b64tab[e.charAt(2)]<<6:0)|(o>3?b64tab[e.charAt(3)]:0),n=[fromCharCode(t>>>16),fromCharCode(t>>>8&255),fromCharCode(255&t)];return n.length-=[0,0,2,1][r],n.join("")},_atob=global.atob?function(e){return global.atob(e)}:function(e){return e.replace(/\S{1,4}/g,cb_decode)},atob=function(e){return _atob(String(e).replace(/[^A-Za-z0-9\+\/]/g,""))},_decode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(e){return(e.constructor===buffer.constructor?e:buffer.from(e,"base64")).toString()}:function(e){return(e.constructor===buffer.constructor?e:new buffer(e,"base64")).toString()}:function(e){return btou(_atob(e))},decode=function(e){return _decode(String(e).replace(/[-_]/g,function(e){return"-"==e?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))},noConflict=function(){var e=global.Base64;return global.Base64=_Base64,e};if(global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict,__buffer__:buffer},"function"==typeof Object.defineProperty){var noEnum=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)})),Object.defineProperty(String.prototype,"toBase64",noEnum(function(e){return encode(this,e)})),Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,!0)}))}}return global.Meteor&&(Base64=global.Base64),"undefined"!=typeof module&&module.exports?module.exports.Base64=global.Base64:"function"==typeof define&&define.amd&&define([],function(){return global.Base64}),{Base64:global.Base64}});
@@ -27,5 +27,8 @@ export declare const getDUrl: (url: string, optionsOverride?: AxiosRequestConfig
27
27
  */
28
28
  export declare const base64MimeType: (dUrl: DataURL) => string;
29
29
  export declare const processSend: (message: string) => void;
30
+ export declare const perf: () => DateConstructor | Performance;
31
+ export declare const now: () => number;
32
+ export declare function timePromise(fn: () => Promise<any>): Promise<string>;
30
33
  export declare const processSendData: (data?: any) => void;
31
34
  export declare const generateGHIssueLink: (config: ConfigObject, sessionInfo: SessionInfo, extras?: any) => string;
@@ -23,7 +23,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
23
23
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.generateGHIssueLink = exports.processSendData = exports.processSend = exports.base64MimeType = exports.getDUrl = exports.isDataURL = exports.isBase64 = exports.camelize = exports.without = exports.getConfigFromProcessEnv = exports.smartUserAgent = exports.timeout = void 0;
26
+ exports.generateGHIssueLink = exports.processSendData = exports.timePromise = exports.now = exports.perf = exports.processSend = exports.base64MimeType = exports.getDUrl = exports.isDataURL = exports.isBase64 = exports.camelize = exports.without = exports.getConfigFromProcessEnv = exports.smartUserAgent = exports.timeout = void 0;
27
27
  const axios_1 = __importDefault(require("axios"));
28
28
  const child_process_1 = require("child_process");
29
29
  //@ts-ignore
@@ -138,6 +138,18 @@ const processSend = (message) => {
138
138
  return;
139
139
  };
140
140
  exports.processSend = processSend;
141
+ const perf = () => performance || Date;
142
+ exports.perf = perf;
143
+ const now = () => (0, exports.perf)().now();
144
+ exports.now = now;
145
+ function timePromise(fn) {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ const start = (0, exports.now)();
148
+ yield fn();
149
+ return ((0, exports.now)() - start).toFixed(0);
150
+ });
151
+ }
152
+ exports.timePromise = timePromise;
141
153
  const processSendData = (data = {}) => {
142
154
  process.send({
143
155
  type: 'process:msg',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-wa/wa-automate",
3
- "version": "4.29.0",
3
+ "version": "4.30.3",
4
4
  "licenseCheckUrl": "https://openwa.dev/license-check",
5
5
  "brokenMethodReportUrl": "https://openwa.dev/report-bm",
6
6
  "patches": "https://cdn.openwa.dev/patches.json",
@@ -84,6 +84,7 @@
84
84
  "auto-changelog": "^2.0.0",
85
85
  "ava": "^3.13.0",
86
86
  "changelog-parser": "^2.8.0",
87
+ "typeconv": "^1.7.0",
87
88
  "command-line-args": "^5.1.1",
88
89
  "eslint": "^8.1.0",
89
90
  "husky": "^7.0.0",
@@ -97,6 +98,7 @@
97
98
  "shelljs": "^0.8.3",
98
99
  "ts-node": "^10.0.0",
99
100
  "tsc-watch": "^4.0.0",
101
+ "tiny-glob": "^0.2.9",
100
102
  "typedoc": "^0.21.6",
101
103
  "typedoc-plugin-pages": "^1.0.1",
102
104
  "typescript": "^4.2.4"
@@ -160,12 +162,10 @@
160
162
  "tcp-port-used": "^1.0.1",
161
163
  "terminal-link": "^2.1.1",
162
164
  "terminate": "^2.5.0",
163
- "tiny-glob": "^0.2.9",
164
165
  "traverse": "^0.6.6",
165
166
  "ts-json-schema-generator": "^0.95.0",
166
167
  "ts-morph": "^12.0.0",
167
168
  "type-fest": "^1.1.1",
168
- "typeconv": "^1.7.0",
169
169
  "update-notifier": "^5.0.0",
170
170
  "uuid": "^8.3.2",
171
171
  "uuid-apikey": "^1.5.3",