@herodevs/cli 0.2.10 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/core-types/package.json +3 -2
  2. package/init/package.json +10 -3
  3. package/init/src/lib/configure-project.js +1 -2
  4. package/init/src/lib/configure-project.js.map +1 -1
  5. package/init/src/lib/get-package-choices.js +1 -2
  6. package/init/src/lib/get-package-choices.js.map +1 -1
  7. package/init/src/lib/get-product-choices.d.ts +1 -2
  8. package/init/src/lib/get-product-choices.js +3 -4
  9. package/init/src/lib/get-product-choices.js.map +1 -1
  10. package/init/src/lib/get-release-trains.d.ts +1 -2
  11. package/init/src/lib/get-release-trains.js +2 -8
  12. package/init/src/lib/get-release-trains.js.map +1 -1
  13. package/init/src/lib/init.js +1 -1
  14. package/init/src/lib/init.js.map +1 -1
  15. package/init/src/lib/npm/configure-npm-project.js +1 -2
  16. package/init/src/lib/npm/configure-npm-project.js.map +1 -1
  17. package/init/src/lib/verify-project-type.js +1 -2
  18. package/init/src/lib/verify-project-type.js.map +1 -1
  19. package/package.json +4 -2
  20. package/report-committers/package.json +7 -3
  21. package/report-committers/src/lib/committers.d.ts +4 -2
  22. package/report-committers/src/lib/committers.js +47 -44
  23. package/report-committers/src/lib/committers.js.map +1 -1
  24. package/report-committers/src/lib/get-committer-counts.d.ts +2 -1
  25. package/report-committers/src/lib/get-committer-counts.js +27 -12
  26. package/report-committers/src/lib/get-committer-counts.js.map +1 -1
  27. package/report-committers/src/lib/parse-date-flags.d.ts +3 -3
  28. package/report-committers/src/lib/parse-date-flags.js +4 -5
  29. package/report-committers/src/lib/parse-date-flags.js.map +1 -1
  30. package/report-committers/src/lib/parse-git-log-entries.js +1 -2
  31. package/report-committers/src/lib/parse-git-log-entries.js.map +1 -1
  32. package/report-committers/src/lib/parse-monthly.d.ts +4 -6
  33. package/report-committers/src/lib/parse-monthly.js +37 -22
  34. package/report-committers/src/lib/parse-monthly.js.map +1 -1
  35. package/report-committers/src/lib/types.d.ts +6 -5
  36. package/report-diagnostics/package.json +7 -3
  37. package/report-diagnostics/src/lib/get-diagnostic-types.js +1 -2
  38. package/report-diagnostics/src/lib/get-diagnostic-types.js.map +1 -1
  39. package/report-diagnostics/src/lib/get-file-contents.js +1 -2
  40. package/report-diagnostics/src/lib/get-file-contents.js.map +1 -1
  41. package/report-diagnostics/src/lib/get-package-json-section.js +1 -2
  42. package/report-diagnostics/src/lib/get-package-json-section.js.map +1 -1
  43. package/report-ingestion/README.md +11 -0
  44. package/report-ingestion/package.json +13 -0
  45. package/report-ingestion/src/index.d.ts +1 -0
  46. package/report-ingestion/src/index.js +5 -0
  47. package/report-ingestion/src/index.js.map +1 -0
  48. package/report-ingestion/src/lib/ingestion.d.ts +3 -0
  49. package/report-ingestion/src/lib/ingestion.js +40 -0
  50. package/report-ingestion/src/lib/ingestion.js.map +1 -0
  51. package/report-ingestion/src/lib/prompts.d.ts +5 -0
  52. package/report-ingestion/src/lib/prompts.js +46 -0
  53. package/report-ingestion/src/lib/prompts.js.map +1 -0
  54. package/report-ingestion/src/lib/queries.d.ts +2 -0
  55. package/report-ingestion/src/lib/queries.js +28 -0
  56. package/report-ingestion/src/lib/queries.js.map +1 -0
  57. package/report-ingestion/src/lib/send-manifest.d.ts +10 -0
  58. package/report-ingestion/src/lib/send-manifest.js +129 -0
  59. package/report-ingestion/src/lib/send-manifest.js.map +1 -0
  60. package/report-ingestion/src/lib/types.d.ts +6 -0
  61. package/report-ingestion/src/lib/types.js +3 -0
  62. package/report-ingestion/src/lib/types.js.map +1 -0
  63. package/src/lib/cli.js +1 -2
  64. package/src/lib/cli.js.map +1 -1
  65. package/src/lib/create-group-command.js +1 -2
  66. package/src/lib/create-group-command.js.map +1 -1
  67. package/src/lib/ensure-version.js +2 -3
  68. package/src/lib/ensure-version.js.map +1 -1
  69. package/src/lib/get-commands.js +3 -3
  70. package/src/lib/get-commands.js.map +1 -1
  71. package/src/lib/log-colors.js +1 -2
  72. package/src/lib/log-colors.js.map +1 -1
  73. package/tracker-init/package.json +7 -3
  74. package/tracker-run/package.json +10 -3
  75. package/tracker-run/src/lib/get-data-filepath.js +1 -2
  76. package/tracker-run/src/lib/get-data-filepath.js.map +1 -1
  77. package/tracker-run/src/lib/get-data.js +1 -2
  78. package/tracker-run/src/lib/get-data.js.map +1 -1
  79. package/tracker-run/src/lib/get-git-commit.js +1 -2
  80. package/tracker-run/src/lib/get-git-commit.js.map +1 -1
  81. package/tracker-run/src/lib/process-category.js +1 -2
  82. package/tracker-run/src/lib/process-category.js.map +1 -1
  83. package/tracker-run/src/lib/process-config.js +1 -2
  84. package/tracker-run/src/lib/process-config.js.map +1 -1
  85. package/tracker-run/src/lib/save-results.js +1 -2
  86. package/tracker-run/src/lib/save-results.js.map +1 -1
  87. package/tracker-shared/package.json +3 -2
  88. package/tracker-shared/src/lib/read-config.js +1 -2
  89. package/tracker-shared/src/lib/read-config.js.map +1 -1
  90. package/utility/package.json +4 -2
  91. package/utility/src/lib/get-project-types.js +1 -2
  92. package/utility/src/lib/get-project-types.js.map +1 -1
  93. package/utility/src/lib/get-root-dir.js +1 -2
  94. package/utility/src/lib/get-root-dir.js.map +1 -1
  95. package/utility/src/lib/run-command.js +1 -2
  96. package/utility/src/lib/run-command.js.map +1 -1
  97. package/utility/src/lib/sort-by-name.js +1 -2
  98. package/utility/src/lib/sort-by-name.js.map +1 -1
  99. package/report-committers/src/lib/collapse-and-sort-committer-info.d.ts +0 -2
  100. package/report-committers/src/lib/collapse-and-sort-committer-info.js +0 -31
  101. package/report-committers/src/lib/collapse-and-sort-committer-info.js.map +0 -1
  102. package/report-committers/src/lib/print-committers.d.ts +0 -0
  103. package/report-committers/src/lib/print-committers.js +0 -2
  104. package/report-committers/src/lib/print-committers.js.map +0 -1
  105. package/report-committers/src/lib/print-monthly.d.ts +0 -2
  106. package/report-committers/src/lib/print-monthly.js +0 -79
  107. package/report-committers/src/lib/print-monthly.js.map +0 -1
