innetjs 2.1.6 → 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 +335 -180
- package/bin/innet.d.ts +2 -0
- package/constants.d.ts +1 -1
- package/index.d.ts +25 -14
- package/index.es6.js +287 -154
- package/index.js +310 -171
- package/package.json +10 -2
package/bin/innet
CHANGED
|
@@ -1,65 +1,70 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var fs = require('fs-extra');
|
|
6
|
-
var http = require('http');
|
|
7
|
-
var address = require('address');
|
|
8
|
-
var https = require('https');
|
|
9
|
-
var util = require('util');
|
|
10
|
-
var axios = require('axios');
|
|
4
|
+
var commander = require('commander');
|
|
11
5
|
var logger = require('@cantinc/logger');
|
|
12
|
-
var chalk = require('chalk');
|
|
13
|
-
var rollup = require('rollup');
|
|
14
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');
|
|
15
10
|
var pluginNodeResolve = require('@rollup/plugin-node-resolve');
|
|
16
|
-
var
|
|
17
|
-
var typescript = require('rollup-plugin-typescript2');
|
|
18
|
-
var styles = require('rollup-plugin-styles');
|
|
11
|
+
var address = require('address');
|
|
19
12
|
var autoprefixer = require('autoprefixer');
|
|
13
|
+
var axios = require('axios');
|
|
14
|
+
var chalk = require('chalk');
|
|
15
|
+
var selector = require('cli-select');
|
|
20
16
|
var express = require('express');
|
|
21
|
-
var json = require('@rollup/plugin-json');
|
|
22
|
-
var tmp = require('tmp');
|
|
23
17
|
var proxy = require('express-http-proxy');
|
|
24
|
-
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');
|
|
25
24
|
var prompt = require('prompts');
|
|
26
|
-
var
|
|
25
|
+
var rollup = require('rollup');
|
|
27
26
|
var filesize = require('rollup-plugin-filesize');
|
|
28
|
-
var image = require('@rollup/plugin-image');
|
|
29
|
-
var eslint = require('@rollup/plugin-eslint');
|
|
30
|
-
var polyfill = require('rollup-plugin-polyfill-node');
|
|
31
27
|
var injectEnv = require('rollup-plugin-inject-process-env');
|
|
32
|
-
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');
|
|
33
37
|
var unzipper = require('unzipper');
|
|
34
|
-
var commander = require('commander');
|
|
35
38
|
|
|
36
39
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
37
40
|
|
|
38
|
-
var path__default = /*#__PURE__*/_interopDefaultLegacy(path$1);
|
|
39
|
-
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
40
|
-
var http__default = /*#__PURE__*/_interopDefaultLegacy(http);
|
|
41
|
-
var address__default = /*#__PURE__*/_interopDefaultLegacy(address);
|
|
42
|
-
var https__default = /*#__PURE__*/_interopDefaultLegacy(https);
|
|
43
|
-
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
44
41
|
var logger__default = /*#__PURE__*/_interopDefaultLegacy(logger);
|
|
45
|
-
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
|
|
46
|
-
var rollup__default = /*#__PURE__*/_interopDefaultLegacy(rollup);
|
|
47
42
|
var commonjs__default = /*#__PURE__*/_interopDefaultLegacy(commonjs);
|
|
48
|
-
var
|
|
49
|
-
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);
|
|
50
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);
|
|
51
51
|
var express__default = /*#__PURE__*/_interopDefaultLegacy(express);
|
|
52
|
-
var json__default = /*#__PURE__*/_interopDefaultLegacy(json);
|
|
53
|
-
var tmp__default = /*#__PURE__*/_interopDefaultLegacy(tmp);
|
|
54
52
|
var proxy__default = /*#__PURE__*/_interopDefaultLegacy(proxy);
|
|
55
|
-
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);
|
|
56
58
|
var prompt__default = /*#__PURE__*/_interopDefaultLegacy(prompt);
|
|
57
|
-
var
|
|
59
|
+
var rollup__default = /*#__PURE__*/_interopDefaultLegacy(rollup);
|
|
58
60
|
var filesize__default = /*#__PURE__*/_interopDefaultLegacy(filesize);
|
|
59
|
-
var image__default = /*#__PURE__*/_interopDefaultLegacy(image);
|
|
60
|
-
var eslint__default = /*#__PURE__*/_interopDefaultLegacy(eslint);
|
|
61
|
-
var polyfill__default = /*#__PURE__*/_interopDefaultLegacy(polyfill);
|
|
62
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);
|
|
63
68
|
|
|
64
69
|
/******************************************************************************
|
|
65
70
|
Copyright (c) Microsoft Corporation.
|
|
@@ -86,6 +91,35 @@ function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
86
91
|
});
|
|
87
92
|
}
|
|
88
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
|
+
|
|
89
123
|
const Writer = require('fstream').Writer;
|
|
90
124
|
const path = require('path');
|
|
91
125
|
const stream = require('stream');
|
|
@@ -95,7 +129,7 @@ function Extract(opts, template) {
|
|
|
95
129
|
const reduceCount = 19 + template.length;
|
|
96
130
|
// make sure path is normalized before using it
|
|
97
131
|
opts.path = path.resolve(path.normalize(opts.path));
|
|
98
|
-
// @ts-
|
|
132
|
+
// @ts-expect-error
|
|
99
133
|
const parser = new unzipper.Parse(opts);
|
|
100
134
|
const outStream = new stream.Writable({ objectMode: true });
|
|
101
135
|
outStream._write = function (entry, encoding, cb) {
|
|
@@ -128,35 +162,6 @@ function Extract(opts, template) {
|
|
|
128
162
|
return extract;
|
|
129
163
|
}
|
|
130
164
|
|
|
131
|
-
const lintIncludeDom = [
|
|
132
|
-
'**/*.ts',
|
|
133
|
-
'**/*.tsx',
|
|
134
|
-
'**/*.js',
|
|
135
|
-
'**/*.jsx',
|
|
136
|
-
];
|
|
137
|
-
const stringExcludeDom = [
|
|
138
|
-
'**/*.ts',
|
|
139
|
-
'**/*.tsx',
|
|
140
|
-
'**/*.js',
|
|
141
|
-
'**/*.jsx',
|
|
142
|
-
'**/*.json',
|
|
143
|
-
'**/*.css',
|
|
144
|
-
'**/*.scss',
|
|
145
|
-
'**/*.webp',
|
|
146
|
-
'**/*.gif',
|
|
147
|
-
'**/*.png',
|
|
148
|
-
'**/*.jpeg',
|
|
149
|
-
'**/*.jpg',
|
|
150
|
-
'**/*.svg',
|
|
151
|
-
];
|
|
152
|
-
const stringExcludeNode = [
|
|
153
|
-
'**/*.ts',
|
|
154
|
-
'**/*.tsx',
|
|
155
|
-
'**/*.js',
|
|
156
|
-
'**/*.jsx',
|
|
157
|
-
'**/*.json',
|
|
158
|
-
];
|
|
159
|
-
|
|
160
165
|
function getFile(file) {
|
|
161
166
|
file = path__default["default"].resolve(file);
|
|
162
167
|
if (!fs__default["default"].existsSync(file)) {
|
|
@@ -211,12 +216,21 @@ const innetEnv = Object.keys(process.env).reduce((result, key) => {
|
|
|
211
216
|
}
|
|
212
217
|
return result;
|
|
213
218
|
}, {});
|
|
219
|
+
const scriptExtensions = ['ts', 'js', 'tsx', 'jsx'];
|
|
220
|
+
const indexExt = scriptExtensions.join(',');
|
|
214
221
|
class InnetJS {
|
|
215
|
-
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/?*', } = {}) {
|
|
216
223
|
this.projectFolder = path__default["default"].resolve(projectFolder);
|
|
217
224
|
this.publicFolder = path__default["default"].resolve(publicFolder);
|
|
225
|
+
this.releaseFolder = path__default["default"].resolve(releaseFolder);
|
|
218
226
|
this.buildFolder = path__default["default"].resolve(buildFolder);
|
|
219
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');
|
|
220
234
|
this.publicIndexFile = path__default["default"].join(publicFolder, 'index.html');
|
|
221
235
|
this.buildIndexFile = path__default["default"].join(buildFolder, 'index.html');
|
|
222
236
|
this.devBuildFolder = path__default["default"].resolve(projectFolder, 'node_modules', '.cache', 'innetjs', 'build');
|
|
@@ -238,9 +252,9 @@ class InnetJS {
|
|
|
238
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'); }));
|
|
239
253
|
const templates = data.map(({ name }) => name).filter(name => name !== 'main');
|
|
240
254
|
if (!template || !templates.includes(template)) {
|
|
241
|
-
logger__default["default"].log(chalk__default["default"].green(
|
|
255
|
+
logger__default["default"].log(chalk__default["default"].green('Select one of those templates'));
|
|
242
256
|
const { value } = yield selector__default["default"]({
|
|
243
|
-
values: templates
|
|
257
|
+
values: templates,
|
|
244
258
|
});
|
|
245
259
|
template = value;
|
|
246
260
|
readline.moveCursor(process.stdout, 0, -1);
|
|
@@ -253,7 +267,7 @@ class InnetJS {
|
|
|
253
267
|
if (fs__default["default"].existsSync(appPath)) {
|
|
254
268
|
logger__default["default"].log(chalk__default["default"].red(`'${appPath}' already exist, what do you want?`));
|
|
255
269
|
const { id: result, value } = yield selector__default["default"]({
|
|
256
|
-
values: ['Stop the process', 'Remove the folder', 'Merge with template']
|
|
270
|
+
values: ['Stop the process', 'Remove the folder', 'Merge with template'],
|
|
257
271
|
});
|
|
258
272
|
readline.moveCursor(process.stdout, 0, -1);
|
|
259
273
|
logger__default["default"].log(`Already exist, selected: ${value}`);
|
|
@@ -268,7 +282,7 @@ class InnetJS {
|
|
|
268
282
|
}
|
|
269
283
|
yield logger__default["default"].start('Download template', () => __awaiter(this, void 0, void 0, function* () {
|
|
270
284
|
const { data } = yield axios__default["default"].get(`https://github.com/d8corp/innetjs-templates/archive/refs/heads/${template}.zip`, {
|
|
271
|
-
responseType: 'stream'
|
|
285
|
+
responseType: 'stream',
|
|
272
286
|
});
|
|
273
287
|
yield new Promise((resolve, reject) => {
|
|
274
288
|
data.pipe(Extract({
|
|
@@ -279,60 +293,55 @@ class InnetJS {
|
|
|
279
293
|
yield logger__default["default"].start('Install packages', () => execAsync(`cd ${appPath} && npm i`));
|
|
280
294
|
});
|
|
281
295
|
}
|
|
282
|
-
build({ node = false } = {}) {
|
|
296
|
+
build({ node = false, index = 'index' } = {}) {
|
|
283
297
|
return __awaiter(this, void 0, void 0, function* () {
|
|
284
|
-
const
|
|
298
|
+
const input = glob__default["default"].sync(`src/${index}.{${indexExt}}`);
|
|
299
|
+
if (!input.length) {
|
|
300
|
+
throw Error('index file is not detected');
|
|
301
|
+
}
|
|
285
302
|
yield logger__default["default"].start('Remove build', () => fs__default["default"].remove(this.buildFolder));
|
|
286
303
|
const pkg = node && (yield this.getPackage());
|
|
287
304
|
const inputOptions = {
|
|
288
|
-
input
|
|
305
|
+
input,
|
|
289
306
|
preserveEntrySignatures: 'strict',
|
|
290
307
|
plugins: [
|
|
291
308
|
commonjs__default["default"](),
|
|
292
309
|
json__default["default"](),
|
|
293
310
|
typescript__default["default"](),
|
|
294
311
|
jsx__default["default"](),
|
|
295
|
-
|
|
312
|
+
eslint__default["default"]({
|
|
313
|
+
include: lintInclude,
|
|
314
|
+
}),
|
|
315
|
+
],
|
|
296
316
|
};
|
|
297
317
|
const outputOptions = {
|
|
298
318
|
dir: this.buildFolder,
|
|
299
|
-
sourcemap: this.sourcemap
|
|
319
|
+
sourcemap: this.sourcemap,
|
|
300
320
|
};
|
|
301
321
|
if (node) {
|
|
302
322
|
outputOptions.format = 'cjs';
|
|
303
323
|
inputOptions.external = Object.keys((pkg === null || pkg === void 0 ? void 0 : pkg.dependencies) || {});
|
|
304
324
|
inputOptions.plugins.push(pluginNodeResolve.nodeResolve({
|
|
305
|
-
moduleDirectories: [path__default["default"].resolve(this.buildFolder, 'node_modules')]
|
|
325
|
+
moduleDirectories: [path__default["default"].resolve(this.buildFolder, 'node_modules')],
|
|
306
326
|
}), string({
|
|
307
327
|
include: '**/*.*',
|
|
308
328
|
exclude: stringExcludeNode,
|
|
309
329
|
}));
|
|
310
330
|
}
|
|
311
331
|
else {
|
|
312
|
-
inputOptions.plugins
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
plugins: [autoprefixer__default["default"]()],
|
|
326
|
-
modules: this.cssModules,
|
|
327
|
-
sourceMap: this.sourcemap,
|
|
328
|
-
minimize: true,
|
|
329
|
-
}),
|
|
330
|
-
string({
|
|
331
|
-
include: '**/*.*',
|
|
332
|
-
exclude: stringExcludeDom,
|
|
333
|
-
}),
|
|
334
|
-
injectEnv__default["default"](innetEnv),
|
|
335
|
-
];
|
|
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));
|
|
336
345
|
outputOptions.format = 'es';
|
|
337
346
|
outputOptions.plugins = [
|
|
338
347
|
rollupPluginTerser.terser(),
|
|
@@ -368,13 +377,16 @@ class InnetJS {
|
|
|
368
377
|
}
|
|
369
378
|
});
|
|
370
379
|
}
|
|
371
|
-
start({ node = false, error = false } = {}) {
|
|
380
|
+
start({ node = false, error = false, index = 'index' } = {}) {
|
|
372
381
|
return __awaiter(this, void 0, void 0, function* () {
|
|
373
|
-
const indexExtension = yield this.getProjectExtension();
|
|
374
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
|
+
}
|
|
375
387
|
yield logger__default["default"].start('Remove build', () => fs__default["default"].remove(this.devBuildFolder));
|
|
376
388
|
const options = {
|
|
377
|
-
input
|
|
389
|
+
input,
|
|
378
390
|
preserveEntrySignatures: 'strict',
|
|
379
391
|
output: {
|
|
380
392
|
dir: this.devBuildFolder,
|
|
@@ -386,14 +398,18 @@ class InnetJS {
|
|
|
386
398
|
typescript__default["default"]({
|
|
387
399
|
tsconfigOverride: {
|
|
388
400
|
compilerOptions: {
|
|
389
|
-
sourceMap: true
|
|
390
|
-
}
|
|
401
|
+
sourceMap: true,
|
|
402
|
+
},
|
|
391
403
|
},
|
|
392
404
|
}),
|
|
393
405
|
jsx__default["default"](),
|
|
406
|
+
eslint__default["default"]({
|
|
407
|
+
include: lintInclude,
|
|
408
|
+
}),
|
|
394
409
|
],
|
|
395
410
|
};
|
|
396
411
|
if (node) {
|
|
412
|
+
// @ts-expect-error
|
|
397
413
|
options.output.format = 'cjs';
|
|
398
414
|
options.external = Object.keys((pkg === null || pkg === void 0 ? void 0 : pkg.dependencies) || {});
|
|
399
415
|
options.plugins.push(pluginNodeResolve.nodeResolve({
|
|
@@ -414,36 +430,24 @@ class InnetJS {
|
|
|
414
430
|
: fs__default["default"].existsSync(this.sslCrt)
|
|
415
431
|
? fs__default["default"].readFileSync(this.sslCrt)
|
|
416
432
|
: undefined;
|
|
433
|
+
// @ts-expect-error
|
|
417
434
|
options.output.format = 'es';
|
|
418
|
-
options.plugins
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
url: true,
|
|
431
|
-
plugins: [autoprefixer__default["default"]()],
|
|
432
|
-
modules: this.cssModules,
|
|
433
|
-
sourceMap: true,
|
|
434
|
-
}),
|
|
435
|
-
string({
|
|
436
|
-
include: '**/*.*',
|
|
437
|
-
exclude: stringExcludeDom,
|
|
438
|
-
}),
|
|
439
|
-
this.createClient(key, cert, pkg),
|
|
440
|
-
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 } } : {}))),
|
|
441
|
-
injectEnv__default["default"](innetEnv),
|
|
442
|
-
];
|
|
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));
|
|
443
447
|
}
|
|
444
448
|
const watcher = rollup__default["default"].watch(options);
|
|
445
449
|
watcher.on('event', (e) => __awaiter(this, void 0, void 0, function* () {
|
|
446
|
-
if (e.code
|
|
450
|
+
if (e.code === 'ERROR') {
|
|
447
451
|
if (e.error.code === 'UNRESOLVED_IMPORT') {
|
|
448
452
|
const [, importer, file] = e.error.message.match(/^Could not resolve '(.+)' from (.+)$/) || [];
|
|
449
453
|
const text = (yield fs__default["default"].readFile(file)).toString();
|
|
@@ -498,16 +502,16 @@ class InnetJS {
|
|
|
498
502
|
typescript__default["default"]({
|
|
499
503
|
tsconfigOverride: {
|
|
500
504
|
compilerOptions: {
|
|
501
|
-
sourceMap: true
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
})
|
|
505
|
-
]
|
|
505
|
+
sourceMap: true,
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
}),
|
|
509
|
+
],
|
|
506
510
|
};
|
|
507
511
|
const outputOptions = {
|
|
508
512
|
format: 'cjs',
|
|
509
513
|
file: jsFilePath,
|
|
510
|
-
sourcemap: true
|
|
514
|
+
sourcemap: true,
|
|
511
515
|
};
|
|
512
516
|
const bundle = yield rollup__default["default"].rollup(inputOptions);
|
|
513
517
|
yield bundle.write(outputOptions);
|
|
@@ -518,35 +522,164 @@ class InnetJS {
|
|
|
518
522
|
}));
|
|
519
523
|
});
|
|
520
524
|
}
|
|
521
|
-
|
|
522
|
-
getProjectExtension() {
|
|
525
|
+
release({ node = false, index = 'index', release, } = {}) {
|
|
523
526
|
return __awaiter(this, void 0, void 0, function* () {
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
yield logger__default["default"].start('
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
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;
|
|
547
549
|
}
|
|
548
|
-
|
|
549
|
-
|
|
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
|
+
}
|
|
550
683
|
});
|
|
551
684
|
}
|
|
552
685
|
getPackage() {
|
|
@@ -566,6 +699,7 @@ class InnetJS {
|
|
|
566
699
|
createClient(key, cert, pkg) {
|
|
567
700
|
let app;
|
|
568
701
|
return {
|
|
702
|
+
name: 'client',
|
|
569
703
|
writeBundle: () => __awaiter(this, void 0, void 0, function* () {
|
|
570
704
|
var _a;
|
|
571
705
|
if (!app) {
|
|
@@ -582,7 +716,7 @@ class InnetJS {
|
|
|
582
716
|
if ((_a = this.proxy) === null || _a === void 0 ? void 0 : _a.startsWith('http')) {
|
|
583
717
|
app.use(this.api, proxy__default["default"](this.proxy, {
|
|
584
718
|
https: httpsUsing,
|
|
585
|
-
proxyReqPathResolver: req => req.originalUrl
|
|
719
|
+
proxyReqPathResolver: req => req.originalUrl,
|
|
586
720
|
}));
|
|
587
721
|
}
|
|
588
722
|
app.use(/^([^.]*|.*\.[^.]{5,})$/, (req, res) => {
|
|
@@ -600,7 +734,7 @@ class InnetJS {
|
|
|
600
734
|
const { userPort } = yield prompt__default["default"]({
|
|
601
735
|
name: 'userPort',
|
|
602
736
|
type: 'number',
|
|
603
|
-
message: `Port ${e.port} is reserved, please enter another one [${port}]
|
|
737
|
+
message: `Port ${e.port} is reserved, please enter another one [${port}]:`,
|
|
604
738
|
});
|
|
605
739
|
if (userPort) {
|
|
606
740
|
port = userPort;
|
|
@@ -612,33 +746,37 @@ class InnetJS {
|
|
|
612
746
|
}
|
|
613
747
|
}));
|
|
614
748
|
}
|
|
615
|
-
})
|
|
749
|
+
}),
|
|
616
750
|
};
|
|
617
751
|
}
|
|
618
752
|
createServer() {
|
|
619
753
|
let app;
|
|
620
754
|
return {
|
|
755
|
+
name: 'server',
|
|
621
756
|
writeBundle: () => __awaiter(this, void 0, void 0, function* () {
|
|
622
757
|
app === null || app === void 0 ? void 0 : app.kill();
|
|
623
758
|
const filePath = path__default["default"].resolve(this.devBuildFolder, 'index.js');
|
|
624
759
|
app = spawn('node', ['-r', 'source-map-support/register', filePath], { stdio: 'inherit' });
|
|
625
|
-
})
|
|
760
|
+
}),
|
|
626
761
|
};
|
|
627
762
|
}
|
|
628
763
|
}
|
|
629
764
|
|
|
630
|
-
var version = "2.
|
|
765
|
+
var version = "2.2.0";
|
|
631
766
|
|
|
632
767
|
const dotenvConfigOutput = require('dotenv').config();
|
|
633
768
|
require('dotenv-expand').expand(dotenvConfigOutput);
|
|
634
769
|
const innetJS = new InnetJS();
|
|
770
|
+
const errorOption = new commander.Option('-e, --error', 'Show error details');
|
|
771
|
+
const releaseOption = new commander.Option('-r, --release <release>', 'Select release type')
|
|
772
|
+
.choices(['patch', 'minor', 'major']);
|
|
635
773
|
commander.program
|
|
636
774
|
.version(version, '-v, --version');
|
|
637
775
|
commander.program
|
|
638
776
|
.command('init <app-name>')
|
|
639
777
|
.description('Create innet boilerplate')
|
|
640
|
-
.option('-e, --error', 'Show error details')
|
|
641
778
|
.option('-t, --template <template>', 'Select template fe or be')
|
|
779
|
+
.addOption(errorOption)
|
|
642
780
|
.action((appName, { error, template }) => {
|
|
643
781
|
innetJS.init(appName, { template }).catch(e => {
|
|
644
782
|
if (error) {
|
|
@@ -650,7 +788,7 @@ commander.program
|
|
|
650
788
|
commander.program
|
|
651
789
|
.command('run <file-path>')
|
|
652
790
|
.description('Run js, ts or tsx file')
|
|
653
|
-
.
|
|
791
|
+
.addOption(errorOption)
|
|
654
792
|
.action((filePath, { error }) => {
|
|
655
793
|
innetJS.run(filePath).catch(e => {
|
|
656
794
|
if (error) {
|
|
@@ -662,10 +800,11 @@ commander.program
|
|
|
662
800
|
commander.program
|
|
663
801
|
.command('start')
|
|
664
802
|
.description('Start development with innet boilerplate')
|
|
665
|
-
.option('-e, --error', 'Show error details')
|
|
666
803
|
.option('-n, --node', 'Start development for Node.js')
|
|
667
|
-
.
|
|
668
|
-
|
|
804
|
+
.option('-i, --index <index>', 'Root index file name', 'index')
|
|
805
|
+
.addOption(errorOption)
|
|
806
|
+
.action(({ error, node, index }) => {
|
|
807
|
+
innetJS.start({ node, error, index }).catch(e => {
|
|
669
808
|
if (error) {
|
|
670
809
|
console.error(e);
|
|
671
810
|
process.exit(1);
|
|
@@ -675,10 +814,26 @@ commander.program
|
|
|
675
814
|
commander.program
|
|
676
815
|
.command('build')
|
|
677
816
|
.description('Build production bundle')
|
|
678
|
-
.
|
|
817
|
+
.addOption(errorOption)
|
|
679
818
|
.option('-n, --node', 'Build for node.js')
|
|
680
|
-
.
|
|
681
|
-
|
|
819
|
+
.option('-i, --index <index>', 'Root index file name', 'index')
|
|
820
|
+
.action(({ error, node, index }) => {
|
|
821
|
+
innetJS.build({ node, index }).catch(e => {
|
|
822
|
+
if (error) {
|
|
823
|
+
console.error(e);
|
|
824
|
+
process.exit(1);
|
|
825
|
+
}
|
|
826
|
+
});
|
|
827
|
+
});
|
|
828
|
+
commander.program
|
|
829
|
+
.command('release')
|
|
830
|
+
.description('Release new version of a library')
|
|
831
|
+
.option('-n, --node', 'Release for node.js')
|
|
832
|
+
.option('-i, --index <index>', 'Root index file name', 'index')
|
|
833
|
+
.addOption(releaseOption)
|
|
834
|
+
.addOption(errorOption)
|
|
835
|
+
.action(({ error, node, index, release }) => {
|
|
836
|
+
innetJS.release({ node, index, release }).catch(e => {
|
|
682
837
|
if (error) {
|
|
683
838
|
console.error(e);
|
|
684
839
|
process.exit(1);
|