@devrev/git-sdk 0.11.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 +2 -0
- package/dist/adapter/adapter.d.ts +9 -0
- package/dist/adapter/adapter.js +3 -0
- package/dist/adapter/adapter.js.map +1 -0
- package/dist/config/create-config.d.ts +34 -0
- package/dist/config/create-config.js +33 -0
- package/dist/config/create-config.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.js +9 -0
- package/dist/config/index.js.map +1 -0
- package/dist/devrev/client.d.ts +104 -0
- package/dist/devrev/client.js +113 -0
- package/dist/devrev/client.js.map +1 -0
- package/dist/devrev/http.d.ts +42 -0
- package/dist/devrev/http.js +105 -0
- package/dist/devrev/http.js.map +1 -0
- package/dist/devrev/index.d.ts +7 -0
- package/dist/devrev/index.js +43 -0
- package/dist/devrev/index.js.map +1 -0
- package/dist/devrev/managers/code_change_manager.d.ts +48 -0
- package/dist/devrev/managers/code_change_manager.js +227 -0
- package/dist/devrev/managers/code_change_manager.js.map +1 -0
- package/dist/devrev/managers/code_change_schema.d.ts +12 -0
- package/dist/devrev/managers/code_change_schema.js +317 -0
- package/dist/devrev/managers/code_change_schema.js.map +1 -0
- package/dist/devrev/managers/custom_link_type_manager.d.ts +33 -0
- package/dist/devrev/managers/custom_link_type_manager.js +94 -0
- package/dist/devrev/managers/custom_link_type_manager.js.map +1 -0
- package/dist/devrev/managers/dev_user_manager.d.ts +53 -0
- package/dist/devrev/managers/dev_user_manager.js +155 -0
- package/dist/devrev/managers/dev_user_manager.js.map +1 -0
- package/dist/devrev/managers/index.d.ts +9 -0
- package/dist/devrev/managers/index.js +20 -0
- package/dist/devrev/managers/index.js.map +1 -0
- package/dist/devrev/managers/link_manager.d.ts +41 -0
- package/dist/devrev/managers/link_manager.js +111 -0
- package/dist/devrev/managers/link_manager.js.map +1 -0
- package/dist/devrev/managers/tenant_fragment_manager.d.ts +26 -0
- package/dist/devrev/managers/tenant_fragment_manager.js +68 -0
- package/dist/devrev/managers/tenant_fragment_manager.js.map +1 -0
- package/dist/devrev/managers/timeline_manager.d.ts +86 -0
- package/dist/devrev/managers/timeline_manager.js +184 -0
- package/dist/devrev/managers/timeline_manager.js.map +1 -0
- package/dist/devrev/types.d.ts +139 -0
- package/dist/devrev/types.js +127 -0
- package/dist/devrev/types.js.map +1 -0
- package/dist/handlers/commit_push_handler.d.ts +31 -0
- package/dist/handlers/commit_push_handler.js +145 -0
- package/dist/handlers/commit_push_handler.js.map +1 -0
- package/dist/handlers/helpers.d.ts +87 -0
- package/dist/handlers/helpers.js +201 -0
- package/dist/handlers/helpers.js.map +1 -0
- package/dist/handlers/index.d.ts +12 -0
- package/dist/handlers/index.js +26 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/pr_create_handler.d.ts +36 -0
- package/dist/handlers/pr_create_handler.js +121 -0
- package/dist/handlers/pr_create_handler.js.map +1 -0
- package/dist/handlers/pr_merge_handler.d.ts +29 -0
- package/dist/handlers/pr_merge_handler.js +86 -0
- package/dist/handlers/pr_merge_handler.js.map +1 -0
- package/dist/handlers/pr_review_handler.d.ts +30 -0
- package/dist/handlers/pr_review_handler.js +109 -0
- package/dist/handlers/pr_review_handler.js.map +1 -0
- package/dist/handlers/registry.d.ts +9 -0
- package/dist/handlers/registry.js +22 -0
- package/dist/handlers/registry.js.map +1 -0
- package/dist/handlers/types.d.ts +46 -0
- package/dist/handlers/types.js +6 -0
- package/dist/handlers/types.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator/event_orchestrator.d.ts +99 -0
- package/dist/orchestrator/event_orchestrator.js +137 -0
- package/dist/orchestrator/event_orchestrator.js.map +1 -0
- package/dist/orchestrator/index.d.ts +7 -0
- package/dist/orchestrator/index.js +12 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/types/config.d.ts +22 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/events.d.ts +50 -0
- package/dist/types/events.js +14 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/provider.d.ts +20 -0
- package/dist/types/provider.js +14 -0
- package/dist/types/provider.js.map +1 -0
- package/dist/types/types.d.ts +48 -0
- package/dist/types/types.js +9 -0
- package/dist/types/types.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Manager for custom link type operations.
|
|
4
|
+
*/
|
|
5
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
6
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
9
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
11
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CustomLinkTypeManager = void 0;
|
|
16
|
+
const types_1 = require("../types");
|
|
17
|
+
/**
|
|
18
|
+
* Request body for creating the issue_code_change custom link type.
|
|
19
|
+
* Defined as a constant since it never changes.
|
|
20
|
+
*/
|
|
21
|
+
const ISSUE_CODE_CHANGE_LINK_CREATE_REQUEST = {
|
|
22
|
+
backward_name: types_1.ISSUE_CODE_CHANGE_BACKWARD_NAME,
|
|
23
|
+
forward_name: types_1.ISSUE_CODE_CHANGE_FORWARD_NAME,
|
|
24
|
+
name: types_1.ISSUE_CODE_CHANGE_LINK_TYPE_NAME,
|
|
25
|
+
source_types: [
|
|
26
|
+
{
|
|
27
|
+
leaf_type: 'issue',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
target_types: [
|
|
31
|
+
{
|
|
32
|
+
is_custom_leaf_type: true,
|
|
33
|
+
leaf_type: types_1.CODE_CHANGE_LEAF_TYPE,
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
tooltip: types_1.ISSUE_CODE_CHANGE_LINK_TOOLTIP,
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Manager for custom link type operations.
|
|
40
|
+
*/
|
|
41
|
+
class CustomLinkTypeManager {
|
|
42
|
+
constructor(betaApi) {
|
|
43
|
+
this.cachedLinkTypeId = undefined;
|
|
44
|
+
this.betaApi = betaApi;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Gets or creates the custom link type for linking issues to code_change custom objects.
|
|
48
|
+
* This ensures the link type exists before any PR events are processed.
|
|
49
|
+
*
|
|
50
|
+
* @returns Success status and link type ID
|
|
51
|
+
*/
|
|
52
|
+
getOrCreateIssueCodeChangeLinkType() {
|
|
53
|
+
var _a, _b, _c, _d, _e;
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
// Return cached ID if available
|
|
56
|
+
if (this.cachedLinkTypeId) {
|
|
57
|
+
return { success: true, linkTypeId: this.cachedLinkTypeId };
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
// Check if the link type already exists
|
|
61
|
+
const listRequest = {
|
|
62
|
+
name: [types_1.ISSUE_CODE_CHANGE_LINK_TYPE_NAME],
|
|
63
|
+
};
|
|
64
|
+
const listResponse = yield this.betaApi.customLinkTypeListPost(listRequest);
|
|
65
|
+
const linkTypeId = (_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;
|
|
66
|
+
if (linkTypeId) {
|
|
67
|
+
this.cachedLinkTypeId = linkTypeId;
|
|
68
|
+
return { success: true, linkTypeId };
|
|
69
|
+
}
|
|
70
|
+
// Create the custom link type if it doesn't exist
|
|
71
|
+
const createResponse = yield this.betaApi.customLinkTypeCreate(ISSUE_CODE_CHANGE_LINK_CREATE_REQUEST);
|
|
72
|
+
const createdLinkTypeId = (_e = (_d = createResponse.data) === null || _d === void 0 ? void 0 : _d.custom_link_type) === null || _e === void 0 ? void 0 : _e.id;
|
|
73
|
+
if (!createdLinkTypeId) {
|
|
74
|
+
return { success: false, error: 'Failed to create custom link type: ID not returned' };
|
|
75
|
+
}
|
|
76
|
+
this.cachedLinkTypeId = createdLinkTypeId;
|
|
77
|
+
return { success: true, linkTypeId: createdLinkTypeId };
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
return { success: false, error: (0, types_1.getErrorMessage)(error) };
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Gets the cached link type ID if available.
|
|
86
|
+
*
|
|
87
|
+
* @returns The cached link type ID or undefined
|
|
88
|
+
*/
|
|
89
|
+
getCachedLinkTypeId() {
|
|
90
|
+
return this.cachedLinkTypeId;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.CustomLinkTypeManager = CustomLinkTypeManager;
|
|
94
|
+
//# sourceMappingURL=custom_link_type_manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom_link_type_manager.js","sourceRoot":"","sources":["../../../src/devrev/managers/custom_link_type_manager.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;AAOH,oCAOkB;AAalB;;;GAGG;AACH,MAAM,qCAAqC,GAAgC;IACzE,aAAa,EAAE,uCAA+B;IAC9C,YAAY,EAAE,sCAA8B;IAC5C,IAAI,EAAE,wCAAgC;IACtC,YAAY,EAAE;QACZ;YACE,SAAS,EAAE,OAAO;SACnB;KACF;IACD,YAAY,EAAE;QACZ;YACE,mBAAmB,EAAE,IAAI;YACzB,SAAS,EAAE,6BAAqB;SACjC;KACF;IACD,OAAO,EAAE,sCAA8B;CACxC,CAAC;AAEF;;GAEG;AACH,MAAa,qBAAqB;IAKhC,YAAY,OAA6B;QAFjC,qBAAgB,GAAuB,SAAS,CAAC;QAGvD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACG,kCAAkC;;;YACtC,gCAAgC;YAChC,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAC7D;YAED,IAAI;gBACF,wCAAwC;gBACxC,MAAM,WAAW,GAA8B;oBAC7C,IAAI,EAAE,CAAC,wCAAgC,CAAC;iBACzC,CAAC;gBACF,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;gBACzD,MAAM,UAAU,GAAG,MAAA,MAAA,MAAA,YAAY,CAAC,IAAI,0CAAE,MAAM,0CAAG,CAAC,CAAC,0CAAE,EAAE,CAAC;gBAEtD,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;oBACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBACtC;gBAED,kDAAkD;gBAClD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC5D,qCAAqC,CACtC,CAAC;gBACF,MAAM,iBAAiB,GAAG,MAAA,MAAA,cAAc,CAAC,IAAI,0CAAE,gBAAgB,0CAAE,EAAE,CAAC;gBAEpE,IAAI,CAAC,iBAAiB,EAAE;oBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;iBACxF;gBAED,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC;gBAC1C,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;;;;OAIG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AA5DD,sDA4DC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manager for DevRev user operations.
|
|
3
|
+
*/
|
|
4
|
+
import { GitProvider } from '../types';
|
|
5
|
+
import type { betaSDK } from '@devrev/typescript-sdk';
|
|
6
|
+
/**
|
|
7
|
+
* Manager for DevRev user resolution and lookup.
|
|
8
|
+
*/
|
|
9
|
+
export declare class DevUserManager {
|
|
10
|
+
private betaApi;
|
|
11
|
+
private issuer;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new DevUserManager.
|
|
14
|
+
*
|
|
15
|
+
* @param betaApi - The DevRev beta API instance
|
|
16
|
+
* @param provider - The Git provider used as issuer for external identity lookup (defaults to 'unknown')
|
|
17
|
+
*/
|
|
18
|
+
constructor(betaApi: betaSDK.Api<unknown>, provider?: GitProvider);
|
|
19
|
+
/**
|
|
20
|
+
* Resolves a DevRev user ID from an external actor.
|
|
21
|
+
* First tries to find by external_identity (e.g., provider user ID),
|
|
22
|
+
* then falls back to email.
|
|
23
|
+
*
|
|
24
|
+
* @param externalId - Optional external user ID (e.g., provider user ID)
|
|
25
|
+
* @param email - Optional email for fallback lookup
|
|
26
|
+
* @returns The DevRev user ID or undefined if not found
|
|
27
|
+
*/
|
|
28
|
+
resolveByExternalId(externalId?: string, email?: string): Promise<string | undefined>;
|
|
29
|
+
/**
|
|
30
|
+
* Resolves a DevRev user ID by external identity only (no email fallback).
|
|
31
|
+
* Throws if no verified user is found.
|
|
32
|
+
*
|
|
33
|
+
* @param externalId - The external user ID (e.g., provider user ID)
|
|
34
|
+
* @returns The DevRev user ID
|
|
35
|
+
* @throws If no verified user is found
|
|
36
|
+
*/
|
|
37
|
+
getByExternalId(externalId: string): Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Finds the first dev user with a verified external identity matching the given ID.
|
|
40
|
+
*
|
|
41
|
+
* @param devUsers - List of dev user objects from the API
|
|
42
|
+
* @param externalId - The external ID to match
|
|
43
|
+
* @returns The dev user ID if found, undefined otherwise
|
|
44
|
+
*/
|
|
45
|
+
private findVerifiedDevUser;
|
|
46
|
+
/**
|
|
47
|
+
* Lists dev users by email.
|
|
48
|
+
*
|
|
49
|
+
* @param emails - Array of email addresses to search for
|
|
50
|
+
* @returns Array of dev user objects
|
|
51
|
+
*/
|
|
52
|
+
listByEmail(emails: string[]): Promise<Record<string, any>[]>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Manager for DevRev user operations.
|
|
4
|
+
*/
|
|
5
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
6
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
9
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
11
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.DevUserManager = void 0;
|
|
16
|
+
const types_1 = require("../types");
|
|
17
|
+
/**
|
|
18
|
+
* Manager for DevRev user resolution and lookup.
|
|
19
|
+
*/
|
|
20
|
+
class DevUserManager {
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new DevUserManager.
|
|
23
|
+
*
|
|
24
|
+
* @param betaApi - The DevRev beta API instance
|
|
25
|
+
* @param provider - The Git provider used as issuer for external identity lookup (defaults to 'unknown')
|
|
26
|
+
*/
|
|
27
|
+
constructor(betaApi, provider = types_1.GitProviderValues.UNKNOWN) {
|
|
28
|
+
this.betaApi = betaApi;
|
|
29
|
+
this.issuer = provider;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolves a DevRev user ID from an external actor.
|
|
33
|
+
* First tries to find by external_identity (e.g., provider user ID),
|
|
34
|
+
* then falls back to email.
|
|
35
|
+
*
|
|
36
|
+
* @param externalId - Optional external user ID (e.g., provider user ID)
|
|
37
|
+
* @param email - Optional email for fallback lookup
|
|
38
|
+
* @returns The DevRev user ID or undefined if not found
|
|
39
|
+
*/
|
|
40
|
+
resolveByExternalId(externalId, email) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
// First, try to find by external identity if provided
|
|
43
|
+
if (externalId) {
|
|
44
|
+
try {
|
|
45
|
+
const request = {
|
|
46
|
+
external_identity: [
|
|
47
|
+
{
|
|
48
|
+
id: externalId,
|
|
49
|
+
issuer: this.issuer,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
const response = yield this.betaApi.devUsersListPost(request);
|
|
54
|
+
const devUsers = response.data.dev_users || [];
|
|
55
|
+
const match = this.findVerifiedDevUser(devUsers, externalId);
|
|
56
|
+
if (match) {
|
|
57
|
+
return match;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.log(`Error looking up dev user by external identity: ${(0, types_1.getErrorMessage)(error)}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Fallback: try to find by email if provided
|
|
65
|
+
if (email) {
|
|
66
|
+
try {
|
|
67
|
+
const request = {
|
|
68
|
+
email: [email],
|
|
69
|
+
};
|
|
70
|
+
const response = yield this.betaApi.devUsersListPost(request);
|
|
71
|
+
const devUsers = response.data.dev_users || [];
|
|
72
|
+
if (devUsers.length > 0) {
|
|
73
|
+
return devUsers[0].id;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.log(`Error looking up dev user by email: ${(0, types_1.getErrorMessage)(error)}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return undefined;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Resolves a DevRev user ID by external identity only (no email fallback).
|
|
85
|
+
* Throws if no verified user is found.
|
|
86
|
+
*
|
|
87
|
+
* @param externalId - The external user ID (e.g., provider user ID)
|
|
88
|
+
* @returns The DevRev user ID
|
|
89
|
+
* @throws If no verified user is found
|
|
90
|
+
*/
|
|
91
|
+
getByExternalId(externalId) {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
const request = {
|
|
94
|
+
external_identity: [
|
|
95
|
+
{
|
|
96
|
+
id: externalId,
|
|
97
|
+
issuer: this.issuer,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
};
|
|
101
|
+
const response = yield this.betaApi.devUsersListPost(request);
|
|
102
|
+
const devUsers = response.data.dev_users || [];
|
|
103
|
+
if (devUsers.length === 0) {
|
|
104
|
+
throw new Error(`No dev user found for external ID ${externalId}`);
|
|
105
|
+
}
|
|
106
|
+
const match = this.findVerifiedDevUser(devUsers, externalId);
|
|
107
|
+
if (match) {
|
|
108
|
+
return match;
|
|
109
|
+
}
|
|
110
|
+
throw new Error(`No verified dev user found for external ID ${externalId}`);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Finds the first dev user with a verified external identity matching the given ID.
|
|
115
|
+
*
|
|
116
|
+
* @param devUsers - List of dev user objects from the API
|
|
117
|
+
* @param externalId - The external ID to match
|
|
118
|
+
* @returns The dev user ID if found, undefined otherwise
|
|
119
|
+
*/
|
|
120
|
+
findVerifiedDevUser(devUsers, externalId) {
|
|
121
|
+
for (const devUser of devUsers) {
|
|
122
|
+
const externalIdentities = devUser.external_identities || [];
|
|
123
|
+
for (const identity of externalIdentities) {
|
|
124
|
+
if (identity.id === externalId &&
|
|
125
|
+
identity.issuer === this.issuer &&
|
|
126
|
+
identity.is_verified) {
|
|
127
|
+
return devUser.id;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Lists dev users by email.
|
|
135
|
+
*
|
|
136
|
+
* @param emails - Array of email addresses to search for
|
|
137
|
+
* @returns Array of dev user objects
|
|
138
|
+
*/
|
|
139
|
+
listByEmail(emails) {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
try {
|
|
142
|
+
const request = {
|
|
143
|
+
email: emails,
|
|
144
|
+
};
|
|
145
|
+
const response = yield this.betaApi.devUsersListPost(request);
|
|
146
|
+
return response.data.dev_users || [];
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
throw new Error(`Error listing dev users by email: ${(0, types_1.getErrorMessage)(error)}`);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.DevUserManager = DevUserManager;
|
|
155
|
+
//# sourceMappingURL=dev_user_manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev_user_manager.js","sourceRoot":"","sources":["../../../src/devrev/managers/dev_user_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manager exports for the DevRev client.
|
|
3
|
+
*/
|
|
4
|
+
export { CodeChangeManager } from './code_change_manager';
|
|
5
|
+
export { TenantFragmentManager, type TenantFragmentResult } from './tenant_fragment_manager';
|
|
6
|
+
export { CustomLinkTypeManager, type CustomLinkTypeInstallResult } from './custom_link_type_manager';
|
|
7
|
+
export { LinkManager } from './link_manager';
|
|
8
|
+
export { TimelineManager, EventMetadataKeys, type TimelineResult } from './timeline_manager';
|
|
9
|
+
export { DevUserManager } from './dev_user_manager';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Manager exports for the DevRev client.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DevUserManager = exports.EventMetadataKeys = exports.TimelineManager = exports.LinkManager = exports.CustomLinkTypeManager = exports.TenantFragmentManager = exports.CodeChangeManager = void 0;
|
|
7
|
+
var code_change_manager_1 = require("./code_change_manager");
|
|
8
|
+
Object.defineProperty(exports, "CodeChangeManager", { enumerable: true, get: function () { return code_change_manager_1.CodeChangeManager; } });
|
|
9
|
+
var tenant_fragment_manager_1 = require("./tenant_fragment_manager");
|
|
10
|
+
Object.defineProperty(exports, "TenantFragmentManager", { enumerable: true, get: function () { return tenant_fragment_manager_1.TenantFragmentManager; } });
|
|
11
|
+
var custom_link_type_manager_1 = require("./custom_link_type_manager");
|
|
12
|
+
Object.defineProperty(exports, "CustomLinkTypeManager", { enumerable: true, get: function () { return custom_link_type_manager_1.CustomLinkTypeManager; } });
|
|
13
|
+
var link_manager_1 = require("./link_manager");
|
|
14
|
+
Object.defineProperty(exports, "LinkManager", { enumerable: true, get: function () { return link_manager_1.LinkManager; } });
|
|
15
|
+
var timeline_manager_1 = require("./timeline_manager");
|
|
16
|
+
Object.defineProperty(exports, "TimelineManager", { enumerable: true, get: function () { return timeline_manager_1.TimelineManager; } });
|
|
17
|
+
Object.defineProperty(exports, "EventMetadataKeys", { enumerable: true, get: function () { return timeline_manager_1.EventMetadataKeys; } });
|
|
18
|
+
var dev_user_manager_1 = require("./dev_user_manager");
|
|
19
|
+
Object.defineProperty(exports, "DevUserManager", { enumerable: true, get: function () { return dev_user_manager_1.DevUserManager; } });
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/devrev/managers/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,qEAA6F;AAApF,gIAAA,qBAAqB,OAAA;AAC9B,uEAAqG;AAA5F,iIAAA,qBAAqB,OAAA;AAC9B,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uDAA6F;AAApF,mHAAA,eAAe,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAC3C,uDAAoD;AAA3C,kHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manager for link operations.
|
|
3
|
+
*/
|
|
4
|
+
import { Link } from '@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk';
|
|
5
|
+
import { CustomLinkTypeManager } from './custom_link_type_manager';
|
|
6
|
+
import type { betaSDK } from '@devrev/typescript-sdk';
|
|
7
|
+
/**
|
|
8
|
+
* Manager for link CRUD operations.
|
|
9
|
+
*/
|
|
10
|
+
export declare class LinkManager {
|
|
11
|
+
private betaApi;
|
|
12
|
+
private customLinkTypeManager;
|
|
13
|
+
constructor(betaApi: betaSDK.Api<unknown>, customLinkTypeManager: CustomLinkTypeManager);
|
|
14
|
+
/**
|
|
15
|
+
* Creates a custom link between an issue and a code_change custom object.
|
|
16
|
+
*
|
|
17
|
+
* @param issueId - The issue ID (source)
|
|
18
|
+
* @param codeChangeCustomId - The code_change custom object ID (target)
|
|
19
|
+
*/
|
|
20
|
+
createIssueCodeChangeLink(issueId: string, codeChangeCustomId: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Lists all links for a given object.
|
|
23
|
+
*
|
|
24
|
+
* @param objectId - The object ID to list links for
|
|
25
|
+
* @returns Array of links
|
|
26
|
+
*/
|
|
27
|
+
listByObject(objectId: string): Promise<Link[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Lists links for a code_change object filtered by IsDependentOn type.
|
|
30
|
+
*
|
|
31
|
+
* @param codeChangeId - The code_change object ID
|
|
32
|
+
* @returns Array of links
|
|
33
|
+
*/
|
|
34
|
+
listCodeChangeLinks(codeChangeId: string): Promise<Link[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Deletes a link by ID.
|
|
37
|
+
*
|
|
38
|
+
* @param linkId - The link ID to delete
|
|
39
|
+
*/
|
|
40
|
+
delete(linkId: string): Promise<void>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Manager for link operations.
|
|
4
|
+
*/
|
|
5
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
6
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
9
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
11
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.LinkManager = void 0;
|
|
16
|
+
const beta_devrev_sdk_1 = require("@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk");
|
|
17
|
+
const types_1 = require("../types");
|
|
18
|
+
/**
|
|
19
|
+
* Manager for link CRUD operations.
|
|
20
|
+
*/
|
|
21
|
+
class LinkManager {
|
|
22
|
+
constructor(betaApi, customLinkTypeManager) {
|
|
23
|
+
this.betaApi = betaApi;
|
|
24
|
+
this.customLinkTypeManager = customLinkTypeManager;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a custom link between an issue and a code_change custom object.
|
|
28
|
+
*
|
|
29
|
+
* @param issueId - The issue ID (source)
|
|
30
|
+
* @param codeChangeCustomId - The code_change custom object ID (target)
|
|
31
|
+
*/
|
|
32
|
+
createIssueCodeChangeLink(issueId, codeChangeCustomId) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
try {
|
|
35
|
+
const result = yield this.customLinkTypeManager.getOrCreateIssueCodeChangeLinkType();
|
|
36
|
+
if (!result.success || !result.linkTypeId) {
|
|
37
|
+
throw new Error(result.error || 'Failed to get/create custom link type');
|
|
38
|
+
}
|
|
39
|
+
// Use type assertion for custom_link_type which is supported but not in base type
|
|
40
|
+
const request = {
|
|
41
|
+
custom_link_type: result.linkTypeId,
|
|
42
|
+
link_type: beta_devrev_sdk_1.LinkType.CustomLink,
|
|
43
|
+
source: issueId,
|
|
44
|
+
target: codeChangeCustomId,
|
|
45
|
+
};
|
|
46
|
+
yield this.betaApi.linksCreate(request);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
throw new Error(`Error creating issue_code_change link between ${issueId} and ${codeChangeCustomId}: ${(0, types_1.getErrorMessage)(error)}`);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Lists all links for a given object.
|
|
55
|
+
*
|
|
56
|
+
* @param objectId - The object ID to list links for
|
|
57
|
+
* @returns Array of links
|
|
58
|
+
*/
|
|
59
|
+
listByObject(objectId) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
try {
|
|
62
|
+
const response = yield this.betaApi.linksList({ object: objectId });
|
|
63
|
+
return response.data.links;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
throw new Error(`Error listing links for object ${objectId}: ${(0, types_1.getErrorMessage)(error)}`);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Lists links for a code_change object filtered by IsDependentOn type.
|
|
72
|
+
*
|
|
73
|
+
* @param codeChangeId - The code_change object ID
|
|
74
|
+
* @returns Array of links
|
|
75
|
+
*/
|
|
76
|
+
listCodeChangeLinks(codeChangeId) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
try {
|
|
79
|
+
const request = {
|
|
80
|
+
link_type: [beta_devrev_sdk_1.LinkType.IsDependentOn],
|
|
81
|
+
object: codeChangeId,
|
|
82
|
+
};
|
|
83
|
+
const response = yield this.betaApi.linksList(request);
|
|
84
|
+
return response.data.links;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw new Error(`Error fetching linked issues for code change ${codeChangeId}: ${(0, types_1.getErrorMessage)(error)}`);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Deletes a link by ID.
|
|
93
|
+
*
|
|
94
|
+
* @param linkId - The link ID to delete
|
|
95
|
+
*/
|
|
96
|
+
delete(linkId) {
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
try {
|
|
99
|
+
const request = {
|
|
100
|
+
id: linkId,
|
|
101
|
+
};
|
|
102
|
+
yield this.betaApi.linksDelete(request);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
throw new Error(`Error deleting link ${linkId}: ${(0, types_1.getErrorMessage)(error)}`);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.LinkManager = LinkManager;
|
|
111
|
+
//# sourceMappingURL=link_manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link_manager.js","sourceRoot":"","sources":["../../../src/devrev/managers/link_manager.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;AAEH,qGAKyE;AAEzE,oCAA2C;AAK3C;;GAEG;AACH,MAAa,WAAW;IAKtB,YACE,OAA6B,EAC7B,qBAA4C;QAE5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACG,yBAAyB,CAC7B,OAAe,EACf,kBAA0B;;YAE1B,IAAI;gBACF,MAAM,MAAM,GACV,MAAM,IAAI,CAAC,qBAAqB,CAAC,kCAAkC,EAAE,CAAC;gBAExE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;oBACzC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,uCAAuC,CAAC,CAAC;iBAC1E;gBAED,kFAAkF;gBAClF,MAAM,OAAO,GAAG;oBACd,gBAAgB,EAAE,MAAM,CAAC,UAAU;oBACnC,SAAS,EAAE,0BAAQ,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE,kBAAkB;iBACuB,CAAC;gBAEpD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aACzC;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,IAAI,KAAK,CACb,iDAAiD,OAAO,QAAQ,kBAAkB,KAAK,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAChH,CAAC;aACH;QACH,CAAC;KAAA;IAED;;;;;OAKG;IACG,YAAY,CAAC,QAAgB;;YACjC,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACpE,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,IAAI,KAAK,CACb,kCAAkC,QAAQ,KAAK,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CACxE,CAAC;aACH;QACH,CAAC;KAAA;IAED;;;;;OAKG;IACG,mBAAmB,CAAC,YAAoB;;YAC5C,IAAI;gBACF,MAAM,OAAO,GAAqB;oBAChC,SAAS,EAAE,CAAC,0BAAQ,CAAC,aAAa,CAAC;oBACnC,MAAM,EAAE,YAAY;iBACrB,CAAC;gBAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACvD,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;aAC5B;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,IAAI,KAAK,CACb,gDAAgD,YAAY,KAAK,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;aACH;QACH,CAAC;KAAA;IAED;;;;OAIG;IACG,MAAM,CAAC,MAAc;;YACzB,IAAI;gBACF,MAAM,OAAO,GAAuB;oBAClC,EAAE,EAAE,MAAM;iBACX,CAAC;gBAEF,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aACzC;YAAC,OAAO,KAAc,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,KAAK,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAC7E;QACH,CAAC;KAAA;CACF;AAtGD,kCAsGC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manager for tenant fragment (custom schema) operations.
|
|
3
|
+
*/
|
|
4
|
+
import type { betaSDK } from '@devrev/typescript-sdk';
|
|
5
|
+
/**
|
|
6
|
+
* Result of tenant fragment get/create operation.
|
|
7
|
+
*/
|
|
8
|
+
export interface TenantFragmentResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
fragmentId?: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Manager for tenant fragment (custom schema) operations.
|
|
15
|
+
*/
|
|
16
|
+
export declare class TenantFragmentManager {
|
|
17
|
+
private betaApi;
|
|
18
|
+
constructor(betaApi: betaSDK.Api<unknown>);
|
|
19
|
+
/**
|
|
20
|
+
* Gets or creates the tenant fragment for code_change custom object.
|
|
21
|
+
* This ensures the schema exists before any code_change objects are created.
|
|
22
|
+
*
|
|
23
|
+
* @returns Success status and fragment ID
|
|
24
|
+
*/
|
|
25
|
+
getOrCreateCodeChangeFragment(): Promise<TenantFragmentResult>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Manager for tenant fragment (custom schema) operations.
|
|
4
|
+
*/
|
|
5
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
6
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
9
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
11
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.TenantFragmentManager = void 0;
|
|
16
|
+
const beta_devrev_sdk_1 = require("@devrev/typescript-sdk/dist/auto-generated/beta/beta-devrev-sdk");
|
|
17
|
+
const types_1 = require("../types");
|
|
18
|
+
const code_change_schema_1 = require("./code_change_schema");
|
|
19
|
+
/**
|
|
20
|
+
* Manager for tenant fragment (custom schema) operations.
|
|
21
|
+
*/
|
|
22
|
+
class TenantFragmentManager {
|
|
23
|
+
constructor(betaApi) {
|
|
24
|
+
this.betaApi = betaApi;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Gets or creates the tenant fragment for code_change custom object.
|
|
28
|
+
* This ensures the schema exists before any code_change objects are created.
|
|
29
|
+
*
|
|
30
|
+
* @returns Success status and fragment ID
|
|
31
|
+
*/
|
|
32
|
+
getOrCreateCodeChangeFragment() {
|
|
33
|
+
var _a, _b, _c, _d;
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
try {
|
|
36
|
+
// Step 1: Check if tenant fragment already exists
|
|
37
|
+
const listRequest = {
|
|
38
|
+
deprecated: false,
|
|
39
|
+
is_custom_leaf_type: true,
|
|
40
|
+
leaf_type: [types_1.CODE_CHANGE_LEAF_TYPE],
|
|
41
|
+
types: [beta_devrev_sdk_1.CustomSchemaFragmentType.TenantFragment],
|
|
42
|
+
};
|
|
43
|
+
const listResponse = yield this.betaApi.customSchemaFragmentsListPost(listRequest);
|
|
44
|
+
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
|
+
if (fragmentId) {
|
|
46
|
+
// Fragment already exists
|
|
47
|
+
return { success: true, fragmentId };
|
|
48
|
+
}
|
|
49
|
+
// Step 2: Fragment doesn't exist - create it with schema
|
|
50
|
+
const setRequest = (0, code_change_schema_1.getCodeChangeSchemaSetRequest)();
|
|
51
|
+
const setResponse = yield this.betaApi.customSchemaFragmentsSet(setRequest);
|
|
52
|
+
const createdFragmentId = (_d = setResponse.data) === null || _d === void 0 ? void 0 : _d.id;
|
|
53
|
+
if (!createdFragmentId) {
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
error: 'Failed to create tenant fragment: ID not returned from API',
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return { success: true, fragmentId: createdFragmentId };
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return { success: false, error: (0, types_1.getErrorMessage)(error) };
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.TenantFragmentManager = TenantFragmentManager;
|
|
68
|
+
//# sourceMappingURL=tenant_fragment_manager.js.map
|
|
@@ -0,0 +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;IAGhC,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACG,6BAA6B;;;YACjC,IAAI;gBACF,kDAAkD;gBAClD,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,GAChB,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;gBAChE,MAAM,UAAU,GAAG,MAAA,MAAA,MAAA,YAAY,CAAC,IAAI,0CAAE,MAAM,0CAAG,CAAC,CAAC,0CAAE,EAAE,CAAC;gBAEtD,IAAI,UAAU,EAAE;oBACd,0BAA0B;oBAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBACtC;gBAED,yDAAyD;gBACzD,MAAM,UAAU,GAAG,IAAA,kDAA6B,GAAE,CAAC;gBAEnD,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;gBAC1D,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,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;CACF;AAnDD,sDAmDC"}
|