/
index.js
executable file
·82 lines (71 loc) · 1.58 KB
/
index.js
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
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env node
'use strict'
const { size, concat, first, isEmpty } = require('lodash')
const normalizeUrl = require('normalize-url')
const urlint = require('urlint')
const isCI = require('is-ci')
const got = require('got')
const pkg = require('../../package.json')
const extractUrls = require('./extract-urls')
const view = require('../view')
const getUrl = async input => {
const normalizedUrl = normalizeUrl(input)
const { url } = await got.head(normalizedUrl)
return url
}
require('update-notifier')({ pkg }).notify()
const cli = require('meow')(require('./help'), {
pkg,
description: false,
flags: {
whitelist: {
alias: 'w',
type: 'array',
default: false
},
concurrence: {
alias: 'c',
type: 'number',
default: 30
},
quiet: {
alias: 'q',
type: 'boolean',
default: isCI
},
followRedirect: {
alias: 'f',
type: 'boolean',
default: true
},
logspeed: {
alias: 's',
type: 'number',
default: 100
},
timeout: {
alias: 't',
type: 'number',
default: false
},
retries: {
alias: 'r',
type: 'number',
default: 2
}
}
})
if (isEmpty(cli.input)) {
cli.showHelp()
process.exit()
}
;(async () => {
const url = await getUrl(first(cli.input))
const opts = Object.assign({}, cli.flags, {
whitelist: cli.flags.whitelist && concat(cli.flags.whitelist)
})
const urls = await extractUrls(url, opts)
const emitter = await urlint(urls, opts)
console.log()
view({ total: size(urls), emitter, ...opts })
})()