@decaf-ts/cli 0.4.4 → 0.4.6

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 (63) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.cjs +1 -1
  3. package/dist/cli.cjs.map +1 -1
  4. package/dist/cli.js +1 -1
  5. package/dist/cli.js.map +1 -1
  6. package/lib/CliWrapper.cjs +254 -91
  7. package/lib/CliWrapper.d.ts +32 -4
  8. package/lib/CliWrapper.js.map +1 -1
  9. package/lib/banners.cjs +394 -0
  10. package/lib/banners.d.ts +3 -0
  11. package/lib/banners.js.map +1 -0
  12. package/lib/demo/cli-module.cjs +9 -39
  13. package/lib/demo/cli-module.d.ts +0 -33
  14. package/lib/demo/cli-module.js.map +1 -1
  15. package/lib/environment.cjs +17 -0
  16. package/lib/environment.d.ts +17 -0
  17. package/lib/environment.js.map +1 -0
  18. package/lib/esm/CliWrapper.d.ts +32 -4
  19. package/lib/esm/CliWrapper.js +255 -92
  20. package/lib/esm/CliWrapper.js.map +1 -1
  21. package/lib/esm/banners.d.ts +3 -0
  22. package/lib/esm/banners.js +391 -0
  23. package/lib/esm/banners.js.map +1 -0
  24. package/lib/esm/demo/cli-module.d.ts +0 -33
  25. package/lib/esm/demo/cli-module.js +9 -39
  26. package/lib/esm/demo/cli-module.js.map +1 -1
  27. package/lib/esm/environment.d.ts +17 -0
  28. package/lib/esm/environment.js +11 -0
  29. package/lib/esm/environment.js.map +1 -0
  30. package/lib/esm/index.d.ts +1 -0
  31. package/lib/esm/index.js +1 -0
  32. package/lib/esm/index.js.map +1 -1
  33. package/lib/esm/logging.d.ts +3 -0
  34. package/lib/esm/logging.js +16 -0
  35. package/lib/esm/logging.js.map +1 -0
  36. package/lib/esm/slogans.d.ts +40 -0
  37. package/lib/esm/slogans.js +142 -0
  38. package/lib/esm/slogans.js.map +1 -0
  39. package/lib/esm/utils-module/cli-module.d.ts +2 -0
  40. package/lib/esm/utils-module/cli-module.js +77 -0
  41. package/lib/esm/utils-module/cli-module.js.map +1 -0
  42. package/lib/esm/utils.js +1 -1
  43. package/lib/esm/utils.js.map +1 -1
  44. package/lib/esm/version.d.ts +1 -1
  45. package/lib/esm/version.js +1 -1
  46. package/lib/index.cjs +1 -0
  47. package/lib/index.d.ts +1 -0
  48. package/lib/index.js.map +1 -1
  49. package/lib/logging.cjs +19 -0
  50. package/lib/logging.d.ts +3 -0
  51. package/lib/logging.js.map +1 -0
  52. package/lib/slogans.cjs +150 -0
  53. package/lib/slogans.d.ts +40 -0
  54. package/lib/slogans.js.map +1 -0
  55. package/lib/utils-module/cli-module.cjs +83 -0
  56. package/lib/utils-module/cli-module.d.ts +2 -0
  57. package/lib/utils-module/cli-module.js.map +1 -0
  58. package/lib/utils.cjs +1 -1
  59. package/lib/utils.js.map +1 -1
  60. package/lib/version.cjs +1 -1
  61. package/lib/version.d.ts +1 -1
  62. package/package.json +3 -2
  63. package/workdocs/assets/slogans.json +194 -0
