@tramvai/cli 3.12.0 → 3.14.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.
Files changed (65) hide show
  1. package/lib/api/start/providers/application/shared.d.ts.map +1 -1
  2. package/lib/api/start/providers/application/shared.js +5 -3
  3. package/lib/api/start/providers/application/shared.js.map +1 -1
  4. package/lib/api/start/providers/child-app/shared.d.ts.map +1 -1
  5. package/lib/api/start/providers/child-app/shared.js +6 -4
  6. package/lib/api/start/providers/child-app/shared.js.map +1 -1
  7. package/lib/api/start/providers/module/shared.d.ts.map +1 -1
  8. package/lib/api/start/providers/module/shared.js +6 -4
  9. package/lib/api/start/providers/module/shared.js.map +1 -1
  10. package/lib/api/start/utils/stopServer.d.ts.map +1 -1
  11. package/lib/api/start/utils/stopServer.js.map +1 -1
  12. package/lib/api/start-prod/application.d.ts.map +1 -1
  13. package/lib/api/start-prod/application.js +0 -2
  14. package/lib/api/start-prod/application.js.map +1 -1
  15. package/lib/api/start-prod/providers/shared.d.ts.map +1 -1
  16. package/lib/api/start-prod/providers/shared.js +3 -1
  17. package/lib/api/start-prod/providers/shared.js.map +1 -1
  18. package/lib/commands/analyze/command.d.ts.map +1 -1
  19. package/lib/commands/analyze/command.js +2 -0
  20. package/lib/commands/analyze/command.js.map +1 -1
  21. package/lib/commands/build/command.d.ts.map +1 -1
  22. package/lib/commands/build/command.js +2 -0
  23. package/lib/commands/build/command.js.map +1 -1
  24. package/lib/commands/start/command.d.ts.map +1 -1
  25. package/lib/commands/start/command.js +2 -0
  26. package/lib/commands/start/command.js.map +1 -1
  27. package/lib/commands/start-prod/command.d.ts.map +1 -1
  28. package/lib/commands/start-prod/command.js +2 -0
  29. package/lib/commands/start-prod/command.js.map +1 -1
  30. package/lib/commands/static/application.d.ts.map +1 -1
  31. package/lib/commands/static/application.js +8 -3
  32. package/lib/commands/static/application.js.map +1 -1
  33. package/lib/di/providers/network.d.ts.map +1 -1
  34. package/lib/di/providers/network.js +6 -0
  35. package/lib/di/providers/network.js.map +1 -1
  36. package/lib/models/port-manager.d.ts +21 -7
  37. package/lib/models/port-manager.d.ts.map +1 -1
  38. package/lib/models/port-manager.js +140 -26
  39. package/lib/models/port-manager.js.map +1 -1
  40. package/lib/schema/autogeneratedSchema.json +15 -15
  41. package/lib/validators/commands/checkSwcDependencies.d.ts +3 -0
  42. package/lib/validators/commands/checkSwcDependencies.d.ts.map +1 -0
  43. package/lib/validators/commands/checkSwcDependencies.js +40 -0
  44. package/lib/validators/commands/checkSwcDependencies.js.map +1 -0
  45. package/package.json +5 -2
  46. package/schema.json +15 -15
  47. package/src/api/benchmark/__integration__/start.test.ts +0 -2
  48. package/src/api/start/__integration__/start.test.ts +14 -95
  49. package/src/api/start/providers/application/shared.ts +4 -2
  50. package/src/api/start/providers/child-app/shared.ts +5 -2
  51. package/src/api/start/providers/module/shared.ts +5 -2
  52. package/src/api/start/utils/stopServer.ts +1 -0
  53. package/src/api/start-prod/application.ts +1 -4
  54. package/src/api/start-prod/providers/shared.ts +5 -2
  55. package/src/commands/analyze/command.ts +2 -0
  56. package/src/commands/build/command.ts +2 -0
  57. package/src/commands/start/command.ts +2 -0
  58. package/src/commands/start-prod/command.ts +2 -0
  59. package/src/commands/static/application.ts +10 -4
  60. package/src/di/providers/network.ts +6 -0
  61. package/src/library/swc/__integration__/swc.start.test.ts +0 -2
  62. package/src/models/port-manager.ts +154 -35
  63. package/src/schema/autogeneratedSchema.json +15 -15
  64. package/src/validators/commands/checkSwcDependencies.spec.ts +117 -0
  65. package/src/validators/commands/checkSwcDependencies.ts +40 -0
