@peterhauge/apiops-cli 0.1.3-alpha.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 (199) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +135 -0
  3. package/dist/cli/extract-command.d.ts +12 -0
  4. package/dist/cli/extract-command.d.ts.map +1 -0
  5. package/dist/cli/extract-command.js +157 -0
  6. package/dist/cli/extract-command.js.map +1 -0
  7. package/dist/cli/index.d.ts +7 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +74 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/init-command.d.ts +11 -0
  12. package/dist/cli/init-command.d.ts.map +1 -0
  13. package/dist/cli/init-command.js +87 -0
  14. package/dist/cli/init-command.js.map +1 -0
  15. package/dist/cli/publish-command.d.ts +12 -0
  16. package/dist/cli/publish-command.d.ts.map +1 -0
  17. package/dist/cli/publish-command.js +159 -0
  18. package/dist/cli/publish-command.js.map +1 -0
  19. package/dist/clients/apim-client.d.ts +110 -0
  20. package/dist/clients/apim-client.d.ts.map +1 -0
  21. package/dist/clients/apim-client.js +586 -0
  22. package/dist/clients/apim-client.js.map +1 -0
  23. package/dist/clients/artifact-store.d.ts +23 -0
  24. package/dist/clients/artifact-store.d.ts.map +1 -0
  25. package/dist/clients/artifact-store.js +188 -0
  26. package/dist/clients/artifact-store.js.map +1 -0
  27. package/dist/clients/iapim-client.d.ts +52 -0
  28. package/dist/clients/iapim-client.d.ts.map +1 -0
  29. package/dist/clients/iapim-client.js +6 -0
  30. package/dist/clients/iapim-client.js.map +1 -0
  31. package/dist/clients/iartifact-store.d.ts +50 -0
  32. package/dist/clients/iartifact-store.d.ts.map +1 -0
  33. package/dist/clients/iartifact-store.js +6 -0
  34. package/dist/clients/iartifact-store.js.map +1 -0
  35. package/dist/lib/auto-generated.d.ts +27 -0
  36. package/dist/lib/auto-generated.d.ts.map +1 -0
  37. package/dist/lib/auto-generated.js +34 -0
  38. package/dist/lib/auto-generated.js.map +1 -0
  39. package/dist/lib/cloud-config.d.ts +29 -0
  40. package/dist/lib/cloud-config.d.ts.map +1 -0
  41. package/dist/lib/cloud-config.js +60 -0
  42. package/dist/lib/cloud-config.js.map +1 -0
  43. package/dist/lib/config-loader.d.ts +21 -0
  44. package/dist/lib/config-loader.d.ts.map +1 -0
  45. package/dist/lib/config-loader.js +131 -0
  46. package/dist/lib/config-loader.js.map +1 -0
  47. package/dist/lib/dependency-graph.d.ts +43 -0
  48. package/dist/lib/dependency-graph.d.ts.map +1 -0
  49. package/dist/lib/dependency-graph.js +163 -0
  50. package/dist/lib/dependency-graph.js.map +1 -0
  51. package/dist/lib/exit-codes.d.ts +27 -0
  52. package/dist/lib/exit-codes.d.ts.map +1 -0
  53. package/dist/lib/exit-codes.js +33 -0
  54. package/dist/lib/exit-codes.js.map +1 -0
  55. package/dist/lib/logger.d.ts +39 -0
  56. package/dist/lib/logger.d.ts.map +1 -0
  57. package/dist/lib/logger.js +128 -0
  58. package/dist/lib/logger.js.map +1 -0
  59. package/dist/lib/parallel-runner.d.ts +38 -0
  60. package/dist/lib/parallel-runner.d.ts.map +1 -0
  61. package/dist/lib/parallel-runner.js +70 -0
  62. package/dist/lib/parallel-runner.js.map +1 -0
  63. package/dist/lib/resource-path.d.ts +205 -0
  64. package/dist/lib/resource-path.d.ts.map +1 -0
  65. package/dist/lib/resource-path.js +401 -0
  66. package/dist/lib/resource-path.js.map +1 -0
  67. package/dist/lib/resource-uri.d.ts +40 -0
  68. package/dist/lib/resource-uri.d.ts.map +1 -0
  69. package/dist/lib/resource-uri.js +86 -0
  70. package/dist/lib/resource-uri.js.map +1 -0
  71. package/dist/lib/user-agent.d.ts +2 -0
  72. package/dist/lib/user-agent.d.ts.map +1 -0
  73. package/dist/lib/user-agent.js +5 -0
  74. package/dist/lib/user-agent.js.map +1 -0
  75. package/dist/models/config.d.ts +83 -0
  76. package/dist/models/config.d.ts.map +1 -0
  77. package/dist/models/config.js +6 -0
  78. package/dist/models/config.js.map +1 -0
  79. package/dist/models/resource-types.d.ts +66 -0
  80. package/dist/models/resource-types.d.ts.map +1 -0
  81. package/dist/models/resource-types.js +243 -0
  82. package/dist/models/resource-types.js.map +1 -0
  83. package/dist/models/types.d.ts +47 -0
  84. package/dist/models/types.d.ts.map +1 -0
  85. package/dist/models/types.js +6 -0
  86. package/dist/models/types.js.map +1 -0
  87. package/dist/services/api-extractor.d.ts +36 -0
  88. package/dist/services/api-extractor.d.ts.map +1 -0
  89. package/dist/services/api-extractor.js +319 -0
  90. package/dist/services/api-extractor.js.map +1 -0
  91. package/dist/services/api-publisher.d.ts +18 -0
  92. package/dist/services/api-publisher.d.ts.map +1 -0
  93. package/dist/services/api-publisher.js +290 -0
  94. package/dist/services/api-publisher.js.map +1 -0
  95. package/dist/services/delete-unmatched-service.d.ts +17 -0
  96. package/dist/services/delete-unmatched-service.d.ts.map +1 -0
  97. package/dist/services/delete-unmatched-service.js +143 -0
  98. package/dist/services/delete-unmatched-service.js.map +1 -0
  99. package/dist/services/dry-run-reporter.d.ts +30 -0
  100. package/dist/services/dry-run-reporter.d.ts.map +1 -0
  101. package/dist/services/dry-run-reporter.js +111 -0
  102. package/dist/services/dry-run-reporter.js.map +1 -0
  103. package/dist/services/extract-service.d.ts +47 -0
  104. package/dist/services/extract-service.d.ts.map +1 -0
  105. package/dist/services/extract-service.js +374 -0
  106. package/dist/services/extract-service.js.map +1 -0
  107. package/dist/services/filter-service.d.ts +29 -0
  108. package/dist/services/filter-service.d.ts.map +1 -0
  109. package/dist/services/filter-service.js +143 -0
  110. package/dist/services/filter-service.js.map +1 -0
  111. package/dist/services/git-diff-service.d.ts +23 -0
  112. package/dist/services/git-diff-service.d.ts.map +1 -0
  113. package/dist/services/git-diff-service.js +135 -0
  114. package/dist/services/git-diff-service.js.map +1 -0
  115. package/dist/services/identity-guide-service.d.ts +11 -0
  116. package/dist/services/identity-guide-service.d.ts.map +1 -0
  117. package/dist/services/identity-guide-service.js +227 -0
  118. package/dist/services/identity-guide-service.js.map +1 -0
  119. package/dist/services/init-service.d.ts +16 -0
  120. package/dist/services/init-service.d.ts.map +1 -0
  121. package/dist/services/init-service.js +304 -0
  122. package/dist/services/init-service.js.map +1 -0
  123. package/dist/services/keyvault-checker.d.ts +58 -0
  124. package/dist/services/keyvault-checker.d.ts.map +1 -0
  125. package/dist/services/keyvault-checker.js +390 -0
  126. package/dist/services/keyvault-checker.js.map +1 -0
  127. package/dist/services/override-merger.d.ts +20 -0
  128. package/dist/services/override-merger.d.ts.map +1 -0
  129. package/dist/services/override-merger.js +102 -0
  130. package/dist/services/override-merger.js.map +1 -0
  131. package/dist/services/product-extractor.d.ts +26 -0
  132. package/dist/services/product-extractor.d.ts.map +1 -0
  133. package/dist/services/product-extractor.js +141 -0
  134. package/dist/services/product-extractor.js.map +1 -0
  135. package/dist/services/product-publisher.d.ts +15 -0
  136. package/dist/services/product-publisher.d.ts.map +1 -0
  137. package/dist/services/product-publisher.js +113 -0
  138. package/dist/services/product-publisher.js.map +1 -0
  139. package/dist/services/prompt-service.d.ts +13 -0
  140. package/dist/services/prompt-service.d.ts.map +1 -0
  141. package/dist/services/prompt-service.js +69 -0
  142. package/dist/services/prompt-service.js.map +1 -0
  143. package/dist/services/publish-service.d.ts +31 -0
  144. package/dist/services/publish-service.d.ts.map +1 -0
  145. package/dist/services/publish-service.js +445 -0
  146. package/dist/services/publish-service.js.map +1 -0
  147. package/dist/services/resource-extractor.d.ts +52 -0
  148. package/dist/services/resource-extractor.d.ts.map +1 -0
  149. package/dist/services/resource-extractor.js +168 -0
  150. package/dist/services/resource-extractor.js.map +1 -0
  151. package/dist/services/resource-publisher.d.ts +23 -0
  152. package/dist/services/resource-publisher.d.ts.map +1 -0
  153. package/dist/services/resource-publisher.js +349 -0
  154. package/dist/services/resource-publisher.js.map +1 -0
  155. package/dist/services/secret-redactor.d.ts +20 -0
  156. package/dist/services/secret-redactor.d.ts.map +1 -0
  157. package/dist/services/secret-redactor.js +45 -0
  158. package/dist/services/secret-redactor.js.map +1 -0
  159. package/dist/services/transitive-resolver.d.ts +45 -0
  160. package/dist/services/transitive-resolver.d.ts.map +1 -0
  161. package/dist/services/transitive-resolver.js +177 -0
  162. package/dist/services/transitive-resolver.js.map +1 -0
  163. package/dist/services/workspace-extractor.d.ts +34 -0
  164. package/dist/services/workspace-extractor.d.ts.map +1 -0
  165. package/dist/services/workspace-extractor.js +120 -0
  166. package/dist/services/workspace-extractor.js.map +1 -0
  167. package/dist/templates/azure-devops/extract-pipeline.d.ts +9 -0
  168. package/dist/templates/azure-devops/extract-pipeline.d.ts.map +1 -0
  169. package/dist/templates/azure-devops/extract-pipeline.js +95 -0
  170. package/dist/templates/azure-devops/extract-pipeline.js.map +1 -0
  171. package/dist/templates/azure-devops/publish-pipeline.d.ts +10 -0
  172. package/dist/templates/azure-devops/publish-pipeline.d.ts.map +1 -0
  173. package/dist/templates/azure-devops/publish-pipeline.js +100 -0
  174. package/dist/templates/azure-devops/publish-pipeline.js.map +1 -0
  175. package/dist/templates/configs/filter-config.d.ts +6 -0
  176. package/dist/templates/configs/filter-config.d.ts.map +1 -0
  177. package/dist/templates/configs/filter-config.js +51 -0
  178. package/dist/templates/configs/filter-config.js.map +1 -0
  179. package/dist/templates/configs/override-config.d.ts +6 -0
  180. package/dist/templates/configs/override-config.d.ts.map +1 -0
  181. package/dist/templates/configs/override-config.js +45 -0
  182. package/dist/templates/configs/override-config.js.map +1 -0
  183. package/dist/templates/configs/package-json.d.ts +10 -0
  184. package/dist/templates/configs/package-json.d.ts.map +1 -0
  185. package/dist/templates/configs/package-json.js +19 -0
  186. package/dist/templates/configs/package-json.js.map +1 -0
  187. package/dist/templates/copilot/identity-setup-prompt.d.ts +13 -0
  188. package/dist/templates/copilot/identity-setup-prompt.d.ts.map +1 -0
  189. package/dist/templates/copilot/identity-setup-prompt.js +279 -0
  190. package/dist/templates/copilot/identity-setup-prompt.js.map +1 -0
  191. package/dist/templates/github-actions/extract-workflow.d.ts +9 -0
  192. package/dist/templates/github-actions/extract-workflow.d.ts.map +1 -0
  193. package/dist/templates/github-actions/extract-workflow.js +126 -0
  194. package/dist/templates/github-actions/extract-workflow.js.map +1 -0
  195. package/dist/templates/github-actions/publish-workflow.d.ts +10 -0
  196. package/dist/templates/github-actions/publish-workflow.d.ts.map +1 -0
  197. package/dist/templates/github-actions/publish-workflow.js +105 -0
  198. package/dist/templates/github-actions/publish-workflow.js.map +1 -0
  199. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-publisher.js","sourceRoot":"","sources":["../../src/services/api-publisher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAA8B,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,MAAM,eAAe,GAAmB;IACtC,YAAY,CAAC,SAAS;IACtB,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,aAAa;IAC1B,YAAY,CAAC,YAAY;IACzB,YAAY,CAAC,kBAAkB;IAC/B,YAAY,CAAC,SAAS;IACtB,YAAY,CAAC,UAAU;IACvB,YAAY,CAAC,iBAAiB;IAC9B,YAAY,CAAC,OAAO;IACpB,YAAY,CAAC,eAAe;IAC5B,YAAY,CAAC,qBAAqB;CACnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAmB,EACnB,KAAqB,EACrB,OAA2B,EAC3B,UAA8B,EAC9B,MAAqB;IAErB,IAAI,CAAC;QACH,2DAA2D;QAC3D,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACpF,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,sDAAsD;QACtD,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEtE,8CAA8C;QAC9C,4EAA4E;QAC5E,MAAM,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;QAE9F,OAAO;YACL,UAAU;YACV,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,UAAU;YACV,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,UAAkB,EAAE,QAAiB;IAC5D,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,gEAAgE;YAChE,yEAAyE;YACzE,OAAO,cAAc,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,kEAAkE;YAClE,gEAAgE;YAChE,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAOD;;;;;GAKG;AACH,KAAK,UAAU,cAAc,CAC3B,MAAmB,EACnB,KAAqB,EACrB,OAA2B,EAC3B,UAA8B,EAC9B,MAAqB;IAErB,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,UAAU;YACV,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM;YACd,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAE1D,kDAAkD;IAClD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAC1F,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,UAAiD,CAAC;QAC1E,MAAM,OAAO,GAAG,UAAU,EAAE,IAA0B,CAAC;QACvD,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,IAAI,YAAY,EAAE,CAAC;YACjB,+DAA+D;YAC/D,+DAA+D;YAC/D,MAAM,UAAU,GAA4B,EAAE,CAAC;YAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC1D,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjB,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,gEAAgE;YAChE,oEAAoE;YACpE,6FAA6F;YAC7F,IAAI,OAAO,EAAE,CAAC;gBACZ,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;YAC/B,CAAC;YAED,uDAAuD;YACvD,IAAI,GAAG;gBACL,GAAG,IAAI;gBACP,UAAU,EAAE;oBACV,GAAG,UAAU;oBACb,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,UAAU,CAAC,OAAO;iBAC1B;aACF,CAAC;YACF,YAAY,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,MAAM,qCAAqC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1H,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAEpD,OAAO;QACL,UAAU;QACV,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;QACb,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAmB,EACnB,KAAqB,EACrB,OAA2B,EAC3B,aAAiC,EACjC,MAAqB;IAErB,gCAAgC;IAChC,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEnE,yCAAyC;IACzC,MAAM,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,GAAG;QAC3B,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAC5F,CAAC;IAEF,oCAAoC;IACpC,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,iCAAiC;IACjC,KAAK,MAAM,aAAa,IAAI,eAAe,EAAE,CAAC;QAC5C,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAe;IACrD,YAAY,CAAC,YAAY;IACzB,YAAY,CAAC,SAAS;CACvB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,KAAK,UAAU,kBAAkB,CAC/B,MAAmB,EACnB,KAAqB,EACrB,OAA2B,EAC3B,aAAiC,EACjC,MAAqB,EACrB,eAAwB,KAAK;IAE7B,gCAAgC;IAChC,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEnE,sCAAsC;IACtC,IAAI,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CACJ,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAChC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,YAAY,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;IAEF,+EAA+E;IAC/E,8EAA8E;IAC9E,wEAAwE;IACxE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAChD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,YAAY;YACpC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAC1E,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,8BAA8B,CACvD,KAAK,EACL,MAAM,CAAC,SAAS,EAChB,oBAAoB,CACrB,CAAC;QAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CACV,iBAAiB,YAAY,CAAC,MAAM,+DAA+D,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAC9I,CAAC;YACF,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;QAC5D,CAAC;QAED,gEAAgE;QAChE,kFAAkF;QAClF,4EAA4E;QAC5E,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS;YACjC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;YACvE,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAClD,CAAC;QAEF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CACV,iBAAiB,eAAe,CAAC,MAAM,8CAA8C,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAChI,CAAC;YACF,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,eAAe,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,yFAAyF;IACzF,2DAA2D;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,iDAAiD;IACjD,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAC3B,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,EAAE,CACnB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAC9D,CAAC;YACF,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,8BAA8B,CAC3C,KAAqB,EACrB,SAAiB,EACjB,oBAA0C;IAE1C,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,IAA6B;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAiD,CAAC;IACrE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,oBAAoB,GAAc,EAAE,CAAC;IAE3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAA8C,CAAC;IACrE,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;QAC7B,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAkC,CAAC;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,QAAmC,CAAC;YAC9C,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;gBACtB,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,GAA8B,CAAC;YACzC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * T035: Delete unmatched resources service
