@salesforce/plugin-devops-center 1.4.0 → 2.0.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/README.md +592 -55
- package/lib/commands/devops/pipeline/{activate.d.ts → get.d.ts} +3 -3
- package/lib/commands/devops/pipeline/get.js +81 -0
- package/lib/commands/devops/pipeline/get.js.map +1 -0
- package/lib/commands/devops/pipeline/list.d.ts +13 -0
- package/lib/commands/devops/pipeline/list.js +58 -0
- package/lib/commands/devops/pipeline/list.js.map +1 -0
- package/lib/commands/devops/pipeline/project/delete.d.ts +15 -0
- package/lib/commands/devops/pipeline/project/delete.js +71 -0
- package/lib/commands/devops/pipeline/project/delete.js.map +1 -0
- package/lib/commands/devops/pipeline/stage/delete.d.ts +15 -0
- package/lib/commands/devops/pipeline/stage/delete.js +69 -0
- package/lib/commands/devops/pipeline/stage/delete.js.map +1 -0
- package/lib/commands/devops/pipeline/update.d.ts +18 -0
- package/lib/commands/devops/pipeline/update.js +126 -0
- package/lib/commands/devops/pipeline/update.js.map +1 -0
- package/lib/commands/devops/project/update.d.ts +17 -0
- package/lib/commands/devops/project/update.js +86 -0
- package/lib/commands/devops/project/update.js.map +1 -0
- package/lib/commands/devops/promote.d.ts +24 -0
- package/lib/commands/devops/promote.js +148 -0
- package/lib/commands/devops/promote.js.map +1 -0
- package/lib/commands/devops/promotion/complete.d.ts +20 -0
- package/lib/commands/devops/promotion/complete.js +112 -0
- package/lib/commands/devops/promotion/complete.js.map +1 -0
- package/lib/commands/devops/request/status.d.ts +14 -0
- package/lib/commands/devops/request/status.js +71 -0
- package/lib/commands/devops/request/status.js.map +1 -0
- package/lib/commands/devops/{pull-request → review}/create.d.ts +1 -1
- package/lib/commands/devops/{pull-request → review}/create.js +3 -3
- package/lib/commands/devops/review/create.js.map +1 -0
- package/lib/commands/devops/stage/environment/add.js +2 -0
- package/lib/commands/devops/stage/environment/add.js.map +1 -1
- package/lib/commands/devops/stage/environment/delete.d.ts +15 -0
- package/lib/commands/devops/{pipeline/activate.js → stage/environment/delete.js} +18 -30
- package/lib/commands/devops/stage/environment/delete.js.map +1 -0
- package/lib/commands/devops/work-item/combine.d.ts +15 -0
- package/lib/commands/devops/work-item/combine.js +109 -0
- package/lib/commands/devops/work-item/combine.js.map +1 -0
- package/lib/commands/devops/work-item/prepare.d.ts +14 -0
- package/lib/commands/devops/work-item/prepare.js +98 -0
- package/lib/commands/devops/work-item/prepare.js.map +1 -0
- package/lib/common/flags/promote/promoteFlags.d.ts +1 -0
- package/lib/common/flags/promote/promoteFlags.js +5 -0
- package/lib/common/flags/promote/promoteFlags.js.map +1 -1
- package/lib/common/outputService/aorOutputService.js +4 -4
- package/lib/common/outputService/aorOutputService.js.map +1 -1
- package/lib/common/outputService/outputUtils.js +1 -2
- package/lib/common/outputService/outputUtils.js.map +1 -1
- package/lib/common/selectors/asyncOperationResultsSelector.js +3 -1
- package/lib/common/selectors/asyncOperationResultsSelector.js.map +1 -1
- package/lib/common/selectors/deployComponentsSelector.js +5 -6
- package/lib/common/selectors/deployComponentsSelector.js.map +1 -1
- package/lib/common/selectors/deployProgressSummarySelector.js +3 -1
- package/lib/common/selectors/deployProgressSummarySelector.js.map +1 -1
- package/lib/common/selectors/deploymentResultsSelector.js +10 -6
- package/lib/common/selectors/deploymentResultsSelector.js.map +1 -1
- package/lib/common/selectors/environmentSelector.js +4 -2
- package/lib/common/selectors/environmentSelector.js.map +1 -1
- package/lib/common/selectors/namedCredentialSelector.js +2 -1
- package/lib/common/selectors/namedCredentialSelector.js.map +1 -1
- package/lib/common/selectors/pipelineStageSelector.js +5 -3
- package/lib/common/selectors/pipelineStageSelector.js.map +1 -1
- package/lib/common/selectors/validateDeploySelector.js +3 -1
- package/lib/common/selectors/validateDeploySelector.js.map +1 -1
- package/lib/common/selectors/workItemSelector.js +4 -1
- package/lib/common/selectors/workItemSelector.js.map +1 -1
- package/lib/utils/activatePipeline.d.ts +13 -4
- package/lib/utils/activatePipeline.js +7 -6
- package/lib/utils/activatePipeline.js.map +1 -1
- package/lib/utils/attachProject.js +2 -0
- package/lib/utils/attachProject.js.map +1 -1
- package/lib/utils/combineWorkItems.d.ts +20 -0
- package/lib/utils/combineWorkItems.js +42 -0
- package/lib/utils/combineWorkItems.js.map +1 -0
- package/lib/utils/createPullRequest.js +2 -1
- package/lib/utils/createPullRequest.js.map +1 -1
- package/lib/utils/deletePipelineStage.d.ts +12 -0
- package/lib/utils/deletePipelineStage.js +41 -0
- package/lib/utils/deletePipelineStage.js.map +1 -0
- package/lib/utils/deleteStageEnvironment.d.ts +8 -0
- package/lib/utils/deleteStageEnvironment.js +33 -0
- package/lib/utils/deleteStageEnvironment.js.map +1 -0
- package/lib/utils/deployStage.d.ts +29 -0
- package/lib/utils/deployStage.js +68 -0
- package/lib/utils/deployStage.js.map +1 -0
- package/lib/utils/detachProject.d.ts +8 -0
- package/lib/utils/detachProject.js +37 -0
- package/lib/utils/detachProject.js.map +1 -0
- package/lib/utils/getPipeline.d.ts +27 -0
- package/lib/utils/getPipeline.js +66 -0
- package/lib/utils/getPipeline.js.map +1 -0
- package/lib/utils/getRequestStatus.d.ts +10 -0
- package/lib/utils/getRequestStatus.js +32 -0
- package/lib/utils/getRequestStatus.js.map +1 -0
- package/lib/utils/listPipelines.d.ts +11 -0
- package/lib/utils/listPipelines.js +20 -0
- package/lib/utils/listPipelines.js.map +1 -0
- package/lib/utils/pipelineUtils.js +3 -0
- package/lib/utils/pipelineUtils.js.map +1 -1
- package/lib/utils/prepareWorkItem.d.ts +25 -0
- package/lib/utils/prepareWorkItem.js +55 -0
- package/lib/utils/prepareWorkItem.js.map +1 -0
- package/lib/utils/promoteStage.d.ts +21 -0
- package/lib/utils/promoteStage.js +46 -0
- package/lib/utils/promoteStage.js.map +1 -0
- package/lib/utils/soqlUtils.d.ts +23 -0
- package/lib/utils/soqlUtils.js +63 -0
- package/lib/utils/soqlUtils.js.map +1 -0
- package/lib/utils/updateProject.d.ts +17 -0
- package/lib/utils/updateProject.js +41 -0
- package/lib/utils/updateProject.js.map +1 -0
- package/lib/utils/updateWorkItem.js +3 -1
- package/lib/utils/updateWorkItem.js.map +1 -1
- package/lib/utils/workItems.js +2 -0
- package/lib/utils/workItems.js.map +1 -1
- package/messages/devops.pipeline.get.md +17 -0
- package/messages/devops.pipeline.list.md +13 -0
- package/messages/devops.pipeline.project.delete.md +25 -0
- package/messages/devops.pipeline.stage.delete.md +25 -0
- package/messages/devops.pipeline.update.md +47 -0
- package/messages/devops.project.update.md +45 -0
- package/messages/devops.promote.md +61 -0
- package/messages/devops.promotion.complete.md +47 -0
- package/messages/devops.request.status.md +21 -0
- package/messages/devops.stage.environment.delete.md +29 -0
- package/messages/devops.work-item.combine.md +39 -0
- package/messages/devops.work-item.prepare.md +27 -0
- package/npm-shrinkwrap.json +290 -272
- package/oclif.lock +81 -24
- package/oclif.manifest.json +1176 -242
- package/package.json +23 -11
- package/schemas/devops-pipeline-get.json +98 -0
- package/schemas/devops-pipeline-list.json +38 -0
- package/schemas/devops-pipeline-project-delete.json +25 -0
- package/schemas/devops-pipeline-stage-delete.json +25 -0
- package/schemas/{devops-pipeline-activate.json → devops-pipeline-update.json} +5 -2
- package/schemas/devops-project-update.json +31 -0
- package/schemas/devops-promote.json +28 -0
- package/schemas/devops-promotion-complete.json +34 -0
- package/schemas/devops-request-status.json +31 -0
- package/schemas/devops-stage-environment-delete.json +25 -0
- package/schemas/devops-work__item-combine.json +25 -0
- package/schemas/devops-work__item-prepare.json +25 -0
- package/lib/commands/devops/pipeline/activate.js.map +0 -1
- package/lib/commands/devops/pull-request/create.js.map +0 -1
- package/messages/devops.pipeline.activate.md +0 -29
- /package/messages/{devops.pull-request.create.md → devops.review.create.md} +0 -0
- /package/schemas/{devops-pull__request-create.json → devops-review-create.json} +0 -0
|
@@ -13,15 +13,18 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import { validateSalesforceIds } from '../../utils/soqlUtils.js';
|
|
16
17
|
import { runSafeQuery } from './selectorUtils.js';
|
|
17
18
|
/**
|
|
18
19
|
* Returns the work items included in the change bundles sent
|
|
19
20
|
*/
|
|
20
21
|
export async function selectWorkItemsByChangeBundles(con, changeBundles) {
|
|
22
|
+
// Validate all IDs before constructing the IN clause
|
|
23
|
+
const validatedIds = validateSalesforceIds(changeBundles, 'change bundles');
|
|
21
24
|
const queryStr = `SELECT Id,
|
|
22
25
|
(SELECT Name FROM sf_devops__Work_Items__r)
|
|
23
26
|
FROM sf_devops__Change_Bundle__c
|
|
24
|
-
WHERE Id IN (${
|
|
27
|
+
WHERE Id IN (${validatedIds.map((id) => "'" + id + "'").join(', ')})`;
|
|
25
28
|
const resp = await runSafeQuery(con, queryStr);
|
|
26
29
|
return resp.records;
|
|
27
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workItemSelector.js","sourceRoot":"","sources":["../../../src/common/selectors/workItemSelector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"workItemSelector.js","sourceRoot":"","sources":["../../../src/common/selectors/workItemSelector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQlD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,GAAe,EACf,aAAuB;IAEvB,qDAAqD;IACrD,MAAM,YAAY,GAAG,qBAAqB,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG;;;mCAGgB,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAExF,MAAM,IAAI,GAAsC,MAAM,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC"}
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
import { Connection } from '@salesforce/core';
|
|
2
|
-
export type
|
|
2
|
+
export type PipelineUpdateParams = {
|
|
3
3
|
connection: Connection;
|
|
4
4
|
pipelineId: string;
|
|
5
5
|
};
|
|
6
|
-
export type
|
|
6
|
+
export type PipelineUpdateResult = {
|
|
7
7
|
success: boolean;
|
|
8
8
|
pipelineId: string;
|
|
9
|
+
name?: string;
|
|
9
10
|
status?: string;
|
|
10
11
|
stageCount?: number;
|
|
11
12
|
error?: string;
|
|
12
13
|
};
|
|
14
|
+
export type ActivatePipelineParams = PipelineUpdateParams;
|
|
15
|
+
export type ActivatePipelineResult = PipelineUpdateResult;
|
|
13
16
|
/**
|
|
14
|
-
* Activates a DevOps Center pipeline via the Connect API.
|
|
15
17
|
* POST /services/data/v{version}/connect/devops/pipelines/{pipelineId}/activate
|
|
16
18
|
*/
|
|
17
|
-
export declare function activatePipeline(params:
|
|
19
|
+
export declare function activatePipeline(params: PipelineUpdateParams): Promise<PipelineUpdateResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Record API update — covers deactivate and/or rename since no Connect API exists for those.
|
|
22
|
+
*/
|
|
23
|
+
export declare function updatePipelineRecord(connection: Connection, pipelineId: string, fields: {
|
|
24
|
+
IsActive?: boolean;
|
|
25
|
+
Name?: string;
|
|
26
|
+
}): Promise<void>;
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
/**
|
|
17
|
-
* Activates a DevOps Center pipeline via the Connect API.
|
|
18
17
|
* POST /services/data/v{version}/connect/devops/pipelines/{pipelineId}/activate
|
|
19
18
|
*/
|
|
20
19
|
export async function activatePipeline(params) {
|
|
@@ -26,10 +25,12 @@ export async function activatePipeline(params) {
|
|
|
26
25
|
body: '{}',
|
|
27
26
|
headers: { 'Content-Type': 'application/json' },
|
|
28
27
|
});
|
|
29
|
-
return {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
return { success: true, pipelineId, status: data.status ?? 'Active' };
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Record API update — covers deactivate and/or rename since no Connect API exists for those.
|
|
32
|
+
*/
|
|
33
|
+
export async function updatePipelineRecord(connection, pipelineId, fields) {
|
|
34
|
+
await connection.sobject('DevopsPipeline').update({ Id: pipelineId, ...fields });
|
|
34
35
|
}
|
|
35
36
|
//# sourceMappingURL=activatePipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activatePipeline.js","sourceRoot":"","sources":["../../src/utils/activatePipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"activatePipeline.js","sourceRoot":"","sources":["../../src/utils/activatePipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAwBH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAA4B;IACjE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC1C,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,WAAW,CAAC;IAC7G,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAmB;QACtD,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAsB,EACtB,UAAkB,EAClB,MAA6C;IAE7C,MAAM,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -13,11 +13,13 @@
|
|
|
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
|
/**
|
|
17
18
|
* Checks if a project is already attached to a pipeline.
|
|
18
19
|
* Returns the existing pipeline ID if found, undefined otherwise.
|
|
19
20
|
*/
|
|
20
21
|
export async function findExistingAttachment(connection, projectId) {
|
|
22
|
+
validateSalesforceId(projectId, 'project');
|
|
21
23
|
const result = await connection.query(`SELECT DevopsPipelineId FROM DevopsProjectPipeline WHERE DevopsProjectId = '${projectId}' LIMIT 1`);
|
|
22
24
|
return (result.records ?? [])[0]?.DevopsPipelineId;
|
|
23
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachProject.js","sourceRoot":"","sources":["../../src/utils/attachProject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"attachProject.js","sourceRoot":"","sources":["../../src/utils/attachProject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAetD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,UAAsB,EAAE,SAAiB;IACpF,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CACnC,+EAA+E,SAAS,WAAW,CACpG,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA2B;IAC7D,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAErD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC;QACtE,eAAe,EAAE,SAAS;QAC1B,gBAAgB,EAAE,UAAU;KAC7B,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAClD,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,SAAS;QACT,UAAU;QACV,KAAK,EAAE,aAAa,IAAI,eAAe;KACxC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Connection } from '@salesforce/core';
|
|
2
|
+
export type CombineWorkItemsPrepareParams = {
|
|
3
|
+
connection: Connection;
|
|
4
|
+
pipelineId: string;
|
|
5
|
+
parentWorkItemId: string;
|
|
6
|
+
childWorkItemIds: string[];
|
|
7
|
+
sourceStageId: string;
|
|
8
|
+
targetStageId: string;
|
|
9
|
+
};
|
|
10
|
+
export type CombineWorkItemsPrepareResult = {
|
|
11
|
+
success: boolean;
|
|
12
|
+
requestToken: string | null;
|
|
13
|
+
errorCode: string | null;
|
|
14
|
+
errorMessage: string | null;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Prepares work items to be combined for custom promotion.
|
|
18
|
+
* POST /services/data/v{version}/connect/devops/pipelines/{pipelineId}/promote/combine/prepare
|
|
19
|
+
*/
|
|
20
|
+
export declare function combineWorkItemsPrepare(params: CombineWorkItemsPrepareParams): Promise<CombineWorkItemsPrepareResult>;
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
* Prepares work items to be combined for custom promotion.
|
|
18
|
+
* POST /services/data/v{version}/connect/devops/pipelines/{pipelineId}/promote/combine/prepare
|
|
19
|
+
*/
|
|
20
|
+
export async function combineWorkItemsPrepare(params) {
|
|
21
|
+
const { connection, pipelineId, parentWorkItemId, childWorkItemIds, sourceStageId, targetStageId } = params;
|
|
22
|
+
const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines/${pipelineId}/promote/combine/prepare`;
|
|
23
|
+
const body = JSON.stringify({
|
|
24
|
+
parentWorkitemId: parentWorkItemId,
|
|
25
|
+
childWorkitemsId: childWorkItemIds,
|
|
26
|
+
sourceStageId,
|
|
27
|
+
targetStageId,
|
|
28
|
+
});
|
|
29
|
+
const data = await connection.request({
|
|
30
|
+
method: 'POST',
|
|
31
|
+
url: path,
|
|
32
|
+
body,
|
|
33
|
+
headers: { 'Content-Type': 'application/json' },
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
success: data.success ?? true,
|
|
37
|
+
requestToken: data.requestToken ?? null,
|
|
38
|
+
errorCode: data.errorCode ?? null,
|
|
39
|
+
errorMessage: data.errorMessage ?? null,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=combineWorkItems.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combineWorkItems.js","sourceRoot":"","sources":["../../src/utils/combineWorkItems.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA2BH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAqC;IAErC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAE5G,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,0BAA0B,CAAC;IAC5H,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,gBAAgB,EAAE,gBAAgB;QAClC,gBAAgB,EAAE,gBAAgB;QAClC,aAAa;QACb,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAkC;QACrE,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"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { execSync } from 'node:child_process';
|
|
17
17
|
import { getPipelineIdForProject, fetchPipelineStages, computeFirstStageId, findStageById, getBranchNameFromStage, resolveTargetStageId, } from './pipelineUtils.js';
|
|
18
|
+
import { escapeSOQL, validateSalesforceId } from './soqlUtils.js';
|
|
18
19
|
function normalizeProvider(provider) {
|
|
19
20
|
if (!provider)
|
|
20
21
|
return undefined;
|
|
@@ -27,7 +28,7 @@ function normalizeProvider(provider) {
|
|
|
27
28
|
* Queries a work item (by Name or Id) and resolves info needed to create a pull request.
|
|
28
29
|
*/
|
|
29
30
|
export async function fetchWorkItemDetail(connection, filter) {
|
|
30
|
-
const whereClause = 'name' in filter ? `Name = '${filter.name}'` : `Id = '${filter.id}'`;
|
|
31
|
+
const whereClause = 'name' in filter ? `Name = '${escapeSOQL(filter.name)}'` : `Id = '${validateSalesforceId(filter.id, 'work item')}'`;
|
|
31
32
|
const identifier = 'name' in filter ? filter.name : filter.id;
|
|
32
33
|
const result = await connection.query(`SELECT Id, Name, Subject, DevopsProjectId, DevopsPipelineStageId,
|
|
33
34
|
SourceCodeRepositoryBranch.Name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPullRequest.js","sourceRoot":"","sources":["../../src/utils/createPullRequest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"createPullRequest.js","sourceRoot":"","sources":["../../src/utils/createPullRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Connection } from '@salesforce/core';
|
|
2
|
+
export type DeletePipelineStageResult = {
|
|
3
|
+
success: boolean;
|
|
4
|
+
stageId?: string;
|
|
5
|
+
pipelineId?: string;
|
|
6
|
+
error?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Deletes a pipeline stage and re-links any predecessor stage so the chain stays intact.
|
|
10
|
+
* If stage B sits between A→B→C, deleting B updates A's NextStageId to C before the delete.
|
|
11
|
+
*/
|
|
12
|
+
export declare function deletePipelineStage(connection: Connection, pipelineId: string, stageId: string): Promise<DeletePipelineStageResult>;
|
|
@@ -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
|
+
import { fetchPipelineStages } from './pipelineUtils.js';
|
|
17
|
+
/**
|
|
18
|
+
* Deletes a pipeline stage and re-links any predecessor stage so the chain stays intact.
|
|
19
|
+
* If stage B sits between A→B→C, deleting B updates A's NextStageId to C before the delete.
|
|
20
|
+
*/
|
|
21
|
+
export async function deletePipelineStage(connection, pipelineId, stageId) {
|
|
22
|
+
const stages = await fetchPipelineStages(connection, pipelineId);
|
|
23
|
+
const target = stages.find((s) => s.Id === stageId);
|
|
24
|
+
if (!target) {
|
|
25
|
+
throw new Error(`Stage not found: ${stageId}`);
|
|
26
|
+
}
|
|
27
|
+
const predecessor = stages.find((s) => s.NextStageId === stageId);
|
|
28
|
+
if (predecessor) {
|
|
29
|
+
await connection
|
|
30
|
+
.sobject('DevopsPipelineStage')
|
|
31
|
+
.update({ Id: predecessor.Id, NextStageId: target.NextStageId ?? null });
|
|
32
|
+
}
|
|
33
|
+
const result = await connection.sobject('DevopsPipelineStage').delete(stageId);
|
|
34
|
+
const deleteResult = result;
|
|
35
|
+
if (!deleteResult.success) {
|
|
36
|
+
const errorMsg = deleteResult.errors?.map((e) => e.message).join('; ') ?? 'Unknown error';
|
|
37
|
+
return { success: false, error: errorMsg };
|
|
38
|
+
}
|
|
39
|
+
return { success: true, stageId, pipelineId };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=deletePipelineStage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deletePipelineStage.js","sourceRoot":"","sources":["../../src/utils/deletePipelineStage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AASzD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAsB,EACtB,UAAkB,EAClB,OAAe;IAEf,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC;IAClE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,UAAU;aACb,OAAO,CAAC,qBAAqB,CAAC;aAC9B,MAAM,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,MAA8E,CAAC;IAEpG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;QAC1F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Connection } from '@salesforce/core';
|
|
2
|
+
export type DeleteStageEnvironmentResult = {
|
|
3
|
+
success: boolean;
|
|
4
|
+
environmentId?: string;
|
|
5
|
+
stageId?: string;
|
|
6
|
+
error?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function deleteStageEnvironment(connection: Connection, environmentId: string): Promise<DeleteStageEnvironmentResult>;
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
export async function deleteStageEnvironment(connection, environmentId) {
|
|
18
|
+
validateSalesforceId(environmentId, 'environment');
|
|
19
|
+
const stageResult = await connection.query(`SELECT Id FROM DevopsPipelineStage WHERE DevOpsEnvironmentId = '${environmentId}'`);
|
|
20
|
+
const referencingStages = stageResult.records ?? [];
|
|
21
|
+
if (referencingStages.length > 0) {
|
|
22
|
+
const updates = referencingStages.map((s) => ({ Id: s.Id, DevOpsEnvironmentId: null }));
|
|
23
|
+
await connection.sobject('DevopsPipelineStage').update(updates);
|
|
24
|
+
}
|
|
25
|
+
const result = await connection.sobject('DevopsEnvironment').delete(environmentId);
|
|
26
|
+
const deleteResult = result;
|
|
27
|
+
if (!deleteResult.success) {
|
|
28
|
+
const errorMsg = deleteResult.errors?.map((e) => e.message).join('; ') ?? 'Unknown error';
|
|
29
|
+
return { success: false, error: errorMsg };
|
|
30
|
+
}
|
|
31
|
+
return { success: true, environmentId };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=deleteStageEnvironment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteStageEnvironment.js","sourceRoot":"","sources":["../../src/utils/deleteStageEnvironment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAStD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAsB,EACtB,aAAqB;IAErB,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,KAAK,CACxC,mEAAmE,aAAa,GAAG,CACpF,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;IACpD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,UAAU,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,MAA8E,CAAC;IAEpG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC;QAC1F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Connection } from '@salesforce/core';
|
|
2
|
+
export type UndeployedWorkItemsResult = {
|
|
3
|
+
undeployedWorkitemIds: string[];
|
|
4
|
+
};
|
|
5
|
+
export type ValidateDeployResult = {
|
|
6
|
+
success: boolean;
|
|
7
|
+
errorType: string | null;
|
|
8
|
+
errorDetails: string | null;
|
|
9
|
+
};
|
|
10
|
+
export type DeployStageResult = {
|
|
11
|
+
requestId: string;
|
|
12
|
+
status: string;
|
|
13
|
+
message: string;
|
|
14
|
+
promotedWorkitemIds: string[];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* GET /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/stages/{stageId}/undeployedWorkitems
|
|
18
|
+
*/
|
|
19
|
+
export declare function getUndeployedWorkItems(connection: Connection, pipelineId: string, stageId: string): Promise<UndeployedWorkItemsResult>;
|
|
20
|
+
/**
|
|
21
|
+
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/validatePromote
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateDeploy(connection: Connection, pipelineId: string, workItemIds: string[], targetStageId: string): Promise<ValidateDeployResult>;
|
|
24
|
+
/**
|
|
25
|
+
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/promote
|
|
26
|
+
* When workItemIds are provided, targets those specific items (allWorkItemsInStage: false).
|
|
27
|
+
* When omitted, lets Core fill IDs from undeployed/external-merge state (allWorkItemsInStage: true).
|
|
28
|
+
*/
|
|
29
|
+
export declare function executeDeploy(connection: Connection, pipelineId: string, targetStageId: string, fullDeploy?: boolean, testLevel?: string, runTests?: string[], workItemIds?: string[]): Promise<DeployStageResult>;
|
|
@@ -0,0 +1,68 @@
|
|
|
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
|
+
* GET /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/stages/{stageId}/undeployedWorkitems
|
|
18
|
+
*/
|
|
19
|
+
export async function getUndeployedWorkItems(connection, pipelineId, stageId) {
|
|
20
|
+
const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines/${pipelineId}/stages/${stageId}/undeployedWorkitems`;
|
|
21
|
+
const response = await connection.request({ method: 'GET', url: path });
|
|
22
|
+
return { undeployedWorkitemIds: response.undeployedWorkitemIds ?? [] };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/validatePromote
|
|
26
|
+
*/
|
|
27
|
+
export async function validateDeploy(connection, pipelineId, workItemIds, targetStageId) {
|
|
28
|
+
const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines/${pipelineId}/validatePromote`;
|
|
29
|
+
const response = await connection.request({
|
|
30
|
+
method: 'POST',
|
|
31
|
+
url: path,
|
|
32
|
+
body: JSON.stringify({ selectedWorkItemIds: workItemIds, targetStageId }),
|
|
33
|
+
headers: { 'Content-Type': 'application/json' },
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
success: response.success ?? true,
|
|
37
|
+
errorType: response.errorType ?? null,
|
|
38
|
+
errorDetails: response.errorDetails ?? null,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* POST /services/data/vXX.X/connect/devops/pipelines/{pipelineId}/promote
|
|
43
|
+
* When workItemIds are provided, targets those specific items (allWorkItemsInStage: false).
|
|
44
|
+
* When omitted, lets Core fill IDs from undeployed/external-merge state (allWorkItemsInStage: true).
|
|
45
|
+
*/
|
|
46
|
+
export async function executeDeploy(connection, pipelineId, targetStageId, fullDeploy = false, testLevel = 'Default', runTests = [], workItemIds) {
|
|
47
|
+
const path = `/services/data/v${connection.getApiVersion()}/connect/devops/pipelines/${pipelineId}/promote`;
|
|
48
|
+
const explicitIds = workItemIds && workItemIds.length > 0;
|
|
49
|
+
const response = await connection.request({
|
|
50
|
+
method: 'POST',
|
|
51
|
+
url: path,
|
|
52
|
+
body: JSON.stringify({
|
|
53
|
+
workitemIds: explicitIds ? workItemIds : [],
|
|
54
|
+
targetStageId,
|
|
55
|
+
allWorkItemsInStage: !explicitIds,
|
|
56
|
+
isCheckDeploy: false,
|
|
57
|
+
deployOptions: { testLevel, isFullDeploy: fullDeploy, runTests },
|
|
58
|
+
}),
|
|
59
|
+
headers: { 'Content-Type': 'application/json' },
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
requestId: response.requestId ?? '',
|
|
63
|
+
status: response.status ?? '',
|
|
64
|
+
message: response.message ?? '',
|
|
65
|
+
promotedWorkitemIds: response.promotedWorkitemIds ?? [],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=deployStage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployStage.js","sourceRoot":"","sources":["../../src/utils/deployStage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsCH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAsB,EACtB,UAAkB,EAClB,OAAe;IAEf,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,WAAW,OAAO,sBAAsB,CAAC;IAC1I,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAA8B,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACrG,OAAO,EAAE,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,IAAI,EAAE,EAAE,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAsB,EACtB,UAAkB,EAClB,WAAqB,EACrB,aAAqB;IAErB,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,kBAAkB,CAAC;IACpH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAyB;QAChE,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;QACzE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IACH,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI;QACjC,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;QACrC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,IAAI;KAC5C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAsB,EACtB,UAAkB,EAClB,aAAqB,EACrB,UAAU,GAAG,KAAK,EAClB,SAAS,GAAG,SAAS,EACrB,WAAqB,EAAE,EACvB,WAAsB;IAEtB,MAAM,IAAI,GAAG,mBAAmB,UAAU,CAAC,aAAa,EAAE,6BAA6B,UAAU,UAAU,CAAC;IAC5G,MAAM,WAAW,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAsB;QAC7D,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YAC3C,aAAa;YACb,mBAAmB,EAAE,CAAC,WAAW;YACjC,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE;SACjE,CAAC;QACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IACH,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,8 @@
|
|
|
1
|
+
import { Connection } from '@salesforce/core';
|
|
2
|
+
export type DetachProjectResult = {
|
|
3
|
+
success: boolean;
|
|
4
|
+
projectId: string;
|
|
5
|
+
pipelineId: string;
|
|
6
|
+
error?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function detachProject(connection: Connection, projectId: string, pipelineId: string): Promise<DetachProjectResult>;
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
export async function detachProject(connection, projectId, pipelineId) {
|
|
18
|
+
validateSalesforceId(projectId, 'project');
|
|
19
|
+
validateSalesforceId(pipelineId, 'pipeline');
|
|
20
|
+
const queryResult = await connection.query(`SELECT Id FROM DevopsProjectPipeline WHERE DevopsProjectId = '${projectId}' AND DevopsPipelineId = '${pipelineId}' LIMIT 1`);
|
|
21
|
+
const junction = (queryResult.records ?? [])[0];
|
|
22
|
+
if (!junction) {
|
|
23
|
+
throw new Error(`ProjectNotAttached:${projectId}:${pipelineId}`);
|
|
24
|
+
}
|
|
25
|
+
const result = await connection.sobject('DevopsProjectPipeline').delete(junction.Id);
|
|
26
|
+
if (result.success) {
|
|
27
|
+
return { success: true, projectId, pipelineId };
|
|
28
|
+
}
|
|
29
|
+
const errorMessages = result.errors?.map((e) => (typeof e === 'string' ? e : JSON.stringify(e))).join('; ');
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
projectId,
|
|
33
|
+
pipelineId,
|
|
34
|
+
error: errorMessages ?? 'Unknown error',
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=detachProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detachProject.js","sourceRoot":"","sources":["../../src/utils/detachProject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAStD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAsB,EACtB,SAAiB,EACjB,UAAkB;IAElB,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC3C,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,KAAK,CACxC,iEAAiE,SAAS,6BAA6B,UAAU,WAAW,CAC7H,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,IAAI,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAErF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAClD,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,SAAS;QACT,UAAU;QACV,KAAK,EAAE,aAAa,IAAI,eAAe;KACxC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Connection } from '@salesforce/core';
|
|
2
|
+
export type StageEnvironment = {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
export type PipelineStageDetail = {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string | null;
|
|
9
|
+
nextStageId: string | null;
|
|
10
|
+
branchName: string | null;
|
|
11
|
+
repositoryName: string | null;
|
|
12
|
+
repositoryOwner: string | null;
|
|
13
|
+
environment: StageEnvironment | null;
|
|
14
|
+
};
|
|
15
|
+
export type ConnectedProject = {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string | null;
|
|
18
|
+
};
|
|
19
|
+
export type PipelineGetResult = {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
description: string | null;
|
|
23
|
+
isActive: boolean;
|
|
24
|
+
stages: PipelineStageDetail[];
|
|
25
|
+
connectedProjects: ConnectedProject[];
|
|
26
|
+
};
|
|
27
|
+
export declare function getPipeline(connection: Connection, pipelineId: string): Promise<PipelineGetResult>;
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
function orderStages(stages) {
|
|
18
|
+
if (stages.length <= 1)
|
|
19
|
+
return stages;
|
|
20
|
+
const nextIds = new Set(stages.map((s) => s.nextStageId).filter(Boolean));
|
|
21
|
+
const first = stages.find((s) => !nextIds.has(s.id));
|
|
22
|
+
if (!first)
|
|
23
|
+
return stages;
|
|
24
|
+
const byId = new Map(stages.map((s) => [s.id, s]));
|
|
25
|
+
const ordered = [];
|
|
26
|
+
let current = first;
|
|
27
|
+
while (current) {
|
|
28
|
+
ordered.push(current);
|
|
29
|
+
current = current.nextStageId ? byId.get(current.nextStageId) : undefined;
|
|
30
|
+
}
|
|
31
|
+
return ordered;
|
|
32
|
+
}
|
|
33
|
+
export async function getPipeline(connection, pipelineId) {
|
|
34
|
+
validateSalesforceId(pipelineId, 'pipeline');
|
|
35
|
+
const pipelineResult = await connection.query(`SELECT Id, Name, Description, IsActive FROM DevopsPipeline WHERE Id = '${pipelineId}' LIMIT 1`);
|
|
36
|
+
const pipeline = (pipelineResult.records ?? [])[0];
|
|
37
|
+
if (!pipeline) {
|
|
38
|
+
throw new Error(`Pipeline not found: ${pipelineId}`);
|
|
39
|
+
}
|
|
40
|
+
const [stageResult, junctionResult] = await Promise.all([
|
|
41
|
+
connection.query(`SELECT Id, Name, NextStageId, DevopsPipelineId, SourceCodeRepositoryBranch.Name, SourceCodeRepositoryBranch.SourceCodeRepository.Name, SourceCodeRepositoryBranch.SourceCodeRepository.RepositoryOwner, DevOpsEnvironment.Id, DevOpsEnvironment.Name FROM DevopsPipelineStage WHERE DevopsPipelineId = '${pipelineId}'`),
|
|
42
|
+
connection.query(`SELECT DevopsProjectId, DevopsProject.Name FROM DevopsProjectPipeline WHERE DevopsPipelineId = '${pipelineId}'`),
|
|
43
|
+
]);
|
|
44
|
+
const stages = orderStages((stageResult.records ?? []).map((s) => ({
|
|
45
|
+
id: s.Id,
|
|
46
|
+
name: s.Name,
|
|
47
|
+
nextStageId: s.NextStageId ?? null,
|
|
48
|
+
branchName: s.SourceCodeRepositoryBranch?.Name ?? null,
|
|
49
|
+
repositoryName: s.SourceCodeRepositoryBranch?.SourceCodeRepository?.Name ?? null,
|
|
50
|
+
repositoryOwner: s.SourceCodeRepositoryBranch?.SourceCodeRepository?.RepositoryOwner ?? null,
|
|
51
|
+
environment: s.DevOpsEnvironment ? { id: s.DevOpsEnvironment.Id, name: s.DevOpsEnvironment.Name } : null,
|
|
52
|
+
})));
|
|
53
|
+
const connectedProjects = (junctionResult.records ?? []).map((j) => ({
|
|
54
|
+
id: j.DevopsProjectId,
|
|
55
|
+
name: j.DevopsProject?.Name ?? null,
|
|
56
|
+
}));
|
|
57
|
+
return {
|
|
58
|
+
id: pipeline.Id,
|
|
59
|
+
name: pipeline.Name,
|
|
60
|
+
description: pipeline.Description,
|
|
61
|
+
isActive: pipeline.IsActive,
|
|
62
|
+
stages,
|
|
63
|
+
connectedProjects,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=getPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPipeline.js","sourceRoot":"","sources":["../../src/utils/getPipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Connection } from '@salesforce/core';
|
|
2
|
+
export type RequestStatusResult = {
|
|
3
|
+
id: string;
|
|
4
|
+
status: string;
|
|
5
|
+
message: string | null;
|
|
6
|
+
errorDetails: string | null;
|
|
7
|
+
requestToken: string;
|
|
8
|
+
requestCompletionDate: string | null;
|
|
9
|
+
};
|
|
10
|
+
export declare function getRequestStatus(connection: Connection, requestToken: string): Promise<RequestStatusResult>;
|