@robono/server 0.22.0 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/SBOM.spdx.json +9 -9
  3. package/dist/calling-session-handle.d.ts +13 -0
  4. package/dist/calling-session-handle.d.ts.map +1 -0
  5. package/dist/calling-session-handle.js +37 -0
  6. package/dist/calling-session-handle.js.map +1 -0
  7. package/dist/calling.d.ts +1 -0
  8. package/dist/calling.d.ts.map +1 -1
  9. package/dist/calling.js +1 -1
  10. package/dist/calling.js.map +1 -1
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +2 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/location.d.ts.map +1 -1
  16. package/dist/location.js +3 -0
  17. package/dist/location.js.map +1 -1
  18. package/dist/messaging-extras-contract.d.ts +14 -0
  19. package/dist/messaging-extras-contract.d.ts.map +1 -0
  20. package/dist/messaging-extras-contract.js +97 -0
  21. package/dist/messaging-extras-contract.js.map +1 -0
  22. package/dist/messaging-extras.d.ts +10 -0
  23. package/dist/messaging-extras.d.ts.map +1 -0
  24. package/dist/messaging-extras.js +42 -0
  25. package/dist/messaging-extras.js.map +1 -0
  26. package/dist/messaging-notification-providers.d.ts +20 -1
  27. package/dist/messaging-notification-providers.d.ts.map +1 -1
  28. package/dist/messaging-notification-providers.js +16 -5
  29. package/dist/messaging-notification-providers.js.map +1 -1
  30. package/dist/messaging-push-worker.d.ts.map +1 -1
  31. package/dist/messaging-push-worker.js +22 -2
  32. package/dist/messaging-push-worker.js.map +1 -1
  33. package/dist/messenger-calling.d.ts +14 -0
  34. package/dist/messenger-calling.d.ts.map +1 -0
  35. package/dist/messenger-calling.js +173 -0
  36. package/dist/messenger-calling.js.map +1 -0
  37. package/dist/messenger-check.d.ts.map +1 -1
  38. package/dist/messenger-check.js +3 -1
  39. package/dist/messenger-check.js.map +1 -1
  40. package/dist/messenger-connected-templates.d.ts.map +1 -1
  41. package/dist/messenger-connected-templates.js +5 -2
  42. package/dist/messenger-connected-templates.js.map +1 -1
  43. package/dist/messenger-connections.d.ts +31 -0
  44. package/dist/messenger-connections.d.ts.map +1 -0
  45. package/dist/messenger-connections.js +18 -0
  46. package/dist/messenger-connections.js.map +1 -0
  47. package/dist/messenger-customer-templates.d.ts.map +1 -1
  48. package/dist/messenger-customer-templates.js +2 -0
  49. package/dist/messenger-customer-templates.js.map +1 -1
  50. package/dist/messenger-init.d.ts.map +1 -1
  51. package/dist/messenger-init.js +9 -5
  52. package/dist/messenger-init.js.map +1 -1
  53. package/dist/messenger-install.d.ts +1 -1
  54. package/dist/messenger-install.d.ts.map +1 -1
  55. package/dist/messenger-install.js +39 -10
  56. package/dist/messenger-install.js.map +1 -1
  57. package/dist/messenger.d.ts +16 -0
  58. package/dist/messenger.d.ts.map +1 -1
  59. package/dist/messenger.js +28 -1
  60. package/dist/messenger.js.map +1 -1
  61. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ # Changelog
2
+
3
+ ## 0.23.1 — 2026-11-04
4
+
5
+ - Preserve the required 15-minute timer when forwarding chat tracking starts through the customer server.
6
+
7
+ ## 0.23.0 — unreleased
8
+
9
+ 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.
10
+
1
11
  ## 0.20.1 — 2026-11-04
2
12
 
3
13
  ## 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.22.0",
6
- "documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-0.22.0-***",
5
+ "name": "@robono/server@0.23.1",
6
+ "documentNamespace": "http://spdx.org/spdxdocs/@robono%2fserver-0.23.1-***",
7
7
  "creationInfo": {
8
- "created": "2026-11-04T07:21:06.992Z",
8
+ "created": "2026-11-04T12:10:55.581Z",
9
9
  "creators": [
10
10
  "Tool: npm/cli-11.6.2"
11
11
  ]
12
12
  },
13
13
  "documentDescribes": [
14
- "SPDXRef-Package-robono.server-0.22.0"
14
+ "SPDXRef-Package-robono.server-0.23.1"
15
15
  ],
16
16
  "packages": [
17
17
  {
18
18
  "name": "@robono/server",
19
- "SPDXID": "SPDXRef-Package-robono.server-0.22.0",
20
- "versionInfo": "0.22.0",
19
+ "SPDXID": "SPDXRef-Package-robono.server-0.23.1",
20
+ "versionInfo": "0.23.1",
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.22.0"
32
+ "referenceLocator": "pkg:npm/%40robono/server@0.23.1"
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.22.0",
178
+ "relatedSpdxElement": "SPDXRef-Package-robono.server-0.23.1",
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.22.0",
183
+ "relatedSpdxElement": "SPDXRef-Package-robono.server-0.23.1",
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 {
@@ -1 +1 @@
1
- {"version":3,"file":"calling.d.ts","sourceRoot":"","sources":["../src/calling.ts"],"names":[],"mappings":"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"}
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) {
@@ -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
@@ -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"}
@@ -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,uBAwE/B"}
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 }))
@@ -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;;;;;;;EAuC5G"}
@@ -0,0 +1,97 @@
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') {
78
+ if (v.durationMinutes !== 15)
79
+ throw Error('Chat tracking lasts 15 minutes.');
80
+ input.durationMinutes = 15;
81
+ }
82
+ if (operation === 'tracking-stop' && v.sessionId === undefined) {
83
+ if (!identifier(v.requestId))
84
+ throw Error('Choose a sharing request.');
85
+ input.requestId = v.requestId;
86
+ }
87
+ if (['tracking-start', 'tracking-update'].includes(operation) || operation === 'weather-send' && v.position !== undefined) {
88
+ const p = v.position;
89
+ 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)
90
+ throw Error('A recent accurate location is required.');
91
+ if (p.speedMps !== undefined && (typeof p.speedMps !== 'number' || !Number.isFinite(p.speedMps) || p.speedMps < 0 || p.speedMps > 400))
92
+ throw Error('Invalid speed.');
93
+ input.position = { latitude: p.latitude, longitude: p.longitude, accuracyMeters: p.accuracyMeters, capturedAt: p.capturedAt, ...(p.speedMps !== undefined ? { speedMps: p.speedMps } : {}) };
94
+ }
95
+ return { operation, input };
96
+ }
97
+ //# 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: MessagingPushData): Promise<SendResult>;
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;;iBAsDrI,mBAAmB,QAAM,iBAAiB,GAAE,OAAO,CAAC,UAAU,CAAC;EAKlF"}
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 payload = JSON.stringify({ aps: { alert: { title, body: 'Open the app to read your message.' }, sound: 'default', 'thread-id': collapse(data) }, body: data });
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(Math.floor(Date.now() / 1000) + 3600), 'apns-collapse-id': collapse(data), 'content-type': 'application/json' });
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, body: 'Open the app to read your message.' }, data,
88
- android: { priority: 'high', ttl: '3600s', collapse_key: collapse(data), notification: { tag: collapse(data), channel_id: 'robono-messages' } } } }),
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)