@osva-ai/connector-freshdesk 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/normalize-freshdesk.js +57 -7
- package/dist/normalize-freshdesk.js.map +1 -1
- package/package.json +1 -1
- package/dist/map-zendesk-error.d.ts +0 -8
- package/dist/map-zendesk-error.d.ts.map +0 -1
- package/dist/map-zendesk-error.js +0 -63
- package/dist/map-zendesk-error.js.map +0 -1
- package/dist/normalize-zendesk.d.ts +0 -42
- package/dist/normalize-zendesk.d.ts.map +0 -1
- package/dist/normalize-zendesk.js +0 -171
- package/dist/normalize-zendesk.js.map +0 -1
- package/dist/zendesk-auth.d.ts +0 -3
- package/dist/zendesk-auth.d.ts.map +0 -1
- package/dist/zendesk-auth.js +0 -16
- package/dist/zendesk-auth.js.map +0 -1
- package/dist/zendesk-base-url.d.ts +0 -6
- package/dist/zendesk-base-url.d.ts.map +0 -1
- package/dist/zendesk-base-url.js +0 -21
- package/dist/zendesk-base-url.js.map +0 -1
- package/dist/zendesk-client.d.ts +0 -20
- package/dist/zendesk-client.d.ts.map +0 -1
- package/dist/zendesk-client.js +0 -2
- package/dist/zendesk-client.js.map +0 -1
- package/dist/zendesk-rest-client.d.ts +0 -16
- package/dist/zendesk-rest-client.d.ts.map +0 -1
- package/dist/zendesk-rest-client.js +0 -216
- package/dist/zendesk-rest-client.js.map +0 -1
package/dist/constants.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const CONNECTOR_KEY = "osva-connector-freshdesk";
|
|
2
2
|
export declare const CONNECTOR_NAME = "OSVA Freshdesk Connector";
|
|
3
|
-
export declare const CONNECTOR_VERSION = "0.1.
|
|
3
|
+
export declare const CONNECTOR_VERSION = "0.1.1";
|
|
4
4
|
export declare const FRESHDESK_TICKET_LIST_TOOL = "freshdesk.ticket.list";
|
|
5
5
|
export declare const FRESHDESK_TICKET_GET_TOOL = "freshdesk.ticket.get";
|
|
6
6
|
export declare const FRESHDESK_TICKET_SEARCH_TOOL = "freshdesk.ticket.search";
|
package/dist/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export const CONNECTOR_KEY = "osva-connector-freshdesk";
|
|
2
2
|
export const CONNECTOR_NAME = "OSVA Freshdesk Connector";
|
|
3
|
-
export const CONNECTOR_VERSION = "0.1.
|
|
3
|
+
export const CONNECTOR_VERSION = "0.1.1";
|
|
4
4
|
export const FRESHDESK_TICKET_LIST_TOOL = "freshdesk.ticket.list";
|
|
5
5
|
export const FRESHDESK_TICKET_GET_TOOL = "freshdesk.ticket.get";
|
|
6
6
|
export const FRESHDESK_TICKET_SEARCH_TOOL = "freshdesk.ticket.search";
|
|
@@ -147,20 +147,70 @@ function normalizeTicketDetail(raw, includePii) {
|
|
|
147
147
|
organizationId: readId(ticket, "organization_id"),
|
|
148
148
|
};
|
|
149
149
|
}
|
|
150
|
+
const REDACTED_CUSTOMER_BODY = "[REDACTED_CUSTOMER_CONTENT]";
|
|
151
|
+
const REDACTED_PUBLIC_AGENT_REPLY = "[REDACTED_PUBLIC_REPLY]";
|
|
152
|
+
function readBoolean(value) {
|
|
153
|
+
if (value === true) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
if (value === false) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Freshdesk conversations use `private` and `incoming` (not Zendesk `public`).
|
|
163
|
+
* Missing visibility metadata is treated as customer-facing (fail closed).
|
|
164
|
+
*/
|
|
165
|
+
function conversationBodyForOutput(record, includePii) {
|
|
166
|
+
const privateFlag = readBoolean(record.private);
|
|
167
|
+
const incoming = readBoolean(record.incoming);
|
|
168
|
+
const rawBody = readString(record, "body") ?? readString(record, "body_text");
|
|
169
|
+
if (privateFlag === true) {
|
|
170
|
+
return {
|
|
171
|
+
privateNote: true,
|
|
172
|
+
body: truncate(rawBody ?? "", 2_048),
|
|
173
|
+
...(incoming !== undefined ? { incoming } : {}),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
const customerFacing = incoming === true ||
|
|
177
|
+
privateFlag === false ||
|
|
178
|
+
(privateFlag === undefined && incoming === undefined);
|
|
179
|
+
if (customerFacing && !includePii) {
|
|
180
|
+
const isIncomingCustomer = incoming === true || incoming === undefined;
|
|
181
|
+
const redacted = isIncomingCustomer
|
|
182
|
+
? REDACTED_CUSTOMER_BODY
|
|
183
|
+
: REDACTED_PUBLIC_AGENT_REPLY;
|
|
184
|
+
return {
|
|
185
|
+
privateNote: false,
|
|
186
|
+
body: redacted,
|
|
187
|
+
...(incoming !== undefined ? { incoming } : {}),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
privateNote: false,
|
|
192
|
+
body: truncate(rawBody ?? "", 2_048),
|
|
193
|
+
...(incoming !== undefined ? { incoming } : {}),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
150
196
|
function normalizeComment(raw, includePii) {
|
|
151
197
|
const comment = typeof raw === "object" && raw !== null
|
|
152
198
|
? raw
|
|
153
199
|
: {};
|
|
154
|
-
const
|
|
200
|
+
const mapped = conversationBodyForOutput(comment, includePii);
|
|
155
201
|
return {
|
|
156
202
|
id: readId(comment, "id"),
|
|
157
|
-
|
|
203
|
+
private: mapped.privateNote,
|
|
158
204
|
createdAt: readString(comment, "created_at"),
|
|
159
|
-
authorId: readId(comment, "author_id"),
|
|
160
|
-
body:
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
205
|
+
authorId: readId(comment, "user_id") ?? readId(comment, "author_id"),
|
|
206
|
+
body: mapped.body,
|
|
207
|
+
...(mapped.incoming !== undefined ? { incoming: mapped.incoming } : {}),
|
|
208
|
+
...(includePii
|
|
209
|
+
? {
|
|
210
|
+
authorEmail: redactEmail(comment.from_email) ??
|
|
211
|
+
redactEmail(comment.author_email),
|
|
212
|
+
}
|
|
213
|
+
: {}),
|
|
164
214
|
};
|
|
165
215
|
}
|
|
166
216
|
function normalizeUser(raw, includePii) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-freshdesk.js","sourceRoot":"","sources":["../src/normalize-freshdesk.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"normalize-freshdesk.js","sourceRoot":"","sources":["../src/normalize-freshdesk.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osva-ai/connector-freshdesk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "OSVA Freshdesk customer-support MCP connector",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/Osva-AI/osva-connectors/tree/main/packages/freshdesk",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ConnectorSdkError } from "@osva-ai/connector-sdk";
|
|
2
|
-
export interface MapZendeskErrorOptions {
|
|
3
|
-
readonly email?: string;
|
|
4
|
-
readonly apiToken?: string;
|
|
5
|
-
readonly ambiguousWrite?: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare function mapZendeskError(error: unknown, options?: MapZendeskErrorOptions): ConnectorSdkError;
|
|
8
|
-
//# sourceMappingURL=map-zendesk-error.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"map-zendesk-error.d.ts","sourceRoot":"","sources":["../src/map-zendesk-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,wBAAwB,CAAC;AAI3E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AA8CD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,sBAA2B,GACnC,iBAAiB,CAyCnB"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { ConnectorSdkError, rateLimitError } from "@osva-ai/connector-sdk";
|
|
2
|
-
import { redactZendeskSecrets } from "./zendesk-auth.js";
|
|
3
|
-
function isAbortError(error) {
|
|
4
|
-
return ((error instanceof DOMException && error.name === "AbortError") ||
|
|
5
|
-
(error instanceof Error && error.name === "AbortError"));
|
|
6
|
-
}
|
|
7
|
-
function isTimeoutError(error) {
|
|
8
|
-
if (!(error instanceof Error)) {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
const code = error.code;
|
|
12
|
-
return (error.name === "TimeoutError" ||
|
|
13
|
-
error.message.includes("timed out") ||
|
|
14
|
-
code === "ETIMEDOUT");
|
|
15
|
-
}
|
|
16
|
-
function mapHttpStatus(status) {
|
|
17
|
-
if (status === 401) {
|
|
18
|
-
return new ConnectorSdkError("UNAUTHORIZED", "Zendesk API credentials are invalid.");
|
|
19
|
-
}
|
|
20
|
-
if (status === 403) {
|
|
21
|
-
return new ConnectorSdkError("FORBIDDEN", "Zendesk denied access.");
|
|
22
|
-
}
|
|
23
|
-
if (status === 404) {
|
|
24
|
-
return new ConnectorSdkError("NOT_FOUND", "Zendesk resource was not found.");
|
|
25
|
-
}
|
|
26
|
-
if (status === 400 || status === 422) {
|
|
27
|
-
return new ConnectorSdkError("INVALID_INPUT", "Zendesk rejected the request parameters.");
|
|
28
|
-
}
|
|
29
|
-
if (status === 429) {
|
|
30
|
-
return rateLimitError("Zendesk rate limit exceeded.");
|
|
31
|
-
}
|
|
32
|
-
return undefined;
|
|
33
|
-
}
|
|
34
|
-
export function mapZendeskError(error, options = {}) {
|
|
35
|
-
if (error instanceof ConnectorSdkError) {
|
|
36
|
-
return error;
|
|
37
|
-
}
|
|
38
|
-
if (isAbortError(error)) {
|
|
39
|
-
return new ConnectorSdkError("CANCELLED", "Request was cancelled.");
|
|
40
|
-
}
|
|
41
|
-
if (isTimeoutError(error)) {
|
|
42
|
-
return new ConnectorSdkError("TIMEOUT", "Zendesk request timed out.");
|
|
43
|
-
}
|
|
44
|
-
if (typeof error === "object" &&
|
|
45
|
-
error !== null &&
|
|
46
|
-
"kind" in error &&
|
|
47
|
-
error.kind === "http") {
|
|
48
|
-
const http = error;
|
|
49
|
-
const mapped = mapHttpStatus(http.status);
|
|
50
|
-
if (mapped !== undefined) {
|
|
51
|
-
return mapped;
|
|
52
|
-
}
|
|
53
|
-
if (options.ambiguousWrite === true) {
|
|
54
|
-
return new ConnectorSdkError("PROVIDER_ERROR", "Zendesk write outcome is ambiguous; verify before retrying.");
|
|
55
|
-
}
|
|
56
|
-
return new ConnectorSdkError("PROVIDER_ERROR", redactZendeskSecrets(`Zendesk API error (${http.status}).`, options.email, options.apiToken));
|
|
57
|
-
}
|
|
58
|
-
const message = error instanceof Error
|
|
59
|
-
? redactZendeskSecrets(error.message, options.email, options.apiToken)
|
|
60
|
-
: "Zendesk request failed.";
|
|
61
|
-
return new ConnectorSdkError("PROVIDER_ERROR", message);
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=map-zendesk-error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"map-zendesk-error.js","sourceRoot":"","sources":["../src/map-zendesk-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export declare function mapTicketListResponse(raw: unknown, page: number, includeRequesterPii: boolean): {
|
|
2
|
-
pageInfo: {
|
|
3
|
-
nextPage: number;
|
|
4
|
-
page: number;
|
|
5
|
-
} | {
|
|
6
|
-
hasMore: boolean;
|
|
7
|
-
page: number;
|
|
8
|
-
};
|
|
9
|
-
tickets: Record<string, unknown>[];
|
|
10
|
-
untrustedContent: true;
|
|
11
|
-
};
|
|
12
|
-
export declare function mapTicketGetResponse(raw: unknown, includeRequesterPii: boolean): {
|
|
13
|
-
ticket: Record<string, unknown>;
|
|
14
|
-
untrustedContent: true;
|
|
15
|
-
};
|
|
16
|
-
export declare function mapCommentListResponse(raw: unknown, includeRequesterPii: boolean): {
|
|
17
|
-
comments: Record<string, unknown>[];
|
|
18
|
-
untrustedContent: true;
|
|
19
|
-
};
|
|
20
|
-
export declare function mapUserGetResponse(raw: unknown, includeRequesterPii: boolean): {
|
|
21
|
-
user: Record<string, unknown>;
|
|
22
|
-
untrustedContent: true;
|
|
23
|
-
};
|
|
24
|
-
export declare function mapOrganizationGetResponse(raw: unknown): {
|
|
25
|
-
organization: {
|
|
26
|
-
id: number | undefined;
|
|
27
|
-
name: string;
|
|
28
|
-
};
|
|
29
|
-
untrustedContent: true;
|
|
30
|
-
};
|
|
31
|
-
export declare function mapNoteCreateResponse(raw: unknown, ticketId: number): {
|
|
32
|
-
ticketId: number;
|
|
33
|
-
created: true;
|
|
34
|
-
id: number | undefined;
|
|
35
|
-
internalNote: true;
|
|
36
|
-
};
|
|
37
|
-
export declare function mapStatusUpdateResponse(raw: unknown, ticketId: number): {
|
|
38
|
-
ticketId: number;
|
|
39
|
-
updated: true;
|
|
40
|
-
status: string;
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=normalize-zendesk.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-zendesk.d.ts","sourceRoot":"","sources":["../src/normalize-zendesk.ts"],"names":[],"mappings":"AAkBA,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,OAAO;;;;;;;;;;EAW7B;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO;;;EAK9E;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,EACZ,mBAAmB,EAAE,OAAO;;;EAM7B;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO;;;EAM5E;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO;;;;;;EAStD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;;;;;EAWnE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;;;;EAOrE"}
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { COMMENTS_PREVIEW_MAX, LIST_DEFAULT_LIMIT, OUTPUT_MAX_STATUS_LENGTH, OUTPUT_MAX_SUBJECT_LENGTH, } from "./constants.js";
|
|
2
|
-
function truncate(value, max) {
|
|
3
|
-
return value.length <= max ? value : `${value.slice(0, max)}…`;
|
|
4
|
-
}
|
|
5
|
-
function redactEmail(value) {
|
|
6
|
-
if (typeof value !== "string") {
|
|
7
|
-
return undefined;
|
|
8
|
-
}
|
|
9
|
-
return "[REDACTED_EMAIL]";
|
|
10
|
-
}
|
|
11
|
-
export function mapTicketListResponse(raw, page, includeRequesterPii) {
|
|
12
|
-
const tickets = extractTicketArray(raw).map((ticket) => normalizeTicketSummary(ticket, includeRequesterPii));
|
|
13
|
-
const nextPage = tickets.length >= LIST_DEFAULT_LIMIT ? page + 1 : undefined;
|
|
14
|
-
return {
|
|
15
|
-
pageInfo: { page, ...(nextPage !== undefined ? { nextPage } : { hasMore: false }) },
|
|
16
|
-
tickets,
|
|
17
|
-
untrustedContent: true,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export function mapTicketGetResponse(raw, includeRequesterPii) {
|
|
21
|
-
return {
|
|
22
|
-
ticket: normalizeTicketDetail(raw, includeRequesterPii),
|
|
23
|
-
untrustedContent: true,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
export function mapCommentListResponse(raw, includeRequesterPii) {
|
|
27
|
-
const comments = extractCommentArray(raw)
|
|
28
|
-
.slice(0, COMMENTS_PREVIEW_MAX)
|
|
29
|
-
.map((comment) => normalizeComment(comment, includeRequesterPii));
|
|
30
|
-
return { comments, untrustedContent: true };
|
|
31
|
-
}
|
|
32
|
-
export function mapUserGetResponse(raw, includeRequesterPii) {
|
|
33
|
-
const user = extractNestedUser(raw);
|
|
34
|
-
return {
|
|
35
|
-
user: normalizeUser(user, includeRequesterPii),
|
|
36
|
-
untrustedContent: true,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
export function mapOrganizationGetResponse(raw) {
|
|
40
|
-
const organization = extractNestedOrganization(raw);
|
|
41
|
-
return {
|
|
42
|
-
organization: {
|
|
43
|
-
id: readId(organization, "id"),
|
|
44
|
-
name: truncate(readString(organization, "name") ?? "", 256),
|
|
45
|
-
},
|
|
46
|
-
untrustedContent: true,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
export function mapNoteCreateResponse(raw, ticketId) {
|
|
50
|
-
const record = typeof raw === "object" && raw !== null
|
|
51
|
-
? raw
|
|
52
|
-
: {};
|
|
53
|
-
return {
|
|
54
|
-
ticketId,
|
|
55
|
-
created: true,
|
|
56
|
-
id: readId(record, "id"),
|
|
57
|
-
internalNote: true,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
export function mapStatusUpdateResponse(raw, ticketId) {
|
|
61
|
-
const ticket = extractNestedTicket(raw);
|
|
62
|
-
return {
|
|
63
|
-
ticketId,
|
|
64
|
-
updated: true,
|
|
65
|
-
status: truncate(readString(ticket, "status") ?? "", OUTPUT_MAX_STATUS_LENGTH),
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
function extractTicketArray(raw) {
|
|
69
|
-
if (typeof raw === "object" && raw !== null && Array.isArray(raw.tickets)) {
|
|
70
|
-
return raw.tickets;
|
|
71
|
-
}
|
|
72
|
-
return Array.isArray(raw) ? raw : [];
|
|
73
|
-
}
|
|
74
|
-
function extractCommentArray(raw) {
|
|
75
|
-
if (typeof raw === "object" && raw !== null && Array.isArray(raw.comments)) {
|
|
76
|
-
return raw.comments;
|
|
77
|
-
}
|
|
78
|
-
return [];
|
|
79
|
-
}
|
|
80
|
-
function extractNestedUser(raw) {
|
|
81
|
-
if (typeof raw === "object" && raw !== null && typeof raw.user === "object") {
|
|
82
|
-
return raw.user;
|
|
83
|
-
}
|
|
84
|
-
return typeof raw === "object" && raw !== null
|
|
85
|
-
? raw
|
|
86
|
-
: {};
|
|
87
|
-
}
|
|
88
|
-
function extractNestedOrganization(raw) {
|
|
89
|
-
if (typeof raw === "object" &&
|
|
90
|
-
raw !== null &&
|
|
91
|
-
typeof raw.organization === "object") {
|
|
92
|
-
return raw.organization;
|
|
93
|
-
}
|
|
94
|
-
return typeof raw === "object" && raw !== null
|
|
95
|
-
? raw
|
|
96
|
-
: {};
|
|
97
|
-
}
|
|
98
|
-
function extractNestedTicket(raw) {
|
|
99
|
-
if (typeof raw === "object" && raw !== null && typeof raw.ticket === "object") {
|
|
100
|
-
return raw.ticket;
|
|
101
|
-
}
|
|
102
|
-
return typeof raw === "object" && raw !== null
|
|
103
|
-
? raw
|
|
104
|
-
: {};
|
|
105
|
-
}
|
|
106
|
-
function normalizeTicketSummary(raw, includeRequesterPii) {
|
|
107
|
-
const ticket = typeof raw === "object" && raw !== null
|
|
108
|
-
? raw
|
|
109
|
-
: {};
|
|
110
|
-
return {
|
|
111
|
-
id: readId(ticket, "id"),
|
|
112
|
-
status: truncate(readString(ticket, "status") ?? "", OUTPUT_MAX_STATUS_LENGTH),
|
|
113
|
-
subject: truncate(readString(ticket, "subject") ?? "", OUTPUT_MAX_SUBJECT_LENGTH),
|
|
114
|
-
createdAt: readString(ticket, "created_at"),
|
|
115
|
-
updatedAt: readString(ticket, "updated_at"),
|
|
116
|
-
requesterId: readId(ticket, "requester_id"),
|
|
117
|
-
...(includeRequesterPii
|
|
118
|
-
? { requesterEmail: readString(ticket, "requester_email") }
|
|
119
|
-
: {}),
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
function normalizeTicketDetail(raw, includeRequesterPii) {
|
|
123
|
-
const ticket = extractNestedTicket(raw);
|
|
124
|
-
return {
|
|
125
|
-
...normalizeTicketSummary(ticket, includeRequesterPii),
|
|
126
|
-
priority: readString(ticket, "priority"),
|
|
127
|
-
organizationId: readId(ticket, "organization_id"),
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
function normalizeComment(raw, includeRequesterPii) {
|
|
131
|
-
const comment = typeof raw === "object" && raw !== null
|
|
132
|
-
? raw
|
|
133
|
-
: {};
|
|
134
|
-
const isPublic = comment.public === true;
|
|
135
|
-
return {
|
|
136
|
-
id: readId(comment, "id"),
|
|
137
|
-
public: isPublic,
|
|
138
|
-
createdAt: readString(comment, "created_at"),
|
|
139
|
-
authorId: readId(comment, "author_id"),
|
|
140
|
-
body: isPublic
|
|
141
|
-
? "[REDACTED_PUBLIC_COMMENT]"
|
|
142
|
-
: truncate(readString(comment, "body") ?? "", 2_048),
|
|
143
|
-
...(includeRequesterPii ? { authorEmail: redactEmail(comment.author_email) } : {}),
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
function normalizeUser(raw, includeRequesterPii) {
|
|
147
|
-
return {
|
|
148
|
-
id: readId(raw, "id"),
|
|
149
|
-
name: truncate(readString(raw, "name") ?? "", 256),
|
|
150
|
-
role: readString(raw, "role"),
|
|
151
|
-
...(includeRequesterPii
|
|
152
|
-
? { email: readString(raw, "email") }
|
|
153
|
-
: { email: redactEmail(raw.email) }),
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
function readId(record, key) {
|
|
157
|
-
const value = record[key];
|
|
158
|
-
if (typeof value === "number" && Number.isInteger(value)) {
|
|
159
|
-
return value;
|
|
160
|
-
}
|
|
161
|
-
if (typeof value === "string" && value.length > 0) {
|
|
162
|
-
const parsed = Number.parseInt(value, 10);
|
|
163
|
-
return Number.isInteger(parsed) ? parsed : undefined;
|
|
164
|
-
}
|
|
165
|
-
return undefined;
|
|
166
|
-
}
|
|
167
|
-
function readString(record, key) {
|
|
168
|
-
const value = record[key];
|
|
169
|
-
return typeof value === "string" ? value : undefined;
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=normalize-zendesk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-zendesk.js","sourceRoot":"","sources":["../src/normalize-zendesk.ts"],"names":[],"mappings":"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"}
|
package/dist/zendesk-auth.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zendesk-auth.d.ts","sourceRoot":"","sources":["../src/zendesk-auth.ts"],"names":[],"mappings":"AAAA,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,MAAM,CAKR;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAUR"}
|
package/dist/zendesk-auth.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export function buildZendeskBasicAuthHeader(email, apiToken) {
|
|
2
|
-
const encoded = Buffer.from(`${email}/token:${apiToken}`, "utf8").toString("base64");
|
|
3
|
-
return `Basic ${encoded}`;
|
|
4
|
-
}
|
|
5
|
-
export function redactZendeskSecrets(message, email, apiToken) {
|
|
6
|
-
let result = message;
|
|
7
|
-
if (email !== undefined && email.length > 0) {
|
|
8
|
-
result = result.split(email).join("[REDACTED]");
|
|
9
|
-
}
|
|
10
|
-
if (apiToken !== undefined && apiToken.length > 0) {
|
|
11
|
-
result = result.split(apiToken).join("[REDACTED]");
|
|
12
|
-
}
|
|
13
|
-
result = result.replace(/Basic\s+[A-Za-z0-9+/=]+/gi, "Basic [REDACTED]");
|
|
14
|
-
return result;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=zendesk-auth.js.map
|
package/dist/zendesk-auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zendesk-auth.js","sourceRoot":"","sources":["../src/zendesk-auth.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,2BAA2B,CACzC,KAAa,EACb,QAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,CACxE,QAAQ,CACT,CAAC;IACF,OAAO,SAAS,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,KAAc,EACd,QAAiB;IAEjB,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export interface ZendeskBaseUrlParseResult {
|
|
2
|
-
readonly apiBaseUrl: string;
|
|
3
|
-
readonly pinnedOrigin: string;
|
|
4
|
-
}
|
|
5
|
-
export declare function parseZendeskSubdomain(rawSubdomain: string, allowTestApiHost: boolean): ZendeskBaseUrlParseResult;
|
|
6
|
-
//# sourceMappingURL=zendesk-base-url.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zendesk-base-url.d.ts","sourceRoot":"","sources":["../src/zendesk-base-url.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,OAAO,GACxB,yBAAyB,CA0B3B"}
|
package/dist/zendesk-base-url.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ConnectorSdkError } from "@osva-ai/connector-sdk";
|
|
2
|
-
import { PRODUCTION_API_HOST_SUFFIX } from "./constants.js";
|
|
3
|
-
export function parseZendeskSubdomain(rawSubdomain, allowTestApiHost) {
|
|
4
|
-
const subdomain = rawSubdomain.trim().toLowerCase();
|
|
5
|
-
if (subdomain.length === 0 || subdomain.length > 64) {
|
|
6
|
-
throw new ConnectorSdkError("CONFIGURATION_ERROR", "Zendesk subdomain is invalid.");
|
|
7
|
-
}
|
|
8
|
-
if (!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(subdomain)) {
|
|
9
|
-
throw new ConnectorSdkError("CONFIGURATION_ERROR", "Zendesk subdomain format is invalid.");
|
|
10
|
-
}
|
|
11
|
-
const host = `${subdomain}${PRODUCTION_API_HOST_SUFFIX}`;
|
|
12
|
-
const pinnedOrigin = `https://${host}`;
|
|
13
|
-
if (!allowTestApiHost && (host.includes("127.0.0.1") || host.includes("localhost"))) {
|
|
14
|
-
throw new ConnectorSdkError("CONFIGURATION_ERROR", "Local Zendesk hosts require OSVA_CONNECTOR_ZENDESK_ALLOW_TEST_API_HOST=true.");
|
|
15
|
-
}
|
|
16
|
-
return {
|
|
17
|
-
apiBaseUrl: `${pinnedOrigin}/api/v2`,
|
|
18
|
-
pinnedOrigin,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=zendesk-base-url.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zendesk-base-url.js","sourceRoot":"","sources":["../src/zendesk-base-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAO5D,MAAM,UAAU,qBAAqB,CACnC,YAAoB,EACpB,gBAAyB;IAEzB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,+BAA+B,CAChC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,sCAAsC,CACvC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,SAAS,GAAG,0BAA0B,EAAE,CAAC;IACzD,MAAM,YAAY,GAAG,WAAW,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO;QACL,UAAU,EAAE,GAAG,YAAY,SAAS;QACpC,YAAY;KACb,CAAC;AACJ,CAAC"}
|
package/dist/zendesk-client.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export interface ZendeskListParams {
|
|
2
|
-
readonly page: number;
|
|
3
|
-
readonly perPage: number;
|
|
4
|
-
readonly status?: string;
|
|
5
|
-
}
|
|
6
|
-
export interface ZendeskClient {
|
|
7
|
-
listTickets(params: ZendeskListParams, signal?: AbortSignal): Promise<{
|
|
8
|
-
items: unknown;
|
|
9
|
-
nextPage: number | undefined;
|
|
10
|
-
}>;
|
|
11
|
-
getTicket(ticketId: number, signal?: AbortSignal): Promise<unknown>;
|
|
12
|
-
listTicketComments(ticketId: number, signal?: AbortSignal): Promise<{
|
|
13
|
-
items: unknown;
|
|
14
|
-
}>;
|
|
15
|
-
getUser(userId: number, signal?: AbortSignal): Promise<unknown>;
|
|
16
|
-
getOrganization(orgId: number, signal?: AbortSignal): Promise<unknown>;
|
|
17
|
-
createInternalNote(ticketId: number, body: Record<string, unknown>, signal?: AbortSignal): Promise<unknown>;
|
|
18
|
-
updateTicketStatus(ticketId: number, body: Record<string, unknown>, signal?: AbortSignal): Promise<unknown>;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=zendesk-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zendesk-client.d.ts","sourceRoot":"","sources":["../src/zendesk-client.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,CACT,MAAM,EAAE,iBAAiB,EACzB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB"}
|
package/dist/zendesk-client.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zendesk-client.js","sourceRoot":"","sources":["../src/zendesk-client.ts"],"names":[],"mappings":""}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ZendeskClient } from "./zendesk-client.js";
|
|
2
|
-
export interface ZendeskHttpError {
|
|
3
|
-
readonly kind: "http";
|
|
4
|
-
readonly status: number;
|
|
5
|
-
readonly retryAfterMs?: number;
|
|
6
|
-
}
|
|
7
|
-
export interface CreateZendeskRestClientOptions {
|
|
8
|
-
readonly apiBaseUrl: string;
|
|
9
|
-
readonly pinnedOrigin: string;
|
|
10
|
-
readonly email: string;
|
|
11
|
-
readonly apiToken: string;
|
|
12
|
-
readonly requestTimeoutMs: number;
|
|
13
|
-
readonly fetchImpl?: typeof fetch;
|
|
14
|
-
}
|
|
15
|
-
export declare function createZendeskRestClient(options: CreateZendeskRestClientOptions): ZendeskClient;
|
|
16
|
-
//# sourceMappingURL=zendesk-rest-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zendesk-rest-client.d.ts","sourceRoot":"","sources":["../src/zendesk-rest-client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAiID,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CACnC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,aAAa,CA+Jf"}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { ConnectorSdkError } from "@osva-ai/connector-sdk";
|
|
2
|
-
import { MAX_HTTP_REQUEST_BODY_BYTES, MAX_HTTP_RESPONSE_BYTES, READ_ONLY_MAX_RETRIES, READ_ONLY_RETRY_DELAY_MS, } from "./constants.js";
|
|
3
|
-
import { buildZendeskBasicAuthHeader } from "./zendesk-auth.js";
|
|
4
|
-
const PATH_PATTERNS = [
|
|
5
|
-
{ method: "GET", pattern: /^\/tickets\.json$/ },
|
|
6
|
-
{ method: "GET", pattern: /^\/tickets\/\d+\.json$/ },
|
|
7
|
-
{ method: "GET", pattern: /^\/tickets\/\d+\/comments\.json$/ },
|
|
8
|
-
{ method: "GET", pattern: /^\/users\/\d+\.json$/ },
|
|
9
|
-
{ method: "GET", pattern: /^\/organizations\/\d+\.json$/ },
|
|
10
|
-
{ method: "PUT", pattern: /^\/tickets\/\d+\.json$/ },
|
|
11
|
-
];
|
|
12
|
-
function assertAllowedRelativePath(method, pathname) {
|
|
13
|
-
const normalized = pathname.replace(/\/$/, "") || "/";
|
|
14
|
-
const allowed = PATH_PATTERNS.some((entry) => entry.method === method && entry.pattern.test(normalized));
|
|
15
|
-
if (!allowed) {
|
|
16
|
-
throw new ConnectorSdkError("PROVIDER_ERROR", "Zendesk request path is not supported.");
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function assertAllowedApiUrl(pinnedOrigin, apiBaseUrl, url) {
|
|
20
|
-
const parsed = new URL(url);
|
|
21
|
-
if (parsed.origin !== pinnedOrigin) {
|
|
22
|
-
throw new ConnectorSdkError("PROVIDER_ERROR", "Zendesk request URL is not allowed.");
|
|
23
|
-
}
|
|
24
|
-
const basePath = new URL(apiBaseUrl).pathname.replace(/\/$/, "");
|
|
25
|
-
if (!parsed.pathname.startsWith(basePath)) {
|
|
26
|
-
throw new ConnectorSdkError("PROVIDER_ERROR", "Zendesk request URL is not allowed.");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
async function readBoundedResponseText(response, maxBytes, signal) {
|
|
30
|
-
if (signal?.aborted) {
|
|
31
|
-
throw new DOMException("Aborted", "AbortError");
|
|
32
|
-
}
|
|
33
|
-
const lengthHeader = response.headers.get("content-length");
|
|
34
|
-
if (lengthHeader !== null) {
|
|
35
|
-
const declared = Number(lengthHeader);
|
|
36
|
-
if (Number.isFinite(declared) && declared > maxBytes) {
|
|
37
|
-
throw new ConnectorSdkError("PROVIDER_ERROR", "Zendesk response exceeds the connector size limit.");
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (response.body === null) {
|
|
41
|
-
return "";
|
|
42
|
-
}
|
|
43
|
-
const reader = response.body.getReader();
|
|
44
|
-
const chunks = [];
|
|
45
|
-
let total = 0;
|
|
46
|
-
for (;;) {
|
|
47
|
-
if (signal?.aborted) {
|
|
48
|
-
await reader.cancel();
|
|
49
|
-
throw new DOMException("Aborted", "AbortError");
|
|
50
|
-
}
|
|
51
|
-
const { done, value } = await reader.read();
|
|
52
|
-
if (done) {
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
if (value === undefined) {
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
total += value.byteLength;
|
|
59
|
-
if (total > maxBytes) {
|
|
60
|
-
await reader.cancel();
|
|
61
|
-
throw new ConnectorSdkError("PROVIDER_ERROR", "Zendesk response exceeds the connector size limit.");
|
|
62
|
-
}
|
|
63
|
-
chunks.push(value);
|
|
64
|
-
}
|
|
65
|
-
const merged = new Uint8Array(total);
|
|
66
|
-
let offset = 0;
|
|
67
|
-
for (const chunk of chunks) {
|
|
68
|
-
merged.set(chunk, offset);
|
|
69
|
-
offset += chunk.byteLength;
|
|
70
|
-
}
|
|
71
|
-
return new TextDecoder("utf-8", { fatal: false }).decode(merged);
|
|
72
|
-
}
|
|
73
|
-
function parseRetryAfterMs(response) {
|
|
74
|
-
const header = response.headers.get("retry-after");
|
|
75
|
-
if (header === null) {
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
const seconds = Number(header);
|
|
79
|
-
if (Number.isFinite(seconds) && seconds >= 0) {
|
|
80
|
-
return seconds * 1_000;
|
|
81
|
-
}
|
|
82
|
-
return undefined;
|
|
83
|
-
}
|
|
84
|
-
function sleep(ms, signal) {
|
|
85
|
-
if (signal?.aborted) {
|
|
86
|
-
return Promise.reject(new DOMException("Aborted", "AbortError"));
|
|
87
|
-
}
|
|
88
|
-
return new Promise((resolve, reject) => {
|
|
89
|
-
const timer = setTimeout(resolve, ms);
|
|
90
|
-
signal?.addEventListener("abort", () => {
|
|
91
|
-
clearTimeout(timer);
|
|
92
|
-
reject(new DOMException("Aborted", "AbortError"));
|
|
93
|
-
}, { once: true });
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
export function createZendeskRestClient(options) {
|
|
97
|
-
const fetchImpl = options.fetchImpl ?? fetch;
|
|
98
|
-
const baseUrl = options.apiBaseUrl.replace(/\/$/, "");
|
|
99
|
-
const basePath = new URL(baseUrl).pathname.replace(/\/$/, "");
|
|
100
|
-
const authHeader = buildZendeskBasicAuthHeader(options.email, options.apiToken);
|
|
101
|
-
async function requestJson(method, relativePath, signal, body, query) {
|
|
102
|
-
const pathOnly = relativePath.split("?")[0] ?? relativePath;
|
|
103
|
-
const relative = pathOnly.startsWith(basePath) ?
|
|
104
|
-
pathOnly.slice(basePath.length) || "/"
|
|
105
|
-
: pathOnly.startsWith("/") ? pathOnly
|
|
106
|
-
: `/${pathOnly}`;
|
|
107
|
-
assertAllowedRelativePath(method, relative);
|
|
108
|
-
const suffix = query !== undefined ? `?${query.toString()}` : "";
|
|
109
|
-
const url = `${baseUrl}${relative}${suffix}`;
|
|
110
|
-
assertAllowedApiUrl(options.pinnedOrigin, baseUrl, url.split("?")[0] ?? url);
|
|
111
|
-
let bodyText;
|
|
112
|
-
if (body !== undefined) {
|
|
113
|
-
bodyText = JSON.stringify(body);
|
|
114
|
-
if (Buffer.byteLength(bodyText, "utf8") > MAX_HTTP_REQUEST_BODY_BYTES) {
|
|
115
|
-
throw new ConnectorSdkError("INVALID_INPUT", "Zendesk update payload exceeds the size limit.");
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
let attempt = 0;
|
|
119
|
-
for (;;) {
|
|
120
|
-
const controller = new AbortController();
|
|
121
|
-
const timer = setTimeout(() => controller.abort(), options.requestTimeoutMs);
|
|
122
|
-
const onAbort = () => controller.abort();
|
|
123
|
-
signal?.addEventListener("abort", onAbort, { once: true });
|
|
124
|
-
try {
|
|
125
|
-
const response = await fetchImpl(url, {
|
|
126
|
-
method,
|
|
127
|
-
redirect: "manual",
|
|
128
|
-
headers: {
|
|
129
|
-
Accept: "application/json",
|
|
130
|
-
"Content-Type": "application/json",
|
|
131
|
-
Authorization: authHeader,
|
|
132
|
-
},
|
|
133
|
-
...(bodyText !== undefined ? { body: bodyText } : {}),
|
|
134
|
-
signal: controller.signal,
|
|
135
|
-
});
|
|
136
|
-
if (response.status >= 300 && response.status < 400) {
|
|
137
|
-
throw new ConnectorSdkError("PROVIDER_ERROR", "Zendesk redirects are not followed.");
|
|
138
|
-
}
|
|
139
|
-
const text = await readBoundedResponseText(response, MAX_HTTP_RESPONSE_BYTES, signal);
|
|
140
|
-
if (response.ok) {
|
|
141
|
-
if (text.length === 0) {
|
|
142
|
-
return null;
|
|
143
|
-
}
|
|
144
|
-
try {
|
|
145
|
-
return JSON.parse(text);
|
|
146
|
-
}
|
|
147
|
-
catch {
|
|
148
|
-
throw new ConnectorSdkError("PROVIDER_ERROR", "Zendesk returned invalid JSON.");
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
const httpError = {
|
|
152
|
-
kind: "http",
|
|
153
|
-
status: response.status,
|
|
154
|
-
...(parseRetryAfterMs(response) !== undefined
|
|
155
|
-
? { retryAfterMs: parseRetryAfterMs(response) }
|
|
156
|
-
: {}),
|
|
157
|
-
};
|
|
158
|
-
const retriable = method === "GET" &&
|
|
159
|
-
attempt < READ_ONLY_MAX_RETRIES &&
|
|
160
|
-
(response.status === 429 ||
|
|
161
|
-
response.status === 502 ||
|
|
162
|
-
response.status === 503 ||
|
|
163
|
-
response.status === 504);
|
|
164
|
-
if (retriable) {
|
|
165
|
-
attempt += 1;
|
|
166
|
-
const delay = httpError.retryAfterMs ?? READ_ONLY_RETRY_DELAY_MS;
|
|
167
|
-
await sleep(delay, signal);
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
throw httpError;
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
if (error instanceof DOMException && error.name === "AbortError") {
|
|
174
|
-
if (signal?.aborted) {
|
|
175
|
-
throw error;
|
|
176
|
-
}
|
|
177
|
-
throw new ConnectorSdkError("TIMEOUT", "Zendesk request timed out.");
|
|
178
|
-
}
|
|
179
|
-
throw error;
|
|
180
|
-
}
|
|
181
|
-
finally {
|
|
182
|
-
clearTimeout(timer);
|
|
183
|
-
signal?.removeEventListener("abort", onAbort);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
return {
|
|
188
|
-
listTickets: async (params, signal) => {
|
|
189
|
-
const query = new URLSearchParams();
|
|
190
|
-
query.set("page", String(params.page));
|
|
191
|
-
query.set("per_page", String(params.perPage));
|
|
192
|
-
if (params.status !== undefined) {
|
|
193
|
-
query.set("status", params.status);
|
|
194
|
-
}
|
|
195
|
-
const data = await requestJson("GET", "/tickets.json", signal, undefined, query);
|
|
196
|
-
const items = typeof data === "object" && data !== null && Array.isArray(data.tickets)
|
|
197
|
-
? data.tickets
|
|
198
|
-
: [];
|
|
199
|
-
const nextPage = items.length >= params.perPage ? params.page + 1 : undefined;
|
|
200
|
-
return { items: data, nextPage };
|
|
201
|
-
},
|
|
202
|
-
getTicket: (ticketId, signal) => requestJson("GET", `/tickets/${ticketId}.json`, signal),
|
|
203
|
-
listTicketComments: async (ticketId, signal) => {
|
|
204
|
-
const data = await requestJson("GET", `/tickets/${ticketId}/comments.json`, signal);
|
|
205
|
-
const items = typeof data === "object" && data !== null && Array.isArray(data.comments)
|
|
206
|
-
? data.comments
|
|
207
|
-
: [];
|
|
208
|
-
return { items: data ?? { comments: items } };
|
|
209
|
-
},
|
|
210
|
-
getUser: (userId, signal) => requestJson("GET", `/users/${userId}.json`, signal),
|
|
211
|
-
getOrganization: (orgId, signal) => requestJson("GET", `/organizations/${orgId}.json`, signal),
|
|
212
|
-
createInternalNote: (ticketId, body, signal) => requestJson("PUT", `/tickets/${ticketId}.json`, signal, body),
|
|
213
|
-
updateTicketStatus: (ticketId, body, signal) => requestJson("PUT", `/tickets/${ticketId}.json`, signal, body),
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
//# sourceMappingURL=zendesk-rest-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zendesk-rest-client.js","sourceRoot":"","sources":["../src/zendesk-rest-client.ts"],"names":[],"mappings":"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"}
|