generator-easy-ui5 3.5.2 → 3.6.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/CHANGELOG.md CHANGED
@@ -1,13 +1,19 @@
1
- ## [3.5.1](https://github.com/SAP/generator-easy-ui5/compare/v3.2.0...v3.5.1) (2022-09-10)
1
+ # [3.6.0](https://github.com/SAP/generator-easy-ui5/compare/v3.5.1...v3.6.0) (2023-06-11)
2
2
 
3
3
  ### Bug Fixes
4
4
 
5
- - enable for Yeoman UI usage ([03c2e38](https://github.com/SAP/generator-easy-ui5/commit/03c2e38af4eebe108d6076710b74d8aaf7c31d8d))
5
+ - also include embedded subgens ([86912a8](https://github.com/SAP/generator-easy-ui5/commit/86912a8cb4736ea8950696de14ce20e87056246f))
6
+ - sort subgen list, remove threshold, fix permission issues ([#123](https://github.com/SAP/generator-easy-ui5/issues/123)) ([c5dd321](https://github.com/SAP/generator-easy-ui5/commit/c5dd3218a26870a61722a9675a81831cc8af50e5)), closes [#122](https://github.com/SAP/generator-easy-ui5/issues/122) [#118](https://github.com/SAP/generator-easy-ui5/issues/118) [#117](https://github.com/SAP/generator-easy-ui5/issues/117) [#111](https://github.com/SAP/generator-easy-ui5/issues/111)
7
+
8
+ ### Features
6
9
 
7
- ## [3.5.0](https://github.com/SAP/generator-easy-ui5/compare/v3.2.0...v3.5.0) (2022-07-26)
10
+ - support for coporate proxy / switch to esm / update deps ([#124](https://github.com/SAP/generator-easy-ui5/issues/124)) ([bf95254](https://github.com/SAP/generator-easy-ui5/commit/bf95254694025f3d22e5af37bb610ba7d2a0e215)), closes [#79](https://github.com/SAP/generator-easy-ui5/issues/79)
11
+
12
+ ## [3.5.1](https://github.com/SAP/generator-easy-ui5/compare/v3.2.0...v3.5.1) (2022-09-10)
8
13
 
9
14
  ### Bug Fixes
10
15
 
16
+ - enable for Yeoman UI usage ([03c2e38](https://github.com/SAP/generator-easy-ui5/commit/03c2e38af4eebe108d6076710b74d8aaf7c31d8d))
11
17
  - **postinstall:** allow usage of NPM config for ghAuthToken to avoid rate limit ([#104](https://github.com/SAP/generator-easy-ui5/issues/104)) ([371d7fb](https://github.com/SAP/generator-easy-ui5/commit/371d7fbc82b8a59cef896197b99239b505b3cd90)), closes [#100](https://github.com/SAP/generator-easy-ui5/issues/100)
12
18
  - **postinstall:** avoid non-existing node_modules ([#98](https://github.com/SAP/generator-easy-ui5/issues/98)) ([f93c7c9](https://github.com/SAP/generator-easy-ui5/commit/f93c7c99b9e5df7af801a085afe72be85e462007))
13
19
  - usage of proper gh org for logging and download ([#94](https://github.com/SAP/generator-easy-ui5/issues/94)) ([a88d4db](https://github.com/SAP/generator-easy-ui5/commit/a88d4dbb0a1f5ed3cf60f7ed0297c651222a83fb))
package/README.md CHANGED
@@ -8,15 +8,15 @@
8
8
 
9
9
  ## Description
10
10
 
11
- Easy-ui5 💙 is a [Yeoman](http://yeoman.io/) generator which enables you to create simple [SAPUI5](https://sapui5.hana.ondemand.com/)/[OpenUI5](https://openui5.hana.ondemand.com/)-based web-apps and other UI5-related projects within seconds.
11
+ Easy UI5 (`easy-ui5`) 💙 is a [Yeoman](http://yeoman.io/) generator which enables you to create simple [SAPUI5](https://ui5.sap.com)/[OpenUI5](https://sdk.openui5.org)-based web-apps and other UI5-related projects within seconds.
12
12
 
13
13
  This generator has been created to simplify the creation of your UI5 prototypes. Now you can scaffold simple UI5 projects from the shell/terminal of your choice. The current best practices (such as [async](https://blogs.sap.com/2018/12/18/ui5ers-buzz-41-best-practices-for-async-loading-in-ui5/)) are already baked into our templates so you don't have to worry about the definition of the metadata files.
14
14
 
15
- The purpose of this generator is to guide you on your first steps with [SAPUI5](https://sapui5.hana.ondemand.com/) and [SAP BTP](https://www.sap.com/products/business-technology-platform.html) deployments. Once you are familiar with those technologies, you might want to tweak the projects to adapt them for productive use-cases (such as continuous deployment pipelines and full i18n).
15
+ The purpose of the `project` subgenerator is to guide you on your first steps with [SAPUI5](https://sapui5.hana.ondemand.com/) and [SAP BTP](https://www.sap.com/products/business-technology-platform.html) deployments. Once you are familiar with those technologies, you might want to tweak the projects to adapt them for productive use-cases (such as continuous deployment pipelines and full i18n).
16
16
 
17
- > :warning: Starting with easy-ui5 v3, all templates will be outsource to repositories in the [UI5 Community](https://github.com/ui5-community/). This project is from now on a shell that will offer all generators hosted on that GitHub org. Easy-ui5 will download and install these repositories when needed.
17
+ > :warning: Starting with Easy UI5 v3, all templates will be outsource to repositories in the [UI5 Community](https://github.com/ui5-community/). This project is from now on a shell that will offer all generators hosted on that GitHub org. Easy UI5 will download and install these repositories when needed.
18
18
  >
19
- > By default, it will download the repository [generator-ui5-project](https://github.com/ui5-community/generator-ui5-project/) which contains the templates that were previously integrated in easy-ui5 < 3.
19
+ > By default, it will download the repository [generator-ui5-project](https://github.com/ui5-community/generator-ui5-project/) which contains the templates that were previously integrated in Easy UI5 < 3.
20
20
 
21
21
  ## Requirements
22
22
 
@@ -63,7 +63,8 @@ During the prompting phase, the generator will ask on which target platform your
63
63
  ## More generators
64
64
 
65
65
  And this is just the start!
66
- We made easy-ui5 extensible, so that the entire [UI5 Community](https://github.com/ui5-community/) can build additional plugins to scaffold any UI5-related development activity.
66
+
67
+ We made Easy UI5 extensible, so that the entire [UI5 Community](https://github.com/ui5-community/) can build additional plugins to scaffold any UI5-related development activity.
67
68
 
68
69
  By default, this generator comes with the [project-creation-plugin](https://github.com/ui5-community/generator-ui5-project) but there are many others as well:
69
70
 
@@ -98,6 +99,14 @@ Run the following command to see all subgenerators of a given plugin
98
99
  yo easy-ui5 [project|library] <sub-generator-id>
99
100
  ```
100
101
 
102
+ ## Proxy settings
103
+
104
+ If you are running Easy UI5 behind a coporate proxy, just use the default proxy environment variables for Node.js to configure your corporate proxy:
105
+
106
+ - `HTTP_PROXY`: Specify the value to use as the HTTP proxy for all connections, e.g., `HTTP_PROXY="http://proxy.mycompany.com:8080/"`.
107
+ - `HTTPS_PROXY`: Specify the value to use as the HTTPS proxy for all connections, e.g., `HTTPS_PROXY="https://proxy.mycompany.com:8080/"`.
108
+ - `NO_PROXY`: Define the hosts that should bypass the proxy, e.g., `NO_PROXY="localhost,.mycompany.com,192.168.6.254:80"`.
109
+
101
110
  ## How to obtain support
102
111
 
103
112
  Please use the GitHub bug tracking system to post questions, bug reports or to create pull requests.
@@ -1,20 +1,33 @@
1
- "use strict";
2
- const Generator = require("yeoman-generator");
3
- const chalk = require("chalk");
4
- const yosay = require("yosay");
5
- const spawn = require("cross-spawn");
6
- const { hasYarn } = require("yarn-or-npm");
7
-
8
- const path = require("path");
9
- const fs = require("fs");
10
- const { rm } = require("fs").promises;
11
- const glob = require("glob");
12
-
13
- const { request } = require("@octokit/request");
14
- const { Octokit } = require("@octokit/rest");
15
- const { throttling } = require("@octokit/plugin-throttling");
1
+ import Generator from "yeoman-generator";
2
+
3
+ import path from "path";
4
+ import fs from "fs";
5
+ import os from "os";
6
+ import url from "url";
7
+
8
+ import { glob } from "glob";
9
+ import chalk from "chalk";
10
+ import yosay from "yosay";
11
+ import libnpmconfig from "libnpmconfig";
12
+ import yarnOrNpm from "yarn-or-npm";
13
+ const { hasYarn } = yarnOrNpm;
14
+ import AdmZip from "adm-zip";
15
+ import { request } from "@octokit/request";
16
+ import { Octokit } from "@octokit/rest";
17
+ import { throttling } from "@octokit/plugin-throttling";
16
18
  const MyOctokit = Octokit.plugin(throttling);
17
- const AdmZip = require("adm-zip");
19
+ import spawn from "cross-spawn";
20
+
21
+ const __dirname = url.fileURLToPath(new URL(".", import.meta.url));
22
+
23
+ // apply proxy settings to GLOBAL_AGENT to support the proxy configuration
24
+ // provided via the standard Node.js environment varibales (used for fetch API)
25
+ let HTTP_PROXY, HTTPS_PROXY, NO_PROXY;
26
+ if (global?.GLOBAL_AGENT) {
27
+ HTTP_PROXY = global.GLOBAL_AGENT.HTTP_PROXY = process.env.HTTP_PROXY || process.env.http_proxy;
28
+ HTTPS_PROXY = global.GLOBAL_AGENT.HTTPS_PROXY = process.env.HTTPS_PROXY || process.env.https_proxy;
29
+ NO_PROXY = global.GLOBAL_AGENT.NO_PROXY = process.env.NO_PROXY || process.env.no_proxy;
30
+ }
18
31
 
19
32
  // helper to retrieve config entries from npm
20
33
  // --> npm config set easy-ui5_addGhOrg XYZ
@@ -22,13 +35,36 @@ const NPM_CONFIG_PREFIX = "easy-ui5_";
22
35
  let npmConfig;
23
36
  const getNPMConfig = (configName) => {
24
37
  if (!npmConfig) {
25
- npmConfig = require("libnpmconfig").read();
38
+ npmConfig = libnpmconfig.read();
26
39
  }
27
40
  return npmConfig && npmConfig[`${NPM_CONFIG_PREFIX}${configName}`];
28
41
  };
29
42
 
30
43
  // the command line options of the generator
31
44
  const generatorOptions = {
45
+ pluginsHome: {
46
+ type: String,
47
+ description: "Home directory of the plugin generators",
48
+ default: path.join(os.homedir(), ".npm", "_generator-easy-ui5", "plugin-generators"),
49
+ hide: true, // shouldn't be needed
50
+ npmConfig: true,
51
+ },
52
+ plugins: {
53
+ type: Boolean,
54
+ alias: "p",
55
+ description: "List detailed information about installed plugin generators",
56
+ },
57
+ pluginsWithDevDeps: {
58
+ type: Boolean,
59
+ alias: "dev",
60
+ description: "Installs the plugin generators with dev dependencies (compat mode)",
61
+ },
62
+ ghBaseUrl: {
63
+ type: String,
64
+ description: "Base URL for the Octokit API (defaults to https://api.github.com if undefined)",
65
+ hide: true, // shouldn't be needed
66
+ npmConfig: true,
67
+ },
32
68
  ghAuthToken: {
33
69
  type: String,
34
70
  description: "GitHub authToken to optionally access private generator repositories",
@@ -51,6 +87,12 @@ const generatorOptions = {
51
87
  default: "generator-ui5-",
52
88
  hide: true, // we don't want to recommend to use this option
53
89
  },
90
+ addGhBaseUrl: {
91
+ type: String,
92
+ description: "Base URL for the Octokit API for the additional generators (defaults to https://api.github.com if undefined)",
93
+ hide: true, // shouldn't be needed
94
+ npmConfig: true,
95
+ },
54
96
  addGhOrg: {
55
97
  type: String,
56
98
  description: "GitHub organization to lookup for additional available generators",
@@ -64,13 +106,6 @@ const generatorOptions = {
64
106
  hide: true, // we don't want to recommend to use this option
65
107
  npmConfig: true,
66
108
  },
67
- pluginsHome: {
68
- type: String,
69
- description: "Home directory of the plugin generators",
70
- default: path.join(require("os").homedir(), ".npm", "_generator-easy-ui5", "plugin-generators"),
71
- hide: true, // shouldn't be needed
72
- npmConfig: true,
73
- },
74
109
  embed: {
75
110
  type: Boolean,
76
111
  description: "Embeds the selected plugin generator",
@@ -97,14 +132,9 @@ const generatorOptions = {
97
132
  type: Boolean,
98
133
  description: "Enable detailed logging",
99
134
  },
100
- plugins: {
101
- type: Boolean,
102
- alias: "p",
103
- description: "Get detailed version information",
104
- },
105
135
  next: {
106
136
  type: Boolean,
107
- description: "Preview the next mode to consume templates from bestofui5.org",
137
+ description: "Preview the next mode to consume subgenerators from bestofui5.org",
108
138
  },
109
139
  };
110
140
 
@@ -112,16 +142,16 @@ const generatorArgs = {
112
142
  generator: {
113
143
  type: String,
114
144
  required: false,
115
- description: 'Name of the generator to invoke (without the "generator-ui5-" prefix)',
145
+ description: `Name of the generator to invoke (without the ${chalk.yellow("generator-ui5-")} prefix)`,
116
146
  },
117
147
  subcommand: {
118
148
  type: String,
119
149
  required: false,
120
- description: 'Name of the subcommand to invoke (without the "generator:" prefix)',
150
+ description: `Name of the subcommand to invoke (without the ${chalk.yellow("generator:")} prefix)`,
121
151
  },
122
152
  };
123
153
 
124
- module.exports = class extends Generator {
154
+ export default class extends Generator {
125
155
  constructor(args, opts) {
126
156
  super(args, opts, {
127
157
  // disable the Yeoman 5 package-manager logic (auto install)!
@@ -168,7 +198,7 @@ module.exports = class extends Generator {
168
198
  }
169
199
  }
170
200
 
171
- async _npmInstall(dir) {
201
+ async _npmInstall(dir, withDevDeps) {
172
202
  return new Promise(
173
203
  function (resolve, reject) {
174
204
  spawn(hasYarn() ? "yarn" : "npm", ["install", "--no-progress", "--ignore-engines"], {
@@ -177,6 +207,7 @@ module.exports = class extends Generator {
177
207
  env: {
178
208
  ...process.env,
179
209
  NO_UPDATE_NOTIFIER: true,
210
+ NODE_ENV: withDevDeps ? undefined : "production", // do not install devDependencies!
180
211
  },
181
212
  })
182
213
  .on("exit", function (code) {
@@ -189,7 +220,8 @@ module.exports = class extends Generator {
189
220
  );
190
221
  }
191
222
 
192
- _unzip(zip, targetPath, zipInternalPath /* used for plugin generators from GitHub (e.g. TS tutorial) */) {
223
+ _unzip(pathOrBuffer, targetPath, zipInternalPath /* used for plugin generators from GitHub (e.g. TS tutorial) */) {
224
+ const zip = new AdmZip(pathOrBuffer);
193
225
  const zipEntries = zip.getEntries();
194
226
  zipEntries.forEach((entry) => {
195
227
  const match = !entry.isDirectory && entry.entryName.match(/[^\/]+(\/.+)/);
@@ -205,9 +237,13 @@ module.exports = class extends Generator {
205
237
  });
206
238
  }
207
239
 
240
+ determineAppname() {
241
+ return "Easy UI5";
242
+ }
243
+
208
244
  async prompting() {
209
245
  const home = path.join(__dirname, "..", "..");
210
- const pkgJson = require(path.join(home, "package.json"));
246
+ const pkgJson = JSON.parse(fs.readFileSync(path.join(home, "package.json"), "utf8"));
211
247
 
212
248
  // Have Yeoman greet the user.
213
249
  if (!this.options.embedded) {
@@ -218,13 +254,25 @@ module.exports = class extends Generator {
218
254
  // %user_dir%/.npm/_generator-easy-ui5/plugin-generators
219
255
  let pluginsHome = this.options.pluginsHome;
220
256
  if (this.options.verbose) {
221
- console.error(`Plugin directory: ${chalk.green(pluginsHome)}`);
222
- console.error(chalk.red(e.message));
257
+ console.info(" Context:");
258
+ console.info(` - sourceRoot = ${chalk.green(this.sourceRoot())}`);
259
+ console.info(` - destinationRoot = ${chalk.green(this.destinationRoot())}`);
260
+ console.info(" Options:");
261
+ Object.keys(generatorOptions).forEach((option) => {
262
+ console.info(` - ${option} = ${chalk.green(this.options[option])}`);
263
+ });
264
+ console.info(" Proxy:");
265
+ console.info(` - HTTP_PROXY = ${chalk.green(HTTP_PROXY)}`);
266
+ console.info(` - HTTPS_PROXY = ${chalk.green(HTTPS_PROXY)}`);
267
+ console.info(` - NO_PROXY = ${chalk.green(NO_PROXY)}`);
223
268
  }
224
269
  fs.mkdirSync(pluginsHome, { recursive: true });
225
270
 
226
271
  // log the plugins and configuration
227
272
  if (this.options.plugins) {
273
+ const { createRequire } = await import("node:module");
274
+ const require = createRequire(import.meta.url);
275
+
228
276
  const yeoman = require("yeoman-environment/package.json");
229
277
 
230
278
  const components = {
@@ -255,9 +303,11 @@ module.exports = class extends Generator {
255
303
  if (this.options.offline) {
256
304
  this.log(`Running in ${chalk.yellow("offline")} mode!`);
257
305
  } else {
258
- octokit = new MyOctokit({
306
+ // define the options for the Octokit API
307
+ const octokitOptions = {
259
308
  userAgent: `${this.rootGeneratorName()}:${this.rootGeneratorVersion()}`,
260
309
  auth: this.options.ghAuthToken,
310
+ baseUrl: this.options.ghBaseUrl,
261
311
  throttle: {
262
312
  onRateLimit: (retryAfter, options) => {
263
313
  this.log(`${chalk.yellow("Hit the GitHub API limit!")} Request quota exhausted for this request.`);
@@ -269,12 +319,14 @@ module.exports = class extends Generator {
269
319
  return true;
270
320
  }
271
321
  },
272
- onAbuseLimit: () => {
322
+ onSecondaryRateLimit: () => {
273
323
  // does not retry, only logs a warning
274
324
  this.log(`${chalk.red("Hit the GitHub API limit again!")} Please supply an auth token with the \`--ghAuthToken\` option. For more details, run \`yo easy-ui5 --help\` `);
275
325
  },
276
326
  },
277
- });
327
+ };
328
+ // create the octokit instance
329
+ octokit = new MyOctokit(octokitOptions);
278
330
  }
279
331
 
280
332
  // helper for filtering repos with corresponding subGenerator prefix
@@ -299,6 +351,7 @@ module.exports = class extends Generator {
299
351
  const response = await octokit.repos.listForOrg({
300
352
  org: ghOrg,
301
353
  sort: "name",
354
+ // eslint-disable-next-line camelcase
302
355
  per_page: threshold,
303
356
  });
304
357
  return filterReposWithSubGeneratorPrefix(response?.data, subGeneratorPrefix);
@@ -309,6 +362,7 @@ module.exports = class extends Generator {
309
362
  const response = await octokit.repos.listForUser({
310
363
  username: ghUser,
311
364
  sort: "name",
365
+ // eslint-disable-next-line camelcase
312
366
  per_page: threshold,
313
367
  });
314
368
  return filterReposWithSubGeneratorPrefix(response?.data, subGeneratorPrefix);
@@ -356,19 +410,18 @@ module.exports = class extends Generator {
356
410
  const generatorPath = path.join(pluginsHome, generatorName);
357
411
  return {
358
412
  file,
413
+ generatorName,
359
414
  generatorPath,
360
415
  };
361
416
  })
362
417
  .filter(({ generatorPath }) => !fs.existsSync(generatorPath));
363
- // install the missing embedded generator(s)
418
+ // install (unzip) the missing embedded generator(s)
364
419
  if (generatorsToBeInstalled.length > 0) {
365
- this._showBusy(`Installing embedded generators of ${chalk.red("easy-ui5")}...`);
366
- await Promise.all(
367
- generatorsToBeInstalled.map(({ file, generatorPath }) => {
368
- this._unzip(new AdmZip(file), generatorPath);
369
- return this._npmInstall(generatorPath);
370
- })
371
- );
420
+ this._showBusy(" Installing embedded subgenerators...");
421
+ generatorsToBeInstalled.map(({ file, generatorName, generatorPath }) => {
422
+ this._showBusy(` Installing embedded subgenerator ${chalk.yellow(generatorName)}...`);
423
+ this._unzip(file, generatorPath);
424
+ });
372
425
  this._clearBusy(true);
373
426
  }
374
427
  // offline mode means local generators only versus only mode
@@ -504,10 +557,10 @@ module.exports = class extends Generator {
504
557
  branch: generator.branch,
505
558
  });
506
559
  commitSHA = reqBranch.data.commit.sha;
507
- } catch (e) {
560
+ } catch (ex) {
508
561
  console.error(chalk.red(`Failed to retrieve the branch "${generator.branch}" for repository "${generator.name}" for "${generator.org}" organization! Run with --verbose for details!`));
509
562
  if (this.options.verbose) {
510
- console.error(chalk.red(e.message));
563
+ console.error(chalk.red(ex.message));
511
564
  }
512
565
  return;
513
566
  }
@@ -524,7 +577,7 @@ module.exports = class extends Generator {
524
577
  this.log(`Generator ${chalk.yellow(generator.name)} in "${generatorPath}" is outdated!`);
525
578
  }
526
579
  // remove if the SHA marker doesn't exist => outdated!
527
- this._showBusy(` Removing old ${chalk.yellow(generator.name)} templates...`);
580
+ this._showBusy(` Deleting subgenerator ${chalk.yellow(generator.name)}...`);
528
581
  await rm(generatorPath, { recursive: true });
529
582
  }
530
583
  }
@@ -535,30 +588,26 @@ module.exports = class extends Generator {
535
588
  if (this.options.verbose) {
536
589
  this.log(`Extracting ZIP to "${generatorPath}"...`);
537
590
  }
538
- this._showBusy(` Downloading ${chalk.yellow(generator.name)} templates...`);
591
+ this._showBusy(` Downloading subgenerator ${chalk.yellow(generator.name)}...`);
539
592
  const reqZIPArchive = await octokit.repos.downloadZipballArchive({
540
593
  owner: generator.org,
541
594
  repo: generator.name,
542
595
  ref: commitSHA,
543
596
  });
544
597
 
545
- this._showBusy(` Extracting ${chalk.yellow(generator.name)} templates...`);
598
+ this._showBusy(` Extracting subgenerator ${chalk.yellow(generator.name)}...`);
546
599
  const buffer = Buffer.from(new Uint8Array(reqZIPArchive.data));
547
- const zip = new AdmZip(buffer);
548
- this._unzip(zip, generatorPath, generator.dir);
600
+ this._unzip(buffer, generatorPath, generator.dir);
549
601
 
550
602
  // write the sha marker
551
603
  fs.writeFileSync(shaMarker, commitSHA);
552
-
553
- // run yarn/npm install
554
- if (this.options.verbose) {
555
- this.log("Installing the plugin dependencies...");
556
- }
557
- this._showBusy(` Preparing ${chalk.yellow(generator.name)}...`);
558
- await this._npmInstall(generatorPath);
559
604
  }
560
605
 
561
- this._clearBusy(true);
606
+ // only when embedding we clear the busy state as otherwise
607
+ // the npm install will immediately again show the busy state
608
+ if (this.options.embed) {
609
+ this._clearBusy(true);
610
+ }
562
611
  }
563
612
 
564
613
  // do not execute the plugin generator during the setup/embed mode
@@ -566,6 +615,14 @@ module.exports = class extends Generator {
566
615
  // filter the local options and the help command
567
616
  const opts = Object.keys(this._options).filter((optionName) => !(generatorOptions.hasOwnProperty(optionName) || optionName === "help"));
568
617
 
618
+ // run yarn/npm install (always for self-healing!)
619
+ if (this.options.verbose) {
620
+ this.log("Installing the subgenerator dependencies...");
621
+ }
622
+ this._showBusy(` Preparing ${chalk.yellow(generator.name)}...`);
623
+ await this._npmInstall(generatorPath, this.options.pluginsWithDevDeps);
624
+ this._clearBusy(true);
625
+
569
626
  // create the env for the plugin generator
570
627
  let env = this.env; // in case of Yeoman UI the env is injected!
571
628
  if (!env) {
@@ -706,4 +763,4 @@ module.exports = class extends Generator {
706
763
  }
707
764
  }
708
765
  }
709
- };
766
+ }
package/package.json CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "name": "generator-easy-ui5",
3
- "version": "3.5.2",
3
+ "version": "3.6.1",
4
4
  "description": "Generator for UI5-based project",
5
5
  "main": "generators/app/index.js",
6
+ "type": "module",
6
7
  "files": [
7
- "generators"
8
+ "generators",
9
+ "plugins"
8
10
  ],
9
11
  "engines": {
10
12
  "node": ">=14.0.0"
@@ -46,33 +48,33 @@
46
48
  },
47
49
  "homepage": "https://github.com/SAP/generator-easy-ui5#readme",
48
50
  "dependencies": {
49
- "@octokit/plugin-throttling": "^4.2.0",
50
- "@octokit/rest": "^19.0.4",
51
- "adm-zip": "^0.5.9",
52
- "chalk": "^4.1.2",
53
- "colors": "1.4.0",
54
- "glob": "^7.2.0",
51
+ "@octokit/plugin-throttling": "^5.2.3",
52
+ "@octokit/rest": "^19.0.11",
53
+ "adm-zip": "^0.5.10",
54
+ "chalk": "^5.2.0",
55
+ "colors": "^1.4.0",
56
+ "glob": "^10.2.7",
55
57
  "libnpmconfig": "^1.2.1",
56
- "rimraf": "^3.0.2",
58
+ "rimraf": "^5.0.1",
57
59
  "yarn-or-npm": "^3.0.1",
58
- "yeoman-environment": "^3.10.0",
59
- "yeoman-generator": "^5.7.0",
60
+ "yeoman-environment": "^3.19.3",
61
+ "yeoman-generator": "^5.9.0",
60
62
  "yosay": "^2.0.2"
61
63
  },
62
64
  "devDependencies": {
63
- "@commitlint/cli": "17.0.3",
64
- "@commitlint/config-conventional": "17.0.3",
65
- "conventional-changelog-cli": "^2.2.2",
66
- "cz-conventional-changelog": "3.3.0",
67
- "eslint": "^8.18.0",
68
- "husky": "^8.0.1",
69
- "lint-staged": "^13.0.3",
70
- "mocha": "^10.0.0",
65
+ "@commitlint/cli": "^17.6.5",
66
+ "@commitlint/config-conventional": "^17.6.5",
67
+ "conventional-changelog-cli": "^3.0.0",
68
+ "cz-conventional-changelog": "^3.3.0",
69
+ "eslint": "^8.42.0",
70
+ "husky": "^8.0.3",
71
+ "lint-staged": "^13.2.2",
72
+ "mocha": "^10.2.0",
71
73
  "npm-run-all": "^4.1.5",
72
- "prettier": "2.7.1",
74
+ "prettier": "^2.8.8",
73
75
  "pretty-quick": "^3.1.3",
74
76
  "yeoman-assert": "^3.1.1",
75
- "yeoman-test": "^6.3.0"
77
+ "yeoman-test": "^7.4.0"
76
78
  },
77
79
  "config": {
78
80
  "commitizen": {
@@ -85,6 +87,7 @@
85
87
  ]
86
88
  },
87
89
  "overrides": {
90
+ "http-cache-semantics": "^4.1.1",
88
91
  "minimist": "^1.2.6"
89
92
  }
90
93
  }