innetjs 2.6.0-alpha.9 → 3.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.
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  ;(function () {
4
- const env = {"__INNETJS__PACKAGE_VERSION":"2.6.0-alpha.9"};
4
+ const env = {"__INNETJS__PACKAGE_VERSION":"3.0.0"};
5
5
  if (typeof process === 'undefined') {
6
6
  globalThis.process = { env: env };
7
7
  } else if (process.env) {
@@ -1,5 +1,5 @@
1
1
  ;(function () {
2
- const env = {"__INNETJS__PACKAGE_VERSION":"2.6.0-alpha.9"};
2
+ const env = {"__INNETJS__PACKAGE_VERSION":"3.0.0"};
3
3
  if (typeof process === 'undefined') {
4
4
  globalThis.process = { env: env };
5
5
  } else if (process.env) {
package/bin/innet CHANGED
@@ -11,6 +11,7 @@ var json = require('@rollup/plugin-json');
11
11
  var pluginNodeResolve = require('@rollup/plugin-node-resolve');
12
12
  var ts = require('@rollup/plugin-typescript');
13
13
  var address = require('address');
14
+ var Zip = require('adm-zip');
14
15
  var autoprefixer = require('autoprefixer');
15
16
  var axios = require('axios');
16
17
  var chalk = require('chalk');
@@ -22,6 +23,7 @@ var glob = require('glob');
22
23
  var http = require('node:http');
23
24
  var https = require('node:https');
24
25
  var linesAndColumns = require('lines-and-columns');
26
+ var node_os = require('node:os');
25
27
  var path = require('node:path');
26
28
  var prompt = require('prompts');
27
29
  var rollup = require('rollup');
@@ -36,7 +38,6 @@ var styles = require('rollup-plugin-styles');
36
38
  var rollupPluginTerser = require('rollup-plugin-terser');
37
39
  var stream = require('node:stream');
38
40
  var tmp = require('tmp');
39
- var unzipper = require('unzipper');
40
41
  var node_util = require('node:util');
41
42
 
42
43
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -48,6 +49,7 @@ var image__default = /*#__PURE__*/_interopDefaultLegacy(image);
48
49
  var json__default = /*#__PURE__*/_interopDefaultLegacy(json);
49
50
  var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
50
51
  var address__default = /*#__PURE__*/_interopDefaultLegacy(address);
52
+ var Zip__default = /*#__PURE__*/_interopDefaultLegacy(Zip);
51
53
  var autoprefixer__default = /*#__PURE__*/_interopDefaultLegacy(autoprefixer);
52
54
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
53
55
  var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
@@ -163,7 +165,7 @@ const REG_EXT = /\.([^.]+)$/;
163
165
  const scriptExtensions = ['ts', 'js', 'tsx', 'jsx'];
164
166
  const indexExt = scriptExtensions.join(',');
165
167
  class InnetJS {
166
- constructor({ envPrefix = process.env.INNETJS_ENV_PREFIX || 'INNETJS_', 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 || '', simulateIP = process.env.IP, port = process.env.PORT ? +process.env.PORT : 3000, api = process.env.API || '/api/?*', } = {}) {
168
+ constructor({ envPrefix = process.env.INNETJS_ENV_PREFIX || 'INNETJS_', 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 || '', simulateIP = process.env.IP, port = process.env.PORT ? +process.env.PORT : 3000, api = process.env.API || '/api/?*', tsconfig = process.env.TSCONFIG, } = {}) {
167
169
  this.projectFolder = path__default["default"].resolve(projectFolder);
168
170
  this.publicFolder = path__default["default"].resolve(publicFolder);
169
171
  this.releaseFolder = path__default["default"].resolve(releaseFolder);
@@ -190,6 +192,7 @@ class InnetJS {
190
192
  this.baseUrl = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;
191
193
  this.envPrefix = envPrefix;
192
194
  this.simulateIP = simulateIP;
195
+ this.tsconfig = tsconfig;
193
196
  }
194
197
  // Methods
195
198
  init(appName, { template, force = false } = {}) {
@@ -227,26 +230,26 @@ class InnetJS {
227
230
  }));
228
231
  }
229
232
  yield logger__default["default"].start('Download template', () => tslib.__awaiter(this, void 0, void 0, function* () {
230
- if (!fs__default["default"].existsSync(appPath)) {
231
- fs__default["default"].mkdirSync(appPath);
232
- }
233
- const zipPath = `${path__default["default"].join(appPath, 'template.zip')}`;
233
+ const tmpPath = node_os.tmpdir();
234
+ const zipPath = path__default["default"].join(tmpPath, 'template.zip');
235
+ const unzipPath = path__default["default"].join(tmpPath, `innetjs-templates-${template}`);
234
236
  const { data } = yield axios__default["default"].get(`https://github.com/d8corp/innetjs-templates/archive/refs/heads/${template}.zip`, {
235
237
  responseType: 'stream',
236
238
  });
237
239
  yield pipeline(data, fs__default["default"].createWriteStream(zipPath));
240
+ const zip = new Zip__default["default"](zipPath);
238
241
  yield new Promise((resolve, reject) => {
239
- fs__default["default"].createReadStream(zipPath)
240
- .pipe(unzipper.Parse())
241
- .on('entry', (entry) => {
242
- const fileName = entry.path;
243
- const filePath = path__default["default"].join(appPath, fileName);
244
- entry.pipe(fs__default["default"].createWriteStream(filePath));
245
- })
246
- .on('close', resolve)
247
- .on('error', reject);
242
+ zip.extractAllToAsync(tmpPath, false, false, (error) => {
243
+ if (error) {
244
+ reject(error);
245
+ }
246
+ else {
247
+ resolve(undefined);
248
+ }
249
+ });
248
250
  });
249
251
  yield fs__default["default"].remove(zipPath);
252
+ yield fs__default["default"].move(unzipPath, appPath, { overwrite: true });
250
253
  }));
251
254
  yield logger__default["default"].start('Install packages', () => execAsync(`cd ${appPath} && npm i`));
252
255
  });
@@ -348,7 +351,7 @@ class InnetJS {
348
351
  }
349
352
  });
350
353
  }
351
- start({ node = false, inject = false, error = false, index = 'index' } = {}) {
354
+ start({ node = false, inject = false, error = false, index = 'index', } = {}) {
352
355
  return tslib.__awaiter(this, void 0, void 0, function* () {
353
356
  const pkg = yield this.getPackage();
354
357
  const input = glob__default["default"].sync(`src/${index}.{${indexExt}}`);
@@ -387,8 +390,10 @@ class InnetJS {
387
390
  warn(warning);
388
391
  },
389
392
  };
393
+ let preset;
390
394
  this.withLint(options);
391
395
  if (node) {
396
+ preset = { NODE_ENV: 'dev' };
392
397
  // @ts-expect-error
393
398
  options.output.format = 'cjs';
394
399
  options.external = Object.keys((pkg === null || pkg === void 0 ? void 0 : pkg.dependencies) || {});
@@ -429,7 +434,7 @@ class InnetJS {
429
434
  exclude: stringExcludeDom,
430
435
  }), this.createClient(key, cert, pkg, path__default["default"].parse(input[0]).name, inject), 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 } } : {}))));
