@robono/server 0.15.0 → 0.17.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/CHANGELOG.md +11 -1
- package/NOTIFICATIONS.md +149 -0
- package/README.md +8 -1
- package/SBOM.spdx.json +8 -8
- package/SCREENING.md +73 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/managed-media.d.ts.map +1 -1
- package/dist/managed-media.js +2 -0
- package/dist/managed-media.js.map +1 -1
- package/dist/messaging-notification-postgres.d.ts +7 -0
- package/dist/messaging-notification-postgres.d.ts.map +1 -0
- package/dist/messaging-notification-postgres.js +32 -0
- package/dist/messaging-notification-postgres.js.map +1 -0
- package/dist/messaging-notification-providers.d.ts +26 -0
- package/dist/messaging-notification-providers.d.ts.map +1 -0
- package/dist/messaging-notification-providers.js +107 -0
- package/dist/messaging-notification-providers.js.map +1 -0
- package/dist/messaging-notifications.d.ts +66 -0
- package/dist/messaging-notifications.d.ts.map +1 -0
- package/dist/messaging-notifications.js +128 -0
- package/dist/messaging-notifications.js.map +1 -0
- package/dist/messaging.d.ts +7 -0
- package/dist/messaging.d.ts.map +1 -1
- package/dist/messaging.js +40 -2
- package/dist/messaging.js.map +1 -1
- package/dist/messenger.d.ts +53 -0
- package/dist/messenger.d.ts.map +1 -0
- package/dist/messenger.js +89 -0
- package/dist/messenger.js.map +1 -0
- package/dist/screening.d.ts +53 -0
- package/dist/screening.d.ts.map +1 -0
- package/dist/screening.js +52 -0
- package/dist/screening.js.map +1 -0
- package/package.json +5 -2
- package/sql/messaging-notifications.sql +41 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { MessagingCreatedWebhookEvent } from './types.js';
|
|
2
|
+
export interface MessagingPushData {
|
|
3
|
+
event: 'robono.messaging';
|
|
4
|
+
eventId: string;
|
|
5
|
+
conversationId: string;
|
|
6
|
+
messageId: string;
|
|
7
|
+
accountScope: string;
|
|
8
|
+
}
|
|
9
|
+
export interface MessagingPushDevice {
|
|
10
|
+
id: string;
|
|
11
|
+
userId: string;
|
|
12
|
+
provider: 'apns' | 'fcm';
|
|
13
|
+
token: string;
|
|
14
|
+
}
|
|
15
|
+
export interface MessagingPushJob {
|
|
16
|
+
id: string;
|
|
17
|
+
lease: string;
|
|
18
|
+
event: MessagingCreatedWebhookEvent;
|
|
19
|
+
device: MessagingPushDevice;
|
|
20
|
+
attempt: number;
|
|
21
|
+
}
|
|
22
|
+
export interface MessagingNotificationStore {
|
|
23
|
+
/** Register tokens only for the authenticated user; a token belongs to one account at a time. */
|
|
24
|
+
register(scope: string, device: MessagingPushDevice): Promise<void>;
|
|
25
|
+
remove(scope: string, userId: string, id: string, expectedToken?: string): Promise<void>;
|
|
26
|
+
/** Atomically snapshot this recipient's registered devices; duplicate events do not add jobs. */
|
|
27
|
+
enqueue(scope: string, event: MessagingCreatedWebhookEvent): Promise<void>;
|
|
28
|
+
claim(scope: string, limit: number, lease: string): Promise<MessagingPushJob[]>;
|
|
29
|
+
/** Recheck token ownership after taking a job and immediately before delivery. */
|
|
30
|
+
current(scope: string, device: MessagingPushDevice): Promise<boolean>;
|
|
31
|
+
finish(scope: string, job: MessagingPushJob, result: {
|
|
32
|
+
state: 'sent' | 'skipped' | 'retry' | 'failed';
|
|
33
|
+
retryAt?: Date;
|
|
34
|
+
code?: string;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
export interface MessagingNotificationOptions {
|
|
38
|
+
/** Separate scope and webhook secret for each customer integration and test/live environment. */
|
|
39
|
+
scope: string;
|
|
40
|
+
webhookSecret: string;
|
|
41
|
+
store: MessagingNotificationStore;
|
|
42
|
+
authenticate: (request: Request) => Promise<string | null>;
|
|
43
|
+
/** Required: current account status, conversation access, block/mute state, message existence. */
|
|
44
|
+
mayNotify: (event: MessagingCreatedWebhookEvent) => Promise<boolean>;
|
|
45
|
+
send: (device: MessagingPushDevice, data: MessagingPushData) => Promise<{
|
|
46
|
+
accepted: boolean;
|
|
47
|
+
invalidDevice?: boolean;
|
|
48
|
+
retryable?: boolean;
|
|
49
|
+
code?: string;
|
|
50
|
+
}>;
|
|
51
|
+
/** Only providers with configured server credentials can be registered. */
|
|
52
|
+
providers: readonly ('apns' | 'fcm')[];
|
|
53
|
+
}
|
|
54
|
+
export declare function messagingNotificationAccount(scope: string, userId: string): string;
|
|
55
|
+
/** Durable, content-free notifications. Apple/Google acceptance is not a delivery/read receipt. */
|
|
56
|
+
export declare function createMessagingNotifications(options: MessagingNotificationOptions): {
|
|
57
|
+
devices(request: Request): Promise<Response>;
|
|
58
|
+
webhook(request: Request): Promise<Response>;
|
|
59
|
+
runPending(limit?: number): Promise<{
|
|
60
|
+
sent: number;
|
|
61
|
+
skipped: number;
|
|
62
|
+
retried: number;
|
|
63
|
+
failed: number;
|
|
64
|
+
}>;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=messaging-notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging-notifications.d.ts","sourceRoot":"","sources":["../src/messaging-notifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { verifyRobonoWebhook } from './webhooks.js';
|
|
3
|
+
function id(value, max = 200) { return typeof value === 'string' && value.length > 0 && value.length <= max && value.trim() === value && !/[\u0000-\u001f\u007f]/.test(value); }
|
|
4
|
+
const reply = (data, status = 200) => Response.json(data, { status, headers: { 'cache-control': 'no-store' } });
|
|
5
|
+
export function messagingNotificationAccount(scope, userId) { return createHash('sha256').update(JSON.stringify([scope, userId])).digest('hex'); }
|
|
6
|
+
/** Durable, content-free notifications. Apple/Google acceptance is not a delivery/read receipt. */
|
|
7
|
+
export function createMessagingNotifications(options) {
|
|
8
|
+
if (!id(options.scope) || !options.webhookSecret.trim())
|
|
9
|
+
throw Error('Set a unique notification scope and this integration’s webhook secret.');
|
|
10
|
+
const { scope, store } = options;
|
|
11
|
+
return {
|
|
12
|
+
async devices(request) {
|
|
13
|
+
if (request.method !== 'POST')
|
|
14
|
+
return reply({ error: { code: 'method_not_allowed' } }, 405);
|
|
15
|
+
try {
|
|
16
|
+
const userId = await options.authenticate(request);
|
|
17
|
+
if (!id(userId))
|
|
18
|
+
return reply({ error: { code: 'authentication_required' } }, 401);
|
|
19
|
+
const raw = await request.text();
|
|
20
|
+
if (raw.length > 8192)
|
|
21
|
+
return reply({ error: { code: 'request_too_large' } }, 413);
|
|
22
|
+
let body;
|
|
23
|
+
try {
|
|
24
|
+
body = JSON.parse(raw);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return reply({ error: { code: 'invalid_request' } }, 422);
|
|
28
|
+
}
|
|
29
|
+
const accountScope = messagingNotificationAccount(scope, userId);
|
|
30
|
+
if (body?.operation === 'notification-status')
|
|
31
|
+
return reply({ userId, accountScope, providers: options.providers });
|
|
32
|
+
if (body?.accountScope !== accountScope)
|
|
33
|
+
return reply({ error: { code: 'notification_account_changed' } }, 409);
|
|
34
|
+
if (!body || typeof body !== 'object' || !id(body.deviceId))
|
|
35
|
+
return reply({ error: { code: 'invalid_device' } }, 422);
|
|
36
|
+
if (body.operation === 'remove-device') {
|
|
37
|
+
await store.remove(scope, userId, body.deviceId);
|
|
38
|
+
return reply({ ok: true });
|
|
39
|
+
}
|
|
40
|
+
if (body.operation !== 'register-device' || !['apns', 'fcm'].includes(String(body.provider)) || !id(body.token, 4096))
|
|
41
|
+
return reply({ error: { code: 'invalid_device' } }, 422);
|
|
42
|
+
const provider = body.provider;
|
|
43
|
+
if (!options.providers.includes(provider))
|
|
44
|
+
return reply({ error: { code: 'notification_credentials_missing', message: provider === 'apns' ? 'Your app’s Apple notification credentials have not been connected.' : 'Your app’s Google notification credentials have not been connected.' } }, 409);
|
|
45
|
+
if (provider === 'apns' && !/^[a-f\d]{64,200}$/i.test(body.token))
|
|
46
|
+
return reply({ error: { code: 'invalid_device' } }, 422);
|
|
47
|
+
await store.register(scope, { id: body.deviceId, userId, provider, token: body.token });
|
|
48
|
+
return reply({ ok: true, accountScope: messagingNotificationAccount(scope, userId) });
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return reply({ error: { code: 'notifications_unavailable' } }, 503);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
async webhook(request) {
|
|
55
|
+
if (request.method !== 'POST')
|
|
56
|
+
return reply({ error: { code: 'method_not_allowed' } }, 405);
|
|
57
|
+
const raw = await request.text();
|
|
58
|
+
if (raw.length > 32768)
|
|
59
|
+
return reply({ error: { code: 'request_too_large' } }, 413);
|
|
60
|
+
let event;
|
|
61
|
+
try {
|
|
62
|
+
({ event } = await verifyRobonoWebhook(raw, request.headers, options.webhookSecret));
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return reply({ error: { code: 'invalid_webhook' } }, 401);
|
|
66
|
+
}
|
|
67
|
+
if (event.event !== 'messaging.message_created')
|
|
68
|
+
return reply({ ignored: true });
|
|
69
|
+
// Do not acknowledge until the queue insert is durable. Delivery is retried by the worker.
|
|
70
|
+
try {
|
|
71
|
+
await store.enqueue(scope, event);
|
|
72
|
+
return reply({ queued: true }, 202);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return reply({ error: { code: 'notifications_unavailable' } }, 503);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
async runPending(limit = 20) {
|
|
79
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > 100)
|
|
80
|
+
throw Error('Use a notification batch size from 1 to 100.');
|
|
81
|
+
const result = { sent: 0, skipped: 0, retried: 0, failed: 0 };
|
|
82
|
+
// Small batches avoid unbounded fanout and provider rate spikes.
|
|
83
|
+
for (let index = 0; index < limit; index++) {
|
|
84
|
+
const [job] = await store.claim(scope, 1, randomUUID());
|
|
85
|
+
if (!job)
|
|
86
|
+
break;
|
|
87
|
+
try {
|
|
88
|
+
const event = job.event;
|
|
89
|
+
if (job.device.userId !== event.recipient_external_user_id || event.notification_muted === true ||
|
|
90
|
+
Date.parse(event.created_at) < Date.now() - 86400000 || !await options.mayNotify(event) || !await store.current(scope, job.device)) {
|
|
91
|
+
await store.finish(scope, job, { state: 'skipped' });
|
|
92
|
+
result.skipped++;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const data = { event: 'robono.messaging', eventId: event.event_id,
|
|
96
|
+
conversationId: event.conversation_id, messageId: event.message_id, accountScope: messagingNotificationAccount(scope, job.device.userId) };
|
|
97
|
+
const sent = await options.send(job.device, data);
|
|
98
|
+
if (sent.invalidDevice) {
|
|
99
|
+
await store.remove(scope, job.device.userId, job.device.id, job.device.token);
|
|
100
|
+
await store.finish(scope, job, { state: 'skipped', code: 'device_unregistered' });
|
|
101
|
+
result.skipped++;
|
|
102
|
+
}
|
|
103
|
+
else if (sent.accepted) {
|
|
104
|
+
await store.finish(scope, job, { state: 'sent' });
|
|
105
|
+
result.sent++;
|
|
106
|
+
}
|
|
107
|
+
else if (sent.retryable !== false && job.attempt < 8) {
|
|
108
|
+
await store.finish(scope, job, { state: 'retry', retryAt: new Date(Date.now() + Math.min(3600000, 15000 * 2 ** job.attempt)), code: sent.code ?? 'provider_unavailable' });
|
|
109
|
+
result.retried++;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
await store.finish(scope, job, { state: 'failed', code: sent.code ?? 'provider_rejected' });
|
|
113
|
+
result.failed++;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
await store.finish(scope, job, job.attempt < 8 ? { state: 'retry', retryAt: new Date(Date.now() + Math.min(3600000, 15000 * 2 ** job.attempt)), code: 'delivery_unavailable' } : { state: 'failed', code: 'delivery_unavailable' });
|
|
118
|
+
if (job.attempt < 8)
|
|
119
|
+
result.retried++;
|
|
120
|
+
else
|
|
121
|
+
result.failed++;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=messaging-notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging-notifications.js","sourceRoot":"","sources":["../src/messaging-notifications.ts"],"names":[],"mappings":"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"}
|
package/dist/messaging.d.ts
CHANGED
|
@@ -40,6 +40,7 @@ export declare class RobonoMessagingBackend {
|
|
|
40
40
|
revision: number;
|
|
41
41
|
allowed: boolean;
|
|
42
42
|
supergroup?: boolean;
|
|
43
|
+
ownerId?: string;
|
|
43
44
|
members: {
|
|
44
45
|
userId: string;
|
|
45
46
|
canSend: boolean;
|
|
@@ -56,6 +57,12 @@ export declare class RobonoMessagingBackend {
|
|
|
56
57
|
reviewerId: string;
|
|
57
58
|
}): Promise<any>;
|
|
58
59
|
settings(): Promise<any>;
|
|
60
|
+
/** Recheck the live recipient, message, membership, blocks and mute state before an alert. */
|
|
61
|
+
canNotify(input: {
|
|
62
|
+
userId: string;
|
|
63
|
+
conversationId: string;
|
|
64
|
+
messageId: string;
|
|
65
|
+
}): Promise<any>;
|
|
59
66
|
/** Erases this user's hosted conversations. Delete the corresponding private media in your own store too. */
|
|
60
67
|
eraseUser(userId: string): Promise<any>;
|
|
61
68
|
}
|
package/dist/messaging.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AACD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAC,MAAM,CAAC;IAAC,cAAc,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,OAAO,GAAC,OAAO,CAAC;IAC5E,KAAK,EAAC,OAAO,CAAC;IAAC,MAAM,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,GAAC,IAAI,CAAC;IAAC,WAAW,EAAC,MAAM,GAAC,IAAI,CAAC;IAC9E,WAAW,EAAC;QAAC,YAAY,EAAC,OAAO,CAAC;QAAA,YAAY,EAAC,OAAO,CAAC;QAAA,aAAa,EAAC,OAAO,CAAC;QAAA,aAAa,EAAC,OAAO,CAAA;KAAC,CAAC;CACrG;AACD,0FAA0F;AAC1F,qBAAa,sBAAsB;IAErB,OAAO,CAAC,OAAO;IAD3B,OAAO,CAAC,GAAG,CAAS;gBACA,OAAO,EAAE,uBAAuB;IAU9C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,OAAO,CAAC,EAAC;QAAC,MAAM,CAAC,EAAC,WAAW,CAAA;KAAC;IA+BpG,eAAe,CACb,KAAK,EAAE;QACL,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB;IAIH,wFAAwF;IACxF,QAAQ,CAAC,KAAK,EAAC;QAAC,eAAe,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,MAAM,CAAC;QAAA,QAAQ,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,OAAO,CAAC;QAAA,UAAU,CAAC,EAAC,OAAO,CAAC;QAAA,OAAO,EAAC;YAAC,MAAM,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,OAAO,CAAC;YAAA,QAAQ,CAAC,EAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAC,OAAO,GAAC,OAAO,GAAC,OAAO,GAAC,UAAU,GAAC,MAAM,GAAC,WAAW,EAAC,OAAO,CAAC,CAAC,CAAA;SAAC,EAAE,CAAA;KAAC;
|
|
1
|
+
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
|
package/dist/messaging.js
CHANGED
|
@@ -53,6 +53,21 @@ export class RobonoMessagingBackend {
|
|
|
53
53
|
settings() {
|
|
54
54
|
return this.request("settings");
|
|
55
55
|
}
|
|
56
|
+
/** Recheck the live recipient, message, membership, blocks and mute state before an alert. */
|
|
57
|
+
async canNotify(input) {
|
|
58
|
+
try {
|
|
59
|
+
const result = await this.request('list', { actorId: input.userId, conversationId: input.conversationId,
|
|
60
|
+
messageIds: [input.messageId], notificationMessageId: input.messageId });
|
|
61
|
+
if (typeof result.notificationAllowed !== 'boolean')
|
|
62
|
+
throw new RobonoError('Install the notification-access service update before enabling alerts.', { status: 503, code: 'notification_access_unavailable', retryable: true });
|
|
63
|
+
return result.notificationAllowed;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof RobonoError && [401, 403, 404].includes(error.status ?? 0))
|
|
67
|
+
return false;
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
56
71
|
/** Erases this user's hosted conversations. Delete the corresponding private media in your own store too. */
|
|
57
72
|
eraseUser(userId) {
|
|
58
73
|
return this.request("erase-user", { userId });
|
|
@@ -78,7 +93,7 @@ export function createMessagingBackendAdapter(options) {
|
|
|
78
93
|
return respond({ error: { code: "authentication_required" } }, 401);
|
|
79
94
|
}
|
|
80
95
|
const raw = await request.text();
|
|
81
|
-
if (raw.length >
|
|
96
|
+
if (raw.length > 900000) {
|
|
82
97
|
return respond({ error: { code: "request_too_large" } }, 413);
|
|
83
98
|
}
|
|
84
99
|
let body;
|
|
@@ -92,9 +107,15 @@ export function createMessagingBackendAdapter(options) {
|
|
|
92
107
|
return respond({ error: { code: "invalid_request" } }, 422);
|
|
93
108
|
}
|
|
94
109
|
const operation = String(body.operation ?? "");
|
|
95
|
-
if (
|
|
110
|
+
if (raw.length > 20000 && !["group-create", "group-update"].includes(operation))
|
|
111
|
+
return respond({ error: { code: "request_too_large" } }, 413);
|
|
112
|
+
if (!["settings", "send", "edit", "delete", "consume", "conversation-preferences", "conversation-delete", "send-call-message", "call-message-options", "list", "search", "social-preview", "conversations", "seen", "presence-update", "wait", "group-members", "group-create", "group-update", "group-leave", "read", "react", "pin", "vote", "close-poll", "inventory", "safety", "block", "unblock", "report"].includes(operation))
|
|
96
113
|
return respond({ error: { code: "operation_not_allowed" } }, 403);
|
|
97
114
|
const input = { ...body, actorId };
|
|
115
|
+
if (['list', 'conversations', 'group-members'].includes(operation)) {
|
|
116
|
+
input.groupControlsVersion = 1;
|
|
117
|
+
input.discussionVersion = 1;
|
|
118
|
+
}
|
|
98
119
|
delete input.operation;
|
|
99
120
|
if (!await options.authorize({ actorId, operation: operation === 'wait' || operation === 'social-preview' ? 'list' : operation, input, request })) {
|
|
100
121
|
return respond({ error: { code: "operation_not_allowed" } }, 403);
|
|
@@ -143,6 +164,23 @@ export function createMessagingBackendAdapter(options) {
|
|
|
143
164
|
// Check each preview against that customer's current list permission too.
|
|
144
165
|
const allowed = await Promise.all(result.conversations.map(async (row) => typeof row.id === 'string' && await options.authorize({ actorId, operation: 'list', input: { actorId, conversationId: row.id }, request })));
|
|
145
166
|
result.conversations = result.conversations.filter((_row, index) => allowed[index]);
|
|
167
|
+
if (input.query !== undefined) {
|
|
168
|
+
if (result.globalSearchAvailable !== true || !Array.isArray(result.searchResults) || result.searchResults.length > 50)
|
|
169
|
+
return respond({ error: { code: 'search_unavailable' } }, 503);
|
|
170
|
+
const decisions = new Map();
|
|
171
|
+
const searchAllowed = await Promise.all(result.searchResults.map((row) => {
|
|
172
|
+
const id = row.conversation?.id;
|
|
173
|
+
if (typeof id !== 'string' || row.message?.conversationId !== id)
|
|
174
|
+
return false;
|
|
175
|
+
let decision = decisions.get(id);
|
|
176
|
+
if (!decision) {
|
|
177
|
+
decision = options.authorize({ actorId, operation: 'list', input: { actorId, conversationId: id }, request });
|
|
178
|
+
decisions.set(id, decision);
|
|
179
|
+
}
|
|
180
|
+
return decision;
|
|
181
|
+
}));
|
|
182
|
+
result.searchResults = result.searchResults.filter((_row, index) => searchAllowed[index]);
|
|
183
|
+
}
|
|
146
184
|
if (await options.authenticate(request) !== actorId)
|
|
147
185
|
return respond({ error: { code: 'authentication_required' } }, 401);
|
|
148
186
|
}
|
package/dist/messaging.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.js","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messaging.js","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { RobonoMessagingBackend } from './messaging.js';
|
|
2
|
+
import { type MessagingPrivateStorage, type MessagingStoredMedia } from './messaging-media.js';
|
|
3
|
+
import { type AppleMessagingCredentials, type GoogleMessagingCredentials } from './messaging-notification-providers.js';
|
|
4
|
+
import { type MessagingNotificationQuery } from './messaging-notification-postgres.js';
|
|
5
|
+
export interface MessengerAccess {
|
|
6
|
+
actorId: string;
|
|
7
|
+
operation: string;
|
|
8
|
+
conversationId?: string;
|
|
9
|
+
uploadId?: string;
|
|
10
|
+
input: Record<string, unknown>;
|
|
11
|
+
request: Request;
|
|
12
|
+
}
|
|
13
|
+
export interface RobonoMessengerServerOptions {
|
|
14
|
+
apiKey: string;
|
|
15
|
+
/** Validate your existing session, including expiry and account suspension. */
|
|
16
|
+
authenticate: (request: Request) => Promise<string | null>;
|
|
17
|
+
/** Your current app permissions; Robono independently enforces membership and feature access. */
|
|
18
|
+
authorize: (access: MessengerAccess) => Promise<boolean>;
|
|
19
|
+
/** Managed private attachments are the default. False deliberately disables them. */
|
|
20
|
+
storage?: (MessagingPrivateStorage & {
|
|
21
|
+
resolve: (input: {
|
|
22
|
+
actorId: string;
|
|
23
|
+
conversationId: string;
|
|
24
|
+
assetId: string;
|
|
25
|
+
}) => Promise<MessagingStoredMedia | null>;
|
|
26
|
+
}) | false;
|
|
27
|
+
messagingUrl?: string;
|
|
28
|
+
mediaUrl?: string;
|
|
29
|
+
fetch?: typeof fetch;
|
|
30
|
+
/** Same-origin cookie sessions must supply their exact allowed origin(s). */
|
|
31
|
+
allowedOrigins?: readonly string[];
|
|
32
|
+
notifications?: {
|
|
33
|
+
scope: string;
|
|
34
|
+
webhookSecret: string;
|
|
35
|
+
workerSecret: string;
|
|
36
|
+
query: MessagingNotificationQuery;
|
|
37
|
+
apple?: AppleMessagingCredentials;
|
|
38
|
+
google?: GoogleMessagingCredentials;
|
|
39
|
+
title?: string;
|
|
40
|
+
/** Current customer account and chat policy, even when the user is not signed in. */
|
|
41
|
+
authorizeRecipient: (input: {
|
|
42
|
+
userId: string;
|
|
43
|
+
conversationId: string;
|
|
44
|
+
}) => Promise<boolean>;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** One authenticated route for messaging and managed media. No account or permission bypass. */
|
|
48
|
+
export declare function createRobonoMessengerServer(options: RobonoMessengerServerOptions): {
|
|
49
|
+
/** Keep relationship and group synchronization on the server. */
|
|
50
|
+
robono: RobonoMessagingBackend;
|
|
51
|
+
handle(request: Request): Promise<Response>;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=messenger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAgC,MAAM,gBAAgB,CAAC;AAErF,OAAO,EAAqC,KAAK,uBAAuB,EAAE,KAAK,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAGjI,OAAO,EAA2B,KAAK,yBAAyB,EAAC,KAAK,0BAA0B,EAAC,MAAM,uCAAuC,CAAC;AAC/I,OAAO,EAA0C,KAAK,0BAA0B,EAAC,MAAM,sCAAsC,CAAC;AAE9H,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAC,MAAM,CAAC;IACf,SAAS,EAAC,MAAM,CAAC;IACjB,cAAc,CAAC,EAAC,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAC,MAAM,CAAC;IACjB,KAAK,EAAC,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAC,OAAO,CAAC;CACjB;AACD,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAC,MAAM,CAAC;IACd,+EAA+E;IAC/E,YAAY,EAAC,CAAC,OAAO,EAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC,CAAC;IACrD,iGAAiG;IACjG,SAAS,EAAC,CAAC,MAAM,EAAC,eAAe,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,qFAAqF;IACrF,OAAO,CAAC,EAAC,CAAC,uBAAuB,GAAG;QAAC,OAAO,EAAC,CAAC,KAAK,EAAC;YAAC,OAAO,EAAC,MAAM,CAAC;YAAA,cAAc,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,MAAM,CAAA;SAAC,KAAG,OAAO,CAAC,oBAAoB,GAAC,IAAI,CAAC,CAAA;KAAC,CAAC,GAAC,KAAK,CAAC;IACvJ,YAAY,CAAC,EAAC,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAC,MAAM,CAAC;IACjB,KAAK,CAAC,EAAC,OAAO,KAAK,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAC,SAAS,MAAM,EAAE,CAAC;IAClC,aAAa,CAAC,EAAC;QACb,KAAK,EAAC,MAAM,CAAC;QAAA,aAAa,EAAC,MAAM,CAAC;QAAA,YAAY,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,0BAA0B,CAAC;QACvF,KAAK,CAAC,EAAC,yBAAyB,CAAC;QAAA,MAAM,CAAC,EAAC,0BAA0B,CAAC;QAAA,KAAK,CAAC,EAAC,MAAM,CAAC;QAClF,qFAAqF;QACrF,kBAAkB,EAAC,CAAC,KAAK,EAAC;YAAC,MAAM,EAAC,MAAM,CAAC;YAAA,cAAc,EAAC,MAAM,CAAA;SAAC,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACpF,CAAC;CACH;AAED,gGAAgG;AAChG,wBAAgB,2BAA2B,CAAC,OAAO,EAAC,4BAA4B;IAoC5E,iEAAiE;;oBAE5C,OAAO,GAAE,OAAO,CAAC,QAAQ,CAAC;EAyBlD"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { RobonoMessagingBackend, createMessagingBackendAdapter } from './messaging.js';
|
|
2
|
+
import { RobonoManagedMedia } from './managed-media.js';
|
|
3
|
+
import { createMessagingMediaBackendAdapter } from './messaging-media.js';
|
|
4
|
+
import { createHash, timingSafeEqual } from 'node:crypto';
|
|
5
|
+
import { createMessagingNotifications } from './messaging-notifications.js';
|
|
6
|
+
import { createMessagingPushSender } from './messaging-notification-providers.js';
|
|
7
|
+
import { createPostgresMessagingNotificationStore } from './messaging-notification-postgres.js';
|
|
8
|
+
/** One authenticated route for messaging and managed media. No account or permission bypass. */
|
|
9
|
+
export function createRobonoMessengerServer(options) {
|
|
10
|
+
if (typeof options.authenticate !== 'function' || typeof options.authorize !== 'function')
|
|
11
|
+
throw Error('Connect your existing sign-in and permission checks. Both are required.');
|
|
12
|
+
const common = { apiKey: options.apiKey, ...(options.fetch ? { fetch: options.fetch } : {}) };
|
|
13
|
+
const robono = new RobonoMessagingBackend({ ...common, ...(options.messagingUrl ? { baseUrl: options.messagingUrl } : {}) });
|
|
14
|
+
const storage = options.storage === false ? null : options.storage ?? new RobonoManagedMedia({ ...common, ...(options.mediaUrl ? { baseUrl: options.mediaUrl } : {}) });
|
|
15
|
+
const origins = new Set((options.allowedOrigins ?? []).map(value => {
|
|
16
|
+
const url = new URL(value);
|
|
17
|
+
if (url.origin !== value || !['https:', 'http:'].includes(url.protocol))
|
|
18
|
+
throw Error('Use exact origins without a path.');
|
|
19
|
+
return url.origin;
|
|
20
|
+
}));
|
|
21
|
+
if (options.notifications && (!options.notifications.workerSecret || options.notifications.workerSecret.length < 32))
|
|
22
|
+
throw Error('Set a separate notification worker secret of at least 32 characters.');
|
|
23
|
+
const authenticate = async (request) => {
|
|
24
|
+
const actor = await options.authenticate(request);
|
|
25
|
+
return typeof actor === 'string' && actor.trim() === actor && actor.length > 0 && actor.length <= 200 && !/[\u0000-\u001f\u007f]/.test(actor) ? actor : null;
|
|
26
|
+
};
|
|
27
|
+
const push = options.notifications ? createMessagingPushSender({ ...options.notifications, ...(options.fetch ? { fetch: options.fetch } : {}) }) : null;
|
|
28
|
+
const notifications = options.notifications && push ? createMessagingNotifications({
|
|
29
|
+
scope: options.notifications.scope, webhookSecret: options.notifications.webhookSecret,
|
|
30
|
+
store: createPostgresMessagingNotificationStore(options.notifications.query), authenticate,
|
|
31
|
+
providers: push.providers, send: push.send,
|
|
32
|
+
mayNotify: async (event) => await options.notifications.authorizeRecipient({ userId: event.recipient_external_user_id, conversationId: event.conversation_id }) &&
|
|
33
|
+
await robono.canNotify({ userId: event.recipient_external_user_id, conversationId: event.conversation_id, messageId: event.message_id }),
|
|
34
|
+
}) : null;
|
|
35
|
+
const messages = createMessagingBackendAdapter({ robono, authenticate,
|
|
36
|
+
authorize: access => options.storage === false && ['send', 'send-call-message', 'edit'].includes(access.operation) && access.input.kind !== undefined && !['text', 'poll'].includes(String(access.input.kind)) ? Promise.resolve(false) : options.authorize({ ...access,
|
|
37
|
+
...(typeof access.input.conversationId === 'string' ? { conversationId: access.input.conversationId } : {}),
|
|
38
|
+
}), ...(storage ? { resolveMedia: (input) => storage.resolve(input) } : {}),
|
|
39
|
+
});
|
|
40
|
+
const media = storage ? createMessagingMediaBackendAdapter({ robono, storage, authenticate,
|
|
41
|
+
authorize: ({ actorId, operation, conversationId, uploadId, request }) => options.authorize({ actorId,
|
|
42
|
+
operation: 'media.' + operation, ...(conversationId ? { conversationId } : {}), ...(uploadId ? { uploadId } : {}),
|
|
43
|
+
input: { ...(conversationId ? { conversationId } : {}), ...(uploadId ? { uploadId } : {}) }, request,
|
|
44
|
+
}),
|
|
45
|
+
}) : null;
|
|
46
|
+
const failure = (code, status) => Response.json({ error: { code } }, { status, headers: { 'cache-control': 'no-store' } });
|
|
47
|
+
return {
|
|
48
|
+
/** Keep relationship and group synchronization on the server. */
|
|
49
|
+
robono,
|
|
50
|
+
async handle(request) {
|
|
51
|
+
if (request.method !== 'POST')
|
|
52
|
+
return failure('method_not_allowed', 405);
|
|
53
|
+
const route = new URL(request.url).searchParams.get('service') ?? 'messages';
|
|
54
|
+
if (route === 'events')
|
|
55
|
+
return notifications ? notifications.webhook(request) : failure('notifications_not_configured', 409);
|
|
56
|
+
if (route === 'notification-worker') {
|
|
57
|
+
if (!notifications)
|
|
58
|
+
return failure('notifications_not_configured', 409);
|
|
59
|
+
const expected = createHash('sha256').update('Bearer ' + options.notifications.workerSecret).digest();
|
|
60
|
+
const received = createHash('sha256').update(request.headers.get('authorization') ?? '').digest();
|
|
61
|
+
if (!timingSafeEqual(expected, received))
|
|
62
|
+
return failure('authentication_required', 401);
|
|
63
|
+
try {
|
|
64
|
+
return Response.json(await notifications.runPending(), { headers: { 'cache-control': 'no-store' } });
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return failure('notification_worker_unavailable', 503);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// The public route is safe with cookies too: require explicit trusted origins.
|
|
71
|
+
// Bearer-only native/server clients do not send an Origin header.
|
|
72
|
+
const origin = request.headers.get('origin');
|
|
73
|
+
if (origin && !origins.has(origin))
|
|
74
|
+
return failure('origin_not_allowed', 403);
|
|
75
|
+
if (!origin && !/^Bearer\s+\S+$/i.test(request.headers.get('authorization') ?? ''))
|
|
76
|
+
return failure('authentication_required', 401);
|
|
77
|
+
if (!request.headers.get('content-type')?.split(';')[0]?.trim().toLowerCase().match(/^application\/json$/))
|
|
78
|
+
return failure('json_required', 415);
|
|
79
|
+
if (route === 'messages')
|
|
80
|
+
return messages(request);
|
|
81
|
+
if (route === 'media')
|
|
82
|
+
return media ? media(request) : failure('attachments_disabled', 403);
|
|
83
|
+
if (route === 'notifications')
|
|
84
|
+
return notifications ? notifications.devices(request) : failure('notifications_not_configured', 409);
|
|
85
|
+
return failure('service_not_found', 404);
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=messenger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger.js","sourceRoot":"","sources":["../src/messenger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type ScreeningFile = {
|
|
2
|
+
kind: 'image' | 'video';
|
|
3
|
+
mimeType: string;
|
|
4
|
+
byteSize: number;
|
|
5
|
+
fileName: string;
|
|
6
|
+
durationMs?: number;
|
|
7
|
+
};
|
|
8
|
+
export type ScreeningResult = {
|
|
9
|
+
id: string;
|
|
10
|
+
state: 'uploading' | 'queued' | 'processing' | 'allowed' | 'blocked' | 'failed';
|
|
11
|
+
kind: 'image' | 'video';
|
|
12
|
+
categories: string[];
|
|
13
|
+
sha256: string | null;
|
|
14
|
+
error: string | null;
|
|
15
|
+
chargedMicros: number;
|
|
16
|
+
reservedMicros: number;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
finishedAt: string | null;
|
|
19
|
+
};
|
|
20
|
+
/** Server-only. Existing connected networks use their Robono Processing API key. */
|
|
21
|
+
export declare class RobonoScreening {
|
|
22
|
+
private options;
|
|
23
|
+
private url;
|
|
24
|
+
constructor(options: {
|
|
25
|
+
apiKey: string;
|
|
26
|
+
baseUrl?: string;
|
|
27
|
+
fetch?: typeof fetch;
|
|
28
|
+
});
|
|
29
|
+
private request;
|
|
30
|
+
prepare(requestId: string, file: ScreeningFile): Promise<ScreeningResult & {
|
|
31
|
+
upload?: {
|
|
32
|
+
url: string;
|
|
33
|
+
headers: Record<string, string>;
|
|
34
|
+
};
|
|
35
|
+
}>;
|
|
36
|
+
submit(id: string): Promise<ScreeningResult & {
|
|
37
|
+
upload?: {
|
|
38
|
+
url: string;
|
|
39
|
+
headers: Record<string, string>;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
|
+
status(id: string): Promise<ScreeningResult & {
|
|
43
|
+
upload?: {
|
|
44
|
+
url: string;
|
|
45
|
+
headers: Record<string, string>;
|
|
46
|
+
};
|
|
47
|
+
}>;
|
|
48
|
+
/** Upload exactly the bytes to be published. Returns a job; never treats pending as approved. */
|
|
49
|
+
upload(requestId: string, file: ScreeningFile, bytes: Uint8Array): Promise<ScreeningResult>;
|
|
50
|
+
/** Call this before releasing bytes stored by your own application. */
|
|
51
|
+
assertAllowed(id: string, bytes: Uint8Array): Promise<ScreeningResult>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=screening.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screening.d.ts","sourceRoot":"","sources":["../src/screening.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAC;IAAC,IAAI,EAAC,OAAO,GAAC,OAAO,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAA;CAAC,CAAC;AACpH,MAAM,MAAM,eAAe,GAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,WAAW,GAAC,QAAQ,GAAC,YAAY,GAAC,SAAS,GAAC,SAAS,GAAC,QAAQ,CAAC;IAAA,IAAI,EAAC,OAAO,GAAC,OAAO,CAAC;IAAA,UAAU,EAAC,MAAM,EAAE,CAAC;IAAA,MAAM,EAAC,MAAM,GAAC,IAAI,CAAC;IAAA,KAAK,EAAC,MAAM,GAAC,IAAI,CAAC;IAAA,aAAa,EAAC,MAAM,CAAC;IAAA,cAAc,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,GAAC,IAAI,CAAA;CAAC,CAAC;AAC9Q,oFAAoF;AACpF,qBAAa,eAAe;IAEf,OAAO,CAAC,OAAO;IAD3B,OAAO,CAAC,GAAG,CAAQ;gBACC,OAAO,EAAC;QAAC,MAAM,EAAC,MAAM,CAAC;QAAA,OAAO,CAAC,EAAC,MAAM,CAAC;QAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAA;KAAC;YAIjE,OAAO;IAMrB,OAAO,CAAC,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,aAAa;iBAN0C;YAAC,GAAG,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;SAAC;;IAO/H,MAAM,CAAC,EAAE,EAAC,MAAM;iBAPqE;YAAC,GAAG,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;SAAC;;IAQ/H,MAAM,CAAC,EAAE,EAAC,MAAM;iBARqE;YAAC,GAAG,EAAC,MAAM,CAAC;YAAA,OAAO,EAAC,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAAA;SAAC;;IAS/H,iGAAiG;IAC3F,MAAM,CAAC,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,aAAa,EAAC,KAAK,EAAC,UAAU,GAAE,OAAO,CAAC,eAAe,CAAC;IAY3F,uEAAuE;IACjE,aAAa,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,UAAU,GAAE,OAAO,CAAC,eAAe,CAAC;CAKxE"}
|