build-strap 4.0.0-dev.46 → 4.0.0
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.
- package/README.md +3 -34
- package/dist/src/ant.d.ts +19 -0
- package/dist/src/ant.js +18 -0
- package/dist/src/cert.d.ts +12 -0
- package/dist/src/cert.js +91 -0
- package/dist/src/clean.d.ts +4 -0
- package/dist/src/clean.js +11 -0
- package/dist/src/copy.d.ts +7 -0
- package/dist/src/copy.js +53 -0
- package/dist/src/cp.d.ts +17 -0
- package/dist/src/cp.js +88 -0
- package/dist/src/docker.container.d.ts +73 -0
- package/dist/src/docker.container.js +247 -0
- package/dist/src/docker.d.ts +68 -0
- package/dist/src/docker.js +188 -0
- package/dist/src/docker.network.d.ts +42 -0
- package/dist/src/docker.network.js +85 -0
- package/dist/src/docker.volume.d.ts +26 -0
- package/dist/src/docker.volume.js +62 -0
- package/dist/src/dockerCleanup.d.ts +38 -0
- package/dist/src/dockerCleanup.js +77 -0
- package/dist/src/dockerCompose.d.ts +154 -0
- package/dist/src/dockerCompose.js +439 -0
- package/dist/src/fs.d.ts +5 -0
- package/dist/src/fs.js +38 -0
- package/dist/src/git.d.ts +9 -0
- package/dist/src/git.js +24 -0
- package/dist/src/index.d.ts +20 -0
- package/dist/src/index.js +20 -0
- package/dist/src/maps.d.ts +33 -0
- package/dist/src/maps.js +41 -0
- package/dist/src/npm.d.ts +35 -0
- package/dist/src/npm.js +104 -0
- package/dist/src/pkg.d.ts +33 -0
- package/dist/src/pkg.js +33 -0
- package/dist/src/publish.d.ts +27 -0
- package/dist/src/publish.js +57 -0
- package/dist/src/run.d.ts +13 -0
- package/dist/src/run.js +44 -0
- package/dist/src/tgz.d.ts +13 -0
- package/dist/src/tgz.js +67 -0
- package/dist/src/version.d.ts +34 -0
- package/dist/src/version.js +101 -0
- package/dist/src/yarn.d.ts +26 -0
- package/dist/src/yarn.js +75 -0
- package/package.json +74 -20
- package/ant.js +0 -43
- package/ant.js.flow +0 -42
- package/artifactory.js +0 -617
- package/artifactory.js.flow +0 -616
- package/cert.conf +0 -20
- package/cert.js +0 -153
- package/cert.js.flow +0 -152
- package/clean.js +0 -20
- package/clean.js.flow +0 -19
- package/copy.js +0 -80
- package/copy.js.flow +0 -79
- package/cp.js +0 -173
- package/cp.js.flow +0 -172
- package/docker.container.js +0 -390
- package/docker.container.js.flow +0 -389
- package/docker.js +0 -365
- package/docker.js.flow +0 -364
- package/docker.network.js +0 -160
- package/docker.network.js.flow +0 -159
- package/docker.volume.js +0 -136
- package/docker.volume.js.flow +0 -136
- package/dockerCleanup.js +0 -152
- package/dockerCleanup.js.flow +0 -151
- package/dockerCompose.js +0 -766
- package/dockerCompose.js.flow +0 -765
- package/flow.js +0 -21
- package/flow.js.flow +0 -20
- package/fs.js +0 -95
- package/fs.js.flow +0 -96
- package/git.js +0 -35
- package/git.js.flow +0 -34
- package/hg.js +0 -35
- package/hg.js.flow +0 -34
- package/index.js +0 -27
- package/index.js.flow +0 -26
- package/inline-resources.js +0 -158
- package/inline-resources.js.flow +0 -157
- package/maps.js +0 -112
- package/maps.js.flow +0 -111
- package/npm.js +0 -145
- package/npm.js.flow +0 -144
- package/pkg.js +0 -81
- package/pkg.js.flow +0 -80
- package/publish.js +0 -145
- package/publish.js.flow +0 -144
- package/run.js +0 -90
- package/run.js.flow +0 -89
- package/src/ant.js +0 -42
- package/src/artifactory.js +0 -616
- package/src/cert.conf +0 -20
- package/src/cert.js +0 -152
- package/src/clean.js +0 -19
- package/src/copy.js +0 -79
- package/src/cp.js +0 -172
- package/src/docker.container.js +0 -389
- package/src/docker.js +0 -364
- package/src/docker.network.js +0 -159
- package/src/docker.volume.js +0 -136
- package/src/dockerCleanup.js +0 -151
- package/src/dockerCompose.js +0 -765
- package/src/flow.js +0 -20
- package/src/fs.js +0 -96
- package/src/git.js +0 -34
- package/src/hg.js +0 -34
- package/src/index.js +0 -26
- package/src/inline-resources.js +0 -157
- package/src/maps.js +0 -111
- package/src/npm.js +0 -144
- package/src/pkg.js +0 -80
- package/src/publish.js +0 -144
- package/src/run.js +0 -89
- package/src/test.js +0 -55
- package/src/tgz.js +0 -101
- package/src/version.js +0 -142
- package/src/yarn.js +0 -123
- package/test.js +0 -56
- package/test.js.flow +0 -55
- package/tgz.js +0 -102
- package/tgz.js.flow +0 -101
- package/version.js +0 -143
- package/version.js.flow +0 -142
- package/yarn.js +0 -124
- package/yarn.js.flow +0 -123
package/cert.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.generateCert = generateCert;exports.getCertConfig = getCertConfig;exports.getIpAddresses = getIpAddresses;
|
|
2
|
-
var _os = _interopRequireDefault(require("os"));
|
|
3
|
-
var _requestPromiseNative = _interopRequireDefault(require("request-promise-native"));
|
|
4
|
-
var _path = _interopRequireDefault(require("path"));
|
|
5
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
6
|
-
var _run = require("./run");
|
|
7
|
-
var _fs = require("./fs");
|
|
8
|
-
var _cp = require("./cp");
|
|
9
|
-
var _pkg = require("./pkg");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
function getCertConfig() {
|
|
22
|
-
return (0, _pkg.getCfg)().cert || {};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function getIpAddresses() {
|
|
26
|
-
const iFaces = _os.default.networkInterfaces();
|
|
27
|
-
return Object.keys(iFaces).reduce(
|
|
28
|
-
(prev, ifName) => [
|
|
29
|
-
...prev,
|
|
30
|
-
...iFaces[ifName].map((iFace) => iFace.address)],
|
|
31
|
-
|
|
32
|
-
[]);
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Generate a self-signed certificate (if it doesn't exist)
|
|
37
|
-
async function generateCert(
|
|
38
|
-
targetDir,
|
|
39
|
-
force = process.argv.includes('--force-generateCert'))
|
|
40
|
-
{
|
|
41
|
-
if (process.argv.includes('--no-generateCert')) {
|
|
42
|
-
(0, _run.buildLog)('Skipping due to --no-generateCert');
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
(0, _run.buildLog)(`scanning ${targetDir} for certificates...`);
|
|
46
|
-
if (
|
|
47
|
-
!force &&
|
|
48
|
-
(await (0, _fs.readDir)(`${targetDir}/server.@(crt|key)`)).length === 2)
|
|
49
|
-
{
|
|
50
|
-
(0, _run.buildLog)('Skipping certificate generation: certificate already exists');
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
(0, _run.buildLog)('Generating self-signed certificate...');
|
|
54
|
-
const {
|
|
55
|
-
countryName = 'US',
|
|
56
|
-
stateOrProvinceName = 'Pennsylvania',
|
|
57
|
-
localityName = 'SomeCity',
|
|
58
|
-
organizationName = 'Company',
|
|
59
|
-
organizationalUnitName = 'Product',
|
|
60
|
-
commonName = 'app.company.com',
|
|
61
|
-
emailAddress = 'contact@company.com' } =
|
|
62
|
-
getCertConfig();
|
|
63
|
-
const hostname = _os.default.hostname();
|
|
64
|
-
(0, _run.buildLog)(`hostname: ${hostname}`);
|
|
65
|
-
const ipAddresses = getIpAddresses();
|
|
66
|
-
(0, _run.buildLog)(`ip addresses: ${JSON.stringify(ipAddresses)}`);
|
|
67
|
-
const ifconfig = await _requestPromiseNative.default.get('https://ifconfig.co', { json: true });
|
|
68
|
-
const externalIp4 = ifconfig.ip;
|
|
69
|
-
(0, _run.buildLog)(`external ipv4: ${externalIp4}`);
|
|
70
|
-
const dnsName = ifconfig.hostname;
|
|
71
|
-
(0, _run.buildLog)(`dnsName: ${dnsName}`);
|
|
72
|
-
|
|
73
|
-
await _fsExtra.default.ensureDir(targetDir);
|
|
74
|
-
const keyFile = _path.default.resolve(targetDir, 'server.key');
|
|
75
|
-
const csrFile = _path.default.resolve(targetDir, 'server.csr');
|
|
76
|
-
const crtFile = _path.default.resolve(targetDir, 'server.crt');
|
|
77
|
-
const confTemplateFile = _path.default.resolve(__dirname, 'cert.conf');
|
|
78
|
-
const confFile = _path.default.resolve(targetDir, 'cert.conf.generated');
|
|
79
|
-
const confTemplate = await _fsExtra.default.readFile(confTemplateFile, 'utf8');
|
|
80
|
-
await _fsExtra.default.writeFile(
|
|
81
|
-
confFile,
|
|
82
|
-
confTemplate.
|
|
83
|
-
replace('{{countryName}}', countryName).
|
|
84
|
-
replace('{{stateOrProvinceName}}', stateOrProvinceName).
|
|
85
|
-
replace('{{localityName}}', localityName).
|
|
86
|
-
replace('{{organizationName}}', organizationName).
|
|
87
|
-
replace('{{organizationalUnitName}}', organizationalUnitName).
|
|
88
|
-
replace('{{commonName}}', commonName).
|
|
89
|
-
replace('{{emailAddress}}', emailAddress).
|
|
90
|
-
replace(
|
|
91
|
-
'{{SAN_IP}}',
|
|
92
|
-
ipAddresses.reduce((acc, next) => `${acc},IP:${next}`, '')).
|
|
93
|
-
|
|
94
|
-
replace('{{SAN_DNS}}', `,DNS:${hostname},DNS:${dnsName}`),
|
|
95
|
-
'utf8');
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
(0, _run.buildLog)('generating key file...');
|
|
99
|
-
await (0, _cp.spawn)(
|
|
100
|
-
'openssl',
|
|
101
|
-
[
|
|
102
|
-
'genpkey',
|
|
103
|
-
'-algorithm',
|
|
104
|
-
'RSA',
|
|
105
|
-
'-pkeyopt',
|
|
106
|
-
'rsa_keygen_bits:2048',
|
|
107
|
-
'-out',
|
|
108
|
-
keyFile],
|
|
109
|
-
|
|
110
|
-
{ pipeOutput: true });
|
|
111
|
-
|
|
112
|
-
(0, _run.buildLog)('generating csr file...');
|
|
113
|
-
await (0, _cp.spawn)(
|
|
114
|
-
'openssl',
|
|
115
|
-
[
|
|
116
|
-
'req',
|
|
117
|
-
'-new',
|
|
118
|
-
'-key',
|
|
119
|
-
keyFile,
|
|
120
|
-
'-out',
|
|
121
|
-
csrFile,
|
|
122
|
-
'-subj',
|
|
123
|
-
`/C=${countryName}/ST=${stateOrProvinceName}/L=${localityName}/O=${organizationName}/OU=${organizationalUnitName}/CN=${commonName}/CN=${externalIp4}/CN=${hostname}/CN=${dnsName}${ipAddresses.reduce(
|
|
124
|
-
(acc, next) => `${acc}/CN=${next}`)
|
|
125
|
-
}/CN=localhost`,
|
|
126
|
-
'-config',
|
|
127
|
-
confFile],
|
|
128
|
-
|
|
129
|
-
{ pipeOutput: true });
|
|
130
|
-
|
|
131
|
-
(0, _run.buildLog)('generating cert...');
|
|
132
|
-
await (0, _cp.spawn)(
|
|
133
|
-
'openssl',
|
|
134
|
-
[
|
|
135
|
-
'x509',
|
|
136
|
-
'-req',
|
|
137
|
-
'-days',
|
|
138
|
-
'365',
|
|
139
|
-
'-in',
|
|
140
|
-
csrFile,
|
|
141
|
-
'-signkey',
|
|
142
|
-
keyFile,
|
|
143
|
-
'-out',
|
|
144
|
-
crtFile,
|
|
145
|
-
'-extfile',
|
|
146
|
-
confFile,
|
|
147
|
-
'-extensions',
|
|
148
|
-
'v3_req'],
|
|
149
|
-
|
|
150
|
-
{ pipeOutput: true });
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jZXJ0LmpzIl0sIm5hbWVzIjpbImdldENlcnRDb25maWciLCJjZXJ0IiwiZ2V0SXBBZGRyZXNzZXMiLCJpRmFjZXMiLCJvcyIsIm5ldHdvcmtJbnRlcmZhY2VzIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsInByZXYiLCJpZk5hbWUiLCJtYXAiLCJpRmFjZSIsImFkZHJlc3MiLCJnZW5lcmF0ZUNlcnQiLCJ0YXJnZXREaXIiLCJmb3JjZSIsInByb2Nlc3MiLCJhcmd2IiwiaW5jbHVkZXMiLCJsZW5ndGgiLCJjb3VudHJ5TmFtZSIsInN0YXRlT3JQcm92aW5jZU5hbWUiLCJsb2NhbGl0eU5hbWUiLCJvcmdhbml6YXRpb25OYW1lIiwib3JnYW5pemF0aW9uYWxVbml0TmFtZSIsImNvbW1vbk5hbWUiLCJlbWFpbEFkZHJlc3MiLCJob3N0bmFtZSIsImlwQWRkcmVzc2VzIiwiSlNPTiIsInN0cmluZ2lmeSIsImlmY29uZmlnIiwicnAiLCJnZXQiLCJqc29uIiwiZXh0ZXJuYWxJcDQiLCJpcCIsImRuc05hbWUiLCJmcyIsImVuc3VyZURpciIsImtleUZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsImNzckZpbGUiLCJjcnRGaWxlIiwiY29uZlRlbXBsYXRlRmlsZSIsIl9fZGlybmFtZSIsImNvbmZGaWxlIiwiY29uZlRlbXBsYXRlIiwicmVhZEZpbGUiLCJ3cml0ZUZpbGUiLCJyZXBsYWNlIiwiYWNjIiwibmV4dCIsInBpcGVPdXRwdXQiXSwibWFwcGluZ3MiOiI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCOzs7Ozs7Ozs7Ozs7QUFZTyxTQUFTQSxhQUFULEdBQXFDO0FBQzFDLFNBQU8sbUJBQVNDLElBQVQsSUFBaUIsRUFBeEI7QUFDRDs7QUFFTSxTQUFTQyxjQUFULEdBQW9DO0FBQ3pDLFFBQU1DLE1BQU0sR0FBR0MsWUFBR0MsaUJBQUgsRUFBZjtBQUNBLFNBQU9DLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSixNQUFaLEVB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STs7QUFnQkosSUFBRU8sVUFBVSxFQUFFLElBQWQsRUFoQkksQ0FBTjs7QUFrQkEscUJBQVMsb0JBQVQ7QUFDQSxRQUFNO0FBQ0osV0FESTtBQUVKO0FBQ0UsUUFERjtBQUVFLFFBRkY7QUFHRSxTQUhGO0FBSUUsT0FKRjtBQUtFLE9BTEY7QUFNRVgsRUFBQUEsT0FORjtBQU9FLFlBUEY7QUFRRUgsRUFBQUEsT0FSRjtBQVNFLFFBVEY7QUFVRUksRUFBQUEsT0FWRjtBQVdFLFlBWEY7QUFZRUcsRUFBQUEsUUFaRjtBQWFFLGVBYkY7QUFjRSxVQWRGLENBRkk7O0FBa0JKLElBQUVPLFVBQVUsRUFBRSxJQUFkLEVBbEJJLENBQU47O0FBb0JEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcnAgZnJvbSAncmVxdWVzdC1wcm9taXNlLW5hdGl2ZSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBidWlsZExvZyB9IGZyb20gJy4vcnVuJztcbmltcG9ydCB7IHJlYWREaXIgfSBmcm9tICcuL2ZzJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnLi9jcCc7XG5pbXBvcnQgeyBnZXRDZmcgfSBmcm9tICcuL3BrZyc7XG5cbmV4cG9ydCB0eXBlIENlcnRDb25maWcgPSB7XG4gIGNvdW50cnlOYW1lPzogc3RyaW5nLFxuICBzdGF0ZU9yUHJvdmluY2VOYW1lPzogc3RyaW5nLFxuICBsb2NhbGl0eU5hbWU/OiBzdHJpbmcsXG4gIG9yZ2FuaXphdGlvbk5hbWU/OiBzdHJpbmcsXG4gIG9yZ2FuaXphdGlvbmFsVW5pdE5hbWU/OiBzdHJpbmcsXG4gIGNvbW1vbk5hbWU/OiBzdHJpbmcsXG4gIGVtYWlsQWRkcmVzcz86IHN0cmluZyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDZXJ0Q29uZmlnKCk6IENlcnRDb25maWcge1xuICByZXR1cm4gZ2V0Q2ZnKCkuY2VydCB8fCB7fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElwQWRkcmVzc2VzKCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgaUZhY2VzID0gb3MubmV0d29ya0ludGVyZmFjZXMoKTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGlGYWNlcykucmVkdWNlKFxuICAgIChwcmV2LCBpZk5hbWUpID0+IFtcbiAgICAgIC4uLnByZXYsXG4gICAgICAuLi5pRmFjZXNbaWZOYW1lXS5tYXAoKGlGYWNlKSA9PiBpRmFjZS5hZGRyZXNzKSxcbiAgICBdLFxuICAgIFtdLFxuICApO1xufVxuXG4vLyBHZW5lcmF0ZSBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIChpZiBpdCBkb2Vzbid0IGV4aXN0KVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlQ2VydChcbiAgdGFyZ2V0RGlyOiBzdHJpbmcsXG4gIGZvcmNlOiBib29sZWFuID0gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLWZvcmNlLWdlbmVyYXRlQ2VydCcpLFxuKSB7XG4gIGlmIChwcm9jZXNzLmFyZ3YuaW5jbHVkZXMoJy0tbm8tZ2VuZXJhdGVDZXJ0JykpIHtcbiAgICBidWlsZExvZygnU2tpcHBpbmcgZHVlIHRvIC0tbm8tZ2VuZXJhdGVDZXJ0Jyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGJ1aWxkTG9nKGBzY2FubmluZyAke3RhcmdldERpcn0gZm9yIGNlcnRpZmljYXRlcy4uLmApO1xuICBpZiAoXG4gICAgIWZvcmNlICYmXG4gICAgKGF3YWl0IHJlYWREaXIoYCR7dGFyZ2V0RGlyfS9zZXJ2ZXIuQChjcnR8a2V5KWApKS5sZW5ndGggPT09IDJcbiAgKSB7XG4gICAgYnVpbGRMb2coJ1NraXBwaW5nIGNlcnRpZmljYXRlIGdlbmVyYXRpb246IGNlcnRpZmljYXRlIGFscmVhZHkgZXhpc3RzJyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGJ1aWxkTG9nKCdHZW5lcmF0aW5nIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLi4uJyk7XG4gIGNvbnN0IHtcbiAgICBjb3VudHJ5TmFtZSA9ICdVUycsXG4gICAgc3RhdGVPclByb3ZpbmNlTmFtZSA9ICdQZW5uc3lsdmFuaWEnLFxuICAgIGxvY2FsaXR5TmFtZSA9ICdTb21lQ2l0eScsXG4gICAgb3JnYW5pemF0aW9uTmFtZSA9ICdDb21wYW55JyxcbiAgICBvcmdhbml6YXRpb25hbFVuaXROYW1lID0gJ1Byb2R1Y3QnLFxuICAgIGNvbW1vbk5hbWUgPSAnYXBwLmNvbXBhbnkuY29tJyxcbiAgICBlbWFpbEFkZHJlc3MgPSAnY29udGFjdEBjb21wYW55LmNvbScsXG4gIH0gPSBnZXRDZXJ0Q29uZmlnKCk7XG4gIGNvbnN0IGhvc3RuYW1lID0gb3MuaG9zdG5hbWUoKTtcbiAgYnVpbGRMb2coYGhvc3RuYW1lOiAke2hvc3RuYW1lfWApO1xuICBjb25zdCBpcEFkZHJlc3NlcyA9IGdldElwQWRkcmVzc2VzKCk7XG4gIGJ1aWxkTG9nKGBpcCBhZGRyZXNzZXM6ICR7SlNPTi5zdHJpbmdpZnkoaXBBZGRyZXNzZXMpfWApO1xuICBjb25zdCBpZmNvbmZpZyA9IGF3YWl0IHJwLmdldCgnaHR0cHM6Ly9pZmNvbmZpZy5jbycsIHsganNvbjogdHJ1ZSB9KTtcbiAgY29uc3QgZXh0ZXJuYWxJcDQgPSBpZmNvbmZpZy5pcDtcbiAgYnVpbGRMb2coYGV4dGVybmFsIGlwdjQ6ICR7ZXh0ZXJuYWxJcDR9YCk7XG4gIGNvbnN0IGRuc05hbWUgPSBpZmNvbmZpZy5ob3N0bmFtZTtcbiAgYnVpbGRMb2coYGRuc05hbWU6ICR7ZG5zTmFtZX1gKTtcblxuICBhd2FpdCBmcy5lbnN1cmVEaXIodGFyZ2V0RGlyKTtcbiAgY29uc3Qga2V5RmlsZSA9IHBhdGgucmVzb2x2ZSh0YXJnZXREaXIsICdzZXJ2ZXIua2V5Jyk7XG4gIGNvbnN0IGNzckZpbGUgPSBwYXRoLnJlc29sdmUodGFyZ2V0RGlyLCAnc2VydmVyLmNzcicpO1xuICBjb25zdCBjcnRGaWxlID0gcGF0aC5yZXNvbHZlKHRhcmdldERpciwgJ3NlcnZlci5jcnQnKTtcbiAgY29uc3QgY29uZlRlbXBsYXRlRmlsZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdjZXJ0LmNvbmYnKTtcbiAgY29uc3QgY29uZkZpbGUgPSBwYXRoLnJlc29sdmUodGFyZ2V0RGlyLCAnY2VydC5jb25mLmdlbmVyYXRlZCcpO1xuICBjb25zdCBjb25mVGVtcGxhdGUgPSBhd2FpdCBmcy5yZWFkRmlsZShjb25mVGVtcGxhdGVGaWxlLCAndXRmOCcpO1xuICBhd2FpdCBmcy53cml0ZUZpbGUoXG4gICAgY29uZkZpbGUsXG4gICAgY29uZlRlbXBsYXRlXG4gICAgICAucmVwbGFjZSgne3tjb3VudHJ5TmFtZX19JywgY291bnRyeU5hbWUpXG4gICAgICAucmVwbGFjZSgne3tzdGF0ZU9yUHJvdmluY2VOYW1lfX0nLCBzdGF0ZU9yUHJvdmluY2VOYW1lKVxuICAgICAgLnJlcGxhY2UoJ3t7bG9jYWxpdHlOYW1lfX0nLCBsb2NhbGl0eU5hbWUpXG4gICAgICAucmVwbGFjZSgne3tvcmdhbml6YXRpb25OYW1lfX0nLCBvcmdhbml6YXRpb25OYW1lKVxuICAgICAgLnJlcGxhY2UoJ3t7b3JnYW5pemF0aW9uYWxVbml0TmFtZX19Jywgb3JnYW5pemF0aW9uYWxVbml0TmFtZSlcbiAgICAgIC5yZXBsYWNlKCd7e2NvbW1vbk5hbWV9fScsIGNvbW1vbk5hbWUpXG4gICAgICAucmVwbGFjZSgne3tlbWFpbEFkZHJlc3N9fScsIGVtYWlsQWRkcmVzcylcbiAgICAgIC5yZXBsYWNlKFxuICAgICAgICAne3tTQU5fSVB9fScsXG4gICAgICAgIGlwQWRkcmVzc2VzLnJlZHVjZSgoYWNjLCBuZXh0KSA9PiBgJHthY2N9LElQOiR7bmV4dH1gLCAnJyksXG4gICAgICApXG4gICAgICAucmVwbGFjZSgne3tTQU5fRE5TfX0nLCBgLEROUzoke2hvc3RuYW1lfSxETlM6JHtkbnNOYW1lfWApLFxuICAgICd1dGY4JyxcbiAgKTtcblxuICBidWlsZExvZygnZ2VuZXJhdGluZyBrZXkgZmlsZS4uLicpO1xuICBhd2FpdCBzcGF3bihcbiAgICAnb3BlbnNzbCcsXG4gICAgW1xuICAgICAgJ2dlbnBrZXknLFxuICAgICAgJy1hbGdvcml0aG0nLFxuICAgICAgJ1JTQScsXG4gICAgICAnLXBrZXlvcHQnLFxuICAgICAgJ3JzYV9rZXlnZW5fYml0czoyMDQ4JyxcbiAgICAgICctb3V0JyxcbiAgICAgIGtleUZpbGUsXG4gICAgXSxcbiAgICB7IHBpcGVPdXRwdXQ6IHRydWUgfSxcbiAgKTtcbiAgYnVpbGRMb2coJ2dlbmVyYXRpbmcgY3NyIGZpbGUuLi4nKTtcbiAgYXdhaXQgc3Bhd24oXG4gICAgJ29wZW5zc2wnLFxuICAgIFtcbiAgICAgICdyZXEnLFxuICAgICAgJy1uZXcnLFxuICAgICAgJy1rZXknLFxuICAgICAga2V5RmlsZSxcbiAgICAgICctb3V0JyxcbiAgICAgIGNzckZpbGUsXG4gICAgICAnLXN1YmonLFxuICAgICAgYC9DPSR7Y291bnRyeU5hbWV9L1NUPSR7c3RhdGVPclByb3ZpbmNlTmFtZX0vTD0ke2xvY2FsaXR5TmFtZX0vTz0ke29yZ2FuaXphdGlvbk5hbWV9L09VPSR7b3JnYW5pemF0aW9uYWxVbml0TmFtZX0vQ049JHtjb21tb25OYW1lfS9DTj0ke2V4dGVybmFsSXA0fS9DTj0ke2hvc3RuYW1lfS9DTj0ke2Ruc05hbWV9JHtpcEFkZHJlc3Nlcy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIG5leHQpID0+IGAke2FjY30vQ049JHtuZXh0fWAsXG4gICAgICApfS9DTj1sb2NhbGhvc3RgLFxuICAgICAgJy1jb25maWcnLFxuICAgICAgY29uZkZpbGUsXG4gICAgXSxcbiAgICB7IHBpcGVPdXRwdXQ6IHRydWUgfSxcbiAgKTtcbiAgYnVpbGRMb2coJ2dlbmVyYXRpbmcgY2VydC4uLicpO1xuICBhd2FpdCBzcGF3bihcbiAgICAnb3BlbnNzbCcsXG4gICAgW1xuICAgICAgJ3g1MDknLFxuICAgICAgJy1yZXEnLFxuICAgICAgJy1kYXlzJyxcbiAgICAgICczNjUnLFxuICAgICAgJy1pbicsXG4gICAgICBjc3JGaWxlLFxuICAgICAgJy1zaWdua2V5JyxcbiAgICAgIGtleUZpbGUsXG4gICAgICAnLW91dCcsXG4gICAgICBjcnRGaWxlLFxuICAgICAgJy1leHRmaWxlJyxcbiAgICAgIGNvbmZGaWxlLFxuICAgICAgJy1leHRlbnNpb25zJyxcbiAgICAgICd2M19yZXEnLFxuICAgIF0sXG4gICAgeyBwaXBlT3V0cHV0OiB0cnVlIH0sXG4gICk7XG59XG4iXX0=
|
package/cert.js.flow
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
import os from 'os';
|
|
3
|
-
import rp from 'request-promise-native';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import fs from 'fs-extra';
|
|
6
|
-
import { buildLog } from './run';
|
|
7
|
-
import { readDir } from './fs';
|
|
8
|
-
import { spawn } from './cp';
|
|
9
|
-
import { getCfg } from './pkg';
|
|
10
|
-
|
|
11
|
-
export type CertConfig = {
|
|
12
|
-
countryName?: string,
|
|
13
|
-
stateOrProvinceName?: string,
|
|
14
|
-
localityName?: string,
|
|
15
|
-
organizationName?: string,
|
|
16
|
-
organizationalUnitName?: string,
|
|
17
|
-
commonName?: string,
|
|
18
|
-
emailAddress?: string,
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export function getCertConfig(): CertConfig {
|
|
22
|
-
return getCfg().cert || {};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function getIpAddresses(): string[] {
|
|
26
|
-
const iFaces = os.networkInterfaces();
|
|
27
|
-
return Object.keys(iFaces).reduce(
|
|
28
|
-
(prev, ifName) => [
|
|
29
|
-
...prev,
|
|
30
|
-
...iFaces[ifName].map((iFace) => iFace.address),
|
|
31
|
-
],
|
|
32
|
-
[],
|
|
33
|
-
);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Generate a self-signed certificate (if it doesn't exist)
|
|
37
|
-
export async function generateCert(
|
|
38
|
-
targetDir: string,
|
|
39
|
-
force: boolean = process.argv.includes('--force-generateCert'),
|
|
40
|
-
) {
|
|
41
|
-
if (process.argv.includes('--no-generateCert')) {
|
|
42
|
-
buildLog('Skipping due to --no-generateCert');
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
buildLog(`scanning ${targetDir} for certificates...`);
|
|
46
|
-
if (
|
|
47
|
-
!force &&
|
|
48
|
-
(await readDir(`${targetDir}/server.@(crt|key)`)).length === 2
|
|
49
|
-
) {
|
|
50
|
-
buildLog('Skipping certificate generation: certificate already exists');
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
buildLog('Generating self-signed certificate...');
|
|
54
|
-
const {
|
|
55
|
-
countryName = 'US',
|
|
56
|
-
stateOrProvinceName = 'Pennsylvania',
|
|
57
|
-
localityName = 'SomeCity',
|
|
58
|
-
organizationName = 'Company',
|
|
59
|
-
organizationalUnitName = 'Product',
|
|
60
|
-
commonName = 'app.company.com',
|
|
61
|
-
emailAddress = 'contact@company.com',
|
|
62
|
-
} = getCertConfig();
|
|
63
|
-
const hostname = os.hostname();
|
|
64
|
-
buildLog(`hostname: ${hostname}`);
|
|
65
|
-
const ipAddresses = getIpAddresses();
|
|
66
|
-
buildLog(`ip addresses: ${JSON.stringify(ipAddresses)}`);
|
|
67
|
-
const ifconfig = await rp.get('https://ifconfig.co', { json: true });
|
|
68
|
-
const externalIp4 = ifconfig.ip;
|
|
69
|
-
buildLog(`external ipv4: ${externalIp4}`);
|
|
70
|
-
const dnsName = ifconfig.hostname;
|
|
71
|
-
buildLog(`dnsName: ${dnsName}`);
|
|
72
|
-
|
|
73
|
-
await fs.ensureDir(targetDir);
|
|
74
|
-
const keyFile = path.resolve(targetDir, 'server.key');
|
|
75
|
-
const csrFile = path.resolve(targetDir, 'server.csr');
|
|
76
|
-
const crtFile = path.resolve(targetDir, 'server.crt');
|
|
77
|
-
const confTemplateFile = path.resolve(__dirname, 'cert.conf');
|
|
78
|
-
const confFile = path.resolve(targetDir, 'cert.conf.generated');
|
|
79
|
-
const confTemplate = await fs.readFile(confTemplateFile, 'utf8');
|
|
80
|
-
await fs.writeFile(
|
|
81
|
-
confFile,
|
|
82
|
-
confTemplate
|
|
83
|
-
.replace('{{countryName}}', countryName)
|
|
84
|
-
.replace('{{stateOrProvinceName}}', stateOrProvinceName)
|
|
85
|
-
.replace('{{localityName}}', localityName)
|
|
86
|
-
.replace('{{organizationName}}', organizationName)
|
|
87
|
-
.replace('{{organizationalUnitName}}', organizationalUnitName)
|
|
88
|
-
.replace('{{commonName}}', commonName)
|
|
89
|
-
.replace('{{emailAddress}}', emailAddress)
|
|
90
|
-
.replace(
|
|
91
|
-
'{{SAN_IP}}',
|
|
92
|
-
ipAddresses.reduce((acc, next) => `${acc},IP:${next}`, ''),
|
|
93
|
-
)
|
|
94
|
-
.replace('{{SAN_DNS}}', `,DNS:${hostname},DNS:${dnsName}`),
|
|
95
|
-
'utf8',
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
buildLog('generating key file...');
|
|
99
|
-
await spawn(
|
|
100
|
-
'openssl',
|
|
101
|
-
[
|
|
102
|
-
'genpkey',
|
|
103
|
-
'-algorithm',
|
|
104
|
-
'RSA',
|
|
105
|
-
'-pkeyopt',
|
|
106
|
-
'rsa_keygen_bits:2048',
|
|
107
|
-
'-out',
|
|
108
|
-
keyFile,
|
|
109
|
-
],
|
|
110
|
-
{ pipeOutput: true },
|
|
111
|
-
);
|
|
112
|
-
buildLog('generating csr file...');
|
|
113
|
-
await spawn(
|
|
114
|
-
'openssl',
|
|
115
|
-
[
|
|
116
|
-
'req',
|
|
117
|
-
'-new',
|
|
118
|
-
'-key',
|
|
119
|
-
keyFile,
|
|
120
|
-
'-out',
|
|
121
|
-
csrFile,
|
|
122
|
-
'-subj',
|
|
123
|
-
`/C=${countryName}/ST=${stateOrProvinceName}/L=${localityName}/O=${organizationName}/OU=${organizationalUnitName}/CN=${commonName}/CN=${externalIp4}/CN=${hostname}/CN=${dnsName}${ipAddresses.reduce(
|
|
124
|
-
(acc, next) => `${acc}/CN=${next}`,
|
|
125
|
-
)}/CN=localhost`,
|
|
126
|
-
'-config',
|
|
127
|
-
confFile,
|
|
128
|
-
],
|
|
129
|
-
{ pipeOutput: true },
|
|
130
|
-
);
|
|
131
|
-
buildLog('generating cert...');
|
|
132
|
-
await spawn(
|
|
133
|
-
'openssl',
|
|
134
|
-
[
|
|
135
|
-
'x509',
|
|
136
|
-
'-req',
|
|
137
|
-
'-days',
|
|
138
|
-
'365',
|
|
139
|
-
'-in',
|
|
140
|
-
csrFile,
|
|
141
|
-
'-signkey',
|
|
142
|
-
keyFile,
|
|
143
|
-
'-out',
|
|
144
|
-
crtFile,
|
|
145
|
-
'-extfile',
|
|
146
|
-
confFile,
|
|
147
|
-
'-extensions',
|
|
148
|
-
'v3_req',
|
|
149
|
-
],
|
|
150
|
-
{ pipeOutput: true },
|
|
151
|
-
);
|
|
152
|
-
}
|
package/clean.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.clean = clean;
|
|
2
|
-
var _fs = require("./fs");
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Cleans up the build output directories.
|
|
6
|
-
*/
|
|
7
|
-
async function clean(
|
|
8
|
-
globs = ['dist/*', 'out/*', 'build/*'])
|
|
9
|
-
{
|
|
10
|
-
await Promise.all(
|
|
11
|
-
globs.map((glob) =>
|
|
12
|
-
(0, _fs.cleanDir)(glob, {
|
|
13
|
-
nosort: true,
|
|
14
|
-
dot: true,
|
|
15
|
-
ignore: ['.git', '.hg'] })));
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGVhbi5qcyJdLCJuYW1lcyI6WyJjbGVhbiIsImdsb2JzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImdsb2IiLCJub3NvcnQiLCJkb3QiLCJpZ25vcmUiXSwibWFwcGluZ3MiOiI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxlQUFlQSxLQUFmO0FBQ0xDLEtBQWUsR0FBRyxDQUFDLFFBQUQsRUFBVyxPQUFYLEVBQW9CLFNBQXBCLENBRGI7QUFFVTtBQUNmLFFBQU1DLE9BQU8sQ0FBQ0MsR0FBUjtBQUNKRixFQUFBQSxLQUFLLENBQUNHLEdBQU4sQ0FBVSxDQUFDQyxJQUFEO0FBQ1Isb0JBQVNBLElBQVQsRUFBZTtBQUNiQyxJQUFBQSxNQUFNLEVBQUUsSUFESztBQUViQyxJQUFBQSxHQUFHLEVBQUUsSUFGUTtBQUdiQyxJQUFBQSxNQUFNLEVBQUUsQ0FBQyxNQUFELEVBQVMsS0FBVCxDQUhLLEVBQWYsQ0FERixDQURJLENBQU47Ozs7QUFTRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5pbXBvcnQgeyBjbGVhbkRpciB9IGZyb20gJy4vZnMnO1xuXG4vKipcbiAqIENsZWFucyB1cCB0aGUgYnVpbGQgb3V0cHV0IGRpcmVjdG9yaWVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xlYW4oXG4gIGdsb2JzOiBzdHJpbmdbXSA9IFsnZGlzdC8qJywgJ291dC8qJywgJ2J1aWxkLyonXSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBnbG9icy5tYXAoKGdsb2IpID0+XG4gICAgICBjbGVhbkRpcihnbG9iLCB7XG4gICAgICAgIG5vc29ydDogdHJ1ZSxcbiAgICAgICAgZG90OiB0cnVlLFxuICAgICAgICBpZ25vcmU6IFsnLmdpdCcsICcuaGcnXSxcbiAgICAgIH0pLFxuICAgICksXG4gICk7XG59XG4iXX0=
|
package/clean.js.flow
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
import { cleanDir } from './fs';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Cleans up the build output directories.
|
|
6
|
-
*/
|
|
7
|
-
export async function clean(
|
|
8
|
-
globs: string[] = ['dist/*', 'out/*', 'build/*'],
|
|
9
|
-
): Promise<void> {
|
|
10
|
-
await Promise.all(
|
|
11
|
-
globs.map((glob) =>
|
|
12
|
-
cleanDir(glob, {
|
|
13
|
-
nosort: true,
|
|
14
|
-
dot: true,
|
|
15
|
-
ignore: ['.git', '.hg'],
|
|
16
|
-
}),
|
|
17
|
-
),
|
|
18
|
-
);
|
|
19
|
-
}
|
package/copy.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.copySrc = copySrc;
|
|
2
|
-
var _path = _interopRequireDefault(require("path"));
|
|
3
|
-
var _chokidar = _interopRequireDefault(require("chokidar"));
|
|
4
|
-
var _fs = require("./fs");
|
|
5
|
-
var _cp = require("./cp");
|
|
6
|
-
var _run = require("./run");
|
|
7
|
-
var _inlineResources = require("./inline-resources");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
|
|
8
|
-
|
|
9
|
-
let timer = null;
|
|
10
|
-
async function throttledCallback(cbFn) {
|
|
11
|
-
if (!cbFn || typeof cbFn !== 'function') {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
if (timer) {
|
|
15
|
-
clearTimeout(timer);
|
|
16
|
-
timer = null;
|
|
17
|
-
}
|
|
18
|
-
timer = setTimeout(() => {
|
|
19
|
-
timer = null;
|
|
20
|
-
cbFn();
|
|
21
|
-
}, 200);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
async function copySrc({
|
|
32
|
-
from,
|
|
33
|
-
to,
|
|
34
|
-
watch = process.argv.includes('--watch'),
|
|
35
|
-
cbFn } =
|
|
36
|
-
{}) {
|
|
37
|
-
await (0, _fs.copyDir)(from, to);
|
|
38
|
-
if (cbFn) await cbFn();
|
|
39
|
-
if (watch) {
|
|
40
|
-
const watcher = _chokidar.default.watch([_path.default.join(from, '/**/*')], {
|
|
41
|
-
ignoreInitial: true });
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
watcher.on('all', async (event, filePath) => {
|
|
45
|
-
const start = new Date();
|
|
46
|
-
const src = _path.default.relative(from, filePath);
|
|
47
|
-
const dest = _path.default.join(to, src);
|
|
48
|
-
switch (event) {
|
|
49
|
-
case 'add':
|
|
50
|
-
case 'change':
|
|
51
|
-
await (0, _fs.makeDir)(_path.default.dirname(dest));
|
|
52
|
-
await (0, _fs.copyFile)(filePath, dest);
|
|
53
|
-
break;
|
|
54
|
-
case 'unlink':
|
|
55
|
-
case 'unlinkDir':
|
|
56
|
-
(0, _fs.cleanDir)(dest, { nosort: true, dot: true });
|
|
57
|
-
break;
|
|
58
|
-
default:
|
|
59
|
-
return;}
|
|
60
|
-
|
|
61
|
-
// Check dependencies
|
|
62
|
-
if (_inlineResources.dependencies[dest]) {
|
|
63
|
-
await Promise.all(
|
|
64
|
-
_inlineResources.dependencies[dest].map(async (dep) => {
|
|
65
|
-
const toCopy = _path.default.join(from, _path.default.relative(to, dep));
|
|
66
|
-
await (0, _fs.copyFile)(toCopy, dep);
|
|
67
|
-
(0, _run.buildLog)(`copied '${dep}' due to changed dependency`);
|
|
68
|
-
}));
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
const end = new Date();
|
|
72
|
-
const time = end.getTime() - start.getTime();
|
|
73
|
-
(0, _run.buildLog)(`${event} '${dest}' after ${time} ms`, end);
|
|
74
|
-
throttledCallback(cbFn);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
(0, _cp.onKillSignal)(() => watcher.close());
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3B5LmpzIl0sIm5hbWVzIjpbInRpbWVyIiwidGhyb3R0bGVkQ2FsbGJhY2siLCJjYkZuIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImNvcHlTcmMiLCJmcm9tIiwidG8iLCJ3YXRjaCIsInByb2Nlc3MiLCJhcmd2IiwiaW5jbHVkZXMiLCJ3YXRjaGVyIiwiY2hva2lkYXIiLCJwYXRoIiwiam9pbiIsImlnbm9yZUluaXRpYWwiLCJvbiIsImV2ZW50IiwiZmlsZVBhdGgiLCJzdGFydCIsIkRhdGUiLCJzcmMiLCJyZWxhdGl2ZSIsImRlc3QiLCJkaXJuYW1lIiwibm9zb3J0IiwiZG90IiwiZGVwZW5kZW5jaWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImRlcCIsInRvQ29weSIsImVuZCIsInRpbWUiLCJnZXRUaW1lIiwiY2xvc2UiXSwibWFwcGluZ3MiOiI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUQ7O0FBRUEsSUFBSUEsS0FBSyxHQUFHLElBQVo7QUFDQSxlQUFlQyxpQkFBZixDQUFpQ0MsSUFBakMsRUFBdUM7QUFDckMsTUFBSSxDQUFDQSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixVQUE3QixFQUF5QztBQUN2QztBQUNEO0FBQ0QsTUFBSUYsS0FBSixFQUFXO0FBQ1RHLElBQUFBLFlBQVksQ0FBQ0gsS0FBRCxDQUFaO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxJQUFSO0FBQ0Q7QUFDREEsRUFBQUEsS0FBSyxHQUFHSSxVQUFVLENBQUMsTUFBTTtBQUN2QkosSUFBQUEsS0FBSyxHQUFHLElBQVI7QUFDQUUsSUFBQUEsSUFBSTtBQUNMLEdBSGlCLEVBR2YsR0FIZSxDQUFsQjtBQUlEOzs7Ozs7Ozs7QUFTTSxlQUFlRyxPQUFmLENBQXVCO0FBQzVCQyxFQUFBQSxJQUQ0QjtBQUU1QkMsRUFBQUEsRUFGNEI7QUFHNUJDLEVBQUFBLEtBQUssR0FBR0MsT0FBTyxDQUFDQyxJQUFSLENBQWFDLFFBQWIsQ0FBc0IsU0FBdEIsQ0FIb0I7QUFJNUJULEVBQUFBLElBSjRCO0FBS1YsRUFMYixFQUtnQztBQUNyQyxRQUFNLGlCQUFRSSxJQUFSLEVBQWNDLEVBQWQsQ0FBTjtBQUNBLE1BQUlMLElBQUosRUFBVSxNQUFNQSxJQUFJLEVBQVY7QUFDVixNQUFJTSxLQUFKLEVBQVc7QUFDVCxVQUFNSSxPQUFPLEdBQUdDLGtCQUFTTCxLQUFULENBQWUsQ0FBQ00sY0FBS0MsSUFBTCxDQUFVVCxJQUFWLEVBQWdCLE9BQWhCLENBQUQsQ0FBZixFQUEyQztBQUN6RFUsTUFBQUEsYUFBYSxFQUFFLElBRDBDLEVBQTNDLENBQWhCOzs7QUFJQUosSUFBQUEsT0FBTyxDQUFDSyxFQUFSLENBQVcsS0FBWCxFQUFrQixPQUFPQyxLQUFQLEVBQWNDLFFBQWQsS0FBMkI7QUFDM0MsWUFBTUMsS0FBSyxHQUFHLElBQUlDLElBQUosRUFBZDtBQUNBLFlBQU1DLEdBQUcsR0FBR1IsY0FBS1MsUUFBTCxDQUFjakIsSUFBZCxFQUFvQmEsUUFBcEIsQ0FBWjtBQUNBLFlBQU1LLElBQUksR0FBR1YsY0FBS0MsSUFBTCxDQUFVUixFQUFWLEVBQWNlLEdBQWQsQ0FBYjtBQUNBLGNBQVFKLEtBQVI7QUFDRSxhQUFLLEtBQUw7QUFDQSxhQUFLLFFBQUw7QUFDRSxnQkFBTSxpQkFBUUosY0FBS1csT0FBTCxDQUFhRCxJQUFiLENBQVIsQ0FBTjtBQUNBLGdCQUFNLGtCQUFTTCxRQUFULEVBQW1CSyxJQUFuQixDQUFOO0FBQ0E7QUFDRixhQUFLLFFBQUw7QUFDQSxhQUFLLFdBQUw7QUFDRSw0QkFBU0EsSUFBVCxFQUFlLEVBQUVFLE1BQU0sRUFBRSxJQUFWLEVBQWdCQyxHQUFHLEVBQUUsSUFBckIsRUFBZjtBQUNBO0FBQ0Y7QUFDRSxpQkFYSjs7QUFhQTtBQUNBLFVBQUlDLDhCQUFhSixJQUFiLENBQUosRUFBd0I7QUFDdEIsY0FBTUssT0FBTyxDQUFDQyxHQUFSO0FBQ0pGLHNDQUFhSixJQUFiLEVBQW1CTyxHQUFuQixDQUF1QixPQUFPQyxHQUFQLEtBQWU7QUFDcEMsZ0JBQU1DLE1BQU0sR0FBR25CLGNBQUtDLElBQUwsQ0FBVVQsSUFBVixFQUFnQlEsY0FBS1MsUUFBTCxDQUFjaEIsRUFBZCxFQUFrQnlCLEdBQWxCLENBQWhCLENBQWY7QUFDQSxnQkFBTSxrQkFBU0MsTUFBVCxFQUFpQkQsR0FBakIsQ0FBTjtBQUNBLDZCQUFVLFdBQVVBLEdBQUksNkJBQXhCO0FBQ0QsU0FKRCxDQURJLENBQU47O0FBT0Q7QUFDRCxZQUFNRSxHQUFHLEdBQUcsSUFBSWIsSUFBSixFQUFaO0FBQ0EsWUFBTWMsSUFBSSxHQUFHRCxHQUFHLENBQUNFLE9BQUosS0FBZ0JoQixLQUFLLENBQUNnQixPQUFOLEVBQTdCO0FBQ0EseUJBQVUsR0FBRWxCLEtBQU0sS0FBSU0sSUFBSyxXQUFVVyxJQUFLLEtBQTFDLEVBQWdERCxHQUFoRDtBQUNBakMsTUFBQUEsaUJBQWlCLENBQUNDLElBQUQsQ0FBakI7QUFDRCxLQS9CRDs7QUFpQ0EsMEJBQWEsTUFBTVUsT0FBTyxDQUFDeUIsS0FBUixFQUFuQjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgY2hva2lkYXIgZnJvbSAnY2hva2lkYXInO1xuaW1wb3J0IHsgY29weUZpbGUsIG1ha2VEaXIsIGNvcHlEaXIsIGNsZWFuRGlyIH0gZnJvbSAnLi9mcyc7XG5pbXBvcnQgeyBvbktpbGxTaWduYWwgfSBmcm9tICcuL2NwJztcbmltcG9ydCB7IGJ1aWxkTG9nIH0gZnJvbSAnLi9ydW4nO1xuaW1wb3J0IHsgZGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9pbmxpbmUtcmVzb3VyY2VzJztcblxubGV0IHRpbWVyID0gbnVsbDtcbmFzeW5jIGZ1bmN0aW9uIHRocm90dGxlZENhbGxiYWNrKGNiRm4pIHtcbiAgaWYgKCFjYkZuIHx8IHR5cGVvZiBjYkZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0aW1lcikge1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgdGltZXIgPSBudWxsO1xuICB9XG4gIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgdGltZXIgPSBudWxsO1xuICAgIGNiRm4oKTtcbiAgfSwgMjAwKTtcbn1cblxuZXhwb3J0IHR5cGUgQ29weVNyY09wdGlvbnMgPSB7XG4gIGZyb206IHN0cmluZyxcbiAgdG86IHN0cmluZyxcbiAgd2F0Y2g/OiBib29sZWFuLFxuICBjYkZuPzogKCkgPT4gUHJvbWlzZTxhbnk+IHwgdm9pZCxcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5U3JjKHtcbiAgZnJvbSxcbiAgdG8sXG4gIHdhdGNoID0gcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKCctLXdhdGNoJyksXG4gIGNiRm4sXG59OiBDb3B5U3JjT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGNvcHlEaXIoZnJvbSwgdG8pO1xuICBpZiAoY2JGbikgYXdhaXQgY2JGbigpO1xuICBpZiAod2F0Y2gpIHtcbiAgICBjb25zdCB3YXRjaGVyID0gY2hva2lkYXIud2F0Y2goW3BhdGguam9pbihmcm9tLCAnLyoqLyonKV0sIHtcbiAgICAgIGlnbm9yZUluaXRpYWw6IHRydWUsXG4gICAgfSk7XG5cbiAgICB3YXRjaGVyLm9uKCdhbGwnLCBhc3luYyAoZXZlbnQsIGZpbGVQYXRoKSA9PiB7XG4gICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBzcmMgPSBwYXRoLnJlbGF0aXZlKGZyb20sIGZpbGVQYXRoKTtcbiAgICAgIGNvbnN0IGRlc3QgPSBwYXRoLmpvaW4odG8sIHNyYyk7XG4gICAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgIGNhc2UgJ2NoYW5nZSc6XG4gICAgICAgICAgYXdhaXQgbWFrZURpcihwYXRoLmRpcm5hbWUoZGVzdCkpO1xuICAgICAgICAgIGF3YWl0IGNvcHlGaWxlKGZpbGVQYXRoLCBkZXN0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndW5saW5rJzpcbiAgICAgICAgY2FzZSAndW5saW5rRGlyJzpcbiAgICAgICAgICBjbGVhbkRpcihkZXN0LCB7IG5vc29ydDogdHJ1ZSwgZG90OiB0cnVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIGRlcGVuZGVuY2llc1xuICAgICAgaWYgKGRlcGVuZGVuY2llc1tkZXN0XSkge1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICBkZXBlbmRlbmNpZXNbZGVzdF0ubWFwKGFzeW5jIChkZXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRvQ29weSA9IHBhdGguam9pbihmcm9tLCBwYXRoLnJlbGF0aXZlKHRvLCBkZXApKTtcbiAgICAgICAgICAgIGF3YWl0IGNvcHlGaWxlKHRvQ29weSwgZGVwKTtcbiAgICAgICAgICAgIGJ1aWxkTG9nKGBjb3BpZWQgJyR7ZGVwfScgZHVlIHRvIGNoYW5nZWQgZGVwZW5kZW5jeWApO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgZW5kID0gbmV3IERhdGUoKTtcbiAgICAgIGNvbnN0IHRpbWUgPSBlbmQuZ2V0VGltZSgpIC0gc3RhcnQuZ2V0VGltZSgpO1xuICAgICAgYnVpbGRMb2coYCR7ZXZlbnR9ICcke2Rlc3R9JyBhZnRlciAke3RpbWV9IG1zYCwgZW5kKTtcbiAgICAgIHRocm90dGxlZENhbGxiYWNrKGNiRm4pO1xuICAgIH0pO1xuXG4gICAgb25LaWxsU2lnbmFsKCgpID0+IHdhdGNoZXIuY2xvc2UoKSk7XG4gIH1cbn1cbiJdfQ==
|
package/copy.js.flow
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import chokidar from 'chokidar';
|
|
4
|
-
import { copyFile, makeDir, copyDir, cleanDir } from './fs';
|
|
5
|
-
import { onKillSignal } from './cp';
|
|
6
|
-
import { buildLog } from './run';
|
|
7
|
-
import { dependencies } from './inline-resources';
|
|
8
|
-
|
|
9
|
-
let timer = null;
|
|
10
|
-
async function throttledCallback(cbFn) {
|
|
11
|
-
if (!cbFn || typeof cbFn !== 'function') {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
if (timer) {
|
|
15
|
-
clearTimeout(timer);
|
|
16
|
-
timer = null;
|
|
17
|
-
}
|
|
18
|
-
timer = setTimeout(() => {
|
|
19
|
-
timer = null;
|
|
20
|
-
cbFn();
|
|
21
|
-
}, 200);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export type CopySrcOptions = {
|
|
25
|
-
from: string,
|
|
26
|
-
to: string,
|
|
27
|
-
watch?: boolean,
|
|
28
|
-
cbFn?: () => Promise<any> | void,
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export async function copySrc({
|
|
32
|
-
from,
|
|
33
|
-
to,
|
|
34
|
-
watch = process.argv.includes('--watch'),
|
|
35
|
-
cbFn,
|
|
36
|
-
}: CopySrcOptions = {}): Promise<void> {
|
|
37
|
-
await copyDir(from, to);
|
|
38
|
-
if (cbFn) await cbFn();
|
|
39
|
-
if (watch) {
|
|
40
|
-
const watcher = chokidar.watch([path.join(from, '/**/*')], {
|
|
41
|
-
ignoreInitial: true,
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
watcher.on('all', async (event, filePath) => {
|
|
45
|
-
const start = new Date();
|
|
46
|
-
const src = path.relative(from, filePath);
|
|
47
|
-
const dest = path.join(to, src);
|
|
48
|
-
switch (event) {
|
|
49
|
-
case 'add':
|
|
50
|
-
case 'change':
|
|
51
|
-
await makeDir(path.dirname(dest));
|
|
52
|
-
await copyFile(filePath, dest);
|
|
53
|
-
break;
|
|
54
|
-
case 'unlink':
|
|
55
|
-
case 'unlinkDir':
|
|
56
|
-
cleanDir(dest, { nosort: true, dot: true });
|
|
57
|
-
break;
|
|
58
|
-
default:
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
// Check dependencies
|
|
62
|
-
if (dependencies[dest]) {
|
|
63
|
-
await Promise.all(
|
|
64
|
-
dependencies[dest].map(async (dep) => {
|
|
65
|
-
const toCopy = path.join(from, path.relative(to, dep));
|
|
66
|
-
await copyFile(toCopy, dep);
|
|
67
|
-
buildLog(`copied '${dep}' due to changed dependency`);
|
|
68
|
-
}),
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
const end = new Date();
|
|
72
|
-
const time = end.getTime() - start.getTime();
|
|
73
|
-
buildLog(`${event} '${dest}' after ${time} ms`, end);
|
|
74
|
-
throttledCallback(cbFn);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
onKillSignal(() => watcher.close());
|
|
78
|
-
}
|
|
79
|
-
}
|