@@ -1,34 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseMonthly = void 0;
3
+ exports.parseMonthly = parseMonthly;
4
+ exports.outputMonthlyCommitters = outputMonthlyCommitters;
5
+ exports.outputMonthlyCommittersJson = outputMonthlyCommittersJson;
4
6
  const date_fns_1 = require("date-fns");
5
7
  function parseMonthly(startDate, endDate, entries) {
6
8
  const monthly = [];
7
- const dates = [startDate, endDate];
8
- const ival = {
9
- start: (0, date_fns_1.min)(dates),
10
- end: (0, date_fns_1.max)(dates),
11
- };
12
- const range = (0, date_fns_1.eachMonthOfInterval)(ival);
13
- for (const idxr in range) {
14
- const idx = parseInt(idxr);
15
- if (idx + 1 >= range.length) {
16
- continue;
17
- }
9
+ const range = (0, date_fns_1.eachMonthOfInterval)({
10
+ start: startDate,
11
+ end: endDate,
12
+ });
13
+ for (let idx = 0; idx < range.length - 1; idx++) {
14
+ // `convertToUTC` is an awful hack to convert the date to UTC
15
+ // This is needed because the date-fns eachMonthOfInterval function
16
+ // is not timezone aware and will return the date in the local timezone
17
+ // Refs: https://github.com/date-fns/date-fns/issues/3097
18
18
  const [start, end] = [range[idx], range[idx + 1]];
19
19
  const month = {
20
- name: (0, date_fns_1.format)(start, 'LLLL yyyy'),
21
- start,
22
- end,
20
+ month: (0, date_fns_1.format)(start, 'LLLL yyyy'),
21
+ start: (0, date_fns_1.max)([start, startDate]),
22
+ end: (0, date_fns_1.min)([end, endDate]),
23
23
  committers: {},
24
24
  };
25
25
  for (const rec of entries) {
26
- if ((0, date_fns_1.isWithinInterval)(new Date(rec.date), { start, end })) {
27
- month.committers[rec.committer] = month.committers[rec.committer] || [];
28
- month.committers[rec.committer].push({
29
- hash: rec.commitHash,
30
- date: rec.date,
31
- });
26
+ if ((0, date_fns_1.isWithinInterval)(rec.date, { start, end })) {
27
+ month.committers[rec.committer] = (month.committers[rec.committer] || 0) + 1;
32
28
  }
33
29
  }
34
30
  if (Object.keys(month.committers).length > 0) {
@@ -37,5 +33,24 @@ function parseMonthly(startDate, endDate, entries) {
37
33
  }
38
34
  return monthly;
39
35
  }
40
- exports.parseMonthly = parseMonthly;
36
+ function convertToUTC(date) {
37
+ const timezoneOffset = date.getTimezoneOffset() * -1;
38
+ return new Date(date.getTime() + timezoneOffset * 60000);
39
+ }
40
+ function monthlyDataHumanReadable(data) {
41
+ const totalCommits = Object.values(data.committers).reduce((sum, count) => sum + count);
42
+ return {
43
+ month: data.month,
44
+ start: (0, date_fns_1.format)(data.start, 'yyyy-MM-dd'),
45
+ end: (0, date_fns_1.format)(data.end, 'yyyy-MM-dd'),
46
+ totalCommits,
47
+ };
48
+ }
49
+ function outputMonthlyCommitters(commits) {
50
+ const mapped = commits.map((c) => monthlyDataHumanReadable(c));
51
+ console.table(mapped);
52
+ }
53
+ function outputMonthlyCommittersJson(commits) {
54
+ console.log(JSON.stringify(commits, null, 2));
55
+ }
41
56
  //# sourceMappingURL=parse-monthly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-monthly.js","sourceRoot":"","sources":["../../../../../../libs/report/committers/src/lib/parse-monthly.ts"],"names":[],"mappings":";;;AAAA,uCAMkB;AAGlB,SAAgB,YAAY,CAC1B,SAAe,EACf,OAAa,EACb,OAAkE;IAElE,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,IAAA,cAAG,EAAC,KAAK,CAAC;QACjB,GAAG,EAAE,IAAA,cAAG,EAAC,KAAK,CAAC;KAChB,CAAC;IACF,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,IAAI,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,KAAK,GAAgB;YACzB,IAAI,EAAE,IAAA,iBAAM,EAAC,KAAK,EAAE,WAAW,CAAC;YAChC,KAAK;YACL,GAAG;YACH,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAA,2BAAgB,EAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBACzD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACxE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;oBACnC,IAAI,EAAE,GAAG,CAAC,UAAU;oBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAxCD,oCAwCC"}
1
+ {"version":3,"file":"parse-monthly.js","sourceRoot":"","sources":["../../../../../../libs/report/committers/src/lib/parse-monthly.ts"],"names":[],"mappings":";;AAGA,oCA+BC;AAiBD,0DAGC;AAED,kEAEC;AA1DD,uCAAmF;AAGnF,SAAgB,YAAY,CAAC,SAAe,EAAE,OAAa,EAAE,OAAiB;IAC5E,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC;QAChC,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,OAAO;KACb,CAAC,CAAC;IAEH,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QAChD,6DAA6D;QAC7D,mEAAmE;QACnE,uEAAuE;QACvE,yDAAyD;QACzD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,KAAK,GAAgB;YACzB,KAAK,EAAE,IAAA,iBAAM,EAAC,KAAK,EAAE,WAAW,CAAC;YACjC,KAAK,EAAE,IAAA,cAAG,EAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC9B,GAAG,EAAE,IAAA,cAAG,EAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACxB,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAA,2BAAgB,EAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC/C,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,IAAU;IAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAiB;IACjD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;IACxF,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAA,iBAAM,EAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;QACvC,GAAG,EAAE,IAAA,iBAAM,EAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;QACnC,YAAY;KACb,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,OAAsB;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,SAAgB,2BAA2B,CAAC,OAAsB;IAChE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -10,17 +10,18 @@ export type CommitterCommits = {
10
10
  export type CommitterCount = {
11
11
  name: string;
12
12
  count: number;
13
+ lastCommitDate: string;
13
14
  };
14
15
  export type MonthlyData = {
15
- name: string;
16
+ month: string;
16
17
  start: Date;
17
18
  end: Date;
18
- committers: Record<string, {
19
- hash: string;
20
- date: string;
21
- }[]>;
19
+ committers: Record<string, number>;
22
20
  };
23
21
  export type SortedCommitterInfo = {
24
22
  committers: CommitterCommits[];
25
23
  monthly: MonthlyData[];
26
24
  };
25
+ export interface CommitterLastCommitDate {
26
+ [committer: string]: string;
27
+ }
@@ -2,10 +2,14 @@
2
2
  "name": "@herodevs/report-diagnostics",
3
3
  "version": "0.0.1",
4
4
  "dependencies": {
5
- "tslib": "^2.3.0"
5
+ "@herodevs/utility": "^0.0.1",
6
+ "@inquirer/prompts": "^5.0.2",
7
+ "tslib": "^2.3.0",
8
+ "yargs": "^17.2.1"
6
9
  },
7
10
  "type": "commonjs",
8
11
  "main": "./src/index.js",
9
12
  "typings": "./src/index.d.ts",
10
- "private": true
11
- }
13
+ "private": true,
14
+ "types": "./src/index.d.ts"
15
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDiagnosticTypes = void 0;
3
+ exports.getDiagnosticTypes = getDiagnosticTypes;
4
4
  function getDiagnosticTypes() {
5
5
  const diagTypeList = [
6
6
  { name: 'Package JSON - dependencies', value: 'dependencies' },
@@ -12,5 +12,4 @@ function getDiagnosticTypes() {
12
12
  ];
13
13
  return diagTypeList;
14
14
  }
15
- exports.getDiagnosticTypes = getDiagnosticTypes;
16
15
  //# sourceMappingURL=get-diagnostic-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-diagnostic-types.js","sourceRoot":"","sources":["../../../../../../libs/report/diagnostics/src/lib/get-diagnostic-types.ts"],"names":[],"mappings":";;;AAAA,SAAgB,kBAAkB;IAChC,MAAM,YAAY,GAAG;QACnB,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,cAAc,EAAE;QAC9D,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,iBAAiB,EAAE;QACpE,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,WAAW,EAAE;QACxD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;QAChD,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;QAC3C,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,QAAQ,EAAE;KACjE,CAAC;IACF,OAAO,YAAY,CAAC;AACtB,CAAC;AAVD,gDAUC"}
1
+ {"version":3,"file":"get-diagnostic-types.js","sourceRoot":"","sources":["../../../../../../libs/report/diagnostics/src/lib/get-diagnostic-types.ts"],"names":[],"mappings":";;AAAA,gDAUC;AAVD,SAAgB,kBAAkB;IAChC,MAAM,YAAY,GAAG;QACnB,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,cAAc,EAAE;QAC9D,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,iBAAiB,EAAE;QACpE,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,WAAW,EAAE;QACxD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE;QAChD,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;QAC3C,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,QAAQ,EAAE;KACjE,CAAC;IACF,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFileContents = void 0;
3
+ exports.getFileContents = getFileContents;
4
4
  const fs_1 = require("fs");
5
5
  function getFileContents(filePath) {
6
6
  if (!(0, fs_1.existsSync)(filePath)) {
@@ -9,5 +9,4 @@ function getFileContents(filePath) {
9
9
  const diagData = (0, fs_1.readFileSync)(filePath, 'utf8');
10
10
  return diagData;
11
11
  }
12
- exports.getFileContents = getFileContents;
13
12
  //# sourceMappingURL=get-file-contents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-file-contents.js","sourceRoot":"","sources":["../../../../../../libs/report/diagnostics/src/lib/get-file-contents.ts"],"names":[],"mappings":";;;AAAA,2BAA8C;AAE9C,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,QAAQ,YAAY,CAAC;IACjC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAND,0CAMC"}
1
+ {"version":3,"file":"get-file-contents.js","sourceRoot":"","sources":["../../../../../../libs/report/diagnostics/src/lib/get-file-contents.ts"],"names":[],"mappings":";;AAEA,0CAMC;AARD,2BAA8C;AAE9C,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,QAAQ,YAAY,CAAC;IACjC,CAAC;IACD,MAAM,QAAQ,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPackageJsonSection = void 0;
3
+ exports.getPackageJsonSection = getPackageJsonSection;
4
4
  const get_file_contents_1 = require("./get-file-contents");
5
5
  function getPackageJsonSection(section) {
6
6
  const filePath = 'package.json';
@@ -12,5 +12,4 @@ function getPackageJsonSection(section) {
12
12
  const diagData = JSON.stringify(sectionData, null, 2);
13
13
  return diagData;
14
14
  }
15
- exports.getPackageJsonSection = getPackageJsonSection;
16
15
  //# sourceMappingURL=get-package-json-section.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-package-json-section.js","sourceRoot":"","sources":["../../../../../../libs/report/diagnostics/src/lib/get-package-json-section.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AAEtD,SAAgB,qBAAqB,CACnC,OAAyD;IAEzD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,mCAAe,EAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,GAAG,OAAO,4BAA4B,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAXD,sDAWC"}
1
+ {"version":3,"file":"get-package-json-section.js","sourceRoot":"","sources":["../../../../../../libs/report/diagnostics/src/lib/get-package-json-section.ts"],"names":[],"mappings":";;AAEA,sDAWC;AAbD,2DAAsD;AAEtD,SAAgB,qBAAqB,CACnC,OAAyD;IAEzD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,mCAAe,EAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,GAAG,OAAO,4BAA4B,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,11 @@
1
+ # ingestion
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build ingestion` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test ingestion` to execute the unit tests via [Jest](https://jestjs.io).
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "@herodevs/report-ingestion",
3
+ "version": "0.0.1",
4
+ "dependencies": {
5
+ "tslib": "^2.3.0",
6
+ "isomorphic-fetch": "^3.0.0"
7
+ },
8
+ "type": "commonjs",
9
+ "main": "./src/index.js",
10
+ "typings": "./src/index.d.ts",
11
+ "private": true,
12
+ "types": "./src/index.d.ts"
13
+ }
@@ -0,0 +1 @@
1
+ export * from './lib/ingestion';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/ingestion"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/report/ingestion/src/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC"}
@@ -0,0 +1,3 @@
1
+ import { type CommandModule } from 'yargs';
2
+ import { type Options } from './types';
3
+ export declare const reportIngestionCommand: CommandModule<object, Options>;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reportIngestionCommand = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const prompts_1 = require("./prompts");
6
+ const send_manifest_1 = require("./send-manifest");
7
+ exports.reportIngestionCommand = {
8
+ command: 'generate',
9
+ describe: 'send manifest files information',
10
+ aliases: ['gen', 'g'],
11
+ builder: {
12
+ consent: {
13
+ describe: 'Agree to understanding that sensitive data may be sent to the server',
14
+ required: false,
15
+ default: false,
16
+ boolean: true,
17
+ },
18
+ },
19
+ handler: run,
20
+ };
21
+ function run(args) {
22
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
23
+ const consent = yield (0, prompts_1.askConsent)(args);
24
+ if (!consent) {
25
+ return;
26
+ }
27
+ // Prompt the user to insert their name
28
+ const clientName = yield (0, prompts_1.promptClientName)();
29
+ // First we need to get a short lived token
30
+ const oid = yield (0, send_manifest_1.getClientToken)(clientName);
31
+ const manifest = yield (0, send_manifest_1.findManifestFile)();
32
+ if (!manifest) {
33
+ console.log('No manifest files found');
34
+ return;
35
+ }
36
+ yield (0, send_manifest_1.sendManifest)(oid, manifest, { clientName });
37
+ console.log('Manifest sent successfully!');
38
+ });
39
+ }
40
+ //# sourceMappingURL=ingestion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingestion.js","sourceRoot":"","sources":["../../../../../../libs/report/ingestion/src/lib/ingestion.ts"],"names":[],"mappings":";;;;AACA,uCAAyD;AACzD,mDAAiF;AAGpE,QAAA,sBAAsB,GAAmC;IACpE,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,iCAAiC;IAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;IACrB,OAAO,EAAE;QACP,OAAO,EAAE;YACP,QAAQ,EAAE,sEAAsE;YAChF,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,IAAI;SACd;KACF;IACD,OAAO,EAAE,GAAG;CACb,CAAC;AAEF,SAAe,GAAG,CAAC,IAAiC;;QAClD,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAU,EAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,uCAAuC;QACvC,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAgB,GAAE,CAAC;QAC5C,2CAA2C;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAA,8BAAc,EAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAgB,GAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAA,4BAAY,EAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;CAAA"}
@@ -0,0 +1,5 @@
1
+ import { ArgumentsCamelCase } from 'yargs';
2
+ import { type Options } from './types';
3
+ export declare function askConsent(args: ArgumentsCamelCase<Options>): Promise<boolean>;
4
+ export declare function promptClientName(): Promise<string>;
5
+ export declare function promptToProceedUploadFile(fileName: string): Promise<boolean>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.askConsent = askConsent;
4
+ exports.promptClientName = promptClientName;
5
+ exports.promptToProceedUploadFile = promptToProceedUploadFile;
6
+ const tslib_1 = require("tslib");
7
+ const prompts_1 = require("@inquirer/prompts");
8
+ function askConsent(args) {
9
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
+ const consentPrompt = 'Data may contain sensitive information, please review before sharing it.';
11
+ if (!args.consent) {
12
+ const answer = yield (0, prompts_1.confirm)({
13
+ message: `${consentPrompt} Continue?`,
14
+ });
15
+ if (!answer) {
16
+ return false;
17
+ }
18
+ }
19
+ else {
20
+ console.log(consentPrompt);
21
+ }
22
+ return true;
23
+ });
24
+ }
25
+ function promptClientName() {
26
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
27
+ const name = yield (0, prompts_1.input)({
28
+ message: "Please enter your company's name:",
29
+ validate: (value) => (value.trim() === '' ? 'Name cannot be empty!' : true),
30
+ });
31
+ return name;
32
+ });
33
+ }
34
+ function promptToProceedUploadFile(fileName) {
35
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
36
+ const consentPrompt = `Found ${fileName}, this file will be uploaded.`;
37
+ const answer = yield (0, prompts_1.confirm)({
38
+ message: `${consentPrompt} Continue?`,
39
+ });
40
+ if (!answer) {
41
+ return false;
42
+ }
43
+ return true;
44
+ });
45
+ }
46
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../../../libs/report/ingestion/src/lib/prompts.ts"],"names":[],"mappings":";;AAIA,gCAaC;AAED,4CAMC;AAED,8DASC;;AApCD,+CAAmD;AAInD,SAAsB,UAAU,CAAC,IAAiC;;QAChE,MAAM,aAAa,GAAG,0EAA0E,CAAC;QACjG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAO,EAAC;gBAC3B,OAAO,EAAE,GAAG,aAAa,YAAY;aACtC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AAED,SAAsB,gBAAgB;;QACpC,MAAM,IAAI,GAAG,MAAM,IAAA,eAAK,EAAC;YACvB,OAAO,EAAE,mCAAmC;YAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC;SAC5E,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AAED,SAAsB,yBAAyB,CAAC,QAAgB;;QAC9D,MAAM,aAAa,GAAG,SAAS,QAAQ,+BAA+B,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAO,EAAC;YAC3B,OAAO,EAAE,GAAG,aAAa,YAAY;SACtC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const TELEMETRY_INITIALIZE_MUTATION: import("graphql/language/ast").DocumentNode;
2
+ export declare const TELEMETRY_REPORT_MUTATION: import("graphql/language/ast").DocumentNode;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TELEMETRY_REPORT_MUTATION = exports.TELEMETRY_INITIALIZE_MUTATION = void 0;
4
+ const core_1 = require("@apollo/client/core");
5
+ exports.TELEMETRY_INITIALIZE_MUTATION = (0, core_1.gql) `
6
+ mutation Telemetry($clientName: String!) {
7
+ telemetry {
8
+ initialize(input: { context: { client: { id: $clientName } } }) {
9
+ success
10
+ oid
11
+ message
12
+ }
13
+ }
14
+ }
15
+ `;
16
+ exports.TELEMETRY_REPORT_MUTATION = (0, core_1.gql) `
17
+ mutation Report($key: String!, $report: JSON!, $metadata: JSON) {
18
+ telemetry {
19
+ report(input: { key: $key, report: $report, metadata: $metadata }) {
20
+ txId
21
+ success
22
+ message
23
+ diagnostics
24
+ }
25
+ }
26
+ }
27
+ `;
28
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../../../libs/report/ingestion/src/lib/queries.ts"],"names":[],"mappings":";;;AAAA,8CAA0C;AAE7B,QAAA,6BAA6B,GAAG,IAAA,UAAG,EAAA;;;;;;;;;;CAU/C,CAAC;AAEW,QAAA,yBAAyB,GAAG,IAAA,UAAG,EAAA;;;;;;;;;;;CAW3C,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type JSONValue } from './types';
2
+ import 'isomorphic-fetch';
3
+ export declare function initializeTelemetry(clientName: string): Promise<import("@apollo/client/core").FetchResult<any>>;
4
+ export declare function sendTelemetryReport(oid: string, key: string, report: JSONValue, metadata: JSONValue): Promise<import("@apollo/client/core").FetchResult<any>>;
5
+ export declare function getClientToken(clientName: string): Promise<string>;
6
+ export declare function sendManifest(oid: string, manifest: JSONValue, metadata: JSONValue): Promise<void>;
7
+ export declare function findManifestFile(): Promise<{
8
+ name: string;
9
+ data: string;
10
+ } | undefined>;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeTelemetry = initializeTelemetry;
4
+ exports.sendTelemetryReport = sendTelemetryReport;
5
+ exports.getClientToken = getClientToken;
6
+ exports.sendManifest = sendManifest;
7
+ exports.findManifestFile = findManifestFile;
8
+ const tslib_1 = require("tslib");
9
+ const core_1 = require("@apollo/client/core");
10
+ const node_fs_1 = require("node:fs");
11
+ const prompts_1 = require("./prompts");
12
+ const queries_1 = require("./queries");
13
+ require("isomorphic-fetch");
14
+ const NES_REPORT_URL = process.env['NES_REPORT_URL'] || 'https://api.nes.herodevs.com/graphql';
15
+ const client = new core_1.ApolloClient({
16
+ cache: new core_1.InMemoryCache(),
17
+ uri: NES_REPORT_URL,
18
+ });
19
+ const MANIFEST_TELEMETRY_KEY = 'ingest:project:report';
20
+ // This is the list of files that we are going to look for
21
+ const MANIFEST_FILES = [{ name: 'package.json' }];
22
+ const MAX_FILE_SIZE = 1024 * 1024; // 1MB
23
+ function getUserAgent() {
24
+ var _a;
25
+ // This env var is set by npm when launching the script
26
+ // https://docs.npmjs.com/cli/v9/using-npm/scripts#packagejson-vars
27
+ return `hdcli/${(_a = process.env['npm_package_version']) !== null && _a !== void 0 ? _a : 'unknown'}`;
28
+ }
29
+ function initializeTelemetry(clientName) {
30
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
31
+ return client.mutate({
32
+ mutation: queries_1.TELEMETRY_INITIALIZE_MUTATION,
33
+ variables: { clientName },
34
+ context: {
35
+ headers: {
36
+ 'User-Agent': getUserAgent(),
37
+ },
38
+ },
39
+ });
40
+ });
41
+ }
42
+ function sendTelemetryReport(oid, key, report, metadata) {
43
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
44
+ return client.mutate({
45
+ mutation: queries_1.TELEMETRY_REPORT_MUTATION,
46
+ variables: { key, report, metadata },
47
+ context: {
48
+ headers: {
49
+ 'x-nes-telrep': oid,
50
+ 'User-Agent': getUserAgent(),
51
+ },
52
+ },
53
+ });
54
+ });
55
+ }
56
+ function getClientToken(clientName) {
57
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
58
+ try {
59
+ const { data } = yield initializeTelemetry(clientName);
60
+ const { success, oid, message } = data.telemetry.initialize;
61
+ if (!success) {
62
+ throw new Error(message);
63
+ }
64
+ return oid;
65
+ }
66
+ catch (error) {
67
+ console.error('Error sending telemetry mutation:', error);
68
+ throw error;
69
+ }
70
+ });
71
+ }
72
+ function sendManifest(oid, manifest, metadata) {
73
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
74
+ try {
75
+ const { data } = yield sendTelemetryReport(oid, MANIFEST_TELEMETRY_KEY, manifest, metadata);
76
+ const { success, message } = data.telemetry.report;
77
+ if (!success) {
78
+ throw new Error(message);
79
+ }
80
+ }
81
+ catch (error) {
82
+ console.error('Error sending report mutation:', error);
83
+ throw error;
84
+ }
85
+ });
86
+ }
87
+ function readManifestFile(fileName) {
88
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
89
+ const exists = (0, node_fs_1.existsSync)(fileName);
90
+ if (!exists) {
91
+ console.log(`${fileName} not found`);
92
+ return;
93
+ }
94
+ const file = (0, node_fs_1.statSync)(fileName);
95
+ // Empty file
96
+ if (file.size === 0) {
97
+ console.warn(`[WARN] Ignoring file ${fileName}, because it is empty`);
98
+ return;
99
+ }
100
+ // Cap the file size to prevent abuse
101
+ if (file.size > MAX_FILE_SIZE) {
102
+ console.warn(`[WARN] Ignoring file ${fileName}, because it is too large`);
103
+ return;
104
+ }
105
+ // Ask the user if they want to proceed
106
+ const proceed = yield (0, prompts_1.promptToProceedUploadFile)(fileName);
107
+ if (!proceed) {
108
+ return;
109
+ }
110
+ return (0, node_fs_1.readFileSync)(fileName, 'utf-8');
111
+ });
112
+ }
113
+ function findManifestFile() {
114
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
115
+ for (const manifest of MANIFEST_FILES) {
116
+ const data = yield readManifestFile(manifest.name);
117
+ if (!data) {
118
+ continue;
119
+ }
120
+ // For now we are only going to send the first file
121
+ return {
122
+ name: manifest.name,
123
+ data,
124
+ };
125
+ }
126
+ return;
127
+ });
128
+ }
129
+ //# sourceMappingURL=send-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-manifest.js","sourceRoot":"","sources":["../../../../../../libs/report/ingestion/src/lib/send-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type JSONValue = string | number | boolean | null | {
2
+ [key: string]: JSONValue;
3
+ } | JSONValue[];
4
+ export type Options = {
5
+ consent: boolean;
6
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../libs/report/ingestion/src/lib/types.ts"],"names":[],"mappings":""}
package/src/lib/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cli = void 0;
3
+ exports.cli = cli;
4
4
  const yargs = require("yargs");
5
5
  const helpers_1 = require("yargs/helpers");
6
6
  const get_commands_1 = require("./get-commands");
@@ -19,5 +19,4 @@ function cli() {
19
19
  .showHelpOnFail(false)
20
20
  .parse((0, helpers_1.hideBin)(process.argv));
21
21
  }
22
- exports.cli = cli;
23
22
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../../../apps/cli/src/lib/cli.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,2CAAwC;AACxC,iDAA6C;AAC7C,qDAA2D;AAE3D,SAAgB,GAAG;IACjB,MAAM,QAAQ,GAAG,IAAA,0BAAW,GAAE,CAAC;IAE/B,8DAA8D;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;IAC7B,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IAEnC,KAAK;SACF,UAAU,CAAC,OAAO,CAAC;SACnB,KAAK,CAAC,+BAA+B,CAAC;SACtC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAA,wCAAuB,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;SACtE,OAAO,CAAC,QAAQ,CAAC;SACjB,cAAc,CAAC,KAAK,CAAC;SACrB,KAAK,CAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAfD,kBAeC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../../../apps/cli/src/lib/cli.ts"],"names":[],"mappings":";;AAKA,kBAeC;AApBD,+BAA+B;AAC/B,2CAAwC;AACxC,iDAA6C;AAC7C,qDAA2D;AAE3D,SAAgB,GAAG;IACjB,MAAM,QAAQ,GAAG,IAAA,0BAAW,GAAE,CAAC;IAE/B,8DAA8D;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;IAC7B,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IAEnC,KAAK;SACF,UAAU,CAAC,OAAO,CAAC;SACnB,KAAK,CAAC,+BAA+B,CAAC;SACtC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAA,wCAAuB,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;SACtE,OAAO,CAAC,QAAQ,CAAC;SACjB,cAAc,CAAC,KAAK,CAAC;SACrB,KAAK,CAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createGroupCommand = void 0;
3
+ exports.createGroupCommand = createGroupCommand;
4
4
  function createGroupCommand(group, description, subCommand, subCommandDescription, aliases,
5
5
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
6
  commands, errorMessage) {
@@ -25,5 +25,4 @@ commands, errorMessage) {
25
25
  };
26
26
  return cmd;
27
27
  }