@@ -0,0 +1,142 @@
1
+ import path from "path";
2
+ import fs from "fs";
3
+ import { getPackage } from "@decaf-ts/utils";
4
+ /**
5
+ * @description Reads and parses slogans from workdocs/assets/slogans.json.
6
+ * @summary Attempts to read a slogans.json file from the workdocs/assets directory at the given base path and returns its parsed contents as an array.
7
+ *
8
+ * @param {string} basePath - The base directory path where workdocs/assets/slogans.json should exist.
9
+ * @return {any[] | undefined} The parsed array from slogans.json, or undefined if the file doesn't exist.
10
+ *
11
+ * @function readSlogans
12
+ *
13
+ * @memberOf module:utils
14
+ */
15
+ export function readSlogans(log, basePath) {
16
+ log = log.for(readSlogans);
17
+ const slogansPath = path.join(basePath, "workdocs", "assets", "slogans.json");
18
+ try {
19
+ if (!fs.existsSync(slogansPath)) {
20
+ return undefined;
21
+ }
22
+ const content = fs.readFileSync(slogansPath);
23
+ return JSON.parse(content.toString());
24
+ }
25
+ catch (error) {
26
+ log.error(`Failed to read slogans from ${slogansPath}`, error);
27
+ return undefined;
28
+ }
29
+ }
30
+ /**
31
+ * @description Collects slogans from a base path and all @decaf scoped packages.
32
+ * @summary Recursively collects slogans.json files from the given base path and all subdirectories under node_modules/@decaf/*. Results are stored in an object keyed by the package name (from package.json).
33
+ *
34
+ * @param {string} basePath - The base directory path to start collecting from.
35
+ * @return {Record<string, any[]>} An object mapping package names to their slogans arrays.
36
+ *
37
+ * @function collectSlogans
38
+ *
39
+ * @memberOf module:utils
40
+ */
41
+ export function collectSlogans(log, basePath) {
42
+ log = log.for(collectSlogans);
43
+ const result = {};
44
+ // Read slogans for the base path
45
+ const baseSlogans = readSlogans(log, basePath);
46
+ if (baseSlogans) {
47
+ try {
48
+ const pkgName = getPackage(basePath, "name");
49
+ result[pkgName] = baseSlogans;
50
+ log.verbose(`Collected ${baseSlogans.length} slogans from ${pkgName}`);
51
+ }
52
+ catch (error) {
53
+ log.verbose(`Failed to get package name for base path: ${error}`);
54
+ }
55
+ }
56
+ // Check for @decaf/* packages in node_modules
57
+ const decafModulesPath = path.join(basePath, "node_modules", "@decaf-ts");
58
+ if (fs.existsSync(decafModulesPath)) {
59
+ try {
60
+ const decafPackages = fs.readdirSync(decafModulesPath, {
61
+ withFileTypes: true,
62
+ });
63
+ for (const pkg of decafPackages) {
64
+ if (!pkg.isDirectory())
65
+ continue;
66
+ const pkgPath = path.join(decafModulesPath, pkg.name);
67
+ const pkgSlogans = readSlogans(log, pkgPath);
68
+ if (pkgSlogans) {
69
+ try {
70
+ const pkgName = getPackage(pkgPath, "name");
71
+ result[pkgName] = pkgSlogans;
72
+ log.verbose(`Collected ${pkgSlogans.length} slogans from ${pkgName}`);
73
+ }
74
+ catch (error) {
75
+ log.verbose(`Failed to get package name for ${pkgPath}: ${error}`);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ catch (error) {
81
+ log.verbose(`Error reading @decaf-ts modules: ${error}`);
82
+ }
83
+ }
84
+ return result;
85
+ }
86
+ /**
87
+ * @description Flattens collected slogans with weighted selection for a priority package.
88
+ * @summary Given a collection of slogans and a priority package name, returns a flat array where slogans from the priority package have a 30-40% chance of appearing at any given position.
89
+ *
90
+ * @param {Record<string, any[]>} slogansMap - Object mapping package names to slogan arrays.
91
+ * @param {string} priorityPackage - The package name whose slogans should be prioritized.
92
+ * @return {any[]} A flat array of all slogans with weighted distribution.
93
+ *
94
+ * @function flattenSlogansWithPriority
95
+ *
96
+ * @memberOf module:utils
97
+ */
98
+ export function flattenSlogansWithPriority(log, slogansMap, priorityPackage) {
99
+ log = log.for(flattenSlogansWithPriority);
100
+ const result = [];
101
+ const prioritySlogans = slogansMap[priorityPackage] || [];
102
+ const otherSlogans = [];
103
+ // Collect all non-priority slogans
104
+ for (const [pkgName, slogans] of Object.entries(slogansMap)) {
105
+ if (pkgName === priorityPackage)
106
+ continue;
107
+ otherSlogans.push(...slogans);
108
+ }
109
+ if (prioritySlogans.length === 0 && otherSlogans.length === 0) {
110
+ log.error("No slogans found to flatten");
111
+ return result;
112
+ }
113
+ if (prioritySlogans.length === 0) {
114
+ log.verbose(`package "${priorityPackage}" has no slogans, returning all other slogans`);
115
+ return otherSlogans;
116
+ }
117
+ if (otherSlogans.length === 0) {
118
+ log.debug("Only priority slogans available, returning them");
119
+ return prioritySlogans;
120
+ }
121
+ // Interleave with 30-40% chance for priority slogans
122
+ let priorityIndex = 0;
123
+ let otherIndex = 0;
124
+ const priorityWeight = 0.35; // 35% average chance
125
+ while (priorityIndex < prioritySlogans.length ||
126
+ otherIndex < otherSlogans.length) {
127
+ const usePriority = Math.random() < priorityWeight;
128
+ if (usePriority && priorityIndex < prioritySlogans.length) {
129
+ result.push(prioritySlogans[priorityIndex++]);
130
+ }
131
+ else if (otherIndex < otherSlogans.length) {
132
+ result.push(otherSlogans[otherIndex++]);
133
+ }
134
+ else if (priorityIndex < prioritySlogans.length) {
135
+ // Only priority slogans left
136
+ result.push(prioritySlogans[priorityIndex++]);
137
+ }
138
+ }
139
+ log.debug(`Flattened ${result.length} slogans with priority for "${priorityPackage}"`);
140
+ return result;
141
+ }
142
+ //# sourceMappingURL=slogans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slogans.js","sourceRoot":"","sources":["../../src/slogans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export default function utils(): Command;
@@ -0,0 +1,77 @@
1
+ import { Command } from "commander";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import { getCmdLogger } from "./../logging.js";
5
+ import { Metadata } from "@decaf-ts/decoration";
6
+ import { CliWrapper } from "./../CliWrapper.js";
7
+ import { toENVFormat } from "@decaf-ts/logging";
8
+ const libraries = new Command()
9
+ .name("libraries")
10
+ .description("outputs the installed decaf-ts libraries and their versions")
11
+ .option("--format [String]", "additional output formats (json, raw)")
12
+ .action(async (options) => {
13
+ const pkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), "package.json"), "utf-8"));
14
+ const version = pkg.version;
15
+ const log = getCmdLogger(libraries);
16
+ log.debug(`running with options: ${JSON.stringify(options)} for ${pkg.name} version ${version}`);
17
+ const { format } = options;
18
+ const libs = Metadata.libraries();
19
+ switch (format) {
20
+ case "json":
21
+ console.log(JSON.stringify(libs, null, 2));
22
+ break;
23
+ case "raw":
24
+ Object.entries(libs).forEach(([key, value]) => console.log(`${key}: ${value}`));
25
+ break;
26
+ default:
27
+ Object.entries(libs).forEach(([key, value]) => log.info(`${key}: ${value}`));
28
+ }
29
+ });
30
+ const environmentExport = new Command()
31
+ .name("environment-export")
32
+ .description("outputs currently enforced environment")
33
+ .option("--format [String]", "additional output formats (json, raw)")
34
+ .action(async (options) => {
35
+ const pkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), "package.json"), "utf-8"));
36
+ const version = pkg.version;
37
+ const log = getCmdLogger(environmentExport);
38
+ log.debug(`running with options: ${JSON.stringify(options)} for ${pkg.name} version ${version}`);
39
+ const { format } = options;
40
+ const env = CliWrapper.getEnv();
41
+ const flatten = (accum, obj, prefix = "") => {
42
+ Object.entries(obj).forEach(([key, value]) => {
43
+ const envKey = toENVFormat(key);
44
+ const fullKey = prefix ? `${prefix}__${envKey}` : envKey;
45
+ if (value && typeof value === "object" && !Array.isArray(value)) {
46
+ flatten(accum, value, fullKey);
47
+ }
48
+ else {
49
+ accum.push(`${fullKey}=${value}`);
50
+ }
51
+ });
52
+ };
53
+ switch (format) {
54
+ case "json":
55
+ console.log(JSON.stringify(env, null, 2));
56
+ break;
57
+ case "raw": {
58
+ const str = [];
59
+ flatten(str, env);
60
+ console.log(str.join("\n"));
61
+ break;
62
+ }
63
+ default: {
64
+ const str = [];
65
+ flatten(str, env);
66
+ str.forEach((s) => log.info(s));
67
+ }
68
+ }
69
+ });
70
+ export default function utils() {
71
+ const utilsCmd = new Command()
72
+ .command("utils")
73
+ .description("utilitarian cli commands for the decaf-ts framework");
74
+ utilsCmd.addCommand(libraries);
75
+ return utilsCmd;
76
+ }
77
+ //# sourceMappingURL=cli-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../../src/utils-module/cli-module.ts"],"names":[],"mappings":"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"}
package/lib/esm/utils.js CHANGED
@@ -54,7 +54,7 @@ export class CLIUtils {
54
54
  static initialize(command, basePath) {
55
55
  const name = CLIUtils.packageName(basePath);
56
56
  command
57
- .name(name)
57
+ .name("decaf")
58
58
  .description(`Runs ${name} related commands`)
59
59
  .version(CLIUtils.packageVersion(basePath));
60
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,QAAQ;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAI,aAAyB;QACvD,mEAAmE;QACnE,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,CAAU,EAAE,EAAE,CAAC,CAAE,CAAoB,CAAC,OAAO,IAAI,CAAC,CAAM,CAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,OAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO;aACJ,IAAI,CAAC,IAAI,CAAC;aACV,WAAW,CAAC,QAAQ,IAAI,mBAAmB,CAAC;aAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CACf,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAW,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,MAAM,IAAI,GAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,QAAQ;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAI,aAAyB;QACvD,mEAAmE;QACnE,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,CAAU,EAAE,EAAE,CAAC,CAAE,CAAoB,CAAC,OAAO,IAAI,CAAC,CAAM,CAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,OAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO;aACJ,IAAI,CAAC,OAAO,CAAC;aACb,WAAW,CAAC,QAAQ,IAAI,mBAAmB,CAAC;aAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CACf,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAW,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,MAAM,IAAI,GAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -4,7 +4,7 @@
4
4
  * @const VERSION
5
5
  * @memberOf module:CLI
6
6
  */
7
- export declare const VERSION = "0.4.3";
7
+ export declare const VERSION = "0.4.6";
8
8
  /**
9
9
  * @description Stores the current package version
10
10
  * @summary A constant that holds the version string of the package, which is replaced during build
@@ -5,7 +5,7 @@ import { Metadata } from "@decaf-ts/decoration";
5
5
  * @const VERSION
6
6
  * @memberOf module:CLI
7
7
  */
8
- export const VERSION = "0.4.3";
8
+ export const VERSION = "0.4.6";
9
9
  /**
10
10
  * @description Stores the current package version
11
11
  * @summary A constant that holds the version string of the package, which is replaced during build
package/lib/index.cjs CHANGED
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./CliWrapper.cjs"), exports);
18
+ __exportStar(require("./environment.cjs"), exports);
18
19
  /**
19
20
  * @description Decaf-ts' CLI module
20
21
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
package/lib/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./CliWrapper";
2
+ export * from "./environment";
2
3
  /**
3
4
  * @description Decaf-ts' CLI module
4
5
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAA6B;AAE7B;;;;;;;;;;;;;GAaG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAA6B;AAC7B,oDAA8B;AAC9B;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCmdLogger = getCmdLogger;
4
+ const logging_1 = require("@decaf-ts/logging");
5
+ function getCmdLogger(cmd) {
6
+ const inheritance = [cmd];
7
+ let parent = cmd.parent;
8
+ while (parent) {
9
+ inheritance.push(parent);
10
+ parent = parent.parent;
11
+ }
12
+ if (!parent)
13
+ throw new Error("Outshot the root parent. should not be possible");
14
+ const log = inheritance.reverse().reduce((accum, el) => {
15
+ return accum.for(el.name);
16
+ }, logging_1.Logging.get());
17
+ return log;
18
+ }
19
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { Logger } from "@decaf-ts/logging";
3
+ export declare function getCmdLogger(cmd: Command): Logger;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":";;AAGA,oCAaC;AAfD,+CAAoD;AAEpD,SAAgB,YAAY,CAAC,GAAY;IACvC,MAAM,WAAW,GAAU,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,OAAO,MAAM,EAAE,CAAC;QACd,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,MAAM;QACT,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE,EAAE,EAAE;QAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,iBAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.readSlogans = readSlogans;
7
+ exports.collectSlogans = collectSlogans;
8
+ exports.flattenSlogansWithPriority = flattenSlogansWithPriority;
9
+ const path_1 = __importDefault(require("path"));
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const utils_1 = require("@decaf-ts/utils");
12
+ /**
13
+ * @description Reads and parses slogans from workdocs/assets/slogans.json.
14
+ * @summary Attempts to read a slogans.json file from the workdocs/assets directory at the given base path and returns its parsed contents as an array.
15
+ *
16
+ * @param {string} basePath - The base directory path where workdocs/assets/slogans.json should exist.
17
+ * @return {any[] | undefined} The parsed array from slogans.json, or undefined if the file doesn't exist.
18
+ *
19
+ * @function readSlogans
20
+ *
21
+ * @memberOf module:utils
22
+ */
23
+ function readSlogans(log, basePath) {
24
+ log = log.for(readSlogans);
25
+ const slogansPath = path_1.default.join(basePath, "workdocs", "assets", "slogans.json");
26
+ try {
27
+ if (!fs_1.default.existsSync(slogansPath)) {
28
+ return undefined;
29
+ }
30
+ const content = fs_1.default.readFileSync(slogansPath);
31
+ return JSON.parse(content.toString());
32
+ }
33
+ catch (error) {
34
+ log.error(`Failed to read slogans from ${slogansPath}`, error);
35
+ return undefined;
36
+ }
37
+ }
38
+ /**
39
+ * @description Collects slogans from a base path and all @decaf scoped packages.
40
+ * @summary Recursively collects slogans.json files from the given base path and all subdirectories under node_modules/@decaf/*. Results are stored in an object keyed by the package name (from package.json).
41
+ *
42
+ * @param {string} basePath - The base directory path to start collecting from.
43
+ * @return {Record<string, any[]>} An object mapping package names to their slogans arrays.
44
+ *
45
+ * @function collectSlogans
46
+ *
47
+ * @memberOf module:utils
48
+ */
49
+ function collectSlogans(log, basePath) {
50
+ log = log.for(collectSlogans);
51
+ const result = {};
52
+ // Read slogans for the base path
53
+ const baseSlogans = readSlogans(log, basePath);
54
+ if (baseSlogans) {
55
+ try {
56
+ const pkgName = (0, utils_1.getPackage)(basePath, "name");
57
+ result[pkgName] = baseSlogans;
58
+ log.verbose(`Collected ${baseSlogans.length} slogans from ${pkgName}`);
59
+ }
60
+ catch (error) {
61
+ log.verbose(`Failed to get package name for base path: ${error}`);
62
+ }
63
+ }
64
+ // Check for @decaf/* packages in node_modules
65
+ const decafModulesPath = path_1.default.join(basePath, "node_modules", "@decaf-ts");
66
+ if (fs_1.default.existsSync(decafModulesPath)) {
67
+ try {
68
+ const decafPackages = fs_1.default.readdirSync(decafModulesPath, {
69
+ withFileTypes: true,
70
+ });
71
+ for (const pkg of decafPackages) {
72
+ if (!pkg.isDirectory())
73
+ continue;
74
+ const pkgPath = path_1.default.join(decafModulesPath, pkg.name);
75
+ const pkgSlogans = readSlogans(log, pkgPath);
76
+ if (pkgSlogans) {
77
+ try {
78
+ const pkgName = (0, utils_1.getPackage)(pkgPath, "name");
79
+ result[pkgName] = pkgSlogans;
80
+ log.verbose(`Collected ${pkgSlogans.length} slogans from ${pkgName}`);
81
+ }
82
+ catch (error) {
83
+ log.verbose(`Failed to get package name for ${pkgPath}: ${error}`);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ catch (error) {
89
+ log.verbose(`Error reading @decaf-ts modules: ${error}`);
90
+ }
91
+ }
92
+ return result;
93
+ }
94
+ /**
95
+ * @description Flattens collected slogans with weighted selection for a priority package.
96
+ * @summary Given a collection of slogans and a priority package name, returns a flat array where slogans from the priority package have a 30-40% chance of appearing at any given position.
97
+ *
98
+ * @param {Record<string, any[]>} slogansMap - Object mapping package names to slogan arrays.
99
+ * @param {string} priorityPackage - The package name whose slogans should be prioritized.
100
+ * @return {any[]} A flat array of all slogans with weighted distribution.
101
+ *
102
+ * @function flattenSlogansWithPriority
103
+ *
104
+ * @memberOf module:utils
105
+ */
106
+ function flattenSlogansWithPriority(log, slogansMap, priorityPackage) {
107
+ log = log.for(flattenSlogansWithPriority);
108
+ const result = [];
109
+ const prioritySlogans = slogansMap[priorityPackage] || [];
110
+ const otherSlogans = [];
111
+ // Collect all non-priority slogans
112
+ for (const [pkgName, slogans] of Object.entries(slogansMap)) {
113
+ if (pkgName === priorityPackage)
114
+ continue;
115
+ otherSlogans.push(...slogans);
116
+ }
117
+ if (prioritySlogans.length === 0 && otherSlogans.length === 0) {
118
+ log.error("No slogans found to flatten");
119
+ return result;
120
+ }
121
+ if (prioritySlogans.length === 0) {
122
+ log.verbose(`package "${priorityPackage}" has no slogans, returning all other slogans`);
123
+ return otherSlogans;
124
+ }
125
+ if (otherSlogans.length === 0) {
126
+ log.debug("Only priority slogans available, returning them");
127
+ return prioritySlogans;
128
+ }
129
+ // Interleave with 30-40% chance for priority slogans
130
+ let priorityIndex = 0;
131
+ let otherIndex = 0;
132
+ const priorityWeight = 0.35; // 35% average chance
133
+ while (priorityIndex < prioritySlogans.length ||
134
+ otherIndex < otherSlogans.length) {
135
+ const usePriority = Math.random() < priorityWeight;
136
+ if (usePriority && priorityIndex < prioritySlogans.length) {
137
+ result.push(prioritySlogans[priorityIndex++]);
138
+ }
139
+ else if (otherIndex < otherSlogans.length) {
140
+ result.push(otherSlogans[otherIndex++]);
141
+ }
142
+ else if (priorityIndex < prioritySlogans.length) {
143
+ // Only priority slogans left
144
+ result.push(prioritySlogans[priorityIndex++]);
145
+ }
146
+ }
147
+ log.debug(`Flattened ${result.length} slogans with priority for "${priorityPackage}"`);
148
+ return result;
149
+ }
150
+ //# sourceMappingURL=slogans.js.map
@@ -0,0 +1,40 @@
1
+ import { Logger } from "@decaf-ts/logging";
2
+ /**
3
+ * @description Reads and parses slogans from workdocs/assets/slogans.json.
4
+ * @summary Attempts to read a slogans.json file from the workdocs/assets directory at the given base path and returns its parsed contents as an array.
5
+ *
6
+ * @param {string} basePath - The base directory path where workdocs/assets/slogans.json should exist.
7
+ * @return {any[] | undefined} The parsed array from slogans.json, or undefined if the file doesn't exist.
8
+ *
9
+ * @function readSlogans
10
+ *
11
+ * @memberOf module:utils
12
+ */
13
+ export declare function readSlogans(log: Logger, basePath: string): {
14
+ Slogan: string;
15
+ }[] | undefined;
16
+ /**
17
+ * @description Collects slogans from a base path and all @decaf scoped packages.
18
+ * @summary Recursively collects slogans.json files from the given base path and all subdirectories under node_modules/@decaf/*. Results are stored in an object keyed by the package name (from package.json).
19
+ *
20
+ * @param {string} basePath - The base directory path to start collecting from.
21
+ * @return {Record<string, any[]>} An object mapping package names to their slogans arrays.
22
+ *
23
+ * @function collectSlogans
24
+ *
25
+ * @memberOf module:utils
26
+ */
27
+ export declare function collectSlogans(log: Logger, basePath: string): Record<string, any[]>;
28
+ /**
29
+ * @description Flattens collected slogans with weighted selection for a priority package.
30
+ * @summary Given a collection of slogans and a priority package name, returns a flat array where slogans from the priority package have a 30-40% chance of appearing at any given position.
31
+ *
32
+ * @param {Record<string, any[]>} slogansMap - Object mapping package names to slogan arrays.
33
+ * @param {string} priorityPackage - The package name whose slogans should be prioritized.
34
+ * @return {any[]} A flat array of all slogans with weighted distribution.
35
+ *
36
+ * @function flattenSlogansWithPriority
37
+ *
38
+ * @memberOf module:utils
39
+ */
40
+ export declare function flattenSlogansWithPriority(log: Logger, slogansMap: Record<string, any[]>, priorityPackage: string): any[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slogans.js","sourceRoot":"","sources":["../src/slogans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = utils;
7
+ const commander_1 = require("commander");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const logging_1 = require("./../logging.cjs");
11
+ const decoration_1 = require("@decaf-ts/decoration");
12
+ const CliWrapper_1 = require("./../CliWrapper.cjs");
13
+ const logging_2 = require("@decaf-ts/logging");
14
+ const libraries = new commander_1.Command()
15
+ .name("libraries")
16
+ .description("outputs the installed decaf-ts libraries and their versions")
17
+ .option("--format [String]", "additional output formats (json, raw)")
18
+ .action(async (options) => {
19
+ const pkg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(process.cwd(), "package.json"), "utf-8"));
20
+ const version = pkg.version;
21
+ const log = (0, logging_1.getCmdLogger)(libraries);
22
+ log.debug(`running with options: ${JSON.stringify(options)} for ${pkg.name} version ${version}`);
23
+ const { format } = options;
24
+ const libs = decoration_1.Metadata.libraries();
25
+ switch (format) {
26
+ case "json":
27
+ console.log(JSON.stringify(libs, null, 2));
28
+ break;
29
+ case "raw":
30
+ Object.entries(libs).forEach(([key, value]) => console.log(`${key}: ${value}`));
31
+ break;
32
+ default:
33
+ Object.entries(libs).forEach(([key, value]) => log.info(`${key}: ${value}`));
34
+ }
35
+ });
36
+ const environmentExport = new commander_1.Command()
37
+ .name("environment-export")
38
+ .description("outputs currently enforced environment")
39
+ .option("--format [String]", "additional output formats (json, raw)")
40
+ .action(async (options) => {
41
+ const pkg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(process.cwd(), "package.json"), "utf-8"));
42
+ const version = pkg.version;
43
+ const log = (0, logging_1.getCmdLogger)(environmentExport);
44
+ log.debug(`running with options: ${JSON.stringify(options)} for ${pkg.name} version ${version}`);
45
+ const { format } = options;
46
+ const env = CliWrapper_1.CliWrapper.getEnv();
47
+ const flatten = (accum, obj, prefix = "") => {
48
+ Object.entries(obj).forEach(([key, value]) => {
49
+ const envKey = (0, logging_2.toENVFormat)(key);
50
+ const fullKey = prefix ? `${prefix}__${envKey}` : envKey;
51
+ if (value && typeof value === "object" && !Array.isArray(value)) {
52
+ flatten(accum, value, fullKey);
53
+ }
54
+ else {
55
+ accum.push(`${fullKey}=${value}`);
56
+ }
57
+ });
58
+ };
59
+ switch (format) {
60
+ case "json":
61
+ console.log(JSON.stringify(env, null, 2));
62
+ break;
63
+ case "raw": {
64
+ const str = [];
65
+ flatten(str, env);
66
+ console.log(str.join("\n"));
67
+ break;
68
+ }
69
+ default: {
70
+ const str = [];
71
+ flatten(str, env);
72
+ str.forEach((s) => log.info(s));
73
+ }
74
+ }
75
+ });
76
+ function utils() {
77
+ const utilsCmd = new commander_1.Command()
78
+ .command("utils")
79
+ .description("utilitarian cli commands for the decaf-ts framework");
80
+ utilsCmd.addCommand(libraries);
81
+ return utilsCmd;
82
+ }
83
+ //# sourceMappingURL=cli-module.js.map
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export default function utils(): Command;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../src/utils-module/cli-module.ts"],"names":[],"mappings":"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"}
package/lib/utils.cjs CHANGED
@@ -93,7 +93,7 @@ class CLIUtils {
93
93
  static initialize(command, basePath) {
94
94
  const name = CLIUtils.packageName(basePath);
95
95
  command
96
- .name(name)
96
+ .name("decaf")
97
97
  .description(`Runs ${name} related commands`)
98
98
  .version(CLIUtils.packageVersion(basePath));
99
99
  }
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AAIpB;;;;;;;;;;;;;GAaG;AACH,MAAa,QAAQ;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,eAAe,oBAAQ,IAAI,wCAAE,CAAC;QAChD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAI,aAAyB;QACvD,mEAAmE;QACnE,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,CAAU,EAAE,EAAE,CAAC,CAAE,CAAoB,CAAC,OAAO,IAAI,CAAC,CAAM,CAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,OAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO;aACJ,IAAI,CAAC,IAAI,CAAC;aACV,WAAW,CAAC,QAAQ,IAAI,mBAAmB,CAAC;aAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CACf,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAW,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,MAAM,IAAI,GAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF;AA1FD,4BA0FC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AAIpB;;;;;;;;;;;;;GAaG;AACH,MAAa,QAAQ;IACnB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAY;QACpC,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,eAAe,oBAAQ,IAAI,wCAAE,CAAC;QAChD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAI,aAAyB;QACvD,mEAAmE;QACnE,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,CAAU,EAAE,EAAE,CAAC,CAAE,CAAoB,CAAC,OAAO,IAAI,CAAC,CAAM,CAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,OAAgB,EAAE,QAAgB;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO;aACJ,IAAI,CAAC,OAAO,CAAC;aACb,WAAW,CAAC,QAAQ,IAAI,mBAAmB,CAAC;aAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,UAAU,CAAC,QAAgB;QACxC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CACf,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,QAAgB;QACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAW,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,MAAM,IAAI,GAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;CACF;AA1FD,4BA0FC"}