@@ -2,13 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PortManager = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const fs_extra_1 = require("fs-extra");
6
+ const path_1 = require("path");
7
+ const find_cache_dir_1 = tslib_1.__importDefault(require("find-cache-dir"));
5
8
  const detect_port_1 = tslib_1.__importDefault(require("detect-port"));
9
+ const proper_lockfile_1 = require("proper-lockfile");
6
10
  class PortManager {
7
- constructor({ configEntry, commandParams }) {
11
+ constructor({ configEntry, commandParams, logger }) {
8
12
  this.port = null;
9
13
  this.staticPort = null;
10
14
  this.configEntry = configEntry;
11
15
  this.commandParams = commandParams;
16
+ this.logger = logger;
17
+ this.cachePath = (0, path_1.join)((0, find_cache_dir_1.default)({ cwd: __dirname, create: true, name: 'tramvai' }), 'used-ports');
12
18
  }
13
19
  /**
14
20
  * Try to detect port considering the fact, that if user requests
@@ -18,55 +24,163 @@ class PortManager {
18
24
  * because we must pass a final number to the config manager.
19
25
  */
20
26
  computeAvailablePorts() {
27
+ var _a;
21
28
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
22
- if (this.commandParams.port !== undefined && this.commandParams.port !== 0) {
23
- // @ts-expect-error There is a string actually
24
- this.port = parseInt(this.commandParams.port, 10);
29
+ yield this.createCacheFile();
30
+ const release = yield this.lockCacheFile();
31
+ try {
32
+ if (this.commandParams.port !== undefined && this.commandParams.port !== 0) {
33
+ // @ts-expect-error There is a string actually
34
+ this.port = parseInt(this.commandParams.port, 10);
35
+ }
36
+ if (this.commandParams.staticPort !== undefined && this.commandParams.staticPort !== 0) {
37
+ // @ts-expect-error There is a string actually
38
+ this.staticPort = parseInt(this.commandParams.staticPort, 10);
39
+ }
40
+ switch (this.configEntry.type) {
41
+ case 'child-app':
42
+ yield this.forChildApp();
43
+ break;
44
+ case 'module':
45
+ yield this.forModule();
46
+ break;
47
+ case 'application':
48
+ yield this.forApplication();
49
+ break;
50
+ default:
51
+ break;
52
+ }
53
+ yield this.appendCacheFile([this.port, this.staticPort].join(','));
25
54
  }
26
- if (this.commandParams.staticPort !== undefined && this.commandParams.staticPort !== 0) {
27
- // @ts-expect-error There is a string actually
28
- this.staticPort = parseInt(this.commandParams.staticPort, 10);
55
+ catch (error) {
56
+ this.logger.event({
57
+ type: 'warning',
58
+ event: 'PORT_MANAGER:GET_AVAILABLE_PORTS',
59
+ message: `Can't get free ports for ${this.configEntry.type}:`,
60
+ payload: (_a = error.message) !== null && _a !== void 0 ? _a : '',
61
+ });
29
62
  }
30
- switch (this.configEntry.type) {
31
- case 'child-app':
32
- yield this.forChildApp();
33
- break;
34
- case 'module':
35
- yield this.forModule();
36
- break;
37
- case 'application':
38
- yield this.forApplication();
39
- break;
40
- default:
41
- break;
63
+ finally {
64
+ yield release();
65
+ }
66
+ });
67
+ }
68
+ /**
69
+ * Cleanup a cache file by removing ports were written previously.
70
+ */
71
+ cleanup() {
72
+ var _a;
73
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
74
+ const release = yield this.lockCacheFile();
75
+ try {
76
+ const cache = yield this.readCacheFile();
77
+ yield this.writeCacheFile(cache
78
+ .filter(Boolean)
79
+ .filter((port) => port !== this.port.toString() && port !== this.staticPort.toString())
80
+ .join(','));
81
+ }
82
+ catch (error) {
83
+ this.logger.event({
84
+ type: 'warning',
85
+ event: 'PORT_MANAGER:CLEANUP',
86
+ message: "Can't perform a cleanup of previously used ports:",
87
+ payload: (_a = error.message) !== null && _a !== void 0 ? _a : '',
88
+ });
89
+ }
90
+ finally {
91
+ yield release();
42
92
  }
43
93
  });
44
94
  }
45
95
  forApplication() {
46
96
  var _a, _b;
47
97
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
48
- this.port = (_a = this.port) !== null && _a !== void 0 ? _a : (yield (0, detect_port_1.default)(PortManager.DEFAULT_PORT));
49
- this.staticPort = (_b = this.staticPort) !== null && _b !== void 0 ? _b : (yield (0, detect_port_1.default)(PortManager.DEFAULT_STATIC_PORT));
98
+ this.port = (_a = this.port) !== null && _a !== void 0 ? _a : (yield this.resolveFreePort(PortManager.DEFAULT_PORT));
99
+ this.staticPort =
100
+ (_b = this.staticPort) !== null && _b !== void 0 ? _b : (yield this.resolveFreePort(PortManager.DEFAULT_STATIC_PORT));
50
101
  });
