innetjs 2.1.5 → 2.2.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/bin/innet +338 -183
- package/bin/innet.d.ts +2 -0
- package/constants.d.ts +1 -1
- package/index.d.ts +25 -14
- package/index.es6.js +289 -154
- package/index.js +312 -171
- package/package.json +10 -2
package/index.js
CHANGED
|
@@ -1,63 +1,70 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var http = require('http');
|
|
6
|
-
var address = require('address');
|
|
7
|
-
var https = require('https');
|
|
8
|
-
var util = require('util');
|
|
9
|
-
var axios = require('axios');
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
10
5
|
var logger = require('@cantinc/logger');
|
|
11
|
-
var chalk = require('chalk');
|
|
12
|
-
var rollup = require('rollup');
|
|
13
6
|
var commonjs = require('@rollup/plugin-commonjs');
|
|
7
|
+
var eslint = require('@rollup/plugin-eslint');
|
|
8
|
+
var image = require('@rollup/plugin-image');
|
|
9
|
+
var json = require('@rollup/plugin-json');
|
|
14
10
|
var pluginNodeResolve = require('@rollup/plugin-node-resolve');
|
|
15
|
-
var
|
|
16
|
-
var typescript = require('rollup-plugin-typescript2');
|
|
17
|
-
var styles = require('rollup-plugin-styles');
|
|
11
|
+
var address = require('address');
|
|
18
12
|
var autoprefixer = require('autoprefixer');
|
|
13
|
+
var axios = require('axios');
|
|
14
|
+
var chalk = require('chalk');
|
|
15
|
+
var selector = require('cli-select');
|
|
19
16
|
var express = require('express');
|
|
20
|
-
var json = require('@rollup/plugin-json');
|
|
21
|
-
var tmp = require('tmp');
|
|
22
17
|
var proxy = require('express-http-proxy');
|
|
23
|
-
var
|
|
18
|
+
var fs = require('fs-extra');
|
|
19
|
+
var glob = require('glob');
|
|
20
|
+
var http = require('http');
|
|
21
|
+
var https = require('https');
|
|
22
|
+
var linesAndColumns = require('lines-and-columns');
|
|
23
|
+
var path$1 = require('path');
|
|
24
24
|
var prompt = require('prompts');
|
|
25
|
-
var
|
|
25
|
+
var rollup = require('rollup');
|
|
26
26
|
var filesize = require('rollup-plugin-filesize');
|
|
27
|
-
var image = require('@rollup/plugin-image');
|
|
28
|
-
var eslint = require('@rollup/plugin-eslint');
|
|
29
|
-
var polyfill = require('rollup-plugin-polyfill-node');
|
|
30
27
|
var injectEnv = require('rollup-plugin-inject-process-env');
|
|
31
|
-
var
|
|
28
|
+
var jsx = require('rollup-plugin-innet-jsx');
|
|
29
|
+
var externals = require('rollup-plugin-node-externals');
|
|
30
|
+
var polyfill = require('rollup-plugin-polyfill-node');
|
|
31
|
+
var rollupPluginPreserveShebangs = require('rollup-plugin-preserve-shebangs');
|
|
32
|
+
var styles = require('rollup-plugin-styles');
|
|
33
|
+
var rollupPluginTerser = require('rollup-plugin-terser');
|
|
34
|
+
var typescript = require('rollup-plugin-typescript2');
|
|
35
|
+
var tmp = require('tmp');
|
|
36
|
+
var util = require('util');
|
|
32
37
|
var unzipper = require('unzipper');
|
|
33
38
|
|
|
34
39
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
35
40
|
|
|
36
|
-
var path__default = /*#__PURE__*/_interopDefaultLegacy(path$1);
|
|
37
|
-
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
38
|
-
var http__default = /*#__PURE__*/_interopDefaultLegacy(http);
|
|
39
|
-
var address__default = /*#__PURE__*/_interopDefaultLegacy(address);
|
|
40
|
-
var https__default = /*#__PURE__*/_interopDefaultLegacy(https);
|
|
41
|
-
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
42
41
|
var logger__default = /*#__PURE__*/_interopDefaultLegacy(logger);
|
|
43
|
-
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
|
|
44
|
-
var rollup__default = /*#__PURE__*/_interopDefaultLegacy(rollup);
|
|
45
42
|
var commonjs__default = /*#__PURE__*/_interopDefaultLegacy(commonjs);
|
|
46
|
-
var
|
|
47
|
-
var
|
|
43
|
+
var eslint__default = /*#__PURE__*/_interopDefaultLegacy(eslint);
|
|
44
|
+
var image__default = /*#__PURE__*/_interopDefaultLegacy(image);
|
|
45
|
+
var json__default = /*#__PURE__*/_interopDefaultLegacy(json);
|
|
46
|
+
var address__default = /*#__PURE__*/_interopDefaultLegacy(address);
|
|
48
47
|
var autoprefixer__default = /*#__PURE__*/_interopDefaultLegacy(autoprefixer);
|
|
48
|
+
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
49
|
+
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
|
|
50
|
+
var selector__default = /*#__PURE__*/_interopDefaultLegacy(selector);
|
|
49
51
|
var express__default = /*#__PURE__*/_interopDefaultLegacy(express);
|
|
50
|
-
var json__default = /*#__PURE__*/_interopDefaultLegacy(json);
|
|
51
|
-
var tmp__default = /*#__PURE__*/_interopDefaultLegacy(tmp);
|
|
52
52
|
var proxy__default = /*#__PURE__*/_interopDefaultLegacy(proxy);
|
|
53
|
-
var
|
|
53
|
+
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
54
|
+
var glob__default = /*#__PURE__*/_interopDefaultLegacy(glob);
|
|
55
|
+
var http__default = /*#__PURE__*/_interopDefaultLegacy(http);
|
|
56
|
+
var https__default = /*#__PURE__*/_interopDefaultLegacy(https);
|
|
57
|
+
var path__default = /*#__PURE__*/_interopDefaultLegacy(path$1);
|
|
54
58
|
var prompt__default = /*#__PURE__*/_interopDefaultLegacy(prompt);
|
|
55
|
-
var
|
|
59
|
+
var rollup__default = /*#__PURE__*/_interopDefaultLegacy(rollup);
|
|
56
60
|
var filesize__default = /*#__PURE__*/_interopDefaultLegacy(filesize);
|
|
57
|
-
var image__default = /*#__PURE__*/_interopDefaultLegacy(image);
|
|
58
|
-
var eslint__default = /*#__PURE__*/_interopDefaultLegacy(eslint);
|
|
59
|
-
var polyfill__default = /*#__PURE__*/_interopDefaultLegacy(polyfill);
|
|
60
61
|
var injectEnv__default = /*#__PURE__*/_interopDefaultLegacy(injectEnv);
|
|
62
|
+
var jsx__default = /*#__PURE__*/_interopDefaultLegacy(jsx);
|
|
63
|
+
var externals__default = /*#__PURE__*/_interopDefaultLegacy(externals);
|
|
64
|
+
var polyfill__default = /*#__PURE__*/_interopDefaultLegacy(polyfill);
|
|
65
|
+
var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles);
|
|
66
|
+
var typescript__default = /*#__PURE__*/_interopDefaultLegacy(typescript);
|
|
67
|
+
var tmp__default = /*#__PURE__*/_interopDefaultLegacy(tmp);
|
|
61
68
|
|
|
62
69
|
/******************************************************************************
|
|
63
70
|
Copyright (c) Microsoft Corporation.
|
|
@@ -84,6 +91,35 @@ function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
84
91
|
});
|
|
85
92
|
}
|
|
86
93
|
|
|
94
|
+
const lintInclude = [
|
|
95
|
+
'**/*.ts',
|
|
96
|
+
'**/*.tsx',
|
|
97
|
+
'**/*.js',
|
|
98
|
+
'**/*.jsx',
|
|
99
|
+
];
|
|
100
|
+
const stringExcludeDom = [
|
|
101
|
+
'**/*.ts',
|
|
102
|
+
'**/*.tsx',
|
|
103
|
+
'**/*.js',
|
|
104
|
+
'**/*.jsx',
|
|
105
|
+
'**/*.json',
|
|
106
|
+
'**/*.css',
|
|
107
|
+
'**/*.scss',
|
|
108
|
+
'**/*.webp',
|
|
109
|
+
'**/*.gif',
|
|
110
|
+
'**/*.png',
|
|
111
|
+
'**/*.jpeg',
|
|
112
|
+
'**/*.jpg',
|
|
113
|
+
'**/*.svg',
|
|
114
|
+
];
|
|
115
|
+
const stringExcludeNode = [
|
|
116
|
+
'**/*.ts',
|
|
117
|
+
'**/*.tsx',
|
|
118
|
+
'**/*.js',
|
|
119
|
+
'**/*.jsx',
|
|
120
|
+
'**/*.json',
|
|
121
|
+
];
|
|
122
|
+
|
|
87
123
|
const Writer = require('fstream').Writer;
|
|
88
124
|
const path = require('path');
|
|
89
125
|
const stream = require('stream');
|
|
@@ -93,7 +129,7 @@ function Extract(opts, template) {
|
|
|
93
129
|
const reduceCount = 19 + template.length;
|
|
94
130
|
// make sure path is normalized before using it
|
|
95
131
|
opts.path = path.resolve(path.normalize(opts.path));
|
|
96
|
-
// @ts-
|
|
132
|
+
// @ts-expect-error
|
|
97
133
|
const parser = new unzipper.Parse(opts);
|
|
98
134
|
const outStream = new stream.Writable({ objectMode: true });
|
|
99
135
|
outStream._write = function (entry, encoding, cb) {
|
|
@@ -126,35 +162,6 @@ function Extract(opts, template) {
|
|
|
126
162
|
return extract;
|
|
127
163
|
}
|
|
128
164
|
|
|
129
|
-
const lintIncludeDom = [
|
|
130
|
-
'**/*.ts',
|
|
131
|
-
'**/*.tsx',
|
|
132
|
-
'**/*.js',
|
|
133
|
-
'**/*.jsx',
|
|
134
|
-
];
|
|
135
|
-
const stringExcludeDom = [
|
|
136
|
-
'**/*.ts',
|
|
137
|
-
'**/*.tsx',
|
|
138
|
-
'**/*.js',
|
|
139
|
-
'**/*.jsx',
|
|
140
|
-
'**/*.json',
|
|
141
|
-
'**/*.css',
|
|
142
|
-
'**/*.scss',
|
|
143
|
-
'**/*.webp',
|
|
144
|
-
'**/*.gif',
|
|
145
|
-
'**/*.png',
|
|
146
|
-
'**/*.jpeg',
|
|
147
|
-
'**/*.jpg',
|
|
148
|
-
'**/*.svg',
|
|
149
|
-
];
|
|
150
|
-
const stringExcludeNode = [
|
|
151
|
-
'**/*.ts',
|
|
152
|
-
'**/*.tsx',
|
|
153
|
-
'**/*.js',
|
|
154
|
-
'**/*.jsx',
|
|
155
|
-
'**/*.json',
|
|
156
|
-
];
|
|
157
|
-
|
|
158
165
|
function getFile(file) {
|
|
159
166
|
file = path__default["default"].resolve(file);
|
|
160
167
|
if (!fs__default["default"].existsSync(file)) {
|
|
@@ -195,6 +202,8 @@ const { exec, spawn } = require('child_process');
|
|
|
195
202
|
const readline = require('readline');
|
|
196
203
|
const execAsync = util.promisify(exec);
|
|
197
204
|
const copyFiles = util.promisify(fs__default["default"].copy);
|
|
205
|
+
const dotenvConfigOutput = require('dotenv').config();
|
|
206
|
+
require('dotenv-expand').expand(dotenvConfigOutput);
|
|
198
207
|
const REG_CLEAR_TEXT = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
|
|
199
208
|
function normalizeEnv(value) {
|
|
200
209
|
if (value) {
|
|
@@ -207,12 +216,21 @@ const innetEnv = Object.keys(process.env).reduce((result, key) => {
|
|
|
207
216
|
}
|
|
208
217
|
return result;
|
|
209
218
|
}, {});
|
|
219
|
+
const scriptExtensions = ['ts', 'js', 'tsx', 'jsx'];
|
|
220
|
+
const indexExt = scriptExtensions.join(',');
|
|
210
221
|
class InnetJS {
|
|
211
|
-
constructor({ projectFolder = process.env.PROJECT_FOLDER || '', baseUrl = process.env.BASE_URL || '/', publicFolder = process.env.PUBLIC_FOLDER || 'public', buildFolder = process.env.BUILD_FOLDER || 'build', srcFolder = process.env.SRC_FOLDER || 'src', sourcemap = process.env.SOURCEMAP ? process.env.SOURCEMAP === 'true' : false, cssModules = process.env.CSS_MODULES ? process.env.CSS_MODULES === 'true' : true, cssInJs = process.env.CSS_IN_JS ? process.env.CSS_IN_JS === 'true' : true, sslKey = process.env.SSL_KEY || 'localhost.key', sslCrt = process.env.SSL_CRT || 'localhost.crt', proxy = process.env.PROXY || '', port = process.env.PORT ? +process.env.PORT : 3000, api = process.env.API || '/api/?*', } = {}) {
|
|
222
|
+
constructor({ projectFolder = process.env.PROJECT_FOLDER || '', baseUrl = process.env.BASE_URL || '/', publicFolder = process.env.PUBLIC_FOLDER || 'public', releaseFolder = process.env.RELEASE_FOLDER || 'release', buildFolder = process.env.BUILD_FOLDER || 'build', srcFolder = process.env.SRC_FOLDER || 'src', sourcemap = process.env.SOURCEMAP ? process.env.SOURCEMAP === 'true' : false, cssModules = process.env.CSS_MODULES ? process.env.CSS_MODULES === 'true' : true, cssInJs = process.env.CSS_IN_JS ? process.env.CSS_IN_JS === 'true' : true, sslKey = process.env.SSL_KEY || 'localhost.key', sslCrt = process.env.SSL_CRT || 'localhost.crt', proxy = process.env.PROXY || '', port = process.env.PORT ? +process.env.PORT : 3000, api = process.env.API || '/api/?*', } = {}) {
|
|
212
223
|
this.projectFolder = path__default["default"].resolve(projectFolder);
|
|
213
224
|
this.publicFolder = path__default["default"].resolve(publicFolder);
|
|
225
|
+
this.releaseFolder = path__default["default"].resolve(releaseFolder);
|
|
214
226
|
this.buildFolder = path__default["default"].resolve(buildFolder);
|
|
215
227
|
this.srcFolder = path__default["default"].resolve(srcFolder);
|
|
228
|
+
this.licenseFile = path__default["default"].join(projectFolder, 'LICENSE');
|
|
229
|
+
this.licenseReleaseFile = path__default["default"].join(releaseFolder, 'LICENSE');
|
|
230
|
+
this.readmeFile = path__default["default"].join(projectFolder, 'README.md');
|
|
231
|
+
this.readmeReleaseFile = path__default["default"].join(releaseFolder, 'README.md');
|
|
232
|
+
this.declarationFile = path__default["default"].join(srcFolder, 'declaration.d.ts');
|
|
233
|
+
this.declarationReleaseFile = path__default["default"].join(releaseFolder, 'declaration.d.ts');
|
|
216
234
|
this.publicIndexFile = path__default["default"].join(publicFolder, 'index.html');
|
|
217
235
|
this.buildIndexFile = path__default["default"].join(buildFolder, 'index.html');
|
|
218
236
|
this.devBuildFolder = path__default["default"].resolve(projectFolder, 'node_modules', '.cache', 'innetjs', 'build');
|
|
@@ -234,9 +252,9 @@ class InnetJS {
|
|
|
234
252
|
const { data } = yield logger__default["default"].start('Get templates list', () => __awaiter(this, void 0, void 0, function* () { return yield axios__default["default"].get('https://api.github.com/repos/d8corp/innetjs-templates/branches'); }));
|
|
235
253
|
const templates = data.map(({ name }) => name).filter(name => name !== 'main');
|
|
236
254
|
if (!template || !templates.includes(template)) {
|
|
237
|
-
logger__default["default"].log(chalk__default["default"].green(
|
|
255
|
+
logger__default["default"].log(chalk__default["default"].green('Select one of those templates'));
|
|
238
256
|
const { value } = yield selector__default["default"]({
|
|
239
|
-
values: templates
|
|
257
|
+
values: templates,
|
|
240
258
|
});
|
|
241
259
|
template = value;
|
|
242
260
|
readline.moveCursor(process.stdout, 0, -1);
|
|
@@ -249,7 +267,7 @@ class InnetJS {
|
|
|
249
267
|
if (fs__default["default"].existsSync(appPath)) {
|
|
250
268
|
logger__default["default"].log(chalk__default["default"].red(`'${appPath}' already exist, what do you want?`));
|
|
251
269
|
const { id: result, value } = yield selector__default["default"]({
|
|
252
|
-
values: ['Stop the process', 'Remove the folder', 'Merge with template']
|
|
270
|
+
values: ['Stop the process', 'Remove the folder', 'Merge with template'],
|
|
253
271
|
});
|
|
254
272
|
readline.moveCursor(process.stdout, 0, -1);
|
|
255
273
|
logger__default["default"].log(`Already exist, selected: ${value}`);
|
|
@@ -264,7 +282,7 @@ class InnetJS {
|
|
|
264
282
|
}
|
|
265
283
|
yield logger__default["default"].start('Download template', () => __awaiter(this, void 0, void 0, function* () {
|
|
266
284
|
const { data } = yield axios__default["default"].get(`https://github.com/d8corp/innetjs-templates/archive/refs/heads/${template}.zip`, {
|
|
267
|
-
responseType: 'stream'
|
|
285
|
+
responseType: 'stream',
|
|
268
286
|
});
|
|
269
287
|
yield new Promise((resolve, reject) => {
|
|
270
288
|
data.pipe(Extract({
|
|
@@ -275,60 +293,55 @@ class InnetJS {
|
|
|
275
293
|
yield logger__default["default"].start('Install packages', () => execAsync(`cd ${appPath} && npm i`));
|
|
276
294
|
});
|
|
277
295
|
}
|
|
278
|
-
build({ node = false } = {}) {
|
|
296
|
+
build({ node = false, index = 'index' } = {}) {
|
|
279
297
|
return __awaiter(this, void 0, void 0, function* () {
|
|
280
|
-
const
|
|
298
|
+
const input = glob__default["default"].sync(`src/${index}.{${indexExt}}`);
|
|
299
|
+
if (!input.length) {
|
|
300
|
+
throw Error('index file is not detected');
|
|
301
|
+
}
|
|
281
302
|
yield logger__default["default"].start('Remove build', () => fs__default["default"].remove(this.buildFolder));
|
|
282
303
|
const pkg = node && (yield this.getPackage());
|
|
283
304
|
const inputOptions = {
|
|
284
|
-
input
|
|
305
|
+
input,
|
|
285
306
|
preserveEntrySignatures: 'strict',
|
|
286
307
|
plugins: [
|
|
287
308
|
commonjs__default["default"](),
|
|
288
309
|
json__default["default"](),
|
|
289
310
|
typescript__default["default"](),
|
|
290
311
|
jsx__default["default"](),
|
|
291
|
-
|
|
312
|
+
eslint__default["default"]({
|
|
313
|
+
include: lintInclude,
|
|
314
|
+
}),
|
|
315
|
+
],
|
|
292
316
|
};
|
|
293
317
|
const outputOptions = {
|
|
294
318
|
dir: this.buildFolder,
|
|
295
|
-
sourcemap: this.sourcemap
|
|
319
|
+
sourcemap: this.sourcemap,
|
|
296
320
|
};
|
|
297
321
|
if (node) {
|
|
298
322
|
outputOptions.format = 'cjs';
|
|
299
323
|
inputOptions.external = Object.keys((pkg === null || pkg === void 0 ? void 0 : pkg.dependencies) || {});
|
|
300
324
|
inputOptions.plugins.push(pluginNodeResolve.nodeResolve({
|
|
301
|
-
moduleDirectories: [path__default["default"].resolve(this.buildFolder, 'node_modules')]
|
|
325
|
+
moduleDirectories: [path__default["default"].resolve(this.buildFolder, 'node_modules')],
|
|
302
326
|
}), string({
|
|
303
327
|
include: '**/*.*',
|
|
304
328
|
exclude: stringExcludeNode,
|
|
305
329
|
}));
|
|
306
330
|
}
|
|
307
331
|
else {
|
|
308
|
-
inputOptions.plugins
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
plugins: [autoprefixer__default["default"]()],
|
|
322
|
-
modules: this.cssModules,
|
|
323
|
-
sourceMap: this.sourcemap,
|
|
324
|
-
minimize: true,
|
|
325
|
-
}),
|
|
326
|
-
string({
|
|
327
|
-
include: '**/*.*',
|
|
328
|
-
exclude: stringExcludeDom,
|
|
329
|
-
}),
|
|
330
|
-
injectEnv__default["default"](innetEnv),
|
|
331
|
-
];
|
|
332
|
+
inputOptions.plugins.push(pluginNodeResolve.nodeResolve({
|
|
333
|
+
browser: true,
|
|
334
|
+
}), polyfill__default["default"](), image__default["default"](), styles__default["default"]({
|
|
335
|
+
mode: this.cssInJs ? 'inject' : 'extract',
|
|
336
|
+
url: true,
|
|
337
|
+
plugins: [autoprefixer__default["default"]()],
|
|
338
|
+
modules: this.cssModules,
|
|
339
|
+
sourceMap: this.sourcemap,
|
|
340
|
+
minimize: true,
|
|
341
|
+
}), string({
|
|
342
|
+
include: '**/*.*',
|
|
343
|
+
exclude: stringExcludeDom,
|
|
344
|
+
}), injectEnv__default["default"](innetEnv));
|
|
332
345
|
outputOptions.format = 'es';
|
|
333
346
|
outputOptions.plugins = [
|
|
334
347
|
rollupPluginTerser.terser(),
|
|
@@ -364,13 +377,16 @@ class InnetJS {
|
|
|
364
377
|
}
|
|
365
378
|
});
|
|
366
379
|
}
|
|
367
|
-
start({ node = false, error = false } = {}) {
|
|
380
|
+
start({ node = false, error = false, index = 'index' } = {}) {
|
|
368
381
|
return __awaiter(this, void 0, void 0, function* () {
|
|
369
|
-
const indexExtension = yield this.getProjectExtension();
|
|
370
382
|
const pkg = yield this.getPackage();
|
|
383
|
+
const input = glob__default["default"].sync(`src/${index}.{${indexExt}}`);
|
|
384
|
+
if (!input.length) {
|
|
385
|
+
throw Error('index file is not detected');
|
|
386
|
+
}
|
|
371
387
|
yield logger__default["default"].start('Remove build', () => fs__default["default"].remove(this.devBuildFolder));
|
|
372
388
|
const options = {
|
|
373
|
-
input
|
|
389
|
+
input,
|
|
374
390
|
preserveEntrySignatures: 'strict',
|
|
375
391
|
output: {
|
|
376
392
|
dir: this.devBuildFolder,
|
|
@@ -382,14 +398,18 @@ class InnetJS {
|
|
|
382
398
|
typescript__default["default"]({
|
|
383
399
|
tsconfigOverride: {
|
|
384
400
|
compilerOptions: {
|
|
385
|
-
sourceMap: true
|
|
386
|
-
}
|
|
401
|
+
sourceMap: true,
|
|
402
|
+
},
|
|
387
403
|
},
|
|
388
404
|
}),
|
|
389
405
|
jsx__default["default"](),
|
|
406
|
+
eslint__default["default"]({
|
|
407
|
+
include: lintInclude,
|
|
408
|
+
}),
|
|
390
409
|
],
|
|
391
410
|
};
|
|
392
411
|
if (node) {
|
|
412
|
+
// @ts-expect-error
|
|
393
413
|
options.output.format = 'cjs';
|
|
394
414
|
options.external = Object.keys((pkg === null || pkg === void 0 ? void 0 : pkg.dependencies) || {});
|
|
395
415
|
options.plugins.push(pluginNodeResolve.nodeResolve({
|
|
@@ -410,36 +430,24 @@ class InnetJS {
|
|
|
410
430
|
: fs__default["default"].existsSync(this.sslCrt)
|
|
411
431
|
? fs__default["default"].readFileSync(this.sslCrt)
|
|
412
432
|
: undefined;
|
|
433
|
+
// @ts-expect-error
|
|
413
434
|
options.output.format = 'es';
|
|
414
|
-
options.plugins
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
url: true,
|
|
427
|
-
plugins: [autoprefixer__default["default"]()],
|
|
428
|
-
modules: this.cssModules,
|
|
429
|
-
sourceMap: true,
|
|
430
|
-
}),
|
|
431
|
-
string({
|
|
432
|
-
include: '**/*.*',
|
|
433
|
-
exclude: stringExcludeDom,
|
|
434
|
-
}),
|
|
435
|
-
this.createClient(key, cert, pkg),
|
|
436
|
-
livereload(Object.assign({ exts: ['html', 'css', 'js', 'png', 'svg', 'webp', 'gif', 'jpg', 'json'], watch: [this.devBuildFolder, this.publicFolder], verbose: false }, (key && cert ? { https: { key, cert } } : {}))),
|
|
437
|
-
injectEnv__default["default"](innetEnv),
|
|
438
|
-
];
|
|
435
|
+
options.plugins.push(pluginNodeResolve.nodeResolve({
|
|
436
|
+
browser: true,
|
|
437
|
+
}), polyfill__default["default"](), image__default["default"](), styles__default["default"]({
|
|
438
|
+
mode: this.cssInJs ? 'inject' : 'extract',
|
|
439
|
+
url: true,
|
|
440
|
+
plugins: [autoprefixer__default["default"]()],
|
|
441
|
+
modules: this.cssModules,
|
|
442
|
+
sourceMap: true,
|
|
443
|
+
}), string({
|
|
444
|
+
include: '**/*.*',
|
|
445
|
+
exclude: stringExcludeDom,
|
|
446
|
+
}), this.createClient(key, cert, pkg), livereload(Object.assign({ exts: ['html', 'css', 'js', 'png', 'svg', 'webp', 'gif', 'jpg', 'json'], watch: [this.devBuildFolder, this.publicFolder], verbose: false }, (key && cert ? { https: { key, cert } } : {}))), injectEnv__default["default"](innetEnv));
|
|
439
447
|
}
|
|
440
448
|
const watcher = rollup__default["default"].watch(options);
|
|
441
449
|
watcher.on('event', (e) => __awaiter(this, void 0, void 0, function* () {
|
|
442
|
-
if (e.code
|
|
450
|
+
if (e.code === 'ERROR') {
|
|
443
451
|
if (e.error.code === 'UNRESOLVED_IMPORT') {
|
|
444
452
|
const [, importer, file] = e.error.message.match(/^Could not resolve '(.+)' from (.+)$/) || [];
|
|
445
453
|
const text = (yield fs__default["default"].readFile(file)).toString();
|
|
@@ -494,16 +502,16 @@ class InnetJS {
|
|
|
494
502
|
typescript__default["default"]({
|
|
495
503
|
tsconfigOverride: {
|
|
496
504
|
compilerOptions: {
|
|
497
|
-
sourceMap: true
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
})
|
|
501
|
-
]
|
|
505
|
+
sourceMap: true,
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
}),
|
|
509
|
+
],
|
|
502
510
|
};
|
|
503
511
|
const outputOptions = {
|
|
504
512
|
format: 'cjs',
|
|
505
513
|
file: jsFilePath,
|
|
506
|
-
sourcemap: true
|
|
514
|
+
sourcemap: true,
|
|
507
515
|
};
|
|
508
516
|
const bundle = yield rollup__default["default"].rollup(inputOptions);
|
|
509
517
|
yield bundle.write(outputOptions);
|
|
@@ -514,35 +522,164 @@ class InnetJS {
|
|
|
514
522
|
}));
|
|
515
523
|
});
|
|
516
524
|
}
|
|
517
|
-
|
|
518
|
-
getProjectExtension() {
|
|
525
|
+
release({ node = false, index = 'index', release, } = {}) {
|
|
519
526
|
return __awaiter(this, void 0, void 0, function* () {
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
yield logger__default["default"].start('
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
throw Error('index file is not detected');
|
|
527
|
+
const { releaseFolder, cssModules } = this;
|
|
528
|
+
yield logger__default["default"].start('Remove previous release', () => fs__default["default"].remove(releaseFolder));
|
|
529
|
+
const pkg = yield this.getPackage();
|
|
530
|
+
yield logger__default["default"].start('Prepare package.json', () => __awaiter(this, void 0, void 0, function* () {
|
|
531
|
+
const version = pkg.version.split('.');
|
|
532
|
+
switch (release) {
|
|
533
|
+
case 'patch': {
|
|
534
|
+
version[2]++;
|
|
535
|
+
break;
|
|
536
|
+
}
|
|
537
|
+
case 'minor': {
|
|
538
|
+
version[1]++;
|
|
539
|
+
version[2] = 0;
|
|
540
|
+
break;
|
|
541
|
+
}
|
|
542
|
+
case 'major': {
|
|
543
|
+
version[1] = 0;
|
|
544
|
+
version[2] = 0;
|
|
545
|
+
version[0]++;
|
|
546
|
+
break;
|
|
547
|
+
}
|
|
548
|
+
default: return;
|
|
543
549
|
}
|
|
544
|
-
|
|
545
|
-
|
|
550
|
+
pkg.version = version.join('.');
|
|
551
|
+
yield fs__default["default"].writeFile(path__default["default"].resolve(this.projectFolder, 'package.json'), JSON.stringify(pkg, undefined, 2), 'UTF-8');
|
|
552
|
+
}));
|
|
553
|
+
function build(format) {
|
|
554
|
+
var _a, _b;
|
|
555
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
556
|
+
const ext = format === 'es'
|
|
557
|
+
? ((_a = (pkg.module || pkg.esnext || pkg['jsnext:main'])) === null || _a === void 0 ? void 0 : _a.replace('index', '')) || '.mjs'
|
|
558
|
+
: ((_b = pkg.main) === null || _b === void 0 ? void 0 : _b.replace('index', '')) || '.js';
|
|
559
|
+
const indexFiles = scriptExtensions.map(ext => `src/${index}.${ext}`).join(',');
|
|
560
|
+
const otherFiles = scriptExtensions.map(ext => `src/**/index.${ext}`).join(',');
|
|
561
|
+
const input = glob__default["default"].sync(`{${indexFiles},${otherFiles}}`);
|
|
562
|
+
if (!input.length) {
|
|
563
|
+
throw Error('index file is not detected');
|
|
564
|
+
}
|
|
565
|
+
const options = {
|
|
566
|
+
input,
|
|
567
|
+
preserveEntrySignatures: 'strict',
|
|
568
|
+
output: {
|
|
569
|
+
dir: releaseFolder,
|
|
570
|
+
entryFileNames: `[name]${ext}`,
|
|
571
|
+
format,
|
|
572
|
+
preserveModules: true,
|
|
573
|
+
},
|
|
574
|
+
plugins: [
|
|
575
|
+
json__default["default"](),
|
|
576
|
+
typescript__default["default"]({
|
|
577
|
+
rollupCommonJSResolveHack: false,
|
|
578
|
+
clean: true,
|
|
579
|
+
}),
|
|
580
|
+
jsx__default["default"](),
|
|
581
|
+
eslint__default["default"]({
|
|
582
|
+
include: lintInclude,
|
|
583
|
+
}),
|
|
584
|
+
],
|
|
585
|
+
};
|
|
586
|
+
if (node) {
|
|
587
|
+
options.external = [...Object.keys(pkg.dependencies), 'tslib'];
|
|
588
|
+
options.plugins = [
|
|
589
|
+
...options.plugins,
|
|
590
|
+
externals__default["default"](),
|
|
591
|
+
string({
|
|
592
|
+
include: '**/*.*',
|
|
593
|
+
exclude: stringExcludeNode,
|
|
594
|
+
}),
|
|
595
|
+
];
|
|
596
|
+
}
|
|
597
|
+
else {
|
|
598
|
+
options.plugins = [
|
|
599
|
+
...options.plugins,
|
|
600
|
+
string({
|
|
601
|
+
include: '**/*.*',
|
|
602
|
+
exclude: stringExcludeDom,
|
|
603
|
+
}),
|
|
604
|
+
polyfill__default["default"](),
|
|
605
|
+
image__default["default"](),
|
|
606
|
+
styles__default["default"]({
|
|
607
|
+
mode: 'inject',
|
|
608
|
+
url: true,
|
|
609
|
+
plugins: [autoprefixer__default["default"]()],
|
|
610
|
+
modules: cssModules,
|
|
611
|
+
minimize: true,
|
|
612
|
+
}),
|
|
613
|
+
injectEnv__default["default"](innetEnv),
|
|
614
|
+
];
|
|
615
|
+
}
|
|
616
|
+
const bundle = yield rollup__default["default"].rollup(options);
|
|
617
|
+
yield bundle.write(options.output);
|
|
618
|
+
yield bundle.close();
|
|
619
|
+
});
|
|
620
|
+
}
|
|
621
|
+
yield logger__default["default"].start('Build cjs bundle', () => __awaiter(this, void 0, void 0, function* () {
|
|
622
|
+
yield build('cjs');
|
|
623
|
+
}));
|
|
624
|
+
yield logger__default["default"].start('Build es6 bundle', () => __awaiter(this, void 0, void 0, function* () {
|
|
625
|
+
yield build('es');
|
|
626
|
+
}));
|
|
627
|
+
yield logger__default["default"].start('Copy package.json', () => __awaiter(this, void 0, void 0, function* () {
|
|
628
|
+
const data = Object.assign({}, pkg);
|
|
629
|
+
delete data.private;
|
|
630
|
+
delete data.devDependencies;
|
|
631
|
+
yield fs__default["default"].writeFile(path__default["default"].resolve(this.releaseFolder, 'package.json'), JSON.stringify(data, undefined, 2), 'UTF-8');
|
|
632
|
+
}));
|
|
633
|
+
if (pkg.bin) {
|
|
634
|
+
yield logger__default["default"].start('Build bin', () => __awaiter(this, void 0, void 0, function* () {
|
|
635
|
+
const { bin } = pkg;
|
|
636
|
+
for (const name in bin) {
|
|
637
|
+
const value = bin[name];
|
|
638
|
+
const input = glob__default["default"].sync(`src/${value}.{${scriptExtensions.join(',')}}`);
|
|
639
|
+
const file = path__default["default"].join(this.releaseFolder, value);
|
|
640
|
+
const options = {
|
|
641
|
+
input,
|
|
642
|
+
external: [...Object.keys(pkg.dependencies), 'tslib'],
|
|
643
|
+
output: {
|
|
644
|
+
file,
|
|
645
|
+
format: 'cjs',
|
|
646
|
+
},
|
|
647
|
+
plugins: [
|
|
648
|
+
rollupPluginPreserveShebangs.preserveShebangs(),
|
|
649
|
+
json__default["default"](),
|
|
650
|
+
typescript__default["default"]({
|
|
651
|
+
clean: true,
|
|
652
|
+
tsconfigOverride: {
|
|
653
|
+
compilerOptions: {
|
|
654
|
+
declaration: false,
|
|
655
|
+
},
|
|
656
|
+
},
|
|
657
|
+
}),
|
|
658
|
+
externals__default["default"](),
|
|
659
|
+
jsx__default["default"](),
|
|
660
|
+
],
|
|
661
|
+
};
|
|
662
|
+
const bundle = yield rollup__default["default"].rollup(options);
|
|
663
|
+
yield bundle.write(options.output);
|
|
664
|
+
yield bundle.close();
|
|
665
|
+
}
|
|
666
|
+
}));
|
|
667
|
+
}
|
|
668
|
+
if (fs__default["default"].existsSync(this.licenseFile)) {
|
|
669
|
+
yield logger__default["default"].start('Copy license', () => __awaiter(this, void 0, void 0, function* () {
|
|
670
|
+
yield fs.promises.copyFile(this.licenseFile, this.licenseReleaseFile);
|
|
671
|
+
}));
|
|
672
|
+
}
|
|
673
|
+
if (fs__default["default"].existsSync(this.readmeFile)) {
|
|
674
|
+
yield logger__default["default"].start('Copy readme', () => __awaiter(this, void 0, void 0, function* () {
|
|
675
|
+
yield fs.promises.copyFile(this.readmeFile, this.readmeReleaseFile);
|
|
676
|
+
}));
|
|
677
|
+
}
|
|
678
|
+
if (fs__default["default"].existsSync(this.declarationFile)) {
|
|
679
|
+
yield logger__default["default"].start('Copy declaration', () => __awaiter(this, void 0, void 0, function* () {
|
|
680
|
+
yield fs.promises.copyFile(this.declarationFile, this.declarationReleaseFile);
|
|
681
|
+
}));
|
|
682
|
+
}
|
|
546
683
|
});
|
|
547
684
|
}
|
|
548
685
|
getPackage() {
|
|
@@ -562,6 +699,7 @@ class InnetJS {
|
|
|
562
699
|
createClient(key, cert, pkg) {
|
|
563
700
|
let app;
|
|
564
701
|
return {
|
|
702
|
+
name: 'client',
|
|
565
703
|
writeBundle: () => __awaiter(this, void 0, void 0, function* () {
|
|
566
704
|
var _a;
|
|
567
705
|
if (!app) {
|
|
@@ -578,7 +716,7 @@ class InnetJS {
|
|
|
578
716
|
if ((_a = this.proxy) === null || _a === void 0 ? void 0 : _a.startsWith('http')) {
|
|
579
717
|
app.use(this.api, proxy__default["default"](this.proxy, {
|
|
580
718
|
https: httpsUsing,
|
|
581
|
-
proxyReqPathResolver: req => req.originalUrl
|
|
719
|
+
proxyReqPathResolver: req => req.originalUrl,
|
|
582
720
|
}));
|
|
583
721
|
}
|
|
584
722
|
app.use(/^([^.]*|.*\.[^.]{5,})$/, (req, res) => {
|
|
@@ -596,7 +734,7 @@ class InnetJS {
|
|
|
596
734
|
const { userPort } = yield prompt__default["default"]({
|
|
597
735
|
name: 'userPort',
|
|
598
736
|
type: 'number',
|
|
599
|
-
message: `Port ${e.port} is reserved, please enter another one [${port}]
|
|
737
|
+
message: `Port ${e.port} is reserved, please enter another one [${port}]:`,
|
|
600
738
|
});
|
|
601
739
|
if (userPort) {
|
|
602
740
|
port = userPort;
|
|
@@ -608,19 +746,22 @@ class InnetJS {
|
|
|
608
746
|
}
|
|
609
747
|
}));
|
|
610
748
|
}
|
|
611
|
-
})
|
|
749
|
+
}),
|
|
612
750
|
};
|
|
613
751
|
}
|
|
614
752
|
createServer() {
|
|
615
753
|
let app;
|
|
616
754
|
return {
|
|
755
|
+
name: 'server',
|
|
617
756
|
writeBundle: () => __awaiter(this, void 0, void 0, function* () {
|
|
618
757
|
app === null || app === void 0 ? void 0 : app.kill();
|
|
619
758
|
const filePath = path__default["default"].resolve(this.devBuildFolder, 'index.js');
|
|
620
759
|
app = spawn('node', ['-r', 'source-map-support/register', filePath], { stdio: 'inherit' });
|
|
621
|
-
})
|
|
760
|
+
}),
|
|
622
761
|
};
|
|
623
762
|
}
|
|
624
763
|
}
|
|
625
764
|
|
|
626
|
-
|
|
765
|
+
exports.InnetJS = InnetJS;
|
|
766
|
+
exports.indexExt = indexExt;
|
|
767
|
+
exports.scriptExtensions = scriptExtensions;
|