context-mapper-mcp 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/generators/builtin/plantuml-adapter.d.ts +60 -0
  2. package/dist/generators/builtin/plantuml-adapter.d.ts.map +1 -0
  3. package/dist/generators/builtin/plantuml-adapter.js +119 -0
  4. package/dist/generators/builtin/plantuml-adapter.js.map +1 -0
  5. package/dist/generators/cli/config.d.ts +105 -0
  6. package/dist/generators/cli/config.d.ts.map +1 -0
  7. package/dist/generators/cli/config.js +168 -0
  8. package/dist/generators/cli/config.js.map +1 -0
  9. package/dist/generators/cli/context-map.d.ts +26 -0
  10. package/dist/generators/cli/context-map.d.ts.map +1 -0
  11. package/dist/generators/cli/context-map.js +124 -0
  12. package/dist/generators/cli/context-map.js.map +1 -0
  13. package/dist/generators/cli/executor.d.ts +95 -0
  14. package/dist/generators/cli/executor.d.ts.map +1 -0
  15. package/dist/generators/cli/executor.js +277 -0
  16. package/dist/generators/cli/executor.js.map +1 -0
  17. package/dist/generators/cli/generic.d.ts +54 -0
  18. package/dist/generators/cli/generic.d.ts.map +1 -0
  19. package/dist/generators/cli/generic.js +224 -0
  20. package/dist/generators/cli/generic.js.map +1 -0
  21. package/dist/generators/cli/manager.d.ts +83 -0
  22. package/dist/generators/cli/manager.d.ts.map +1 -0
  23. package/dist/generators/cli/manager.js +281 -0
  24. package/dist/generators/cli/manager.js.map +1 -0
  25. package/dist/generators/cli/mdsl.d.ts +26 -0
  26. package/dist/generators/cli/mdsl.d.ts.map +1 -0
  27. package/dist/generators/cli/mdsl.js +118 -0
  28. package/dist/generators/cli/mdsl.js.map +1 -0
  29. package/dist/generators/interfaces.d.ts +144 -0
  30. package/dist/generators/interfaces.d.ts.map +1 -0
  31. package/dist/generators/interfaces.js +59 -0
  32. package/dist/generators/interfaces.js.map +1 -0
  33. package/dist/generators/registry.d.ts +100 -0
  34. package/dist/generators/registry.d.ts.map +1 -0
  35. package/dist/generators/registry.js +169 -0
  36. package/dist/generators/registry.js.map +1 -0
  37. package/dist/index.js +180 -3
  38. package/dist/index.js.map +1 -1
  39. package/dist/tools/cli-tools.d.ts +103 -0
  40. package/dist/tools/cli-tools.d.ts.map +1 -0
  41. package/dist/tools/cli-tools.js +220 -0
  42. package/dist/tools/cli-tools.js.map +1 -0
  43. package/dist/tools/generation-tools.d.ts +73 -1
  44. package/dist/tools/generation-tools.d.ts.map +1 -1
  45. package/dist/tools/generation-tools.js +160 -1
  46. package/dist/tools/generation-tools.js.map +1 -1
  47. package/dist/utils/temp-files.d.ts +77 -0
  48. package/dist/utils/temp-files.d.ts.map +1 -0
  49. package/dist/utils/temp-files.js +164 -0
  50. package/dist/utils/temp-files.js.map +1 -0
  51. package/package.json +4 -1
  52. package/src/templates/FullReportTemplate.md.ftl +297 -0
  53. package/src/templates/GlossaryTemplate.md.ftl +132 -0
  54. package/src/templates/JHipster-Microservices.jdl.ftl +139 -0
  55. package/src/templates/JHipster-Monolith.jdl.ftl +159 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../src/generators/cli/generic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAU/B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,0BAA0B;IACrC,IAAI,GAAG,oBAAoB,CAAC;IAC5B,WAAW,GAAG,mDAAmD,CAAC;IAClE,WAAW,GAAG,IAAI,CAAC;IACnB,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAE7C,KAAK,CAAC,QAAQ,CACZ,KAAe,EACf,OAAiC;QAEjC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;YAC3B,OAAO,iBAAiB,CACtB,oBAAoB,EACpB,0BAA0B,EAC1B,uDAAuD,CACxD,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,qBAAqB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;QAED,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,iBAAiB,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,OAAO,gBAAgB,CAAC,MAAM,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QAED,wCAAwC;QACxC,OAAO,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;YACzC,IAAI,CAAC;gBACH,yBAAyB;gBACzB,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAErE,6BAA6B;gBAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;gBAEzD,wBAAwB;gBACxB,MAAM,SAAS,GAAa;oBAC1B,IAAI,EAAE,OAAO,CAAC,YAAY;iBAC3B,CAAC;gBAEF,4BAA4B;gBAC5B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;oBAC3B,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;gBAC/C,CAAC;gBAED,cAAc;gBACd,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACpC,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAC9B,CAAC;gBAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,OAAO,qBAAqB,CAAC,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnE,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,OAAO,iBAAiB,CACtB,kBAAkB,EAClB,MAAM,CAAC,KAAK,IAAI,sBAAsB,EACtC,oDAAoD,EACpD,MAAM,CAAC,MAAM,CACd,CAAC;gBACJ,CAAC;gBAED,uBAAuB;gBACvB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;gBAEtF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,OAAO,iBAAiB,CACtB,kBAAkB,EAClB,gCAAgC,EAChC,0EAA0E,CAC3E,CAAC;gBACJ,CAAC;gBAED,gCAAgC;gBAChC,MAAM,OAAO,GAAsB,MAAM,OAAO,CAAC,GAAG,CAClD,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBACpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAClD,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;oBACrD,OAAO;wBACL,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,QAAQ;wBACd,OAAO;wBACP,MAAM;wBACN,WAAW,EAAE,4BAA4B,QAAQ,CAAC,QAAQ,CAAC,EAAE;qBAC9D,CAAC;gBACJ,CAAC,CAAC,CACH,CAAC;gBAEF,mCAAmC;gBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;oBAC5B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpE,CAAC,CAAC,SAAS,CAAC;gBAEd,OAAO,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,iBAAiB,CACtB,gBAAgB,EAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAC3E,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAC9B,SAAiB,EACjB,YAAoB;QAEpB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,uFAAuF;QACvF,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAE5D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;YAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,oEAAoE;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;gBAExC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;oBACvB,IAAI,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxB,CAAC;yBAAM,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBACnD,yDAAyD;wBACzD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,YAAoB;QAC/C,wBAAwB;QACxB,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,QAAgB;QAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,KAAK;gBACR,OAAO,UAAU,CAAC;YACpB,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC;YAChB,KAAK,OAAO,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC;YAChB;gBACE,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,wBAAwB;IACnC,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,WAAW,GAAG,IAAI,CAAC;IACnB,aAAa,CAAW;IAChB,YAAY,CAAS;IACrB,gBAAgB,CAA6B;IAErD,YACE,IAAY,EACZ,WAAmB,EACnB,YAAoB,EACpB,YAAoB;QAEpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,0BAA0B,EAAE,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,KAAe,EACf,OAA0B;QAE1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,iBAAiB,CACtB,oBAAoB,EACpB,qBAAqB,IAAI,CAAC,YAAY,aAAa,EACnD,kFAAkF,CACnF,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,iBAAiB,CACtB,oBAAoB,EACpB,oCAAoC,YAAY,CAAC,IAAI,EAAE,EACvD,oDAAoD,CACrD,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC3C,GAAG,OAAO;YACV,YAAY,EAAE,YAAY,CAAC,IAAI;SAChC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC;IAC9C,OAAO,IAAI,0BAA0B,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO;QACL,IAAI,wBAAwB,CAC1B,UAAU,EACV,yDAAyD,EACzD,UAAU,EACV,UAAU,CACX;QACD,IAAI,wBAAwB,CAC1B,wBAAwB,EACxB,sDAAsD,EACtD,wBAAwB,EACxB,KAAK,CACN;QACD,IAAI,wBAAwB,CAC1B,mBAAmB,EACnB,kDAAkD,EAClD,mBAAmB,EACnB,KAAK,CACN;QACD,IAAI,wBAAwB,CAC1B,aAAa,EACb,6CAA6C,EAC7C,aAAa,EACb,UAAU,CACX;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * CLI Manager
