pcu 0.2.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 (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +478 -0
  3. package/bin/pcu.js +15 -0
  4. package/dist/application/services/CatalogUpdateService.d.ts +190 -0
  5. package/dist/application/services/CatalogUpdateService.d.ts.map +1 -0
  6. package/dist/application/services/CatalogUpdateService.js +521 -0
  7. package/dist/application/services/CatalogUpdateService.js.map +1 -0
  8. package/dist/application/services/WorkspaceService.d.ts +139 -0
  9. package/dist/application/services/WorkspaceService.d.ts.map +1 -0
  10. package/dist/application/services/WorkspaceService.js +340 -0
  11. package/dist/application/services/WorkspaceService.js.map +1 -0
  12. package/dist/cli/commands/CheckCommand.d.ts +41 -0
  13. package/dist/cli/commands/CheckCommand.d.ts.map +1 -0
  14. package/dist/cli/commands/CheckCommand.js +168 -0
  15. package/dist/cli/commands/CheckCommand.js.map +1 -0
  16. package/dist/cli/commands/UpdateCommand.d.ts +69 -0
  17. package/dist/cli/commands/UpdateCommand.d.ts.map +1 -0
  18. package/dist/cli/commands/UpdateCommand.js +361 -0
  19. package/dist/cli/commands/UpdateCommand.js.map +1 -0
  20. package/dist/cli/formatters/OutputFormatter.d.ts +99 -0
  21. package/dist/cli/formatters/OutputFormatter.d.ts.map +1 -0
  22. package/dist/cli/formatters/OutputFormatter.js +551 -0
  23. package/dist/cli/formatters/OutputFormatter.js.map +1 -0
  24. package/dist/cli/index.d.ts +12 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +271 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/cli/options/GlobalOptions.d.ts +117 -0
  29. package/dist/cli/options/GlobalOptions.d.ts.map +1 -0
  30. package/dist/cli/options/GlobalOptions.js +278 -0
  31. package/dist/cli/options/GlobalOptions.js.map +1 -0
  32. package/dist/cli/options/index.d.ts +5 -0
  33. package/dist/cli/options/index.d.ts.map +1 -0
  34. package/dist/cli/options/index.js +5 -0
  35. package/dist/cli/options/index.js.map +1 -0
  36. package/dist/cli/validators/CommandValidator.d.ts +60 -0
  37. package/dist/cli/validators/CommandValidator.d.ts.map +1 -0
  38. package/dist/cli/validators/CommandValidator.js +319 -0
  39. package/dist/cli/validators/CommandValidator.js.map +1 -0
  40. package/dist/cli/validators/index.d.ts +5 -0
  41. package/dist/cli/validators/index.d.ts.map +1 -0
  42. package/dist/cli/validators/index.js +5 -0
  43. package/dist/cli/validators/index.js.map +1 -0
  44. package/dist/common/config/Config.d.ts +142 -0
  45. package/dist/common/config/Config.d.ts.map +1 -0
  46. package/dist/common/config/Config.js +355 -0
  47. package/dist/common/config/Config.js.map +1 -0
  48. package/dist/common/config/index.d.ts +6 -0
  49. package/dist/common/config/index.d.ts.map +1 -0
  50. package/dist/common/config/index.js +6 -0
  51. package/dist/common/config/index.js.map +1 -0
  52. package/dist/common/logger/Logger.d.ts +110 -0
  53. package/dist/common/logger/Logger.d.ts.map +1 -0
  54. package/dist/common/logger/Logger.js +289 -0
  55. package/dist/common/logger/Logger.js.map +1 -0
  56. package/dist/common/logger/index.d.ts +6 -0
  57. package/dist/common/logger/index.d.ts.map +1 -0
  58. package/dist/common/logger/index.js +6 -0
  59. package/dist/common/logger/index.js.map +1 -0
  60. package/dist/common/types/cli.d.ts +265 -0
  61. package/dist/common/types/cli.d.ts.map +1 -0
  62. package/dist/common/types/cli.js +5 -0
  63. package/dist/common/types/cli.js.map +1 -0
  64. package/dist/common/types/core.d.ts +270 -0
  65. package/dist/common/types/core.d.ts.map +1 -0
  66. package/dist/common/types/core.js +32 -0
  67. package/dist/common/types/core.js.map +1 -0
  68. package/dist/common/types/index.d.ts +8 -0
  69. package/dist/common/types/index.d.ts.map +1 -0
  70. package/dist/common/types/index.js +8 -0
  71. package/dist/common/types/index.js.map +1 -0
  72. package/dist/common/utils/async.d.ts +74 -0
  73. package/dist/common/utils/async.d.ts.map +1 -0
  74. package/dist/common/utils/async.js +228 -0
  75. package/dist/common/utils/async.js.map +1 -0
  76. package/dist/common/utils/format.d.ts +32 -0
  77. package/dist/common/utils/format.d.ts.map +1 -0
  78. package/dist/common/utils/format.js +121 -0
  79. package/dist/common/utils/format.js.map +1 -0
  80. package/dist/common/utils/git.d.ts +44 -0
  81. package/dist/common/utils/git.d.ts.map +1 -0
  82. package/dist/common/utils/git.js +147 -0
  83. package/dist/common/utils/git.js.map +1 -0
  84. package/dist/common/utils/index.d.ts +11 -0
  85. package/dist/common/utils/index.d.ts.map +1 -0
  86. package/dist/common/utils/index.js +11 -0
  87. package/dist/common/utils/index.js.map +1 -0
  88. package/dist/common/utils/string.d.ts +56 -0
  89. package/dist/common/utils/string.d.ts.map +1 -0
  90. package/dist/common/utils/string.js +134 -0
  91. package/dist/common/utils/string.js.map +1 -0
  92. package/dist/common/utils/validation.d.ts +88 -0
  93. package/dist/common/utils/validation.d.ts.map +1 -0
  94. package/dist/common/utils/validation.js +281 -0
  95. package/dist/common/utils/validation.js.map +1 -0
  96. package/dist/domain/entities/Catalog.d.ts +117 -0
  97. package/dist/domain/entities/Catalog.d.ts.map +1 -0
  98. package/dist/domain/entities/Catalog.js +240 -0
  99. package/dist/domain/entities/Catalog.js.map +1 -0
  100. package/dist/domain/entities/Package.d.ts +143 -0
  101. package/dist/domain/entities/Package.d.ts.map +1 -0
  102. package/dist/domain/entities/Package.js +272 -0
  103. package/dist/domain/entities/Package.js.map +1 -0
  104. package/dist/domain/entities/Workspace.d.ts +95 -0
  105. package/dist/domain/entities/Workspace.d.ts.map +1 -0
  106. package/dist/domain/entities/Workspace.js +173 -0
  107. package/dist/domain/entities/Workspace.js.map +1 -0
  108. package/dist/domain/repositories/WorkspaceRepository.d.ts +41 -0
  109. package/dist/domain/repositories/WorkspaceRepository.d.ts.map +1 -0
  110. package/dist/domain/repositories/WorkspaceRepository.js +8 -0
  111. package/dist/domain/repositories/WorkspaceRepository.js.map +1 -0
  112. package/dist/domain/value-objects/CatalogCollection.d.ts +106 -0
  113. package/dist/domain/value-objects/CatalogCollection.d.ts.map +1 -0
  114. package/dist/domain/value-objects/CatalogCollection.js +230 -0
  115. package/dist/domain/value-objects/CatalogCollection.js.map +1 -0
  116. package/dist/domain/value-objects/PackageCollection.d.ts +122 -0
  117. package/dist/domain/value-objects/PackageCollection.d.ts.map +1 -0
  118. package/dist/domain/value-objects/PackageCollection.js +263 -0
  119. package/dist/domain/value-objects/PackageCollection.js.map +1 -0
  120. package/dist/domain/value-objects/Version.d.ts +141 -0
  121. package/dist/domain/value-objects/Version.d.ts.map +1 -0
  122. package/dist/domain/value-objects/Version.js +268 -0
  123. package/dist/domain/value-objects/Version.js.map +1 -0
  124. package/dist/domain/value-objects/WorkspaceConfig.d.ts +144 -0
  125. package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +1 -0
  126. package/dist/domain/value-objects/WorkspaceConfig.js +357 -0
  127. package/dist/domain/value-objects/WorkspaceConfig.js.map +1 -0
  128. package/dist/domain/value-objects/WorkspaceId.d.ts +51 -0
  129. package/dist/domain/value-objects/WorkspaceId.d.ts.map +1 -0
  130. package/dist/domain/value-objects/WorkspaceId.js +104 -0
  131. package/dist/domain/value-objects/WorkspaceId.js.map +1 -0
  132. package/dist/domain/value-objects/WorkspacePath.d.ts +75 -0
  133. package/dist/domain/value-objects/WorkspacePath.d.ts.map +1 -0
  134. package/dist/domain/value-objects/WorkspacePath.js +128 -0
  135. package/dist/domain/value-objects/WorkspacePath.js.map +1 -0
  136. package/dist/infrastructure/cache/Cache.d.ts +161 -0
  137. package/dist/infrastructure/cache/Cache.d.ts.map +1 -0
  138. package/dist/infrastructure/cache/Cache.js +398 -0
  139. package/dist/infrastructure/cache/Cache.js.map +1 -0
  140. package/dist/infrastructure/cache/index.d.ts +6 -0
  141. package/dist/infrastructure/cache/index.d.ts.map +1 -0
  142. package/dist/infrastructure/cache/index.js +6 -0
  143. package/dist/infrastructure/cache/index.js.map +1 -0
  144. package/dist/infrastructure/external-services/NpmRegistryService.d.ts +106 -0
  145. package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +1 -0
  146. package/dist/infrastructure/external-services/NpmRegistryService.js +305 -0
  147. package/dist/infrastructure/external-services/NpmRegistryService.js.map +1 -0
  148. package/dist/infrastructure/file-system/FileSystemService.d.ts +120 -0
  149. package/dist/infrastructure/file-system/FileSystemService.d.ts.map +1 -0
  150. package/dist/infrastructure/file-system/FileSystemService.js +663 -0
  151. package/dist/infrastructure/file-system/FileSystemService.js.map +1 -0
  152. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +57 -0
  153. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +1 -0
  154. package/dist/infrastructure/repositories/FileWorkspaceRepository.js +179 -0
  155. package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +1 -0
  156. package/package.json +127 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/infrastructure/cache/Cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AA2BpC,MAAM,OAAO,KAAK;IACR,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC3C,KAAK,GAAG;QACd,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACV,CAAC;IAEM,OAAO,CAAyB;IAExC,YAAY,IAAY,EAAE,UAAwB,EAAE;QAClD,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,EAAE,iBAAiB;YAC9C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,eAAe;YAC7D,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;YACtC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;YAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;SACrE,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAED,yBAAyB;QACzB,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,wBAAwB;IACrE,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,6BAA6B;QAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,GAAY;QACrC,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAkB;YAC3B,GAAG;YACH,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,GAAG,EAAE,QAAQ;YACb,IAAI;SACL,CAAC;QAEF,6BAA6B;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAElD,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC/B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9B,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAChD,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,OAA6B,EAAE,GAAY;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAE1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,YAAoB;QACzC,0BAA0B;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;QAED,mBAAmB;QACnB,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACjE,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,SAA6B,CAAC;QAClC,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,SAAS,GAAG,eAAe,EAAE,CAAC;gBACtC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;gBAClC,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAQ;QAC3B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,wBAAwB;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC,+CAA+C;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAEvC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC1B,MAAM,YAAY,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;wBACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;wBAEvC,gCAAgC;wBAChC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;4BAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC/B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAW,EAAE,KAAoB;QAClD,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACrE,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAEzD,eAAe;YACf,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,GAAW;QAChC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACrE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS;QACf,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;aACxB,CAAC;YACF,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,GAAW;QAC7B,mCAAmC;QACnC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,GAAG,IAAI,OAAO,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAU;IAC3C,YAAY,UAAwB,EAAE;QACpC,KAAK,CAAC,UAAU,EAAE;YAChB,GAAG,EAAE,OAAO,EAAE,SAAS;YACvB,OAAO,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;YAClC,UAAU,EAAE,GAAG;YACf,aAAa,EAAE,IAAI;YACnB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,WAAmB,EAAE,IAAS,EAAE,GAAY;QACzD,IAAI,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,WAAmB;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,WAAmB,EAAE,QAAkB,EAAE,GAAY;QAC/D,IAAI,CAAC,GAAG,CAAC,YAAY,WAAW,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,WAAmB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,WAAmB,EAAE,OAAe,EAAE,MAAW,EAAE,GAAY;QAC/E,IAAI,CAAC,GAAG,CAAC,YAAY,WAAW,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,WAAmB,EAAE,OAAe;QACpD,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,WAAW,IAAI,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAU;IAC5C,YAAY,UAAwB,EAAE;QACpC,KAAK,CAAC,WAAW,EAAE;YACjB,GAAG,EAAE,MAAM,EAAE,0CAA0C;YACvD,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,MAAM;YAChC,UAAU,EAAE,GAAG;YACf,aAAa,EAAE,KAAK,EAAE,gCAAgC;YACtD,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,aAAqB,EAAE,IAAS,EAAE,GAAY;QAC7D,IAAI,CAAC,GAAG,CAAC,aAAa,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,aAAqB;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,aAAa,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAgB,EAAE,OAAY,EAAE,GAAY;QACzD,IAAI,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AACjD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Cache Module Entry Point
3
+ */
4
+ export * from './Cache.js';
5
+ export { registryCache, workspaceCache } from './Cache.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/cache/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Cache Module Entry Point
3
+ */
4
+ export * from './Cache.js';
5
+ export { registryCache, workspaceCache } from './Cache.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/cache/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * NPM Registry Service
3
+ *
4
+ * Provides access to NPM registry for package version information.
5
+ * Handles API calls, caching, and version resolution.
6
+ */
7
+ import { Version, VersionRange } from '../../domain/value-objects/Version.js';
8
+ export interface PackageInfo {
9
+ name: string;
10
+ description?: string;
11
+ homepage?: string;
12
+ repository?: {
13
+ type: string;
14
+ url: string;
15
+ };
16
+ license?: string;
17
+ author?: string | {
18
+ name: string;
19
+ email?: string;
20
+ };
21
+ maintainers?: Array<{
22
+ name: string;
23
+ email?: string;
24
+ }>;
25
+ keywords?: string[];
26
+ versions: string[];
27
+ latestVersion: string;
28
+ tags: Record<string, string>;
29
+ time: Record<string, string>;
30
+ }
31
+ export interface SecurityVulnerability {
32
+ id: string;
33
+ title: string;
34
+ severity: 'low' | 'moderate' | 'high' | 'critical';
35
+ description: string;
36
+ reference: string;
37
+ vulnerable_versions: string;
38
+ patched_versions?: string;
39
+ recommendation?: string;
40
+ }
41
+ export interface SecurityReport {
42
+ package: string;
43
+ version: string;
44
+ vulnerabilities: SecurityVulnerability[];
45
+ hasVulnerabilities: boolean;
46
+ }
47
+ export declare class NpmRegistryService {
48
+ private readonly registryUrl;
49
+ private readonly timeout;
50
+ private readonly cache;
51
+ private readonly cacheTimeout;
52
+ constructor(registryUrl?: string, timeout?: number);
53
+ /**
54
+ * Get package information including all versions
55
+ */
56
+ getPackageInfo(packageName: string): Promise<PackageInfo>;
57
+ /**
58
+ * Get the latest version of a package
59
+ */
60
+ getLatestVersion(packageName: string): Promise<Version>;
61
+ /**
62
+ * Get the greatest version that satisfies a range
63
+ */
64
+ getGreatestVersion(packageName: string, range?: VersionRange): Promise<Version>;
65
+ /**
66
+ * Get versions by date (newest versions published)
67
+ */
68
+ getNewestVersions(packageName: string, count?: number): Promise<Version[]>;
69
+ /**
70
+ * Check for security vulnerabilities
71
+ */
72
+ checkSecurityVulnerabilities(packageName: string, version: string): Promise<SecurityReport>;
73
+ /**
74
+ * Batch query multiple packages
75
+ */
76
+ batchQueryVersions(packages: string[]): Promise<Map<string, PackageInfo>>;
77
+ /**
78
+ * Check if package author has changed
79
+ */
80
+ hasPackageAuthorChanged(packageName: string, fromVersion: string, toVersion: string): Promise<boolean>;
81
+ /**
82
+ * Get package download statistics
83
+ */
84
+ getDownloadStats(packageName: string, period?: 'last-day' | 'last-week' | 'last-month'): Promise<number>;
85
+ /**
86
+ * Clear cache
87
+ */
88
+ clearCache(): void;
89
+ /**
90
+ * Get item from cache if not expired
91
+ */
92
+ private getFromCache;
93
+ /**
94
+ * Set item in cache
95
+ */
96
+ private setCache;
97
+ /**
98
+ * Split array into chunks
99
+ */
100
+ private chunkArray;
101
+ /**
102
+ * Normalize author for comparison
103
+ */
104
+ private normalizeAuthor;
105
+ }
106
+ //# sourceMappingURL=NpmRegistryService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmRegistryService.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/external-services/NpmRegistryService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * NPM Registry Service
3
+ *
4
+ * Provides access to NPM registry for package version information.
5
+ * Handles API calls, caching, and version resolution.
6
+ */
7
+ import npmRegistryFetch from 'npm-registry-fetch';
8
+ import pacote from 'pacote';
9
+ import semver from 'semver';
10
+ import { Version } from '../../domain/value-objects/Version.js';
11
+ export class NpmRegistryService {
12
+ registryUrl;
13
+ timeout;
14
+ cache = new Map();
15
+ cacheTimeout = 5 * 60 * 1000; // 5 minutes
16
+ constructor(registryUrl = 'https://registry.npmjs.org/', timeout = 30000) {
17
+ this.registryUrl = registryUrl;
18
+ this.timeout = timeout;
19
+ }
20
+ /**
21
+ * Get package information including all versions
22
+ */
23
+ async getPackageInfo(packageName) {
24
+ const cacheKey = `package-info:${packageName}`;
25
+ // Check cache first
26
+ const cached = this.getFromCache(cacheKey);
27
+ if (cached) {
28
+ return cached;
29
+ }
30
+ try {
31
+ const packument = await pacote.packument(packageName, {
32
+ registry: this.registryUrl,
33
+ timeout: this.timeout,
34
+ fullMetadata: true,
35
+ });
36
+ const versions = Object.keys(packument.versions || {}).sort(semver.rcompare);
37
+ const latestVersion = packument['dist-tags']?.latest || versions[0];
38
+ const packageInfo = {
39
+ name: packument.name,
40
+ description: packument.description,
41
+ homepage: packument.homepage,
42
+ repository: packument.repository,
43
+ license: packument.license,
44
+ author: packument.author,
45
+ maintainers: packument.maintainers,
46
+ keywords: packument.keywords,
47
+ versions,
48
+ latestVersion,
49
+ tags: packument['dist-tags'] || {},
50
+ time: packument.time || {},
51
+ };
52
+ // Cache the result
53
+ this.setCache(cacheKey, packageInfo);
54
+ return packageInfo;
55
+ }
56
+ catch (error) {
57
+ throw new Error(`Failed to fetch package info for ${packageName}: ${error}`);
58
+ }
59
+ }
60
+ /**
61
+ * Get the latest version of a package
62
+ */
63
+ async getLatestVersion(packageName) {
64
+ try {
65
+ const packageInfo = await this.getPackageInfo(packageName);
66
+ return Version.fromString(packageInfo.latestVersion);
67
+ }
68
+ catch (error) {
69
+ throw new Error(`Failed to get latest version for ${packageName}: ${error}`);
70
+ }
71
+ }
72
+ /**
73
+ * Get the greatest version that satisfies a range
74
+ */
75
+ async getGreatestVersion(packageName, range) {
76
+ try {
77
+ const packageInfo = await this.getPackageInfo(packageName);
78
+ if (!range) {
79
+ return Version.fromString(packageInfo.latestVersion);
80
+ }
81
+ // Find the greatest version that satisfies the range
82
+ const satisfyingVersions = packageInfo.versions.filter((v) => {
83
+ try {
84
+ const version = Version.fromString(v);
85
+ return version.satisfies(range);
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ });
91
+ if (satisfyingVersions.length === 0) {
92
+ throw new Error(`No versions satisfy range ${range.toString()}`);
93
+ }
94
+ // Return the first (greatest) version
95
+ if (!satisfyingVersions[0]) {
96
+ throw new Error(`No satisfying versions found for ${packageName}`);
97
+ }
98
+ return Version.fromString(satisfyingVersions[0]);
99
+ }
100
+ catch (error) {
101
+ throw new Error(`Failed to get greatest version for ${packageName}: ${error}`);
102
+ }
103
+ }
104
+ /**
105
+ * Get versions by date (newest versions published)
106
+ */
107
+ async getNewestVersions(packageName, count = 10) {
108
+ try {
109
+ const packageInfo = await this.getPackageInfo(packageName);
110
+ // Sort versions by publication time
111
+ const versionsWithTime = packageInfo.versions
112
+ .map((version) => ({
113
+ version,
114
+ time: packageInfo.time[version] ? new Date(packageInfo.time[version]) : new Date(0),
115
+ }))
116
+ .sort((a, b) => b.time.getTime() - a.time.getTime())
117
+ .slice(0, count);
118
+ return versionsWithTime.map((item) => Version.fromString(item.version));
119
+ }
120
+ catch (error) {
121
+ throw new Error(`Failed to get newest versions for ${packageName}: ${error}`);
122
+ }
123
+ }
124
+ /**
125
+ * Check for security vulnerabilities
126
+ */
127
+ async checkSecurityVulnerabilities(packageName, version) {
128
+ const cacheKey = `security:${packageName}@${version}`;
129
+ // Check cache first
130
+ const cached = this.getFromCache(cacheKey);
131
+ if (cached) {
132
+ return cached;
133
+ }
134
+ try {
135
+ // Use npm audit API
136
+ const auditData = {
137
+ name: packageName,
138
+ version: version,
139
+ requires: {},
140
+ dependencies: {},
141
+ };
142
+ const response = await npmRegistryFetch('/-/npm/v1/security/audits', {
143
+ method: 'POST',
144
+ body: JSON.stringify(auditData),
145
+ headers: {
146
+ 'Content-Type': 'application/json',
147
+ },
148
+ registry: this.registryUrl,
149
+ timeout: this.timeout,
150
+ });
151
+ const auditResult = await response.json();
152
+ const vulnerabilities = [];
153
+ // Parse audit results
154
+ if (auditResult.advisories) {
155
+ for (const advisory of Object.values(auditResult.advisories)) {
156
+ vulnerabilities.push({
157
+ id: advisory.id.toString(),
158
+ title: advisory.title,
159
+ severity: advisory.severity,
160
+ description: advisory.overview,
161
+ reference: advisory.url,
162
+ vulnerable_versions: advisory.vulnerable_versions,
163
+ patched_versions: advisory.patched_versions,
164
+ recommendation: advisory.recommendation,
165
+ });
166
+ }
167
+ }
168
+ const securityReport = {
169
+ package: packageName,
170
+ version: version,
171
+ vulnerabilities,
172
+ hasVulnerabilities: vulnerabilities.length > 0,
173
+ };
174
+ // Cache the result
175
+ this.setCache(cacheKey, securityReport);
176
+ return securityReport;
177
+ }
178
+ catch (error) {
179
+ // If security check fails, return empty report
180
+ console.warn(`Security check failed for ${packageName}@${version}:`, error);
181
+ const emptyReport = {
182
+ package: packageName,
183
+ version: version,
184
+ vulnerabilities: [],
185
+ hasVulnerabilities: false,
186
+ };
187
+ return emptyReport;
188
+ }
189
+ }
190
+ /**
191
+ * Batch query multiple packages
192
+ */
193
+ async batchQueryVersions(packages) {
194
+ const results = new Map();
195
+ // Process packages in parallel with limited concurrency
196
+ const concurrency = 5;
197
+ const chunks = this.chunkArray(packages, concurrency);
198
+ for (const chunk of chunks) {
199
+ const promises = chunk.map(async (packageName) => {
200
+ try {
201
+ const info = await this.getPackageInfo(packageName);
202
+ results.set(packageName, info);
203
+ }
204
+ catch (error) {
205
+ console.warn(`Failed to query package ${packageName}:`, error);
206
+ }
207
+ });
208
+ await Promise.all(promises);
209
+ }
210
+ return results;
211
+ }
212
+ /**
213
+ * Check if package author has changed
214
+ */
215
+ async hasPackageAuthorChanged(packageName, fromVersion, toVersion) {
216
+ try {
217
+ // const packageInfo = await this.getPackageInfo(packageName);
218
+ const fromVersionData = await pacote.manifest(`${packageName}@${fromVersion}`, {
219
+ registry: this.registryUrl,
220
+ timeout: this.timeout,
221
+ });
222
+ const toVersionData = await pacote.manifest(`${packageName}@${toVersion}`, {
223
+ registry: this.registryUrl,
224
+ timeout: this.timeout,
225
+ });
226
+ // Compare authors/maintainers
227
+ const fromAuthor = this.normalizeAuthor(fromVersionData.author);
228
+ const toAuthor = this.normalizeAuthor(toVersionData.author);
229
+ return fromAuthor !== toAuthor;
230
+ }
231
+ catch (error) {
232
+ console.warn(`Failed to check author change for ${packageName}:`, error);
233
+ return false;
234
+ }
235
+ }
236
+ /**
237
+ * Get package download statistics
238
+ */
239
+ async getDownloadStats(packageName, period = 'last-week') {
240
+ try {
241
+ const response = await fetch(`https://api.npmjs.org/downloads/point/${period}/${packageName}`);
242
+ if (!response.ok) {
243
+ throw new Error(`HTTP error! status: ${response.status}`);
244
+ }
245
+ const data = (await response.json());
246
+ return data.downloads || 0;
247
+ }
248
+ catch (error) {
249
+ console.warn(`Failed to get download stats for ${packageName}:`, error);
250
+ return 0;
251
+ }
252
+ }
253
+ /**
254
+ * Clear cache
255
+ */
256
+ clearCache() {
257
+ this.cache.clear();
258
+ }
259
+ /**
260
+ * Get item from cache if not expired
261
+ */
262
+ getFromCache(key) {
263
+ const cached = this.cache.get(key);
264
+ if (!cached) {
265
+ return null;
266
+ }
267
+ if (Date.now() - cached.timestamp > this.cacheTimeout) {
268
+ this.cache.delete(key);
269
+ return null;
270
+ }
271
+ return cached.data;
272
+ }
273
+ /**
274
+ * Set item in cache
275
+ */
276
+ setCache(key, data) {
277
+ this.cache.set(key, {
278
+ data,
279
+ timestamp: Date.now(),
280
+ });
281
+ }
282
+ /**
283
+ * Split array into chunks
284
+ */
285
+ chunkArray(array, size) {
286
+ const chunks = [];
287
+ for (let i = 0; i < array.length; i += size) {
288
+ chunks.push(array.slice(i, i + size));
289
+ }
290
+ return chunks;
291
+ }
292
+ /**
293
+ * Normalize author for comparison
294
+ */
295
+ normalizeAuthor(author) {
296
+ if (typeof author === 'string') {
297
+ return author.toLowerCase().trim();
298
+ }
299
+ if (typeof author === 'object' && author?.name) {
300
+ return author.name.toLowerCase().trim();
301
+ }
302
+ return '';
303
+ }
304
+ }
305
+ //# sourceMappingURL=NpmRegistryService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NpmRegistryService.js","sourceRoot":"","sources":["../../../src/infrastructure/external-services/NpmRegistryService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * File System Service
3
+ *
4
+ * Provides abstracted file system operations for the application.
5
+ * Handles reading/writing workspace files, package.json, and pnpm-workspace.yaml.
6
+ */
7
+ import { PackageJsonData } from '../../domain/entities/Package.js';
8
+ import { PnpmWorkspaceData } from '../../domain/value-objects/WorkspaceConfig.js';
9
+ import { WorkspacePath } from '../../domain/value-objects/WorkspacePath.js';
10
+ export declare class FileSystemService {
11
+ /**
12
+ * Check if a file exists
13
+ */
14
+ exists(filePath: string): Promise<boolean>;
15
+ /**
16
+ * Check if a path is a directory
17
+ */
18
+ isDirectory(dirPath: string): Promise<boolean>;
19
+ /**
20
+ * Read a text file
21
+ */
22
+ readTextFile(filePath: string): Promise<string>;
23
+ /**
24
+ * Write a text file
25
+ */
26
+ writeTextFile(filePath: string, content: string): Promise<void>;
27
+ /**
28
+ * Read and parse a JSON file
29
+ */
30
+ readJsonFile<T = any>(filePath: string): Promise<T>;
31
+ /**
32
+ * Write a JSON file
33
+ */
34
+ writeJsonFile(filePath: string, data: any, indent?: number): Promise<void>;
35
+ /**
36
+ * Read and parse a YAML file
37
+ */
38
+ readYamlFile<T = any>(filePath: string): Promise<T>;
39
+ /**
40
+ * Write a YAML file
41
+ */
42
+ writeYamlFile(filePath: string, data: any): Promise<void>;
43
+ /**
44
+ * Write a YAML file while preserving comments and formatting
45
+ */
46
+ writeYamlFilePreservingFormat(filePath: string, data: any): Promise<void>;
47
+ /**
48
+ * Update YAML content while preserving comments and formatting
49
+ */
50
+ private updateYamlPreservingFormat;
51
+ /**
52
+ * Format a YAML section with proper indentation while preserving internal structure
53
+ */
54
+ private formatYamlSection;
55
+ /**
56
+ * Format catalogs section while preserving structure and comments
57
+ */
58
+ private formatCatalogsSection;
59
+ /**
60
+ * Check if a package exists in a catalog section
61
+ */
62
+ private packageExistsInCatalogSection;
63
+ /**
64
+ * Read pnpm-workspace.yaml configuration
65
+ */
66
+ readPnpmWorkspaceConfig(workspacePath: WorkspacePath): Promise<PnpmWorkspaceData>;
67
+ /**
68
+ * Write pnpm-workspace.yaml configuration
69
+ */
70
+ writePnpmWorkspaceConfig(workspacePath: WorkspacePath, config: PnpmWorkspaceData): Promise<void>;
71
+ /**
72
+ * Read package.json file
73
+ */
74
+ readPackageJson(packagePath: WorkspacePath): Promise<PackageJsonData>;
75
+ /**
76
+ * Write package.json file
77
+ */
78
+ writePackageJson(packagePath: WorkspacePath, packageData: PackageJsonData): Promise<void>;
79
+ /**
80
+ * Find package.json files using glob patterns
81
+ */
82
+ findPackageJsonFiles(workspacePath: WorkspacePath, patterns: string[]): Promise<string[]>;
83
+ /**
84
+ * Find directories matching patterns
85
+ */
86
+ findDirectories(workspacePath: WorkspacePath, patterns: string[]): Promise<string[]>;
87
+ /**
88
+ * Check if a directory contains a pnpm workspace
89
+ */
90
+ isPnpmWorkspace(dirPath: string): Promise<boolean>;
91
+ /**
92
+ * Find the nearest pnpm workspace by traversing up the directory tree
93
+ */
94
+ findNearestWorkspace(startPath: string): Promise<string | null>;
95
+ /**
96
+ * Get file modification time
97
+ */
98
+ getModificationTime(filePath: string): Promise<Date>;
99
+ /**
100
+ * Create a backup of a file
101
+ */
102
+ createBackup(filePath: string): Promise<string>;
103
+ /**
104
+ * Restore a file from backup
105
+ */
106
+ restoreFromBackup(originalPath: string, backupPath: string): Promise<void>;
107
+ /**
108
+ * Remove a file
109
+ */
110
+ removeFile(filePath: string): Promise<void>;
111
+ /**
112
+ * List files in a directory
113
+ */
114
+ listFiles(dirPath: string): Promise<string[]>;
115
+ /**
116
+ * List directories in a directory
117
+ */
118
+ listDirectories(dirPath: string): Promise<string[]>;
119
+ }
120
+ //# sourceMappingURL=FileSystemService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileSystemService.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/file-system/FileSystemService.ts"],"names":[],"mappings":"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"}