@signageos/cli 2.3.1 → 2.3.2
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 +1 -0
- package/dist/Applet/Build/appletBuildCommand.js +28 -72
- package/dist/Applet/Generate/Templates/rspack.config.mjs.template +12 -12
- package/dist/Applet/Generate/appletGenerateCommand.d.ts +23 -62
- package/dist/Applet/Generate/appletGenerateCommand.js +398 -365
- package/dist/Applet/Start/appletStartCommand.js +69 -131
- package/dist/Applet/Test/Upload/appletTestRunCommand.js +89 -177
- package/dist/Applet/Test/Upload/appletTestRunFacade.js +4 -27
- package/dist/Applet/Test/Upload/appletTestUploadCommand.js +98 -223
- package/dist/Applet/Test/Upload/appletTestUploadFacade.js +39 -102
- package/dist/Applet/Test/appletTestCommand.js +6 -36
- package/dist/Applet/Upload/appletUploadCommand.js +199 -305
- package/dist/Applet/Upload/appletUploadCommandHelper.js +103 -138
- package/dist/Applet/Upload/appletUploadFacade.d.ts +2 -2
- package/dist/Applet/Upload/appletUploadFacade.js +172 -263
- package/dist/Applet/Upload/appletUploadFacadeHelper.js +39 -52
- package/dist/Applet/appletCommand.d.ts +22 -62
- package/dist/Applet/appletCommand.js +9 -39
- package/dist/Applet/appletErrors.js +5 -24
- package/dist/Applet/appletFacade.js +106 -141
- package/dist/Applet/appletServerHelper.js +16 -53
- package/dist/Auth/loginCommand.js +96 -137
- package/dist/Cache/tmpCache.js +35 -13
- package/dist/Cli/helper.js +1 -2
- package/dist/Cli/packageVersion.js +82 -123
- package/dist/Command/commandDefinition.js +0 -1
- package/dist/Command/commandProcessor.js +40 -129
- package/dist/Command/globalArgs.js +7 -5
- package/dist/CommandLine/IProgressBar.js +0 -1
- package/dist/CommandLine/progressBarFactory.js +31 -11
- package/dist/CustomScript/Generate/customScriptGenerateCommand.js +17 -56
- package/dist/CustomScript/Generate/customScriptGenerateFacade.js +82 -106
- package/dist/CustomScript/Upload/customScriptUploadCommand.js +44 -120
- package/dist/CustomScript/customScriptCommand.js +6 -36
- package/dist/CustomScript/customScriptFacade.js +175 -294
- package/dist/Device/Connect/connectCommand.js +72 -136
- package/dist/Device/Content/setContentCommand.js +33 -78
- package/dist/Device/PowerAction/powerActionCommand.js +22 -65
- package/dist/Device/deviceCommand.js +7 -37
- package/dist/Device/deviceFacade.js +67 -123
- package/dist/Emulator/IEmulator.js +0 -1
- package/dist/Emulator/createDomain.js +33 -12
- package/dist/Emulator/emulatorFacade.js +74 -131
- package/dist/Emulator/emulatorFactory.js +112 -124
- package/dist/Firmware/Upload/firmwareUploadCommand.js +133 -221
- package/dist/Firmware/Upload/firmwareUploadFacade.js +64 -110
- package/dist/Firmware/Upload/firmwareUploadHelper.js +27 -5
- package/dist/Firmware/firmwareCommand.js +5 -35
- package/dist/Lib/archive.js +45 -60
- package/dist/Lib/childProcess.js +27 -5
- package/dist/Lib/fileSystem.js +62 -82
- package/dist/Lib/git.d.ts +1 -1
- package/dist/Lib/git.js +44 -82
- package/dist/Organization/Get/organizationGetCommand.js +14 -50
- package/dist/Organization/List/organizationListCommand.js +12 -46
- package/dist/Organization/SetDefault/organizationSetDefaultCommand.js +18 -56
- package/dist/Organization/organizationCommand.js +7 -37
- package/dist/Organization/organizationFacade.js +97 -172
- package/dist/RunControl/runControlHelper.js +11 -60
- package/dist/Timer/wait.js +1 -2
- package/dist/Timing/List/timingListCommand.js +20 -62
- package/dist/Timing/timingCommand.js +5 -35
- package/dist/generalCommand.js +1 -2
- package/dist/helper.js +48 -109
- package/dist/index.js +15 -45
- package/dist/parameters.js +17 -40
- package/package.json +16 -18
- package/dist/Applet/Build/appletBuildCommand.js.map +0 -1
- package/dist/Applet/Generate/appletGenerateCommand.js.map +0 -1
- package/dist/Applet/Start/appletStartCommand.js.map +0 -1
- package/dist/Applet/Test/Upload/appletTestRunCommand.js.map +0 -1
- package/dist/Applet/Test/Upload/appletTestRunFacade.js.map +0 -1
- package/dist/Applet/Test/Upload/appletTestUploadCommand.js.map +0 -1
- package/dist/Applet/Test/Upload/appletTestUploadFacade.js.map +0 -1
- package/dist/Applet/Test/appletTestCommand.js.map +0 -1
- package/dist/Applet/Upload/appletUploadCommand.js.map +0 -1
- package/dist/Applet/Upload/appletUploadCommandHelper.js.map +0 -1
- package/dist/Applet/Upload/appletUploadFacade.js.map +0 -1
- package/dist/Applet/Upload/appletUploadFacadeHelper.js.map +0 -1
- package/dist/Applet/appletCommand.js.map +0 -1
- package/dist/Applet/appletErrors.js.map +0 -1
- package/dist/Applet/appletFacade.js.map +0 -1
- package/dist/Applet/appletServerHelper.js.map +0 -1
- package/dist/Auth/loginCommand.js.map +0 -1
- package/dist/Cache/tmpCache.js.map +0 -1
- package/dist/Cli/helper.js.map +0 -1
- package/dist/Cli/packageVersion.js.map +0 -1
- package/dist/Command/commandDefinition.js.map +0 -1
- package/dist/Command/commandProcessor.js.map +0 -1
- package/dist/Command/globalArgs.js.map +0 -1
- package/dist/CommandLine/IProgressBar.js.map +0 -1
- package/dist/CommandLine/progressBarFactory.js.map +0 -1
- package/dist/CustomScript/Generate/customScriptGenerateCommand.js.map +0 -1
- package/dist/CustomScript/Generate/customScriptGenerateFacade.js.map +0 -1
- package/dist/CustomScript/Upload/customScriptUploadCommand.js.map +0 -1
- package/dist/CustomScript/customScriptCommand.js.map +0 -1
- package/dist/CustomScript/customScriptFacade.js.map +0 -1
- package/dist/Device/Connect/connectCommand.js.map +0 -1
- package/dist/Device/Content/setContentCommand.js.map +0 -1
- package/dist/Device/PowerAction/powerActionCommand.js.map +0 -1
- package/dist/Device/deviceCommand.js.map +0 -1
- package/dist/Device/deviceFacade.js.map +0 -1
- package/dist/Emulator/IEmulator.js.map +0 -1
- package/dist/Emulator/createDomain.js.map +0 -1
- package/dist/Emulator/emulatorFacade.js.map +0 -1
- package/dist/Emulator/emulatorFactory.js.map +0 -1
- package/dist/Firmware/Upload/firmwareUploadCommand.js.map +0 -1
- package/dist/Firmware/Upload/firmwareUploadFacade.js.map +0 -1
- package/dist/Firmware/Upload/firmwareUploadHelper.js.map +0 -1
- package/dist/Firmware/firmwareCommand.js.map +0 -1
- package/dist/Lib/archive.js.map +0 -1
- package/dist/Lib/childProcess.js.map +0 -1
- package/dist/Lib/fileSystem.js.map +0 -1
- package/dist/Lib/git.js.map +0 -1
- package/dist/Organization/Get/organizationGetCommand.js.map +0 -1
- package/dist/Organization/List/organizationListCommand.js.map +0 -1
- package/dist/Organization/SetDefault/organizationSetDefaultCommand.js.map +0 -1
- package/dist/Organization/organizationCommand.js.map +0 -1
- package/dist/Organization/organizationFacade.js.map +0 -1
- package/dist/RunControl/runControlHelper.js.map +0 -1
- package/dist/Timer/wait.js.map +0 -1
- package/dist/Timing/List/timingListCommand.js.map +0 -1
- package/dist/Timing/timingCommand.js.map +0 -1
- package/dist/generalCommand.js.map +0 -1
- package/dist/helper.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/parameters.js.map +0 -1
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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;
|
|
12
24
|
};
|
|
13
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -19,79 +31,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
19
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
32
|
});
|
|
21
33
|
};
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
29
|
-
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;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
50
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
51
|
-
if (!m) return o;
|
|
52
|
-
var i = m.call(o), r, ar = [], e;
|
|
53
|
-
try {
|
|
54
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
55
|
-
}
|
|
56
|
-
catch (error) { e = { error: error }; }
|
|
57
|
-
finally {
|
|
58
|
-
try {
|
|
59
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
60
|
-
}
|
|
61
|
-
finally { if (e) throw e.error; }
|
|
62
|
-
}
|
|
63
|
-
return ar;
|
|
64
|
-
};
|
|
65
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
66
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
67
|
-
if (ar || !(i in from)) {
|
|
68
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
69
|
-
ar[i] = from[i];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
73
|
-
};
|
|
74
|
-
var __values = (this && this.__values) || function(o) {
|
|
75
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
76
|
-
if (m) return m.call(o);
|
|
77
|
-
if (o && typeof o.length === "number") return {
|
|
78
|
-
next: function () {
|
|
79
|
-
if (o && i >= o.length) o = void 0;
|
|
80
|
-
return { value: o && o[i++], done: !o };
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
84
36
|
};
|
|
85
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
86
38
|
exports.appletGenerate = void 0;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
39
|
+
const fs = __importStar(require("fs-extra"));
|
|
40
|
+
const child_process = __importStar(require("child_process"));
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const prompts_1 = __importDefault(require("prompts"));
|
|
44
|
+
const log_1 = require("@signageos/sdk/dist/Console/log");
|
|
45
|
+
const git_1 = require("../../Lib/git");
|
|
46
|
+
const commandDefinition_1 = require("../../Command/commandDefinition");
|
|
47
|
+
const which_1 = __importDefault(require("which"));
|
|
95
48
|
var Language;
|
|
96
49
|
(function (Language) {
|
|
97
50
|
Language["JavaScript"] = "javascript";
|
|
@@ -107,35 +60,48 @@ var GitOptions;
|
|
|
107
60
|
GitOptions["No"] = "no";
|
|
108
61
|
GitOptions["Yes"] = "yes";
|
|
109
62
|
})(GitOptions || (GitOptions = {}));
|
|
110
|
-
var
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
63
|
+
var Packager;
|
|
64
|
+
(function (Packager) {
|
|
65
|
+
Packager["Npm"] = "npm";
|
|
66
|
+
Packager["Pnpm"] = "pnpm";
|
|
67
|
+
Packager["Yarn"] = "yarn";
|
|
68
|
+
Packager["Bun"] = "bun";
|
|
69
|
+
})(Packager || (Packager = {}));
|
|
70
|
+
const NAME_REGEXP = /^\w(\w|\d|-)*\w$/;
|
|
71
|
+
let PACKAGER_EXECUTABLE = 'npm';
|
|
72
|
+
const OPTION_LIST = [
|
|
73
|
+
{ name: 'name', type: String, description: `Applet name. Match RegExp: ${NAME_REGEXP.toString()}` },
|
|
74
|
+
{ name: 'applet-version', type: String, description: 'Applet initial version. Use semantic version', defaultValue: '0.0.0' },
|
|
115
75
|
{ name: 'target-dir', type: String, description: 'Directory where will be the applet generated to' },
|
|
116
|
-
{ name: '
|
|
117
|
-
{ name: '
|
|
118
|
-
{ name: '
|
|
119
|
-
{ name: '
|
|
76
|
+
{ name: 'git', type: String, description: 'Init applet as git repository "no" (default) or "yes"' },
|
|
77
|
+
{ name: 'packager', type: String, description: 'Use preferred package manager "npm" (default), "pnpm", "yarn" or "bun"' },
|
|
78
|
+
{ name: 'npm-registry', type: String, description: 'NPM registry URL. If you have your private npm registry' },
|
|
79
|
+
{ name: 'language', type: String, description: 'Generate applet with "typescript" or "javascript" source code' },
|
|
80
|
+
{ name: 'bundler', type: String, description: 'Generate applet with "webpack" (default) or "rspack"' },
|
|
120
81
|
];
|
|
121
|
-
|
|
82
|
+
const DEPENDENCIES = {
|
|
122
83
|
common: [
|
|
123
84
|
'@signageos/front-applet@latest',
|
|
124
|
-
'@signageos/front-display@
|
|
85
|
+
'@signageos/front-display@latest',
|
|
125
86
|
'@signageos/webpack-plugin@latest',
|
|
126
|
-
'es-check@
|
|
87
|
+
'es-check@9',
|
|
127
88
|
/* required for transpilation to ES5 */
|
|
89
|
+
'css-loader@7',
|
|
90
|
+
'style-loader@4',
|
|
91
|
+
'core-js@3',
|
|
92
|
+
],
|
|
93
|
+
webpack: [
|
|
94
|
+
'webpack@5',
|
|
95
|
+
'webpack-cli@6',
|
|
96
|
+
'webpack-dev-server@5',
|
|
97
|
+
'html-webpack-plugin@5',
|
|
98
|
+
'babel-loader@10',
|
|
128
99
|
'@babel/core@7',
|
|
129
100
|
'@babel/preset-env@7',
|
|
130
|
-
'babel-loader@8',
|
|
131
|
-
'css-loader@6',
|
|
132
|
-
'style-loader@3',
|
|
133
|
-
'core-js@3',
|
|
134
101
|
],
|
|
135
|
-
webpack: ['webpack@5', 'webpack-cli@4', 'webpack-dev-server@4', 'html-webpack-plugin@5'],
|
|
136
102
|
rspack: ['@rspack/core@latest', '@rspack/cli@latest'],
|
|
137
103
|
};
|
|
138
|
-
|
|
104
|
+
const RUNSCRIPTS = {
|
|
139
105
|
common: {
|
|
140
106
|
prepare: 'npm run clean && npm run build',
|
|
141
107
|
upload: 'sos applet upload',
|
|
@@ -160,7 +126,7 @@ var RUNSCRIPTS = {
|
|
|
160
126
|
* @returns string
|
|
161
127
|
* @throws Will throw an error if the file does not exist
|
|
162
128
|
*/
|
|
163
|
-
|
|
129
|
+
const importFileAsString = (relativePath) => {
|
|
164
130
|
return fs.readFileSync(path.resolve(__dirname, relativePath), 'utf-8');
|
|
165
131
|
};
|
|
166
132
|
/**
|
|
@@ -176,6 +142,7 @@ var importFileAsString = function (relativePath) {
|
|
|
176
142
|
* @param {string} options.language - The language of the applet (typescript or javascript)
|
|
177
143
|
* @param {string} options.bundler - The bundler to use (webpack or rspack)
|
|
178
144
|
* @param {string} options.git - Whether to initialize a git repository (yes or no)
|
|
145
|
+
* @param {string} options.packager - Whether to manage packages with npm, pnpm, bun or yarn
|
|
179
146
|
* @returns {Promise<void>} - A promise that resolves when the applet is generated
|
|
180
147
|
* @example
|
|
181
148
|
* appletGenerate.run({
|
|
@@ -193,277 +160,344 @@ exports.appletGenerate = (0, commandDefinition_1.createCommandDefinition)({
|
|
|
193
160
|
description: 'Generate basic applet sample',
|
|
194
161
|
optionList: OPTION_LIST,
|
|
195
162
|
commands: [],
|
|
196
|
-
run
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
content: 'node_modules/\n./dist',
|
|
370
|
-
});
|
|
371
|
-
_j.label = 12;
|
|
372
|
-
case 12:
|
|
373
|
-
_j.trys.push([12, 14, , 15]);
|
|
374
|
-
return [4 /*yield*/, (0, git_1.initGitRepository)(appletRootDirectory)];
|
|
375
|
-
case 13:
|
|
376
|
-
_j.sent();
|
|
377
|
-
return [3 /*break*/, 15];
|
|
378
|
-
case 14:
|
|
379
|
-
error_1 = _j.sent();
|
|
380
|
-
console.error("Git repository initialization failed: ".concat(error_1));
|
|
381
|
-
return [3 /*break*/, 15];
|
|
382
|
-
case 15:
|
|
383
|
-
_j.trys.push([15, 21, 22, 23]);
|
|
384
|
-
generateFiles_1 = __values(generateFiles), generateFiles_1_1 = generateFiles_1.next();
|
|
385
|
-
_j.label = 16;
|
|
386
|
-
case 16:
|
|
387
|
-
if (!!generateFiles_1_1.done) return [3 /*break*/, 20];
|
|
388
|
-
generateFile = generateFiles_1_1.value;
|
|
389
|
-
return [4 /*yield*/, fs.ensureDir(path.dirname(generateFile.path))];
|
|
390
|
-
case 17:
|
|
391
|
-
_j.sent();
|
|
392
|
-
return [4 /*yield*/, fs.writeFile(generateFile.path, generateFile.content)];
|
|
393
|
-
case 18:
|
|
394
|
-
_j.sent();
|
|
395
|
-
_j.label = 19;
|
|
396
|
-
case 19:
|
|
397
|
-
generateFiles_1_1 = generateFiles_1.next();
|
|
398
|
-
return [3 /*break*/, 16];
|
|
399
|
-
case 20: return [3 /*break*/, 23];
|
|
400
|
-
case 21:
|
|
401
|
-
e_1_1 = _j.sent();
|
|
402
|
-
e_1 = { error: e_1_1 };
|
|
403
|
-
return [3 /*break*/, 23];
|
|
404
|
-
case 22:
|
|
405
|
-
try {
|
|
406
|
-
if (generateFiles_1_1 && !generateFiles_1_1.done && (_h = generateFiles_1.return)) _h.call(generateFiles_1);
|
|
407
|
-
}
|
|
408
|
-
finally { if (e_1) throw e_1.error; }
|
|
409
|
-
return [7 /*endfinally*/];
|
|
410
|
-
case 23:
|
|
411
|
-
// Install dependencies
|
|
412
|
-
console.log('Installing dependencies:\n', mergedDeps);
|
|
413
|
-
process.chdir(appletRootDirectory);
|
|
414
|
-
child = child_process.spawn(NPM_EXECUTABLE, __spreadArray(['install', '--save-dev'], __read(mergedDeps), false), {
|
|
415
|
-
stdio: 'inherit',
|
|
416
|
-
shell: true,
|
|
417
|
-
});
|
|
418
|
-
child.on('close', function () {
|
|
419
|
-
(0, log_1.log)('info', "\nApplet ".concat(chalk_1.default.green(appletName), " created!"));
|
|
420
|
-
(0, log_1.log)('info', "use: cd ".concat(chalk_1.default.green(appletRootDirectoryName), " and ").concat(chalk_1.default.green('npm start'), "\n"));
|
|
421
|
-
});
|
|
422
|
-
return [2 /*return*/];
|
|
163
|
+
run(options) {
|
|
164
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
165
|
+
const currentDirectory = process.cwd();
|
|
166
|
+
// Detect if the command has been called with optional parameters
|
|
167
|
+
const excludedKeys = ['command', 'applet-version'];
|
|
168
|
+
const argumentsFound = Object.entries(options)
|
|
169
|
+
.filter(([key, _value]) => !excludedKeys.includes(key))
|
|
170
|
+
.map(([key, value]) => ({ [key]: value })).length > 0;
|
|
171
|
+
console.info('sOS CLI started with params:', options);
|
|
172
|
+
// Create file index
|
|
173
|
+
const generateFiles = [];
|
|
174
|
+
// PROMPT: Applet Name
|
|
175
|
+
let appletName = typeof options.name === 'string' ? options.name : undefined;
|
|
176
|
+
if (!appletName) {
|
|
177
|
+
const response = yield (0, prompts_1.default)({
|
|
178
|
+
type: 'text',
|
|
179
|
+
name: 'name',
|
|
180
|
+
message: `Type applet name`,
|
|
181
|
+
});
|
|
182
|
+
appletName = response.name;
|
|
183
|
+
}
|
|
184
|
+
if (!appletName) {
|
|
185
|
+
throw new Error(`Missing argument --name <string>`);
|
|
186
|
+
}
|
|
187
|
+
if (!NAME_REGEXP.test(appletName)) {
|
|
188
|
+
throw new Error(`Name has to start and end with a character (a-zA-Z0-9_)\nRegExp: ${NAME_REGEXP.toString()}`);
|
|
189
|
+
}
|
|
190
|
+
// PROMPT: Language select
|
|
191
|
+
let language;
|
|
192
|
+
if (options.language === undefined) {
|
|
193
|
+
const response = yield (0, prompts_1.default)({
|
|
194
|
+
type: 'select',
|
|
195
|
+
name: 'language',
|
|
196
|
+
message: `Select language of generated applet`,
|
|
197
|
+
choices: [
|
|
198
|
+
{ title: Language.TypeScript, value: Language.TypeScript },
|
|
199
|
+
{ title: Language.JavaScript, value: Language.JavaScript },
|
|
200
|
+
],
|
|
201
|
+
});
|
|
202
|
+
language = response.language;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
language = typeof options.language === 'string' ? options.language.toLowerCase() : Language.TypeScript;
|
|
206
|
+
}
|
|
207
|
+
checkSupport('language', language, Object.values(Language));
|
|
208
|
+
// PROMPT: Git support select
|
|
209
|
+
let git;
|
|
210
|
+
const gitFound = yield (0, which_1.default)('git', { nothrow: true });
|
|
211
|
+
if (!gitFound) {
|
|
212
|
+
console.error(`Git not found on this machine`);
|
|
213
|
+
}
|
|
214
|
+
// PROMPT: Skip prompt if git was not found
|
|
215
|
+
if (options.git === undefined && gitFound && !argumentsFound) {
|
|
216
|
+
const response = yield (0, prompts_1.default)({
|
|
217
|
+
type: 'select',
|
|
218
|
+
name: 'git',
|
|
219
|
+
message: `Init applet as git repository`,
|
|
220
|
+
choices: [
|
|
221
|
+
{ title: GitOptions.No, value: GitOptions.No },
|
|
222
|
+
{ title: GitOptions.Yes, value: GitOptions.Yes },
|
|
223
|
+
],
|
|
224
|
+
});
|
|
225
|
+
git = response.git;
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
git = typeof options.git === 'string' ? options.git.toLowerCase() : GitOptions.No;
|
|
229
|
+
}
|
|
230
|
+
checkSupport('git', git, Object.values(GitOptions));
|
|
231
|
+
// PROMPT: Bundler select
|
|
232
|
+
let bundler;
|
|
233
|
+
if (options.bundler === undefined) {
|
|
234
|
+
const response = yield (0, prompts_1.default)({
|
|
235
|
+
type: 'select',
|
|
236
|
+
name: 'bundler',
|
|
237
|
+
message: `Select bundler of generated applet`,
|
|
238
|
+
choices: [
|
|
239
|
+
{ title: Bundler.Webpack, value: Bundler.Webpack },
|
|
240
|
+
{ title: Bundler.Rspack, value: Bundler.Rspack },
|
|
241
|
+
],
|
|
242
|
+
});
|
|
243
|
+
bundler = response.bundler;
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
bundler = typeof options.bundler === 'string' ? options.bundler.toLowerCase() : Bundler.Webpack;
|
|
247
|
+
}
|
|
248
|
+
checkSupport('bundler', bundler, Object.values(Bundler));
|
|
249
|
+
const targetDir = typeof options['target-dir'] === 'string' ? options['target-dir'] : undefined;
|
|
250
|
+
const appletRootDirectory = targetDir || path.join(currentDirectory, appletName);
|
|
251
|
+
const appletRootDirectoryName = targetDir || appletName;
|
|
252
|
+
// Merge dependencies
|
|
253
|
+
const mergedDeps = [...DEPENDENCIES.common];
|
|
254
|
+
switch (bundler) {
|
|
255
|
+
case Bundler.Rspack:
|
|
256
|
+
mergedDeps.push(...DEPENDENCIES.rspack);
|
|
257
|
+
break;
|
|
258
|
+
case Bundler.Webpack:
|
|
259
|
+
mergedDeps.push(...DEPENDENCIES.webpack);
|
|
260
|
+
break;
|
|
261
|
+
default:
|
|
262
|
+
console.warn(`Unknown bundler ${bundler}. No additional dependencies added.`);
|
|
263
|
+
}
|
|
264
|
+
// PROMPT: Package manager select
|
|
265
|
+
let packager;
|
|
266
|
+
if (options.packager === undefined) {
|
|
267
|
+
const response = yield (0, prompts_1.default)({
|
|
268
|
+
type: 'select',
|
|
269
|
+
name: 'packager',
|
|
270
|
+
message: `Select preferred package manager`,
|
|
271
|
+
choices: [
|
|
272
|
+
{ title: Packager.Npm, value: Packager.Npm },
|
|
273
|
+
{ title: Packager.Pnpm, value: Packager.Pnpm },
|
|
274
|
+
{ title: Packager.Yarn, value: Packager.Yarn },
|
|
275
|
+
{ title: Packager.Bun, value: Packager.Bun },
|
|
276
|
+
],
|
|
277
|
+
});
|
|
278
|
+
packager = response.packager;
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
packager = typeof options.packager === 'string' ? options.packager.toLowerCase() : Packager.Npm;
|
|
282
|
+
}
|
|
283
|
+
checkSupport('packager', packager, Object.values(Packager));
|
|
284
|
+
switch (packager) {
|
|
285
|
+
case Packager.Pnpm:
|
|
286
|
+
PACKAGER_EXECUTABLE = 'pnpm';
|
|
287
|
+
RUNSCRIPTS.common = {
|
|
288
|
+
prepare: 'pnpm run clean && pnpm run build',
|
|
289
|
+
upload: 'sos applet upload',
|
|
290
|
+
clean: 'pnpx rimraf dist',
|
|
291
|
+
escheck: 'pnpx es-check --module es5 dist/**/*.js',
|
|
292
|
+
postbuild: 'pnpm run escheck',
|
|
293
|
+
};
|
|
294
|
+
break;
|
|
295
|
+
case Packager.Yarn:
|
|
296
|
+
PACKAGER_EXECUTABLE = 'yarn';
|
|
297
|
+
RUNSCRIPTS.common = {
|
|
298
|
+
prepare: 'yarn run clean && yarn run build',
|
|
299
|
+
upload: 'sos applet upload',
|
|
300
|
+
clean: 'npx rimraf dist',
|
|
301
|
+
escheck: 'npx es-check --module es5 dist/**/*.js',
|
|
302
|
+
postbuild: 'npm run escheck',
|
|
303
|
+
};
|
|
304
|
+
break;
|
|
305
|
+
case Packager.Bun:
|
|
306
|
+
PACKAGER_EXECUTABLE = 'bun';
|
|
307
|
+
RUNSCRIPTS.common = {
|
|
308
|
+
prepare: 'bun run clean && bun run build',
|
|
309
|
+
upload: 'sos applet upload',
|
|
310
|
+
clean: 'bunx rimraf dist',
|
|
311
|
+
escheck: 'bunx es-check --module es5 dist/**/*.js',
|
|
312
|
+
postbuild: 'bun run escheck',
|
|
313
|
+
};
|
|
314
|
+
break;
|
|
315
|
+
default:
|
|
316
|
+
}
|
|
317
|
+
generateFiles.push({
|
|
318
|
+
path: path.join(appletRootDirectory, '.npmrc'),
|
|
319
|
+
content: 'registry=https://registry.npmjs.org/\nalways-auth=false',
|
|
320
|
+
});
|
|
321
|
+
// TypeScript or JavaScript
|
|
322
|
+
if (language === Language.TypeScript) {
|
|
323
|
+
generateFiles.push({
|
|
324
|
+
path: path.join(appletRootDirectory, 'src', 'index.ts'),
|
|
325
|
+
content: createIndexTs(),
|
|
326
|
+
});
|
|
327
|
+
generateFiles.push({
|
|
328
|
+
path: path.join(appletRootDirectory, 'tsconfig.json'),
|
|
329
|
+
content: createTsConfig(),
|
|
330
|
+
});
|
|
331
|
+
// Extend dependencies for Typescript
|
|
332
|
+
mergedDeps.push('typescript@5');
|
|
333
|
+
// Extend dependencies for Webpack
|
|
334
|
+
if (bundler === Bundler.Webpack) {
|
|
335
|
+
mergedDeps.push('ts-loader@9', '@babel/preset-typescript@7', 'ts-node@10');
|
|
423
336
|
}
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
generateFiles.push({
|
|
340
|
+
path: path.join(appletRootDirectory, 'src', 'index.js'),
|
|
341
|
+
content: createIndexJs(),
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
// Create styles
|
|
345
|
+
// TODO sass support
|
|
346
|
+
{
|
|
347
|
+
generateFiles.push({
|
|
348
|
+
path: path.join(appletRootDirectory, 'src', 'index.css'),
|
|
349
|
+
content: createIndexCss(),
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
// Create custom npm registry config
|
|
353
|
+
if (typeof options['npm-registry'] === 'string') {
|
|
354
|
+
generateFiles.push({
|
|
355
|
+
path: path.join(appletRootDirectory, '.npmrc'),
|
|
356
|
+
content: createNpmRunControl(options['npm-registry']),
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
if (!options['applet-version']) {
|
|
360
|
+
throw new Error('Argument --applet-version is required');
|
|
361
|
+
}
|
|
362
|
+
// Add files to project
|
|
363
|
+
generateFiles.push({
|
|
364
|
+
path: path.join(appletRootDirectory, 'package.json'),
|
|
365
|
+
content: JSON.stringify(yield createPackageConfig(appletName, String(options['applet-version']), bundler, language), undefined, 2) + '\n',
|
|
366
|
+
});
|
|
367
|
+
// Configure bundler
|
|
368
|
+
switch (bundler) {
|
|
369
|
+
case Bundler.Rspack:
|
|
370
|
+
generateFiles.push({
|
|
371
|
+
path: path.join(appletRootDirectory, 'rspack.config.mjs'),
|
|
372
|
+
content: createRspackConfig(),
|
|
373
|
+
});
|
|
374
|
+
break;
|
|
375
|
+
case Bundler.Webpack:
|
|
376
|
+
generateFiles.push({
|
|
377
|
+
path: path.join(appletRootDirectory, 'webpack.config.js'),
|
|
378
|
+
content: createWebpackConfig(),
|
|
379
|
+
});
|
|
380
|
+
break;
|
|
381
|
+
default:
|
|
382
|
+
throw new Error('Argument --bundler is required');
|
|
383
|
+
}
|
|
384
|
+
generateFiles.push({
|
|
385
|
+
path: path.join(appletRootDirectory, 'public', 'index.html'),
|
|
386
|
+
content: createIndexHtml(appletName),
|
|
424
387
|
});
|
|
388
|
+
generateFiles.push({
|
|
389
|
+
path: path.join(appletRootDirectory, '.sosignore'),
|
|
390
|
+
content: 'node_modules/\n',
|
|
391
|
+
});
|
|
392
|
+
// Initialise git repository
|
|
393
|
+
if (git === GitOptions.Yes && gitFound) {
|
|
394
|
+
generateFiles.push({
|
|
395
|
+
path: path.join(appletRootDirectory, '.gitignore'),
|
|
396
|
+
content: 'node_modules/\n./dist',
|
|
397
|
+
});
|
|
398
|
+
yield (0, git_1.initGitRepository)(appletRootDirectory, true).catch((error) => {
|
|
399
|
+
console.error(`Git repository initialization failed: ${error}`);
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
// Create applet directory
|
|
403
|
+
for (const generateFile of generateFiles) {
|
|
404
|
+
yield fs.ensureDir(path.dirname(generateFile.path));
|
|
405
|
+
yield fs.writeFile(generateFile.path, generateFile.content);
|
|
406
|
+
}
|
|
407
|
+
console.info(`Loooking for ${PACKAGER_EXECUTABLE}`);
|
|
408
|
+
const packagerFound = yield (0, which_1.default)(PACKAGER_EXECUTABLE).catch((err) => {
|
|
409
|
+
console.error(`${PACKAGER_EXECUTABLE} not found on this machine: ${err}`);
|
|
410
|
+
});
|
|
411
|
+
if (packagerFound) {
|
|
412
|
+
// Install dependencies
|
|
413
|
+
process.chdir(appletRootDirectory);
|
|
414
|
+
// Ensure the default .npmrc file will be loaded from project root
|
|
415
|
+
// Yarn 2+ uses .yarnrc.yml, but we can use this flag to override user's .npmrc
|
|
416
|
+
const packagerPrefix = ''; // 'NPM_CONFIG_USERCONFIG=/dev/null';
|
|
417
|
+
const configFlag = packager === Packager.Yarn ? '--no-default-rc' : '';
|
|
418
|
+
const installCommand = packager === Packager.Yarn ? 'add' : 'install';
|
|
419
|
+
// Log the command being executed
|
|
420
|
+
console.info(`Installing dependencies: ${packagerPrefix} ${PACKAGER_EXECUTABLE} ${installCommand} ${configFlag} --save-dev ${mergedDeps.join(' ')}`);
|
|
421
|
+
const child = child_process.spawn(PACKAGER_EXECUTABLE, [packagerPrefix, installCommand, configFlag, '--save-dev', ...mergedDeps], {
|
|
422
|
+
stdio: 'pipe',
|
|
423
|
+
shell: true,
|
|
424
|
+
});
|
|
425
|
+
// Capture and log stdout
|
|
426
|
+
child.stdout.on('data', (data) => {
|
|
427
|
+
console.log(`${data.toString()}`);
|
|
428
|
+
});
|
|
429
|
+
// Capture and log stderr
|
|
430
|
+
child.stderr.on('data', (data) => {
|
|
431
|
+
console.error(`${data.toString()}`);
|
|
432
|
+
});
|
|
433
|
+
// Handle errors
|
|
434
|
+
child.on('error', (error) => {
|
|
435
|
+
console.error(`Error executing command: ${error.message}`);
|
|
436
|
+
});
|
|
437
|
+
// Handle process exit
|
|
438
|
+
child.on('close', (code) => {
|
|
439
|
+
if (code === 0) {
|
|
440
|
+
(0, log_1.log)('info', `\nApplet ${chalk_1.default.green(appletName)} created!`);
|
|
441
|
+
(0, log_1.log)('info', `\nContinue with ${chalk_1.default.green(`cd ${appletRootDirectoryName}`)} and ${chalk_1.default.green(`${PACKAGER_EXECUTABLE} start`)}`);
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
console.error(`Command exited with code ${code}`);
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
else {
|
|
449
|
+
(0, log_1.log)('info', `${chalk_1.default.red(`Please first install ${PACKAGER_EXECUTABLE} globally.`)}\nContinue with ${chalk_1.default.green(`cd ${appletRootDirectoryName}`)}, ${chalk_1.default.green(`${PACKAGER_EXECUTABLE} install`)} and ${chalk_1.default.green(`${PACKAGER_EXECUTABLE} start`)}`);
|
|
450
|
+
(0, log_1.log)('info', `\nApplet ${chalk_1.default.white(appletName)} created!`);
|
|
451
|
+
}
|
|
425
452
|
});
|
|
426
453
|
},
|
|
427
454
|
});
|
|
428
455
|
/**
|
|
429
456
|
* Create package.json config
|
|
430
457
|
*/
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
458
|
+
const createPackageConfig = (name, version, bundler, language) => __awaiter(void 0, void 0, void 0, function* () {
|
|
459
|
+
// Define type for script definition to avoid TypeScript errors
|
|
460
|
+
let scriptDef = Object.assign({}, RUNSCRIPTS.common);
|
|
461
|
+
switch (bundler) {
|
|
462
|
+
case Bundler.Rspack:
|
|
463
|
+
scriptDef = Object.assign(Object.assign({}, scriptDef), RUNSCRIPTS.rspack);
|
|
464
|
+
break;
|
|
465
|
+
case Bundler.Webpack:
|
|
466
|
+
default:
|
|
467
|
+
scriptDef = Object.assign(Object.assign({}, scriptDef), RUNSCRIPTS.webpack);
|
|
468
|
+
}
|
|
469
|
+
// Add typescript checking before builds
|
|
470
|
+
if (language === Language.TypeScript) {
|
|
471
|
+
scriptDef.typecheck = 'tsc --noEmit';
|
|
472
|
+
// Make sure build exists before modifying it
|
|
473
|
+
if (scriptDef.build) {
|
|
474
|
+
scriptDef.build = `npm run typecheck && ${scriptDef.build}`;
|
|
444
475
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
}
|
|
456
|
-
});
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
return importFileAsString('./Templates/index.html.template').
|
|
476
|
+
}
|
|
477
|
+
return {
|
|
478
|
+
name,
|
|
479
|
+
version,
|
|
480
|
+
main: 'dist/index.html',
|
|
481
|
+
scripts: scriptDef,
|
|
482
|
+
files: ['dist'],
|
|
483
|
+
description: 'signageOS applet',
|
|
484
|
+
repository: {},
|
|
485
|
+
license: 'UNLICENSED',
|
|
486
|
+
};
|
|
487
|
+
});
|
|
488
|
+
const createWebpackConfig = () => importFileAsString('./Templates/webpack.config.js.template');
|
|
489
|
+
const createRspackConfig = () => importFileAsString('./Templates/rspack.config.mjs.template');
|
|
490
|
+
const createIndexHtml = (title) => {
|
|
491
|
+
return importFileAsString('./Templates/index.html.template').replace(/\$\{title\}/g, title);
|
|
461
492
|
};
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
493
|
+
const createIndexCss = () => importFileAsString('./Templates/index.css.template');
|
|
494
|
+
const createIndexJs = () => importFileAsString('./Templates/index.js.template');
|
|
495
|
+
const createIndexTs = () => createIndexJs(); // There is currently no difference
|
|
496
|
+
const createTsConfig = () => importFileAsString('./Templates/tsconfig.js.template');
|
|
497
|
+
const createNpmRunControl = (registryUrl) => `
|
|
498
|
+
registry=${registryUrl}
|
|
499
|
+
always-auth=true
|
|
500
|
+
`;
|
|
467
501
|
/**
|
|
468
502
|
* Check if the value is present and is one of the supported options
|
|
469
503
|
* @param propName - The name of the property to check
|
|
@@ -471,10 +505,9 @@ var createNpmRunControl = function (registryUrl) { return "\nregistry=".concat(r
|
|
|
471
505
|
* @param options - The supported options
|
|
472
506
|
* @throws Will throw an error if the value is not present or not one of the supported options
|
|
473
507
|
*/
|
|
474
|
-
|
|
475
|
-
|
|
508
|
+
function checkSupport(propName, value, options) {
|
|
509
|
+
const values = Object.values(options);
|
|
476
510
|
if (!value || !values.includes(value)) {
|
|
477
|
-
throw new Error(
|
|
511
|
+
throw new Error(`Missing or incorrect argument --${propName} <${values.join('|')}>`);
|
|
478
512
|
}
|
|
479
|
-
}
|
|
480
|
-
//# sourceMappingURL=appletGenerateCommand.js.map
|
|
513
|
+
}
|