3
+ * Handles CLI download, extraction, and version management
4
+ */
5
+ /**
6
+ * Result of CLI verification
7
+ */
8
+ export interface CLIVerifyResult {
9
+ installed: boolean;
10
+ version?: string;
11
+ path?: string;
12
+ error?: string;
13
+ }
14
+ /**
15
+ * Result of CLI download
16
+ */
17
+ export interface CLIDownloadResult {
18
+ success: boolean;
19
+ version?: string;
20
+ path?: string;
21
+ error?: string;
22
+ }
23
+ /**
24
+ * CLI Manager class
25
+ */
26
+ export declare class CLIManager {
27
+ private version;
28
+ constructor(version?: string);
29
+ /**
30
+ * Get CLI path, downloading if not present
31
+ * @returns Path to CLI and version info
32
+ */
33
+ ensureCLI(): Promise<{
34
+ path: string;
35
+ version: string;
36
+ }>;
37
+ /**
38
+ * Check if CLI is installed and working
39
+ */
40
+ verify(): Promise<CLIVerifyResult>;
41
+ /**
42
+ * Download CLI from Maven Central
43
+ */
44
+ downloadCLI(): Promise<CLIDownloadResult>;
45
+ /**
46
+ * Download a file from URL
47
+ */
48
+ private downloadFile;
49
+ /**
50
+ * Extract archive (TAR or ZIP)
51
+ */
52
+ private extractArchive;
53
+ /**
54
+ * Extract TAR archive (for Unix)
55
+ */
56
+ private extractTar;
57
+ /**
58
+ * Extract ZIP archive (for Windows)
59
+ * Using native unzip as Node.js doesn't have built-in ZIP support
60
+ */
61
+ private extractZip;
62
+ /**
63
+ * Flatten extracted directory if CLI was extracted to a subdirectory
64
+ */
65
+ private flattenExtractedDir;
66
+ /**
67
+ * Remove installed CLI
68
+ */
69
+ uninstall(): Promise<void>;
70
+ /**
71
+ * Get installed CLI versions
72
+ */
73
+ static getInstalledVersions(): Promise<string[]>;
74
+ }
75
+ /**
76
+ * Get the CLI manager instance
77
+ */
78
+ export declare function getCLIManager(): CLIManager;
79
+ /**
80
+ * Set the CLI version and recreate manager
81
+ */
82
+ export declare function setCLIVersion(version: string): CLIManager;
83
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/generators/cli/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAA4B;IAIjD;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAmB7D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAsBxC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAwD/C;;OAEG;YACW,YAAY;IAqC1B;;OAEG;YACW,cAAc;IAY5B;;OAEG;YACW,UAAU;IAQxB;;;OAGG;YACW,UAAU;IAsBxB;;OAEG;YACW,mBAAmB;IAkCjC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC;;OAEG;WACU,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAyBvD;AAKD;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAK1C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAGzD"}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * CLI Manager
3
+ * Handles CLI download, extraction, and version management
4
+ */
5
+ import { createWriteStream } from 'fs';
6
+ import { mkdir, rm, stat, chmod, rename, readdir } from 'fs/promises';
7
+ import { join, dirname } from 'path';
8
+ import { extract as tarExtract } from 'tar';
9
+ import { getCLIConfig, getCLIVersionDir, getCLIExecutablePath, getCLIDownloadUrl, isWindows, DEFAULT_CLI_VERSION, } from './config.js';
10
+ /**
11
+ * Check if a file or directory exists
12
+ */
13
+ async function exists(path) {
14
+ try {
15
+ await stat(path);
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ /**
23
+ * CLI Manager class
24
+ */
25
+ export class CLIManager {
26
+ version;
27
+ constructor(version = DEFAULT_CLI_VERSION) {
28
+ this.version = version;
29
+ }
30
+ /**
31
+ * Get CLI path, downloading if not present
32
+ * @returns Path to CLI and version info
33
+ */
34
+ async ensureCLI() {
35
+ const verification = await this.verify();
36
+ if (verification.installed && verification.path) {
37
+ return { path: verification.path, version: this.version };
38
+ }
39
+ // Download and install
40
+ const downloadResult = await this.downloadCLI();
41
+ if (!downloadResult.success) {
42
+ throw new Error(downloadResult.error || 'Failed to download CLI');
43
+ }
44
+ return {
45
+ path: getCLIExecutablePath(this.version),
46
+ version: this.version,
47
+ };
48
+ }
49
+ /**
50
+ * Check if CLI is installed and working
51
+ */
52
+ async verify() {
53
+ const cliPath = getCLIExecutablePath(this.version);
54
+ try {
55
+ const pathExists = await exists(cliPath);
56
+ if (!pathExists) {
57
+ return { installed: false, error: 'CLI not found' };
58
+ }
59
+ return {
60
+ installed: true,
61
+ version: this.version,
62
+ path: cliPath,
63
+ };
64
+ }
65
+ catch (error) {
66
+ return {
67
+ installed: false,
68
+ error: error instanceof Error ? error.message : 'Unknown error',
69
+ };
70
+ }
71
+ }
72
+ /**
73
+ * Download CLI from Maven Central
74
+ */
75
+ async downloadCLI() {
76
+ const config = getCLIConfig();
77
+ const versionDir = getCLIVersionDir(this.version);
78
+ const downloadUrl = getCLIDownloadUrl(this.version);
79
+ try {
80
+ // Create version directory
81
+ await mkdir(versionDir, { recursive: true });
82
+ // Determine archive type and temp path
83
+ const archiveExt = isWindows() ? 'zip' : 'tar';
84
+ const tempArchivePath = join(versionDir, `cli.${archiveExt}`);
85
+ // Download the archive
86
+ console.error(`Downloading Context Mapper CLI ${this.version} from Maven Central...`);
87
+ await this.downloadFile(downloadUrl, tempArchivePath);
88
+ // Extract the archive
89
+ console.error('Extracting CLI...');
90
+ await this.extractArchive(tempArchivePath, versionDir);
91
+ // Clean up archive
92
+ await rm(tempArchivePath, { force: true });
93
+ // Make executable on Unix
94
+ if (!isWindows()) {
95
+ const cliPath = getCLIExecutablePath(this.version);
96
+ try {
97
+ await chmod(cliPath, 0o755);
98
+ }
99
+ catch {
100
+ // May fail if file doesn't exist yet
101
+ }
102
+ }
103
+ console.error(`CLI ${this.version} installed successfully`);
104
+ return {
105
+ success: true,
106
+ version: this.version,
107
+ path: getCLIExecutablePath(this.version),
108
+ };
109
+ }
110
+ catch (error) {
111
+ // Clean up on failure
112
+ try {
113
+ await rm(versionDir, { recursive: true, force: true });
114
+ }
115
+ catch {
116
+ // Ignore cleanup errors
117
+ }
118
+ return {
119
+ success: false,
120
+ error: error instanceof Error ? error.message : 'Unknown download error',
121
+ };
122
+ }
123
+ }
124
+ /**
125
+ * Download a file from URL
126
+ */
127
+ async downloadFile(url, destPath) {
128
+ const response = await fetch(url);
129
+ if (!response.ok) {
130
+ throw new Error(`Failed to download: ${response.status} ${response.statusText}`);
131
+ }
132
+ if (!response.body) {
133
+ throw new Error('No response body');
134
+ }
135
+ // Ensure parent directory exists
136
+ await mkdir(dirname(destPath), { recursive: true });
137
+ // Write to file using streams
138
+ const fileStream = createWriteStream(destPath);
139
+ // Convert ReadableStream to Node.js Readable
140
+ const reader = response.body.getReader();
141
+ const chunks = [];
142
+ while (true) {
143
+ const { done, value } = await reader.read();
144
+ if (done)
145
+ break;
146
+ chunks.push(value);
147
+ }
148
+ const buffer = Buffer.concat(chunks);
149
+ fileStream.write(buffer);
150
+ fileStream.end();
151
+ await new Promise((resolve, reject) => {
152
+ fileStream.on('finish', resolve);
153
+ fileStream.on('error', reject);
154
+ });
155
+ }
156
+ /**
157
+ * Extract archive (TAR or ZIP)
158
+ */
159
+ async extractArchive(archivePath, destDir) {
160
+ if (isWindows()) {
161
+ await this.extractZip(archivePath, destDir);
162
+ }
163
+ else {
164
+ await this.extractTar(archivePath, destDir);
165
+ }
166
+ // Handle nested directory structure
167
+ // The CLI archive may extract to a subdirectory like context-mapper-cli-6.12.0/
168
+ await this.flattenExtractedDir(destDir);
169
+ }
170
+ /**
171
+ * Extract TAR archive (for Unix)
172
+ */
173
+ async extractTar(archivePath, destDir) {
174
+ // The TAR from Maven is not gzipped
175
+ await tarExtract({
176
+ file: archivePath,
177
+ cwd: destDir,
178
+ });
179
+ }
180
+ /**
181
+ * Extract ZIP archive (for Windows)
182
+ * Using native unzip as Node.js doesn't have built-in ZIP support
183
+ */
184
+ async extractZip(archivePath, destDir) {
185
+ // Use PowerShell to extract on Windows
186
+ const { spawn } = await import('child_process');
187
+ return new Promise((resolve, reject) => {
188
+ const ps = spawn('powershell', [
189
+ '-Command',
190
+ `Expand-Archive -Path "${archivePath}" -DestinationPath "${destDir}" -Force`,
191
+ ]);
192
+ ps.on('close', (code) => {
193
+ if (code === 0) {
194
+ resolve();
195
+ }
196
+ else {
197
+ reject(new Error(`ZIP extraction failed with code ${code}`));
198
+ }
199
+ });
200
+ ps.on('error', reject);
201
+ });
202
+ }
203
+ /**
204
+ * Flatten extracted directory if CLI was extracted to a subdirectory
205
+ */
206
+ async flattenExtractedDir(destDir) {
207
+ const entries = await readdir(destDir);
208
+ // Look for the CLI directory pattern (context-mapper-cli-X.X.X)
209
+ const cliSubdir = entries.find((e) => e.startsWith('context-mapper-cli-') && !e.endsWith('.tar') && !e.endsWith('.zip'));
210
+ if (cliSubdir) {
211
+ const subdirPath = join(destDir, cliSubdir);
212
+ const subdirStat = await stat(subdirPath);
213
+ if (subdirStat.isDirectory()) {
214
+ // Move contents up
215
+ const subdirEntries = await readdir(subdirPath);
216
+ for (const entry of subdirEntries) {
217
+ const srcPath = join(subdirPath, entry);
218
+ const destPath = join(destDir, entry);
219
+ // Remove existing if present
220
+ if (await exists(destPath)) {
221
+ await rm(destPath, { recursive: true, force: true });
222
+ }
223
+ await rename(srcPath, destPath);
224
+ }
225
+ // Remove empty subdirectory
226
+ await rm(subdirPath, { recursive: true, force: true });
227
+ }
228
+ }
229
+ }
230
+ /**
231
+ * Remove installed CLI
232
+ */
233
+ async uninstall() {
234
+ const versionDir = getCLIVersionDir(this.version);
235
+ await rm(versionDir, { recursive: true, force: true });
236
+ }
237
+ /**
238
+ * Get installed CLI versions
239
+ */
240
+ static async getInstalledVersions() {
241
+ const config = getCLIConfig();
242
+ const cliDir = config.cliDir;
243
+ try {
244
+ const entries = await readdir(cliDir);
245
+ const versions = [];
246
+ for (const entry of entries) {
247
+ const entryPath = join(cliDir, entry);
248
+ const entryStat = await stat(entryPath);
249
+ if (entryStat.isDirectory()) {
250
+ // Check if it looks like a version directory
251
+ if (/^\d+\.\d+\.\d+/.test(entry)) {
252
+ versions.push(entry);
253
+ }
254
+ }
255
+ }
256
+ return versions.sort();
257
+ }
258
+ catch {
259
+ return [];
260
+ }
261
+ }
262
+ }
263
+ // Singleton manager instance
264
+ let managerInstance = null;
265
+ /**
266
+ * Get the CLI manager instance
267
+ */
268
+ export function getCLIManager() {
269
+ if (!managerInstance) {
270
+ managerInstance = new CLIManager();
271
+ }
272
+ return managerInstance;
273
+ }
274
+ /**
275
+ * Set the CLI version and recreate manager
276
+ */
277
+ export function setCLIVersion(version) {
278
+ managerInstance = new CLIManager(version);
279
+ return managerInstance;
280
+ }
281
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/generators/cli/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * MDSL CLI Generator
3
+ * Generates MDSL (Microservice Domain Specific Language) contracts using the Context Mapper CLI
4
+ */
5
+ import type { CMLModel } from '../../model/types.js';
6
+ import type { IGenerator, GeneratorResult, MDSLGeneratorOptions } from '../interfaces.js';
7
+ /**
8
+ * MDSL Generator
9
+ * Uses CLI to generate MDSL microservice contracts from upstream-downstream relationships
10
+ */
11
+ export declare class MDSLGenerator implements IGenerator {
12
+ name: string;
13
+ description: string;
14
+ requiresCLI: boolean;
15
+ outputFormats: string[];
16
+ generate(model: CMLModel, options?: MDSLGeneratorOptions): Promise<GeneratorResult>;
17
+ /**
18
+ * Find generated MDSL files in the output directory
19
+ */
20
+ private findGeneratedFiles;
21
+ }
22
+ /**
23
+ * Create the MDSL generator
24
+ */
25
+ export declare function createMDSLGenerator(): IGenerator;
26
+ //# sourceMappingURL=mdsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdsl.d.ts","sourceRoot":"","sources":["../../../src/generators/cli/mdsl.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,oBAAoB,EAErB,MAAM,kBAAkB,CAAC;AAc1B;;;GAGG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC9C,IAAI,SAAU;IACd,WAAW,SAAyE;IACpF,WAAW,UAAQ;IACnB,aAAa,WAAY;IAEnB,QAAQ,CACZ,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,eAAe,CAAC;IAmH3B;;OAEG;YACW,kBAAkB;CAsBjC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,UAAU,CAEhD"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * MDSL CLI Generator
3
+ * Generates MDSL (Microservice Domain Specific Language) contracts using the Context Mapper CLI
4
+ */
5
+ import { readdir, readFile, stat } from 'fs/promises';
6
+ import { join, basename } from 'path';
7
+ import { createSuccessResult, createErrorResult, cliNotFoundError, javaNotFoundError, javaVersionError, executionTimeoutError, } from '../interfaces.js';
8
+ import { serializeCML } from '../../model/writer.js';
9
+ import { withTempFiles } from '../../utils/temp-files.js';
10
+ import { getCLIExecutor, getCLIStatus } from './executor.js';
11
+ import { getCLIConfig } from './config.js';
12
+ /**
13
+ * MDSL Generator
14
+ * Uses CLI to generate MDSL microservice contracts from upstream-downstream relationships
15
+ */
16
+ export class MDSLGenerator {
17
+ name = 'mdsl';
18
+ description = 'Generate MDSL microservice contracts from Context Map relationships';
19
+ requiresCLI = true;
20
+ outputFormats = ['mdsl'];
21
+ async generate(model, options) {
22
+ // Check prerequisites
23
+ const status = await getCLIStatus();
24
+ if (!status.javaAvailable) {
25
+ return javaNotFoundError();
26
+ }
27
+ if (!status.javaCompatible) {
28
+ return javaVersionError(status.javaVersion || 'unknown');
29
+ }
30
+ if (!status.cliInstalled) {
31
+ return cliNotFoundError();
32
+ }
33
+ // Check for upstream-downstream relationships
34
+ if (!model.contextMap || model.contextMap.relationships.length === 0) {
35
+ return createErrorResult('INVALID_CML', 'No context map relationships found', 'MDSL generation requires upstream-downstream relationships in the context map');
36
+ }
37
+ const hasUpstreamDownstream = model.contextMap.relationships.some((rel) => rel.type === 'UpstreamDownstream');
38
+ if (!hasUpstreamDownstream) {
39
+ return createErrorResult('INVALID_CML', 'No upstream-downstream relationships found', 'MDSL generation requires at least one upstream-downstream relationship in the context map');
40
+ }
41
+ // Use temp files with automatic cleanup
42
+ return withTempFiles(async (tempContext) => {
43
+ try {
44
+ // Serialize model to CML
45
+ const cmlContent = serializeCML(model);
46
+ const tempDir = await tempContext.createDir();
47
+ const cmlPath = await tempContext.createCMLFile(cmlContent, tempDir);
48
+ // Determine output directory
49
+ const config = getCLIConfig();
50
+ const outputDir = options?.outputDir ?? config.outputDir;
51
+ // Build extra arguments
52
+ const extraArgs = [];
53
+ // Execute CLI
54
+ const executor = getCLIExecutor();
55
+ const result = await executor.generate(cmlPath, 'mdsl', outputDir, extraArgs, { timeout: options?.timeout });
56
+ if (result.timedOut) {
57
+ return executionTimeoutError(options?.timeout ?? config.timeout);
58
+ }
59
+ if (!result.success) {
60
+ return createErrorResult('EXECUTION_FAILED', result.error || 'CLI execution failed', 'Check the CML model for errors using cml_validate_model', result.stderr);
61
+ }
62
+ // Find generated MDSL files
63
+ const generatedFiles = await this.findGeneratedFiles(outputDir);
64
+ if (generatedFiles.length === 0) {
65
+ return createErrorResult('OUTPUT_NOT_FOUND', 'No MDSL files were generated', 'Ensure the model has upstream-downstream relationships with exposed aggregates');
66
+ }
67
+ // Read file contents for output
68
+ const outputs = await Promise.all(generatedFiles.map(async (filePath) => {
69
+ const content = await readFile(filePath, 'utf-8');
70
+ return {
71
+ type: 'file',
72
+ path: filePath,
73
+ content,
74
+ format: 'mdsl',
75
+ description: `MDSL contract: ${basename(filePath)}`,
76
+ };
77
+ }));
78
+ // Include any warnings from stderr
79
+ const warnings = result.stderr
80
+ ? result.stderr.split('\n').filter((line) => line.trim().length > 0)
81
+ : undefined;
82
+ return createSuccessResult(outputs, warnings);
83
+ }
84
+ catch (error) {
85
+ return createErrorResult('INTERNAL_ERROR', error instanceof Error ? error.message : 'Unknown error during generation');
86
+ }
87
+ });
88
+ }
89
+ /**
90
+ * Find generated MDSL files in the output directory
91
+ */
92
+ async findGeneratedFiles(outputDir) {
93
+ const files = [];
94
+ try {
95
+ const entries = await readdir(outputDir);
96
+ for (const entry of entries) {
97
+ if (entry.endsWith('.mdsl')) {
98
+ const entryPath = join(outputDir, entry);
99
+ const entryStat = await stat(entryPath);
100
+ if (entryStat.isFile()) {
101
+ files.push(entryPath);
102
+ }
103
+ }
104
+ }
105
+ }
106
+ catch {
107
+ // Directory may not exist
108
+ }
109
+ return files;
110
+ }
111
+ }
112
+ /**
113
+ * Create the MDSL generator
114
+ */
115
+ export function createMDSLGenerator() {
116
+ return new MDSLGenerator();
117
+ }
118
+ //# sourceMappingURL=mdsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdsl.js","sourceRoot":"","sources":["../../../src/generators/cli/mdsl.ts"],"names":[],"mappings":"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"}