|
1 | 1 | const chalk = require('chalk');
|
2 | 2 |
|
3 |
| -const { getZone, purgeFiles } = require('./utils/cloudflare'); |
4 |
| -const { die } = require('./utils/process'); |
5 |
| -const { getFiles } = require('./utils/unpkg'); |
6 |
| - |
7 |
| -const packageName = process.argv[2]; |
8 |
| -const version = process.argv[3]; |
9 |
| - |
10 |
| -if (packageName == null) { |
11 |
| - die( |
12 |
| - 'Missing the PACKAGE_NAME argument; use `node purge-cache.js PACKAGE_NAME VERSION`' |
13 |
| - ); |
14 |
| -} |
15 |
| - |
16 |
| -if (version == null) { |
17 |
| - die( |
18 |
| - 'Missing the VERSION argument; use `node purge-cache.js PACKAGE_NAME VERSION`' |
19 |
| - ); |
20 |
| -} |
| 3 | +const { getZone, purgeFiles } = require('./utils/cloudflare.js'); |
| 4 | +const { getFiles } = require('./utils/unpkg.js'); |
21 | 5 |
|
22 | 6 | function groupBy(array, n) {
|
23 | 7 | const groups = [];
|
24 |
| - |
25 |
| - while (array.length) { |
26 |
| - groups.push(array.splice(0, n)); |
27 |
| - } |
28 |
| - |
| 8 | + while (array.length) groups.push(array.splice(0, n)); |
29 | 9 | return groups;
|
30 | 10 | }
|
31 | 11 |
|
32 |
| -getFiles(packageName, version) |
33 |
| - .then(files => { |
34 |
| - console.log( |
35 |
| - chalk.yellow( |
36 |
| - `Found ${files.length} files for package ${packageName}@${version}` |
| 12 | +async function run(packageName, version) { |
| 13 | + if (packageName == null) { |
| 14 | + console.error( |
| 15 | + chalk.red( |
| 16 | + 'Missing <package-name>; use `node purge-cache.js <package-name> <version>`' |
37 | 17 | )
|
38 | 18 | );
|
39 | 19 |
|
40 |
| - let urls = files.map( |
41 |
| - file => `https://unpkg.com/${packageName}@${version}${file.path}` |
| 20 | + return 1; |
| 21 | + } |
| 22 | + |
| 23 | + if (version == null) { |
| 24 | + console.error( |
| 25 | + chalk.red( |
| 26 | + `Missing <version>; use 'node purge-cache.js "${packageName}" <version>'` |
| 27 | + ) |
42 | 28 | );
|
43 | 29 |
|
44 |
| - if (version === 'latest') { |
45 |
| - // Purge the URL w/out the "@latest" too. |
46 |
| - urls = urls.concat( |
47 |
| - files.map(file => `https://unpkg.com/${packageName}${file.path}`) |
48 |
| - ); |
49 |
| - } |
| 30 | + return 1; |
| 31 | + } |
| 32 | + |
| 33 | + const files = await getFiles(packageName, version); |
| 34 | + |
| 35 | + console.log( |
| 36 | + chalk.yellow( |
| 37 | + `Found ${files.length} files for package ${packageName}@${version}` |
| 38 | + ) |
| 39 | + ); |
50 | 40 |
|
51 |
| - return getZone('unpkg.com').then(zone => { |
52 |
| - let promise = Promise.resolve(); |
| 41 | + let urls = files.map( |
| 42 | + file => `https://unpkg.com/${packageName}@${version}${file.path}` |
| 43 | + ); |
| 44 | + |
| 45 | + if (version === 'latest') { |
| 46 | + // Purge the URL w/out the "@latest" too. |
| 47 | + urls = urls.concat( |
| 48 | + files.map(file => `https://unpkg.com/${packageName}${file.path}`) |
| 49 | + ); |
| 50 | + } |
53 | 51 |
|
54 |
| - groupBy(urls, 30).forEach(group => { |
55 |
| - promise = promise.then(() => { |
56 |
| - return purgeFiles(zone.id, group).then(data => { |
57 |
| - group.forEach(url => console.log(chalk.green(`Purged ${url}`))); |
58 |
| - }); |
59 |
| - }); |
60 |
| - }); |
| 52 | + return getZone('unpkg.com').then(zone => { |
| 53 | + let promise = Promise.resolve(); |
61 | 54 |
|
62 |
| - return promise; |
| 55 | + groupBy(urls, 30).forEach(group => { |
| 56 | + promise = promise.then(() => |
| 57 | + purgeFiles(zone.id, group).then(() => { |
| 58 | + group.forEach(url => console.log(chalk.green(`Purged ${url}`))); |
| 59 | + }) |
| 60 | + ); |
63 | 61 | });
|
64 |
| - }) |
65 |
| - .catch(die); |
| 62 | + |
| 63 | + return promise; |
| 64 | + }); |
| 65 | +} |
| 66 | + |
| 67 | +const packageName = process.argv[2]; |
| 68 | +const version = process.argv[3]; |
| 69 | + |
| 70 | +run(packageName, version).then(exitCode => { |
| 71 | + process.exit(exitCode); |
| 72 | +}); |
0 commit comments