51
102
  }
52
103
  forModule() {
53
104
  var _a, _b;
54
105
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
55
- this.port = (_a = this.port) !== null && _a !== void 0 ? _a : (yield (0, detect_port_1.default)(PortManager.DEFAULT_MODULE_PORT));
56
- this.staticPort = (_b = this.staticPort) !== null && _b !== void 0 ? _b : (yield (0, detect_port_1.default)(PortManager.DEFAULT_MODULE_STATIC_PORT));
106
+ this.port = (_a = this.port) !== null && _a !== void 0 ? _a : (yield this.resolveFreePort(PortManager.DEFAULT_MODULE_PORT));
107
+ this.staticPort =
108
+ (_b = this.staticPort) !== null && _b !== void 0 ? _b : (yield this.resolveFreePort(PortManager.DEFAULT_MODULE_STATIC_PORT));
57
109
  });
58
110
  }
59
111
  forChildApp() {
60
112
  var _a, _b;
61
113
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
62
- this.port = (_a = this.port) !== null && _a !== void 0 ? _a : (yield (0, detect_port_1.default)(PortManager.DEFAULT_MODULE_PORT));
63
- this.staticPort = (_b = this.staticPort) !== null && _b !== void 0 ? _b : (yield (0, detect_port_1.default)(PortManager.DEFAULT_MODULE_STATIC_PORT));
114
+ this.port = (_a = this.port) !== null && _a !== void 0 ? _a : (yield this.resolveFreePort(PortManager.DEFAULT_MODULE_PORT));
115
+ this.staticPort =
116
+ (_b = this.staticPort) !== null && _b !== void 0 ? _b : (yield this.resolveFreePort(PortManager.DEFAULT_MODULE_STATIC_PORT));
117
+ });
118
+ }
119
+ lockCacheFile() {
120
+ return (0, proper_lockfile_1.lock)(this.cachePath, { retries: 10 });
121
+ }
122
+ createCacheFile() {
123
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
124
+ try {
125
+ yield (0, fs_extra_1.access)(this.cachePath);
126
+ }
127
+ catch (error) {
128
+ yield (0, fs_extra_1.outputFile)(this.cachePath, '');
129
+ }
130
+ });
131
+ }
132
+ readCacheFile() {
133
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
134
+ try {
135
+ const content = yield (0, fs_extra_1.readFile)(this.cachePath, { encoding: 'utf-8' });
136
+ return content.split(',');
137
+ }
138
+ catch (error) {
139
+ return [];
140
+ }
141
+ });
142
+ }
143
+ writeCacheFile(content) {
144
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
145
+ yield (0, fs_extra_1.outputFile)(this.cachePath, content);
146
+ });
147
+ }
148
+ appendCacheFile(content) {
149
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
150
+ yield (0, fs_extra_1.appendFile)(this.cachePath, `,${content}`);
151
+ });
152
+ }
153
+ resolveFreePort(initial) {
154
+ var _a;
155
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
156
+ try {
157
+ const cache = yield this.readCacheFile();
158
+ let port = yield (0, detect_port_1.default)(initial);
159
+ let attempts = 1;
160
+ while (cache.includes(port.toString())) {
161
+ if (attempts >= 3) {
162
+ throw new Error(`Max attempts exceeded (${attempts})`);
163
+ }
164
+ port = yield (0, detect_port_1.default)(0);
165
+ attempts++;
166
+ }
167
+ return port;
168
+ }
169
+ catch (error) {
170
+ this.logger.event({
171
+ type: 'info',
172
+ event: 'PORT_MANAGER:RESOLVE_FREE_PORT',
173
+ message: "Can't resolve a free port, fallback to an initial one:",
174
+ payload: (_a = error.message) !== null && _a !== void 0 ? _a : '',
175
+ });
176
+ return initial;
177
+ }
64
178
  });