28
- exports.createGroupCommand = createGroupCommand;
29
28
  //# sourceMappingURL=create-group-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-group-command.js","sourceRoot":"","sources":["../../../../../../../apps/cli/src/lib/create-group-command.ts"],"names":[],"mappings":";;;AAEA,SAAgB,kBAAkB,CAChC,KAAa,EACb,WAAmB,EACnB,UAAkB,EAClB,qBAA6B,EAC7B,OAA0B;AAC1B,8DAA8D;AAC9D,QAAmC,EACnC,YAAoB;IAEpB,MAAM,GAAG,GAAG;QACV,OAAO,EAAE,GAAG,KAAK,KAAK,UAAU,GAAG;QACnC,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,qBAAqB;aAChC;SACF;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,8DAA8D;QAC9D,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;KACe,CAAC;IACnB,OAAO,GAAG,CAAC;AACb,CAAC;AA9BD,gDA8BC"}
1
+ {"version":3,"file":"create-group-command.js","sourceRoot":"","sources":["../../../../../../../apps/cli/src/lib/create-group-command.ts"],"names":[],"mappings":";;AAEA,gDA8BC;AA9BD,SAAgB,kBAAkB,CAChC,KAAa,EACb,WAAmB,EACnB,UAAkB,EAClB,qBAA6B,EAC7B,OAA0B;AAC1B,8DAA8D;AAC9D,QAAmC,EACnC,YAAoB;IAEpB,MAAM,GAAG,GAAG;QACV,OAAO,EAAE,GAAG,KAAK,KAAK,UAAU,GAAG;QACnC,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,qBAAqB;aAChC;SACF;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,8DAA8D;QAC9D,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;KACe,CAAC;IACnB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureVersionIsUpToDate = exports.isVersionUpToDate = void 0;
3
+ exports.isVersionUpToDate = isVersionUpToDate;
4
+ exports.ensureVersionIsUpToDate = ensureVersionIsUpToDate;
4
5
  const tslib_1 = require("tslib");
5
6
  const https = require("https");
6
7
  const log_colors_1 = require("./log-colors");
@@ -51,7 +52,6 @@ function isVersionUpToDate(packageName, packageVersion) {
51
52
  return true;
52
53
  });
