@whitewall/blip-sdk 0.0.134 → 0.0.136

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 (161) hide show
  1. package/dist/cjs/client.js +33 -10
  2. package/dist/cjs/client.js.map +1 -1
  3. package/dist/cjs/namespaces/account.js +74 -52
  4. package/dist/cjs/namespaces/account.js.map +1 -1
  5. package/dist/cjs/namespaces/desk.js +17 -1
  6. package/dist/cjs/namespaces/desk.js.map +1 -1
  7. package/dist/cjs/namespaces/namespace.js +10 -10
  8. package/dist/cjs/namespaces/namespace.js.map +1 -1
  9. package/dist/cjs/namespaces/plugins.js +15 -3
  10. package/dist/cjs/namespaces/plugins.js.map +1 -1
  11. package/dist/cjs/namespaces/portal.js +131 -6
  12. package/dist/cjs/namespaces/portal.js.map +1 -1
  13. package/dist/cjs/namespaces/whatsapp.js +2 -3
  14. package/dist/cjs/namespaces/whatsapp.js.map +1 -1
  15. package/dist/cjs/sender/bliperror.js +14 -17
  16. package/dist/cjs/sender/bliperror.js.map +1 -1
  17. package/dist/cjs/sender/enveloperesolver.js +85 -6
  18. package/dist/cjs/sender/enveloperesolver.js.map +1 -1
  19. package/dist/cjs/sender/gateway/customgatewaysender.js +16 -9
  20. package/dist/cjs/sender/gateway/customgatewaysender.js.map +1 -1
  21. package/dist/cjs/sender/http/httpsender.js +29 -31
  22. package/dist/cjs/sender/http/httpsender.js.map +1 -1
  23. package/dist/cjs/sender/plugin/communication.js +9 -2
  24. package/dist/cjs/sender/plugin/communication.js.map +1 -1
  25. package/dist/cjs/sender/plugin/pluginsender.js +11 -59
  26. package/dist/cjs/sender/plugin/pluginsender.js.map +1 -1
  27. package/dist/cjs/sender/security.js +3 -0
  28. package/dist/cjs/sender/security.js.map +1 -0
  29. package/dist/cjs/sender/sender.js +93 -0
  30. package/dist/cjs/sender/sender.js.map +1 -1
  31. package/dist/cjs/sender/{sessionegotiator.js → sessionnegotiator.js} +27 -10
  32. package/dist/cjs/sender/sessionnegotiator.js.map +1 -0
  33. package/dist/cjs/sender/tcp/tcpsender.js +36 -45
  34. package/dist/cjs/sender/tcp/tcpsender.js.map +1 -1
  35. package/dist/cjs/sender/websocket/websocketsender.js +16 -24
  36. package/dist/cjs/sender/websocket/websocketsender.js.map +1 -1
  37. package/dist/cjs/types/command.js.map +1 -1
  38. package/dist/cjs/types/desk.js.map +1 -1
  39. package/dist/cjs/types/message.js +3 -1
  40. package/dist/cjs/types/message.js.map +1 -1
  41. package/dist/cjs/types/node.js +12 -9
  42. package/dist/cjs/types/node.js.map +1 -1
  43. package/dist/cjs/types/notification.js +3 -0
  44. package/dist/cjs/types/notification.js.map +1 -1
  45. package/dist/cjs/types/reason.js +20 -0
  46. package/dist/cjs/types/reason.js.map +1 -0
  47. package/dist/cjs/types/session.js.map +1 -1
  48. package/dist/cjs/utils/uri.js +22 -36
  49. package/dist/cjs/utils/uri.js.map +1 -1
  50. package/dist/esm/client.js +33 -10
  51. package/dist/esm/client.js.map +1 -1
  52. package/dist/esm/namespaces/account.js +74 -52
  53. package/dist/esm/namespaces/account.js.map +1 -1
  54. package/dist/esm/namespaces/desk.js +17 -1
  55. package/dist/esm/namespaces/desk.js.map +1 -1
  56. package/dist/esm/namespaces/namespace.js +11 -11
  57. package/dist/esm/namespaces/namespace.js.map +1 -1
  58. package/dist/esm/namespaces/plugins.js +15 -3
  59. package/dist/esm/namespaces/plugins.js.map +1 -1
  60. package/dist/esm/namespaces/portal.js +131 -6
  61. package/dist/esm/namespaces/portal.js.map +1 -1
  62. package/dist/esm/namespaces/whatsapp.js +2 -3
  63. package/dist/esm/namespaces/whatsapp.js.map +1 -1
  64. package/dist/esm/sender/bliperror.js +13 -16
  65. package/dist/esm/sender/bliperror.js.map +1 -1
  66. package/dist/esm/sender/enveloperesolver.js +85 -6
  67. package/dist/esm/sender/enveloperesolver.js.map +1 -1
  68. package/dist/esm/sender/gateway/customgatewaysender.js +16 -9
  69. package/dist/esm/sender/gateway/customgatewaysender.js.map +1 -1
  70. package/dist/esm/sender/http/httpsender.js +29 -31
  71. package/dist/esm/sender/http/httpsender.js.map +1 -1
  72. package/dist/esm/sender/plugin/communication.js +9 -2
  73. package/dist/esm/sender/plugin/communication.js.map +1 -1
  74. package/dist/esm/sender/plugin/pluginsender.js +11 -59
  75. package/dist/esm/sender/plugin/pluginsender.js.map +1 -1
  76. package/dist/esm/sender/security.js +2 -0
  77. package/dist/esm/sender/security.js.map +1 -0
  78. package/dist/esm/sender/sender.js +90 -1
  79. package/dist/esm/sender/sender.js.map +1 -1
  80. package/dist/esm/sender/{sessionegotiator.js → sessionnegotiator.js} +27 -10
  81. package/dist/esm/sender/sessionnegotiator.js.map +1 -0
  82. package/dist/esm/sender/tcp/tcpsender.js +35 -44
  83. package/dist/esm/sender/tcp/tcpsender.js.map +1 -1
  84. package/dist/esm/sender/websocket/websocketsender.js +15 -23
  85. package/dist/esm/sender/websocket/websocketsender.js.map +1 -1
  86. package/dist/esm/types/command.js.map +1 -1
  87. package/dist/esm/types/desk.js.map +1 -1
  88. package/dist/esm/types/message.js +1 -0
  89. package/dist/esm/types/message.js.map +1 -1
  90. package/dist/esm/types/node.js +12 -9
  91. package/dist/esm/types/node.js.map +1 -1
  92. package/dist/esm/types/notification.js +1 -1
  93. package/dist/esm/types/notification.js.map +1 -1
  94. package/dist/esm/types/reason.js +16 -0
  95. package/dist/esm/types/reason.js.map +1 -0
  96. package/dist/esm/types/session.js.map +1 -1
  97. package/dist/esm/utils/uri.js +20 -34
  98. package/dist/esm/utils/uri.js.map +1 -1
  99. package/dist/types/client.d.ts +8 -6
  100. package/dist/types/client.d.ts.map +1 -1
  101. package/dist/types/namespaces/account.d.ts +8 -8
  102. package/dist/types/namespaces/account.d.ts.map +1 -1
  103. package/dist/types/namespaces/desk.d.ts +6 -0
  104. package/dist/types/namespaces/desk.d.ts.map +1 -1
  105. package/dist/types/namespaces/namespace.d.ts +6 -9
  106. package/dist/types/namespaces/namespace.d.ts.map +1 -1
  107. package/dist/types/namespaces/plugins.d.ts +6 -2
  108. package/dist/types/namespaces/plugins.d.ts.map +1 -1
  109. package/dist/types/namespaces/portal.d.ts +15 -4
  110. package/dist/types/namespaces/portal.d.ts.map +1 -1
  111. package/dist/types/namespaces/whatsapp.d.ts.map +1 -1
  112. package/dist/types/sender/bliperror.d.ts +6 -9
  113. package/dist/types/sender/bliperror.d.ts.map +1 -1
  114. package/dist/types/sender/enveloperesolver.d.ts +14 -1
  115. package/dist/types/sender/enveloperesolver.d.ts.map +1 -1
  116. package/dist/types/sender/gateway/customgatewaysender.d.ts +8 -4
  117. package/dist/types/sender/gateway/customgatewaysender.d.ts.map +1 -1
  118. package/dist/types/sender/http/httpsender.d.ts +10 -6
  119. package/dist/types/sender/http/httpsender.d.ts.map +1 -1
  120. package/dist/types/sender/plugin/communication.d.ts +2 -1
  121. package/dist/types/sender/plugin/communication.d.ts.map +1 -1
  122. package/dist/types/sender/plugin/pluginsender.d.ts +4 -8
  123. package/dist/types/sender/plugin/pluginsender.d.ts.map +1 -1
  124. package/dist/types/sender/security.d.ts +22 -0
  125. package/dist/types/sender/security.d.ts.map +1 -0
  126. package/dist/types/sender/sender.d.ts +32 -4
  127. package/dist/types/sender/sender.d.ts.map +1 -1
  128. package/dist/types/sender/{sessionegotiator.d.ts → sessionnegotiator.d.ts} +11 -16
  129. package/dist/types/sender/sessionnegotiator.d.ts.map +1 -0
  130. package/dist/types/sender/tcp/tcpsender.d.ts +16 -14
  131. package/dist/types/sender/tcp/tcpsender.d.ts.map +1 -1
  132. package/dist/types/sender/websocket/websocketsender.d.ts +11 -14
  133. package/dist/types/sender/websocket/websocketsender.d.ts.map +1 -1
  134. package/dist/types/types/account.d.ts +22 -0
  135. package/dist/types/types/account.d.ts.map +1 -1
  136. package/dist/types/types/billing.d.ts +1 -1
  137. package/dist/types/types/billing.d.ts.map +1 -1
  138. package/dist/types/types/command.d.ts +16 -12
  139. package/dist/types/types/command.d.ts.map +1 -1
  140. package/dist/types/types/commons.d.ts +1 -0
  141. package/dist/types/types/commons.d.ts.map +1 -1
  142. package/dist/types/types/desk.d.ts +1 -1
  143. package/dist/types/types/desk.d.ts.map +1 -1
  144. package/dist/types/types/message.d.ts +1 -0
  145. package/dist/types/types/message.d.ts.map +1 -1
  146. package/dist/types/types/node.d.ts +8 -4
  147. package/dist/types/types/node.d.ts.map +1 -1
  148. package/dist/types/types/notification.d.ts +3 -4
  149. package/dist/types/types/notification.d.ts.map +1 -1
  150. package/dist/types/types/portal.d.ts +27 -0
  151. package/dist/types/types/portal.d.ts.map +1 -1
  152. package/dist/types/types/reason.d.ts +12 -0
  153. package/dist/types/types/reason.d.ts.map +1 -0
  154. package/dist/types/types/session.d.ts +4 -5
  155. package/dist/types/types/session.d.ts.map +1 -1
  156. package/dist/types/utils/uri.d.ts +4 -3
  157. package/dist/types/utils/uri.d.ts.map +1 -1
  158. package/package.json +1 -1
  159. package/dist/cjs/sender/sessionegotiator.js.map +0 -1
  160. package/dist/esm/sender/sessionegotiator.js.map +0 -1
  161. package/dist/types/sender/sessionegotiator.d.ts.map +0 -1
