@t4h.framework/amber 0.0.0 → 0.2.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/.ai/skills/framework-amber/SKILL.md +225 -0
- package/LICENSE +21 -0
- package/README.md +78 -68
- package/dist/activities/AbstractAmberHttpRequestActivity.d.ts +9 -0
- package/dist/activities/AbstractAmberHttpRequestActivity.d.ts.map +1 -0
- package/dist/activities/AbstractAmberHttpRequestActivity.js +21 -0
- package/dist/activities/AbstractAmberHttpRequestActivity.js.map +1 -0
- package/dist/activities/AmberTabulateServiceActivity.d.ts +10 -0
- package/dist/activities/AmberTabulateServiceActivity.d.ts.map +1 -0
- package/dist/activities/AmberTabulateServiceActivity.js +20 -0
- package/dist/activities/AmberTabulateServiceActivity.js.map +1 -0
- package/dist/activities/AmberTransferServiceActivity.d.ts +86 -0
- package/dist/activities/AmberTransferServiceActivity.d.ts.map +1 -0
- package/dist/activities/AmberTransferServiceActivity.js +95 -0
- package/dist/activities/AmberTransferServiceActivity.js.map +1 -0
- package/dist/activities/AmberUpdateServiceActivity.d.ts +10 -0
- package/dist/activities/AmberUpdateServiceActivity.d.ts.map +1 -0
- package/dist/activities/AmberUpdateServiceActivity.js +23 -0
- package/dist/activities/AmberUpdateServiceActivity.js.map +1 -0
- package/dist/activities/ticket/AmberCommentTicketActivity.d.ts +10 -0
- package/dist/activities/ticket/AmberCommentTicketActivity.d.ts.map +1 -0
- package/dist/activities/ticket/AmberCommentTicketActivity.js +19 -0
- package/dist/activities/ticket/AmberCommentTicketActivity.js.map +1 -0
- package/dist/activities/ticket/AmberCreateTicketActivity.d.ts +13 -0
- package/dist/activities/ticket/AmberCreateTicketActivity.d.ts.map +1 -0
- package/dist/activities/ticket/AmberCreateTicketActivity.js +47 -0
- package/dist/activities/ticket/AmberCreateTicketActivity.js.map +1 -0
- package/dist/activities/ticket/AmberFindTicketFieldsActivity.d.ts +7 -0
- package/dist/activities/ticket/AmberFindTicketFieldsActivity.d.ts.map +1 -0
- package/dist/activities/ticket/AmberFindTicketFieldsActivity.js +20 -0
- package/dist/activities/ticket/AmberFindTicketFieldsActivity.js.map +1 -0
- package/dist/activities/ticket/AmberGetTicketActivity.d.ts +7 -0
- package/dist/activities/ticket/AmberGetTicketActivity.d.ts.map +1 -0
- package/dist/activities/ticket/AmberGetTicketActivity.js +27 -0
- package/dist/activities/ticket/AmberGetTicketActivity.js.map +1 -0
- package/dist/activities/ticket/AmberInteractTicketActivity.d.ts +10 -0
- package/dist/activities/ticket/AmberInteractTicketActivity.d.ts.map +1 -0
- package/dist/activities/ticket/AmberInteractTicketActivity.js +20 -0
- package/dist/activities/ticket/AmberInteractTicketActivity.js.map +1 -0
- package/dist/activities/ticket/AmberLockTicketActivity.d.ts +11 -0
- package/dist/activities/ticket/AmberLockTicketActivity.d.ts.map +1 -0
- package/dist/activities/ticket/AmberLockTicketActivity.js +29 -0
- package/dist/activities/ticket/AmberLockTicketActivity.js.map +1 -0
- package/dist/activities/ticket/AmberReleaseTicketLockActivity.d.ts +10 -0
- package/dist/activities/ticket/AmberReleaseTicketLockActivity.d.ts.map +1 -0
- package/dist/activities/ticket/AmberReleaseTicketLockActivity.js +27 -0
- package/dist/activities/ticket/AmberReleaseTicketLockActivity.js.map +1 -0
- package/dist/activities/ticket/AmberUpdateTicketFieldValueActivity.d.ts +14 -0
- package/dist/activities/ticket/AmberUpdateTicketFieldValueActivity.d.ts.map +1 -0
- package/dist/activities/ticket/AmberUpdateTicketFieldValueActivity.js +19 -0
- package/dist/activities/ticket/AmberUpdateTicketFieldValueActivity.js.map +1 -0
- package/dist/constants/urls.d.ts +3 -0
- package/dist/constants/urls.d.ts.map +1 -0
- package/dist/constants/urls.js +3 -0
- package/dist/constants/urls.js.map +1 -0
- package/dist/constants/webhook.d.ts +12 -0
- package/dist/constants/webhook.d.ts.map +1 -0
- package/dist/constants/webhook.js +11 -0
- package/dist/constants/webhook.js.map +1 -0
- package/dist/errors/AmberRequestError.d.ts +23 -0
- package/dist/errors/AmberRequestError.d.ts.map +1 -0
- package/dist/errors/AmberRequestError.js +43 -0
- package/dist/errors/AmberRequestError.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/inputs/AmberServiceTabulateEvent.d.ts +75 -0
- package/dist/inputs/AmberServiceTabulateEvent.d.ts.map +1 -0
- package/dist/inputs/AmberServiceTabulateEvent.js +26 -0
- package/dist/inputs/AmberServiceTabulateEvent.js.map +1 -0
- package/dist/inputs/AmberWebhookEvent.d.ts +19 -0
- package/dist/inputs/AmberWebhookEvent.d.ts.map +1 -0
- package/dist/inputs/AmberWebhookEvent.js +15 -0
- package/dist/inputs/AmberWebhookEvent.js.map +1 -0
- package/dist/models/Amber.d.ts +19 -0
- package/dist/models/Amber.d.ts.map +1 -0
- package/dist/models/Amber.js +36 -0
- package/dist/models/Amber.js.map +1 -0
- package/dist/models/Service.d.ts +26 -0
- package/dist/models/Service.d.ts.map +1 -0
- package/dist/models/Service.js +53 -0
- package/dist/models/Service.js.map +1 -0
- package/dist/models/Ticket.d.ts +27 -0
- package/dist/models/Ticket.d.ts.map +1 -0
- package/dist/models/Ticket.js +51 -0
- package/dist/models/Ticket.js.map +1 -0
- package/dist/tools/AmberWebhook.d.ts +22 -0
- package/dist/tools/AmberWebhook.d.ts.map +1 -0
- package/dist/tools/AmberWebhook.js +51 -0
- package/dist/tools/AmberWebhook.js.map +1 -0
- package/dist/typings/ServiceTabulate.d.ts +13 -0
- package/dist/typings/ServiceTabulate.d.ts.map +1 -0
- package/dist/typings/ServiceTabulate.js +2 -0
- package/dist/typings/ServiceTabulate.js.map +1 -0
- package/dist/typings/ServiceTicket.d.ts +46 -0
- package/dist/typings/ServiceTicket.d.ts.map +1 -0
- package/dist/typings/ServiceTicket.js +2 -0
- package/dist/typings/ServiceTicket.js.map +1 -0
- package/dist/typings/ServiceTicketComment.d.ts +6 -0
- package/dist/typings/ServiceTicketComment.d.ts.map +1 -0
- package/dist/typings/ServiceTicketComment.js +2 -0
- package/dist/typings/ServiceTicketComment.js.map +1 -0
- package/dist/typings/ServiceTicketField.d.ts +12 -0
- package/dist/typings/ServiceTicketField.d.ts.map +1 -0
- package/dist/typings/ServiceTicketField.js +2 -0
- package/dist/typings/ServiceTicketField.js.map +1 -0
- package/dist/typings/ServiceTicketInteraction.d.ts +24 -0
- package/dist/typings/ServiceTicketInteraction.d.ts.map +1 -0
- package/dist/typings/ServiceTicketInteraction.js +2 -0
- package/dist/typings/ServiceTicketInteraction.js.map +1 -0
- package/dist/typings/ServiceTicketLock.d.ts +6 -0
- package/dist/typings/ServiceTicketLock.d.ts.map +1 -0
- package/dist/typings/ServiceTicketLock.js +2 -0
- package/dist/typings/ServiceTicketLock.js.map +1 -0
- package/dist/typings/ServiceTransfer.d.ts +14 -0
- package/dist/typings/ServiceTransfer.d.ts.map +1 -0
- package/dist/typings/ServiceTransfer.js +2 -0
- package/dist/typings/ServiceTransfer.js.map +1 -0
- package/dist/typings/ServiceUpdate.d.ts +6 -0
- package/dist/typings/ServiceUpdate.d.ts.map +1 -0
- package/dist/typings/ServiceUpdate.js +2 -0
- package/dist/typings/ServiceUpdate.js.map +1 -0
- package/package.json +10 -7
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Amber answered a request with a status other than 200. The message carries
|
|
3
|
+
* the status and the response body, which is where Amber explains what it
|
|
4
|
+
* refused (`{"errors":{"$.tabulationOption":["Not found tabulation option"]}}`),
|
|
5
|
+
* so the reason survives loggers that print only `message`.
|
|
6
|
+
*/
|
|
7
|
+
export declare class AmberRequestError extends Error {
|
|
8
|
+
readonly status: number;
|
|
9
|
+
readonly body: string | undefined;
|
|
10
|
+
constructor(message: string, status: number, body?: string);
|
|
11
|
+
/**
|
|
12
|
+
* Builds the error from a response whose body is still unread. A body that
|
|
13
|
+
* cannot be read is dropped, never turned into a second error.
|
|
14
|
+
*/
|
|
15
|
+
static from(message: string, response: {
|
|
16
|
+
status: number;
|
|
17
|
+
body: {
|
|
18
|
+
text(): Promise<string>;
|
|
19
|
+
};
|
|
20
|
+
}): Promise<AmberRequestError>;
|
|
21
|
+
private static trim;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=AmberRequestError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmberRequestError.d.ts","sourceRoot":"","sources":["../../src/errors/AmberRequestError.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,MAAM,EAAE,MAAM,CAAA;IAC9B,SAAgB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;gBAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAe1D;;;OAGG;WACiB,IAAI,CACtB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;SAAE,CAAA;KAAE,GAC9D,OAAO,CAAC,iBAAiB,CAAC;IAY7B,OAAO,CAAC,MAAM,CAAC,IAAI;CASpB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const MAX_BODY_LENGTH = 2_000;
|
|
2
|
+
/**
|
|
3
|
+
* Amber answered a request with a status other than 200. The message carries
|
|
4
|
+
* the status and the response body, which is where Amber explains what it
|
|
5
|
+
* refused (`{"errors":{"$.tabulationOption":["Not found tabulation option"]}}`),
|
|
6
|
+
* so the reason survives loggers that print only `message`.
|
|
7
|
+
*/
|
|
8
|
+
export class AmberRequestError extends Error {
|
|
9
|
+
status;
|
|
10
|
+
body;
|
|
11
|
+
constructor(message, status, body) {
|
|
12
|
+
const trimmed = AmberRequestError.trim(body);
|
|
13
|
+
super(trimmed
|
|
14
|
+
? `${message}: Amber responded ${status} ${trimmed}`
|
|
15
|
+
: `${message}: Amber responded ${status}`, { cause: { httpStatusCode: status, body: trimmed } });
|
|
16
|
+
this.name = 'AmberRequestError';
|
|
17
|
+
this.status = status;
|
|
18
|
+
this.body = trimmed;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Builds the error from a response whose body is still unread. A body that
|
|
22
|
+
* cannot be read is dropped, never turned into a second error.
|
|
23
|
+
*/
|
|
24
|
+
static async from(message, response) {
|
|
25
|
+
let body;
|
|
26
|
+
try {
|
|
27
|
+
body = await response.body.text();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
body = undefined;
|
|
31
|
+
}
|
|
32
|
+
return new AmberRequestError(message, response.status, body);
|
|
33
|
+
}
|
|
34
|
+
static trim(body) {
|
|
35
|
+
const text = body?.trim();
|
|
36
|
+
if (!text)
|
|
37
|
+
return undefined;
|
|
38
|
+
return text.length > MAX_BODY_LENGTH
|
|
39
|
+
? `${text.slice(0, MAX_BODY_LENGTH)}…`
|
|
40
|
+
: text;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=AmberRequestError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmberRequestError.js","sourceRoot":"","sources":["../../src/errors/AmberRequestError.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,KAAK,CAAA;AAE7B;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1B,MAAM,CAAQ;IACd,IAAI,CAAoB;IAExC,YAAY,OAAe,EAAE,MAAc,EAAE,IAAa;QACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE5C,KAAK,CACH,OAAO;YACL,CAAC,CAAC,GAAG,OAAO,qBAAqB,MAAM,IAAI,OAAO,EAAE;YACpD,CAAC,CAAC,GAAG,OAAO,qBAAqB,MAAM,EAAE,EAC3C,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CACrD,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;IACrB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,OAAe,EACf,QAA+D;QAE/D,IAAI,IAAwB,CAAA;QAE5B,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC9D,CAAC;IAEO,MAAM,CAAC,IAAI,CAAC,IAAa;QAC/B,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAA;QAEzB,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAA;QAE3B,OAAO,IAAI,CAAC,MAAM,GAAG,eAAe;YAClC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG;YACtC,CAAC,CAAC,IAAI,CAAA;IACV,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export { AMBER_WEBHOOK_EVENT_TYPES, type AmberWebhookEventType, } from './constants/webhook.js';
|
|
2
|
+
export * from './models/Amber.js';
|
|
3
|
+
export * from './models/Service.js';
|
|
4
|
+
export * from './models/Ticket.js';
|
|
5
|
+
export * from './errors/AmberRequestError.js';
|
|
6
|
+
export * from './activities/AbstractAmberHttpRequestActivity.js';
|
|
7
|
+
export * from './activities/AmberTabulateServiceActivity.js';
|
|
8
|
+
export * from './activities/AmberTransferServiceActivity.js';
|
|
9
|
+
export * from './activities/AmberUpdateServiceActivity.js';
|
|
10
|
+
export * from './activities/ticket/AmberCommentTicketActivity.js';
|
|
11
|
+
export * from './activities/ticket/AmberCreateTicketActivity.js';
|
|
12
|
+
export * from './activities/ticket/AmberFindTicketFieldsActivity.js';
|
|
13
|
+
export * from './activities/ticket/AmberGetTicketActivity.js';
|
|
14
|
+
export * from './activities/ticket/AmberInteractTicketActivity.js';
|
|
15
|
+
export * from './activities/ticket/AmberLockTicketActivity.js';
|
|
16
|
+
export * from './activities/ticket/AmberReleaseTicketLockActivity.js';
|
|
17
|
+
export * from './activities/ticket/AmberUpdateTicketFieldValueActivity.js';
|
|
18
|
+
export { AmberServiceTabulateEventSchema, type AmberServiceTabulateEvent, } from './inputs/AmberServiceTabulateEvent.js';
|
|
19
|
+
export { AmberWebhook } from './tools/AmberWebhook.js';
|
|
20
|
+
export type * from './typings/ServiceTabulate.js';
|
|
21
|
+
export type * from './typings/ServiceTicket.js';
|
|
22
|
+
export type * from './typings/ServiceTicketComment.js';
|
|
23
|
+
export type * from './typings/ServiceTicketField.js';
|
|
24
|
+
export type * from './typings/ServiceTicketInteraction.js';
|
|
25
|
+
export type * from './typings/ServiceTicketLock.js';
|
|
26
|
+
export type * from './typings/ServiceTransfer.js';
|
|
27
|
+
export type * from './typings/ServiceUpdate.js';
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAA;AAE/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAElC,cAAc,+BAA+B,CAAA;AAE7C,cAAc,kDAAkD,CAAA;AAEhE,cAAc,8CAA8C,CAAA;AAC5D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,4CAA4C,CAAA;AAE1D,cAAc,mDAAmD,CAAA;AACjE,cAAc,kDAAkD,CAAA;AAChE,cAAc,sDAAsD,CAAA;AACpE,cAAc,+CAA+C,CAAA;AAC7D,cAAc,oDAAoD,CAAA;AAClE,cAAc,gDAAgD,CAAA;AAC9D,cAAc,uDAAuD,CAAA;AACrE,cAAc,4DAA4D,CAAA;AAE1E,OAAO,EACL,+BAA+B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,mBAAmB,8BAA8B,CAAA;AACjD,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,mCAAmC,CAAA;AACtD,mBAAmB,iCAAiC,CAAA;AACpD,mBAAmB,uCAAuC,CAAA;AAC1D,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,8BAA8B,CAAA;AACjD,mBAAmB,4BAA4B,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { AMBER_WEBHOOK_EVENT_TYPES, } from './constants/webhook.js';
|
|
2
|
+
export * from './models/Amber.js';
|
|
3
|
+
export * from './models/Service.js';
|
|
4
|
+
export * from './models/Ticket.js';
|
|
5
|
+
export * from './errors/AmberRequestError.js';
|
|
6
|
+
export * from './activities/AbstractAmberHttpRequestActivity.js';
|
|
7
|
+
export * from './activities/AmberTabulateServiceActivity.js';
|
|
8
|
+
export * from './activities/AmberTransferServiceActivity.js';
|
|
9
|
+
export * from './activities/AmberUpdateServiceActivity.js';
|
|
10
|
+
export * from './activities/ticket/AmberCommentTicketActivity.js';
|
|
11
|
+
export * from './activities/ticket/AmberCreateTicketActivity.js';
|
|
12
|
+
export * from './activities/ticket/AmberFindTicketFieldsActivity.js';
|
|
13
|
+
export * from './activities/ticket/AmberGetTicketActivity.js';
|
|
14
|
+
export * from './activities/ticket/AmberInteractTicketActivity.js';
|
|
15
|
+
export * from './activities/ticket/AmberLockTicketActivity.js';
|
|
16
|
+
export * from './activities/ticket/AmberReleaseTicketLockActivity.js';
|
|
17
|
+
export * from './activities/ticket/AmberUpdateTicketFieldValueActivity.js';
|
|
18
|
+
export { AmberServiceTabulateEventSchema, } from './inputs/AmberServiceTabulateEvent.js';
|
|
19
|
+
export { AmberWebhook } from './tools/AmberWebhook.js';
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAE1B,MAAM,wBAAwB,CAAA;AAE/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAElC,cAAc,+BAA+B,CAAA;AAE7C,cAAc,kDAAkD,CAAA;AAEhE,cAAc,8CAA8C,CAAA;AAC5D,cAAc,8CAA8C,CAAA;AAC5D,cAAc,4CAA4C,CAAA;AAE1D,cAAc,mDAAmD,CAAA;AACjE,cAAc,kDAAkD,CAAA;AAChE,cAAc,sDAAsD,CAAA;AACpE,cAAc,+CAA+C,CAAA;AAC7D,cAAc,oDAAoD,CAAA;AAClE,cAAc,gDAAgD,CAAA;AAC9D,cAAc,uDAAuD,CAAA;AACrE,cAAc,4DAA4D,CAAA;AAE1E,OAAO,EACL,+BAA+B,GAEhC,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Type } from 'typebox';
|
|
2
|
+
export declare const AmberServiceTabulateEventDataSchema: Type.TObject<{
|
|
3
|
+
id: Type.TString;
|
|
4
|
+
isInformative: Type.TBoolean;
|
|
5
|
+
tabulationOption: Type.TObject<{
|
|
6
|
+
id: Type.TString;
|
|
7
|
+
name: Type.TString;
|
|
8
|
+
tabulation: Type.TObject<{
|
|
9
|
+
id: Type.TString;
|
|
10
|
+
name: Type.TString;
|
|
11
|
+
}>;
|
|
12
|
+
}>;
|
|
13
|
+
serviceTransfer: Type.TObject<{
|
|
14
|
+
id: Type.TString;
|
|
15
|
+
skill: Type.TObject<{
|
|
16
|
+
id: Type.TString;
|
|
17
|
+
name: Type.TString;
|
|
18
|
+
}>;
|
|
19
|
+
}>;
|
|
20
|
+
notes: Type.TArray<Type.TObject<{
|
|
21
|
+
id: Type.TString;
|
|
22
|
+
type: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"private">]>;
|
|
23
|
+
content: Type.TString;
|
|
24
|
+
createdAt: Type.TString;
|
|
25
|
+
}>>;
|
|
26
|
+
service: Type.TObject<{
|
|
27
|
+
id: Type.TString;
|
|
28
|
+
}>;
|
|
29
|
+
tenant: Type.TObject<{
|
|
30
|
+
id: Type.TString;
|
|
31
|
+
name: Type.TOptional<Type.TString>;
|
|
32
|
+
}>;
|
|
33
|
+
}>;
|
|
34
|
+
export declare const AmberServiceTabulateEventSchema: Type.TObject<{
|
|
35
|
+
specversion: Type.TString;
|
|
36
|
+
id: Type.TString;
|
|
37
|
+
type: Type.TString;
|
|
38
|
+
source: Type.TString;
|
|
39
|
+
subject: Type.TString;
|
|
40
|
+
time: Type.TString;
|
|
41
|
+
data: Type.TObject<{
|
|
42
|
+
id: Type.TString;
|
|
43
|
+
isInformative: Type.TBoolean;
|
|
44
|
+
tabulationOption: Type.TObject<{
|
|
45
|
+
id: Type.TString;
|
|
46
|
+
name: Type.TString;
|
|
47
|
+
tabulation: Type.TObject<{
|
|
48
|
+
id: Type.TString;
|
|
49
|
+
name: Type.TString;
|
|
50
|
+
}>;
|
|
51
|
+
}>;
|
|
52
|
+
serviceTransfer: Type.TObject<{
|
|
53
|
+
id: Type.TString;
|
|
54
|
+
skill: Type.TObject<{
|
|
55
|
+
id: Type.TString;
|
|
56
|
+
name: Type.TString;
|
|
57
|
+
}>;
|
|
58
|
+
}>;
|
|
59
|
+
notes: Type.TArray<Type.TObject<{
|
|
60
|
+
id: Type.TString;
|
|
61
|
+
type: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"private">]>;
|
|
62
|
+
content: Type.TString;
|
|
63
|
+
createdAt: Type.TString;
|
|
64
|
+
}>>;
|
|
65
|
+
service: Type.TObject<{
|
|
66
|
+
id: Type.TString;
|
|
67
|
+
}>;
|
|
68
|
+
tenant: Type.TObject<{
|
|
69
|
+
id: Type.TString;
|
|
70
|
+
name: Type.TOptional<Type.TString>;
|
|
71
|
+
}>;
|
|
72
|
+
}>;
|
|
73
|
+
}>;
|
|
74
|
+
export type AmberServiceTabulateEvent = Type.Static<typeof AmberServiceTabulateEventSchema>;
|
|
75
|
+
//# sourceMappingURL=AmberServiceTabulateEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmberServiceTabulateEvent.d.ts","sourceRoot":"","sources":["../../src/inputs/AmberServiceTabulateEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAS9B,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwC/C,CAAA;AAED,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG3C,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,MAAM,CACjD,OAAO,+BAA+B,CACvC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Type } from 'typebox';
|
|
2
|
+
import { AmberWebhookServiceRefSchema, AmberWebhookTenantSchema, amberWebhookEventSchema, } from './AmberWebhookEvent.js';
|
|
3
|
+
import { AMBER_WEBHOOK_EVENT_TYPES } from '../constants/webhook.js';
|
|
4
|
+
export const AmberServiceTabulateEventDataSchema = Type.Object({
|
|
5
|
+
id: Type.String(),
|
|
6
|
+
isInformative: Type.Boolean(),
|
|
7
|
+
tabulationOption: Type.Object({
|
|
8
|
+
id: Type.String(),
|
|
9
|
+
name: Type.String(),
|
|
10
|
+
tabulation: Type.Object({ id: Type.String(), name: Type.String() }, { additionalProperties: true }),
|
|
11
|
+
}, { additionalProperties: true }),
|
|
12
|
+
serviceTransfer: Type.Object({
|
|
13
|
+
id: Type.String(),
|
|
14
|
+
skill: Type.Object({ id: Type.String(), name: Type.String() }, { additionalProperties: true }),
|
|
15
|
+
}, { additionalProperties: true }),
|
|
16
|
+
notes: Type.Array(Type.Object({
|
|
17
|
+
id: Type.String(),
|
|
18
|
+
type: Type.Union([Type.Literal('public'), Type.Literal('private')]),
|
|
19
|
+
content: Type.String(),
|
|
20
|
+
createdAt: Type.String(),
|
|
21
|
+
}, { additionalProperties: true })),
|
|
22
|
+
service: AmberWebhookServiceRefSchema,
|
|
23
|
+
tenant: AmberWebhookTenantSchema,
|
|
24
|
+
}, { additionalProperties: true });
|
|
25
|
+
export const AmberServiceTabulateEventSchema = amberWebhookEventSchema(AMBER_WEBHOOK_EVENT_TYPES.serviceTabulate, AmberServiceTabulateEventDataSchema);
|
|
26
|
+
//# sourceMappingURL=AmberServiceTabulateEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmberServiceTabulateEvent.js","sourceRoot":"","sources":["../../src/inputs/AmberServiceTabulateEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAEnE,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC,MAAM,CAC5D;IACE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;IACjB,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE;IAC7B,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAC3B;QACE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,UAAU,EAAE,IAAI,CAAC,MAAM,CACrB,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAC1C,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B;KACF,EACD,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B;IACD,eAAe,EAAE,IAAI,CAAC,MAAM,CAC1B;QACE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,IAAI,CAAC,MAAM,CAChB,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAC1C,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B;KACF,EACD,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B;IACD,KAAK,EAAE,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,MAAM,CACT;QACE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;KACzB,EACD,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B,CACF;IACD,OAAO,EAAE,4BAA4B;IACrC,MAAM,EAAE,wBAAwB;CACjC,EACD,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,uBAAuB,CACpE,yBAAyB,CAAC,eAAe,EACzC,mCAAmC,CACpC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Type } from 'typebox';
|
|
2
|
+
import type { AmberWebhookEventType } from '../constants/webhook.js';
|
|
3
|
+
export declare const AmberWebhookTenantSchema: Type.TObject<{
|
|
4
|
+
id: Type.TString;
|
|
5
|
+
name: Type.TOptional<Type.TString>;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const AmberWebhookServiceRefSchema: Type.TObject<{
|
|
8
|
+
id: Type.TString;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function amberWebhookEventSchema<TData extends Type.TSchema>(type: AmberWebhookEventType, data: TData): Type.TObject<{
|
|
11
|
+
specversion: Type.TString;
|
|
12
|
+
id: Type.TString;
|
|
13
|
+
type: Type.TString;
|
|
14
|
+
source: Type.TString;
|
|
15
|
+
subject: Type.TString;
|
|
16
|
+
time: Type.TString;
|
|
17
|
+
data: TData;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=AmberWebhookEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmberWebhookEvent.d.ts","sourceRoot":"","sources":["../../src/inputs/AmberWebhookEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEpE,eAAO,MAAM,wBAAwB;;;EAGpC,CAAA;AAED,eAAO,MAAM,4BAA4B;;EAGxC,CAAA;AAED,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,EAChE,IAAI,EAAE,qBAAqB,EAC3B,IAAI,EAAE,KAAK;;;;;;;;GAcZ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Type } from 'typebox';
|
|
2
|
+
export const AmberWebhookTenantSchema = Type.Object({ id: Type.String(), name: Type.Optional(Type.String()) }, { additionalProperties: true });
|
|
3
|
+
export const AmberWebhookServiceRefSchema = Type.Object({ id: Type.String() }, { additionalProperties: true });
|
|
4
|
+
export function amberWebhookEventSchema(type, data) {
|
|
5
|
+
return Type.Object({
|
|
6
|
+
specversion: Type.String(),
|
|
7
|
+
id: Type.String(),
|
|
8
|
+
type: Type.String({ pattern: `(^|[.:])${type}$` }),
|
|
9
|
+
source: Type.String(),
|
|
10
|
+
subject: Type.String(),
|
|
11
|
+
time: Type.String(),
|
|
12
|
+
data,
|
|
13
|
+
}, { additionalProperties: true });
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=AmberWebhookEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmberWebhookEvent.js","sourceRoot":"","sources":["../../src/inputs/AmberWebhookEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAI9B,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CACjD,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EACzD,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC,MAAM,CACrD,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EACrB,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B,CAAA;AAED,MAAM,UAAU,uBAAuB,CACrC,IAA2B,EAC3B,IAAW;IAEX,OAAO,IAAI,CAAC,MAAM,CAChB;QACE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC;QAClD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,IAAI;KACL,EACD,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAC/B,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Secret } from '@t4h.framework/core';
|
|
2
|
+
import type { ServiceRequestConfig } from './Service.js';
|
|
3
|
+
import { type AmberCreateTicketActivityInput } from '../activities/ticket/AmberCreateTicketActivity.js';
|
|
4
|
+
export type AmberConfig = {
|
|
5
|
+
url: string;
|
|
6
|
+
tenant: string;
|
|
7
|
+
channel: string;
|
|
8
|
+
clientId: string;
|
|
9
|
+
clientSecret: Secret;
|
|
10
|
+
};
|
|
11
|
+
export declare class Amber {
|
|
12
|
+
#private;
|
|
13
|
+
constructor(config: AmberConfig);
|
|
14
|
+
get url(): string;
|
|
15
|
+
createTicket(input: Omit<AmberCreateTicketActivityInput, 'channel'>, config?: ServiceRequestConfig): Promise<Promise<import("./Ticket.js").Ticket>>;
|
|
16
|
+
getTicket(id: string, config?: ServiceRequestConfig): Promise<Promise<import("./Ticket.js").Ticket>>;
|
|
17
|
+
private settings;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Amber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Amber.d.ts","sourceRoot":"","sources":["../../src/models/Amber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAExD,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,mDAAmD,CAAA;AAI1D,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAMD,qBAAa,KAAK;;gBAIJ,MAAM,EAAE,WAAW;IAY/B,IAAW,GAAG,WAEb;IAEM,YAAY,CACjB,KAAK,EAAE,IAAI,CAAC,8BAA8B,EAAE,SAAS,CAAC,EACtD,MAAM,CAAC,EAAE,oBAAoB;IAQxB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB;IAI1D,OAAO,CAAC,QAAQ;CAejB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { History } from '@t4h.framework/core';
|
|
2
|
+
import { AmberCreateTicketActivity, } from '../activities/ticket/AmberCreateTicketActivity.js';
|
|
3
|
+
import { AmberGetTicketActivity } from '../activities/ticket/AmberGetTicketActivity.js';
|
|
4
|
+
import { AMBER_CHANNEL_PATH } from '../constants/urls.js';
|
|
5
|
+
const amberCreateTicketActivity = History.bind(AmberCreateTicketActivity);
|
|
6
|
+
const amberGetTicketActivity = History.bind(AmberGetTicketActivity);
|
|
7
|
+
export class Amber {
|
|
8
|
+
#config;
|
|
9
|
+
#url;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.#config = config;
|
|
12
|
+
this.#url = new URL(AMBER_CHANNEL_PATH.replace(':tenant', config.tenant).replace(':channel', config.channel), config.url).href;
|
|
13
|
+
}
|
|
14
|
+
get url() {
|
|
15
|
+
return this.#url;
|
|
16
|
+
}
|
|
17
|
+
createTicket(input, config) {
|
|
18
|
+
return amberCreateTicketActivity({ ...input, channel: this.#config.channel }, this.settings(config));
|
|
19
|
+
}
|
|
20
|
+
getTicket(id, config) {
|
|
21
|
+
return amberGetTicketActivity(id, this.settings(config));
|
|
22
|
+
}
|
|
23
|
+
settings(config) {
|
|
24
|
+
const settings = {
|
|
25
|
+
auth: {
|
|
26
|
+
username: this.#config.clientId,
|
|
27
|
+
password: this.#config.clientSecret,
|
|
28
|
+
},
|
|
29
|
+
url: this.#url,
|
|
30
|
+
};
|
|
31
|
+
if (config?.retry)
|
|
32
|
+
settings.retry = config.retry;
|
|
33
|
+
return settings;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=Amber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Amber.js","sourceRoot":"","sources":["../../src/models/Amber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAA;AAI1D,OAAO,EACL,yBAAyB,GAE1B,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAUzD,MAAM,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;AAEzE,MAAM,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;AAEnE,MAAM,OAAO,KAAK;IACP,OAAO,CAAa;IACpB,IAAI,CAAQ;IAErB,YAAY,MAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QAErB,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CACjB,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAC1D,UAAU,EACV,MAAM,CAAC,OAAO,CACf,EACD,MAAM,CAAC,GAAG,CACX,CAAC,IAAI,CAAA;IACR,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEM,YAAY,CACjB,KAAsD,EACtD,MAA6B;QAE7B,OAAO,yBAAyB,CAC9B,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtB,CAAA;IACH,CAAC;IAEM,SAAS,CAAC,EAAU,EAAE,MAA6B;QACxD,OAAO,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAC1D,CAAC;IAEO,QAAQ,CACd,MAA6B;QAE7B,MAAM,QAAQ,GAAkC;YAC9C,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAC/B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;aACpC;YACD,GAAG,EAAE,IAAI,CAAC,IAAI;SACf,CAAA;QAED,IAAI,MAAM,EAAE,KAAK;YAAE,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QAEhD,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type AsyncActivityAwaitable, type Secret } from '@t4h.framework/core';
|
|
2
|
+
import type { AmberHttpRequestActivityInput } from '../activities/AbstractAmberHttpRequestActivity.js';
|
|
3
|
+
import { type AmberTabulateServiceActivityInput } from '../activities/AmberTabulateServiceActivity.js';
|
|
4
|
+
import { AmberTransferServiceActivity, type AmberTransferServiceActivityInput } from '../activities/AmberTransferServiceActivity.js';
|
|
5
|
+
import { type AmberUpdateServiceActivityInput } from '../activities/AmberUpdateServiceActivity.js';
|
|
6
|
+
export type ServiceConfig = {
|
|
7
|
+
clientId: string;
|
|
8
|
+
clientSecret: Secret;
|
|
9
|
+
url: string;
|
|
10
|
+
};
|
|
11
|
+
export type ServiceRequestConfig = Pick<AmberHttpRequestActivityInput, 'retry'>;
|
|
12
|
+
export type ServiceTransferOptions = ServiceRequestConfig & Pick<AmberTransferServiceActivityInput, 'timeoutInMs'>;
|
|
13
|
+
/** What `transfer` resolves to: `wait()` suspends until the transfer settles. */
|
|
14
|
+
export type ServiceTransferAwaitable = Pick<AsyncActivityAwaitable<AmberTransferServiceActivity>, 'wait'>;
|
|
15
|
+
export declare abstract class Service {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
protected readonly config: ServiceConfig;
|
|
18
|
+
constructor(id: string, config: ServiceConfig);
|
|
19
|
+
static configOf(settings: AmberHttpRequestActivityInput): ServiceConfig;
|
|
20
|
+
transfer(input: Omit<AmberTransferServiceActivityInput, 'id' | 'timeoutInMs'>, { timeoutInMs, ...config }?: ServiceTransferOptions): Promise<ServiceTransferAwaitable>;
|
|
21
|
+
tabulate(input: Omit<AmberTabulateServiceActivityInput, 'id'>, config?: ServiceRequestConfig): Promise<Promise<void>>;
|
|
22
|
+
update(input: Omit<AmberUpdateServiceActivityInput, 'id'>, config?: ServiceRequestConfig): Promise<Promise<void>>;
|
|
23
|
+
finish(config?: ServiceRequestConfig): Promise<Promise<void>>;
|
|
24
|
+
protected settings(config?: ServiceRequestConfig): AmberHttpRequestActivityInput;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=Service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/models/Service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACZ,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAA;AACtG,OAAO,EAEL,KAAK,iCAAiC,EACvC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,4BAA4B,EAC5B,KAAK,iCAAiC,EACvC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,6CAA6C,CAAA;AAQpD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAA;AAE/E,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GACvD,IAAI,CAAC,iCAAiC,EAAE,aAAa,CAAC,CAAA;AAExD,iFAAiF;AACjF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,sBAAsB,CAAC,4BAA4B,CAAC,EACpD,MAAM,CACP,CAAA;AAED,8BAAsB,OAAO;aAET,EAAE,EAAE,MAAM;IAC1B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa;gBADxB,EAAE,EAAE,MAAM,EACP,MAAM,EAAE,aAAa;WAG5B,QAAQ,CACpB,QAAQ,EAAE,6BAA6B,GACtC,aAAa;IAQT,QAAQ,CACb,KAAK,EAAE,IAAI,CAAC,iCAAiC,EAAE,IAAI,GAAG,aAAa,CAAC,EACpE,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,GAAE,sBAA2B,GACtD,OAAO,CAAC,wBAAwB,CAAC;IAW7B,QAAQ,CACb,KAAK,EAAE,IAAI,CAAC,iCAAiC,EAAE,IAAI,CAAC,EACpD,MAAM,CAAC,EAAE,oBAAoB;IAQxB,MAAM,CACX,KAAK,EAAE,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,EAClD,MAAM,CAAC,EAAE,oBAAoB;IAKxB,MAAM,CAAC,MAAM,CAAC,EAAE,oBAAoB;IAI3C,SAAS,CAAC,QAAQ,CAChB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,6BAA6B;CAajC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { History, } from '@t4h.framework/core';
|
|
2
|
+
import { AmberTabulateServiceActivity, } from '../activities/AmberTabulateServiceActivity.js';
|
|
3
|
+
import { AmberTransferServiceActivity, } from '../activities/AmberTransferServiceActivity.js';
|
|
4
|
+
import { AmberUpdateServiceActivity, } from '../activities/AmberUpdateServiceActivity.js';
|
|
5
|
+
const amberTransferActivity = History.bind(AmberTransferServiceActivity);
|
|
6
|
+
const amberTabulateActivity = History.bind(AmberTabulateServiceActivity);
|
|
7
|
+
const amberUpdateActivity = History.bind(AmberUpdateServiceActivity);
|
|
8
|
+
export class Service {
|
|
9
|
+
id;
|
|
10
|
+
config;
|
|
11
|
+
constructor(id, config) {
|
|
12
|
+
this.id = id;
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
static configOf(settings) {
|
|
16
|
+
return {
|
|
17
|
+
clientId: settings.auth.username,
|
|
18
|
+
clientSecret: settings.auth.password,
|
|
19
|
+
url: settings.url,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
transfer(input, { timeoutInMs, ...config } = {}) {
|
|
23
|
+
const activityInput = {
|
|
24
|
+
...input,
|
|
25
|
+
id: this.id,
|
|
26
|
+
};
|
|
27
|
+
if (timeoutInMs !== undefined)
|
|
28
|
+
activityInput.timeoutInMs = timeoutInMs;
|
|
29
|
+
return amberTransferActivity(activityInput, this.settings(config));
|
|
30
|
+
}
|
|
31
|
+
tabulate(input, config) {
|
|
32
|
+
return amberTabulateActivity({ ...input, id: this.id }, this.settings(config));
|
|
33
|
+
}
|
|
34
|
+
update(input, config) {
|
|
35
|
+
return amberUpdateActivity({ ...input, id: this.id }, this.settings(config));
|
|
36
|
+
}
|
|
37
|
+
finish(config) {
|
|
38
|
+
return this.update({ status: 'finished' }, config);
|
|
39
|
+
}
|
|
40
|
+
settings(config) {
|
|
41
|
+
const settings = {
|
|
42
|
+
auth: {
|
|
43
|
+
username: this.config.clientId,
|
|
44
|
+
password: this.config.clientSecret,
|
|
45
|
+
},
|
|
46
|
+
url: this.config.url,
|
|
47
|
+
};
|
|
48
|
+
if (config?.retry)
|
|
49
|
+
settings.retry = config.retry;
|
|
50
|
+
return settings;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=Service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/models/Service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,GAGR,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,4BAA4B,GAE7B,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,4BAA4B,GAE7B,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,0BAA0B,GAE3B,MAAM,6CAA6C,CAAA;AAEpD,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;AAExE,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;AAExE,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;AAmBpE,MAAM,OAAgB,OAAO;IAET;IACG;IAFrB,YACkB,EAAU,EACP,MAAqB;QADxB,OAAE,GAAF,EAAE,CAAQ;QACP,WAAM,GAAN,MAAM,CAAe;IACvC,CAAC;IAEG,MAAM,CAAC,QAAQ,CACpB,QAAuC;QAEvC,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;YAChC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;YACpC,GAAG,EAAE,QAAQ,CAAC,GAAG;SAClB,CAAA;IACH,CAAC;IAEM,QAAQ,CACb,KAAoE,EACpE,EAAE,WAAW,EAAE,GAAG,MAAM,KAA6B,EAAE;QAEvD,MAAM,aAAa,GAAsC;YACvD,GAAG,KAAK;YACR,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAA;QAED,IAAI,WAAW,KAAK,SAAS;YAAE,aAAa,CAAC,WAAW,GAAG,WAAW,CAAA;QAEtE,OAAO,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IACpE,CAAC;IAEM,QAAQ,CACb,KAAoD,EACpD,MAA6B;QAE7B,OAAO,qBAAqB,CAC1B,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtB,CAAA;IACH,CAAC;IAEM,MAAM,CACX,KAAkD,EAClD,MAA6B;QAE7B,OAAO,mBAAmB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9E,CAAC;IAEM,MAAM,CAAC,MAA6B;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IAES,QAAQ,CAChB,MAA6B;QAE7B,MAAM,QAAQ,GAAkC;YAC9C,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC9B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;aACnC;YACD,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;SACrB,CAAA;QAED,IAAI,MAAM,EAAE,KAAK;YAAE,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QAEhD,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Service, type ServiceRequestConfig, type ServiceTransferAwaitable, type ServiceTransferOptions } from './Service.js';
|
|
2
|
+
import type { AmberTransferServiceActivityInput } from '../activities/AmberTransferServiceActivity.js';
|
|
3
|
+
import { type AmberCommentTicketActivityInput } from '../activities/ticket/AmberCommentTicketActivity.js';
|
|
4
|
+
import { type AmberLockTicketActivityInput } from '../activities/ticket/AmberLockTicketActivity.js';
|
|
5
|
+
import { type AmberUpdateTicketFieldValueActivityInput } from '../activities/ticket/AmberUpdateTicketFieldValueActivity.js';
|
|
6
|
+
import type { ServiceTicketInteractionInput } from '../typings/ServiceTicketInteraction.js';
|
|
7
|
+
import type { ServiceTicketLockInput } from '../typings/ServiceTicketLock.js';
|
|
8
|
+
export type TicketTransferOptions = ServiceTransferOptions & {
|
|
9
|
+
/**
|
|
10
|
+
* Lock taken back by the workflow once `wait()` resolves, so no agent picks
|
|
11
|
+
* the ticket up again while the workflow finishes it. Defaults to a lock
|
|
12
|
+
* with no expiration. Pass `false` to leave the ticket unlocked, or
|
|
13
|
+
* `{ expiresAt, metadata }` to customize the lock. Only applies to
|
|
14
|
+
* transfers that release the lock (`status: 'in-queue'` or `lockRelease`).
|
|
15
|
+
*/
|
|
16
|
+
lock?: Omit<ServiceTicketLockInput, 'ref'> | false;
|
|
17
|
+
};
|
|
18
|
+
export declare class Ticket extends Service {
|
|
19
|
+
transfer(input: Omit<AmberTransferServiceActivityInput, 'id' | 'timeoutInMs'>, { lock, ...options }?: TicketTransferOptions): Promise<ServiceTransferAwaitable>;
|
|
20
|
+
comment(input: Omit<AmberCommentTicketActivityInput, 'id'>, config?: ServiceRequestConfig): Promise<Promise<void>>;
|
|
21
|
+
interact(input: ServiceTicketInteractionInput, config?: ServiceRequestConfig): Promise<Promise<void>>;
|
|
22
|
+
lock(input?: Omit<AmberLockTicketActivityInput, 'id'>, config?: ServiceRequestConfig): Promise<Promise<void>>;
|
|
23
|
+
releaseLock(config?: ServiceRequestConfig): Promise<Promise<void>>;
|
|
24
|
+
fields(config?: ServiceRequestConfig): Promise<Promise<import("../index.js").ServiceTicketFieldOutput[]>>;
|
|
25
|
+
updateField(input: Omit<AmberUpdateTicketFieldValueActivityInput, 'id'>, config?: ServiceRequestConfig): Promise<Promise<void>>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Ticket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ticket.d.ts","sourceRoot":"","sources":["../../src/models/Ticket.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EACP,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACV,iCAAiC,EAElC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,oDAAoD,CAAA;AAG3D,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,iDAAiD,CAAA;AAExD,OAAO,EAEL,KAAK,wCAAwC,EAC9C,MAAM,6DAA6D,CAAA;AACpE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAA;AAC3F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAoB7E,MAAM,MAAM,qBAAqB,GAAG,sBAAsB,GAAG;IAC3D;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;CACnD,CAAA;AAED,qBAAa,MAAO,SAAQ,OAAO;IACX,QAAQ,CAC5B,KAAK,EAAE,IAAI,CAAC,iCAAiC,EAAE,IAAI,GAAG,aAAa,CAAC,EACpE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,GAAE,qBAA0B,GAC/C,OAAO,CAAC,wBAAwB,CAAC;IAsB7B,OAAO,CACZ,KAAK,EAAE,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,EAClD,MAAM,CAAC,EAAE,oBAAoB;IAQxB,QAAQ,CACb,KAAK,EAAE,6BAA6B,EACpC,MAAM,CAAC,EAAE,oBAAoB;IAQxB,IAAI,CACT,KAAK,GAAE,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAM,EACpD,MAAM,CAAC,EAAE,oBAAoB;IAQxB,WAAW,CAAC,MAAM,CAAC,EAAE,oBAAoB;IAOzC,MAAM,CAAC,MAAM,CAAC,EAAE,oBAAoB;IAIpC,WAAW,CAChB,KAAK,EAAE,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC,EAC3D,MAAM,CAAC,EAAE,oBAAoB;CAOhC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { History } from '@t4h.framework/core';
|
|
2
|
+
import { Service, } from './Service.js';
|
|
3
|
+
import { AmberCommentTicketActivity, } from '../activities/ticket/AmberCommentTicketActivity.js';
|
|
4
|
+
import { AmberFindTicketFieldsActivity } from '../activities/ticket/AmberFindTicketFieldsActivity.js';
|
|
5
|
+
import { AmberInteractTicketActivity } from '../activities/ticket/AmberInteractTicketActivity.js';
|
|
6
|
+
import { AmberLockTicketActivity, } from '../activities/ticket/AmberLockTicketActivity.js';
|
|
7
|
+
import { AmberReleaseTicketLockActivity } from '../activities/ticket/AmberReleaseTicketLockActivity.js';
|
|
8
|
+
import { AmberUpdateTicketFieldValueActivity, } from '../activities/ticket/AmberUpdateTicketFieldValueActivity.js';
|
|
9
|
+
const amberCommentTicketActivity = History.bind(AmberCommentTicketActivity);
|
|
10
|
+
const amberInteractTicketActivity = History.bind(AmberInteractTicketActivity);
|
|
11
|
+
const amberLockTicketActivity = History.bind(AmberLockTicketActivity);
|
|
12
|
+
const amberReleaseTicketLockActivity = History.bind(AmberReleaseTicketLockActivity);
|
|
13
|
+
const amberFindTicketFieldsActivity = History.bind(AmberFindTicketFieldsActivity);
|
|
14
|
+
const amberUpdateTicketFieldValueActivity = History.bind(AmberUpdateTicketFieldValueActivity);
|
|
15
|
+
export class Ticket extends Service {
|
|
16
|
+
async transfer(input, { lock, ...options } = {}) {
|
|
17
|
+
const transfer = await super.transfer(input, options);
|
|
18
|
+
const releases = input.status === 'in-queue' || input.lockRelease === true;
|
|
19
|
+
if (lock === false || !releases)
|
|
20
|
+
return transfer;
|
|
21
|
+
const config = {};
|
|
22
|
+
if (options.retry)
|
|
23
|
+
config.retry = options.retry;
|
|
24
|
+
return {
|
|
25
|
+
wait: async () => {
|
|
26
|
+
const output = await transfer.wait();
|
|
27
|
+
await this.lock(lock ?? {}, config);
|
|
28
|
+
return output;
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
comment(input, config) {
|
|
33
|
+
return amberCommentTicketActivity({ ...input, id: this.id }, this.settings(config));
|
|
34
|
+
}
|
|
35
|
+
interact(input, config) {
|
|
36
|
+
return amberInteractTicketActivity({ ...input, id: this.id }, this.settings(config));
|
|
37
|
+
}
|
|
38
|
+
lock(input = {}, config) {
|
|
39
|
+
return amberLockTicketActivity({ ...input, id: this.id }, this.settings(config));
|
|
40
|
+
}
|
|
41
|
+
releaseLock(config) {
|
|
42
|
+
return amberReleaseTicketLockActivity({ id: this.id }, this.settings(config));
|
|
43
|
+
}
|
|
44
|
+
fields(config) {
|
|
45
|
+
return amberFindTicketFieldsActivity(this.id, this.settings(config));
|
|
46
|
+
}
|
|
47
|
+
updateField(input, config) {
|
|
48
|
+
return amberUpdateTicketFieldValueActivity({ ...input, id: this.id }, this.settings(config));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=Ticket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ticket.js","sourceRoot":"","sources":["../../src/models/Ticket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AsyncActivityCallback, AsyncActivityCallbackAuthJwks } from '@t4h.framework/core';
|
|
2
|
+
import { type AmberWebhookEventType } from '../constants/webhook.js';
|
|
3
|
+
export declare namespace AmberWebhook {
|
|
4
|
+
type EventLike = {
|
|
5
|
+
type: string;
|
|
6
|
+
data: {
|
|
7
|
+
service?: {
|
|
8
|
+
id?: unknown;
|
|
9
|
+
};
|
|
10
|
+
isInformative?: unknown;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Derives the tenant JWKS URL from a channel URL
|
|
15
|
+
* (`{base}/v1/tenants/:tenant/channels/:channel` → `{base}/tenants/:tenant/.well-known/jwks.json`).
|
|
16
|
+
*/
|
|
17
|
+
function jwksUrl(channelUrl: string): string;
|
|
18
|
+
function authorization(channelUrl: string): AsyncActivityCallbackAuthJwks;
|
|
19
|
+
function isEvent(body: unknown, type: AmberWebhookEventType): body is EventLike;
|
|
20
|
+
function serviceId(event: AsyncActivityCallback.Event, type: AmberWebhookEventType): string | undefined;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=AmberWebhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmberWebhook.d.ts","sourceRoot":"","sources":["../../src/tools/AmberWebhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAQL,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAA;AAEhC,yBAAiB,YAAY,CAAC;IAC5B,KAAY,SAAS,GAAG;QACtB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE;YAAE,OAAO,CAAC,EAAE;gBAAE,EAAE,CAAC,EAAE,OAAO,CAAA;aAAE,CAAC;YAAC,aAAa,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAC9D,CAAA;IAMD;;;OAGG;IACH,SAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CASlD;IAED,SAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,GACjB,6BAA6B,CAY/B;IAED,SAAgB,OAAO,CACrB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,qBAAqB,GAC1B,IAAI,IAAI,SAAS,CAWnB;IAED,SAAgB,SAAS,CACvB,KAAK,EAAE,qBAAqB,CAAC,KAAK,EAClC,IAAI,EAAE,qBAAqB,GAC1B,MAAM,GAAG,SAAS,CAMpB;CACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AMBER_CHANNEL_PATH, AMBER_JWKS_PATH } from '../constants/urls.js';
|
|
2
|
+
import { AMBER_WEBHOOK_ALGORITHM_HEADER, AMBER_WEBHOOK_KID_HEADER, AMBER_WEBHOOK_SIGNATURE_FORMAT_HEADER, AMBER_WEBHOOK_SIGNATURE_HEADER, AMBER_WEBHOOK_SIGNED_PAYLOAD, AMBER_WEBHOOK_TIMESTAMP_HEADER, AMBER_WEBHOOK_TOLERANCE_IN_SECONDS, } from '../constants/webhook.js';
|
|
3
|
+
export var AmberWebhook;
|
|
4
|
+
(function (AmberWebhook) {
|
|
5
|
+
const CHANNEL_PATH_PATTERN = new RegExp(`^(?<base>.*?)${AMBER_CHANNEL_PATH.replace(':tenant', '(?<tenant>[^/]+)').replace(':channel', '[^/]+')}/?$`);
|
|
6
|
+
/**
|
|
7
|
+
* Derives the tenant JWKS URL from a channel URL
|
|
8
|
+
* (`{base}/v1/tenants/:tenant/channels/:channel` → `{base}/tenants/:tenant/.well-known/jwks.json`).
|
|
9
|
+
*/
|
|
10
|
+
function jwksUrl(channelUrl) {
|
|
11
|
+
const match = CHANNEL_PATH_PATTERN.exec(channelUrl);
|
|
12
|
+
if (!match?.groups)
|
|
13
|
+
throw new Error(`Cannot derive the Amber JWKS URL from ${channelUrl}`);
|
|
14
|
+
const { base, tenant } = match.groups;
|
|
15
|
+
return new URL(AMBER_JWKS_PATH.replace(':tenant', tenant), base).href;
|
|
16
|
+
}
|
|
17
|
+
AmberWebhook.jwksUrl = jwksUrl;
|
|
18
|
+
function authorization(channelUrl) {
|
|
19
|
+
return {
|
|
20
|
+
type: 'jwks',
|
|
21
|
+
jwksUri: jwksUrl(channelUrl),
|
|
22
|
+
header: AMBER_WEBHOOK_SIGNATURE_HEADER,
|
|
23
|
+
timestampHeader: AMBER_WEBHOOK_TIMESTAMP_HEADER,
|
|
24
|
+
kidHeader: AMBER_WEBHOOK_KID_HEADER,
|
|
25
|
+
algorithmHeader: AMBER_WEBHOOK_ALGORITHM_HEADER,
|
|
26
|
+
signatureFormatHeader: AMBER_WEBHOOK_SIGNATURE_FORMAT_HEADER,
|
|
27
|
+
signedPayload: AMBER_WEBHOOK_SIGNED_PAYLOAD,
|
|
28
|
+
toleranceInSeconds: AMBER_WEBHOOK_TOLERANCE_IN_SECONDS,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
AmberWebhook.authorization = authorization;
|
|
32
|
+
function isEvent(body, type) {
|
|
33
|
+
if (!body || typeof body !== 'object' || Array.isArray(body))
|
|
34
|
+
return false;
|
|
35
|
+
const candidate = body;
|
|
36
|
+
if (typeof candidate.type !== 'string')
|
|
37
|
+
return false;
|
|
38
|
+
if (candidate.type !== type && !candidate.type.endsWith(`.${type}`))
|
|
39
|
+
return false;
|
|
40
|
+
return !!candidate.data && typeof candidate.data === 'object';
|
|
41
|
+
}
|
|
42
|
+
AmberWebhook.isEvent = isEvent;
|
|
43
|
+
function serviceId(event, type) {
|
|
44
|
+
if (!isEvent(event.body, type))
|
|
45
|
+
return undefined;
|
|
46
|
+
const id = event.body.data.service?.id;
|
|
47
|
+
return typeof id === 'string' ? id : undefined;
|
|
48
|
+
}
|
|
49
|
+
AmberWebhook.serviceId = serviceId;
|
|
50
|
+
})(AmberWebhook || (AmberWebhook = {}));
|
|
51
|
+
//# sourceMappingURL=AmberWebhook.js.map
|