@devrev/git-sdk 0.11.0 → 0.12.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/dist/adapter/adapter.d.ts +2 -2
- package/dist/config/create-config.d.ts +7 -0
- package/dist/config/create-config.js +2 -0
- package/dist/config/create-config.js.map +1 -1
- package/dist/devrev/client.js +1 -1
- package/dist/devrev/client.js.map +1 -1
- package/dist/devrev/managers/code_change_manager.js +9 -15
- package/dist/devrev/managers/code_change_manager.js.map +1 -1
- package/dist/devrev/managers/code_change_schema.js +42 -29
- package/dist/devrev/managers/code_change_schema.js.map +1 -1
- package/dist/devrev/managers/tenant_fragment_manager.d.ts +18 -1
- package/dist/devrev/managers/tenant_fragment_manager.js +93 -4
- package/dist/devrev/managers/tenant_fragment_manager.js.map +1 -1
- package/dist/devrev/types.d.ts +4 -0
- package/dist/devrev/types.js.map +1 -1
- package/dist/handlers/commit_push_handler.js +6 -3
- package/dist/handlers/commit_push_handler.js.map +1 -1
- package/dist/handlers/helpers.d.ts +22 -0
- package/dist/handlers/helpers.js +36 -2
- package/dist/handlers/helpers.js.map +1 -1
- package/dist/handlers/index.d.ts +4 -1
- package/dist/handlers/index.js +11 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/pr_edit_handler.d.ts +35 -0
- package/dist/handlers/pr_edit_handler.js +259 -0
- package/dist/handlers/pr_edit_handler.js.map +1 -0
- package/dist/handlers/pr_lifecycle_handler.d.ts +19 -0
- package/dist/handlers/pr_lifecycle_handler.js +58 -0
- package/dist/handlers/pr_lifecycle_handler.js.map +1 -0
- package/dist/handlers/pr_merge_handler.js +10 -3
- package/dist/handlers/pr_merge_handler.js.map +1 -1
- package/dist/handlers/pr_review_handler.d.ts +4 -1
- package/dist/handlers/pr_review_handler.js +14 -8
- package/dist/handlers/pr_review_handler.js.map +1 -1
- package/dist/handlers/registry.d.ts +0 -2
- package/dist/handlers/registry.js +4 -2
- package/dist/handlers/registry.js.map +1 -1
- package/dist/handlers/types.d.ts +6 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/orchestrator/event_orchestrator.d.ts +1 -0
- package/dist/orchestrator/event_orchestrator.js +3 -0
- package/dist/orchestrator/event_orchestrator.js.map +1 -1
- package/dist/types/config.d.ts +8 -0
- package/dist/types/events.d.ts +13 -2
- package/dist/types/events.js +1 -0
- package/dist/types/events.js.map +1 -1
- package/dist/types/types.d.ts +1 -0
- package/package.json +1 -1
|
@@ -14,18 +14,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.TenantFragmentManager = void 0;
|
|
16
16
|
const beta_devrev_sdk_1 = require("@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk");
|
|
17
|
+
const http_1 = require("../http");
|
|
17
18
|
const types_1 = require("../types");
|
|
18
19
|
const code_change_schema_1 = require("./code_change_schema");
|
|
20
|
+
const ALL_USERS_GROUP_IDENTIFIER = 'group-default9';
|
|
19
21
|
/**
|
|
20
22
|
* Manager for tenant fragment (custom schema) operations.
|
|
21
23
|
*/
|
|
22
24
|
class TenantFragmentManager {
|
|
23
|
-
constructor(betaApi) {
|
|
25
|
+
constructor(betaApi, endpoint, token) {
|
|
24
26
|
this.betaApi = betaApi;
|
|
27
|
+
this.endpoint = endpoint;
|
|
28
|
+
this.token = token;
|
|
25
29
|
}
|
|
26
30
|
/**
|
|
27
31
|
* Gets or creates the tenant fragment for code_change custom object.
|
|
28
32
|
* This ensures the schema exists before any code_change objects are created.
|
|
33
|
+
* When a new fragment is created, grants All Users access to code_change objects.
|
|
29
34
|
*
|
|
30
35
|
* @returns Success status and fragment ID
|
|
31
36
|
*/
|
|
@@ -33,7 +38,6 @@ class TenantFragmentManager {
|
|
|
33
38
|
var _a, _b, _c, _d;
|
|
34
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
35
40
|
try {
|
|
36
|
-
// Step 1: Check if tenant fragment already exists
|
|
37
41
|
const listRequest = {
|
|
38
42
|
deprecated: false,
|
|
39
43
|
is_custom_leaf_type: true,
|
|
@@ -43,10 +47,8 @@ class TenantFragmentManager {
|
|
|
43
47
|
const listResponse = yield this.betaApi.customSchemaFragmentsListPost(listRequest);
|
|
44
48
|
const fragmentId = (_c = (_b = (_a = listResponse.data) === null || _a === void 0 ? void 0 : _a.result) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.id;
|
|
45
49
|
if (fragmentId) {
|
|
46
|
-
// Fragment already exists
|
|
47
50
|
return { success: true, fragmentId };
|
|
48
51
|
}
|
|
49
|
-
// Step 2: Fragment doesn't exist - create it with schema
|
|
50
52
|
const setRequest = (0, code_change_schema_1.getCodeChangeSchemaSetRequest)();
|
|
51
53
|
const setResponse = yield this.betaApi.customSchemaFragmentsSet(setRequest);
|
|
52
54
|
const createdFragmentId = (_d = setResponse.data) === null || _d === void 0 ? void 0 : _d.id;
|
|
@@ -56,6 +58,10 @@ class TenantFragmentManager {
|
|
|
56
58
|
error: 'Failed to create tenant fragment: ID not returned from API',
|
|
57
59
|
};
|
|
58
60
|
}
|
|
61
|
+
const accessGranted = yield this.grantAllUsersAccessToCodeChange();
|
|
62
|
+
if (!accessGranted) {
|
|
63
|
+
console.log('Warning: Failed to grant All Users access to code_change objects');
|
|
64
|
+
}
|
|
59
65
|
return { success: true, fragmentId: createdFragmentId };
|
|
60
66
|
}
|
|
61
67
|
catch (error) {
|
|
@@ -63,6 +69,89 @@ class TenantFragmentManager {
|
|
|
63
69
|
}
|
|
64
70
|
});
|
|
65
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Gets the role set ID for the All Users group by listing access control entries.
|
|
74
|
+
*/
|
|
75
|
+
getAllUsersRoleSet() {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
const endpoint = `${this.endpoint}/internal/access-control-entries.list`;
|
|
79
|
+
const payload = {
|
|
80
|
+
principal: [ALL_USERS_GROUP_IDENTIFIER],
|
|
81
|
+
principal_type: ['group'],
|
|
82
|
+
role_type: ['role_set'],
|
|
83
|
+
};
|
|
84
|
+
try {
|
|
85
|
+
const response = yield (0, http_1.postCall)(endpoint, this.token, payload);
|
|
86
|
+
if (!response.success) {
|
|
87
|
+
console.log(`Error fetching role set for All Users group: ${response.message}`);
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const aces = ((_a = response.data) === null || _a === void 0 ? void 0 : _a.access_control_entries) || [];
|
|
91
|
+
if (aces.length === 0) {
|
|
92
|
+
console.log(`No role set found for All Users group (${ALL_USERS_GROUP_IDENTIFIER})`);
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
return (_b = aces[0].role) === null || _b === void 0 ? void 0 : _b.id;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.log(`Error fetching role set for All Users group: ${(0, types_1.getErrorMessage)(error)}`);
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Grants the All Users group access to code_change custom objects.
|
|
105
|
+
* Called after creating a new tenant fragment to ensure all users can
|
|
106
|
+
* view and interact with code_change objects.
|
|
107
|
+
*
|
|
108
|
+
* Uses a single role-sets.update call with create_roles to:
|
|
109
|
+
* 1. Create an OBJECT_ACCESS role with read+update privileges
|
|
110
|
+
* 2. Create a FIELD_ACCESS role with full field read/write access
|
|
111
|
+
*/
|
|
112
|
+
grantAllUsersAccessToCodeChange() {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
try {
|
|
115
|
+
const roleSetId = yield this.getAllUsersRoleSet();
|
|
116
|
+
if (!roleSetId) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const endpoint = `${this.endpoint}/internal/role-sets.update`;
|
|
120
|
+
const payload = {
|
|
121
|
+
create_roles: [
|
|
122
|
+
{
|
|
123
|
+
caveats: [],
|
|
124
|
+
custom_object_target: types_1.CODE_CHANGE_LEAF_TYPE,
|
|
125
|
+
include_all_subtypes: false,
|
|
126
|
+
privileges: ['read', 'update'],
|
|
127
|
+
target: 'custom_object',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
custom_object_target: types_1.CODE_CHANGE_LEAF_TYPE,
|
|
131
|
+
field_privileges: {
|
|
132
|
+
read: { all: true },
|
|
133
|
+
write: { all: true },
|
|
134
|
+
},
|
|
135
|
+
include_all_subtypes: true,
|
|
136
|
+
target: 'custom_object',
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
id: roleSetId,
|
|
140
|
+
roles: { remove: [] },
|
|
141
|
+
};
|
|
142
|
+
const response = yield (0, http_1.postCall)(endpoint, this.token, payload);
|
|
143
|
+
if (!response.success) {
|
|
144
|
+
console.log(`Error updating role set with code_change roles: ${response.message}`);
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
console.log(`Error granting All Users access: ${(0, types_1.getErrorMessage)(error)}`);
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
66
155
|
}
|
|
67
156
|
exports.TenantFragmentManager = TenantFragmentManager;
|
|
68
157
|
//# sourceMappingURL=tenant_fragment_manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant_fragment_manager.js","sourceRoot":"","sources":["../../../src/devrev/managers/tenant_fragment_manager.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;AAEH,qGAGyE;AAEzE,oCAAkE;AAClE,6DAAqE;AAarE;;GAEG;AACH,MAAa,qBAAqB;
|
|
1
|
+
{"version":3,"file":"tenant_fragment_manager.js","sourceRoot":"","sources":["../../../src/devrev/managers/tenant_fragment_manager.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;AAEH,qGAGyE;AAEzE,kCAAmC;AACnC,oCAAkE;AAClE,6DAAqE;AAarE,MAAM,0BAA0B,GAAG,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAa,qBAAqB;IAOhC,YAAY,OAA6B,EAAE,QAAgB,EAAE,KAAa;QACxE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACG,6BAA6B;;;YACjC,IAAI;gBACF,MAAM,WAAW,GAAqC;oBACpD,UAAU,EAAE,KAAK;oBACjB,mBAAmB,EAAE,IAAI;oBACzB,SAAS,EAAE,CAAC,6BAAqB,CAAC;oBAClC,KAAK,EAAE,CAAC,0CAAwB,CAAC,cAAc,CAAC;iBACjD,CAAC;gBAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CACnE,WAAW,CACZ,CAAC;gBACF,MAAM,UAAU,GAAG,MAAA,MAAA,MAAA,YAAY,CAAC,IAAI,0CAAE,MAAM,0CAAG,CAAC,CAAC,0CAAE,EAAE,CAAC;gBAEtD,IAAI,UAAU,EAAE;oBACd,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBACtC;gBAED,MAAM,UAAU,GAAG,IAAA,kDAA6B,GAAE,CAAC;gBAEnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAC7D,UAAU,CACX,CAAC;gBACF,MAAM,iBAAiB,GAAG,MAAA,WAAW,CAAC,IAAI,0CAAE,EAAE,CAAC;gBAE/C,IAAI,CAAC,iBAAiB,EAAE;oBACtB,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,4DAA4D;qBACpE,CAAC;iBACH;gBAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;gBACnE,IAAI,CAAC,aAAa,EAAE;oBAClB,OAAO,CAAC,GAAG,CACT,kEAAkE,CACnE,CAAC;iBACH;gBAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;aACzD;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC;aAC1D;;KACF;IAED;;OAEG;IACW,kBAAkB;;;YAC9B,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,uCAAuC,CAAC;YACzE,MAAM,OAAO,GAAG;gBACd,SAAS,EAAE,CAAC,0BAA0B,CAAC;gBACvC,cAAc,EAAE,CAAC,OAAO,CAAC;gBACzB,SAAS,EAAE,CAAC,UAAU,CAAC;aACxB,CAAC;YAEF,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;oBACrB,OAAO,CAAC,GAAG,CACT,gDAAgD,QAAQ,CAAC,OAAO,EAAE,CACnE,CAAC;oBACF,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM,IAAI,GAAG,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,sBAAsB,KAAI,EAAE,CAAC;gBACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBACrB,OAAO,CAAC,GAAG,CACT,0CAA0C,0BAA0B,GAAG,CACxE,CAAC;oBACF,OAAO,IAAI,CAAC;iBACb;gBAED,OAAO,MAAA,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,0CAAE,EAAE,CAAC;aACzB;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,CAAC,GAAG,CACT,gDAAgD,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CACzE,CAAC;gBACF,OAAO,IAAI,CAAC;aACb;;KACF;IAED;;;;;;;;OAQG;IACW,+BAA+B;;YAC3C,IAAI;gBACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAClD,IAAI,CAAC,SAAS,EAAE;oBACd,OAAO,KAAK,CAAC;iBACd;gBAED,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,4BAA4B,CAAC;gBAC9D,MAAM,OAAO,GAAG;oBACd,YAAY,EAAE;wBACZ;4BACE,OAAO,EAAE,EAAE;4BACX,oBAAoB,EAAE,6BAAqB;4BAC3C,oBAAoB,EAAE,KAAK;4BAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;4BAC9B,MAAM,EAAE,eAAe;yBACxB;wBACD;4BACE,oBAAoB,EAAE,6BAAqB;4BAC3C,gBAAgB,EAAE;gCAChB,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;gCACnB,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;6BACrB;4BACD,oBAAoB,EAAE,IAAI;4BAC1B,MAAM,EAAE,eAAe;yBACxB;qBACF;oBACD,EAAE,EAAE,SAAS;oBACb,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;iBACtB,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAQ,EAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;oBACrB,OAAO,CAAC,GAAG,CACT,mDAAmD,QAAQ,CAAC,OAAO,EAAE,CACtE,CAAC;oBACF,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAc,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1E,OAAO,KAAK,CAAC;aACd;QACH,CAAC;KAAA;CACF;AA3JD,sDA2JC"}
|
package/dist/devrev/types.d.ts
CHANGED
|
@@ -79,6 +79,7 @@ export declare const ISSUE_CODE_CHANGE_BACKWARD_NAME = "addresses";
|
|
|
79
79
|
*/
|
|
80
80
|
export interface CodeChangeCustomCreateRequest {
|
|
81
81
|
title: string;
|
|
82
|
+
description?: string;
|
|
82
83
|
source: CodeChangeSourceType;
|
|
83
84
|
repo_name: string;
|
|
84
85
|
source_branch: string;
|
|
@@ -89,12 +90,15 @@ export interface CodeChangeCustomCreateRequest {
|
|
|
89
90
|
pr_created_at?: string;
|
|
90
91
|
first_commit_at?: string;
|
|
91
92
|
last_commit_at?: string;
|
|
93
|
+
source_commits?: string[];
|
|
92
94
|
}
|
|
93
95
|
/**
|
|
94
96
|
* Request type for updating a code_change custom object.
|
|
95
97
|
*/
|
|
96
98
|
export interface CodeChangeCustomUpdateRequest {
|
|
97
99
|
id: string;
|
|
100
|
+
title?: string;
|
|
101
|
+
description?: string;
|
|
98
102
|
status?: CodeChangeStatusType;
|
|
99
103
|
source_commits?: string[];
|
|
100
104
|
target_commits?: string[];
|
package/dist/devrev/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/devrev/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/devrev/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,7 +78,7 @@ function updateCodeChangeWithCommits(codeChange, commits, context) {
|
|
|
78
78
|
function handlePushEvent(input, context) {
|
|
79
79
|
return __awaiter(this, void 0, void 0, function* () {
|
|
80
80
|
const { actor, commits, repository } = input;
|
|
81
|
-
const { eventType, adapter } = context;
|
|
81
|
+
const { eventType, adapter, botActors } = context;
|
|
82
82
|
const repoName = repository.name;
|
|
83
83
|
// If no commits in the push, nothing to update
|
|
84
84
|
if (commits.length === 0) {
|
|
@@ -90,7 +90,7 @@ function handlePushEvent(input, context) {
|
|
|
90
90
|
// Get associated PRs using the adapter
|
|
91
91
|
// Use the latest commit to find associated PRs
|
|
92
92
|
const latestCommit = commits[commits.length - 1];
|
|
93
|
-
const associatedPRs = adapter.getPullRequestByCommit(latestCommit);
|
|
93
|
+
const associatedPRs = yield adapter.getPullRequestByCommit(latestCommit);
|
|
94
94
|
// If no associated PRs, nothing to process
|
|
95
95
|
if (associatedPRs.length === 0) {
|
|
96
96
|
return {
|
|
@@ -101,6 +101,9 @@ function handlePushEvent(input, context) {
|
|
|
101
101
|
const results = [];
|
|
102
102
|
for (const pr of associatedPRs) {
|
|
103
103
|
try {
|
|
104
|
+
// Resolve the effective actor: if the event actor is a known bot,
|
|
105
|
+
// attribute to the PR author instead.
|
|
106
|
+
const effectiveActor = (0, helpers_1.resolveActorForAttribution)(actor, pr.author, botActors);
|
|
104
107
|
// Get or create code_change custom object for this PR using shared helper
|
|
105
108
|
const { codeChange, isNew } = yield (0, helpers_1.getOrCreateCodeChangeForPR)(pr, repoName, context);
|
|
106
109
|
// Update commit fields on the code_change
|
|
@@ -109,7 +112,7 @@ function handlePushEvent(input, context) {
|
|
|
109
112
|
// When a code_change is new, we may have already created timeline entries
|
|
110
113
|
// for all historical commits via adapter.getHistoricCommitsForPullRequest
|
|
111
114
|
if (!isNew) {
|
|
112
|
-
yield (0, helpers_1.createCommitTimelineEntries)(codeChange.id,
|
|
115
|
+
yield (0, helpers_1.createCommitTimelineEntries)(codeChange.id, effectiveActor, commits, pr.sourceBranch.name, repoName, eventType, context);
|
|
113
116
|
}
|
|
114
117
|
results.push({
|
|
115
118
|
message: isNew
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit_push_handler.js","sourceRoot":"","sources":["../../src/handlers/commit_push_handler.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;AAIH,2CAIyB;AAIzB,
|
|
1
|
+
{"version":3,"file":"commit_push_handler.js","sourceRoot":"","sources":["../../src/handlers/commit_push_handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,28 @@
|
|
|
7
7
|
import { CustomObject } from '@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk';
|
|
8
8
|
import { NormalizedActor, NormalizedCommit, NormalizedPullRequest } from '../types/types';
|
|
9
9
|
import { HandlerContext, HandlerResult } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Checks whether an actor is a known bot based on the configured bot_actors list.
|
|
12
|
+
* Matches against both `username` and `external_id`.
|
|
13
|
+
*
|
|
14
|
+
* @param actor - The actor to check
|
|
15
|
+
* @param botActors - List of bot usernames or external IDs
|
|
16
|
+
* @returns true if the actor matches any entry in botActors
|
|
17
|
+
*/
|
|
18
|
+
export declare function isBotActor(actor: NormalizedActor, botActors: string[]): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Resolves the effective actor for attribution purposes.
|
|
21
|
+
*
|
|
22
|
+
* When the event actor is a known bot (e.g., dependabot, renovate), this
|
|
23
|
+
* function returns the PR author instead so that timeline entries and
|
|
24
|
+
* commit attribution are credited to the human who owns the PR.
|
|
25
|
+
*
|
|
26
|
+
* @param eventActor - The actor from the event payload (may be a bot)
|
|
27
|
+
* @param prAuthor - The PR author to fall back to when the actor is a bot
|
|
28
|
+
* @param botActors - List of bot usernames or external IDs
|
|
29
|
+
* @returns The PR author if the event actor is a bot, otherwise the event actor
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveActorForAttribution(eventActor: NormalizedActor, prAuthor: NormalizedActor, botActors: string[]): NormalizedActor;
|
|
10
32
|
/**
|
|
11
33
|
* Normalizes a NormalizedActor to the format required by timeline API calls.
|
|
12
34
|
* Handles undefined values by converting to empty strings.
|
package/dist/handlers/helpers.js
CHANGED
|
@@ -15,8 +15,42 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
15
15
|
});
|
|
16
16
|
};
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.getOrCreateCodeChangeForPR = exports.createCommitTimelineEntries = exports.createPRTimelineEntry = exports.createPRHandlerErrorResult = exports.getCodeChangeCustomField = exports.normalizeActorForTimeline = void 0;
|
|
18
|
+
exports.getOrCreateCodeChangeForPR = exports.createCommitTimelineEntries = exports.createPRTimelineEntry = exports.createPRHandlerErrorResult = exports.getCodeChangeCustomField = exports.normalizeActorForTimeline = exports.resolveActorForAttribution = exports.isBotActor = void 0;
|
|
19
19
|
const types_1 = require("../devrev/types");
|
|
20
|
+
/**
|
|
21
|
+
* Checks whether an actor is a known bot based on the configured bot_actors list.
|
|
22
|
+
* Matches against both `username` and `external_id`.
|
|
23
|
+
*
|
|
24
|
+
* @param actor - The actor to check
|
|
25
|
+
* @param botActors - List of bot usernames or external IDs
|
|
26
|
+
* @returns true if the actor matches any entry in botActors
|
|
27
|
+
*/
|
|
28
|
+
function isBotActor(actor, botActors) {
|
|
29
|
+
if (!botActors || botActors.length === 0) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return botActors.some((bot) => bot === actor.username || bot === actor.external_id);
|
|
33
|
+
}
|
|
34
|
+
exports.isBotActor = isBotActor;
|
|
35
|
+
/**
|
|
36
|
+
* Resolves the effective actor for attribution purposes.
|
|
37
|
+
*
|
|
38
|
+
* When the event actor is a known bot (e.g., dependabot, renovate), this
|
|
39
|
+
* function returns the PR author instead so that timeline entries and
|
|
40
|
+
* commit attribution are credited to the human who owns the PR.
|
|
41
|
+
*
|
|
42
|
+
* @param eventActor - The actor from the event payload (may be a bot)
|
|
43
|
+
* @param prAuthor - The PR author to fall back to when the actor is a bot
|
|
44
|
+
* @param botActors - List of bot usernames or external IDs
|
|
45
|
+
* @returns The PR author if the event actor is a bot, otherwise the event actor
|
|
46
|
+
*/
|
|
47
|
+
function resolveActorForAttribution(eventActor, prAuthor, botActors) {
|
|
48
|
+
if (isBotActor(eventActor, botActors)) {
|
|
49
|
+
return prAuthor;
|
|
50
|
+
}
|
|
51
|
+
return eventActor;
|
|
52
|
+
}
|
|
53
|
+
exports.resolveActorForAttribution = resolveActorForAttribution;
|
|
20
54
|
/**
|
|
21
55
|
* Normalizes a NormalizedActor to the format required by timeline API calls.
|
|
22
56
|
* Handles undefined values by converting to empty strings.
|
|
@@ -151,7 +185,7 @@ function getOrCreateCodeChangeForPR(pr, repoName, context) {
|
|
|
151
185
|
let lastCommitAt;
|
|
152
186
|
let allCommits = [];
|
|
153
187
|
try {
|
|
154
|
-
allCommits = adapter.getHistoricCommitsForPullRequest(pr);
|
|
188
|
+
allCommits = yield adapter.getHistoricCommitsForPullRequest(pr);
|
|
155
189
|
if (allCommits.length > 0) {
|
|
156
190
|
firstCommitAt = allCommits[0].timestamp;
|
|
157
191
|
lastCommitAt = allCommits[allCommits.length - 1].timestamp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/handlers/helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/handlers/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers/index.d.ts
CHANGED
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
* DevRev code_change custom objects.
|
|
6
6
|
*/
|
|
7
7
|
export { handlePushEvent } from './commit_push_handler';
|
|
8
|
-
export { handlePRCreate, handlePRClose
|
|
8
|
+
export { handlePRCreate, handlePRClose } from './pr_create_handler';
|
|
9
|
+
export { handlePREdit } from './pr_edit_handler';
|
|
10
|
+
export { handlePRLifecycleEvent } from './pr_lifecycle_handler';
|
|
9
11
|
export { handlePRReview } from './pr_review_handler';
|
|
10
12
|
export { handlePRMerge } from './pr_merge_handler';
|
|
11
13
|
export { DEFAULT_HANDLER_REGISTRY } from './registry';
|
|
14
|
+
export { isBotActor, resolveActorForAttribution } from './helpers';
|
|
12
15
|
export type { EventHandler, HandlerContext, HandlerRegistry, HandlerResult, } from './types';
|
package/dist/handlers/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* DevRev code_change custom objects.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.DEFAULT_HANDLER_REGISTRY = exports.handlePRMerge = exports.handlePRReview = exports.handlePRClose = exports.handlePRCreate = exports.handlePushEvent = void 0;
|
|
9
|
+
exports.resolveActorForAttribution = exports.isBotActor = exports.DEFAULT_HANDLER_REGISTRY = exports.handlePRMerge = exports.handlePRReview = exports.handlePRLifecycleEvent = exports.handlePREdit = exports.handlePRClose = exports.handlePRCreate = exports.handlePushEvent = void 0;
|
|
10
10
|
// Push event handler
|
|
11
11
|
var commit_push_handler_1 = require("./commit_push_handler");
|
|
12
12
|
Object.defineProperty(exports, "handlePushEvent", { enumerable: true, get: function () { return commit_push_handler_1.handlePushEvent; } });
|
|
@@ -14,6 +14,12 @@ Object.defineProperty(exports, "handlePushEvent", { enumerable: true, get: funct
|
|
|
14
14
|
var pr_create_handler_1 = require("./pr_create_handler");
|
|
15
15
|
Object.defineProperty(exports, "handlePRCreate", { enumerable: true, get: function () { return pr_create_handler_1.handlePRCreate; } });
|
|
16
16
|
Object.defineProperty(exports, "handlePRClose", { enumerable: true, get: function () { return pr_create_handler_1.handlePRClose; } });
|
|
17
|
+
// PR edit handler
|
|
18
|
+
var pr_edit_handler_1 = require("./pr_edit_handler");
|
|
19
|
+
Object.defineProperty(exports, "handlePREdit", { enumerable: true, get: function () { return pr_edit_handler_1.handlePREdit; } });
|
|
20
|
+
// PR lifecycle handler (reopen)
|
|
21
|
+
var pr_lifecycle_handler_1 = require("./pr_lifecycle_handler");
|
|
22
|
+
Object.defineProperty(exports, "handlePRLifecycleEvent", { enumerable: true, get: function () { return pr_lifecycle_handler_1.handlePRLifecycleEvent; } });
|
|
17
23
|
// PR review handler
|
|
18
24
|
var pr_review_handler_1 = require("./pr_review_handler");
|
|
19
25
|
Object.defineProperty(exports, "handlePRReview", { enumerable: true, get: function () { return pr_review_handler_1.handlePRReview; } });
|
|
@@ -23,4 +29,8 @@ Object.defineProperty(exports, "handlePRMerge", { enumerable: true, get: functio
|
|
|
23
29
|
// Handler registry
|
|
24
30
|
var registry_1 = require("./registry");
|
|
25
31
|
Object.defineProperty(exports, "DEFAULT_HANDLER_REGISTRY", { enumerable: true, get: function () { return registry_1.DEFAULT_HANDLER_REGISTRY; } });
|
|
32
|
+
// Bot actor utilities
|
|
33
|
+
var helpers_1 = require("./helpers");
|
|
34
|
+
Object.defineProperty(exports, "isBotActor", { enumerable: true, get: function () { return helpers_1.isBotActor; } });
|
|
35
|
+
Object.defineProperty(exports, "resolveActorForAttribution", { enumerable: true, get: function () { return helpers_1.resolveActorForAttribution; } });
|
|
26
36
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,qBAAqB;AACrB,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AAExB,cAAc;AACd,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,qBAAqB;AACrB,6DAAwD;AAA/C,sHAAA,eAAe,OAAA;AAExB,cAAc;AACd,yDAAoE;AAA3D,mHAAA,cAAc,OAAA;AAAE,kHAAA,aAAa,OAAA;AAEtC,kBAAkB;AAClB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAErB,gCAAgC;AAChC,+DAAgE;AAAvD,8HAAA,sBAAsB,OAAA;AAE/B,oBAAoB;AACpB,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AAEvB,mBAAmB;AACnB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,mBAAmB;AACnB,uCAAsD;AAA7C,oHAAA,wBAAwB,OAAA;AAEjC,sBAAsB;AACtB,qCAAmE;AAA1D,qGAAA,UAAU,OAAA;AAAE,qHAAA,0BAA0B,OAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for pull request edit events.
|
|
3
|
+
*
|
|
4
|
+
* This module handles PR metadata changes — title, description, branch,
|
|
5
|
+
* draft status, and reviewer assignments. It updates the code_change
|
|
6
|
+
* custom object and re-diffs issue links based on the updated PR content.
|
|
7
|
+
*
|
|
8
|
+
* Reviewer updates are handled via three possible inputs:
|
|
9
|
+
* - addRequestedReviewer / removeRequestedReviewer: a single actor to add or remove.
|
|
10
|
+
* - pullRequest.requestedReviewers: the complete set of currently requested reviewers.
|
|
11
|
+
* - A combination of both: the final set is computed by applying the single
|
|
12
|
+
* add/remove to the full list, then diffing against the existing code_change.
|
|
13
|
+
*/
|
|
14
|
+
import { NormalizedPullRequestEditEvent } from '../types/events';
|
|
15
|
+
import { HandlerContext, HandlerResult } from './types';
|
|
16
|
+
/**
|
|
17
|
+
* Process a pull request edit event.
|
|
18
|
+
*
|
|
19
|
+
* If the code_change is newly created (isNew=true), no further updates are
|
|
20
|
+
* needed since getOrCreateCodeChangeForPR already sets all initial data and
|
|
21
|
+
* creates issue links.
|
|
22
|
+
*
|
|
23
|
+
* For existing code_changes, the handler will:
|
|
24
|
+
* 1. Update title/description if they differ
|
|
25
|
+
* 2. Handle draft status: draft→ready (WAITING_FOR_REVIEW) or ready→draft (DRAFT)
|
|
26
|
+
* 3. Resolve requested reviewers per the combined logic:
|
|
27
|
+
* - requestedReviewers + add/remove: compute final list, diff vs existing
|
|
28
|
+
* - Only add/remove: use add_requested_reviewer / remove_requested_reviewer
|
|
29
|
+
* - Only requestedReviewers: diff vs existing (add new, remove stale)
|
|
30
|
+
* 4. Re-diff issue links
|
|
31
|
+
*
|
|
32
|
+
* No separate timeline entry is created — attribute changes generate timeline
|
|
33
|
+
* entries via DevRev's change tracking.
|
|
34
|
+
*/
|
|
35
|
+
export declare function handlePREdit(input: NormalizedPullRequestEditEvent, context: HandlerContext): Promise<HandlerResult>;
|