amxxpack 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -0
- package/lib/builder/builder.d.ts +4 -3
- package/lib/builder/builder.js +90 -105
- package/lib/cli/controller.js +5 -6
- package/lib/cli/services/project-creator.d.ts +2 -2
- package/lib/cli/services/project-creator.js +3 -3
- package/lib/cli/services/template-builder.js +2 -0
- package/lib/downloaders/compiler/constants.d.ts +7 -4
- package/lib/downloaders/compiler/constants.js +9 -6
- package/lib/downloaders/compiler/downloader.js +56 -21
- package/lib/downloaders/compiler/resolvers.d.ts +14 -1
- package/lib/downloaders/compiler/resolvers.js +50 -10
- package/lib/index.js +5 -1
- package/lib/project-config/defaults.js +1 -1
- package/lib/project-config/index.d.ts +2 -0
- package/lib/project-config/index.js +2 -1
- package/lib/project-config/load.d.ts +3 -0
- package/lib/project-config/load.js +92 -0
- package/lib/project-config/resolve.d.ts +3 -2
- package/lib/project-config/resolve.js +37 -99
- package/lib/types/index.d.ts +13 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -64,3 +64,79 @@ npm install -g amxxpack
|
|
|
64
64
|
- `amxpack n` - alias to `new` command
|
|
65
65
|
- `amxpack b` - alias to `build` command
|
|
66
66
|
- `amxpack c` - alias to `compile` command
|
|
67
|
+
|
|
68
|
+
## 🦸 Advanced configuration
|
|
69
|
+
|
|
70
|
+
### Third-party dependencies
|
|
71
|
+
In case your project requires third-party modules you can specify a link to third-party archives and these archives will be downloaded and extracted to the third-party directory.
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"thirdparty": {
|
|
75
|
+
"dir": "./.thirdparty",
|
|
76
|
+
"dependencies": [
|
|
77
|
+
{
|
|
78
|
+
"name": "somemodule",
|
|
79
|
+
"url": "https://website/somemodule-v100.zip"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
configuration above will download `somemodule-v100.zip` archive and extract it to the `./.thirdparty/somemodule` directory then you can use thirparty files in your project. For example add thirparty directory to include list:
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"include": [
|
|
90
|
+
"./.thirdparty/somemodule/include"
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Multiple directories as an input
|
|
96
|
+
You can use multiple directories as builder inputs, just specify an array of directories in the project configuration. Example:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"input": {
|
|
101
|
+
"scripts": ["./src/scripts", "./src/extra-scripts"],
|
|
102
|
+
"include": ["./src/include", "./src/extra-include"],
|
|
103
|
+
"assets": ["./assets", "./extra-assets"]
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Assets filtering and subdirectories
|
|
109
|
+
Using glob filters you can specify which assets should be copied.
|
|
110
|
+
|
|
111
|
+
For example, you can exclude all assets except `*.mdl`:
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"input": {
|
|
115
|
+
"assets": [
|
|
116
|
+
{ "dir": "./assets", "filter": "*.mdl" }
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
or exclude `*.tga` and `*.wav` files:
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"input": {
|
|
126
|
+
"assets": [
|
|
127
|
+
{ "dir": "./assets", "filter": "*.!(tga|wav)" }
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
You can also specify subdirectories for copying. With this configuration the builder will copy all files from `./assets/models` to `./models/myproject` of the project build directory.
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"input": {
|
|
137
|
+
"assets": [
|
|
138
|
+
{ "dir": "./assets/models", "dest": "./models/myproject" }
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
package/lib/builder/builder.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IAssetInput, IResolvedProjectConfig } from '../types';
|
|
2
2
|
export interface CompileOptions {
|
|
3
3
|
ignoreErrors?: boolean;
|
|
4
4
|
noCache?: boolean;
|
|
@@ -6,7 +6,7 @@ export interface CompileOptions {
|
|
|
6
6
|
export default class AmxxBuilder {
|
|
7
7
|
private projectConfig;
|
|
8
8
|
private pluginCache;
|
|
9
|
-
constructor(projectConfig:
|
|
9
|
+
constructor(projectConfig: IResolvedProjectConfig);
|
|
10
10
|
build(compileOptions: CompileOptions): Promise<void>;
|
|
11
11
|
watch(compileOptions: CompileOptions): Promise<void>;
|
|
12
12
|
buildScripts(compileOptions: CompileOptions): Promise<boolean>;
|
|
@@ -17,11 +17,12 @@ export default class AmxxBuilder {
|
|
|
17
17
|
watchAssets(): Promise<void>;
|
|
18
18
|
updatePlugin(srcDir: string, srcFile: string, compileOptions: CompileOptions): Promise<boolean>;
|
|
19
19
|
updateScript(srcDir: string, srcFile: string): Promise<void>;
|
|
20
|
-
updateAsset(
|
|
20
|
+
updateAsset(filePath: string, assetInput: IAssetInput): Promise<void>;
|
|
21
21
|
updateInclude(filePath: string): Promise<void>;
|
|
22
22
|
findPlugins(pattern: string): Promise<string[]>;
|
|
23
23
|
compilePlugin(srcDir: string, srcFile: string, compileOptions?: CompileOptions): Promise<void>;
|
|
24
24
|
private buildDir;
|
|
25
25
|
private watchDir;
|
|
26
26
|
private initPluginCache;
|
|
27
|
+
private execPathFilter;
|
|
27
28
|
}
|
package/lib/builder/builder.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -104,10 +108,10 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
104
108
|
case 4:
|
|
105
109
|
success = _a.sent();
|
|
106
110
|
if (success) {
|
|
107
|
-
logger_1.default.success('Build
|
|
111
|
+
logger_1.default.success('Build completed successfully!');
|
|
108
112
|
}
|
|
109
113
|
else {
|
|
110
|
-
logger_1.default.error('Build
|
|
114
|
+
logger_1.default.error('Build completed with errors!');
|
|
111
115
|
}
|
|
112
116
|
return [3 /*break*/, 6];
|
|
113
117
|
case 5:
|
|
@@ -140,19 +144,18 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
140
144
|
};
|
|
141
145
|
AmxxBuilder.prototype.buildScripts = function (compileOptions) {
|
|
142
146
|
return __awaiter(this, void 0, void 0, function () {
|
|
143
|
-
var
|
|
147
|
+
var success, _loop_1, this_1, _i, _a, scriptsDir;
|
|
144
148
|
var _this = this;
|
|
145
|
-
return __generator(this, function (
|
|
146
|
-
switch (
|
|
149
|
+
return __generator(this, function (_b) {
|
|
150
|
+
switch (_b.label) {
|
|
147
151
|
case 0:
|
|
148
|
-
scriptsDirs = (0, lodash_1.castArray)(this.projectConfig.input.scripts);
|
|
149
152
|
success = true;
|
|
150
|
-
|
|
153
|
+
_b.label = 1;
|
|
151
154
|
case 1:
|
|
152
|
-
|
|
155
|
+
_b.trys.push([1, , 6, 7]);
|
|
153
156
|
_loop_1 = function (scriptsDir) {
|
|
154
|
-
return __generator(this, function (
|
|
155
|
-
switch (
|
|
157
|
+
return __generator(this, function (_c) {
|
|
158
|
+
switch (_c.label) {
|
|
156
159
|
case 0: return [4 /*yield*/, this_1.buildDir(scriptsDir, constants_1.SCRIPTS_PATH_PATTERN,
|
|
157
160
|
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
158
161
|
function (filePath) { return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -170,21 +173,21 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
170
173
|
});
|
|
171
174
|
}); })];
|
|
172
175
|
case 1:
|
|
173
|
-
|
|
176
|
+
_c.sent();
|
|
174
177
|
return [2 /*return*/];
|
|
175
178
|
}
|
|
176
179
|
});
|
|
177
180
|
};
|
|
178
181
|
this_1 = this;
|
|
179
|
-
_i = 0,
|
|
180
|
-
|
|
182
|
+
_i = 0, _a = this.projectConfig.input.scripts;
|
|
183
|
+
_b.label = 2;
|
|
181
184
|
case 2:
|
|
182
|
-
if (!(_i <
|
|
183
|
-
scriptsDir =
|
|
185
|
+
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
186
|
+
scriptsDir = _a[_i];
|
|
184
187
|
return [5 /*yield**/, _loop_1(scriptsDir)];
|
|
185
188
|
case 3:
|
|
186
|
-
|
|
187
|
-
|
|
189
|
+
_b.sent();
|
|
190
|
+
_b.label = 4;
|
|
188
191
|
case 4:
|
|
189
192
|
_i++;
|
|
190
193
|
return [3 /*break*/, 2];
|
|
@@ -214,47 +217,34 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
214
217
|
};
|
|
215
218
|
AmxxBuilder.prototype.buildAssets = function () {
|
|
216
219
|
return __awaiter(this, void 0, void 0, function () {
|
|
217
|
-
var
|
|
220
|
+
var _loop_2, this_2, _i, _a, assetInput;
|
|
218
221
|
var _this = this;
|
|
219
|
-
return __generator(this, function (
|
|
220
|
-
switch (
|
|
222
|
+
return __generator(this, function (_b) {
|
|
223
|
+
switch (_b.label) {
|
|
221
224
|
case 0:
|
|
222
225
|
if (!this.projectConfig.input.assets) {
|
|
223
226
|
return [2 /*return*/];
|
|
224
227
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
case 0: return [4 /*yield*/, this_2.buildDir(assetsDir, constants_1.ASSETS_PATH_PATTERN, function (filePath) { return __awaiter(_this, void 0, void 0, function () {
|
|
230
|
-
var assetFile;
|
|
231
|
-
return __generator(this, function (_a) {
|
|
232
|
-
switch (_a.label) {
|
|
233
|
-
case 0:
|
|
234
|
-
assetFile = path_1.default.relative(assetsDir, filePath);
|
|
235
|
-
return [4 /*yield*/, this.updateAsset(assetsDir, assetFile)];
|
|
236
|
-
case 1:
|
|
237
|
-
_a.sent();
|
|
238
|
-
return [2 /*return*/];
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
}); })];
|
|
228
|
+
_loop_2 = function (assetInput) {
|
|
229
|
+
return __generator(this, function (_c) {
|
|
230
|
+
switch (_c.label) {
|
|
231
|
+
case 0: return [4 /*yield*/, this_2.buildDir(assetInput.dir, constants_1.ASSETS_PATH_PATTERN, function (filePath) { return _this.updateAsset(filePath, assetInput); })];
|
|
242
232
|
case 1:
|
|
243
|
-
|
|
233
|
+
_c.sent();
|
|
244
234
|
return [2 /*return*/];
|
|
245
235
|
}
|
|
246
236
|
});
|
|
247
237
|
};
|
|
248
238
|
this_2 = this;
|
|
249
|
-
_i = 0,
|
|
250
|
-
|
|
239
|
+
_i = 0, _a = this.projectConfig.input.assets;
|
|
240
|
+
_b.label = 1;
|
|
251
241
|
case 1:
|
|
252
|
-
if (!(_i <
|
|
253
|
-
|
|
254
|
-
return [5 /*yield**/, _loop_2(
|
|
242
|
+
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
|
243
|
+
assetInput = _a[_i];
|
|
244
|
+
return [5 /*yield**/, _loop_2(assetInput)];
|
|
255
245
|
case 2:
|
|
256
|
-
|
|
257
|
-
|
|
246
|
+
_b.sent();
|
|
247
|
+
_b.label = 3;
|
|
258
248
|
case 3:
|
|
259
249
|
_i++;
|
|
260
250
|
return [3 /*break*/, 1];
|
|
@@ -265,15 +255,14 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
265
255
|
};
|
|
266
256
|
AmxxBuilder.prototype.watchScripts = function (compileOptions) {
|
|
267
257
|
return __awaiter(this, void 0, void 0, function () {
|
|
268
|
-
var
|
|
258
|
+
var _loop_3, this_3, _i, _a, scriptsDir;
|
|
269
259
|
var _this = this;
|
|
270
|
-
return __generator(this, function (
|
|
271
|
-
switch (
|
|
260
|
+
return __generator(this, function (_b) {
|
|
261
|
+
switch (_b.label) {
|
|
272
262
|
case 0:
|
|
273
|
-
scriptsDirs = (0, lodash_1.castArray)(this.projectConfig.input.scripts);
|
|
274
263
|
_loop_3 = function (scriptsDir) {
|
|
275
|
-
return __generator(this, function (
|
|
276
|
-
switch (
|
|
264
|
+
return __generator(this, function (_c) {
|
|
265
|
+
switch (_c.label) {
|
|
277
266
|
case 0: return [4 /*yield*/, this_3.watchDir(scriptsDir, constants_1.SCRIPTS_PATH_PATTERN, function (filePath) { return __awaiter(_this, void 0, void 0, function () {
|
|
278
267
|
var srcFile;
|
|
279
268
|
return __generator(this, function (_a) {
|
|
@@ -288,21 +277,21 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
288
277
|
});
|
|
289
278
|
}); })];
|
|
290
279
|
case 1:
|
|
291
|
-
|
|
280
|
+
_c.sent();
|
|
292
281
|
return [2 /*return*/];
|
|
293
282
|
}
|
|
294
283
|
});
|
|
295
284
|
};
|
|
296
285
|
this_3 = this;
|
|
297
|
-
_i = 0,
|
|
298
|
-
|
|
286
|
+
_i = 0, _a = this.projectConfig.input.scripts;
|
|
287
|
+
_b.label = 1;
|
|
299
288
|
case 1:
|
|
300
|
-
if (!(_i <
|
|
301
|
-
scriptsDir =
|
|
289
|
+
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
|
290
|
+
scriptsDir = _a[_i];
|
|
302
291
|
return [5 /*yield**/, _loop_3(scriptsDir)];
|
|
303
292
|
case 2:
|
|
304
|
-
|
|
305
|
-
|
|
293
|
+
_b.sent();
|
|
294
|
+
_b.label = 3;
|
|
306
295
|
case 3:
|
|
307
296
|
_i++;
|
|
308
297
|
return [3 /*break*/, 1];
|
|
@@ -326,47 +315,34 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
326
315
|
};
|
|
327
316
|
AmxxBuilder.prototype.watchAssets = function () {
|
|
328
317
|
return __awaiter(this, void 0, void 0, function () {
|
|
329
|
-
var
|
|
318
|
+
var _loop_4, this_4, _i, _a, assetInput;
|
|
330
319
|
var _this = this;
|
|
331
|
-
return __generator(this, function (
|
|
332
|
-
switch (
|
|
320
|
+
return __generator(this, function (_b) {
|
|
321
|
+
switch (_b.label) {
|
|
333
322
|
case 0:
|
|
334
323
|
if (!this.projectConfig.input.assets) {
|
|
335
324
|
return [2 /*return*/];
|
|
336
325
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
case 0: return [4 /*yield*/, this_4.watchDir(assetsDir, constants_1.ASSETS_PATH_PATTERN, function (filePath) { return __awaiter(_this, void 0, void 0, function () {
|
|
342
|
-
var assetFile;
|
|
343
|
-
return __generator(this, function (_a) {
|
|
344
|
-
switch (_a.label) {
|
|
345
|
-
case 0:
|
|
346
|
-
assetFile = path_1.default.relative(assetsDir, filePath);
|
|
347
|
-
return [4 /*yield*/, this.updateAsset(assetsDir, assetFile)];
|
|
348
|
-
case 1:
|
|
349
|
-
_a.sent();
|
|
350
|
-
return [2 /*return*/];
|
|
351
|
-
}
|
|
352
|
-
});
|
|
353
|
-
}); })];
|
|
326
|
+
_loop_4 = function (assetInput) {
|
|
327
|
+
return __generator(this, function (_c) {
|
|
328
|
+
switch (_c.label) {
|
|
329
|
+
case 0: return [4 /*yield*/, this_4.watchDir(assetInput.dir, constants_1.ASSETS_PATH_PATTERN, function (filePath) { return _this.updateAsset(filePath, assetInput); })];
|
|
354
330
|
case 1:
|
|
355
|
-
|
|
331
|
+
_c.sent();
|
|
356
332
|
return [2 /*return*/];
|
|
357
333
|
}
|
|
358
334
|
});
|
|
359
335
|
};
|
|
360
336
|
this_4 = this;
|
|
361
|
-
_i = 0,
|
|
362
|
-
|
|
337
|
+
_i = 0, _a = this.projectConfig.input.assets;
|
|
338
|
+
_b.label = 1;
|
|
363
339
|
case 1:
|
|
364
|
-
if (!(_i <
|
|
365
|
-
|
|
366
|
-
return [5 /*yield**/, _loop_4(
|
|
340
|
+
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
|
341
|
+
assetInput = _a[_i];
|
|
342
|
+
return [5 /*yield**/, _loop_4(assetInput)];
|
|
367
343
|
case 2:
|
|
368
|
-
|
|
369
|
-
|
|
344
|
+
_b.sent();
|
|
345
|
+
_b.label = 3;
|
|
370
346
|
case 3:
|
|
371
347
|
_i++;
|
|
372
348
|
return [3 /*break*/, 1];
|
|
@@ -409,7 +385,7 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
409
385
|
if (!this.projectConfig.output.scripts) {
|
|
410
386
|
return [2 /*return*/];
|
|
411
387
|
}
|
|
412
|
-
srcPath = path_1.default.
|
|
388
|
+
srcPath = path_1.default.join(srcDir, srcFile);
|
|
413
389
|
destPath = path_1.default.join(this.projectConfig.output.scripts, path_1.default.parse(srcFile).base);
|
|
414
390
|
return [4 /*yield*/, (0, mkdirp_1.default)(this.projectConfig.output.scripts)];
|
|
415
391
|
case 1:
|
|
@@ -423,21 +399,24 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
423
399
|
});
|
|
424
400
|
});
|
|
425
401
|
};
|
|
426
|
-
AmxxBuilder.prototype.updateAsset = function (
|
|
402
|
+
AmxxBuilder.prototype.updateAsset = function (filePath, assetInput) {
|
|
427
403
|
return __awaiter(this, void 0, void 0, function () {
|
|
428
|
-
var
|
|
404
|
+
var srcFile, destPath;
|
|
429
405
|
return __generator(this, function (_a) {
|
|
430
406
|
switch (_a.label) {
|
|
431
407
|
case 0:
|
|
432
|
-
|
|
433
|
-
|
|
408
|
+
srcFile = path_1.default.relative(assetInput.dir, filePath);
|
|
409
|
+
if (assetInput.filter && !this.execPathFilter(srcFile, assetInput.filter)) {
|
|
410
|
+
return [2 /*return*/];
|
|
411
|
+
}
|
|
412
|
+
destPath = path_1.default.join(this.projectConfig.output.assets, assetInput.dest || '', srcFile);
|
|
434
413
|
return [4 /*yield*/, (0, mkdirp_1.default)(path_1.default.parse(destPath).dir)];
|
|
435
414
|
case 1:
|
|
436
415
|
_a.sent();
|
|
437
|
-
return [4 /*yield*/, (0, copy_file_1.default)(
|
|
416
|
+
return [4 /*yield*/, (0, copy_file_1.default)(filePath, destPath)];
|
|
438
417
|
case 2:
|
|
439
418
|
_a.sent();
|
|
440
|
-
logger_1.default.info('Asset updated', (0, normalize_path_1.default)(destPath));
|
|
419
|
+
logger_1.default.info('Asset updated:', (0, normalize_path_1.default)(destPath));
|
|
441
420
|
return [2 /*return*/];
|
|
442
421
|
}
|
|
443
422
|
});
|
|
@@ -445,16 +424,15 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
445
424
|
};
|
|
446
425
|
AmxxBuilder.prototype.updateInclude = function (filePath) {
|
|
447
426
|
return __awaiter(this, void 0, void 0, function () {
|
|
448
|
-
var
|
|
427
|
+
var destPath;
|
|
449
428
|
return __generator(this, function (_a) {
|
|
450
429
|
switch (_a.label) {
|
|
451
430
|
case 0:
|
|
452
|
-
srcPath = path_1.default.resolve(filePath);
|
|
453
431
|
destPath = path_1.default.join(this.projectConfig.output.include, path_1.default.parse(filePath).base);
|
|
454
432
|
return [4 /*yield*/, (0, mkdirp_1.default)(this.projectConfig.output.include)];
|
|
455
433
|
case 1:
|
|
456
434
|
_a.sent();
|
|
457
|
-
return [4 /*yield*/, (0, copy_file_1.default)(
|
|
435
|
+
return [4 /*yield*/, (0, copy_file_1.default)(filePath, destPath)];
|
|
458
436
|
case 2:
|
|
459
437
|
_a.sent();
|
|
460
438
|
logger_1.default.info('Include updated:', (0, normalize_path_1.default)(destPath));
|
|
@@ -469,7 +447,7 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
469
447
|
return __generator(this, function (_a) {
|
|
470
448
|
switch (_a.label) {
|
|
471
449
|
case 0:
|
|
472
|
-
pathPattern = (0, lodash_1.map)(
|
|
450
|
+
pathPattern = (0, lodash_1.map)(this.projectConfig.input.scripts, function (dir) { return path_1.default.join(dir, '**', pattern); });
|
|
473
451
|
return [4 /*yield*/, globule_1.default.find(pathPattern)];
|
|
474
452
|
case 1:
|
|
475
453
|
matches = _a.sent();
|
|
@@ -485,9 +463,9 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
485
463
|
return __generator(this, function (_c) {
|
|
486
464
|
switch (_c.label) {
|
|
487
465
|
case 0:
|
|
488
|
-
srcPath = path_1.default.
|
|
466
|
+
srcPath = path_1.default.join(srcDir, srcFile);
|
|
489
467
|
_a = path_1.default.parse(srcFile), scriptName = _a.name, srcNestedDir = _a.dir;
|
|
490
|
-
destDir = path_1.default.
|
|
468
|
+
destDir = path_1.default.join(this.projectConfig.output.plugins, this.projectConfig.rules.flatCompilation ? '.' : srcNestedDir);
|
|
491
469
|
pluginDest = path_1.default.join(destDir, "".concat(scriptName, ".amxx"));
|
|
492
470
|
if (!compileOptions.noCache) return [3 /*break*/, 1];
|
|
493
471
|
_b = false;
|
|
@@ -500,7 +478,7 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
500
478
|
isUpdated = _b;
|
|
501
479
|
relateiveSrcPath = path_1.default.relative(process.cwd(), srcPath);
|
|
502
480
|
if (isUpdated) {
|
|
503
|
-
logger_1.default.info(
|
|
481
|
+
logger_1.default.info('Script is already up to date:', (0, normalize_path_1.default)(relateiveSrcPath), 'Skipped!');
|
|
504
482
|
return [2 /*return*/];
|
|
505
483
|
}
|
|
506
484
|
executablePath = path_1.default.join(this.projectConfig.compiler.dir, this.projectConfig.compiler.executable);
|
|
@@ -513,7 +491,7 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
513
491
|
compiler: executablePath,
|
|
514
492
|
includeDir: __spreadArray(__spreadArray([
|
|
515
493
|
path_1.default.join(this.projectConfig.compiler.dir, 'include')
|
|
516
|
-
], this.projectConfig.include, true),
|
|
494
|
+
], this.projectConfig.include, true), this.projectConfig.input.include, true)
|
|
517
495
|
})];
|
|
518
496
|
case 5:
|
|
519
497
|
result = _c.sent();
|
|
@@ -544,7 +522,7 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
544
522
|
if (result.success) {
|
|
545
523
|
destPath = path_1.default.join(destDir, result.plugin);
|
|
546
524
|
relativeFilePath = path_1.default.relative(process.cwd(), srcPath);
|
|
547
|
-
logger_1.default.success('
|
|
525
|
+
logger_1.default.success('Script compiled successfully:', (0, normalize_path_1.default)(relativeFilePath));
|
|
548
526
|
logger_1.default.info('Plugin updated:', (0, normalize_path_1.default)(destPath));
|
|
549
527
|
}
|
|
550
528
|
else {
|
|
@@ -565,7 +543,7 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
565
543
|
return [4 /*yield*/, globule_1.default.find(pathPattern, { nodir: true })];
|
|
566
544
|
case 1:
|
|
567
545
|
matches = _a.sent();
|
|
568
|
-
return [4 /*yield*/, matches.reduce(function (acc, match) { return acc.then(function () { return cb(match); }); }, Promise.resolve())];
|
|
546
|
+
return [4 /*yield*/, matches.reduce(function (acc, match) { return acc.then(function () { return cb(path_1.default.normalize(match)); }); }, Promise.resolve())];
|
|
569
547
|
case 2:
|
|
570
548
|
_a.sent();
|
|
571
549
|
return [2 /*return*/];
|
|
@@ -579,7 +557,7 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
579
557
|
return __generator(this, function (_a) {
|
|
580
558
|
pathPattern = (0, lodash_1.map)((0, lodash_1.castArray)(baseDir), function (dir) { return path_1.default.join(dir, pattern); });
|
|
581
559
|
watcher = (0, setup_watch_1.default)(pathPattern);
|
|
582
|
-
updateFn = function (filePath) { return cb(filePath).catch(function (err) { return logger_1.default.error(err.message); }); };
|
|
560
|
+
updateFn = function (filePath) { return cb(path_1.default.normalize(filePath)).catch(function (err) { return logger_1.default.error(err.message); }); };
|
|
583
561
|
watcher.on('add', updateFn);
|
|
584
562
|
watcher.on('change', updateFn);
|
|
585
563
|
return [2 /*return*/];
|
|
@@ -590,6 +568,13 @@ var AmxxBuilder = /** @class */ (function () {
|
|
|
590
568
|
this.pluginCache = new plugins_cache_1.default();
|
|
591
569
|
this.pluginCache.load(config_1.default.cacheFile);
|
|
592
570
|
};
|
|
571
|
+
AmxxBuilder.prototype.execPathFilter = function (filePath, filter) {
|
|
572
|
+
return globule_1.default.isMatch(filter, filePath, {
|
|
573
|
+
dot: true,
|
|
574
|
+
nocase: true,
|
|
575
|
+
matchBase: true
|
|
576
|
+
});
|
|
577
|
+
};
|
|
593
578
|
return AmxxBuilder;
|
|
594
579
|
}());
|
|
595
580
|
exports.default = AmxxBuilder;
|
package/lib/cli/controller.js
CHANGED
|
@@ -56,7 +56,7 @@ var Controller = /** @class */ (function () {
|
|
|
56
56
|
var projectConfig, builder;
|
|
57
57
|
return __generator(this, function (_a) {
|
|
58
58
|
switch (_a.label) {
|
|
59
|
-
case 0: return [4 /*yield*/, project_config_1.default.
|
|
59
|
+
case 0: return [4 /*yield*/, project_config_1.default.load(configPath)];
|
|
60
60
|
case 1:
|
|
61
61
|
projectConfig = _a.sent();
|
|
62
62
|
builder = new builder_1.default(projectConfig);
|
|
@@ -98,7 +98,7 @@ var Controller = /** @class */ (function () {
|
|
|
98
98
|
};
|
|
99
99
|
Controller.prototype.compile = function (scriptPath, configPath, options) {
|
|
100
100
|
return __awaiter(this, void 0, void 0, function () {
|
|
101
|
-
var compileOptions, builder, matches, _i, matches_1, filePath,
|
|
101
|
+
var compileOptions, builder, matches, _i, matches_1, filePath, _a, srcDir, srcFile;
|
|
102
102
|
return __generator(this, function (_b) {
|
|
103
103
|
switch (_b.label) {
|
|
104
104
|
case 0:
|
|
@@ -114,8 +114,7 @@ var Controller = /** @class */ (function () {
|
|
|
114
114
|
case 3:
|
|
115
115
|
if (!(_i < matches_1.length)) return [3 /*break*/, 6];
|
|
116
116
|
filePath = matches_1[_i];
|
|
117
|
-
|
|
118
|
-
_a = path_1.default.parse(absFilePath), srcDir = _a.dir, srcFile = _a.base;
|
|
117
|
+
_a = path_1.default.parse(filePath), srcDir = _a.dir, srcFile = _a.base;
|
|
119
118
|
return [4 /*yield*/, builder.compilePlugin(srcDir, srcFile, compileOptions)];
|
|
120
119
|
case 4:
|
|
121
120
|
_b.sent();
|
|
@@ -155,7 +154,7 @@ var Controller = /** @class */ (function () {
|
|
|
155
154
|
var projectConfig, _i, _a, dependency;
|
|
156
155
|
return __generator(this, function (_b) {
|
|
157
156
|
switch (_b.label) {
|
|
158
|
-
case 0: return [4 /*yield*/, project_config_1.default.
|
|
157
|
+
case 0: return [4 /*yield*/, project_config_1.default.load(configPath)];
|
|
159
158
|
case 1:
|
|
160
159
|
projectConfig = _b.sent();
|
|
161
160
|
return [4 /*yield*/, (0, compiler_1.default)({
|
|
@@ -192,7 +191,7 @@ var Controller = /** @class */ (function () {
|
|
|
192
191
|
var projectConfig, includeName, templateBuilder, resolveFilePath, _a;
|
|
193
192
|
return __generator(this, function (_b) {
|
|
194
193
|
switch (_b.label) {
|
|
195
|
-
case 0: return [4 /*yield*/, project_config_1.default.
|
|
194
|
+
case 0: return [4 /*yield*/, project_config_1.default.load(configPath)];
|
|
196
195
|
case 1:
|
|
197
196
|
projectConfig = _b.sent();
|
|
198
197
|
includeName = path_1.default.parse(fileName).base;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IProjectOptions } from '../types';
|
|
2
|
-
import {
|
|
2
|
+
import { IResolvedProjectConfig } from '../../types';
|
|
3
3
|
declare class ProjectCreator {
|
|
4
4
|
projectDir: string;
|
|
5
|
-
projectConfig:
|
|
5
|
+
projectConfig: IResolvedProjectConfig;
|
|
6
6
|
options: IProjectOptions;
|
|
7
7
|
isCurrentDir: boolean;
|
|
8
8
|
constructor(options?: IProjectOptions);
|
|
@@ -85,7 +85,7 @@ var ProjectCreator = /** @class */ (function () {
|
|
|
85
85
|
? cwd
|
|
86
86
|
: path_1.default.join(cwd, this.options.name);
|
|
87
87
|
}
|
|
88
|
-
this.projectConfig = project_config_1.default.
|
|
88
|
+
this.projectConfig = project_config_1.default.resolve({}, this.projectDir);
|
|
89
89
|
}
|
|
90
90
|
ProjectCreator.prototype.createProject = function () {
|
|
91
91
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -207,13 +207,13 @@ var ProjectCreator = /** @class */ (function () {
|
|
|
207
207
|
switch (_a.label) {
|
|
208
208
|
case 0:
|
|
209
209
|
logger_1.default.info('📁 Creating project directories...');
|
|
210
|
-
dirs = __spreadArray(__spreadArray(__spreadArray([], (0, lodash_1.
|
|
210
|
+
dirs = __spreadArray(__spreadArray(__spreadArray([], (0, lodash_1.map)(this.projectConfig.input.assets, 'dir'), true), this.projectConfig.input.include, true), this.projectConfig.input.scripts, true);
|
|
211
211
|
_i = 0, dirs_1 = dirs;
|
|
212
212
|
_a.label = 1;
|
|
213
213
|
case 1:
|
|
214
214
|
if (!(_i < dirs_1.length)) return [3 /*break*/, 4];
|
|
215
215
|
dir = dirs_1[_i];
|
|
216
|
-
return [4 /*yield*/, (0, mkdirp_1.default)(
|
|
216
|
+
return [4 /*yield*/, (0, mkdirp_1.default)(dir)];
|
|
217
217
|
case 2:
|
|
218
218
|
_a.sent();
|
|
219
219
|
_a.label = 3;
|
|
@@ -43,6 +43,7 @@ var fs_1 = __importDefault(require("fs"));
|
|
|
43
43
|
var path_1 = __importDefault(require("path"));
|
|
44
44
|
var lodash_1 = require("lodash");
|
|
45
45
|
var mkdirp_1 = __importDefault(require("mkdirp"));
|
|
46
|
+
var logger_1 = __importDefault(require("../../logger/logger"));
|
|
46
47
|
var TemplateBuilder = /** @class */ (function () {
|
|
47
48
|
function TemplateBuilder(projectConfig, context, contextDefaults) {
|
|
48
49
|
this.projectConfig = projectConfig;
|
|
@@ -94,6 +95,7 @@ var TemplateBuilder = /** @class */ (function () {
|
|
|
94
95
|
case 3: return [4 /*yield*/, _b.apply(_a, _c.concat([_d.sent(), { flag: overwrite ? 'w' : 'wx' }]))];
|
|
95
96
|
case 4:
|
|
96
97
|
_d.sent();
|
|
98
|
+
logger_1.default.info('New file created:', filePath);
|
|
97
99
|
return [2 /*return*/];
|
|
98
100
|
}
|
|
99
101
|
});
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
export declare enum DistSource {
|
|
2
|
+
AmxxDrop = "amxxdrop",
|
|
3
|
+
Release = "release"
|
|
4
|
+
}
|
|
1
5
|
export declare enum CompilerPlatform {
|
|
2
6
|
Windows = "windows",
|
|
3
7
|
Linux = "linux",
|
|
4
8
|
Mac = "mac"
|
|
5
9
|
}
|
|
6
|
-
export declare
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
+
export declare const BASE_DIST = "base";
|
|
11
|
+
export declare const LATEST_RELEASE_VERSION = "1.8.2";
|
|
12
|
+
export declare const LATEST_RELEASE_VERSION_NUM = 182;
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.LATEST_RELEASE_VERSION_NUM = exports.LATEST_RELEASE_VERSION = exports.BASE_DIST = exports.CompilerPlatform = exports.DistSource = void 0;
|
|
4
|
+
var DistSource;
|
|
5
|
+
(function (DistSource) {
|
|
6
|
+
DistSource["AmxxDrop"] = "amxxdrop";
|
|
7
|
+
DistSource["Release"] = "release";
|
|
8
|
+
})(DistSource = exports.DistSource || (exports.DistSource = {}));
|
|
4
9
|
var CompilerPlatform;
|
|
5
10
|
(function (CompilerPlatform) {
|
|
6
11
|
CompilerPlatform["Windows"] = "windows";
|
|
7
12
|
CompilerPlatform["Linux"] = "linux";
|
|
8
13
|
CompilerPlatform["Mac"] = "mac";
|
|
9
14
|
})(CompilerPlatform = exports.CompilerPlatform || (exports.CompilerPlatform = {}));
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
DistSource["Release"] = "release";
|
|
14
|
-
})(DistSource = exports.DistSource || (exports.DistSource = {}));
|
|
15
|
+
exports.BASE_DIST = 'base';
|
|
16
|
+
exports.LATEST_RELEASE_VERSION = '1.8.2';
|
|
17
|
+
exports.LATEST_RELEASE_VERSION_NUM = 182;
|
|
@@ -60,24 +60,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
60
60
|
};
|
|
61
61
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
62
|
var path_1 = __importDefault(require("path"));
|
|
63
|
+
var fs_1 = __importDefault(require("fs"));
|
|
63
64
|
var mkdirp_1 = __importDefault(require("mkdirp"));
|
|
64
65
|
var normalize_path_1 = __importDefault(require("normalize-path"));
|
|
65
66
|
var decompress_1 = __importDefault(require("decompress"));
|
|
67
|
+
var lodash_1 = require("lodash");
|
|
66
68
|
var download_1 = __importDefault(require("../../utils/download"));
|
|
67
69
|
var resolvers_1 = require("./resolvers");
|
|
70
|
+
var constants_1 = require("./constants");
|
|
68
71
|
var config_1 = __importDefault(require("../../config"));
|
|
69
|
-
|
|
72
|
+
var logger_1 = __importDefault(require("../../logger/logger"));
|
|
73
|
+
function getDistFileName(dist) {
|
|
70
74
|
return __awaiter(this, void 0, void 0, function () {
|
|
71
|
-
var
|
|
75
|
+
var releaseVersion, releaseVersionNum, metaFileName, downloadOpts, result, fileName;
|
|
72
76
|
return __generator(this, function (_a) {
|
|
73
77
|
switch (_a.label) {
|
|
74
78
|
case 0:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
releaseVersion = (0, resolvers_1.resolveReleaseVersion)(dist.version);
|
|
80
|
+
releaseVersionNum = (0, resolvers_1.resolveVersionNum)(releaseVersion);
|
|
81
|
+
if (dist.dev) {
|
|
82
|
+
return [2 /*return*/, (0, resolvers_1.resolveFileName)(dist)];
|
|
83
|
+
}
|
|
84
|
+
// Starting from latest release (version 1.8.2) all versions are stored in the amxxdrop repository
|
|
85
|
+
if (releaseVersionNum <= constants_1.LATEST_RELEASE_VERSION_NUM) {
|
|
86
|
+
// the latest release version is the only version we can download from the release repository
|
|
87
|
+
return [2 /*return*/, (0, resolvers_1.resolveFileName)(__assign(__assign({}, dist), { version: constants_1.LATEST_RELEASE_VERSION }))];
|
|
88
|
+
}
|
|
89
|
+
metaFileName = (0, resolvers_1.resolveMetaFileName)(dist);
|
|
90
|
+
downloadOpts = (0, resolvers_1.resolveDownloadDistOpts)(metaFileName, dist);
|
|
91
|
+
return [4 /*yield*/, (0, download_1.default)(downloadOpts.url, downloadOpts.path)];
|
|
92
|
+
case 1:
|
|
93
|
+
result = _a.sent();
|
|
94
|
+
return [4 /*yield*/, fs_1.default.promises.readFile(result.path, 'utf8')];
|
|
95
|
+
case 2:
|
|
96
|
+
fileName = _a.sent();
|
|
97
|
+
return [2 /*return*/, fileName.trim()];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function downloadDist(dist) {
|
|
103
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
104
|
+
var fileName, downloadOpts, result;
|
|
105
|
+
return __generator(this, function (_a) {
|
|
106
|
+
switch (_a.label) {
|
|
107
|
+
case 0: return [4 /*yield*/, getDistFileName(dist)];
|
|
80
108
|
case 1:
|
|
109
|
+
fileName = _a.sent();
|
|
110
|
+
downloadOpts = (0, resolvers_1.resolveDownloadDistOpts)(fileName, dist);
|
|
111
|
+
return [4 /*yield*/, (0, download_1.default)(downloadOpts.url, downloadOpts.path)];
|
|
112
|
+
case 2:
|
|
81
113
|
result = _a.sent();
|
|
82
114
|
return [2 /*return*/, { dist: dist, path: result.path }];
|
|
83
115
|
}
|
|
@@ -88,7 +120,9 @@ function extractDist(archivePath, outDir) {
|
|
|
88
120
|
return __awaiter(this, void 0, void 0, function () {
|
|
89
121
|
return __generator(this, function (_a) {
|
|
90
122
|
switch (_a.label) {
|
|
91
|
-
case 0:
|
|
123
|
+
case 0:
|
|
124
|
+
logger_1.default.info("Extracting \"".concat(path_1.default.parse(archivePath).base, "\"..."));
|
|
125
|
+
return [4 /*yield*/, (0, mkdirp_1.default)(outDir)];
|
|
92
126
|
case 1:
|
|
93
127
|
_a.sent();
|
|
94
128
|
return [4 /*yield*/, (0, decompress_1.default)(archivePath, outDir, {
|
|
@@ -118,31 +152,32 @@ function extractDist(archivePath, outDir) {
|
|
|
118
152
|
}
|
|
119
153
|
function downloadCompiler(options) {
|
|
120
154
|
return __awaiter(this, void 0, void 0, function () {
|
|
121
|
-
var version, dev,
|
|
155
|
+
var version, dev, compilerPath, distNames, dists, distArchives, _i, distArchives_1, distArchive;
|
|
122
156
|
return __generator(this, function (_a) {
|
|
123
157
|
switch (_a.label) {
|
|
124
158
|
case 0:
|
|
125
|
-
version = options.version, dev = options.dev,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
newDists.unshift('base');
|
|
159
|
+
version = options.version, dev = options.dev, compilerPath = options.path;
|
|
160
|
+
distNames = __spreadArray([], options.dists, true);
|
|
161
|
+
if (!distNames.includes(constants_1.BASE_DIST)) {
|
|
162
|
+
distNames.unshift(constants_1.BASE_DIST);
|
|
130
163
|
}
|
|
131
|
-
|
|
132
|
-
|
|
164
|
+
dists = (0, lodash_1.map)(distNames, function (distName) { return (0, resolvers_1.resolveDist)({ name: distName, version: version, dev: dev }); });
|
|
165
|
+
logger_1.default.info('Downloading compiler...');
|
|
166
|
+
return [4 /*yield*/, Promise.all((0, lodash_1.map)(dists, downloadDist))];
|
|
133
167
|
case 1:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
168
|
+
distArchives = _a.sent();
|
|
169
|
+
_i = 0, distArchives_1 = distArchives;
|
|
170
|
+
_a.label = 2;
|
|
137
171
|
case 2:
|
|
138
|
-
|
|
172
|
+
if (!(_i < distArchives_1.length)) return [3 /*break*/, 5];
|
|
173
|
+
distArchive = distArchives_1[_i];
|
|
139
174
|
return [4 /*yield*/, extractDist(distArchive.path, compilerPath)];
|
|
140
175
|
case 3:
|
|
141
176
|
_a.sent();
|
|
142
177
|
_a.label = 4;
|
|
143
178
|
case 4:
|
|
144
179
|
_i++;
|
|
145
|
-
return [3 /*break*/,
|
|
180
|
+
return [3 /*break*/, 2];
|
|
146
181
|
case 5: return [2 /*return*/];
|
|
147
182
|
}
|
|
148
183
|
});
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { CompilerPlatform } from './constants';
|
|
2
2
|
import { IDist } from './types';
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function resolveVersionNum(version: string): number;
|
|
4
|
+
export declare function resolveReleaseVersion(version: string): string;
|
|
4
5
|
export declare function resolveFileName({ name: dist, version, platform }: IDist): string;
|
|
6
|
+
export declare function resolveMetaFileName({ name: dist, platform }: IDist): string;
|
|
5
7
|
export declare function resolvePlatform(): CompilerPlatform;
|
|
6
8
|
export declare function resolveUrl(source: string, file: string): string;
|
|
9
|
+
export declare function resolveSource({ dev, version }: IDist): string;
|
|
10
|
+
export declare function resolveDownloadDistOpts(fileName: string, dist: IDist): {
|
|
11
|
+
url: string;
|
|
12
|
+
path: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function resolveDist(options: Partial<IDist>): {
|
|
15
|
+
name: string;
|
|
16
|
+
version: string;
|
|
17
|
+
platform: CompilerPlatform;
|
|
18
|
+
dev: boolean;
|
|
19
|
+
};
|
|
@@ -3,27 +3,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.resolveUrl = exports.resolvePlatform = exports.resolveFileName = exports.
|
|
6
|
+
exports.resolveDist = exports.resolveDownloadDistOpts = exports.resolveSource = exports.resolveUrl = exports.resolvePlatform = exports.resolveMetaFileName = exports.resolveFileName = exports.resolveReleaseVersion = exports.resolveVersionNum = void 0;
|
|
7
7
|
var os_1 = __importDefault(require("os"));
|
|
8
|
+
var path_1 = __importDefault(require("path"));
|
|
8
9
|
var constants_1 = require("./constants");
|
|
9
10
|
var config_1 = __importDefault(require("../../config"));
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (dev) {
|
|
16
|
-
urlPath.push(version.split('.').slice(0, 2).join('.'));
|
|
11
|
+
var logger_1 = __importDefault(require("../../logger/logger"));
|
|
12
|
+
function resolveVersionNum(version) {
|
|
13
|
+
var versionSegments = version.split('.').slice(0, 3);
|
|
14
|
+
for (var i = 0; i < 3 - versionSegments.length; ++i) {
|
|
15
|
+
versionSegments.push('0');
|
|
17
16
|
}
|
|
18
|
-
return
|
|
17
|
+
return parseInt(versionSegments.join(''), 10);
|
|
19
18
|
}
|
|
20
|
-
exports.
|
|
19
|
+
exports.resolveVersionNum = resolveVersionNum;
|
|
20
|
+
function resolveReleaseVersion(version) {
|
|
21
|
+
return version.split('.').slice(0, 2).join('.');
|
|
22
|
+
}
|
|
23
|
+
exports.resolveReleaseVersion = resolveReleaseVersion;
|
|
21
24
|
function resolveFileName(_a) {
|
|
22
25
|
var dist = _a.name, version = _a.version, platform = _a.platform;
|
|
23
26
|
var ext = platform === 'linux' ? '.tar.gz' : '.zip';
|
|
24
27
|
return "amxmodx-".concat(version, "-").concat(dist, "-").concat(platform).concat(ext);
|
|
25
28
|
}
|
|
26
29
|
exports.resolveFileName = resolveFileName;
|
|
30
|
+
function resolveMetaFileName(_a) {
|
|
31
|
+
var dist = _a.name, platform = _a.platform;
|
|
32
|
+
return "amxmodx-latest-".concat(dist, "-").concat(platform);
|
|
33
|
+
}
|
|
34
|
+
exports.resolveMetaFileName = resolveMetaFileName;
|
|
27
35
|
function resolvePlatform() {
|
|
28
36
|
var platform = os_1.default.platform();
|
|
29
37
|
switch (platform) {
|
|
@@ -38,3 +46,35 @@ function resolveUrl(source, file) {
|
|
|
38
46
|
return "".concat(config_1.default.downloadHost, "/").concat(source, "/").concat(file);
|
|
39
47
|
}
|
|
40
48
|
exports.resolveUrl = resolveUrl;
|
|
49
|
+
function resolveSource(_a) {
|
|
50
|
+
var dev = _a.dev, version = _a.version;
|
|
51
|
+
var releaseVersion = resolveReleaseVersion(version);
|
|
52
|
+
var releaseVersionNum = resolveVersionNum(releaseVersion);
|
|
53
|
+
var isNewVersion = releaseVersionNum > constants_1.LATEST_RELEASE_VERSION_NUM;
|
|
54
|
+
var distSource = dev || isNewVersion ? constants_1.DistSource.AmxxDrop : constants_1.DistSource.Release;
|
|
55
|
+
var urlPath = [distSource];
|
|
56
|
+
if (distSource === constants_1.DistSource.AmxxDrop) {
|
|
57
|
+
urlPath.push(releaseVersion);
|
|
58
|
+
}
|
|
59
|
+
return urlPath.join('/');
|
|
60
|
+
}
|
|
61
|
+
exports.resolveSource = resolveSource;
|
|
62
|
+
function resolveDownloadDistOpts(fileName, dist) {
|
|
63
|
+
var filePath = path_1.default.join(config_1.default.downloadDir, fileName);
|
|
64
|
+
var source = resolveSource(dist);
|
|
65
|
+
var url = resolveUrl(source, fileName);
|
|
66
|
+
return { url: url, path: filePath };
|
|
67
|
+
}
|
|
68
|
+
exports.resolveDownloadDistOpts = resolveDownloadDistOpts;
|
|
69
|
+
function resolveDist(options) {
|
|
70
|
+
var _a = options.name, name = _a === void 0 ? constants_1.BASE_DIST : _a, _b = options.dev, dev = _b === void 0 ? false : _b;
|
|
71
|
+
var version = dev
|
|
72
|
+
? options.version
|
|
73
|
+
: resolveReleaseVersion(options.version || constants_1.LATEST_RELEASE_VERSION);
|
|
74
|
+
if (options.version !== version && name === constants_1.BASE_DIST) {
|
|
75
|
+
logger_1.default.warn("The \"".concat(options.version, "\" version format is redundant. Change the compiler version to \"").concat(version, "\" in the project configuration to remove this warning."));
|
|
76
|
+
}
|
|
77
|
+
var platform = resolvePlatform();
|
|
78
|
+
return { name: name, version: version, platform: platform, dev: dev };
|
|
79
|
+
}
|
|
80
|
+
exports.resolveDist = resolveDist;
|
package/lib/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -4,5 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
var defaults_1 = __importDefault(require("./defaults"));
|
|
7
|
+
var load_1 = __importDefault(require("./load"));
|
|
7
8
|
var resolve_1 = __importDefault(require("./resolve"));
|
|
8
|
-
exports.default = { resolve: resolve_1.default, defaults: defaults_1.default };
|
|
9
|
+
exports.default = { resolve: resolve_1.default, load: load_1.default, defaults: defaults_1.default };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (_) try {
|
|
41
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
62
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
|
+
};
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
var path_1 = __importDefault(require("path"));
|
|
66
|
+
var fs_1 = __importDefault(require("fs"));
|
|
67
|
+
var logger_1 = __importDefault(require("../logger/logger"));
|
|
68
|
+
var resolve_1 = __importDefault(require("./resolve"));
|
|
69
|
+
function load(_configPath, projectDir) {
|
|
70
|
+
if (projectDir === void 0) { projectDir = ''; }
|
|
71
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
72
|
+
var resolvePath, configPath, userConfig;
|
|
73
|
+
return __generator(this, function (_a) {
|
|
74
|
+
switch (_a.label) {
|
|
75
|
+
case 0:
|
|
76
|
+
resolvePath = function (p) { return path_1.default.resolve(projectDir, p); };
|
|
77
|
+
configPath = resolvePath(_configPath);
|
|
78
|
+
userConfig = null;
|
|
79
|
+
if (!fs_1.default.existsSync(configPath)) return [3 /*break*/, 2];
|
|
80
|
+
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require(configPath)); })];
|
|
81
|
+
case 1:
|
|
82
|
+
userConfig = _a.sent();
|
|
83
|
+
return [3 /*break*/, 3];
|
|
84
|
+
case 2:
|
|
85
|
+
logger_1.default.error('Cannot read config file!');
|
|
86
|
+
_a.label = 3;
|
|
87
|
+
case 3: return [2 /*return*/, (0, resolve_1.default)(userConfig, projectDir)];
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
exports.default = load;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { PartialDeep } from 'type-fest';
|
|
2
|
+
import { IProjectConfig, IResolvedProjectConfig } from '../types';
|
|
3
|
+
declare function resolve(overrides?: PartialDeep<IProjectConfig>, projectDir?: string): IResolvedProjectConfig;
|
|
3
4
|
export default resolve;
|
|
@@ -1,58 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
31
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
32
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
33
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
34
|
-
function step(op) {
|
|
35
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
36
|
-
while (_) try {
|
|
37
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
38
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
39
|
-
switch (op[0]) {
|
|
40
|
-
case 0: case 1: t = op; break;
|
|
41
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
42
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
43
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
44
|
-
default:
|
|
45
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
46
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
47
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
48
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
49
|
-
if (t[2]) _.ops.pop();
|
|
50
|
-
_.trys.pop(); continue;
|
|
51
|
-
}
|
|
52
|
-
op = body.call(thisArg, _);
|
|
53
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
54
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
55
|
-
}
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
56
12
|
};
|
|
57
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
58
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -60,52 +16,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
60
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
17
|
var lodash_1 = require("lodash");
|
|
62
18
|
var path_1 = __importDefault(require("path"));
|
|
63
|
-
var fs_1 = __importDefault(require("fs"));
|
|
64
|
-
var logger_1 = __importDefault(require("../logger/logger"));
|
|
65
19
|
var defaults_1 = __importDefault(require("./defaults"));
|
|
66
|
-
function resolve(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
output: {
|
|
93
|
-
scripts: path_1.default.resolve(config.output.scripts),
|
|
94
|
-
plugins: path_1.default.resolve(config.output.plugins),
|
|
95
|
-
include: path_1.default.resolve(config.output.include),
|
|
96
|
-
assets: path_1.default.resolve(config.output.assets)
|
|
97
|
-
},
|
|
98
|
-
include: (0, lodash_1.map)(config.include, function (include) { return path_1.default.resolve(include); }),
|
|
99
|
-
compiler: {
|
|
100
|
-
dir: path_1.default.resolve(config.compiler.dir),
|
|
101
|
-
},
|
|
102
|
-
thirdparty: {
|
|
103
|
-
dir: path_1.default.resolve(config.thirdparty.dir)
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
return [2 /*return*/, config];
|
|
107
|
-
}
|
|
108
|
-
});
|
|
20
|
+
function resolve(overrides, projectDir) {
|
|
21
|
+
if (overrides === void 0) { overrides = {}; }
|
|
22
|
+
if (projectDir === void 0) { projectDir = ''; }
|
|
23
|
+
var resolvePath = function (p) { return path_1.default.resolve(projectDir || '', p); };
|
|
24
|
+
var config = (0, lodash_1.merge)({}, defaults_1.default, overrides);
|
|
25
|
+
// resolve paths
|
|
26
|
+
var resolvedConfig = (0, lodash_1.merge)(config, {
|
|
27
|
+
input: {
|
|
28
|
+
scripts: (0, lodash_1.map)((0, lodash_1.castArray)(config.input.scripts), function (dir) { return resolvePath(dir); }),
|
|
29
|
+
include: (0, lodash_1.map)((0, lodash_1.castArray)(config.input.include), function (dir) { return resolvePath(dir); }),
|
|
30
|
+
assets: (0, lodash_1.map)((0, lodash_1.castArray)(config.input.assets), function (input) { return (typeof input === 'object'
|
|
31
|
+
? __assign(__assign({}, input), { dir: resolvePath(input.dir) }) : { dir: resolvePath(input) }); })
|
|
32
|
+
},
|
|
33
|
+
output: {
|
|
34
|
+
scripts: resolvePath(config.output.scripts),
|
|
35
|
+
plugins: resolvePath(config.output.plugins),
|
|
36
|
+
include: resolvePath(config.output.include),
|
|
37
|
+
assets: resolvePath(config.output.assets)
|
|
38
|
+
},
|
|
39
|
+
include: (0, lodash_1.map)(config.include, function (include) { return resolvePath(include); }),
|
|
40
|
+
compiler: {
|
|
41
|
+
dir: resolvePath(config.compiler.dir),
|
|
42
|
+
},
|
|
43
|
+
thirdparty: {
|
|
44
|
+
dir: resolvePath(config.thirdparty.dir)
|
|
45
|
+
}
|
|
109
46
|
});
|
|
47
|
+
return resolvedConfig;
|
|
110
48
|
}
|
|
111
49
|
exports.default = resolve;
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
export interface IAssetInput {
|
|
2
|
+
dir: string;
|
|
3
|
+
dest?: string;
|
|
4
|
+
filter?: string | string[];
|
|
5
|
+
}
|
|
1
6
|
export interface IProjectConfig {
|
|
2
7
|
input: {
|
|
3
8
|
scripts: string | string[];
|
|
4
9
|
include: string | string[];
|
|
5
|
-
assets: string | string[];
|
|
10
|
+
assets: string | string[] | IAssetInput | IAssetInput[];
|
|
6
11
|
};
|
|
7
12
|
output: {
|
|
8
13
|
scripts: string;
|
|
@@ -43,3 +48,10 @@ export interface IProjectConfig {
|
|
|
43
48
|
};
|
|
44
49
|
};
|
|
45
50
|
}
|
|
51
|
+
export interface IResolvedProjectConfig extends IProjectConfig {
|
|
52
|
+
input: {
|
|
53
|
+
scripts: string[];
|
|
54
|
+
include: string[];
|
|
55
|
+
assets: IAssetInput[];
|
|
56
|
+
};
|
|
57
|
+
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "amxxpack",
|
|
3
3
|
"description": "AMXXPack",
|
|
4
4
|
"author": "Hedgehog Fog",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.3.1",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "lib/builder/index.js",
|
|
8
8
|
"types": "lib/builder/index.d.ts",
|
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
"jest": "^27.5.1",
|
|
70
70
|
"rimraf": "^3.0.2",
|
|
71
71
|
"ts-jest": "^27.1.3",
|
|
72
|
-
"
|
|
72
|
+
"type-fest": "^3.2.0",
|
|
73
|
+
"typescript": "^4.8.4"
|
|
73
74
|
}
|
|
74
75
|
}
|