@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.
- package/LICENSE.md +21 -0
- package/README.md +135 -0
- package/dist/cli/extract-command.d.ts +12 -0
- package/dist/cli/extract-command.d.ts.map +1 -0
- package/dist/cli/extract-command.js +157 -0
- package/dist/cli/extract-command.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +74 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init-command.d.ts +11 -0
- package/dist/cli/init-command.d.ts.map +1 -0
- package/dist/cli/init-command.js +87 -0
- package/dist/cli/init-command.js.map +1 -0
- package/dist/cli/publish-command.d.ts +12 -0
- package/dist/cli/publish-command.d.ts.map +1 -0
- package/dist/cli/publish-command.js +159 -0
- package/dist/cli/publish-command.js.map +1 -0
- package/dist/clients/apim-client.d.ts +110 -0
- package/dist/clients/apim-client.d.ts.map +1 -0
- package/dist/clients/apim-client.js +586 -0
- package/dist/clients/apim-client.js.map +1 -0
- package/dist/clients/artifact-store.d.ts +23 -0
- package/dist/clients/artifact-store.d.ts.map +1 -0
- package/dist/clients/artifact-store.js +188 -0
- package/dist/clients/artifact-store.js.map +1 -0
- package/dist/clients/iapim-client.d.ts +52 -0
- package/dist/clients/iapim-client.d.ts.map +1 -0
- package/dist/clients/iapim-client.js +6 -0
- package/dist/clients/iapim-client.js.map +1 -0
- package/dist/clients/iartifact-store.d.ts +50 -0
- package/dist/clients/iartifact-store.d.ts.map +1 -0
- package/dist/clients/iartifact-store.js +6 -0
- package/dist/clients/iartifact-store.js.map +1 -0
- package/dist/lib/auto-generated.d.ts +27 -0
- package/dist/lib/auto-generated.d.ts.map +1 -0
- package/dist/lib/auto-generated.js +34 -0
- package/dist/lib/auto-generated.js.map +1 -0
- package/dist/lib/cloud-config.d.ts +29 -0
- package/dist/lib/cloud-config.d.ts.map +1 -0
- package/dist/lib/cloud-config.js +60 -0
- package/dist/lib/cloud-config.js.map +1 -0
- package/dist/lib/config-loader.d.ts +21 -0
- package/dist/lib/config-loader.d.ts.map +1 -0
- package/dist/lib/config-loader.js +131 -0
- package/dist/lib/config-loader.js.map +1 -0
- package/dist/lib/dependency-graph.d.ts +43 -0
- package/dist/lib/dependency-graph.d.ts.map +1 -0
- package/dist/lib/dependency-graph.js +163 -0
- package/dist/lib/dependency-graph.js.map +1 -0
- package/dist/lib/exit-codes.d.ts +27 -0
- package/dist/lib/exit-codes.d.ts.map +1 -0
- package/dist/lib/exit-codes.js +33 -0
- package/dist/lib/exit-codes.js.map +1 -0
- package/dist/lib/logger.d.ts +39 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +128 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/parallel-runner.d.ts +38 -0
- package/dist/lib/parallel-runner.d.ts.map +1 -0
- package/dist/lib/parallel-runner.js +70 -0
- package/dist/lib/parallel-runner.js.map +1 -0
- package/dist/lib/resource-path.d.ts +205 -0
- package/dist/lib/resource-path.d.ts.map +1 -0
- package/dist/lib/resource-path.js +401 -0
- package/dist/lib/resource-path.js.map +1 -0
- package/dist/lib/resource-uri.d.ts +40 -0
- package/dist/lib/resource-uri.d.ts.map +1 -0
- package/dist/lib/resource-uri.js +86 -0
- package/dist/lib/resource-uri.js.map +1 -0
- package/dist/lib/user-agent.d.ts +2 -0
- package/dist/lib/user-agent.d.ts.map +1 -0
- package/dist/lib/user-agent.js +5 -0
- package/dist/lib/user-agent.js.map +1 -0
- package/dist/models/config.d.ts +83 -0
- package/dist/models/config.d.ts.map +1 -0
- package/dist/models/config.js +6 -0
- package/dist/models/config.js.map +1 -0
- package/dist/models/resource-types.d.ts +66 -0
- package/dist/models/resource-types.d.ts.map +1 -0
- package/dist/models/resource-types.js +243 -0
- package/dist/models/resource-types.js.map +1 -0
- package/dist/models/types.d.ts +47 -0
- package/dist/models/types.d.ts.map +1 -0
- package/dist/models/types.js +6 -0
- package/dist/models/types.js.map +1 -0
- package/dist/services/api-extractor.d.ts +36 -0
- package/dist/services/api-extractor.d.ts.map +1 -0
- package/dist/services/api-extractor.js +319 -0
- package/dist/services/api-extractor.js.map +1 -0
- package/dist/services/api-publisher.d.ts +18 -0
- package/dist/services/api-publisher.d.ts.map +1 -0
- package/dist/services/api-publisher.js +290 -0
- package/dist/services/api-publisher.js.map +1 -0
- package/dist/services/delete-unmatched-service.d.ts +17 -0
- package/dist/services/delete-unmatched-service.d.ts.map +1 -0
- package/dist/services/delete-unmatched-service.js +143 -0
- package/dist/services/delete-unmatched-service.js.map +1 -0
- package/dist/services/dry-run-reporter.d.ts +30 -0
- package/dist/services/dry-run-reporter.d.ts.map +1 -0
- package/dist/services/dry-run-reporter.js +111 -0
- package/dist/services/dry-run-reporter.js.map +1 -0
- package/dist/services/extract-service.d.ts +47 -0
- package/dist/services/extract-service.d.ts.map +1 -0
- package/dist/services/extract-service.js +374 -0
- package/dist/services/extract-service.js.map +1 -0
- package/dist/services/filter-service.d.ts +29 -0
- package/dist/services/filter-service.d.ts.map +1 -0
- package/dist/services/filter-service.js +143 -0
- package/dist/services/filter-service.js.map +1 -0
- package/dist/services/git-diff-service.d.ts +23 -0
- package/dist/services/git-diff-service.d.ts.map +1 -0
- package/dist/services/git-diff-service.js +135 -0
- package/dist/services/git-diff-service.js.map +1 -0
- package/dist/services/identity-guide-service.d.ts +11 -0
- package/dist/services/identity-guide-service.d.ts.map +1 -0
- package/dist/services/identity-guide-service.js +227 -0
- package/dist/services/identity-guide-service.js.map +1 -0
- package/dist/services/init-service.d.ts +16 -0
- package/dist/services/init-service.d.ts.map +1 -0
- package/dist/services/init-service.js +304 -0
- package/dist/services/init-service.js.map +1 -0
- package/dist/services/keyvault-checker.d.ts +58 -0
- package/dist/services/keyvault-checker.d.ts.map +1 -0
- package/dist/services/keyvault-checker.js +390 -0
- package/dist/services/keyvault-checker.js.map +1 -0
- package/dist/services/override-merger.d.ts +20 -0
- package/dist/services/override-merger.d.ts.map +1 -0
- package/dist/services/override-merger.js +102 -0
- package/dist/services/override-merger.js.map +1 -0
- package/dist/services/product-extractor.d.ts +26 -0
- package/dist/services/product-extractor.d.ts.map +1 -0
- package/dist/services/product-extractor.js +141 -0
- package/dist/services/product-extractor.js.map +1 -0
- package/dist/services/product-publisher.d.ts +15 -0
- package/dist/services/product-publisher.d.ts.map +1 -0
- package/dist/services/product-publisher.js +113 -0
- package/dist/services/product-publisher.js.map +1 -0
- package/dist/services/prompt-service.d.ts +13 -0
- package/dist/services/prompt-service.d.ts.map +1 -0
- package/dist/services/prompt-service.js +69 -0
- package/dist/services/prompt-service.js.map +1 -0
- package/dist/services/publish-service.d.ts +31 -0
- package/dist/services/publish-service.d.ts.map +1 -0
- package/dist/services/publish-service.js +445 -0
- package/dist/services/publish-service.js.map +1 -0
- package/dist/services/resource-extractor.d.ts +52 -0
- package/dist/services/resource-extractor.d.ts.map +1 -0
- package/dist/services/resource-extractor.js +168 -0
- package/dist/services/resource-extractor.js.map +1 -0
- package/dist/services/resource-publisher.d.ts +23 -0
- package/dist/services/resource-publisher.d.ts.map +1 -0
- package/dist/services/resource-publisher.js +349 -0
- package/dist/services/resource-publisher.js.map +1 -0
- package/dist/services/secret-redactor.d.ts +20 -0
- package/dist/services/secret-redactor.d.ts.map +1 -0
- package/dist/services/secret-redactor.js +45 -0
- package/dist/services/secret-redactor.js.map +1 -0
- package/dist/services/transitive-resolver.d.ts +45 -0
- package/dist/services/transitive-resolver.d.ts.map +1 -0
- package/dist/services/transitive-resolver.js +177 -0
- package/dist/services/transitive-resolver.js.map +1 -0
- package/dist/services/workspace-extractor.d.ts +34 -0
- package/dist/services/workspace-extractor.d.ts.map +1 -0
- package/dist/services/workspace-extractor.js +120 -0
- package/dist/services/workspace-extractor.js.map +1 -0
- package/dist/templates/azure-devops/extract-pipeline.d.ts +9 -0
- package/dist/templates/azure-devops/extract-pipeline.d.ts.map +1 -0
- package/dist/templates/azure-devops/extract-pipeline.js +95 -0
- package/dist/templates/azure-devops/extract-pipeline.js.map +1 -0
- package/dist/templates/azure-devops/publish-pipeline.d.ts +10 -0
- package/dist/templates/azure-devops/publish-pipeline.d.ts.map +1 -0
- package/dist/templates/azure-devops/publish-pipeline.js +100 -0
- package/dist/templates/azure-devops/publish-pipeline.js.map +1 -0
- package/dist/templates/configs/filter-config.d.ts +6 -0
- package/dist/templates/configs/filter-config.d.ts.map +1 -0
- package/dist/templates/configs/filter-config.js +51 -0
- package/dist/templates/configs/filter-config.js.map +1 -0
- package/dist/templates/configs/override-config.d.ts +6 -0
- package/dist/templates/configs/override-config.d.ts.map +1 -0
- package/dist/templates/configs/override-config.js +45 -0
- package/dist/templates/configs/override-config.js.map +1 -0
- package/dist/templates/configs/package-json.d.ts +10 -0
- package/dist/templates/configs/package-json.d.ts.map +1 -0
- package/dist/templates/configs/package-json.js +19 -0
- package/dist/templates/configs/package-json.js.map +1 -0
- package/dist/templates/copilot/identity-setup-prompt.d.ts +13 -0
- package/dist/templates/copilot/identity-setup-prompt.d.ts.map +1 -0
- package/dist/templates/copilot/identity-setup-prompt.js +279 -0
- package/dist/templates/copilot/identity-setup-prompt.js.map +1 -0
- package/dist/templates/github-actions/extract-workflow.d.ts +9 -0
- package/dist/templates/github-actions/extract-workflow.d.ts.map +1 -0
- package/dist/templates/github-actions/extract-workflow.js +126 -0
- package/dist/templates/github-actions/extract-workflow.js.map +1 -0
- package/dist/templates/github-actions/publish-workflow.d.ts +10 -0
- package/dist/templates/github-actions/publish-workflow.d.ts.map +1 -0
- package/dist/templates/github-actions/publish-workflow.js +105 -0
- package/dist/templates/github-actions/publish-workflow.js.map +1 -0
- 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":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,gBAAgB,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS;IACvC,QAAQ,EAAE,iBAAiB;IAC3B,WAAW,EAAE,oBAAoB;IACjC,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,6BAA6B;CAC1C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAmB,EACnB,KAAqB,EACrB,OAA2B,EAC3B,MAAqB;IAErB,0CAA0C;IAC1C,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAyB,EAAE,CAAC;IAEnD,oDAAoD;IACpD,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;IAEjD,qDAAqD;IACrD,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAElE,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAEnE,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,SAAS;gBACX,CAAC;gBAED,wBAAwB;gBACxB,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjC,SAAS;gBACX,CAAC;gBAED,8CAA8C;gBAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,yEAAyE;oBACzE,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4FAA4F;YAC5F,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,WAAiC;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,UAA8B;IACpD,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,QAAiC,EACjC,YAA0B;IAE1B,6BAA6B;IAC7B,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,MAAM,UAAU,GAAuB;QACrC,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,CAAC,IAAI,CAAC;KAClB,CAAC;IAEF,gEAAgE;IAChE,mDAAmD;IACnD,mEAAmE;IAEnE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,QAAiC;IAC5D,uCAAuC;IACvC,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,kDAAkD;IAClD,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,UAA8B;IACtD,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAEzE,wBAAwB;IACxB,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3C,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IACE,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO;QACxC,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,GAAG,EACpC,CAAC;QACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -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"}
|