431
436
  }
432
- this.withEnv(options, true);
437
+ this.withEnv(options, true, preset);
433
438
  const watcher = rollup__default["default"].watch(options);
434
439
  watcher.on('event', (e) => tslib.__awaiter(this, void 0, void 0, function* () {
435
440
  if (e.code === 'ERROR') {
@@ -543,6 +548,7 @@ class InnetJS {
543
548
  plugins: [
544
549
  json__default["default"](),
545
550
  ts__default["default"]({
551
+ tsconfig: this.tsconfig,
546
552
  compilerOptions: {
547
553
  sourceMap: false,
548
554
  outDir: releaseFolder,
@@ -651,10 +657,11 @@ class InnetJS {
651
657
  }));
652
658
  }
653
659
  }
654
- withEnv(options, virtual) {
660
+ withEnv(options, virtual, preset) {
655
661
  options.plugins.push(env__default["default"](this.envPrefix, {
656
662
  include: options.input,
657
663
  virtual,
664
+ preset,
658
665
  }));
659
666
  }
660
667
  increaseVersion(release) {
@@ -778,7 +785,7 @@ class InnetJS {
778
785
  }
779
786
 
780
787
  (function () {
781
- const env = {"__INNETJS__PACKAGE_VERSION":"2.6.0-alpha.9"};
788
+ const env = {"__INNETJS__PACKAGE_VERSION":"3.0.0"};
782
789
  if (typeof process === 'undefined') {
783
790
  globalThis.process = { env: env };
784
791
  } else if (process.env) {
package/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import rollup from 'rollup';
2
+ import { EnvValues } from 'rollup-plugin-process-env';
2
3
  export interface ReleaseOptions {
3
4
  node?: boolean;
4
5
  index?: string;
@@ -33,8 +34,9 @@ export declare class InnetJS {
33
34
  api: string;
34
35
  envPrefix: string;
35
36
  simulateIP: string;
37
+ tsconfig: string;
36
38
  private package;
37
- constructor({ envPrefix, projectFolder, baseUrl, publicFolder, releaseFolder, buildFolder, srcFolder, sourcemap, cssModules, cssInJs, sslKey, sslCrt, proxy, simulateIP, port, api, }?: {
39
+ constructor({ envPrefix, projectFolder, baseUrl, publicFolder, releaseFolder, buildFolder, srcFolder, sourcemap, cssModules, cssInJs, sslKey, sslCrt, proxy, simulateIP, port, api, tsconfig, }?: {
38
40
  envPrefix?: string;
39
41
  projectFolder?: string;
40
42
  baseUrl?: string;
@@ -51,6 +53,7 @@ export declare class InnetJS {
51
53
  simulateIP?: string;
52
54
  port?: number;
53
55
  api?: string;
56
+ tsconfig?: string;
54
57
  });
55
58
  init(appName: string, { template, force }?: any): Promise<void>;
56
59
  build({ node, inject, index }?: {
@@ -58,7 +61,7 @@ export declare class InnetJS {
58
61
  inject?: boolean;
59
62
  index?: string;
60
63
  }): Promise<void>;
61
- start({ node, inject, error, index }?: {
64
+ start({ node, inject, error, index, }?: {
62
65
  node?: boolean;
63
66
  inject?: boolean;
64
67
  error?: boolean;
@@ -68,7 +71,7 @@ export declare class InnetJS {
68
71
  release({ index, pub }?: ReleaseOptions): Promise<void>;
69
72
  private _lintUsage;
70
73
  withLint(options: rollup.RollupOptions, prod?: boolean): void;
71
- withEnv(options: rollup.RollupOptions, virtual?: boolean): void;
74
+ withEnv(options: rollup.RollupOptions, virtual?: boolean, preset?: EnvValues): void;
72
75
  increaseVersion(release: string): Promise<void>;
73
76
  getPackage(): Promise<Record<string, any>>;
74
77
  createClient(key: any, cert: any, pkg: any, index: string, inject: boolean): rollup.Plugin;
package/index.js CHANGED
@@ -12,6 +12,7 @@ var json = require('@rollup/plugin-json');
12
12
  var pluginNodeResolve = require('@rollup/plugin-node-resolve');
13
13
  var ts = require('@rollup/plugin-typescript');
14
14
  var address = require('address');
15
+ var Zip = require('adm-zip');
15
16
  var autoprefixer = require('autoprefixer');
16
17
  var axios = require('axios');
17
18
  var chalk = require('chalk');
@@ -23,6 +24,7 @@ var glob = require('glob');
23
24
  var http = require('node:http');
24
25
  var https = require('node:https');
25
26
  var linesAndColumns = require('lines-and-columns');
27
+ var node_os = require('node:os');
26
28
  var path = require('node:path');
27
29
  var prompt = require('prompts');
28
30
  var rollup = require('rollup');
@@ -37,7 +39,6 @@ var styles = require('rollup-plugin-styles');
37
39
  var rollupPluginTerser = require('rollup-plugin-terser');
38
40
  var stream = require('node:stream');
39
41
  var tmp = require('tmp');
40
- var unzipper = require('unzipper');
41
42
  var node_util = require('node:util');
42
43
  var constants = require('./constants.js');
43
44
  var helpers = require('./helpers.js');
@@ -52,6 +53,7 @@ var image__default = /*#__PURE__*/_interopDefaultLegacy(image);
52
53
  var json__default = /*#__PURE__*/_interopDefaultLegacy(json);
53
54
  var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
54
55
  var address__default = /*#__PURE__*/_interopDefaultLegacy(address);
56
+ var Zip__default = /*#__PURE__*/_interopDefaultLegacy(Zip);
55
57
  var autoprefixer__default = /*#__PURE__*/_interopDefaultLegacy(autoprefixer);
56
58
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
57
59
  var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
@@ -91,7 +93,7 @@ const REG_EXT = /\.([^.]+)$/;
91
93
  const scriptExtensions = ['ts', 'js', 'tsx', 'jsx'];
92
94
  const indexExt = scriptExtensions.join(',');
93
95
  class InnetJS {
94
- constructor({ envPrefix = process.env.INNETJS_ENV_PREFIX || 'INNETJS_', 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 || '', simulateIP = process.env.IP, port = process.env.PORT ? +process.env.PORT : 3000, api = process.env.API || '/api/?*', } = {}) {
96
+ constructor({ envPrefix = process.env.INNETJS_ENV_PREFIX || 'INNETJS_', 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 || '', simulateIP = process.env.IP, port = process.env.PORT ? +process.env.PORT : 3000, api = process.env.API || '/api/?*', tsconfig = process.env.TSCONFIG, } = {}) {
95
97
  this.projectFolder = path__default["default"].resolve(projectFolder);
96
98
  this.publicFolder = path__default["default"].resolve(publicFolder);
97
99
  this.releaseFolder = path__default["default"].resolve(releaseFolder);
@@ -118,6 +120,7 @@ class InnetJS {
118
120
  this.baseUrl = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;
119
121
  this.envPrefix = envPrefix;
120
122
  this.simulateIP = simulateIP;
123
+ this.tsconfig = tsconfig;
121
124
  }
122
125
  // Methods
123
126
  init(appName, { template, force = false } = {}) {
@@ -155,26 +158,26 @@ class InnetJS {
155
158
  }));
156
159
  }
157
160
  yield logger__default["default"].start('Download template', () => tslib.__awaiter(this, void 0, void 0, function* () {
158
- if (!fs__default["default"].existsSync(appPath)) {
159
- fs__default["default"].mkdirSync(appPath);
160
- }
161
- const zipPath = `${path__default["default"].join(appPath, 'template.zip')}`;
161
+ const tmpPath = node_os.tmpdir();
162
+ const zipPath = path__default["default"].join(tmpPath, 'template.zip');
163
+ const unzipPath = path__default["default"].join(tmpPath, `innetjs-templates-${template}`);
162
164
  const { data } = yield axios__default["default"].get(`https://github.com/d8corp/innetjs-templates/archive/refs/heads/${template}.zip`, {
163
165
  responseType: 'stream',
164
166
  });
165
167
  yield pipeline(data, fs__default["default"].createWriteStream(zipPath));
168
+ const zip = new Zip__default["default"](zipPath);
166
169
  yield new Promise((resolve, reject) => {
167
- fs__default["default"].createReadStream(zipPath)
168
- .pipe(unzipper.Parse())
169
- .on('entry', (entry) => {
170
- const fileName = entry.path;
171
- const filePath = path__default["default"].join(appPath, fileName);
172
- entry.pipe(fs__default["default"].createWriteStream(filePath));
173
- })
174
- .on('close', resolve)
175
- .on('error', reject);
170
+ zip.extractAllToAsync(tmpPath, false, false, (error) => {
171
+ if (error) {
172
+ reject(error);
173
+ }
174
+ else {
175
+ resolve(undefined);
176
+ }
177
+ });
176
178
  });
177
179
  yield fs__default["default"].remove(zipPath);
180
+ yield fs__default["default"].move(unzipPath, appPath, { overwrite: true });
178
181
  }));
179
182
  yield logger__default["default"].start('Install packages', () => execAsync(`cd ${appPath} && npm i`));
180
183
  });
@@ -276,7 +279,7 @@ class InnetJS {
276
279
  }
277
280
  });
278
281
  }
279
- start({ node = false, inject = false, error = false, index = 'index' } = {}) {
282
+ start({ node = false, inject = false, error = false, index = 'index', } = {}) {
280
283
  return tslib.__awaiter(this, void 0, void 0, function* () {
281
284
  const pkg = yield this.getPackage();
282
285
  const input = glob__default["default"].sync(`src/${index}.{${indexExt}}`);
@@ -315,8 +318,10 @@ class InnetJS {
315
318
  warn(warning);
316
319
  },
317
320
  };
321
+ let preset;
318
322
  this.withLint(options);
319
323
  if (node) {
324
+ preset = { NODE_ENV: 'dev' };
320
325
  // @ts-expect-error
321
326
  options.output.format = 'cjs';
322
327
  options.external = Object.keys((pkg === null || pkg === void 0 ? void 0 : pkg.dependencies) || {});
@@ -357,7 +362,7 @@ class InnetJS {
357
362
  exclude: constants.stringExcludeDom,
358
363
  }), this.createClient(key, cert, pkg, path__default["default"].parse(input[0]).name, inject), 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 } } : {}))));
359
364
  }
360
- this.withEnv(options, true);
365
+ this.withEnv(options, true, preset);
361
366
  const watcher = rollup__default["default"].watch(options);
362
367
  watcher.on('event', (e) => tslib.__awaiter(this, void 0, void 0, function* () {
363
368
  if (e.code === 'ERROR') {
@@ -471,6 +476,7 @@ class InnetJS {
471
476
  plugins: [
472
477
  json__default["default"](),
473
478
  ts__default["default"]({
479
+ tsconfig: this.tsconfig,
474
480
  compilerOptions: {
475
481
  sourceMap: false,
476
482
  outDir: releaseFolder,
@@ -579,10 +585,11 @@ class InnetJS {
579
585
  }));
580
586
  }
581
587
  }
582
- withEnv(options, virtual) {
588
+ withEnv(options, virtual, preset) {
583
589
  options.plugins.push(env__default["default"](this.envPrefix, {
584
590
  include: options.input,
585
591
  virtual,
592
+ preset,
586
593
  }));
587
594
  }
588
595
  increaseVersion(release) {
package/index.mjs CHANGED
@@ -8,6 +8,7 @@ import json from '@rollup/plugin-json';
8
8
  import { nodeResolve } from '@rollup/plugin-node-resolve';
9
9
  import ts from '@rollup/plugin-typescript';
10
10
  import address from 'address';
11
+ import Zip from 'adm-zip';
11
12
  import autoprefixer from 'autoprefixer';
12
13
  import axios from 'axios';
13
14
  import chalk from 'chalk';
@@ -19,6 +20,7 @@ import glob from 'glob';
19
20
  import http from 'node:http';
20
21
  import https from 'node:https';
21
22
  import { LinesAndColumns } from 'lines-and-columns';
23
+ import { tmpdir } from 'node:os';
22
24
  import path from 'node:path';
23
25
  import prompt from 'prompts';
24
26
  import rollup from 'rollup';
@@ -33,7 +35,6 @@ import styles from 'rollup-plugin-styles';
33
35
  import { terser } from 'rollup-plugin-terser';
34
36
  import stream from 'node:stream';
35
37
  import tmp from 'tmp';
36
- import { Parse } from 'unzipper';
37
38
  import { promisify } from 'node:util';
38
39
  import { stringExcludeNode, imageInclude, stringExcludeDom, lintInclude } from './constants.mjs';
39
40
  import { reporter, convertIndexFile, getFile } from './helpers.mjs';
@@ -55,7 +56,7 @@ const REG_EXT = /\.([^.]+)$/;
55
56
  const scriptExtensions = ['ts', 'js', 'tsx', 'jsx'];
56
57
  const indexExt = scriptExtensions.join(',');
57
58
  class InnetJS {
58
- constructor({ envPrefix = process.env.INNETJS_ENV_PREFIX || 'INNETJS_', 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 || '', simulateIP = process.env.IP, port = process.env.PORT ? +process.env.PORT : 3000, api = process.env.API || '/api/?*', } = {}) {
59
+ constructor({ envPrefix = process.env.INNETJS_ENV_PREFIX || 'INNETJS_', 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 || '', simulateIP = process.env.IP, port = process.env.PORT ? +process.env.PORT : 3000, api = process.env.API || '/api/?*', tsconfig = process.env.TSCONFIG, } = {}) {
59
60
  this.projectFolder = path.resolve(projectFolder);
60
61
  this.publicFolder = path.resolve(publicFolder);
61
62
  this.releaseFolder = path.resolve(releaseFolder);
@@ -82,6 +83,7 @@ class InnetJS {
82
83
  this.baseUrl = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;
83
84
  this.envPrefix = envPrefix;
84
85
  this.simulateIP = simulateIP;
86
+ this.tsconfig = tsconfig;
85
87
  }
86
88
  // Methods
87
89
  init(appName, { template, force = false } = {}) {
@@ -119,26 +121,26 @@ class InnetJS {
119
121
  }));
120
122
  }
121
123
  yield logger.start('Download template', () => __awaiter(this, void 0, void 0, function* () {
122
- if (!fs.existsSync(appPath)) {
123
- fs.mkdirSync(appPath);
124
- }
125
- const zipPath = `${path.join(appPath, 'template.zip')}`;
124
+ const tmpPath = tmpdir();
125
+ const zipPath = path.join(tmpPath, 'template.zip');
126
+ const unzipPath = path.join(tmpPath, `innetjs-templates-${template}`);
126
127
  const { data } = yield axios.get(`https://github.com/d8corp/innetjs-templates/archive/refs/heads/${template}.zip`, {
127
128
  responseType: 'stream',
128
129
  });
129
130
  yield pipeline(data, fs.createWriteStream(zipPath));
131
+ const zip = new Zip(zipPath);
130
132
  yield new Promise((resolve, reject) => {
131
- fs.createReadStream(zipPath)
132
- .pipe(Parse())
133
- .on('entry', (entry) => {
134
- const fileName = entry.path;
135
- const filePath = path.join(appPath, fileName);
136
- entry.pipe(fs.createWriteStream(filePath));
137
- })
138
- .on('close', resolve)
139
- .on('error', reject);
133
+ zip.extractAllToAsync(tmpPath, false, false, (error) => {
134
+ if (error) {
135
+ reject(error);
136
+ }
137
+ else {
138
+ resolve(undefined);
139
+ }
140
+ });
140
141
  });
141
142
  yield fs.remove(zipPath);
143
+ yield fs.move(unzipPath, appPath, { overwrite: true });
142
144
  }));
143
145
  yield logger.start('Install packages', () => execAsync(`cd ${appPath} && npm i`));
144
146
  });
@@ -240,7 +242,7 @@ class InnetJS {
240
242
  }
241
243
  });
242
244
  }
243
- start({ node = false, inject = false, error = false, index = 'index' } = {}) {
245
+ start({ node = false, inject = false, error = false, index = 'index', } = {}) {
244
246
  return __awaiter(this, void 0, void 0, function* () {
245
247
  const pkg = yield this.getPackage();
246
248
  const input = glob.sync(`src/${index}.{${indexExt}}`);
@@ -279,8 +281,10 @@ class InnetJS {
279
281
  warn(warning);
280
282
  },
281
283
  };
284
+ let preset;
282
285
  this.withLint(options);
283
286
  if (node) {
287
+ preset = { NODE_ENV: 'dev' };
284
288
  // @ts-expect-error
285
289
  options.output.format = 'cjs';
286
290
  options.external = Object.keys((pkg === null || pkg === void 0 ? void 0 : pkg.dependencies) || {});
@@ -321,7 +325,7 @@ class InnetJS {
321
325
  exclude: stringExcludeDom,
322
326
  }), this.createClient(key, cert, pkg, path.parse(input[0]).name, inject), 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 } } : {}))));
323
327
  }
324
- this.withEnv(options, true);
328
+ this.withEnv(options, true, preset);
325
329
  const watcher = rollup.watch(options);
326
330
  watcher.on('event', (e) => __awaiter(this, void 0, void 0, function* () {
327
331
  if (e.code === 'ERROR') {
@@ -435,6 +439,7 @@ class InnetJS {
435
439
  plugins: [
436
440
  json(),
437
441
  ts({
442
+ tsconfig: this.tsconfig,
438
443
  compilerOptions: {
439
444
  sourceMap: false,
440
445
  outDir: releaseFolder,
@@ -543,10 +548,11 @@ class InnetJS {
543
548
  }));
544
549
  }
545
550
  }
546
- withEnv(options, virtual) {
551
+ withEnv(options, virtual, preset) {
547
552
  options.plugins.push(env(this.envPrefix, {
548
553
  include: options.input,
549
554
  virtual,
555
+ preset,
550
556
  }));
551
557
  }
552
558
  increaseVersion(release) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "innetjs",
3
- "version": "2.6.0-alpha.9",
3
+ "version": "3.0.0",
4
4
  "description": "CLI for innet boilerplate",
5
5
  "homepage": "https://github.com/d8corp/innetjs",
6
6
  "author": "Mikhail Lysikov <d8corp@mail.ru>",
@@ -57,6 +57,7 @@
57
57
  "@rollup/plugin-node-resolve": "^15.0.1",
58
58
  "@rollup/plugin-typescript": "^11.0.0",
59
59
  "address": "^1.2.1",
60
+ "adm-zip": "^0.5.10",
60
61
  "autoprefixer": "^10.4.13",
61
62
  "axios": "^1.1.3",
62
63
  "chalk": "^4.1.2",
@@ -75,18 +76,17 @@
75
76
  "rollup-plugin-external-node-modules": "^1.0.1",
76
77
  "rollup-plugin-filesize": "^9.1.2",
77
78
  "rollup-plugin-import-assets": "^1.1.1",
78
- "rollup-plugin-innet-jsx": "^1.3.2",
79
+ "rollup-plugin-innet-jsx": "^2.0.0",
79
80
  "rollup-plugin-livereload": "^2.0.5",
80
81
  "rollup-plugin-node-externals": "^5.0.2",
81
82
  "rollup-plugin-polyfill-node": "^0.11.0",
82
83
  "rollup-plugin-preserve-shebangs": "^0.2.0",
83
- "rollup-plugin-process-env": "^1.0.6",
84
+ "rollup-plugin-process-env": "^1.0.7",
84
85
  "rollup-plugin-string": "^3.0.0",
85
86
  "rollup-plugin-styles": "^4.0.0",
86
87
  "rollup-plugin-terser": "^7.0.2",
87
88
  "sass": "^1.55.0",
88
89
  "tmp": "^0.2.1",
89
- "typescript": "^4.8.4",
90
- "unzipper": "^0.10.11"
90
+ "typescript": "^4.8.4"
91
91
  }
92
92
  }