65
179
  }
66
180
  }
67
181
  exports.PortManager = PortManager;
68
182
  PortManager.DEFAULT_PORT = 3000;
69
- PortManager.DEFAULT_MODULE_PORT = 4040;
183
+ PortManager.DEFAULT_MODULE_PORT = 3040;
70
184
  PortManager.DEFAULT_STATIC_PORT = 4000;
71
185
  PortManager.DEFAULT_MODULE_STATIC_PORT = 4040;
72
186
  //# sourceMappingURL=port-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"port-manager.js","sourceRoot":"","sources":["../../src/models/port-manager.ts"],"names":[],"mappings":";;;;AAAA,sEAAqC;AAWrC,MAAa,WAAW;IAYtB,YAAY,EAAE,WAAW,EAAE,aAAa,EAA6B;QAH9D,SAAI,GAAkB,IAAI,CAAC;QAC3B,eAAU,GAAkB,IAAI,CAAC;QAGtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACU,qBAAqB;;YAChC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC1E,8CAA8C;gBAC9C,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aACnD;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,KAAK,CAAC,EAAE;gBACtF,8CAA8C;gBAC9C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;aAC/D;YAED,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;gBAC7B,KAAK,WAAW;oBACd,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzB,MAAM;gBAER,KAAK,QAAQ;oBACX,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;oBACvB,MAAM;gBAER,KAAK,aAAa;oBAChB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,MAAM;gBAER;oBACE,MAAM;aACT;QACH,CAAC;KAAA;IAEa,cAAc;;;YAC1B,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,CAAC,MAAM,IAAA,qBAAU,EAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,CAAC,MAAM,IAAA,qBAAU,EAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;;KAC1F;IAEa,SAAS;;;YACrB,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,CAAC,MAAM,IAAA,qBAAU,EAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,CAAC,MAAM,IAAA,qBAAU,EAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,CAAC;;KACjG;IAEa,WAAW;;;YACvB,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,CAAC,MAAM,IAAA,qBAAU,EAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,CAAC,MAAM,IAAA,qBAAU,EAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,CAAC;;KACjG;;AAlEH,kCAmEC;AAlEQ,wBAAY,GAAG,IAAI,AAAP,CAAQ;AACpB,+BAAmB,GAAG,IAAI,AAAP,CAAQ;AAC3B,+BAAmB,GAAG,IAAI,AAAP,CAAQ;AAC3B,sCAA0B,GAAG,IAAI,AAAP,CAAQ"}
1
+ {"version":3,"file":"port-manager.js","sourceRoot":"","sources":["../../src/models/port-manager.ts"],"names":[],"mappings":"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"}
@@ -1144,23 +1144,23 @@
1144
1144
  "dotAll": {
1145
1145
  "type": "boolean"
1146
1146
  },
