@salesforce/plugin-devops-center 1.4.0 → 1.4.1

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 (149) hide show
  1. package/README.md +592 -55
  2. package/lib/commands/devops/pipeline/{activate.d.ts → get.d.ts} +3 -3
  3. package/lib/commands/devops/pipeline/get.js +81 -0
  4. package/lib/commands/devops/pipeline/get.js.map +1 -0
  5. package/lib/commands/devops/pipeline/list.d.ts +13 -0
  6. package/lib/commands/devops/pipeline/list.js +58 -0
  7. package/lib/commands/devops/pipeline/list.js.map +1 -0
  8. package/lib/commands/devops/pipeline/project/delete.d.ts +15 -0
  9. package/lib/commands/devops/pipeline/project/delete.js +71 -0
  10. package/lib/commands/devops/pipeline/project/delete.js.map +1 -0
  11. package/lib/commands/devops/pipeline/stage/delete.d.ts +15 -0
  12. package/lib/commands/devops/pipeline/stage/delete.js +69 -0
  13. package/lib/commands/devops/pipeline/stage/delete.js.map +1 -0
  14. package/lib/commands/devops/pipeline/update.d.ts +18 -0
  15. package/lib/commands/devops/pipeline/update.js +126 -0
  16. package/lib/commands/devops/pipeline/update.js.map +1 -0
  17. package/lib/commands/devops/project/update.d.ts +17 -0
  18. package/lib/commands/devops/project/update.js +86 -0
  19. package/lib/commands/devops/project/update.js.map +1 -0
  20. package/lib/commands/devops/promote.d.ts +24 -0
  21. package/lib/commands/devops/promote.js +148 -0
  22. package/lib/commands/devops/promote.js.map +1 -0
  23. package/lib/commands/devops/promotion/complete.d.ts +20 -0
  24. package/lib/commands/devops/promotion/complete.js +112 -0
  25. package/lib/commands/devops/promotion/complete.js.map +1 -0
  26. package/lib/commands/devops/request/status.d.ts +14 -0
  27. package/lib/commands/devops/request/status.js +71 -0
  28. package/lib/commands/devops/request/status.js.map +1 -0
  29. package/lib/commands/devops/{pull-request → review}/create.d.ts +1 -1
  30. package/lib/commands/devops/{pull-request → review}/create.js +3 -3
  31. package/lib/commands/devops/review/create.js.map +1 -0
  32. package/lib/commands/devops/stage/environment/add.js +2 -0
  33. package/lib/commands/devops/stage/environment/add.js.map +1 -1
  34. package/lib/commands/devops/stage/environment/delete.d.ts +15 -0
  35. package/lib/commands/devops/{pipeline/activate.js → stage/environment/delete.js} +18 -30
  36. package/lib/commands/devops/stage/environment/delete.js.map +1 -0
  37. package/lib/commands/devops/work-item/combine.d.ts +15 -0
  38. package/lib/commands/devops/work-item/combine.js +109 -0
  39. package/lib/commands/devops/work-item/combine.js.map +1 -0
  40. package/lib/commands/devops/work-item/prepare.d.ts +14 -0
  41. package/lib/commands/devops/work-item/prepare.js +98 -0
  42. package/lib/commands/devops/work-item/prepare.js.map +1 -0
  43. package/lib/common/flags/promote/promoteFlags.d.ts +1 -0
  44. package/lib/common/flags/promote/promoteFlags.js +5 -0
  45. package/lib/common/flags/promote/promoteFlags.js.map +1 -1
  46. package/lib/common/outputService/aorOutputService.js +4 -4
  47. package/lib/common/outputService/aorOutputService.js.map +1 -1
  48. package/lib/common/outputService/outputUtils.js +1 -2
  49. package/lib/common/outputService/outputUtils.js.map +1 -1
  50. package/lib/common/selectors/asyncOperationResultsSelector.js +3 -1
  51. package/lib/common/selectors/asyncOperationResultsSelector.js.map +1 -1
  52. package/lib/common/selectors/deployComponentsSelector.js +5 -6
  53. package/lib/common/selectors/deployComponentsSelector.js.map +1 -1
  54. package/lib/common/selectors/deployProgressSummarySelector.js +3 -1
  55. package/lib/common/selectors/deployProgressSummarySelector.js.map +1 -1
  56. package/lib/common/selectors/deploymentResultsSelector.js +10 -6
  57. package/lib/common/selectors/deploymentResultsSelector.js.map +1 -1
  58. package/lib/common/selectors/environmentSelector.js +4 -2
  59. package/lib/common/selectors/environmentSelector.js.map +1 -1
  60. package/lib/common/selectors/namedCredentialSelector.js +2 -1
  61. package/lib/common/selectors/namedCredentialSelector.js.map +1 -1
  62. package/lib/common/selectors/pipelineStageSelector.js +5 -3
  63. package/lib/common/selectors/pipelineStageSelector.js.map +1 -1
  64. package/lib/common/selectors/validateDeploySelector.js +3 -1
  65. package/lib/common/selectors/validateDeploySelector.js.map +1 -1
  66. package/lib/common/selectors/workItemSelector.js +4 -1
  67. package/lib/common/selectors/workItemSelector.js.map +1 -1
  68. package/lib/utils/activatePipeline.d.ts +13 -4
  69. package/lib/utils/activatePipeline.js +7 -6
  70. package/lib/utils/activatePipeline.js.map +1 -1
  71. package/lib/utils/attachProject.js +2 -0
  72. package/lib/utils/attachProject.js.map +1 -1
  73. package/lib/utils/combineWorkItems.d.ts +20 -0
  74. package/lib/utils/combineWorkItems.js +42 -0
  75. package/lib/utils/combineWorkItems.js.map +1 -0
  76. package/lib/utils/createPullRequest.js +2 -1
  77. package/lib/utils/createPullRequest.js.map +1 -1
  78. package/lib/utils/deletePipelineStage.d.ts +12 -0
  79. package/lib/utils/deletePipelineStage.js +41 -0
  80. package/lib/utils/deletePipelineStage.js.map +1 -0
  81. package/lib/utils/deleteStageEnvironment.d.ts +8 -0
  82. package/lib/utils/deleteStageEnvironment.js +33 -0
  83. package/lib/utils/deleteStageEnvironment.js.map +1 -0
  84. package/lib/utils/deployStage.d.ts +29 -0
  85. package/lib/utils/deployStage.js +68 -0
  86. package/lib/utils/deployStage.js.map +1 -0
  87. package/lib/utils/detachProject.d.ts +8 -0
  88. package/lib/utils/detachProject.js +37 -0
  89. package/lib/utils/detachProject.js.map +1 -0
  90. package/lib/utils/getPipeline.d.ts +27 -0
  91. package/lib/utils/getPipeline.js +66 -0
  92. package/lib/utils/getPipeline.js.map +1 -0
  93. package/lib/utils/getRequestStatus.d.ts +10 -0
  94. package/lib/utils/getRequestStatus.js +32 -0
  95. package/lib/utils/getRequestStatus.js.map +1 -0
  96. package/lib/utils/listPipelines.d.ts +11 -0
  97. package/lib/utils/listPipelines.js +20 -0
  98. package/lib/utils/listPipelines.js.map +1 -0
  99. package/lib/utils/pipelineUtils.js +3 -0
  100. package/lib/utils/pipelineUtils.js.map +1 -1
  101. package/lib/utils/prepareWorkItem.d.ts +25 -0
  102. package/lib/utils/prepareWorkItem.js +55 -0
  103. package/lib/utils/prepareWorkItem.js.map +1 -0
  104. package/lib/utils/promoteStage.d.ts +21 -0
  105. package/lib/utils/promoteStage.js +46 -0
  106. package/lib/utils/promoteStage.js.map +1 -0
  107. package/lib/utils/soqlUtils.d.ts +23 -0
  108. package/lib/utils/soqlUtils.js +63 -0
  109. package/lib/utils/soqlUtils.js.map +1 -0
  110. package/lib/utils/updateProject.d.ts +17 -0
  111. package/lib/utils/updateProject.js +41 -0
  112. package/lib/utils/updateProject.js.map +1 -0
  113. package/lib/utils/updateWorkItem.js +3 -1
  114. package/lib/utils/updateWorkItem.js.map +1 -1
  115. package/lib/utils/workItems.js +2 -0
  116. package/lib/utils/workItems.js.map +1 -1
  117. package/messages/devops.pipeline.get.md +17 -0
  118. package/messages/devops.pipeline.list.md +13 -0
  119. package/messages/devops.pipeline.project.delete.md +25 -0
  120. package/messages/devops.pipeline.stage.delete.md +25 -0
  121. package/messages/devops.pipeline.update.md +47 -0
  122. package/messages/devops.project.update.md +45 -0
  123. package/messages/devops.promote.md +61 -0
  124. package/messages/devops.promotion.complete.md +47 -0
  125. package/messages/devops.request.status.md +21 -0
  126. package/messages/devops.stage.environment.delete.md +29 -0
  127. package/messages/devops.work-item.combine.md +39 -0
  128. package/messages/devops.work-item.prepare.md +27 -0
  129. package/npm-shrinkwrap.json +37 -174
  130. package/oclif.lock +1 -1
  131. package/oclif.manifest.json +997 -63
  132. package/package.json +20 -8
  133. package/schemas/devops-pipeline-get.json +98 -0
  134. package/schemas/devops-pipeline-list.json +38 -0
  135. package/schemas/devops-pipeline-project-delete.json +25 -0
  136. package/schemas/devops-pipeline-stage-delete.json +25 -0
  137. package/schemas/{devops-pipeline-activate.json → devops-pipeline-update.json} +5 -2
  138. package/schemas/devops-project-update.json +31 -0
  139. package/schemas/devops-promote.json +28 -0
  140. package/schemas/devops-promotion-complete.json +34 -0
  141. package/schemas/devops-request-status.json +31 -0
  142. package/schemas/devops-stage-environment-delete.json +25 -0
  143. package/schemas/devops-work__item-combine.json +25 -0
  144. package/schemas/devops-work__item-prepare.json +25 -0
  145. package/lib/commands/devops/pipeline/activate.js.map +0 -1
  146. package/lib/commands/devops/pull-request/create.js.map +0 -1
  147. package/messages/devops.pipeline.activate.md +0 -29
  148. /package/messages/{devops.pull-request.create.md → devops.review.create.md} +0 -0
  149. /package/schemas/{devops-pull__request-create.json → devops-review-create.json} +0 -0
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { escapeSOQL } from './soqlUtils.js';
17
+ export async function getRequestStatus(connection, requestToken) {
18
+ const result = await connection.query(`SELECT Id, Status, Message, ErrorDetails, RequestToken, RequestCompletionDate FROM DevopsRequestInfo WHERE RequestToken = '${escapeSOQL(requestToken)}' LIMIT 1`);
19
+ const record = (result.records ?? [])[0];
20
+ if (!record) {
21
+ throw new Error(`RequestNotFound:${requestToken}`);
22
+ }
23
+ return {
24
+ id: record.Id,
25
+ status: record.Status,
26
+ message: record.Message,
27
+ errorDetails: record.ErrorDetails,
28
+ requestToken: record.RequestToken,
29
+ requestCompletionDate: record.RequestCompletionDate,
30
+ };
31
+ }
32
+ //# sourceMappingURL=getRequestStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRequestStatus.js","sourceRoot":"","sources":["../../src/utils/getRequestStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAoB5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAsB,EAAE,YAAoB;IACjF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CACnC,8HAA8H,UAAU,CACtI,YAAY,CACb,WAAW,CACb,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;KACpD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Connection } from '@salesforce/core';
2
+ export type DevopsPipeline = {
3
+ Id: string;
4
+ Name: string;
5
+ Description: string | null;
6
+ IsActive: boolean;
7
+ };
8
+ export type PipelineListResult = {
9
+ pipelines: DevopsPipeline[];
10
+ };
11
+ export declare function listPipelines(connection: Connection): Promise<PipelineListResult>;
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export async function listPipelines(connection) {
17
+ const result = await connection.query('SELECT Id, Name, Description, IsActive FROM DevopsPipeline');
18
+ return { pipelines: result.records ?? [] };
19
+ }
20
+ //# sourceMappingURL=listPipelines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listPipelines.js","sourceRoot":"","sources":["../../src/utils/listPipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAsB;IACxD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAiB,4DAA4D,CAAC,CAAC;IACpH,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;AAC7C,CAAC"}
@@ -13,12 +13,15 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import { validateSalesforceId } from './soqlUtils.js';
16
17
  export async function getPipelineIdForProject(connection, projectId) {
18
+ validateSalesforceId(projectId, 'project');
17
19
  const query = `SELECT DevopsPipelineId FROM DevopsProjectPipeline WHERE DevopsProjectId = '${projectId}' LIMIT 1`;
18
20
  const result = await connection.query(query);
19
21
  return (result.records ?? [])[0]?.DevopsPipelineId;
20
22
  }
