@relaymessenger/chat-sdk-adapter 0.2.0 → 0.3.0-staging.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/LICENSE +3 -3
- package/README.md +185 -98
- package/dist/adapter.d.ts +121 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +643 -0
- package/dist/adapter.js.map +1 -0
- package/dist/client.d.ts +64 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +230 -0
- package/dist/client.js.map +1 -0
- package/dist/content.d.ts +11 -0
- package/dist/content.d.ts.map +1 -0
- package/dist/content.js +172 -0
- package/dist/content.js.map +1 -0
- package/dist/credentials.d.ts +13 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +28 -0
- package/dist/credentials.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/reactions.d.ts +15 -0
- package/dist/reactions.d.ts.map +1 -0
- package/dist/reactions.js +58 -0
- package/dist/reactions.js.map +1 -0
- package/dist/signature.d.ts +22 -0
- package/dist/signature.d.ts.map +1 -0
- package/dist/signature.js +98 -0
- package/dist/signature.js.map +1 -0
- package/dist/thread-id.d.ts +8 -0
- package/dist/thread-id.d.ts.map +1 -0
- package/dist/thread-id.js +27 -0
- package/dist/thread-id.js.map +1 -0
- package/dist/turn.d.ts +16 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +22 -0
- package/dist/turn.js.map +1 -0
- package/dist/types.d.ts +177 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +27 -0
- package/dist/types.js.map +1 -0
- package/dist/webhook.d.ts +9 -0
- package/dist/webhook.d.ts.map +1 -0
- package/dist/webhook.js +115 -0
- package/dist/webhook.js.map +1 -0
- package/package.json +51 -32
- package/dist/src/adapter.d.ts +0 -125
- package/dist/src/adapter.js +0 -724
- package/dist/src/chunk.d.ts +0 -25
- package/dist/src/chunk.js +0 -108
- package/dist/src/client.d.ts +0 -112
- package/dist/src/client.js +0 -175
- package/dist/src/format.d.ts +0 -43
- package/dist/src/format.js +0 -266
- package/dist/src/idempotency.d.ts +0 -50
- package/dist/src/idempotency.js +0 -75
- package/dist/src/index.d.ts +0 -14
- package/dist/src/index.js +0 -8
- package/dist/src/reactions.d.ts +0 -12
- package/dist/src/reactions.js +0 -98
- package/dist/src/signature.d.ts +0 -46
- package/dist/src/signature.js +0 -95
- package/dist/src/threadId.d.ts +0 -12
- package/dist/src/threadId.js +0 -28
- package/dist/src/turn.d.ts +0 -38
- package/dist/src/turn.js +0 -15
- package/dist/src/types.d.ts +0 -177
- package/dist/src/types.js +0 -7
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { AdapterError } from "@chat-adapter/shared";
|
|
2
|
+
import type { RelayCredential } from "./credentials.js";
|
|
3
|
+
import type { RelayAttachmentAllocation, RelayChat, RelayGetMessagesResult, RelayMessage, RelayOutgoingPart, RelayReactionType, RelaySendMessageResponse } from "./types.js";
|
|
4
|
+
export declare const RELAY_DEFAULT_BASE_URL = "https://api.relayapp.im";
|
|
5
|
+
export interface RelayClientOptions {
|
|
6
|
+
/** Relay Agent Token or a resolver evaluated for every Relay API call. */
|
|
7
|
+
token?: RelayCredential;
|
|
8
|
+
baseUrl?: string;
|
|
9
|
+
fetch?: typeof fetch;
|
|
10
|
+
}
|
|
11
|
+
export interface RelayUploadOptions {
|
|
12
|
+
body: Uint8Array<ArrayBuffer>;
|
|
13
|
+
contentType: string;
|
|
14
|
+
durationMs?: number;
|
|
15
|
+
filename: string;
|
|
16
|
+
height?: number;
|
|
17
|
+
width?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class RelayApiError extends AdapterError {
|
|
20
|
+
readonly status: number;
|
|
21
|
+
readonly relayCode: string;
|
|
22
|
+
readonly responseBody?: unknown;
|
|
23
|
+
constructor(status: number, relayCode: string, message: string, responseBody?: unknown);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Minimal client for only the locked Relay v1 operations used by the adapter.
|
|
27
|
+
*/
|
|
28
|
+
export declare class RelayClient {
|
|
29
|
+
readonly baseUrl: string;
|
|
30
|
+
private readonly fetchImpl;
|
|
31
|
+
private readonly token;
|
|
32
|
+
constructor(options?: RelayClientOptions);
|
|
33
|
+
private request;
|
|
34
|
+
sendMessage(options: {
|
|
35
|
+
chatId: string;
|
|
36
|
+
idempotencyKey: string;
|
|
37
|
+
parts: RelayOutgoingPart[];
|
|
38
|
+
replyTo?: {
|
|
39
|
+
messageId: string;
|
|
40
|
+
partIndex?: number;
|
|
41
|
+
};
|
|
42
|
+
}): Promise<RelaySendMessageResponse>;
|
|
43
|
+
react(options: {
|
|
44
|
+
customEmoji?: string;
|
|
45
|
+
messageId: string;
|
|
46
|
+
operation: "add" | "remove";
|
|
47
|
+
partIndex?: number;
|
|
48
|
+
type: RelayReactionType;
|
|
49
|
+
}): Promise<void>;
|
|
50
|
+
setTyping(chatId: string, active: boolean): Promise<void>;
|
|
51
|
+
markChatRead(chatId: string): Promise<void>;
|
|
52
|
+
getChat(chatId: string): Promise<RelayChat>;
|
|
53
|
+
getMessages(options: {
|
|
54
|
+
chatId: string;
|
|
55
|
+
cursor?: string;
|
|
56
|
+
limit?: number;
|
|
57
|
+
}): Promise<RelayGetMessagesResult>;
|
|
58
|
+
getMessage(messageId: string): Promise<RelayMessage>;
|
|
59
|
+
allocateAttachment(options: Omit<RelayUploadOptions, "body"> & {
|
|
60
|
+
sizeBytes: number;
|
|
61
|
+
}): Promise<RelayAttachmentAllocation>;
|
|
62
|
+
uploadAttachment(options: RelayUploadOptions): Promise<RelayAttachmentAllocation>;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { AdapterError, NetworkError, ValidationError, } from "@chat-adapter/shared";
|
|
2
|
+
import { resolveRelayCredential, validateStaticCredential, } from "./credentials.js";
|
|
3
|
+
import { assertRelayUuid } from "./thread-id.js";
|
|
4
|
+
export const RELAY_DEFAULT_BASE_URL = "https://api.relayapp.im";
|
|
5
|
+
export class RelayApiError extends AdapterError {
|
|
6
|
+
status;
|
|
7
|
+
relayCode;
|
|
8
|
+
responseBody;
|
|
9
|
+
constructor(status, relayCode, message, responseBody) {
|
|
10
|
+
super(message, "relay", relayCode);
|
|
11
|
+
this.status = status;
|
|
12
|
+
this.relayCode = relayCode;
|
|
13
|
+
this.responseBody = responseBody;
|
|
14
|
+
this.name = "RelayApiError";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function trimTrailingSlash(value) {
|
|
18
|
+
return value.replace(/\/+$/, "");
|
|
19
|
+
}
|
|
20
|
+
async function parseResponseBody(response) {
|
|
21
|
+
const text = await response.text();
|
|
22
|
+
if (!text)
|
|
23
|
+
return undefined;
|
|
24
|
+
try {
|
|
25
|
+
return JSON.parse(text);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return text;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function errorDetails(body, status) {
|
|
32
|
+
if (typeof body === "object" && body !== null) {
|
|
33
|
+
const record = body;
|
|
34
|
+
const error = typeof record.error === "object" && record.error !== null
|
|
35
|
+
? record.error
|
|
36
|
+
: record;
|
|
37
|
+
const code = typeof error.code === "string"
|
|
38
|
+
? error.code
|
|
39
|
+
: `http_${status}`;
|
|
40
|
+
const message = typeof error.message === "string"
|
|
41
|
+
? error.message
|
|
42
|
+
: `Relay API request failed with HTTP ${status}`;
|
|
43
|
+
return { code, message };
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
code: `http_${status}`,
|
|
47
|
+
message: typeof body === "string" && body
|
|
48
|
+
? body
|
|
49
|
+
: `Relay API request failed with HTTP ${status}`,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Minimal client for only the locked Relay v1 operations used by the adapter.
|
|
54
|
+
*/
|
|
55
|
+
export class RelayClient {
|
|
56
|
+
baseUrl;
|
|
57
|
+
fetchImpl;
|
|
58
|
+
token;
|
|
59
|
+
constructor(options = {}) {
|
|
60
|
+
validateStaticCredential(options.token, "Relay Agent Token");
|
|
61
|
+
this.token = options.token;
|
|
62
|
+
this.baseUrl = trimTrailingSlash(options.baseUrl ?? RELAY_DEFAULT_BASE_URL);
|
|
63
|
+
const parsed = new URL(this.baseUrl);
|
|
64
|
+
if (parsed.protocol !== "https:" && parsed.hostname !== "localhost") {
|
|
65
|
+
throw new ValidationError("relay", "Relay baseUrl must use HTTPS (localhost is allowed for tests)");
|
|
66
|
+
}
|
|
67
|
+
const selected = options.fetch ?? globalThis.fetch;
|
|
68
|
+
if (!selected) {
|
|
69
|
+
throw new ValidationError("relay", "A Web Fetch API implementation is required");
|
|
70
|
+
}
|
|
71
|
+
// workerd's host fetch requires its global receiver.
|
|
72
|
+
this.fetchImpl = selected.bind(globalThis);
|
|
73
|
+
}
|
|
74
|
+
async request(path, init) {
|
|
75
|
+
const token = await resolveRelayCredential(this.token, "Relay Agent Token");
|
|
76
|
+
let response;
|
|
77
|
+
try {
|
|
78
|
+
response = await this.fetchImpl(`${this.baseUrl}${path}`, {
|
|
79
|
+
...init,
|
|
80
|
+
headers: {
|
|
81
|
+
Authorization: `Bearer ${token}`,
|
|
82
|
+
...Object.fromEntries(new Headers(init.headers).entries()),
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw new NetworkError("relay", "Network error calling the Relay API", error instanceof Error ? error : undefined);
|
|
88
|
+
}
|
|
89
|
+
const body = await parseResponseBody(response);
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
const details = errorDetails(body, response.status);
|
|
92
|
+
throw new RelayApiError(response.status, details.code, details.message, body);
|
|
93
|
+
}
|
|
94
|
+
return body;
|
|
95
|
+
}
|
|
96
|
+
async sendMessage(options) {
|
|
97
|
+
assertRelayUuid(options.chatId, "chatId");
|
|
98
|
+
if (options.parts.length < 1 || options.parts.length > 100) {
|
|
99
|
+
throw new ValidationError("relay", "A Relay message requires 1–100 parts");
|
|
100
|
+
}
|
|
101
|
+
if (options.idempotencyKey.length < 1 ||
|
|
102
|
+
options.idempotencyKey.length > 255) {
|
|
103
|
+
throw new ValidationError("relay", "Relay idempotency keys must contain 1–255 characters");
|
|
104
|
+
}
|
|
105
|
+
if (options.replyTo) {
|
|
106
|
+
assertRelayUuid(options.replyTo.messageId, "reply message ID");
|
|
107
|
+
}
|
|
108
|
+
return this.request(`/v1/chats/${encodeURIComponent(options.chatId)}/messages`, {
|
|
109
|
+
body: JSON.stringify({
|
|
110
|
+
message: {
|
|
111
|
+
parts: options.parts,
|
|
112
|
+
...(options.replyTo
|
|
113
|
+
? {
|
|
114
|
+
reply_to: {
|
|
115
|
+
message_id: options.replyTo.messageId,
|
|
116
|
+
...(options.replyTo.partIndex !== undefined
|
|
117
|
+
? { part_index: options.replyTo.partIndex }
|
|
118
|
+
: {}),
|
|
119
|
+
},
|
|
120
|
+
}
|
|
121
|
+
: {}),
|
|
122
|
+
},
|
|
123
|
+
}),
|
|
124
|
+
headers: {
|
|
125
|
+
"Content-Type": "application/json",
|
|
126
|
+
"Idempotency-Key": options.idempotencyKey,
|
|
127
|
+
},
|
|
128
|
+
method: "POST",
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async react(options) {
|
|
132
|
+
assertRelayUuid(options.messageId, "messageId");
|
|
133
|
+
await this.request(`/v1/messages/${encodeURIComponent(options.messageId)}/reactions`, {
|
|
134
|
+
body: JSON.stringify({
|
|
135
|
+
operation: options.operation,
|
|
136
|
+
type: options.type,
|
|
137
|
+
...(options.customEmoji
|
|
138
|
+
? { custom_emoji: options.customEmoji }
|
|
139
|
+
: {}),
|
|
140
|
+
...(options.partIndex !== undefined
|
|
141
|
+
? { part_index: options.partIndex }
|
|
142
|
+
: {}),
|
|
143
|
+
}),
|
|
144
|
+
headers: { "Content-Type": "application/json" },
|
|
145
|
+
method: "POST",
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async setTyping(chatId, active) {
|
|
149
|
+
assertRelayUuid(chatId, "chatId");
|
|
150
|
+
await this.request(`/v1/chats/${encodeURIComponent(chatId)}/typing`, { method: active ? "POST" : "DELETE" });
|
|
151
|
+
}
|
|
152
|
+
async markChatRead(chatId) {
|
|
153
|
+
assertRelayUuid(chatId, "chatId");
|
|
154
|
+
await this.request(`/v1/chats/${encodeURIComponent(chatId)}/read`, { method: "POST" });
|
|
155
|
+
}
|
|
156
|
+
async getChat(chatId) {
|
|
157
|
+
assertRelayUuid(chatId, "chatId");
|
|
158
|
+
return this.request(`/v1/chats/${encodeURIComponent(chatId)}`, { method: "GET" });
|
|
159
|
+
}
|
|
160
|
+
async getMessages(options) {
|
|
161
|
+
assertRelayUuid(options.chatId, "chatId");
|
|
162
|
+
const query = new URLSearchParams();
|
|
163
|
+
if (options.cursor)
|
|
164
|
+
query.set("cursor", options.cursor);
|
|
165
|
+
if (options.limit !== undefined) {
|
|
166
|
+
const limit = Math.trunc(options.limit);
|
|
167
|
+
if (limit < 1 || limit > 100) {
|
|
168
|
+
throw new ValidationError("relay", "Relay message history limit must be between 1 and 100");
|
|
169
|
+
}
|
|
170
|
+
query.set("limit", String(limit));
|
|
171
|
+
}
|
|
172
|
+
const suffix = query.size ? `?${query.toString()}` : "";
|
|
173
|
+
return this.request(`/v1/chats/${encodeURIComponent(options.chatId)}/messages${suffix}`, { method: "GET" });
|
|
174
|
+
}
|
|
175
|
+
async getMessage(messageId) {
|
|
176
|
+
assertRelayUuid(messageId, "messageId");
|
|
177
|
+
return this.request(`/v1/messages/${encodeURIComponent(messageId)}`, { method: "GET" });
|
|
178
|
+
}
|
|
179
|
+
async allocateAttachment(options) {
|
|
180
|
+
return this.request("/v1/attachments", {
|
|
181
|
+
body: JSON.stringify({
|
|
182
|
+
filename: options.filename,
|
|
183
|
+
content_type: options.contentType,
|
|
184
|
+
size_bytes: options.sizeBytes,
|
|
185
|
+
...(options.durationMs !== undefined
|
|
186
|
+
? { duration_ms: options.durationMs }
|
|
187
|
+
: {}),
|
|
188
|
+
...(options.width !== undefined &&
|
|
189
|
+
options.height !== undefined
|
|
190
|
+
? { width: options.width, height: options.height }
|
|
191
|
+
: {}),
|
|
192
|
+
}),
|
|
193
|
+
headers: { "Content-Type": "application/json" },
|
|
194
|
+
method: "POST",
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
async uploadAttachment(options) {
|
|
198
|
+
if (options.body.byteLength < 1 || options.body.byteLength > 104_857_600) {
|
|
199
|
+
throw new ValidationError("relay", "Relay attachments must contain 1–104857600 bytes");
|
|
200
|
+
}
|
|
201
|
+
const allocation = await this.allocateAttachment({
|
|
202
|
+
contentType: options.contentType,
|
|
203
|
+
...(options.durationMs !== undefined
|
|
204
|
+
? { durationMs: options.durationMs }
|
|
205
|
+
: {}),
|
|
206
|
+
filename: options.filename,
|
|
207
|
+
...(options.height !== undefined ? { height: options.height } : {}),
|
|
208
|
+
sizeBytes: options.body.byteLength,
|
|
209
|
+
...(options.width !== undefined ? { width: options.width } : {}),
|
|
210
|
+
});
|
|
211
|
+
let response;
|
|
212
|
+
try {
|
|
213
|
+
response = await this.fetchImpl(allocation.upload_url, {
|
|
214
|
+
body: options.body,
|
|
215
|
+
headers: allocation.required_headers,
|
|
216
|
+
method: allocation.http_method,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
throw new NetworkError("relay", "Network error uploading bytes to Relay attachment storage", error instanceof Error ? error : undefined);
|
|
221
|
+
}
|
|
222
|
+
if (!response.ok) {
|
|
223
|
+
const body = await parseResponseBody(response);
|
|
224
|
+
const details = errorDetails(body, response.status);
|
|
225
|
+
throw new RelayApiError(response.status, details.code, details.message, body);
|
|
226
|
+
}
|
|
227
|
+
return allocation;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type AdapterPostableMessage } from "chat";
|
|
2
|
+
import type { RelayOutgoingPart } from "./types.js";
|
|
3
|
+
export declare const RELAY_MAX_TEXT_PART_LENGTH = 10000;
|
|
4
|
+
export declare const RELAY_MAX_MESSAGE_PARTS = 100;
|
|
5
|
+
export declare const RELAY_MAX_ATTACHMENT_BYTES = 104857600;
|
|
6
|
+
export declare function contentTypeFor(filename: string, declared?: string): string;
|
|
7
|
+
export declare function postableText(message: AdapterPostableMessage): string;
|
|
8
|
+
export declare function hasPostableContent(message: AdapterPostableMessage): boolean;
|
|
9
|
+
export declare function textParts(value: string): RelayOutgoingPart[];
|
|
10
|
+
export declare function buildRelayParts(message: AdapterPostableMessage): Promise<RelayOutgoingPart[]>;
|
|
11
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,sBAAsB,EAE5B,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,0BAA0B,YAAc,CAAC;AAkGtD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAcR;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CA0BpE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAMT;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAmB5D;AAiBD,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAoB9B"}
|
package/dist/content.js
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { cardToFallbackText, extractCard, extractFiles, extractPostableAttachments, ValidationError, } from "@chat-adapter/shared";
|
|
2
|
+
import { markdownToPlainText, toPlainText, } from "chat";
|
|
3
|
+
export const RELAY_MAX_TEXT_PART_LENGTH = 10_000;
|
|
4
|
+
export const RELAY_MAX_MESSAGE_PARTS = 100;
|
|
5
|
+
export const RELAY_MAX_ATTACHMENT_BYTES = 104_857_600;
|
|
6
|
+
const SUPPORTED_CONTENT_TYPES = new Set([
|
|
7
|
+
"image/jpeg",
|
|
8
|
+
"image/png",
|
|
9
|
+
"image/gif",
|
|
10
|
+
"image/heic",
|
|
11
|
+
"image/heif",
|
|
12
|
+
"image/tiff",
|
|
13
|
+
"image/bmp",
|
|
14
|
+
"image/webp",
|
|
15
|
+
"image/x-icon",
|
|
16
|
+
"video/mp4",
|
|
17
|
+
"video/quicktime",
|
|
18
|
+
"video/mpeg",
|
|
19
|
+
"video/mpeg2",
|
|
20
|
+
"video/x-m4v",
|
|
21
|
+
"video/x-msvideo",
|
|
22
|
+
"video/3gpp",
|
|
23
|
+
"audio/mpeg",
|
|
24
|
+
"audio/mp3",
|
|
25
|
+
"audio/x-m4a",
|
|
26
|
+
"audio/mp4",
|
|
27
|
+
"audio/x-caf",
|
|
28
|
+
"audio/x-wav",
|
|
29
|
+
"audio/x-aiff",
|
|
30
|
+
"audio/aiff",
|
|
31
|
+
"audio/aac",
|
|
32
|
+
"audio/midi",
|
|
33
|
+
"audio/amr",
|
|
34
|
+
"application/pdf",
|
|
35
|
+
"application/vnd.apple.pkpass",
|
|
36
|
+
"text/plain",
|
|
37
|
+
"text/markdown",
|
|
38
|
+
"text/vcard",
|
|
39
|
+
"text/rtf",
|
|
40
|
+
"text/csv",
|
|
41
|
+
"text/html",
|
|
42
|
+
"text/calendar",
|
|
43
|
+
"application/msword",
|
|
44
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
45
|
+
"application/vnd.ms-excel",
|
|
46
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
47
|
+
"application/vnd.ms-powerpoint",
|
|
48
|
+
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
49
|
+
"application/x-iwork-pages-sffpages",
|
|
50
|
+
"application/x-iwork-numbers-sffnumbers",
|
|
51
|
+
"application/x-iwork-keynote-sffkey",
|
|
52
|
+
"application/epub+zip",
|
|
53
|
+
"text/xml",
|
|
54
|
+
"application/json",
|
|
55
|
+
"application/zip",
|
|
56
|
+
"application/x-gzip",
|
|
57
|
+
]);
|
|
58
|
+
const MIME_BY_EXTENSION = {
|
|
59
|
+
aac: "audio/aac",
|
|
60
|
+
aiff: "audio/aiff",
|
|
61
|
+
avi: "video/x-msvideo",
|
|
62
|
+
bmp: "image/bmp",
|
|
63
|
+
csv: "text/csv",
|
|
64
|
+
doc: "application/msword",
|
|
65
|
+
docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
66
|
+
epub: "application/epub+zip",
|
|
67
|
+
gif: "image/gif",
|
|
68
|
+
gz: "application/x-gzip",
|
|
69
|
+
heic: "image/heic",
|
|
70
|
+
heif: "image/heif",
|
|
71
|
+
html: "text/html",
|
|
72
|
+
ico: "image/x-icon",
|
|
73
|
+
jpeg: "image/jpeg",
|
|
74
|
+
jpg: "image/jpeg",
|
|
75
|
+
json: "application/json",
|
|
76
|
+
m4a: "audio/x-m4a",
|
|
77
|
+
md: "text/markdown",
|
|
78
|
+
midi: "audio/midi",
|
|
79
|
+
mov: "video/quicktime",
|
|
80
|
+
mp3: "audio/mpeg",
|
|
81
|
+
mp4: "video/mp4",
|
|
82
|
+
pdf: "application/pdf",
|
|
83
|
+
png: "image/png",
|
|
84
|
+
ppt: "application/vnd.ms-powerpoint",
|
|
85
|
+
pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
86
|
+
rtf: "text/rtf",
|
|
87
|
+
tif: "image/tiff",
|
|
88
|
+
tiff: "image/tiff",
|
|
89
|
+
txt: "text/plain",
|
|
90
|
+
vcf: "text/vcard",
|
|
91
|
+
webp: "image/webp",
|
|
92
|
+
xls: "application/vnd.ms-excel",
|
|
93
|
+
xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
94
|
+
xml: "text/xml",
|
|
95
|
+
zip: "application/zip",
|
|
96
|
+
};
|
|
97
|
+
export function contentTypeFor(filename, declared) {
|
|
98
|
+
const normalized = declared?.split(";", 1)[0]?.trim().toLowerCase();
|
|
99
|
+
const extension = filename.split(".").at(-1)?.toLowerCase();
|
|
100
|
+
const contentType = normalized || (extension ? MIME_BY_EXTENSION[extension] : undefined);
|
|
101
|
+
if (!contentType || !SUPPORTED_CONTENT_TYPES.has(contentType)) {
|
|
102
|
+
throw new ValidationError("relay", `Relay does not accept the content type for ${JSON.stringify(filename)}; pass one of the content types in the v1 SupportedContentType contract`);
|
|
103
|
+
}
|
|
104
|
+
return contentType;
|
|
105
|
+
}
|
|
106
|
+
export function postableText(message) {
|
|
107
|
+
if (typeof message === "string")
|
|
108
|
+
return message;
|
|
109
|
+
const card = extractCard(message);
|
|
110
|
+
if (card) {
|
|
111
|
+
const explicit = "fallbackText" in message ? message.fallbackText : undefined;
|
|
112
|
+
const rendered = explicit?.trim()
|
|
113
|
+
? explicit
|
|
114
|
+
: cardToFallbackText(card, { lineBreak: "\n\n" });
|
|
115
|
+
if (!rendered.trim()) {
|
|
116
|
+
throw new ValidationError("relay", "Relay has no interactive card surface; provide fallbackText");
|
|
117
|
+
}
|
|
118
|
+
return markdownToPlainText(rendered);
|
|
119
|
+
}
|
|
120
|
+
if ("raw" in message)
|
|
121
|
+
return message.raw;
|
|
122
|
+
if ("markdown" in message) {
|
|
123
|
+
return markdownToPlainText(message.markdown);
|
|
124
|
+
}
|
|
125
|
+
if ("ast" in message)
|
|
126
|
+
return toPlainText(message.ast);
|
|
127
|
+
throw new ValidationError("relay", "Unsupported Chat SDK postable message shape");
|
|
128
|
+
}
|
|
129
|
+
export function hasPostableContent(message) {
|
|
130
|
+
return (postableText(message).length > 0 ||
|
|
131
|
+
extractPostableAttachments(message).length > 0 ||
|
|
132
|
+
extractFiles(message).length > 0);
|
|
133
|
+
}
|
|
134
|
+
export function textParts(value) {
|
|
135
|
+
if (!value)
|
|
136
|
+
return [];
|
|
137
|
+
const result = [];
|
|
138
|
+
let offset = 0;
|
|
139
|
+
while (offset < value.length) {
|
|
140
|
+
let end = Math.min(offset + RELAY_MAX_TEXT_PART_LENGTH, value.length);
|
|
141
|
+
if (end < value.length &&
|
|
142
|
+
/[\uD800-\uDBFF]/.test(value.charAt(end - 1))) {
|
|
143
|
+
end -= 1;
|
|
144
|
+
}
|
|
145
|
+
result.push({ type: "text", value: value.slice(offset, end) });
|
|
146
|
+
offset = end;
|
|
147
|
+
}
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
async function attachmentPart(attachment) {
|
|
151
|
+
if (attachment.url?.startsWith("https://")) {
|
|
152
|
+
return { type: "media", url: attachment.url };
|
|
153
|
+
}
|
|
154
|
+
throw new ValidationError("relay", `Attachment ${JSON.stringify(attachment.name ?? "(unnamed)")} needs a public HTTPS URL. Allocate and upload retryable bytes with `
|
|
155
|
+
+ "@relaymessenger/sdk before posting through Chat SDK.");
|
|
156
|
+
}
|
|
157
|
+
export async function buildRelayParts(message) {
|
|
158
|
+
const parts = textParts(postableText(message));
|
|
159
|
+
for (const attachment of extractPostableAttachments(message)) {
|
|
160
|
+
parts.push(await attachmentPart(attachment));
|
|
161
|
+
}
|
|
162
|
+
for (const file of extractFiles(message)) {
|
|
163
|
+
throw new ValidationError("relay", `File ${JSON.stringify(file.filename)} needs a public HTTPS URL. `
|
|
164
|
+
+ "Allocate and upload retryable bytes with @relaymessenger/sdk before "
|
|
165
|
+
+ "posting through Chat SDK.");
|
|
166
|
+
}
|
|
167
|
+
if (parts.length > RELAY_MAX_MESSAGE_PARTS) {
|
|
168
|
+
throw new ValidationError("relay", `A Relay message supports at most ${RELAY_MAX_MESSAGE_PARTS} parts`);
|
|
169
|
+
}
|
|
170
|
+
return parts;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type RelayCredentialResolver = () => string | Promise<string>;
|
|
2
|
+
/**
|
|
3
|
+
* Vendor-official credential shape required by Vercel Chat SDK.
|
|
4
|
+
*
|
|
5
|
+
* Resolver functions are intentionally invoked at the point of use, not at
|
|
6
|
+
* construction, so Vercel Connect and other short-lived credential providers
|
|
7
|
+
* can rotate values.
|
|
8
|
+
*/
|
|
9
|
+
export type RelayCredential = string | RelayCredentialResolver;
|
|
10
|
+
export declare function relayEnv(name: string): string | undefined;
|
|
11
|
+
export declare function resolveRelayCredential(credential: RelayCredential | undefined, label: string): Promise<string>;
|
|
12
|
+
export declare function validateStaticCredential(credential: RelayCredential | undefined, label: string): void;
|
|
13
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,uBAAuB,GAAG,MAClC,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,uBAAuB,CAAC;AAE/D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGzD;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,eAAe,GAAG,SAAS,EACvC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,eAAe,GAAG,SAAS,EACvC,KAAK,EAAE,MAAM,GACZ,IAAI,CAIN"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AuthenticationError, ValidationError, } from "@chat-adapter/shared";
|
|
2
|
+
export function relayEnv(name) {
|
|
3
|
+
if (typeof process === "undefined")
|
|
4
|
+
return undefined;
|
|
5
|
+
return process.env[name];
|
|
6
|
+
}
|
|
7
|
+
export async function resolveRelayCredential(credential, label) {
|
|
8
|
+
let value;
|
|
9
|
+
try {
|
|
10
|
+
value =
|
|
11
|
+
typeof credential === "function"
|
|
12
|
+
? await credential()
|
|
13
|
+
: credential;
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
throw new AuthenticationError("relay", `${label} resolver failed${error instanceof Error ? `: ${error.message}` : ""}`);
|
|
17
|
+
}
|
|
18
|
+
if (!value?.trim()) {
|
|
19
|
+
throw new AuthenticationError("relay", `${label} is required and its resolver must return a non-empty string`);
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
export function validateStaticCredential(credential, label) {
|
|
24
|
+
if (typeof credential === "string" && !credential.trim()) {
|
|
25
|
+
throw new ValidationError("relay", `${label} must not be empty`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAe9B,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IAAI,OAAO,OAAO,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAuC,EACvC,KAAa;IAEb,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,KAAK;YACH,OAAO,UAAU,KAAK,UAAU;gBAC9B,CAAC,CAAC,MAAM,UAAU,EAAE;gBACpB,CAAC,CAAC,UAAU,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,mBAAmB,CAC3B,OAAO,EACP,GAAG,KAAK,mBACN,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAClD,EAAE,CACH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,mBAAmB,CAC3B,OAAO,EACP,GAAG,KAAK,8DAA8D,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,UAAuC,EACvC,KAAa;IAEb,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,KAAK,oBAAoB,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { createRelayAdapter, RELAY_ADAPTER_NAME, RelayAdapter, } from "./adapter.js";
|
|
2
|
+
export type { RelayAdapterOptions } from "./adapter.js";
|
|
3
|
+
export type { RelayIdempotencyKeyContext, RelayIdempotencyKeyResolver, } from "./adapter.js";
|
|
4
|
+
export { RELAY_DEFAULT_BASE_URL, RelayApiError, RelayClient, } from "./client.js";
|
|
5
|
+
export type { RelayClientOptions, RelayUploadOptions, } from "./client.js";
|
|
6
|
+
export { relayEnv, resolveRelayCredential, validateStaticCredential, } from "./credentials.js";
|
|
7
|
+
export type { RelayCredential, RelayCredentialResolver, } from "./credentials.js";
|
|
8
|
+
export { RELAY_MAX_ATTACHMENT_BYTES, RELAY_MAX_MESSAGE_PARTS, RELAY_MAX_TEXT_PART_LENGTH, } from "./content.js";
|
|
9
|
+
export { fromRelayReaction, toRelayReaction, } from "./reactions.js";
|
|
10
|
+
export type { RelayReactionInput } from "./reactions.js";
|
|
11
|
+
export { decodeWebhookSecret, verifyWebhookSignature, WebhookSecretError, WebhookVerificationError, } from "./signature.js";
|
|
12
|
+
export type { VerifyWebhookSignatureOptions } from "./signature.js";
|
|
13
|
+
export { assertRelayUuid, decodeRelayThreadId, encodeRelayThreadId, isRelayUuid, relayChannelIdFromThreadId, RELAY_THREAD_PREFIX, } from "./thread-id.js";
|
|
14
|
+
export { inboundIdempotencyKey } from "./turn.js";
|
|
15
|
+
export { RELAY_API_VERSION, RELAY_WEBHOOK_EVENT_TYPES, RELAY_WEBHOOK_VERSION, } from "./types.js";
|
|
16
|
+
export type * from "./types.js";
|
|
17
|
+
//# 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,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EACV,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,mBAAmB,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { createRelayAdapter, RELAY_ADAPTER_NAME, RelayAdapter, } from "./adapter.js";
|
|
2
|
+
export { RELAY_DEFAULT_BASE_URL, RelayApiError, RelayClient, } from "./client.js";
|
|
3
|
+
export { relayEnv, resolveRelayCredential, validateStaticCredential, } from "./credentials.js";
|
|
4
|
+
export { RELAY_MAX_ATTACHMENT_BYTES, RELAY_MAX_MESSAGE_PARTS, RELAY_MAX_TEXT_PART_LENGTH, } from "./content.js";
|
|
5
|
+
export { fromRelayReaction, toRelayReaction, } from "./reactions.js";
|
|
6
|
+
export { decodeWebhookSecret, verifyWebhookSignature, WebhookSecretError, WebhookVerificationError, } from "./signature.js";
|
|
7
|
+
export { assertRelayUuid, decodeRelayThreadId, encodeRelayThreadId, isRelayUuid, relayChannelIdFromThreadId, RELAY_THREAD_PREFIX, } from "./thread-id.js";
|
|
8
|
+
export { inboundIdempotencyKey } from "./turn.js";
|
|
9
|
+
export { RELAY_API_VERSION, RELAY_WEBHOOK_EVENT_TYPES, RELAY_WEBHOOK_VERSION, } from "./types.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,QAAQ,EACR,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type EmojiValue } from "chat";
|
|
2
|
+
import type { RelayReactionType } from "./types.js";
|
|
3
|
+
export interface RelayReactionInput {
|
|
4
|
+
customEmoji?: string;
|
|
5
|
+
type: RelayReactionType;
|
|
6
|
+
}
|
|
7
|
+
export declare function toRelayReaction(input: EmojiValue | string): RelayReactionInput;
|
|
8
|
+
export declare function fromRelayReaction(input: {
|
|
9
|
+
customEmoji?: string | null;
|
|
10
|
+
type: RelayReactionType;
|
|
11
|
+
}): {
|
|
12
|
+
emoji: EmojiValue;
|
|
13
|
+
rawEmoji: string;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=reactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../src/reactions.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAoCD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,GAAG,MAAM,GACzB,kBAAkB,CAkBpB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,iBAAiB,CAAC;CACzB,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkB1C"}
|