1147
- "__@match@6838": {
1147
+ "__@match@6850": {
1148
1148
  "type": "object",
1149
1149
  "additionalProperties": false
1150
1150
  },
1151
- "__@replace@6840": {
1151
+ "__@replace@6852": {
1152
1152
  "type": "object",
1153
1153
  "additionalProperties": false
1154
1154
  },
1155
- "__@search@6843": {
1155
+ "__@search@6855": {
1156
1156
  "type": "object",
1157
1157
  "additionalProperties": false
1158
1158
  },
1159
- "__@split@6845": {
1159
+ "__@split@6857": {
1160
1160
  "type": "object",
1161
1161
  "additionalProperties": false
1162
1162
  },
1163
- "__@matchAll@6847": {
1163
+ "__@matchAll@6859": {
1164
1164
  "type": "object",
1165
1165
  "additionalProperties": false
1166
1166
  }
@@ -1814,23 +1814,23 @@
1814
1814
  "dotAll": {
1815
1815
  "type": "boolean"
1816
1816
  },
1817
- "__@match@6838": {
1817
+ "__@match@6850": {
1818
1818
  "type": "object",
1819
1819
  "additionalProperties": false
1820
1820
  },
1821
- "__@replace@6840": {
1821
+ "__@replace@6852": {
1822
1822
  "type": "object",
1823
1823
  "additionalProperties": false
1824
1824
  },
1825
- "__@search@6843": {
1825
+ "__@search@6855": {
1826
1826
  "type": "object",
1827
1827
  "additionalProperties": false
1828
1828
  },
1829
- "__@split@6845": {
1829
+ "__@split@6857": {
1830
1830
  "type": "object",
1831
1831
  "additionalProperties": false
1832
1832
  },
1833
- "__@matchAll@6847": {
1833
+ "__@matchAll@6859": {
1834
1834
  "type": "object",
1835
1835
  "additionalProperties": false
1836
1836
  }
@@ -2484,23 +2484,23 @@
2484
2484
  "dotAll": {
2485
2485
  "type": "boolean"
2486
2486
  },
2487
- "__@match@6838": {
2487
+ "__@match@6850": {
2488
2488
  "type": "object",
2489
2489
  "additionalProperties": false
2490
2490
  },
2491
- "__@replace@6840": {
2491
+ "__@replace@6852": {
2492
2492
  "type": "object",
2493
2493
  "additionalProperties": false
2494
2494
  },
2495
- "__@search@6843": {
2495
+ "__@search@6855": {
2496
2496
  "type": "object",
2497
2497
  "additionalProperties": false
2498
2498
  },
2499
- "__@split@6845": {
2499
+ "__@split@6857": {
2500
2500
  "type": "object",
2501
2501
  "additionalProperties": false
2502
2502
  },
2503
- "__@matchAll@6847": {
2503
+ "__@matchAll@6859": {
2504
2504
  "type": "object",
2505
2505
  "additionalProperties": false
2506
2506
  }
@@ -0,0 +1,3 @@
1
+ import type { Validator } from './validator.h';
2
+ export declare const checkSwcDependencies: Validator;
3
+ //# sourceMappingURL=checkSwcDependencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkSwcDependencies.d.ts","sourceRoot":"","sources":["../../../src/validators/commands/checkSwcDependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,eAAO,MAAM,oBAAoB,EAAE,SAoClC,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkSwcDependencies = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const resolve_1 = require("resolve");
6
+ const checkSwcDependencies = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
7
+ const rootDir = process.cwd();
8
+ const packagePath = `@swc/core/package.json`;
9
+ const pathFromCli = (0, resolve_1.sync)(packagePath);
10
+ const pathFromRoot = (0, resolve_1.sync)(packagePath, { basedir: rootDir });
11
+ const pathFromRootToIntegration = (0, resolve_1.sync)(`@tramvai/swc-integration/package.json`, {
12
+ basedir: rootDir,
13
+ });
14
+ let versionFromIntegration = '';
15
+ let versionFromRoot = '_from_root_version_';
16
+ let versionFromCli = '_from_cli_version_';
17
+ try {
18
+ versionFromIntegration = require(pathFromRootToIntegration).dependencies['@swc/core'];
19
+ versionFromRoot = require(pathFromRoot).version;
20
+ versionFromCli = require(pathFromCli).version;
21
+ }
22
+ catch (e) { }
23
+ const allVersionsAreCorrect = versionFromRoot === versionFromCli && versionFromCli === versionFromIntegration;
24
+ if (!versionFromIntegration || allVersionsAreCorrect) {
25
+ return {
26
+ name: 'checkSwcDependencies',
27
+ status: 'ok',
28
+ };
29
+ }
30
+ return {
31
+ name: 'checkSwcDependencies',
32
+ status: 'error',
33
+ message: `Version of @swc/core mismatch between
34
+ @tramvai/swc-integration (version: ${versionFromIntegration}),
35
+ @tramvai/cli (version: ${versionFromCli}) and
36
+ process.cwd() (version: ${versionFromRoot})`,
37
+ };
38
+ });
39
+ exports.checkSwcDependencies = checkSwcDependencies;
40
+ //# sourceMappingURL=checkSwcDependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkSwcDependencies.js","sourceRoot":"","sources":["../../../src/validators/commands/checkSwcDependencies.ts"],"names":[],"mappings":";;;;AAAA,qCAA0C;AAGnC,MAAM,oBAAoB,GAAc,GAAS,EAAE;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,wBAAwB,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,WAAW,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,IAAA,cAAO,EAAC,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,MAAM,yBAAyB,GAAG,IAAA,cAAO,EAAC,uCAAuC,EAAE;QACjF,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,IAAI,sBAAsB,GAAG,EAAE,CAAC;IAChC,IAAI,eAAe,GAAG,qBAAqB,CAAC;IAC5C,IAAI,cAAc,GAAG,oBAAoB,CAAC;IAC1C,IAAI;QACF,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACtF,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;QAChD,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;KAC/C;IAAC,OAAO,CAAC,EAAE,GAAE;IAEd,MAAM,qBAAqB,GACzB,eAAe,KAAK,cAAc,IAAI,cAAc,KAAK,sBAAsB,CAAC;IAElF,IAAI,CAAC,sBAAsB,IAAI,qBAAqB,EAAE;QACpD,OAAO;YACL,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,IAAI;SACb,CAAC;KACH;IAED,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,OAAO;QACf,OAAO,EAAE;qCACwB,sBAAsB;yBAClC,cAAc;0BACb,eAAe,GAAG;KACzC,CAAC;AACJ,CAAC,CAAA,CAAC;AApCW,QAAA,oBAAoB,wBAoC/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tramvai/cli",
3
- "version": "3.12.0",
3
+ "version": "3.14.0",
4
4
  "description": "Cli инструмент для сборки и запуска приложений",
5
5
  "files": [
6
6
  "src",
@@ -71,7 +71,7 @@
71
71
  "@tinkoff/utils": "^2.1.3",
72
72
  "@tinkoff/webpack-dedupe-plugin": "2.0.2",
73
73
  "@tramvai/build": "4.0.1",
74
- "@tramvai/react": "3.12.0",
74
+ "@tramvai/react": "3.14.0",
75
75
  "@tramvai/tools-check-versions": "0.5.3",
76
76
  "@tramvai/tools-migrate": "0.7.3",
77
77
  "ajv": "^8.12.0",
@@ -139,6 +139,7 @@
139
139
  "prettyoutput": "^1.2.0",
140
140
  "process": "^0.11.10",
141
141
  "promise-queue": "^2.2.5",
142
+ "proper-lockfile": "^4.1.2",
142
143
  "react-refresh": "^0.14.0",
143
144
  "resolve": "^1.22.4",
144
145
  "rimraf": "^3.0.2",
@@ -174,6 +175,7 @@
174
175
  "@swc/core": "1.3.62",
175
176
  "@tramvai/tools-generate-schema": "0.2.1",
176
177
  "@types/compression": "^1.7.2",
178
+ "@types/detect-port": "^1.3.5",
177
179
  "@types/express": "^4.17.13",
178
180
  "@types/find-cache-dir": "^3.2.1",
179
181
  "@types/fs-extra": "^9.0.13",
@@ -181,6 +183,7 @@
181
183
  "@types/glob": "^7.2.0",
182
184
  "@types/http-proxy": "^1.17.9",
183
185
  "@types/inquirer": "^7.3.3",
186
+ "@types/proper-lockfile": "^4.1.4",
184
187
  "@types/resolve": "^1.20.2",
185
188
  "@types/rimraf": "^3.0.2",
186
189
  "@types/semver": "^7.3.12",
package/schema.json CHANGED
@@ -1166,23 +1166,23 @@
1166
1166
  "dotAll": {
1167
1167
  "type": "boolean"
1168
1168
  },
1169
- "__@match@6838": {
1169
+ "__@match@6850": {
1170
1170
  "type": "object",
1171
1171
  "additionalProperties": false
1172
1172
  },
1173
- "__@replace@6840": {
1173
+ "__@replace@6852": {
1174
1174
  "type": "object",
1175
1175
  "additionalProperties": false
1176
1176
  },
1177
- "__@search@6843": {
1177
+ "__@search@6855": {
1178
1178
  "type": "object",
1179
1179
  "additionalProperties": false
1180
1180
  },
1181
- "__@split@6845": {
1181
+ "__@split@6857": {
1182
1182
  "type": "object",
1183
1183
  "additionalProperties": false
1184
1184
  },
1185
- "__@matchAll@6847": {
1185
+ "__@matchAll@6859": {
1186
1186
  "type": "object",
1187
1187
  "additionalProperties": false
1188
1188
  }
@@ -1845,23 +1845,23 @@
1845
1845
  "dotAll": {
1846
1846
  "type": "boolean"
1847
1847
  },
1848
- "__@match@6838": {
1848
+ "__@match@6850": {
1849
1849
  "type": "object",
1850
1850
  "additionalProperties": false
1851
1851
  },
1852
- "__@replace@6840": {
1852
+ "__@replace@6852": {
1853
1853
  "type": "object",
1854
1854
  "additionalProperties": false
1855
1855
  },
1856
- "__@search@6843": {
1856
+ "__@search@6855": {
1857
1857
  "type": "object",
1858
1858
  "additionalProperties": false
1859
1859
  },
1860
- "__@split@6845": {
1860
+ "__@split@6857": {
1861
1861
  "type": "object",
1862
1862
  "additionalProperties": false
1863
1863
  },
1864
- "__@matchAll@6847": {
1864
+ "__@matchAll@6859": {
1865
1865
  "type": "object",
1866
1866
  "additionalProperties": false
1867
1867
  }
@@ -2524,23 +2524,23 @@
2524
2524
  "dotAll": {
2525
2525
  "type": "boolean"
2526
2526
  },
2527
- "__@match@6838": {
2527
+ "__@match@6850": {
2528
2528
  "type": "object",
2529
2529
  "additionalProperties": false
2530
2530
  },
2531
- "__@replace@6840": {
2531
+ "__@replace@6852": {
2532
2532
  "type": "object",
2533
2533
  "additionalProperties": false
2534
2534
  },
2535
- "__@search@6843": {
2535
+ "__@search@6855": {
2536
2536
  "type": "object",
2537
2537
  "additionalProperties": false
2538
2538
  },
2539
- "__@split@6845": {
2539
+ "__@split@6857": {
2540
2540
  "type": "object",
2541
2541
  "additionalProperties": false
2542
2542
  },
2543
- "__@matchAll@6847": {
2543
+ "__@matchAll@6859": {
2544
2544
  "type": "object",
2545
2545
  "additionalProperties": false
2546
2546
  }
@@ -26,8 +26,6 @@ describe('@tramvai/cli benchmark command', () => {
26
26
  rootDir: FIXTURES_DIR,
27
27
  target: 'app',
28
28
  resolveSymlinks: false,
29
- port: 0,
30
- staticPort: 0,
31
29
  },
32
30
  times: 2,
33
31
  });