/
config.ts
69 lines (56 loc) · 1.49 KB
/
config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// tslint:disable:no-reference
/// <reference path="./typings.d.ts" />
import promiseRetry = require('promise-retry')
import { OperationOptions } from 'retry'
import {
// Brolog,
log,
} from 'brolog'
import { FileBox } from 'file-box'
import qrImage from 'qr-image'
import { VERSION } from './version'
// export const log = new Brolog()
export async function retry<T> (
retryableFn: (
retry: (error: Error) => never,
attempt: number,
) => Promise<T>,
): Promise<T> {
/**
* 60 seconds: (to be confirmed)
* factor: 3
* minTimeout: 10
* maxTimeout: 20 * 1000
* retries: 9
*/
const factor = 3
const minTimeout = 10
const maxTimeout = 20 * 1000
const retries = 9
// const unref = true
const retryOptions: OperationOptions = {
factor,
maxTimeout,
minTimeout,
retries,
}
return promiseRetry(retryOptions, retryableFn)
}
export function envHead (): boolean {
const KEY = 'WECHATY_PUPPET_PUPPETEER_HEAD'
return KEY in process.env
? !!process.env[KEY]
: false
}
export function qrCodeForChatie (): FileBox {
const CHATIE_OFFICIAL_ACCOUNT_QRCODE = 'http://weixin.qq.com/r/qymXj7DEO_1ErfTs93y5'
const name = 'qrcode-for-chatie.png'
const type = 'png'
const qrStream = qrImage.image(CHATIE_OFFICIAL_ACCOUNT_QRCODE, { type })
return FileBox.fromStream(qrStream, name)
}
export const MEMORY_SLOT = 'PUPPET_PUPPETEER'
export {
VERSION,
log,
}