@robono/server 0.22.0 → 0.23.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 +4 -0
- package/SBOM.spdx.json +9 -9
- package/dist/calling-session-handle.d.ts +13 -0
- package/dist/calling-session-handle.d.ts.map +1 -0
- package/dist/calling-session-handle.js +37 -0
- package/dist/calling-session-handle.js.map +1 -0
- package/dist/calling.d.ts +1 -0
- package/dist/calling.d.ts.map +1 -1
- package/dist/calling.js +1 -1
- package/dist/calling.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/location.d.ts.map +1 -1
- package/dist/location.js +3 -0
- package/dist/location.js.map +1 -1
- package/dist/messaging-extras-contract.d.ts +14 -0
- package/dist/messaging-extras-contract.d.ts.map +1 -0
- package/dist/messaging-extras-contract.js +94 -0
- package/dist/messaging-extras-contract.js.map +1 -0
- package/dist/messaging-extras.d.ts +10 -0
- package/dist/messaging-extras.d.ts.map +1 -0
- package/dist/messaging-extras.js +42 -0
- package/dist/messaging-extras.js.map +1 -0
- package/dist/messaging-notification-providers.d.ts +20 -1
- package/dist/messaging-notification-providers.d.ts.map +1 -1
- package/dist/messaging-notification-providers.js +16 -5
- package/dist/messaging-notification-providers.js.map +1 -1
- package/dist/messaging-push-worker.d.ts.map +1 -1
- package/dist/messaging-push-worker.js +22 -2
- package/dist/messaging-push-worker.js.map +1 -1
- package/dist/messenger-calling.d.ts +14 -0
- package/dist/messenger-calling.d.ts.map +1 -0
- package/dist/messenger-calling.js +173 -0
- package/dist/messenger-calling.js.map +1 -0
- package/dist/messenger-check.d.ts.map +1 -1
- package/dist/messenger-check.js +3 -1
- package/dist/messenger-check.js.map +1 -1
- package/dist/messenger-connected-templates.d.ts.map +1 -1
- package/dist/messenger-connected-templates.js +5 -2
- package/dist/messenger-connected-templates.js.map +1 -1
- package/dist/messenger-connections.d.ts +31 -0
- package/dist/messenger-connections.d.ts.map +1 -0
- package/dist/messenger-connections.js +18 -0
- package/dist/messenger-connections.js.map +1 -0
- package/dist/messenger-customer-templates.d.ts.map +1 -1
- package/dist/messenger-customer-templates.js +2 -0
- package/dist/messenger-customer-templates.js.map +1 -1
- package/dist/messenger-init.d.ts.map +1 -1
- package/dist/messenger-init.js +9 -5
- package/dist/messenger-init.js.map +1 -1
- package/dist/messenger-install.d.ts +1 -1
- package/dist/messenger-install.d.ts.map +1 -1
- package/dist/messenger-install.js +39 -10
- package/dist/messenger-install.js.map +1 -1
- package/dist/messenger.d.ts +16 -0
- package/dist/messenger.d.ts.map +1 -1
- package/dist/messenger.js +28 -1
- package/dist/messenger.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## 0.23.0 — unreleased
|
|
2
|
+
|
|
3
|
+
Connect messaging, Maps, chat extras and supplied calling through one authenticated route. Synchronize contacts once; retain caller controls on the server. Add managed call alerts, read-only setup checks, Maps/native registration guidance and screen-sharing build configuration. Preserve customer permissions and explicit plugin choices during upgrades.
|
|
4
|
+
|
|
1
5
|
## 0.20.1 — 2026-11-04
|
|
2
6
|
|
|
3
7
|
## 0.22.0
|
package/SBOM.spdx.json
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
"spdxVersion": "SPDX-2.3",
|
|
3
3
|
"dataLicense": "CC0-1.0",
|
|
4
4
|
"SPDXID": "SPDXRef-DOCUMENT",
|
|
5
|
-
"name": "@robono/server@0.
|
|
6
|
-
"documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-0.
|
|
5
|
+
"name": "@robono/server@0.23.0",
|
|
6
|
+
"documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-0.23.0-***",
|
|
7
7
|
"creationInfo": {
|
|
8
|
-
"created": "2026-11-
|
|
8
|
+
"created": "2026-11-04T11:34:55.911Z",
|
|
9
9
|
"creators": [
|
|
10
10
|
"Tool: npm/cli-11.6.2"
|
|
11
11
|
]
|
|
12
12
|
},
|
|
13
13
|
"documentDescribes": [
|
|
14
|
-
"SPDXRef-Package-robono.server-0.
|
|
14
|
+
"SPDXRef-Package-robono.server-0.23.0"
|
|
15
15
|
],
|
|
16
16
|
"packages": [
|
|
17
17
|
{
|
|
18
18
|
"name": "@robono/server",
|
|
19
|
-
"SPDXID": "SPDXRef-Package-robono.server-0.
|
|
20
|
-
"versionInfo": "0.
|
|
19
|
+
"SPDXID": "SPDXRef-Package-robono.server-0.23.0",
|
|
20
|
+
"versionInfo": "0.23.0",
|
|
21
21
|
"packageFileName": "",
|
|
22
22
|
"description": "Provider-neutral server SDK for the Robono Bridge API.",
|
|
23
23
|
"primaryPackagePurpose": "LIBRARY",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
{
|
|
30
30
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
31
31
|
"referenceType": "purl",
|
|
32
|
-
"referenceLocator": "pkg:npm/%40robono/server@0.
|
|
32
|
+
"referenceLocator": "pkg:npm/%40robono/server@0.23.0"
|
|
33
33
|
}
|
|
34
34
|
]
|
|
35
35
|
},
|
|
@@ -175,12 +175,12 @@
|
|
|
175
175
|
"relationships": [
|
|
176
176
|
{
|
|
177
177
|
"spdxElementId": "SPDXRef-DOCUMENT",
|
|
178
|
-
"relatedSpdxElement": "SPDXRef-Package-robono.server-0.
|
|
178
|
+
"relatedSpdxElement": "SPDXRef-Package-robono.server-0.23.0",
|
|
179
179
|
"relationshipType": "DESCRIBES"
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
"spdxElementId": "SPDXRef-Package-cross-spawn-7.0.6",
|
|
183
|
-
"relatedSpdxElement": "SPDXRef-Package-robono.server-0.
|
|
183
|
+
"relatedSpdxElement": "SPDXRef-Package-robono.server-0.23.0",
|
|
184
184
|
"relationshipType": "DEPENDENCY_OF"
|
|
185
185
|
},
|
|
186
186
|
{
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Full call credentials stay encrypted between requests to the customer's route.
|
|
2
|
+
* The browser receives a separate credential that can only hear change hints. */
|
|
3
|
+
export declare function createCallingSessionHandles(serverKey: string, serviceUrl: string): {
|
|
4
|
+
seal(actorId: string, session: {
|
|
5
|
+
token: string;
|
|
6
|
+
expiresAt: number;
|
|
7
|
+
}): string;
|
|
8
|
+
open(handle: unknown, actorId: string): {
|
|
9
|
+
token: string;
|
|
10
|
+
expiresAt: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=calling-session-handle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calling-session-handle.d.ts","sourceRoot":"","sources":["../src/calling-session-handle.ts"],"names":[],"mappings":"AACA;iFACiF;AACjF,wBAAgB,2BAA2B,CAAC,SAAS,EAAC,MAAM,EAAC,UAAU,EAAC,MAAM;kBAK/D,MAAM,WAAS;QAAC,KAAK,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC;iBAK/C,OAAO,WAAS,MAAM,GAAE;QAAC,KAAK,EAAC,MAAM,CAAC;QAAA,SAAS,EAAC,MAAM,CAAA;KAAC;EAWpE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createCipheriv, createDecipheriv, createHash, randomBytes } from 'node:crypto';
|
|
2
|
+
/** Full call credentials stay encrypted between requests to the customer's route.
|
|
3
|
+
* The browser receives a separate credential that can only hear change hints. */
|
|
4
|
+
export function createCallingSessionHandles(serverKey, serviceUrl) {
|
|
5
|
+
if (!serverKey.trim())
|
|
6
|
+
throw Error('A server API key is required.');
|
|
7
|
+
const key = createHash('sha256').update('robono.messenger.calling.v1\0' + serverKey).digest();
|
|
8
|
+
const aad = Buffer.from('robono.messenger.calling.v1\0' + serviceUrl);
|
|
9
|
+
return {
|
|
10
|
+
seal(actorId, session) {
|
|
11
|
+
const iv = randomBytes(12), cipher = createCipheriv('aes-256-gcm', key, iv);
|
|
12
|
+
cipher.setAAD(aad);
|
|
13
|
+
const body = Buffer.concat([cipher.update(JSON.stringify({ actorId, token: session.token, expiresAt: session.expiresAt }), 'utf8'), cipher.final()]);
|
|
14
|
+
return Buffer.concat([iv, cipher.getAuthTag(), body]).toString('base64url');
|
|
15
|
+
},
|
|
16
|
+
open(handle, actorId) {
|
|
17
|
+
try {
|
|
18
|
+
if (typeof handle !== 'string' || handle.length > 4096 || !/^[A-Za-z0-9_-]+$/.test(handle))
|
|
19
|
+
throw Error();
|
|
20
|
+
const bytes = Buffer.from(handle, 'base64url');
|
|
21
|
+
if (bytes.length < 29)
|
|
22
|
+
throw Error();
|
|
23
|
+
const decipher = createDecipheriv('aes-256-gcm', key, bytes.subarray(0, 12));
|
|
24
|
+
decipher.setAAD(aad);
|
|
25
|
+
decipher.setAuthTag(bytes.subarray(12, 28));
|
|
26
|
+
const value = JSON.parse(Buffer.concat([decipher.update(bytes.subarray(28)), decipher.final()]).toString('utf8'));
|
|
27
|
+
if (value.actorId !== actorId || typeof value.token !== 'string' || !value.token || value.token.length > 256 || !Number.isFinite(value.expiresAt) || value.expiresAt <= Date.now())
|
|
28
|
+
throw Error();
|
|
29
|
+
return { token: value.token, expiresAt: value.expiresAt };
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
throw Object.assign(Error('calling_session_expired'), { status: 401 });
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=calling-session-handle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calling-session-handle.js","sourceRoot":"","sources":["../src/calling-session-handle.ts"],"names":[],"mappings":"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"}
|
package/dist/calling.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export interface CallingSession {
|
|
|
26
26
|
serviceUrl: string;
|
|
27
27
|
token: string;
|
|
28
28
|
expiresAt: number;
|
|
29
|
+
eventsToken?: string;
|
|
29
30
|
}
|
|
30
31
|
/** Backend-only admission and permission management. No screens or native dependencies. */
|
|
31
32
|
export declare class RobonoCallingBackend {
|
package/dist/calling.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calling.d.ts","sourceRoot":"","sources":["../src/calling.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,2BAA2B;IAC1C,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAC,OAAO,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,yBAAyB;IAAG,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,oBAAoB,CAAC,EAAC,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC9J,MAAM,WAAW,cAAc;IAAG,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;
|
|
1
|
+
{"version":3,"file":"calling.d.ts","sourceRoot":"","sources":["../src/calling.ts"],"names":[],"mappings":"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"}
|
package/dist/calling.js
CHANGED
|
@@ -57,7 +57,7 @@ export class RobonoCallingBackend {
|
|
|
57
57
|
const session = await this.post(this.serviceUrl + '/sessions', { ticket: grant.ticket, ...(connectionId ? { connectionId } : {}) }, false);
|
|
58
58
|
if (typeof session.token !== 'string' || !session.token || !Number.isFinite(session.expiresAt) || session.expiresAt <= Date.now())
|
|
59
59
|
throw new RobonoError('Invalid calling session.', { code: 'invalid_calling_response' });
|
|
60
|
-
return { serviceUrl: this.serviceUrl, token: session.token, expiresAt: session.expiresAt };
|
|
60
|
+
return { serviceUrl: this.serviceUrl, token: session.token, expiresAt: session.expiresAt, ...(typeof session.eventsToken === 'string' ? { eventsToken: session.eventsToken } : {}) };
|
|
61
61
|
}
|
|
62
62
|
/** Attest to an existing same-network friendship; synchronize blocks and permission changes here. */
|
|
63
63
|
setRelationship(input) {
|
package/dist/calling.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calling.js","sourceRoot":"","sources":["../src/calling.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"calling.js","sourceRoot":"","sources":["../src/calling.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,4 +28,6 @@ export { RobonoScreening } from './screening.js';
|
|
|
28
28
|
export type { ScreeningFile, ScreeningResult } from './screening.js';
|
|
29
29
|
export { checkRobonoMessengerSetup, type MessengerSetupCheck } from './messenger-check.js';
|
|
30
30
|
export { supabaseMessengerAuthentication, firebaseMessengerAuthentication } from './messenger-auth.js';
|
|
31
|
+
export { createMessagingExtrasBackend, createMessagingExtrasBackendAdapter } from './messaging-extras.js';
|
|
32
|
+
export { RobonoMessengerConnections, type MessengerContactInput, type MessengerCallingContext } from './messenger-connections.js';
|
|
31
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrI,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtE,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACvF,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEpF,OAAO,EAAC,kCAAkC,EAAC,MAAM,sBAAsB,CAAC;AACxE,YAAY,EAAC,uBAAuB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AACtI,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAC,sCAAsC,EAAC,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EAAC,qBAAqB,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AACjF,YAAY,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAC,2BAA2B,EAAC,KAAK,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AACtF,YAAY,EAAC,4BAA4B,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAEjF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAC,aAAa,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAC,yBAAyB,EAAC,KAAK,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAC,+BAA+B,EAAC,+BAA+B,EAAC,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACrI,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtE,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AACvF,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEpF,OAAO,EAAC,kCAAkC,EAAC,MAAM,sBAAsB,CAAC;AACxE,YAAY,EAAC,uBAAuB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AACtI,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAC,sCAAsC,EAAC,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EAAC,qBAAqB,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AACjF,YAAY,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAC,2BAA2B,EAAC,KAAK,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AACtF,YAAY,EAAC,4BAA4B,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAEjF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAC,aAAa,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAC,yBAAyB,EAAC,KAAK,mBAAmB,EAAC,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAC,+BAA+B,EAAC,+BAA+B,EAAC,MAAM,qBAAqB,CAAC;AAGpG,OAAO,EAAC,4BAA4B,EAAC,mCAAmC,EAAC,MAAM,uBAAuB,CAAC;AAEvG,OAAO,EAAC,0BAA0B,EAAC,KAAK,qBAAqB,EAAC,KAAK,uBAAuB,EAAC,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,4 +18,6 @@ export * from './messaging-notification-postgres.js';
|
|
|
18
18
|
export { RobonoScreening } from './screening.js';
|
|
19
19
|
export { checkRobonoMessengerSetup } from './messenger-check.js';
|
|
20
20
|
export { supabaseMessengerAuthentication, firebaseMessengerAuthentication } from './messenger-auth.js';
|
|
21
|
+
export { createMessagingExtrasBackend, createMessagingExtrasBackendAdapter } from './messaging-extras.js';
|
|
22
|
+
export { RobonoMessengerConnections } from './messenger-connections.js';
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAM1D,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAGvF,OAAO,EAAC,kCAAkC,EAAC,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAC,sCAAsC,EAAC,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EAAC,qBAAqB,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAC,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAC,2BAA2B,EAA4B,MAAM,gBAAgB,CAAC;AAGtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAC,yBAAyB,EAA0B,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAC,+BAA+B,EAAC,+BAA+B,EAAC,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAM1D,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAGvF,OAAO,EAAC,kCAAkC,EAAC,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAC,sCAAsC,EAAC,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EAAC,qBAAqB,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAC,yBAAyB,EAAC,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAC,2BAA2B,EAA4B,MAAM,gBAAgB,CAAC;AAGtF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AAErD,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAC,yBAAyB,EAA0B,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAC,+BAA+B,EAAC,+BAA+B,EAAC,MAAM,qBAAqB,CAAC;AAGpG,OAAO,EAAC,4BAA4B,EAAC,mCAAmC,EAAC,MAAM,uBAAuB,CAAC;AAEvG,OAAO,EAAC,0BAA0B,EAAyD,MAAM,4BAA4B,CAAC"}
|
package/dist/location.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,4FAA4F;AAC5F,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAyB;gBAC9B,OAAO,EAAE,uBAAuB;IAM5C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAG9D,QAAQ;IAGR,QAAQ,CAAC,KAAK,EAAE,kBAAkB;IAGlC,YAAY,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAG3E,iBAAiB,CAAC,MAAM,EAAE,MAAM;CAGjC;AACD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE;IACP,MAAM,EAAE,qBAAqB,CAAC;IAC9B,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,SAAS,EAAE,CACT,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC;KAClB,KACE,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB,IAEa,SAAS,OAAO,
|
|
1
|
+
{"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AACD,4FAA4F;AAC5F,qBAAa,qBAAqB;IAChC,OAAO,CAAC,SAAS,CAAyB;gBAC9B,OAAO,EAAE,uBAAuB;IAM5C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAG9D,QAAQ;IAGR,QAAQ,CAAC,KAAK,EAAE,kBAAkB;IAGlC,YAAY,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAG3E,iBAAiB,CAAC,MAAM,EAAE,MAAM;CAGjC;AACD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE;IACP,MAAM,EAAE,qBAAqB,CAAC;IAC9B,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,SAAS,EAAE,CACT,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,EAAE,OAAO,CAAC;KAClB,KACE,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB,IAEa,SAAS,OAAO,uBA0E/B"}
|
package/dist/location.js
CHANGED
|
@@ -60,6 +60,7 @@ export function createLocationBackendAdapter(options) {
|
|
|
60
60
|
const operation = String(body.operation ?? "");
|
|
61
61
|
if (![
|
|
62
62
|
"settings",
|
|
63
|
+
"grants", "map-access", "map-result", "cancel-start",
|
|
63
64
|
"start",
|
|
64
65
|
"update",
|
|
65
66
|
"view",
|
|
@@ -74,6 +75,8 @@ export function createLocationBackendAdapter(options) {
|
|
|
74
75
|
"map-open", "motion-status", "motion-permission", "motion", "motion-start", "motion-view", "motion-list",
|
|
75
76
|
].includes(operation))
|
|
76
77
|
return reply({ error: { code: "operation_not_allowed" } }, 403);
|
|
78
|
+
if (operation === 'map-access' && body.platform === 'web' && (!request.headers.get('origin') || body.identifier !== request.headers.get('origin')))
|
|
79
|
+
return reply({ error: { code: 'map_origin_mismatch' } }, 403);
|
|
77
80
|
const input = { ...body, actor };
|
|
78
81
|
delete input.operation;
|
|
79
82
|
if (!await options.authorize({ actorId: actor, operation, input, request }))
|
package/dist/location.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"location.js","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"location.js","sourceRoot":"","sources":["../src/location.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const messagingExtrasOperations: readonly ["extras-list", "weather-send", "privacy-set", "address-resolve", "tracking-start", "tracking-update", "tracking-stop", "map-access", "map-result"];
|
|
2
|
+
export type MessagingExtrasOperation = typeof messagingExtrasOperations[number];
|
|
3
|
+
/** Exact accepted fields; neither the client identity nor provider results pass through. */
|
|
4
|
+
export declare function validateMessagingExtrasRequest(value: unknown, now?: number): {
|
|
5
|
+
operation: "map-result";
|
|
6
|
+
input: Record<string, unknown>;
|
|
7
|
+
} | {
|
|
8
|
+
operation: "map-access";
|
|
9
|
+
input: Record<string, unknown>;
|
|
10
|
+
} | {
|
|
11
|
+
operation: "extras-list" | "weather-send" | "privacy-set" | "address-resolve" | "tracking-start" | "tracking-update" | "tracking-stop";
|
|
12
|
+
input: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=messaging-extras-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging-extras-contract.d.ts","sourceRoot":"","sources":["../src/messaging-extras-contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,8JAAqJ,CAAC;AAC5L,MAAM,MAAM,wBAAwB,GAAC,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAG9E,4FAA4F;AAC5F,wBAAgB,8BAA8B,CAAC,KAAK,EAAC,OAAO,EAAC,GAAG,SAAW;;WAOY,MAAM,CAAC,MAAM,EAAC,OAAO,CAAC;;;;;;;EAoC5G"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
export const messagingExtrasOperations = ['extras-list', 'weather-send', 'privacy-set', 'address-resolve', 'tracking-start', 'tracking-update', 'tracking-stop', 'map-access', 'map-result'];
|
|
2
|
+
const identifier = (value, max = 200) => typeof value === 'string' && value.length > 0 && value.length <= max && value.trim() === value && !/[\u0000-\u001f\u007f]/.test(value);
|
|
3
|
+
const uuid = (value) => typeof value === 'string' && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value);
|
|
4
|
+
/** Exact accepted fields; neither the client identity nor provider results pass through. */
|
|
5
|
+
export function validateMessagingExtrasRequest(value, now = Date.now()) {
|
|
6
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
7
|
+
throw Error('Invalid feature request.');
|
|
8
|
+
const v = value, operation = v.operation;
|
|
9
|
+
if (!messagingExtrasOperations.includes(operation))
|
|
10
|
+
throw Error('Unsupported feature request.');
|
|
11
|
+
const input = {};
|
|
12
|
+
if (operation === 'map-result') {
|
|
13
|
+
if (!identifier(v.requestId) || !uuid(v.receipt) || typeof v.loaded !== 'boolean')
|
|
14
|
+
throw Error('Invalid map receipt.');
|
|
15
|
+
return { operation, input: { requestId: v.requestId, receipt: v.receipt, loaded: v.loaded } };
|
|
16
|
+
}
|
|
17
|
+
if (operation === 'map-access') {
|
|
18
|
+
if (!['web', 'ios', 'android'].includes(String(v.platform)))
|
|
19
|
+
throw Error('Choose a map platform.');
|
|
20
|
+
input.platform = v.platform;
|
|
21
|
+
if (!identifier(v.identifier))
|
|
22
|
+
throw Error('Choose your registered website or app.');
|
|
23
|
+
input.identifier = v.identifier;
|
|
24
|
+
if (v.platform === 'web') {
|
|
25
|
+
const url = new URL(v.identifier);
|
|
26
|
+
if (url.origin !== v.identifier || url.protocol !== 'https:' || url.username || url.password)
|
|
27
|
+
throw Error('Use your registered HTTPS website origin.');
|
|
28
|
+
}
|
|
29
|
+
if (v.platform === 'android') {
|
|
30
|
+
if (typeof v.fingerprint !== 'string' || !/^[A-Fa-f0-9]{40}$/.test(v.fingerprint.replaceAll(':', '')))
|
|
31
|
+
throw Error('Use your registered signing fingerprint.');
|
|
32
|
+
input.fingerprint = v.fingerprint.replaceAll(':', '').toUpperCase();
|
|
33
|
+
}
|
|
34
|
+
if (!identifier(v.requestId))
|
|
35
|
+
throw Error('A request ID is required.');
|
|
36
|
+
input.requestId = v.requestId;
|
|
37
|
+
return { operation, input };
|
|
38
|
+
}
|
|
39
|
+
if (!uuid(v.conversationId))
|
|
40
|
+
throw Error('Choose a conversation.');
|
|
41
|
+
input.conversationId = v.conversationId;
|
|
42
|
+
if (operation === 'extras-list') {
|
|
43
|
+
if (!Array.isArray(v.messageIds) || v.messageIds.length > 100 || !v.messageIds.every(id => identifier(id, 30) && /^[1-9][0-9]*$/.test(id)))
|
|
44
|
+
throw Error('Choose up to 100 messages.');
|
|
45
|
+
input.messageIds = [...new Set(v.messageIds)];
|
|
46
|
+
}
|
|
47
|
+
if (operation === 'address-resolve' && v.choiceIndex !== undefined) {
|
|
48
|
+
if (!Number.isInteger(v.choiceIndex) || Number(v.choiceIndex) < 0 || Number(v.choiceIndex) > 4)
|
|
49
|
+
throw Error('Choose a destination.');
|
|
50
|
+
input.choiceIndex = v.choiceIndex;
|
|
51
|
+
}
|
|
52
|
+
if (operation === 'privacy-set') {
|
|
53
|
+
if (typeof v.enabled !== 'boolean')
|
|
54
|
+
throw Error('Choose a Privacy Lens setting.');
|
|
55
|
+
input.enabled = v.enabled;
|
|
56
|
+
}
|
|
57
|
+
if (['address-resolve', 'tracking-start'].includes(operation)) {
|
|
58
|
+
if (!identifier(v.messageId, 30) || !/^[1-9][0-9]*$/.test(v.messageId))
|
|
59
|
+
throw Error('Choose an address message.');
|
|
60
|
+
input.messageId = v.messageId;
|
|
61
|
+
}
|
|
62
|
+
if (operation === 'tracking-update' || operation === 'tracking-stop' && v.sessionId !== undefined) {
|
|
63
|
+
if (!uuid(v.sessionId))
|
|
64
|
+
throw Error('Choose a sharing session.');
|
|
65
|
+
input.sessionId = v.sessionId;
|
|
66
|
+
}
|
|
67
|
+
if (operation === 'tracking-stop' && v.sessionId === undefined) {
|
|
68
|
+
if (!identifier(v.requestId))
|
|
69
|
+
throw Error('Choose a sharing request.');
|
|
70
|
+
input.requestId = v.requestId;
|
|
71
|
+
}
|
|
72
|
+
if (['weather-send', 'address-resolve', 'tracking-start', 'tracking-update'].includes(operation)) {
|
|
73
|
+
if (!identifier(v.requestId))
|
|
74
|
+
throw Error('A request ID is required.');
|
|
75
|
+
input.requestId = v.requestId;
|
|
76
|
+
}
|
|
77
|
+
if (operation === 'tracking-start' && v.durationMinutes !== 15)
|
|
78
|
+
throw Error('Chat tracking lasts 15 minutes.');
|
|
79
|
+
if (operation === 'tracking-stop' && v.sessionId === undefined) {
|
|
80
|
+
if (!identifier(v.requestId))
|
|
81
|
+
throw Error('Choose a sharing request.');
|
|
82
|
+
input.requestId = v.requestId;
|
|
83
|
+
}
|
|
84
|
+
if (['tracking-start', 'tracking-update'].includes(operation) || operation === 'weather-send' && v.position !== undefined) {
|
|
85
|
+
const p = v.position;
|
|
86
|
+
if (!p || typeof p.latitude !== 'number' || !Number.isFinite(p.latitude) || Math.abs(p.latitude) > 90 || typeof p.longitude !== 'number' || !Number.isFinite(p.longitude) || Math.abs(p.longitude) > 180 || typeof p.accuracyMeters !== 'number' || !Number.isFinite(p.accuracyMeters) || p.accuracyMeters < 0 || p.accuracyMeters > 500 || typeof p.capturedAt !== 'number' || !Number.isFinite(p.capturedAt) || Math.abs(now - p.capturedAt) > 60000)
|
|
87
|
+
throw Error('A recent accurate location is required.');
|
|
88
|
+
if (p.speedMps !== undefined && (typeof p.speedMps !== 'number' || !Number.isFinite(p.speedMps) || p.speedMps < 0 || p.speedMps > 400))
|
|
89
|
+
throw Error('Invalid speed.');
|
|
90
|
+
input.position = { latitude: p.latitude, longitude: p.longitude, accuracyMeters: p.accuracyMeters, capturedAt: p.capturedAt, ...(p.speedMps !== undefined ? { speedMps: p.speedMps } : {}) };
|
|
91
|
+
}
|
|
92
|
+
return { operation, input };
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=messaging-extras-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging-extras-contract.js","sourceRoot":"","sources":["../src/messaging-extras-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { RobonoMessagingBackend, type MessagingBackendOptions } from './messaging.js';
|
|
2
|
+
import type { MessengerAccess } from './messenger.js';
|
|
3
|
+
/** Private provider credentials and authoritative feature decisions remain at Robono. */
|
|
4
|
+
export declare function createMessagingExtrasBackendAdapter(options: {
|
|
5
|
+
robono: RobonoMessagingBackend;
|
|
6
|
+
authenticate: (request: Request) => Promise<string | null>;
|
|
7
|
+
authorize: (access: MessengerAccess) => Promise<boolean>;
|
|
8
|
+
}): (request: Request) => Promise<Response>;
|
|
9
|
+
export declare function createMessagingExtrasBackend(options: MessagingBackendOptions): RobonoMessagingBackend;
|
|
10
|
+
//# sourceMappingURL=messaging-extras.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging-extras.d.ts","sourceRoot":"","sources":["../src/messaging-extras.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,KAAK,uBAAuB,EAAC,MAAM,gBAAgB,CAAC;AAGnF,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAEpD,yFAAyF;AACzF,wBAAgB,mCAAmC,CAAC,OAAO,EAAC;IAAC,MAAM,EAAC,sBAAsB,CAAC;IAAA,YAAY,EAAC,CAAC,OAAO,EAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC,CAAC;IAAA,SAAS,EAAC,CAAC,MAAM,EAAC,eAAe,KAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAAC,IACvL,SAAQ,OAAO,KAAE,OAAO,CAAC,QAAQ,CAAC,CAoB/C;AACD,wBAAgB,4BAA4B,CAAC,OAAO,EAAC,uBAAuB,0BAAyH"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { RobonoMessagingBackend } from './messaging.js';
|
|
2
|
+
import { RobonoError } from './errors.js';
|
|
3
|
+
import { validateMessagingExtrasRequest } from './messaging-extras-contract.js';
|
|
4
|
+
/** Private provider credentials and authoritative feature decisions remain at Robono. */
|
|
5
|
+
export function createMessagingExtrasBackendAdapter(options) {
|
|
6
|
+
return async (request) => {
|
|
7
|
+
const reply = (body, status = 200, headers = {}) => Response.json(body, { status, headers: { 'cache-control': 'no-store', ...headers } });
|
|
8
|
+
if (request.method !== 'POST')
|
|
9
|
+
return reply({ error: { code: 'method_not_allowed' } }, 405);
|
|
10
|
+
try {
|
|
11
|
+
const actor = await options.authenticate(request);
|
|
12
|
+
if (!actor)
|
|
13
|
+
return reply({ error: { code: 'authentication_required' } }, 401);
|
|
14
|
+
const raw = await request.text();
|
|
15
|
+
if (raw.length > 32000)
|
|
16
|
+
return reply({ error: { code: 'request_too_large' } }, 413);
|
|
17
|
+
let parsed;
|
|
18
|
+
try {
|
|
19
|
+
parsed = validateMessagingExtrasRequest(JSON.parse(raw));
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return reply({ error: { code: 'invalid_feature_request' } }, 422);
|
|
23
|
+
}
|
|
24
|
+
const { operation, input } = parsed;
|
|
25
|
+
if (operation === 'map-access' && input.platform === 'web') {
|
|
26
|
+
const origin = request.headers.get('origin');
|
|
27
|
+
if (!origin || input.identifier !== origin)
|
|
28
|
+
return reply({ error: { code: 'map_origin_mismatch' } }, 403);
|
|
29
|
+
}
|
|
30
|
+
if (!await options.authorize({ actorId: actor, operation: 'extras.' + operation, input, request, ...(typeof input.conversationId === 'string' ? { conversationId: input.conversationId } : {}) }))
|
|
31
|
+
return reply({ error: { code: 'operation_not_allowed' } }, 403);
|
|
32
|
+
return reply(await options.robono.request(operation, { ...input, actor }));
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
if (e instanceof RobonoError)
|
|
36
|
+
return reply({ error: { code: e.code, message: e.message } }, e.status ?? 503, e.retryAfterMs ? { 'retry-after': String(Math.ceil(e.retryAfterMs / 1000)) } : {});
|
|
37
|
+
return reply({ error: { code: 'message_features_unavailable' } }, 503);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function createMessagingExtrasBackend(options) { return new RobonoMessagingBackend({ ...options, baseUrl: options.baseUrl ?? 'https://api.robono.com/v1/messaging/extras' }); }
|
|
42
|
+
//# sourceMappingURL=messaging-extras.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messaging-extras.js","sourceRoot":"","sources":["../src/messaging-extras.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,25 @@ export interface GoogleMessagingCredentials {
|
|
|
11
11
|
clientEmail: string;
|
|
12
12
|
privateKey: string;
|
|
13
13
|
}
|
|
14
|
+
export interface CallingPushData {
|
|
15
|
+
event: 'calling.incoming' | 'calling.dismissed' | 'calling.group_incoming' | 'calling.group_dismissed';
|
|
16
|
+
event_id: string;
|
|
17
|
+
call_id: string;
|
|
18
|
+
connection_id: string;
|
|
19
|
+
kind: 'voice' | 'video';
|
|
20
|
+
sequence: string;
|
|
21
|
+
ring_expires_at: string;
|
|
22
|
+
accountScope: string;
|
|
23
|
+
}
|
|
24
|
+
export type CommunicationPushData = MessagingPushData | CallingPushData;
|
|
25
|
+
export declare function notificationPresentation(data: CommunicationPushData, now?: number): {
|
|
26
|
+
call: boolean;
|
|
27
|
+
dismissed: boolean;
|
|
28
|
+
body: string;
|
|
29
|
+
expires: number;
|
|
30
|
+
ttl: number;
|
|
31
|
+
channel: string;
|
|
32
|
+
};
|
|
14
33
|
type SendResult = Awaited<ReturnType<MessagingNotificationOptions['send']>>;
|
|
15
34
|
/** Uses only fixed Apple/Google endpoints. Private keys never enter notification payloads. */
|
|
16
35
|
export declare function createMessagingPushSender(options: {
|
|
@@ -20,7 +39,7 @@ export declare function createMessagingPushSender(options: {
|
|
|
20
39
|
fetch?: typeof fetch;
|
|
21
40
|
}): {
|
|
22
41
|
providers: ("apns" | "fcm")[];
|
|
23
|
-
send(device: MessagingPushDevice, data:
|
|
42
|
+
send(device: MessagingPushDevice, data: CommunicationPushData): Promise<SendResult>;
|
|
24
43
|
};
|
|
25
44
|
export {};
|
|
26
45
|
//# sourceMappingURL=messaging-notification-providers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-notification-providers.d.ts","sourceRoot":"","sources":["../src/messaging-notification-providers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,mBAAmB,EAAC,iBAAiB,EAAC,4BAA4B,EAAC,MAAM,8BAA8B,CAAC;AAErH,MAAM,WAAW,yBAAyB;IAAE,MAAM,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,OAAO,CAAC,EAAC,OAAO,CAAA;CAAC;AAC1H,MAAM,WAAW,0BAA0B;IAAE,SAAS,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,CAAA;CAAC;AACnG,KAAK,UAAU,GAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAS1E,8FAA8F;AAC9F,wBAAgB,yBAAyB,CAAC,OAAO,EAAC;IAAC,KAAK,CAAC,EAAC,yBAAyB,CAAC;IAAA,MAAM,CAAC,EAAC,0BAA0B,CAAC;IAAA,KAAK,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAA;CAAC;;
|
|
1
|
+
{"version":3,"file":"messaging-notification-providers.d.ts","sourceRoot":"","sources":["../src/messaging-notification-providers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,mBAAmB,EAAC,iBAAiB,EAAC,4BAA4B,EAAC,MAAM,8BAA8B,CAAC;AAErH,MAAM,WAAW,yBAAyB;IAAE,MAAM,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,OAAO,CAAC,EAAC,OAAO,CAAA;CAAC;AAC1H,MAAM,WAAW,0BAA0B;IAAE,SAAS,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,UAAU,EAAC,MAAM,CAAA;CAAC;AACnG,MAAM,WAAW,eAAe;IAAE,KAAK,EAAC,kBAAkB,GAAC,mBAAmB,GAAC,wBAAwB,GAAC,yBAAyB,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,aAAa,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,OAAO,GAAC,OAAO,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,eAAe,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,MAAM,CAAA;CAAC;AACtQ,MAAM,MAAM,qBAAqB,GAAC,iBAAiB,GAAC,eAAe,CAAC;AACpE,wBAAgB,wBAAwB,CAAC,IAAI,EAAC,qBAAqB,EAAC,GAAG,SAAW;;;;;;;EAIjF;AACD,KAAK,UAAU,GAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAS1E,8FAA8F;AAC9F,wBAAgB,yBAAyB,CAAC,OAAO,EAAC;IAAC,KAAK,CAAC,EAAC,yBAAyB,CAAC;IAAA,MAAM,CAAC,EAAC,0BAA0B,CAAC;IAAA,KAAK,CAAC,EAAC,MAAM,CAAC;IAAA,KAAK,CAAC,EAAC,OAAO,KAAK,CAAA;CAAC;;iBAwDrI,mBAAmB,QAAM,qBAAqB,GAAE,OAAO,CAAC,UAAU,CAAC;EAKtF"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { createHash, createPrivateKey, sign } from 'node:crypto';
|
|
2
2
|
import { connect } from 'node:http2';
|
|
3
|
+
export function notificationPresentation(data, now = Date.now()) {
|
|
4
|
+
const call = data.event !== 'robono.messaging', dismissed = call && data.event.endsWith('dismissed');
|
|
5
|
+
const expires = call ? Math.floor(Date.parse(data.ring_expires_at) / 1000) : Math.floor(now / 1000) + 3600;
|
|
6
|
+
return { call, dismissed, body: call ? (data.kind === 'video' ? 'Incoming video call. Tap to answer.' : 'Incoming call. Tap to answer.') : 'Open the app to read your message.', expires: dismissed ? 0 : expires, ttl: dismissed ? 0 : Math.max(0, Math.min(3600, expires - Math.floor(now / 1000))), channel: call ? 'robono-calls' : 'robono-messages' };
|
|
7
|
+
}
|
|
3
8
|
const b64 = (data) => Buffer.from(JSON.stringify(data)).toString('base64url');
|
|
4
9
|
function jwt(header, claims, key, algorithm, p1363 = false) {
|
|
5
10
|
const body = b64(header) + '.' + b64(claims);
|
|
6
11
|
const signature = sign(algorithm, Buffer.from(body), { key: createPrivateKey(key), ...(p1363 ? { dsaEncoding: 'ieee-p1363' } : {}) });
|
|
7
12
|
return body + '.' + signature.toString('base64url');
|
|
8
13
|
}
|
|
9
|
-
function collapse(data) { return createHash('sha256').update(data.accountScope + ':' + data.conversationId).digest('hex'); }
|
|
14
|
+
function collapse(data) { return createHash('sha256').update(data.accountScope + ':' + (data.event === 'robono.messaging' ? data.conversationId : data.call_id)).digest('hex'); }
|
|
10
15
|
/** Uses only fixed Apple/Google endpoints. Private keys never enter notification payloads. */
|
|
11
16
|
export function createMessagingPushSender(options) {
|
|
12
17
|
const title = options.title?.trim() || 'New message';
|
|
@@ -51,7 +56,10 @@ export function createMessagingPushSender(options) {
|
|
|
51
56
|
return { accepted: false, invalidDevice: true, code: 'invalid_token' };
|
|
52
57
|
if (appleToken.expires <= Date.now())
|
|
53
58
|
appleToken = { value: jwt({ alg: 'ES256', kid: apple.keyId }, { iss: apple.teamId, iat: Math.floor(Date.now() / 1000) }, apple.privateKey, 'sha256', true), expires: Date.now() + 45 * 60000 };
|
|
54
|
-
const
|
|
59
|
+
const p = notificationPresentation(data);
|
|
60
|
+
if (p.call && !p.dismissed && p.ttl <= 0)
|
|
61
|
+
return { accepted: false, retryable: false, code: 'call_expired' };
|
|
62
|
+
const payload = JSON.stringify({ aps: p.dismissed ? { 'content-available': 1 } : { alert: { title: p.call ? 'Incoming call' : title, body: p.body }, sound: 'default', 'thread-id': collapse(data) }, body: data });
|
|
55
63
|
return new Promise(resolve => {
|
|
56
64
|
const session = connect(apple.sandbox ? 'https://api.sandbox.push.apple.com' : 'https://api.push.apple.com');
|
|
57
65
|
let finished = false;
|
|
@@ -59,7 +67,7 @@ export function createMessagingPushSender(options) {
|
|
|
59
67
|
return; finished = true; clearTimeout(timer); session.destroy(); resolve(result); };
|
|
60
68
|
const timer = setTimeout(() => finish({ accepted: false, retryable: true, code: 'apple_timeout' }), 15000);
|
|
61
69
|
session.on('error', () => finish({ accepted: false, retryable: true, code: 'apple_connection_failed' }));
|
|
62
|
-
const stream = session.request({ ':method': 'POST', ':path': '/3/device/' + device.token, authorization: 'bearer ' + appleToken.value, 'apns-topic': apple.bundleId, 'apns-push-type': 'alert', 'apns-priority': '10', 'apns-expiration': String(
|
|
70
|
+
const stream = session.request({ ':method': 'POST', ':path': '/3/device/' + device.token, authorization: 'bearer ' + appleToken.value, 'apns-topic': apple.bundleId, 'apns-push-type': p.dismissed ? 'background' : 'alert', 'apns-priority': p.dismissed ? '5' : '10', 'apns-expiration': String(p.expires), 'apns-collapse-id': collapse(data), 'content-type': 'application/json' });
|
|
63
71
|
let status = 0, body = '';
|
|
64
72
|
stream.setEncoding('utf8');
|
|
65
73
|
stream.on('response', headers => { status = Number(headers[':status']); });
|
|
@@ -82,10 +90,13 @@ export function createMessagingPushSender(options) {
|
|
|
82
90
|
async function sendGoogle(device, data) {
|
|
83
91
|
if (!google)
|
|
84
92
|
return { accepted: false, retryable: false, code: 'google_credentials_missing' };
|
|
93
|
+
const p = notificationPresentation(data);
|
|
94
|
+
if (p.call && !p.dismissed && p.ttl <= 0)
|
|
95
|
+
return { accepted: false, retryable: false, code: 'call_expired' };
|
|
85
96
|
const response = await request('https://fcm.googleapis.com/v1/projects/' + encodeURIComponent(google.projectId) + '/messages:send', {
|
|
86
97
|
method: 'POST', redirect: 'error', signal: AbortSignal.timeout(15000), headers: { authorization: 'Bearer ' + await googleAccess(), 'content-type': 'application/json' },
|
|
87
|
-
body: JSON.stringify({ message: { token: device.token, notification: { title
|
|
88
|
-
android: { priority: 'high', ttl: '
|
|
98
|
+
body: JSON.stringify({ message: { token: device.token, ...(!p.dismissed ? { notification: { title: p.call ? 'Incoming call' : title, body: p.body } } : {}), data,
|
|
99
|
+
android: { priority: 'high', ttl: p.ttl + 's', collapse_key: collapse(data), ...(!p.dismissed ? { notification: { tag: collapse(data), channel_id: p.channel } } : {}) } } }),
|
|
89
100
|
});
|
|
90
101
|
const result = await response.json().catch(() => null);
|
|
91
102
|
if (response.status === 401)
|