21
23
  export async function fetchPipelineStages(connection, pipelineId) {
24
+ validateSalesforceId(pipelineId, 'pipeline');
22
25
  const stageQuery = `SELECT Id, Name, NextStageId, SourceCodeRepositoryBranch.Name FROM DevopsPipelineStage WHERE DevopsPipelineId = '${pipelineId}'`;
23
26
  const stageResult = await connection.query(stageQuery);
24
27
  return stageResult.records ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineUtils.js","sourceRoot":"","sources":["../../src/utils/pipelineUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAAsB,EAAE,SAAiB;IACrF,MAAM,KAAK,GAAG,+EAA+E,SAAS,WAAW,CAAC;IAClH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAmC,KAAK,CAAC,CAAC;IAC/E,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAsB,EAAE,UAAkB;IAClF,MAAM,UAAU,GAAG,oHAAoH,UAAU,GAAG,CAAC;IACrJ,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,KAAK,CAAsB,UAAU,CAAC,CAAC;IAC5E,OAAO,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA6B;IAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC,CAAC;IACnG,MAAM,aAAa,GAAa,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,cAAkC,EAClC,MAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;QAC5D,OAAO,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAA6B,EAC7B,OAA2B;IAE3B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAsC;IAC3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,IAAI,IAAI,SAAS,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"pipelineUtils.js","sourceRoot":"","sources":["../../src/utils/pipelineUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAAsB,EAAE,SAAiB;IACrF,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,+EAA+E,SAAS,WAAW,CAAC;IAClH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAmC,KAAK,CAAC,CAAC;IAC/E,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAsB,EAAE,UAAkB;IAClF,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,oHAAoH,UAAU,GAAG,CAAC;IACrJ,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,KAAK,CAAsB,UAAU,CAAC,CAAC;IAC5E,OAAO,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA6B;IAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC,CAAC;IACnG,MAAM,aAAa,GAAa,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,cAAkC,EAClC,MAA6B;IAE7B,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;QAC5D,OAAO,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAA6B,EAC7B,OAA2B;IAE3B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAsC;IAC3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,IAAI,IAAI,SAAS,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Connection } from '@salesforce/core';
2
+ export type PrepareWorkItemParams = {
3
+ connection: Connection;
4
+ pipelineId: string;
5
+ workItemId: string;
6
+ sourceStageId: string;
7
+ targetStageId: string;
8
+ };
9
+ export type PrepareWorkItemResult = {
10
+ success: boolean;
11
+ requestToken: string | null;
12
+ errorCode: string | null;
13
+ errorMessage: string | null;
14
+ };
15
+ /**
16
+ * Prepares a work item for one-off promotion by creating the necessary branches
17
+ * and pull requests in the source control repository.
18
+ * API: POST /services/data/v{version}/connect/devops/pipelines/{pipelineId}/promote/oneoff/prepare
19
+ */
20
+ export declare function prepareWorkItem(params: PrepareWorkItemParams): Promise<PrepareWorkItemResult>;
21
+ export type WorkItemContext = {
22
+ projectId: string;
23
+ pipelineStageId: string;
24
+ };
25
+ export declare function resolveProjectIdFromWorkItem(connection: Connection, workItemId: string): Promise<WorkItemContext>;
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { validateSalesforceId } from './soqlUtils.js';
17
+ /**
18
+ * Prepares a work item for one-off promotion by creating the necessary branches
19
+ * and pull requests in the source control repository.
20
+ * API: POST /services/data/v{version}/connect/devops/pipelines/{pipelineId}/promote/oneoff/prepare
21
+ */
22
+ export async function prepareWorkItem(params) {
23
+ const { connection, pipelineId, workItemId, sourceStageId, targetStageId } = params;
24
+ const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines/${pipelineId}/promote/oneoff/prepare`;
25
+ const body = JSON.stringify({
26
+ selectedWorkItemId: workItemId,
27
+ sourceStageId,
28
+ targetStageId,
29
+ });
30
+ const data = await connection.request({
31
+ method: 'POST',
32
+ url: path,
33
+ body,
34
+ headers: { 'Content-Type': 'application/json' },
35
+ });
36
+ return {
37
+ success: data.success ?? true,
38
+ requestToken: data.requestToken ?? null,
39
+ errorCode: data.errorCode ?? null,
40
+ errorMessage: data.errorMessage ?? null,
41
+ };
42
+ }
43
+ export async function resolveProjectIdFromWorkItem(connection, workItemId) {
44
+ validateSalesforceId(workItemId, 'work item');
45
+ const result = await connection.query(`SELECT DevopsProjectId, DevopsPipelineStageId FROM WorkItem WHERE Id = '${workItemId}' LIMIT 1`);
46
+ const records = result.records ?? [];
47
+ if (records.length === 0) {
48
+ throw new Error(`Work item '${workItemId}' not found. Verify the work item ID and try again.`);
49
+ }
50
+ return {
51
+ projectId: records[0].DevopsProjectId,
52
+ pipelineStageId: records[0].DevopsPipelineStageId ?? '',
53
+ };
54
+ }
55
+ //# sourceMappingURL=prepareWorkItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareWorkItem.js","sourceRoot":"","sources":["../../src/utils/prepareWorkItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAwBtD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA6B;IACjE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAEpF,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,yBAAyB,CAAC;IAC3H,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,kBAAkB,EAAE,UAAU;QAC9B,aAAa;QACb,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAiC;QACpE,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,IAAI;QACT,IAAI;QACJ,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;QACvC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACjC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;KACxC,CAAC;AACJ,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,UAAsB,EACtB,UAAkB;IAElB,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CACnC,2EAA2E,UAAU,WAAW,CACjG,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,qDAAqD,CAAC,CAAC;IACjG,CAAC;IACD,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe;QACrC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,IAAI,EAAE;KACxD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { Connection } from '@salesforce/core';
2
+ export type PromoteStageParams = {
3
+ connection: Connection;
4
+ pipelineId: string;
5
+ workItemIds: string[];
6
+ targetStageId: string;
7
+ fullDeploy?: boolean;
8
+ testLevel?: string;
9
+ runTests?: string[];
10
+ };
11
+ export type PromoteStageResult = {
12
+ requestId: string;
13
+ status: string;
14
+ message: string;
15
+ promotedWorkitemIds: string[];
16
+ };
17
+ /**
18
+ * Promotes work items to a target pipeline stage via the Connect API.
19
+ * POST /services/data/v{version}/connect/devops/pipelines/{pipelineId}/promote
20
+ */
21
+ export declare function promoteStage(params: PromoteStageParams): Promise<PromoteStageResult>;
@@ -0,0 +1,46 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Promotes work items to a target pipeline stage via the Connect API.
18
+ * POST /services/data/v{version}/connect/devops/pipelines/{pipelineId}/promote
19
+ */
20
+ export async function promoteStage(params) {
21
+ const { connection, pipelineId, workItemIds, targetStageId, fullDeploy = false, testLevel = 'Default', runTests, } = params;
22
+ const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines/${pipelineId}/promote`;
23
+ const response = await connection.request({
24
+ method: 'POST',
25
+ url: path,
26
+ body: JSON.stringify({
27
+ workitemIds: workItemIds,
28
+ targetStageId,
29
+ allWorkItemsInStage: false,
30
+ isCheckDeploy: false,
31
+ deployOptions: {
32
+ testLevel,
33
+ isFullDeploy: fullDeploy,
34
+ runTests: runTests ?? [],
35
+ },
36
+ }),
37
+ headers: { 'Content-Type': 'application/json' },
38
+ });
39
+ return {
40
+ requestId: response.requestId ?? '',
41
+ status: response.status ?? '',
42
+ message: response.message ?? '',
43
+ promotedWorkitemIds: response.promotedWorkitemIds ?? [],
44
+ };
45
+ }
46
+ //# sourceMappingURL=promoteStage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promoteStage.js","sourceRoot":"","sources":["../../src/utils/promoteStage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA4BH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA0B;IAC3D,MAAM,EACJ,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,GAAG,KAAK,EAClB,SAAS,GAAG,SAAS,EACrB,QAAQ,GACT,GAAG,MAAM,CAAC;IAEX,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,UAAU,CAAC;IAE5G,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAuB;QAC9D,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,WAAW,EAAE,WAAW;YACxB,aAAa;YACb,mBAAmB,EAAE,KAAK;YAC1B,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE;gBACb,SAAS;gBACT,YAAY,EAAE,UAAU;gBACxB,QAAQ,EAAE,QAAQ,IAAI,EAAE;aACzB;SACF,CAAC;QACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE;QACnC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;QAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC/B,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,IAAI,EAAE;KACxD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Escapes single quotes in a string for safe use in SOQL queries.
3
+ * Use this for user-supplied string values like names.
4
+ */
5
+ export declare function escapeSOQL(value: string): string;
6
+ /**
7
+ * Validates that a string is a properly formatted Salesforce ID (15 or 18 characters, alphanumeric).
8
+ * In test environments (NODE_ENV=test or when mocha is running), accepts shorter alphanumeric strings
9
+ * to allow for mock test data while still preventing injection attacks.
10
+ * Throws an error if validation fails.
11
+ * Use this before interpolating IDs into SOQL queries.
12
+ */
13
+ export declare function validateSalesforceId(id: string, context?: string): string;
14
+ /**
15
+ * Validates that a string starts with the expected Salesforce object prefix.
16
+ * Throws an error if validation fails.
17
+ */
18
+ export declare function validateSalesforceIdPrefix(id: string, expectedPrefix: string, objectType: string): string;
19
+ /**
20
+ * Validates an array of Salesforce IDs.
21
+ * Throws an error if any ID is invalid.
22
+ */
23
+ export declare function validateSalesforceIds(ids: string[], context?: string): string[];
@@ -0,0 +1,63 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Escapes single quotes in a string for safe use in SOQL queries.
18
+ * Use this for user-supplied string values like names.
19
+ */
20
+ export function escapeSOQL(value) {
21
+ return value.replace(/'/g, "\\'");
22
+ }
23
+ /**
24
+ * Validates that a string is a properly formatted Salesforce ID (15 or 18 characters, alphanumeric).
25
+ * In test environments (NODE_ENV=test or when mocha is running), accepts shorter alphanumeric strings
26
+ * to allow for mock test data while still preventing injection attacks.
27
+ * Throws an error if validation fails.
28
+ * Use this before interpolating IDs into SOQL queries.
29
+ */
30
+ export function validateSalesforceId(id, context) {
31
+ if (!id || typeof id !== 'string') {
32
+ throw new Error(`Invalid Salesforce ID${context ? ` for ${context}` : ''}: value is empty or not a string`);
33
+ }
34
+ // In test environments, be more lenient to allow mock IDs while still preventing injection
35
+ const isTestEnv = process.env.NODE_ENV === 'test' || typeof global.describe === 'function';
36
+ const pattern = isTestEnv ? /^[a-zA-Z0-9-]+$/ : /^[a-zA-Z0-9]{15,18}$/;
37
+ if (!pattern.test(id)) {
38
+ throw new Error(`Invalid Salesforce ID format${context ? ` for ${context}` : ''}: "${id}". Expected ${isTestEnv ? 'alphanumeric characters' : '15-18 alphanumeric characters'}.`);
39
+ }
40
+ return id;
41
+ }
42
+ /**
43
+ * Validates that a string starts with the expected Salesforce object prefix.
44
+ * Throws an error if validation fails.
45
+ */
46
+ export function validateSalesforceIdPrefix(id, expectedPrefix, objectType) {
47
+ validateSalesforceId(id, objectType);
48
+ if (!id.startsWith(expectedPrefix)) {
49
+ throw new Error(`Invalid ${objectType} ID: "${id}". Expected ID to start with "${expectedPrefix}".`);
50
+ }
51
+ return id;
52
+ }
53
+ /**
54
+ * Validates an array of Salesforce IDs.
55
+ * Throws an error if any ID is invalid.
56
+ */
57
+ export function validateSalesforceIds(ids, context) {
58
+ if (!Array.isArray(ids)) {
59
+ throw new Error(`Invalid ID array${context ? ` for ${context}` : ''}: not an array`);
60
+ }
61
+ return ids.map((id, index) => validateSalesforceId(id, `${context ?? 'array'}[${index}]`));
62
+ }
63
+ //# sourceMappingURL=soqlUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soqlUtils.js","sourceRoot":"","sources":["../../src/utils/soqlUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAU,EAAE,OAAgB;IAC/D,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,kCAAkC,CAAC,CAAC;IAC9G,CAAC;IAED,2FAA2F;IAC3F,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAQ,MAAkC,CAAC,QAAQ,KAAK,UAAU,CAAC;IACxG,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAEvE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,+BAA+B,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eACrE,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,+BAC1C,GAAG,CACJ,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,EAAU,EAAE,cAAsB,EAAE,UAAkB;IAC/F,oBAAoB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,SAAS,EAAE,iCAAiC,cAAc,IAAI,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAa,EAAE,OAAgB;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AAC7F,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Connection } from '@salesforce/core';
2
+ export type UpdateProjectParams = {
3
+ connection: Connection;
4
+ projectId: string;
5
+ name?: string;
6
+ description?: string;
7
+ isActive?: boolean;
8
+ };
9
+ export type UpdateProjectResult = {
10
+ success: boolean;
11
+ projectId?: string;
12
+ name?: string;
13
+ description?: string;
14
+ isActive?: boolean;
15
+ error?: string;
16
+ };
17
+ export declare function updateProject(params: UpdateProjectParams): Promise<UpdateProjectResult>;
@@ -0,0 +1,41 @@
1
+ /*
2
+ * Copyright 2026, Salesforce, Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export async function updateProject(params) {
17
+ const { connection, projectId, name, description, isActive } = params;
18
+ const updatePayload = { Id: projectId };
19
+ if (name !== undefined)
20
+ updatePayload.Name = name;
21
+ if (description !== undefined)
22
+ updatePayload.Description = description;
23
+ if (isActive !== undefined)
24
+ updatePayload.IsActive = isActive;
25
+ const result = await connection.sobject('DevopsProject').update(updatePayload);
26
+ if (result.success) {
27
+ return {
28
+ success: true,
29
+ projectId,
30
+ name,
31
+ description,
32
+ isActive,
33
+ };
34
+ }
35
+ const errorMessages = result.errors?.map((e) => (typeof e === 'string' ? e : JSON.stringify(e))).join('; ');
36
+ return {
37
+ success: false,
38
+ error: errorMessages ?? 'Unknown error',
39
+ };
40
+ }
41
+ //# sourceMappingURL=updateProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateProject.js","sourceRoot":"","sources":["../../src/utils/updateProject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAqBH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA2B;IAC7D,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAEtE,MAAM,aAAa,GAA4E,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACjH,IAAI,IAAI,KAAK,SAAS;QAAE,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;IAClD,IAAI,WAAW,KAAK,SAAS;QAAE,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC;IACvE,IAAI,QAAQ,KAAK,SAAS;QAAE,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAE9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAE/E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS;YACT,IAAI;YACJ,WAAW;YACX,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5G,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,aAAa,IAAI,eAAe;KACxC,CAAC;AACJ,CAAC"}
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import { escapeSOQL, validateSalesforceId } from './soqlUtils.js';
16
17
  export const ALLOWED_STATUSES = ['In Progress', 'Ready to Promote'];
17
18
  const STATUS_LABEL_TO_API = {
18
19
  'in progress': 'IN_PROGRESS',
@@ -26,7 +27,7 @@ export function toApiStatus(status) {
26
27
  return apiStatus;
27
28
  }
28
29
  export async function resolveWorkItemByName(connection, workItemName) {
29
- const result = await connection.query(`SELECT Id, DevopsProjectId FROM WorkItem WHERE Name = '${workItemName}' LIMIT 1`);
30
+ const result = await connection.query(`SELECT Id, DevopsProjectId FROM WorkItem WHERE Name = '${escapeSOQL(workItemName)}' LIMIT 1`);
30
31
  const record = (result.records ?? [])[0];
31
32
  if (!record) {
32
33
  throw new Error(`Work item with name '${workItemName}' not found.`);
@@ -34,6 +35,7 @@ export async function resolveWorkItemByName(connection, workItemName) {
34
35
  return { workItemId: record.Id, projectId: record.DevopsProjectId };
35
36
  }
36
37
  export async function resolveProjectIdForWorkItem(connection, workItemId) {
38
+ validateSalesforceId(workItemId, 'work item');
37
39
  const result = await connection.query(`SELECT DevopsProjectId FROM WorkItem WHERE Id = '${workItemId}' LIMIT 1`);
38
40
  const record = (result.records ?? [])[0];
39
41
  if (!record) {
@@ -1 +1 @@
1
- {"version":3,"file":"updateWorkItem.js","sourceRoot":"","sources":["../../src/utils/updateWorkItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateWorkItem.js","sourceRoot":"","sources":["../../src/utils/updateWorkItem.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { computeFirstStageId, fetchPipelineStages, findStageById, getBranchNameFromStage, getPipelineIdForProject, resolveTargetStageId, } from './pipelineUtils.js';
17
+ import { validateSalesforceId } from './soqlUtils.js';
17
18
  function normalizeProvider(provider) {
18
19
  if (!provider)
19
20
  return undefined;
@@ -157,6 +158,7 @@ function mapRawItemToWorkItem(item, ctx, providerOwnerMap) {
157
158
  return mapped;
158
159
  }
159
160
  export async function fetchWorkItems(connection, projectId) {
161
+ validateSalesforceId(projectId, 'project');
160
162
  const query = `
161
163
  SELECT
162
164
  Id, Name, Subject, Description, Status, AssignedToId,
@@ -1 +1 @@
1
- {"version":3,"file":"workItems.js","sourceRoot":"","sources":["../../src/utils/workItems.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workItems.js","sourceRoot":"","sources":["../../src/utils/workItems.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ # summary
2
+
3
+ Get details of a DevOps Center pipeline including its stages, repositories, and connected projects.
4
+
5
+ # description
6
+
7
+ Returns full details for a single DevOps Center pipeline: its stages in order, the source code repository and branch associated with each stage, and any connected projects.
8
+
9
+ # flags.pipeline-id.summary
10
+
11
+ ID of the DevOps Center pipeline.
12
+
13
+ # examples
14
+
15
+ - Get details for a specific pipeline:
16
+
17
+ <%= config.bin %> <%= command.id %> --target-org my-devops-org --pipeline-id 0Do000000000001
@@ -0,0 +1,13 @@
1
+ # summary
2
+
3
+ List DevOps Center pipelines with their stages, repositories, and connected projects.
4
+
5
+ # description
6
+
7
+ Returns all DevOps Center pipelines in the org, including each pipeline's stages (in order), source code repository information per stage, and any connected projects.
8
+
9
+ # examples
10
+
11
+ - List all pipelines in the org:
12
+
13
+ <%= config.bin %> <%= command.id %> --target-org my-devops-org
@@ -0,0 +1,25 @@
1
+ # summary
2
+
3
+ Remove a DevOps Center project's connection to a pipeline.
4
+
5
+ # description
6
+
7
+ Deletes the junction record that connects the project to the pipeline. The project itself is not deleted.
8
+
9
+ # flags.pipeline-id.summary
10
+
11
+ ID of the pipeline.
12
+
13
+ # flags.project-id.summary
14
+
15
+ ID of the DevOps Center project.
16
+
17
+ # examples
18
+
19
+ - Remove a project from a pipeline using the project ID and pipeline ID.
20
+
21
+ <%= config.bin %> <%= command.id %> --target-org my-devops-org --pipeline-id 0XB000000000001 --project-id 0Hn000000000001
22
+
23
+ # error.ProjectNotAttached
24
+
25
+ Project %s is not attached to pipeline %s.
@@ -0,0 +1,25 @@
1
+ # summary
2
+
3
+ Delete a stage from a DevOps Center pipeline.
4
+
5
+ # description
6
+
7
+ Deletes the specified stage from the pipeline. If the stage sits between two other stages, the predecessor stage is automatically re-linked to the successor so the pipeline chain stays intact.
8
+
9
+ # flags.pipeline-id.summary
10
+
11
+ ID of the pipeline that contains the stage.
12
+
13
+ # flags.stage-id.summary
14
+
15
+ ID of the stage to delete.
16
+
17
+ # examples
18
+
19
+ - Delete a stage from a pipeline:
20
+
21
+ <%= config.bin %> <%= command.id %> --target-org my-devops-org --pipeline-id 0XB000000000001 --stage-id 0Xc000000000002
22
+
23
+ # error.StageNotFound
24
+
25
+ Stage %s not found in pipeline %s. Check the stage ID and try again.
@@ -0,0 +1,47 @@
1
+ # summary
2
+
3
+ Update a DevOps Center pipeline.
4
+
5
+ # description
6
+
7
+ Activate, deactivate, or rename a DevOps Center pipeline. Use --active to activate, --no-active to deactivate, and --name to rename. You can combine --no-active and --name in one command.
8
+
9
+ A pipeline must have at least one stage before you can activate it. You can't modify the pipeline stages after you activate and promote changes through it.
10
+
11
+ # flags.pipeline-id.summary
12
+
13
+ ID of the pipeline.
14
+
15
+ # flags.active.summary
16
+
17
+ Activate the pipeline. Use --no-active to deactivate.
18
+
19
+ # flags.name.summary
20
+
21
+ New name for the pipeline.
22
+
23
+ # examples
24
+
25
+ - Activate a pipeline:
26
+
27
+ <%= config.bin %> <%= command.id %> --target-org my-devops-org --pipeline-id 0XB000000000001 --active
28
+
29
+ - Deactivate and rename in one step.
30
+
31
+ <%= config.bin %> <%= command.id %> --target-org my-devops-org --pipeline-id 0XB000000000001 --no-active --name "My Pipeline"
32
+
33
+ # error.NoFlags
34
+
35
+ Provide at least one of --active/--no-active or --name.
36
+
37
+ # error.NoStages
38
+
39
+ Can't activate pipeline %s. Add at least one stage, then try again.
40
+
41
+ # error.AlreadyActive
42
+
43
+ Pipeline %s is already active.
44
+
45
+ # error.AlreadyInactive
46
+
47
+ Pipeline %s is already inactive.