53
54
  }
54
- exports.isVersionUpToDate = isVersionUpToDate;
55
55
  function ensureVersionIsUpToDate(packageName, packageVersion) {
56
56
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
57
  const versionUpToDate = yield isVersionUpToDate(packageName, packageVersion);
@@ -68,5 +68,4 @@ function ensureVersionIsUpToDate(packageName, packageVersion) {
68
68
  }
69
69
  });
70
70
  }
71
- exports.ensureVersionIsUpToDate = ensureVersionIsUpToDate;
72
71
  //# sourceMappingURL=ensure-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-version.js","sourceRoot":"","sources":["../../../../../../../apps/cli/src/lib/ensure-version.ts"],"names":[],"mappings":";;;;AAAA,+BAA+B;AAC/B,6CAA4C;AAE5C,MAAM,GAAG,GAAG,IAAA,kBAAK,iCAAa,CAAC;AAC/B,MAAM,MAAM,GAAG,IAAA,kBAAK,oCAAgB,CAAC;AAErC,SAAe,gBAAgB,CAAC,OAAe;;QAC7C,MAAM,GAAG,GAAG,8BAA8B,OAAO,EAAE,CAAC;QACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC;YACF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACnD,MAAM,MAAM,GAAa,EAAE,CAAC;gBAE5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEnD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAE7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACtB,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU;wBACvC,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG;wBAC1D,CAAC,CAAC,IAAI,CAAC;oBACT,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAE7B,IAAI,aAAa,EAAE,CAAC;wBAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;oBAChD,CAAC;;wBACC,MAAM,CACJ,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,UAAU,IAAI,KAAK,WAAW,IAAI,EAAE,CAAC,CACpF,CAAC;gBACN,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1B,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED,SAAsB,iBAAiB,CACrC,WAAmB,EACnB,cAAsB;;QAEtB,IAAI,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAC3F,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,GAAG,WAAW,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AAhBD,8CAgBC;AAED,SAAsB,uBAAuB,CAC3C,WAAmB,EACnB,cAAsB;;QAEtB,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC7E,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,iFAAiF;YAEjF,OAAO,CAAC,GAAG,CACT;gBACE,+GAA+G;gBAC/G,GAAG,GAAG,CAAC,QAAQ,CAAC,2BAA2B;gBAC3C,kCAAkC,MAAM,CAAC,SAAS,CAAC,sCAAsC;gBACzF,KAAK,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC,IAAI;gBAC5C,+GAA+G;aAChH,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;YAEF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CAAA;AApBD,0DAoBC"}
1
+ {"version":3,"file":"ensure-version.js","sourceRoot":"","sources":["../../../../../../../apps/cli/src/lib/ensure-version.ts"],"names":[],"mappings":"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"}