@signageos/cli 2.3.1 → 2.4.0

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