@@ -1,6 +1,12 @@
1
- import { isCommand } from "../types/command.js";
1
+ import { Node, isCommand, isMessage, isNotification, } from "../types/index.js";
2
+ import { ReasonCodes } from "../types/reason.js";
2
3
  export class EnvelopeResolver {
3
4
  sender;
5
+ listeners = {
6
+ message: [],
7
+ command: [],
8
+ notification: [],
9
+ };
4
10
  waitingEnvelopeResponseResolvers = {};
5
11
  constructor(sender) {
6
12
  this.sender = sender;
@@ -8,14 +14,14 @@ export class EnvelopeResolver {
8
14
  async resolve(envelope) {
9
15
  const deferred = this.waitingEnvelopeResponseResolvers[envelope.id];
10
16
  if (deferred) {
17
+ delete this.waitingEnvelopeResponseResolvers[envelope.id];
11
18
  deferred(envelope);
12
19
  }
13
- else {
14
- // This is a rough way to handle commands to the channel
15
- // But it works for most use cases
16
- if (isCommand(envelope) && envelope.method === 'get' && envelope.uri === '/ping') {
20
+ else if (isCommand(envelope)) {
21
+ if (envelope.method === 'get' && envelope.uri === '/ping') {
17
22
  await this.sender.sendCommandResponse({
18
23
  id: envelope.id,
24
+ to: envelope.from,
19
25
  method: 'get',
20
26
  type: 'application/vnd.lime.ping+json',
21
27
  status: 'success',
@@ -23,14 +29,87 @@ export class EnvelopeResolver {
23
29
  });
24
30
  }
25
31
  else {
26
- throw new Error(`Unexpected envelope received: ${JSON.stringify(envelope)}`);
32
+ try {
33
+ const response = await this.emit('command', envelope);
34
+ const type = typeof response === 'string' ? 'text/plain' : response ? 'application/json' : undefined;
35
+ const resource = typeof response === 'string' || response ? response : undefined;
36
+ await this.sender.sendCommandResponse({
37
+ id: envelope.id,
38
+ method: envelope.method,
39
+ to: envelope.from,
40
+ status: 'success',
41
+ type,
42
+ resource,
43
+ });
44
+ }
45
+ catch (err) {
46
+ await this.sender.sendCommandResponse({
47
+ id: envelope.id,
48
+ method: envelope.method,
49
+ to: envelope.from,
50
+ status: 'failure',
51
+ reason: {
52
+ code: ReasonCodes.GeneralError,
53
+ description: err instanceof Error ? err.message : String(err),
54
+ },
55
+ });
56
+ }
27
57
  }
28
58
  }
59
+ else if (isMessage(envelope)) {
60
+ const shouldNotify = !envelope.to || this.sender.session?.localNode.toIdentity() === Node.from(envelope.to).toIdentity();
61
+ const notify = async (notification) => {
62
+ if (shouldNotify) {
63
+ await this.sender.sendNotification({
64
+ ...notification,
65
+ id: envelope.id,
66
+ to: notification.event === 'failed' ? envelope.from : (envelope.pp ?? envelope.from),
67
+ });
68
+ }
69
+ };
70
+ await notify({ event: 'received' });
71
+ try {
72
+ await this.emit('message', envelope);
73
+ await notify({ event: 'consumed' });
74
+ }
75
+ catch (err) {
76
+ await notify({
77
+ event: 'failed',
78
+ reason: {
79
+ code: ReasonCodes.GeneralError,
80
+ description: err instanceof Error ? err.message : String(err),
81
+ },
82
+ });
83
+ }
84
+ }
85
+ else if (isNotification(envelope)) {
86
+ await this.emit('notification', envelope);
87
+ }
29
88
  }
30
89
  createEnvelopeResponsePromise(id) {
31
90
  return new Promise((resolve) => {
32
91
  this.waitingEnvelopeResponseResolvers[id] = resolve;
33
92
  });
34
93
  }
94
+ addListener(ev, listener) {
95
+ if (this.listeners[ev].some((l) => l.callback === listener.callback)) {
96
+ throw new Error(`Listener for '${ev}' already exists.`);
97
+ }
98
+ this.listeners[ev].push(listener);
99
+ }
100
+ removeListener(ev, callback) {
101
+ this.listeners[ev] = this.listeners[ev].filter((l) => l.callback !== callback);
102
+ }
103
+ async emit(ev, ...args) {
104
+ for (const listener of this.listeners[ev]) {
105
+ if (!listener.predicate || listener.predicate(...args)) {
106
+ const result = await listener.callback(...args);
107
+ if (result !== undefined) {
108
+ return result;
109
+ }
110
+ }
111
+ }
112
+ return undefined;
113
+ }
35
114
  }
36
115
  //# sourceMappingURL=enveloperesolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enveloperesolver.js","sourceRoot":"","sources":["../../../src/sender/enveloperesolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAIrE,MAAM,OAAO,gBAAgB;IAGI;IAFZ,gCAAgC,GAAiD,EAAE,CAAA;IAEpG,YAA6B,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,QAAkB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACnE,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;aAAM,CAAC;YACJ,wDAAwD;YACxD,kCAAkC;YAClC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC/E,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;oBAClC,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,gCAAgC;oBACtC,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,EAAE;iBAC+B,CAAC,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YAChF,CAAC;QACL,CAAC;IACL,CAAC;IAEM,6BAA6B,CAAC,EAAU;QAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAA;QACvD,CAAC,CAAC,CAAA;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"enveloperesolver.js","sourceRoot":"","sources":["../../../src/sender/enveloperesolver.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,20 @@
1
- import { Node } from "../../types/index.js";
2
- export class CustomGatewayHttpSender {
1
+ import { ConnectionSender } from "../sender.js";
2
+ export class CustomGatewayHttpSender extends ConnectionSender {
3
3
  baseurl;
4
4
  token;
5
- constructor(botIdentityOrIdentifier, password, tenantId) {
6
- const botIdentity = Node.isValid(botIdentityOrIdentifier)
7
- ? botIdentityOrIdentifier
8
- : `${botIdentityOrIdentifier}@msging.net`;
9
- this.token = btoa(`${botIdentity}:${password}`);
10
- const prefix = tenantId ? `${tenantId}.` : '';
11
- this.baseurl = `https://${prefix}custom.gw.msging.net`;
5
+ constructor(options) {
6
+ super(options);
7
+ if (options.authentication.scheme === 'plain') {
8
+ this.token = CustomGatewayHttpSender.createToken(options.node, btoa(options.authentication.password));
9
+ }
10
+ else if (options.authentication.scheme === 'token') {
11
+ this.token = options.authentication.token;
12
+ }
13
+ else {
14
+ throw new Error('CustomGatewayHttpSender only supports plain or token authentication');
15
+ }
16
+ const prefix = options.tenantId ? `${options.tenantId}.` : '';
17
+ this.baseurl = `https://${prefix}custom.gw.${this.domain}`;
12
18
  }
13
19
  async sendMessage(message) {
14
20
  const response = await fetch(`${this.baseurl}/messages`, {
@@ -26,5 +32,6 @@ export class CustomGatewayHttpSender {
26
32
  sendCommand() {
27
33
  throw new Error('Custom gateway clients cannot send commands');
28
34
  }
35
+ static login = (ConnectionSender.login);
29
36
  }
30
37
  //# sourceMappingURL=customgatewaysender.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"customgatewaysender.js","sourceRoot":"","sources":["../../../../src/sender/gateway/customgatewaysender.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAGnF,MAAM,OAAO,uBAAuB;IACf,OAAO,CAAQ;IACf,KAAK,CAAQ;IAE9B,YAAY,uBAA+B,EAAE,QAAgB,EAAE,QAAiB;QAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC;YACrD,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,GAAG,uBAAuB,aAAa,CAAA;QAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC,CAAA;QAE/C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7C,IAAI,CAAC,OAAO,GAAG,WAAW,MAAM,sBAAsB,CAAA;IAC1D,CAAC;IAEM,KAAK,CAAC,WAAW,CAAyC,OAAsB;QACnF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAChC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACrE,CAAC;IACL,CAAC;IAED,WAAW;QACP,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAClE,CAAC;CACJ"}
1
+ {"version":3,"file":"customgatewaysender.js","sourceRoot":"","sources":["../../../../src/sender/gateway/customgatewaysender.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAiD,MAAM,cAAc,CAAA;AAE9F,MAAM,OAAO,uBAAwB,SAAQ,gBAAgB;IACxC,OAAO,CAAQ;IACf,KAAK,CAAQ;IAE9B,YAAY,OAA8D;QACtE,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,GAAG,uBAAuB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAA;QACzG,CAAC;aAAM,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACnD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAA;QAC7C,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;QAC1F,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7D,IAAI,CAAC,OAAO,GAAG,WAAW,MAAM,aAAa,IAAI,CAAC,MAAM,EAAE,CAAA;IAC9D,CAAC;IAEM,KAAK,CAAC,WAAW,CAAyC,OAAsB;QACnF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAChC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;QACrE,CAAC;IACL,CAAC;IAED,WAAW;QACP,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAClE,CAAC;IAEM,MAAM,CAAC,KAAK,GAAG,CAAA,gBAAgB,CAAC,KAA8B,CAAA,CAAA"}
@@ -1,26 +1,28 @@
1
- import { Node, } from "../../types/index.js";
2
1
  import { BlipError } from "../bliperror.js";
2
+ import { ConnectionSender } from "../sender.js";
3
3
  import { EnvelopeThrottler } from "../throttler.js";
4
- export class HttpSender {
5
- token;
4
+ export class HttpSender extends ConnectionSender {
6
5
  baseurl;
6
+ token;
7
7
  throttler = new EnvelopeThrottler();
8
- constructor(token, tenantId) {
9
- this.token = token.startsWith('Key ') ? token.slice(4) : token;
10
- const prefix = tenantId ? `${tenantId}.` : '';
11
- this.baseurl = `https://${prefix}http.msging.net`;
8
+ constructor(options) {
9
+ super(options);
10
+ const prefix = options.tenantId ? `${options.tenantId}.` : '';
11
+ this.baseurl = `https://${prefix}http.${this.domain}`;
12
+ if (options.authentication.scheme === 'key') {
13
+ this.token = HttpSender.createToken(options.node, options.authentication.key);
14
+ }
15
+ else if (options.authentication.scheme === 'token') {
16
+ this.token = options.authentication.token;
17
+ }
18
+ else {
19
+ throw new Error('HttpSender only supports key or token authentication');
20
+ }
12
21
  }
13
22
  sendMessage(message) {
14
23
  return this.withFetchRetryPolicy(async () => {
15
24
  await this.throttler.throttle('message');
16
- const response = await fetch(`${this.baseurl}/messages`, {
17
- method: 'POST',
18
- headers: {
19
- 'Content-Type': 'application/json',
20
- Authorization: `Key ${this.token}`,
21
- },
22
- body: JSON.stringify(message),
23
- });
25
+ const response = await this.fetch('messages', JSON.stringify(message));
24
26
  if (!response.ok) {
25
27
  throw new Error(`Failed to send message: ${response.statusText} (${response.status})`);
26
28
  }
@@ -29,14 +31,7 @@ export class HttpSender {
29
31
  sendCommand(command) {
30
32
  return this.withFetchRetryPolicy(async () => {
31
33
  await this.throttler.throttle('command');
32
- const response = await fetch(`${this.baseurl}/commands`, {
33
- method: 'POST',
34
- headers: {
35
- 'Content-Type': 'application/json',
36
- Authorization: `Key ${this.token}`,
37
- },
38
- body: JSON.stringify(command),
39
- });
34
+ const response = await this.fetch('commands', JSON.stringify(command));
40
35
  if (!response.ok) {
41
36
  throw new Error(`Failed to send command: ${response.statusText} (${response.status})`);
42
37
  }
@@ -48,16 +43,20 @@ export class HttpSender {
48
43
  return result.resource;
49
44
  }
50
45
  else {
51
- throw new Error(`Unexpected response status: ${result.status}`);
46
+ throw new Error(`Unexpected response for command '${command.uri}': ${JSON.stringify(response)}`);
52
47
  }
53
48
  });
54
49
  }
55
- static login(botIdentityOrIdentifier, accessKey, tenantId) {
56
- const botIdentity = Node.isValid(botIdentityOrIdentifier)
57
- ? botIdentityOrIdentifier
58
- : `${botIdentityOrIdentifier}@msging.net`;
59
- const token = btoa(`${botIdentity}:${atob(accessKey)}`);
60
- return new HttpSender(token, tenantId);
50
+ static login = (ConnectionSender.login);
51
+ async fetch(path, body) {
52
+ return await fetch(`${this.baseurl}/${path}`, {
53
+ method: 'POST',
54
+ headers: {
55
+ 'Content-Type': 'application/json',
56
+ Authorization: `Key ${this.token}`,
57
+ },
58
+ body,
59
+ });
61
60
  }
62
61
  async withFetchRetryPolicy(fn, retries = 5) {
63
62
  try {
@@ -69,7 +68,6 @@ export class HttpSender {
69
68
  (err.message.endsWith('(429)') ||
70
69
  err.message.endsWith('(504)') ||
71
70
  err.message.endsWith('(502)') ||
72
- // General application error code
73
71
  (err instanceof BlipError && BlipError.retryableBlipErrors.includes(err.code)) ||
74
72
  // Probably cloudflare trying to mitigate a DDoS attack
75
73
  (err.cause instanceof Error && err.cause?.name === 'ConnectTimeoutError') ||
@@ -1 +1 @@
1
- {"version":3,"file":"httpsender.js","sourceRoot":"","sources":["../../../../src/sender/http/httpsender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpsender.js","sourceRoot":"","sources":["../../../../src/sender/http/httpsender.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,33 @@
1
1
  import { randomId } from "../../utils/random.js";
2
2
  export const startChannel = () => {
3
3
  const caller = window.name ?? randomId();
4
+ let isDesk = false;
4
5
  const waitingMessages = {};
5
- const messageHandler = ({ data }) => {
6
+ const messageHandler = ({ data, origin }) => {
7
+ if (origin.endsWith('.desk.blip.ai')) {
8
+ isDesk = true;
9
+ }
6
10
  const deferred = waitingMessages[data?.trackingProperties?.id];
7
11
  if (deferred) {
8
12
  if (data.message?.caller === caller) {
9
13
  // This is a echo message, ignore it
10
14
  return;
11
15
  }
16
+ delete waitingMessages[data.trackingProperties.id];
12
17
  if (data.error) {
13
18
  deferred.reject(JSON.parse(data.error));
14
19
  }
15
20
  else {
16
21
  deferred.resolve(data.response);
17
22
  }
18
- delete waitingMessages[data.trackingProperties.id];
19
23
  }
20
24
  };
21
25
  window.addEventListener('message', messageHandler);
22
26
  let isDestroyed = false;
23
27
  return {
28
+ get isDesk() {
29
+ return isDesk;
30
+ },
24
31
  post: (action, content, options) => {
25
32
  if (isDestroyed) {
26
33
  throw new Error('Channel is destroyed');
@@ -1 +1 @@
1
- {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../../../src/sender/plugin/communication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAA;IAExC,MAAM,eAAe,GAA8E,EAAE,CAAA;IACrG,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,EAAgB,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAA;QAC9D,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;gBAClC,oCAAoC;gBACpC,OAAM;YACV,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACnC,CAAC;YAED,OAAO,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;QACtD,CAAC;IACL,CAAC,CAAA;IACD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAElD,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,OAAO;QACH,IAAI,EAAE,CAAI,MAAc,EAAE,OAAgB,EAAE,OAAoC,EAAE,EAAE;YAChF,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAC3C,CAAC;YAED,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;YAErB,IAAI,OAAyB,CAAA;YAC7B,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;gBACzB,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACJ,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;gBACxC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAA;gBAC5E,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;YAC9B,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,WAAW,CACrB;gBACI,OAAO,EAAE;oBACL,MAAM,EAAE,aAAa,MAAM,EAAE;oBAC7B,OAAO;oBACP,MAAM;iBACT;gBACD,kBAAkB,EAAE;oBAChB,EAAE;iBACL;aACJ,EACD,GAAG,CACN,CAAA;YAED,OAAO,OAAqB,CAAA;QAChC,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;YACrD,WAAW,GAAG,IAAI,CAAA;QACtB,CAAC;KACJ,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"communication.js","sourceRoot":"","sources":["../../../../src/sender/plugin/communication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAA;IACxC,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,MAAM,eAAe,GAA8E,EAAE,CAAA;IACrG,MAAM,cAAc,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAgB,EAAE,EAAE;QACtD,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,IAAI,CAAA;QACjB,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAA;QAC9D,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;gBAClC,oCAAoC;gBACpC,OAAM;YACV,CAAC;YAED,OAAO,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;YAClD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACnC,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IACD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAElD,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,OAAO;QACH,IAAI,MAAM;YACN,OAAO,MAAM,CAAA;QACjB,CAAC;QACD,IAAI,EAAE,CAAI,MAAc,EAAE,OAAgB,EAAE,OAA0D,EAAE,EAAE;YACtG,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YAC3C,CAAC;YAED,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;YAErB,IAAI,OAAyB,CAAA;YAC7B,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;gBACzB,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACJ,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;gBACxC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAA;gBAC5E,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;YAC9B,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,WAAW,CACrB;gBACI,OAAO,EAAE;oBACL,MAAM,EAAE,aAAa,MAAM,EAAE;oBAC7B,OAAO;oBACP,MAAM;iBACT;gBACD,kBAAkB,EAAE;oBAChB,EAAE;iBACL;aACJ,EACD,GAAG,CACN,CAAA;YAED,OAAO,OAAqB,CAAA;QAChC,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;YACrD,WAAW,GAAG,IAAI,CAAA;QACtB,CAAC;KACJ,CAAA;AACL,CAAC,CAAA"}
@@ -1,10 +1,9 @@
1
1
  import { BlipError, Node, } from "../../index.js";
2
+ import { isReason } from "../../types/reason.js";
2
3
  import { startChannel } from "./communication.js";
3
4
  export class PluginSender {
4
- blipDesk;
5
5
  channel;
6
- constructor(blipDesk) {
7
- this.blipDesk = blipDesk;
6
+ constructor() {
8
7
  this.channel = startChannel();
9
8
  }
10
9
  async sendMessage(message) {
@@ -21,21 +20,17 @@ export class PluginSender {
21
20
  });
22
21
  }
23
22
  async sendCommand(command) {
24
- const toDomain = command.to ? Node.from(command.to).domain : undefined;
25
- // Desk doesn't handle this automatically like portal does
26
- const fixedCommand = this.getRealm() === 'desk' && toDomain?.endsWith('msging.net')
27
- ? await this.fixBlipDeskMsgingCommand(command)
28
- : command;
23
+ const destination = this.getRealm() === 'desk'
24
+ ? undefined
25
+ : command.to && Node.from(command.to).domain?.endsWith('msging.net')
26
+ ? 'MessagingHubService'
27
+ : 'BlipService';
29
28
  try {
30
- return await this.channel.post('sendCommand', {
31
- command: fixedCommand,
32
- destination: toDomain?.endsWith('msging.net') ? 'MessagingHubService' : 'BlipService',
33
- });
29
+ return await this.channel.post('sendCommand', { command, destination });
34
30
  }
35
31
  catch (err) {
36
- if (err && typeof err === 'object' && 'code' in err && 'description' in err) {
37
- const knownerror = err;
38
- throw new BlipError(command.uri, knownerror.code, knownerror.description);
32
+ if (isReason(err)) {
33
+ throw new BlipError(command.uri, err);
39
34
  }
40
35
  else if (BlipError.isFailedCommandResponse(err)) {
41
36
  throw BlipError.commandResponseToBlipError(command.uri, err);
@@ -58,50 +53,7 @@ export class PluginSender {
58
53
  return blipClient.sender.getRealm();
59
54
  }
60
55
  getRealm() {
61
- return this.blipDesk ? 'desk' : 'portal';
62
- }
63
- cachedAccountPromise = undefined;
64
- async fixBlipDeskMsgingCommand(command) {
65
- if (!this.cachedAccountPromise) {
66
- this.cachedAccountPromise = this.sendCommand({
67
- id: Date.now().toString(),
68
- uri: '/account',
69
- method: 'get',
70
- });
71
- }
72
- const accountResponse = await this.cachedAccountPromise;
73
- if (typeof accountResponse !== 'object' ||
74
- !accountResponse ||
75
- !('identity' in accountResponse) ||
76
- typeof accountResponse.identity !== 'string' ||
77
- !Node.isValid(accountResponse?.identity)) {
78
- throw new Error('Account identity not found or invalid');
79
- }
80
- if (command.uri.startsWith('lime://')) {
81
- if (command.uri.match(/^lime:\/\/.*?@msging.net\//)) {
82
- // the command is already resolved to delegate to the bot
83
- return command;
84
- }
85
- if (!this.blipDesk?.overrideBotIdentity) {
86
- throw new Error(`Sent a command to msging.net without specified bot sender: ${command.uri}`);
87
- }
88
- // the command should be double delegated, firstly to the bot and then to the other destination
89
- return {
90
- ...command,
91
- from: this.blipDesk.overrideBotIdentity,
92
- pp: Node.from(accountResponse.identity).withInstance('!desk'),
93
- };
94
- }
95
- else {
96
- if (!this.blipDesk?.overrideBotIdentity) {
97
- throw new Error(`Sent a command to msging.net without specified bot sender: ${command.uri}`);
98
- }
99
- // desk always expect that command uris starts with lime://
100
- return {
101
- ...command,
102
- uri: `lime://${this.blipDesk.overrideBotIdentity}${command.uri}`,
103
- };
104
- }
56
+ return this.channel.isDesk ? 'desk' : 'portal';
105
57
  }
106
58
  }
107
59
  //# sourceMappingURL=pluginsender.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pluginsender.js","sourceRoot":"","sources":["../../../../src/sender/plugin/pluginsender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pluginsender.js","sourceRoot":"","sources":["../../../../src/sender/plugin/pluginsender.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EAKT,IAAI,GAEP,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,OAAO,YAAY;IACL,OAAO,CAAA;IAEvB;QACI,IAAI,CAAC,OAAO,GAAG,YAAY,EAAE,CAAA;IACjC,CAAC;IAEM,KAAK,CAAC,WAAW,CAA4B,OAAsB;QACtE,MAAM,IAAI,CAAC,WAAW,CAAC;YACnB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,EAAE,EAAE,iCAAiC;YACrC,GAAG,EAAE,YAAY;YACjB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oCAAoC;YAC1C,QAAQ,EAAE;gBACN,OAAO;gBACP,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACjC;SACJ,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAgC;QACrD,MAAM,WAAW,GACb,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM;YACtB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC;gBAClE,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,aAAa,CAAA;QAEzB,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YACzC,CAAC;iBAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAChE,CAAC;YAED,MAAM,GAAG,CAAA;QACb,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAsB;QACtC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,YAAY,YAAY,CAAA;QAChE,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAA;IAC5B,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,UAAsB;QACzC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,YAAY,YAAY,CAAA;QAChE,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;IACvC,CAAC;IAEO,QAAQ;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;IAClD,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/sender/security.ts"],"names":[],"mappings":""}
@@ -1,2 +1,91 @@
1
- export {};
1
+ import { Node, } from "../types/index.js";
2
+ import { EnvelopeResolver } from "./enveloperesolver.js";
3
+ export class ConnectionSender {
4
+ _domain;
5
+ constructor(options) {
6
+ this._domain = Node.from(options.node).domain ?? 'msging.net';
7
+ }
8
+ get domain() {
9
+ return this._domain;
10
+ }
11
+ static login(tokenOrBot, accessKeyOrTenantId, tenantIdOrUndefined) {
12
+ let node;
13
+ let accessKey;
14
+ let tenantId;
15
+ const isTokenBasedAuth = !tenantIdOrUndefined && typeof tokenOrBot === 'string';
16
+ if (isTokenBasedAuth) {
17
+ try {
18
+ const { identity, secret } = ConnectionSender.parseToken(tokenOrBot);
19
+ node = identity;
20
+ accessKey = secret;
21
+ tenantId = accessKeyOrTenantId;
22
+ }
23
+ catch {
24
+ if (!accessKeyOrTenantId) {
25
+ throw new Error('Invalid token format and no access key provided');
26
+ }
27
+ node = Node.from(tokenOrBot, 'msging.net');
28
+ accessKey = accessKeyOrTenantId;
29
+ tenantId = tenantIdOrUndefined;
30
+ }
31
+ }
32
+ else {
33
+ if (!accessKeyOrTenantId) {
34
+ throw new Error('Access key must be provided for bot-based authentication');
35
+ }
36
+ node = Node.from(tokenOrBot, 'msging.net');
37
+ accessKey = accessKeyOrTenantId;
38
+ tenantId = tenantIdOrUndefined;
39
+ }
40
+ // biome-ignore lint/complexity/noThisInStatic: fair use-case
41
+ return new this({
42
+ node,
43
+ authentication: {
44
+ scheme: 'key',
45
+ key: accessKey,
46
+ },
47
+ tenantId,
48
+ });
49
+ }
50
+ static createToken(node, secret) {
51
+ const identity = Node.from(node).toIdentity();
52
+ return btoa(`${identity}:${atob(secret)}`);
53
+ }
54
+ static parseToken(token) {
55
+ let cleantoken = token.trim();
56
+ const parts = cleantoken.split(' ');
57
+ if (parts.length > 1) {
58
+ cleantoken = parts[1];
59
+ }
60
+ const [identityOrIdentifier, key] = atob(cleantoken).split(':');
61
+ if (!identityOrIdentifier || !key) {
62
+ throw new Error('Invalid token format');
63
+ }
64
+ const identity = Node.isValid(identityOrIdentifier)
65
+ ? identityOrIdentifier
66
+ : new Node(identityOrIdentifier, 'msging.net').toIdentity();
67
+ return {
68
+ identity,
69
+ secret: btoa(key),
70
+ };
71
+ }
72
+ }
73
+ export class OpenConnectionSender extends ConnectionSender {
74
+ envelopeResolver = new EnvelopeResolver(this);
75
+ sessionNegotiator = null;
76
+ on(ev, listener, predicate) {
77
+ this.envelopeResolver.addListener(ev, {
78
+ callback: listener,
79
+ predicate: predicate,
80
+ });
81
+ return this;
82
+ }
83
+ off(ev, listener) {
84
+ this.envelopeResolver.removeListener(ev, listener);
85
+ return this;
86
+ }
87
+ get session() {
88
+ return this.sessionNegotiator?.session ?? null;
89
+ }
90
+ }
2
91
  //# sourceMappingURL=sender.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sender.js","sourceRoot":"","sources":["../../../src/sender/sender.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"sender.js","sourceRoot":"","sources":["../../../src/sender/sender.ts"],"names":[],"mappings":"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"}