3
+ * List current APIM resources, diff against artifact descriptors,
4
+ * generate DELETE actions in reverse dependency order.
5
+ * Requires --delete-unmatched flag per FR-017.
6
+ */
7
+ import type { IApimClient } from '../clients/iapim-client.js';
8
+ import type { IArtifactStore } from '../clients/iartifact-store.js';
9
+ import type { ApimServiceContext, ResourceDescriptor } from '../models/types.js';
10
+ import type { PublishConfig } from '../models/config.js';
11
+ /**
12
+ * List APIM resources not in local artifacts.
13
+ * Returns descriptors to DELETE in reverse dependency order.
14
+ * Used when --delete-unmatched flag is set.
15
+ */
16
+ export declare function computeDeleteActions(client: IApimClient, store: IArtifactStore, context: ApimServiceContext, config: PublishConfig): Promise<ResourceDescriptor[]>;
17
+ //# sourceMappingURL=delete-unmatched-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-unmatched-service.d.ts","sourceRoot":"","sources":["../../src/services/delete-unmatched-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoBzD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA2C/B"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * T035: Delete unmatched resources service
3
+ * List current APIM resources, diff against artifact descriptors,
4
+ * generate DELETE actions in reverse dependency order.
5
+ * Requires --delete-unmatched flag per FR-017.
6
+ */
7
+ import { ResourceType } from '../models/resource-types.js';
8
+ import { getTopologicalOrder } from '../lib/dependency-graph.js';
9
+ import { getNameFromNameParts } from '../lib/resource-path.js';
10
+ /**
11
+ * Built-in groups that should never be deleted
12
+ */
13
+ const BUILT_IN_GROUPS = ['administrators', 'developers', 'guests'];
14
+ /**
15
+ * System resources that should never be deleted
16
+ */
17
+ const SYSTEM_RESOURCES = new Set([
18
+ 'master', // Master product
19
+ 'unlimited', // Unlimited product
20
+ 'starter', // Starter product
21
+ 'echo-api', // Echo API (system test API)
22
+ ]);
23
+ /**
24
+ * List APIM resources not in local artifacts.
25
+ * Returns descriptors to DELETE in reverse dependency order.
26
+ * Used when --delete-unmatched flag is set.
27
+ */
28
+ export async function computeDeleteActions(client, store, context, config) {
29
+ // List all resources from local artifacts
30
+ const localDescriptors = await store.listResources(config.sourceDir);
31
+ const localSet = createResourceSet(localDescriptors);
32
+ const deleteDescriptors = [];
33
+ // Get topological order and reverse it for deletion
34
+ const orderedTypes = getTopologicalOrder();
35
+ const reverseOrder = [...orderedTypes].reverse();
36
+ // For each resource type in reverse dependency order
37
+ for (const resourceType of reverseOrder) {
38
+ try {
39
+ // List all resources of this type in APIM
40
+ const apimResources = client.listResources(context, resourceType);
41
+ for await (const resource of apimResources) {
42
+ const descriptor = parseResourceDescriptor(resource, resourceType);
43
+ if (!descriptor) {
44
+ continue;
45
+ }
46
+ // Skip system resources
47
+ if (isSystemResource(descriptor)) {
48
+ continue;
49
+ }
50
+ // Check if resource exists in local artifacts
51
+ const resourceKey = getResourceKey(descriptor);
52
+ if (!localSet.has(resourceKey)) {
53
+ // Resource exists in APIM but not in local artifacts - mark for deletion
54
+ deleteDescriptors.push(descriptor);
55
+ }
56
+ }
57
+ }
58
+ catch {
59
+ // Ignore errors listing resources (e.g., resource type not supported in this APIM instance)
60
+ continue;
61
+ }
62
+ }
63
+ return deleteDescriptors;
64
+ }
65
+ /**
66
+ * Create a set of resource keys from descriptors for fast lookup
67
+ */
68
+ function createResourceSet(descriptors) {
69
+ const set = new Set();
70
+ for (const descriptor of descriptors) {
71
+ set.add(getResourceKey(descriptor));
72
+ }
73
+ return set;
74
+ }
75
+ /**
76
+ * Get unique key for a resource descriptor
77
+ */
78
+ function getResourceKey(descriptor) {
79
+ return [descriptor.type, ...descriptor.nameParts, descriptor.workspace ?? ''].join('::');
80
+ }
81
+ /**
82
+ * Parse resource descriptor from APIM resource JSON
83
+ */
84
+ function parseResourceDescriptor(resource, resourceType) {
85
+ // Extract name from resource
86
+ const name = extractResourceName(resource);
87
+ if (!name) {
88
+ return null;
89
+ }
90
+ // Build descriptor based on resource type
91
+ const descriptor = {
92
+ type: resourceType,
93
+ nameParts: [name],
94
+ };
95
+ // Extract parent/grandparent from resource properties if needed
96
+ // This depends on the resource structure from APIM
97
+ // For now, we'll use a simple heuristic based on the resource type
98
+ return descriptor;
99
+ }
100
+ /**
101
+ * Extract resource name from APIM resource JSON
102
+ */
103
+ function extractResourceName(resource) {
104
+ // Try to get name from 'name' property
105
+ if (typeof resource.name === 'string') {
106
+ return resource.name;
107
+ }
108
+ // Try to get from 'id' property (ARM resource ID)
109
+ if (typeof resource.id === 'string') {
110
+ const parts = resource.id.split('/');
111
+ return parts[parts.length - 1] || null;
112
+ }
113
+ return null;
114
+ }
115
+ /**
116
+ * Check if a resource is a system resource that should not be deleted
117
+ */
118
+ function isSystemResource(descriptor) {
119
+ if (descriptor.nameParts.length === 0)
120
+ return false;
121
+ const ownName = getNameFromNameParts(descriptor.nameParts).toLowerCase();
122
+ // Check built-in groups
123
+ if (descriptor.type === ResourceType.Group) {
124
+ if (BUILT_IN_GROUPS.includes(ownName)) {
125
+ return true;
126
+ }
127
+ }
128
+ // Check system products and APIs
129
+ if (descriptor.type === ResourceType.Product ||
130
+ descriptor.type === ResourceType.Api) {
131
+ if (SYSTEM_RESOURCES.has(ownName)) {
132
+ return true;
133
+ }
134
+ }
135
+ // Check if group name starts with built-in prefix
136
+ if (descriptor.type === ResourceType.Group) {
137
+ if (ownName.startsWith('built-in')) {
138
+ return true;
139
+ }
140
+ }
141
+ return false;
142
+ }
143
+ //# sourceMappingURL=delete-unmatched-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-unmatched-service.js","sourceRoot":"","sources":["../../src/services/delete-unmatched-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * T034: Dry-run reporter
3
+ * Compare artifact resources vs APIM state, output [DRY RUN] PUT/DELETE/SKIP lines.
4
+ * Summary counts per contracts/cli-commands.md.
5
+ */
6
+ import type { IApimClient } from '../clients/iapim-client.js';
7
+ import type { IArtifactStore } from '../clients/iartifact-store.js';
8
+ import type { ApimServiceContext, ResourceDescriptor } from '../models/types.js';
9
+ import type { PublishConfig } from '../models/config.js';
10
+ export interface DryRunAction {
11
+ operation: 'PUT' | 'DELETE' | 'SKIP';
12
+ type: string;
13
+ name: string;
14
+ descriptor: ResourceDescriptor;
15
+ }
16
+ export interface DryRunReport {
17
+ actions: DryRunAction[];
18
+ summary: {
19
+ creates: number;
20
+ deletes: number;
21
+ skips: number;
22
+ };
23
+ }
24
+ /**
25
+ * Generate a dry-run report without making any changes.
26
+ * Compares artifact resources vs APIM state.
27
+ * Outputs [DRY RUN] lines per contracts/cli-commands.md format.
28
+ */
29
+ export declare function generateDryRunReport(store: IArtifactStore, client: IApimClient, context: ApimServiceContext, config: PublishConfig, targetDescriptors: ResourceDescriptor[]): Promise<DryRunReport>;
30
+ //# sourceMappingURL=dry-run-reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run-reporter.d.ts","sourceRoot":"","sources":["../../src/services/dry-run-reporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,kBAAkB,EAAE,GACtC,OAAO,CAAC,YAAY,CAAC,CAmFvB"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * T034: Dry-run reporter
3
+ * Compare artifact resources vs APIM state, output [DRY RUN] PUT/DELETE/SKIP lines.
4
+ * Summary counts per contracts/cli-commands.md.
5
+ */
6
+ import { getTopologicalOrder } from '../lib/dependency-graph.js';
7
+ import { buildResourceLabel } from '../lib/resource-uri.js';
8
+ import { logger } from '../lib/logger.js';
9
+ import { computeDeleteActions } from './delete-unmatched-service.js';
10
+ /**
11
+ * Generate a dry-run report without making any changes.
12
+ * Compares artifact resources vs APIM state.
13
+ * Outputs [DRY RUN] lines per contracts/cli-commands.md format.
14
+ */
15
+ export async function generateDryRunReport(store, client, context, config, targetDescriptors) {
16
+ const actions = [];
17
+ let creates = 0;
18
+ let deletes = 0;
19
+ let skips = 0;
20
+ // Process in topological order
21
+ const orderedTypes = getTopologicalOrder();
22
+ const descriptorsByType = groupDescriptorsByType(targetDescriptors);
23
+ for (const resourceType of orderedTypes) {
24
+ const descriptors = descriptorsByType.get(resourceType) || [];
25
+ for (const descriptor of descriptors) {
26
+ try {
27
+ // Check if resource exists in APIM
28
+ const existsInApim = await client.getResource(context, descriptor);
29
+ if (existsInApim) {
30
+ // Resource exists - would be updated
31
+ const action = {
32
+ operation: 'PUT',
33
+ type: descriptor.type,
34
+ name: formatResourceName(descriptor),
35
+ descriptor,
36
+ };
37
+ actions.push(action);
38
+ creates++;
39
+ logger.info(`[DRY RUN] PUT ${buildResourceLabel(descriptor)}`);
40
+ }
41
+ else {
42
+ // Resource doesn't exist - would be created
43
+ const action = {
44
+ operation: 'PUT',
45
+ type: descriptor.type,
46
+ name: formatResourceName(descriptor),
47
+ descriptor,
48
+ };
49
+ actions.push(action);
50
+ creates++;
51
+ logger.info(`[DRY RUN] PUT ${buildResourceLabel(descriptor)} (new)`);
52
+ }
53
+ }
54
+ catch {
55
+ // Error checking - skip
56
+ const action = {
57
+ operation: 'SKIP',
58
+ type: descriptor.type,
59
+ name: formatResourceName(descriptor),
60
+ descriptor,
61
+ };
62
+ actions.push(action);
63
+ skips++;
64
+ logger.info(`[DRY RUN] SKIP ${buildResourceLabel(descriptor)} (error)`);
65
+ }
66
+ }
67
+ }
68
+ // If delete-unmatched is enabled, calculate deletes
69
+ if (config.deleteUnmatched) {
70
+ const deleteActions = await computeDeleteActionsForDryRun(client, store, context, config, targetDescriptors);
71
+ for (const descriptor of deleteActions) {
72
+ const action = {
73
+ operation: 'DELETE',
74
+ type: descriptor.type,
75
+ name: formatResourceName(descriptor),
76
+ descriptor,
77
+ };
78
+ actions.push(action);
79
+ deletes++;
80
+ logger.info(`[DRY RUN] DELETE ${buildResourceLabel(descriptor)}`);
81
+ }
82
+ }
83
+ const summary = { creates, deletes, skips };
84
+ logger.info(`[DRY RUN] Summary: ${creates} creates/updates, ${deletes} deletes, ${skips} skips`);
85
+ return { actions, summary };
86
+ }
87
+ /**
88
+ * Group descriptors by resource type
89
+ */
90
+ function groupDescriptorsByType(descriptors) {
91
+ const map = new Map();
92
+ for (const descriptor of descriptors) {
93
+ const existing = map.get(descriptor.type) || [];
94
+ existing.push(descriptor);
95
+ map.set(descriptor.type, existing);
96
+ }
97
+ return map;
98
+ }
99
+ /**
100
+ * Format resource name for display
101
+ */
102
+ function formatResourceName(descriptor) {
103
+ return descriptor.nameParts.join('/');
104
+ }
105
+ /**
106
+ * Compute delete actions for dry-run by delegating to delete-unmatched-service.
107
+ */
108
+ async function computeDeleteActionsForDryRun(client, store, context, config, _targetDescriptors) {
109
+ return computeDeleteActions(client, store, context, config);
110
+ }
111
+ //# sourceMappingURL=dry-run-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run-reporter.js","sourceRoot":"","sources":["../../src/services/dry-run-reporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * T020: Extraction orchestrator
3
+ * Coordinates resource type extraction across dependency tiers
4
+ * using dependency-graph.ts and parallel-runner.ts.
5
+ * Per-resource status output per FR-023.
6
+ */
7
+ import { IApimClient } from '../clients/iapim-client.js';
8
+ import { IArtifactStore } from '../clients/iartifact-store.js';
9
+ import { ExtractConfig } from '../models/config.js';
10
+ import { ResourceDescriptor } from '../models/types.js';
11
+ import { TypeExtractionResult } from './resource-extractor.js';
12
+ import { ApiExtractionResult } from './api-extractor.js';
13
+ import { ProductExtractionResult } from './product-extractor.js';
14
+ import { WorkspaceExtractionResult } from './workspace-extractor.js';
15
+ /**
16
+ * Overall extraction result.
17
+ */
18
+ export interface ExtractionResult {
19
+ /** Total resources extracted */
20
+ totalExtracted: number;
21
+ /** Total errors encountered */
22
+ totalErrors: number;
23
+ /** Per-type results */
24
+ typeResults: TypeExtractionResult[];
25
+ /** API-specific results */
26
+ apiResults: ApiExtractionResult[];
27
+ /** Product-specific results */
28
+ productResults: ProductExtractionResult[];
29
+ /** Workspace results */
30
+ workspaceResults: WorkspaceExtractionResult[];
31
+ /** All extracted resource descriptors */
32
+ extractedDescriptors: ResourceDescriptor[];
33
+ /** All policy content collected (for transitive resolution) */
34
+ collectedPolicies: Map<string, string>;
35
+ /** Exit code: 0=success, 1=partial failure, 2=fatal error */
36
+ exitCode: number;
37
+ }
38
+ /**
39
+ * Run the full extraction orchestration.
40
+ *
41
+ * Extraction proceeds in dependency tiers (1-4), with resources within
42
+ * each tier extracted in parallel. After tier 2, API-specific and
43
+ * product-specific sub-extractions run. Transitive dependency resolution
44
+ * happens after all tiers complete if enabled.
45
+ */
46
+ export declare function runExtraction(client: IApimClient, store: IArtifactStore, config: ExtractConfig): Promise<ExtractionResult>;
47
+ //# sourceMappingURL=extract-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-service.d.ts","sourceRoot":"","sources":["../../src/services/extract-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAsB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ5E,OAAO,EAEL,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAuB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAA2B,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAqB,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAYxF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,2BAA2B;IAC3B,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,+BAA+B;IAC/B,cAAc,EAAE,uBAAuB,EAAE,CAAC;IAC1C,wBAAwB;IACxB,gBAAgB,EAAE,yBAAyB,EAAE,CAAC;IAC9C,yCAAyC;IACzC,oBAAoB,EAAE,kBAAkB,EAAE,CAAC;IAC3C,+DAA+D;IAC/D,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,gBAAgB,CAAC,CA6E3B"}