@whitewall/blip-sdk 0.0.197 → 0.0.200

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 (202) hide show
  1. package/dist/cjs/client.js.map +1 -1
  2. package/dist/cjs/namespaces/account.js.map +1 -1
  3. package/dist/cjs/namespaces/activecampaign.js.map +1 -1
  4. package/dist/cjs/namespaces/analytics.js.map +1 -1
  5. package/dist/cjs/namespaces/billing.js.map +1 -1
  6. package/dist/cjs/namespaces/builder.js.map +1 -1
  7. package/dist/cjs/namespaces/configurations.js.map +1 -1
  8. package/dist/cjs/namespaces/context.js.map +1 -1
  9. package/dist/cjs/namespaces/desk.js.map +1 -1
  10. package/dist/cjs/namespaces/media.js.map +1 -1
  11. package/dist/cjs/namespaces/namespace.js +23 -9
  12. package/dist/cjs/namespaces/namespace.js.map +1 -1
  13. package/dist/cjs/namespaces/portal.js.map +1 -1
  14. package/dist/cjs/namespaces/scheduler.js.map +1 -1
  15. package/dist/cjs/namespaces/tunnel.js.map +1 -1
  16. package/dist/cjs/namespaces/whatsapp.js.map +1 -1
  17. package/dist/cjs/schemas/webhook.js.map +1 -1
  18. package/dist/cjs/sender/bliperror.js.map +1 -1
  19. package/dist/cjs/sender/closable.js.map +1 -1
  20. package/dist/cjs/sender/enveloperesolver.js +1 -1
  21. package/dist/cjs/sender/enveloperesolver.js.map +1 -1
  22. package/dist/cjs/sender/gateway/customgatewaysender.js +1 -1
  23. package/dist/cjs/sender/gateway/customgatewaysender.js.map +1 -1
  24. package/dist/cjs/sender/http/httpsender.js +1 -1
  25. package/dist/cjs/sender/http/httpsender.js.map +1 -1
  26. package/dist/cjs/sender/multi/multisender.js.map +1 -1
  27. package/dist/cjs/sender/plugin/communication.js.map +1 -1
  28. package/dist/cjs/sender/plugin/pluginsender.js.map +1 -1
  29. package/dist/cjs/sender/retryableerror.js.map +1 -1
  30. package/dist/cjs/sender/security.js.map +1 -1
  31. package/dist/cjs/sender/sender.js +11 -0
  32. package/dist/cjs/sender/sender.js.map +1 -1
  33. package/dist/cjs/sender/sessionnegotiator.js +2 -2
  34. package/dist/cjs/sender/sessionnegotiator.js.map +1 -1
  35. package/dist/cjs/sender/tcp/json-parser.js.map +1 -1
  36. package/dist/cjs/sender/tcp/tcpsender.js +7 -13
  37. package/dist/cjs/sender/tcp/tcpsender.js.map +1 -1
  38. package/dist/cjs/sender/throttler.js.map +1 -1
  39. package/dist/cjs/sender/transporttls.js.map +1 -1
  40. package/dist/cjs/sender/websocket/websocketsender.js +7 -13
  41. package/dist/cjs/sender/websocket/websocketsender.js.map +1 -1
  42. package/dist/cjs/types/command.js.map +1 -1
  43. package/dist/cjs/types/desk.js +9 -10
  44. package/dist/cjs/types/desk.js.map +1 -1
  45. package/dist/cjs/types/flow.js.map +1 -1
  46. package/dist/cjs/types/message.js.map +1 -1
  47. package/dist/cjs/types/node.js.map +1 -1
  48. package/dist/cjs/types/notification.js.map +1 -1
  49. package/dist/cjs/types/reason.js +8 -9
  50. package/dist/cjs/types/reason.js.map +1 -1
  51. package/dist/cjs/types/session.js.map +1 -1
  52. package/dist/cjs/utils/builder.js.map +1 -1
  53. package/dist/cjs/utils/desk.js.map +1 -1
  54. package/dist/cjs/utils/flow-rules.js.map +1 -1
  55. package/dist/cjs/utils/minifier.js.map +1 -1
  56. package/dist/cjs/utils/odata.js.map +1 -1
  57. package/dist/cjs/utils/promise.js +9 -0
  58. package/dist/cjs/utils/promise.js.map +1 -0
  59. package/dist/cjs/utils/random.js.map +1 -1
  60. package/dist/cjs/utils/thread.js.map +1 -1
  61. package/dist/cjs/utils/uri.js.map +1 -1
  62. package/dist/cjs/utils/whatsapp.js.map +1 -1
  63. package/dist/esm/client.js +16 -16
  64. package/dist/esm/client.js.map +1 -1
  65. package/dist/esm/index.js +13 -13
  66. package/dist/esm/namespaces/account.js +5 -5
  67. package/dist/esm/namespaces/account.js.map +1 -1
  68. package/dist/esm/namespaces/activecampaign.js +3 -3
  69. package/dist/esm/namespaces/analytics.js +4 -4
  70. package/dist/esm/namespaces/analytics.js.map +1 -1
  71. package/dist/esm/namespaces/billing.js +3 -3
  72. package/dist/esm/namespaces/builder.js +3 -3
  73. package/dist/esm/namespaces/configurations.js +2 -2
  74. package/dist/esm/namespaces/context.js +2 -2
  75. package/dist/esm/namespaces/desk.js +5 -5
  76. package/dist/esm/namespaces/media.js +4 -4
  77. package/dist/esm/namespaces/namespace.js +27 -13
  78. package/dist/esm/namespaces/namespace.js.map +1 -1
  79. package/dist/esm/namespaces/portal.js +5 -5
  80. package/dist/esm/namespaces/scheduler.js +3 -3
  81. package/dist/esm/namespaces/tunnel.js +3 -3
  82. package/dist/esm/namespaces/whatsapp.js +3 -3
  83. package/dist/esm/schemas/index.js +1 -1
  84. package/dist/esm/schemas/utils/validate.js +1 -1
  85. package/dist/esm/schemas/webhook.js +1 -1
  86. package/dist/esm/sender/bliperror.js +1 -1
  87. package/dist/esm/sender/bliperror.js.map +1 -1
  88. package/dist/esm/sender/enveloperesolver.js +4 -4
  89. package/dist/esm/sender/enveloperesolver.js.map +1 -1
  90. package/dist/esm/sender/gateway/customgatewaysender.js +2 -2
  91. package/dist/esm/sender/gateway/customgatewaysender.js.map +1 -1
  92. package/dist/esm/sender/http/httpsender.js +7 -7
  93. package/dist/esm/sender/http/httpsender.js.map +1 -1
  94. package/dist/esm/sender/index.js +8 -8
  95. package/dist/esm/sender/multi/multisender.js +1 -1
  96. package/dist/esm/sender/plugin/communication.js +1 -1
  97. package/dist/esm/sender/plugin/pluginsender.js +3 -3
  98. package/dist/esm/sender/retryableerror.js +1 -1
  99. package/dist/esm/sender/sender.js +14 -3
  100. package/dist/esm/sender/sender.js.map +1 -1
  101. package/dist/esm/sender/sessionnegotiator.js +4 -4
  102. package/dist/esm/sender/sessionnegotiator.js.map +1 -1
  103. package/dist/esm/sender/tcp/tcpsender.js +14 -20
  104. package/dist/esm/sender/tcp/tcpsender.js.map +1 -1
  105. package/dist/esm/sender/websocket/websocketsender.js +14 -20
  106. package/dist/esm/sender/websocket/websocketsender.js.map +1 -1
  107. package/dist/esm/types/desk.js +9 -10
  108. package/dist/esm/types/desk.js.map +1 -1
  109. package/dist/esm/types/index.js +12 -12
  110. package/dist/esm/types/node.js.map +1 -1
  111. package/dist/esm/types/reason.js +8 -9
  112. package/dist/esm/types/reason.js.map +1 -1
  113. package/dist/esm/utils/builder.js +1 -1
  114. package/dist/esm/utils/desk.js +1 -1
  115. package/dist/esm/utils/flow-rules.js +1 -1
  116. package/dist/esm/utils/minifier.js +2 -2
  117. package/dist/esm/utils/minifier.js.map +1 -1
  118. package/dist/esm/utils/promise.js +6 -0
  119. package/dist/esm/utils/promise.js.map +1 -0
  120. package/dist/esm/utils/thread.js +1 -1
  121. package/dist/esm/utils/whatsapp.js +1 -1
  122. package/dist/types/client.d.ts +2 -2
  123. package/dist/types/client.d.ts.map +1 -1
  124. package/dist/types/namespaces/account.d.ts +347 -347
  125. package/dist/types/namespaces/account.d.ts.map +1 -1
  126. package/dist/types/namespaces/activecampaign.d.ts +1 -1
  127. package/dist/types/namespaces/activecampaign.d.ts.map +1 -1
  128. package/dist/types/namespaces/analytics.d.ts +10 -10
  129. package/dist/types/namespaces/analytics.d.ts.map +1 -1
  130. package/dist/types/namespaces/billing.d.ts.map +1 -1
  131. package/dist/types/namespaces/builder.d.ts.map +1 -1
  132. package/dist/types/namespaces/configurations.d.ts.map +1 -1
  133. package/dist/types/namespaces/context.d.ts.map +1 -1
  134. package/dist/types/namespaces/desk.d.ts +3 -3
  135. package/dist/types/namespaces/desk.d.ts.map +1 -1
  136. package/dist/types/namespaces/media.d.ts.map +1 -1
  137. package/dist/types/namespaces/namespace.d.ts +2 -1
  138. package/dist/types/namespaces/namespace.d.ts.map +1 -1
  139. package/dist/types/namespaces/portal.d.ts.map +1 -1
  140. package/dist/types/namespaces/scheduler.d.ts.map +1 -1
  141. package/dist/types/namespaces/tunnel.d.ts.map +1 -1
  142. package/dist/types/namespaces/whatsapp.d.ts.map +1 -1
  143. package/dist/types/schemas/utils/validate.d.ts +2 -2
  144. package/dist/types/schemas/utils/validate.d.ts.map +1 -1
  145. package/dist/types/schemas/webhook.d.ts +6 -6
  146. package/dist/types/schemas/webhook.d.ts.map +1 -1
  147. package/dist/types/sender/bliperror.d.ts +3 -4
  148. package/dist/types/sender/bliperror.d.ts.map +1 -1
  149. package/dist/types/sender/closable.d.ts.map +1 -1
  150. package/dist/types/sender/enveloperesolver.d.ts +1 -1
  151. package/dist/types/sender/enveloperesolver.d.ts.map +1 -1
  152. package/dist/types/sender/gateway/customgatewaysender.d.ts.map +1 -1
  153. package/dist/types/sender/http/httpsender.d.ts.map +1 -1
  154. package/dist/types/sender/multi/multisender.d.ts.map +1 -1
  155. package/dist/types/sender/plugin/communication.d.ts.map +1 -1
  156. package/dist/types/sender/plugin/pluginsender.d.ts.map +1 -1
  157. package/dist/types/sender/retryableerror.d.ts.map +1 -1
  158. package/dist/types/sender/sender.d.ts +1 -0
  159. package/dist/types/sender/sender.d.ts.map +1 -1
  160. package/dist/types/sender/sessionnegotiator.d.ts +2 -2
  161. package/dist/types/sender/sessionnegotiator.d.ts.map +1 -1
  162. package/dist/types/sender/tcp/tcpsender.d.ts.map +1 -1
  163. package/dist/types/sender/throttler.d.ts.map +1 -1
  164. package/dist/types/sender/transporttls.d.ts +1 -1
  165. package/dist/types/sender/transporttls.d.ts.map +1 -1
  166. package/dist/types/sender/websocket/websocketsender.d.ts.map +1 -1
  167. package/dist/types/types/command.d.ts.map +1 -1
  168. package/dist/types/types/desk.d.ts +10 -9
  169. package/dist/types/types/desk.d.ts.map +1 -1
  170. package/dist/types/types/flow.d.ts +320 -320
  171. package/dist/types/types/flow.d.ts.map +1 -1
  172. package/dist/types/types/message.d.ts +1 -1
  173. package/dist/types/types/message.d.ts.map +1 -1
  174. package/dist/types/types/node.d.ts +3 -3
  175. package/dist/types/types/node.d.ts.map +1 -1
  176. package/dist/types/types/notification.d.ts.map +1 -1
  177. package/dist/types/types/reason.d.ts +9 -8
  178. package/dist/types/types/reason.d.ts.map +1 -1
  179. package/dist/types/types/session.d.ts.map +1 -1
  180. package/dist/types/types/whatsapp.d.ts +1 -1
  181. package/dist/types/types/whatsapp.d.ts.map +1 -1
  182. package/dist/types/utils/flow-rules.d.ts.map +1 -1
  183. package/dist/types/utils/logger.d.ts +2 -2
  184. package/dist/types/utils/logger.d.ts.map +1 -1
  185. package/dist/types/utils/minifier.d.ts +253 -253
  186. package/dist/types/utils/odata.d.ts.map +1 -1
  187. package/dist/types/utils/promise.d.ts +2 -0
  188. package/dist/types/utils/promise.d.ts.map +1 -0
  189. package/dist/types/utils/uri.d.ts.map +1 -1
  190. package/package.json +9 -6
  191. package/src/client.ts +6 -4
  192. package/src/namespaces/namespace.ts +42 -15
  193. package/src/sender/bliperror.ts +9 -6
  194. package/src/sender/enveloperesolver.ts +4 -1
  195. package/src/sender/sender.ts +11 -0
  196. package/src/sender/sessionnegotiator.ts +7 -4
  197. package/src/sender/tcp/tcpsender.ts +6 -12
  198. package/src/sender/websocket/websocketsender.ts +6 -13
  199. package/src/types/desk.ts +11 -9
  200. package/src/types/node.ts +8 -5
  201. package/src/types/reason.ts +10 -8
  202. package/src/utils/promise.ts +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"odata.d.ts","sourceRoot":"","sources":["../../../src/utils/odata.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAW,CAAC,CAAC;IACtB,OAAO,CAAC,WAAW,CAAoB;IAEvC,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,YAAY;IAIpB,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAK5D,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAK5D,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;IAKnE,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;IAKnE,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;IAKnE,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;IAKnE,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAMpE,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAKtE,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAKpE,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAKpE,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAKpE,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAKvE,GAAG,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAa9E,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAa7E,QAAQ,IAAI,MAAM;CAGrB;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,OAAK,WAAW,CAAC,CAAC,CAAyB,CAAA"}
1
+ {"version":3,"file":"odata.d.ts","sourceRoot":"","sources":["../../../src/utils/odata.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAW,CAAC,CAAC;IACtB,OAAO,CAAC,WAAW,CAAoB;IAEvC,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,YAAY;IAIpB,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAG3D;IAED,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAG3D;IAED,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAGlE;IAED,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAGlE;IAED,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAGlE;IAED,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAGlE;IAED,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAInE;IAED,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAGrE;IAED,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAGnE;IAED,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAGnE;IAED,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAGnE;IAED,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAGtE;IAED,GAAG,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAW7E;IAED,EAAE,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAW5E;IAED,QAAQ,IAAI,MAAM,CAEjB;CACJ;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,OAAK,WAAW,CAAC,CAAC,CAAyB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function markRejectionHandled<T>(promise: Promise<T>): Promise<T>;
2
+ //# sourceMappingURL=promise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../src/utils/promise.ts"],"names":[],"mappings":"AACA,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAGvE"}
@@ -1 +1 @@
1
- {"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../../src/utils/uri.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAA;IAKZ,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B;AAED,eAAO,MAAM,GAAG,GAAI,OAAO,oBAAoB,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAG,GAyB1E,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,KAAK,GAAG,KAAG,MAStC,CAAA"}
1
+ {"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../../src/utils/uri.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAChB,IAAI,EAAE,MAAM,CAAA;IAKZ,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B;AAED,eAAO,MAAM,GAAG,UAAW,oBAAoB,WAAW,KAAK,CAAC,OAAO,CAAC,KAAG,GAyB1E,CAAA;AAED,eAAO,MAAM,WAAW,QAAS,GAAG,KAAG,MAStC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whitewall/blip-sdk",
3
- "version": "0.0.197",
3
+ "version": "0.0.200",
4
4
  "description": "Blip API wrapper",
5
5
  "exports": {
6
6
  "types": "./dist/types/index.d.ts",
@@ -13,17 +13,20 @@
13
13
  "build": "concurrently -g \"pnpm run build:esm\" \"pnpm run build:cjs\"",
14
14
  "lint": "tsc --noEmit",
15
15
  "start": "concurrently -k \"pnpm run build:esm -- -w\" \"pnpm run build:cjs -- -w\"",
16
- "test": "node --experimental-transform-types --test ./test/*.spec.ts"
16
+ "test": "node --test ./test/*.spec.ts"
17
17
  },
18
18
  "files": [
19
19
  "dist/*",
20
20
  "src/*"
21
21
  ],
22
+ "engines": {
23
+ "node": "26"
24
+ },
22
25
  "devDependencies": {
23
- "@types/node": "24.13.1",
24
- "concurrently": "10.0.3",
25
- "typescript": "6.0.3",
26
- "zod": "4.4.3"
26
+ "@types/node": "26.6.2",
27
+ "concurrently": "10.0.5",
28
+ "typescript": "7.0.2",
29
+ "zod": "4.6.5"
27
30
  },
28
31
  "peerDependencies": {
29
32
  "zod": ">=4.2"
package/src/client.ts CHANGED
@@ -20,10 +20,12 @@ import { type BlipDomain, type Domain, type Identity, Node } from './types/node.
20
20
  import { randomId } from './utils/random.ts'
21
21
 
22
22
  export class BlipClient<TSender extends Sender = Sender> {
23
- constructor(
24
- public readonly sender: TSender,
25
- protected readonly defaultOptions?: SendCommandOptions,
26
- ) {
23
+ public readonly sender: TSender
24
+ protected readonly defaultOptions?: SendCommandOptions
25
+
26
+ constructor(sender: TSender, defaultOptions?: SendCommandOptions) {
27
+ this.sender = sender
28
+ this.defaultOptions = defaultOptions
27
29
  this.account = new AccountNamespace(this, defaultOptions)
28
30
  this.builder = new BuilderNamespace(this, defaultOptions)
29
31
  this.desk = new DeskNamespace(this, defaultOptions)
@@ -1,6 +1,15 @@
1
1
  import type { BlipClient } from '../client.ts'
2
+ import { BlipError } from '../sender/bliperror.ts'
2
3
  import { ConnectionSender } from '../sender/sender.ts'
3
- import { type Command, type CommandMethods, type Domain, type Identity, Node, type NodeLike } from '../types/index.ts'
4
+ import {
5
+ type Command,
6
+ type CommandMethods,
7
+ type Domain,
8
+ type Identity,
9
+ Node,
10
+ type NodeLike,
11
+ type UnknownCommand,
12
+ } from '../types/index.ts'
4
13
  import { randomId } from '../utils/random.ts'
5
14
  import { type URI, uriToString } from '../utils/uri.ts'
6
15
 
@@ -31,11 +40,15 @@ export type ConsumeOptions = SendCommandOptions & {
31
40
  }
32
41
 
33
42
  export class Namespace {
34
- constructor(
35
- protected readonly blipClient: BlipClient,
36
- private readonly ownerSubdomain: string,
37
- private readonly defaultOptions?: ConsumeOptions,
38
- ) {}
43
+ protected readonly blipClient: BlipClient
44
+ private readonly ownerSubdomain: string
45
+ private readonly defaultOptions?: ConsumeOptions
46
+
47
+ constructor(blipClient: BlipClient, ownerSubdomain: string, defaultOptions?: ConsumeOptions) {
48
+ this.blipClient = blipClient
49
+ this.ownerSubdomain = ownerSubdomain
50
+ this.defaultOptions = defaultOptions
51
+ }
39
52
 
40
53
  get identity() {
41
54
  return `postmaster@${this.ownerSubdomain ? `${this.ownerSubdomain}.` : ''}${this.defaultOptions?.domain ?? 'msging.net'}` as Identity
@@ -106,6 +119,19 @@ export class Namespace {
106
119
  return []
107
120
  }
108
121
 
122
+ private async fetchPage<TItem>(cmd: UnknownCommand, tolerateNotFound: boolean): Promise<Array<TItem>> {
123
+ try {
124
+ return this.extractCollection<TItem>(await this.blipClient.sender.sendCommand(cmd))
125
+ } catch (err) {
126
+ // Past the first page the resource is known to exist, so a not-found is the end of the collection.
127
+ if (tolerateNotFound && err instanceof BlipError && err.code === 67) {
128
+ return []
129
+ }
130
+
131
+ throw err
132
+ }
133
+ }
134
+
109
135
  private async *sendIterableCommand<TMethod extends CommandMethods, TResponse = void>(
110
136
  command: Omit<Command<TMethod>, 'uri' | 'id' | 'to'> & {
111
137
  uri: URI
@@ -113,15 +139,15 @@ export class Namespace {
113
139
  options: ConsumeOptions,
114
140
  ): AsyncIterable<Unpacked<TResponse>> {
115
141
  const { path, query, owner, take } = this.prepareCommandContext(command, options)
116
- let skip = options.skip ?? 0
142
+ const startSkip = options.skip ?? 0
143
+ let skip = startSkip
117
144
  let yielded = 0
118
145
 
119
146
  while (true) {
120
147
  const q = new Map(query).set('$take', take.toString()).set('$skip', skip.toString())
121
148
 
122
- const commandToSend = this.buildCommand(command, path, q, owner, options)
123
- const response = await this.blipClient.sender.sendCommand(commandToSend)
124
- const items = this.extractCollection<Unpacked<TResponse>>(response)
149
+ const cmd = this.buildCommand(command, path, q, owner, options)
150
+ const items = await this.fetchPage<Unpacked<TResponse>>(cmd, skip > startSkip)
125
151
 
126
152
  if (!items.length) {
127
153
  break
@@ -167,7 +193,8 @@ export class Namespace {
167
193
  throw new Error('Optimistic consume requires max or fetchall to be set')
168
194
  }
169
195
 
170
- let skip = options.skip ?? 0
196
+ const startSkip = options.skip ?? 0
197
+ let skip = startSkip
171
198
  let results: Array<Unpacked<TResponse>> = []
172
199
 
173
200
  query.set('$take', take.toString())
@@ -176,11 +203,11 @@ export class Namespace {
176
203
  const pageCapacity = options.optimistic ? Math.min(Math.ceil(remaining / take), 20) : 1
177
204
 
178
205
  const items = await Promise.all(
179
- Array.from({ length: pageCapacity }, async (_, i: number) => {
180
- const q = new Map(query).set('$skip', (skip + i * take).toString())
206
+ Array.from({ length: pageCapacity }, (_, i: number) => {
207
+ const pageSkip = skip + i * take
208
+ const q = new Map(query).set('$skip', pageSkip.toString())
181
209
  const cmd = this.buildCommand(command, path, q, owner, options)
182
- const response = await this.blipClient.sender.sendCommand(cmd)
183
- return this.extractCollection<Unpacked<TResponse>>(response)
210
+ return this.fetchPage<Unpacked<TResponse>>(cmd, pageSkip > startSkip)
184
211
  }),
185
212
  )
186
213
 
@@ -3,12 +3,15 @@ import type { Reason } from '../types/reason.ts'
3
3
  import { ReasonCodes } from '../types/reason.ts'
4
4
 
5
5
  export class BlipError extends Error {
6
- constructor(
7
- public readonly uri: string,
8
- public readonly cause: Reason,
9
- public commandResponse?: CommandResponse<unknown, CommandMethods, 'failure'>,
10
- ) {
6
+ public readonly uri: string
7
+ public readonly cause: Reason
8
+ public commandResponse?: CommandResponse<unknown, CommandMethods, 'failure'>
9
+
10
+ constructor(uri: string, cause: Reason, commandResponse?: CommandResponse<unknown, CommandMethods, 'failure'>) {
11
11
  super(`Blip command for ${uri} failed (${cause.code}): ${cause.description}`)
12
+ this.uri = uri
13
+ this.cause = cause
14
+ this.commandResponse = commandResponse
12
15
  }
13
16
 
14
17
  public get code(): number {
@@ -33,7 +36,7 @@ export class BlipError extends Error {
33
36
  return new BlipError(uri, commandResponse.reason, commandResponse)
34
37
  }
35
38
 
36
- static retryableBlipErrors = [
39
+ static retryableBlipErrors: Array<number> = [
37
40
  ReasonCodes.PipelineTimeout,
38
41
  ReasonCodes.MaxThroughputExceeded,
39
42
  ReasonCodes.GeneralError,
@@ -49,10 +49,13 @@ export class EnvelopeResolver {
49
49
  }
50
50
  > = {}
51
51
 
52
+ private readonly sender: OpenConnectionSender
53
+
52
54
  constructor(
53
- private readonly sender: OpenConnectionSender,
55
+ sender: OpenConnectionSender,
54
56
  timeoutSeconds = 60 * 15, // Default timeout of 15 minutes
55
57
  ) {
58
+ this.sender = sender
56
59
  this.timeoutListener = setInterval(() => {
57
60
  const now = Date.now()
58
61
  for (const id in this.waitingEnvelopeResponseResolvers) {
@@ -11,6 +11,7 @@ import {
11
11
  type Notification,
12
12
  type UnknownCommandResponse,
13
13
  } from '../types/index.ts'
14
+ import { logger } from '../utils/logger.ts'
14
15
  import type { Closable } from './closable.ts'
15
16
  import { EnvelopeResolver, type EventMap, type Listener } from './enveloperesolver.ts'
16
17
  import { RetryableError } from './retryableerror.ts'
@@ -166,6 +167,16 @@ export abstract class OpenConnectionSender extends ConnectionSender implements S
166
167
  return this.sessionNegotiator?.session ?? null
167
168
  }
168
169
 
170
+ protected handleEnvelope(envelope: Envelope): void {
171
+ if (this.sessionNegotiator?.negotiating) {
172
+ this.sessionNegotiator.handleEnvelope(envelope)
173
+ } else {
174
+ this.envelopeResolver
175
+ .resolve(envelope)
176
+ .catch((err) => logger.error(this.constructor.name, 'Failed to handle envelope', err))
177
+ }
178
+ }
179
+
169
180
  public override get node() {
170
181
  // the negotiated local node is authoritative: it carries the server-assigned instance
171
182
  return this.sessionNegotiator?.session?.localNode ?? super.node
@@ -19,10 +19,13 @@ export class SessionNegotiator {
19
19
  private currentSessionResolver: Pick<PromiseWithResolvers<Session>, 'reject' | 'resolve'> | null = null
20
20
  private failure: Error | null = null
21
21
 
22
- constructor(
23
- private readonly sender: OpenConnectionSender,
24
- private readonly sendSession: (session: Session) => void,
25
- ) {}
22
+ private readonly sender: OpenConnectionSender
23
+ private readonly sendSession: (session: Session) => void
24
+
25
+ constructor(sender: OpenConnectionSender, sendSession: (session: Session) => void) {
26
+ this.sender = sender
27
+ this.sendSession = sendSession
28
+ }
26
29
 
27
30
  public async negotiate(options: {
28
31
  node: NodeLike
@@ -10,6 +10,7 @@ import type {
10
10
  Notification,
11
11
  UnknownCommandResponse,
12
12
  } from '../../types/index.ts'
13
+ import { markRejectionHandled } from '../../utils/promise.ts'
13
14
  import { BlipError } from '../bliperror.ts'
14
15
  import { RetryableError } from '../retryableerror.ts'
15
16
  import { ConnectionSender, type ConnectionSenderConstructor, OpenConnectionSender } from '../sender.ts'
@@ -54,12 +55,7 @@ export class TCPSender extends OpenConnectionSender {
54
55
  })
55
56
  },
56
57
  () => this.rejectPending('Connection was closed'),
57
- (envelope: Envelope) => {
58
- if (this.sessionNegotiator?.negotiating) {
59
- return this.sessionNegotiator.handleEnvelope(envelope)
60
- }
61
- this.envelopeResolver.resolve(envelope)
62
- },
58
+ (envelope: Envelope) => this.handleEnvelope(envelope),
63
59
  )
64
60
  }
65
61
 
@@ -146,7 +142,7 @@ class TCPHandle<T> {
146
142
  onMessage: (message: T) => void,
147
143
  ) {
148
144
  this.onMessage = onMessage
149
- this.currentSocketPromise = this.connect(host, port, onConnected, onClose)
145
+ this.currentSocketPromise = markRejectionHandled(this.connect(host, port, onConnected, onClose))
150
146
  }
151
147
 
152
148
  public get() {
@@ -247,12 +243,10 @@ class TCPHandle<T> {
247
243
  if (connected) onClose()
248
244
 
249
245
  this.connectionAttempts++
250
- // Swallow the rejection of the now-orphaned previous promise; any
251
- // in-flight get() awaiter still sees it via their captured reference.
252
- const previous = this.currentSocketPromise
253
246
  this.currentSocketPromise =
254
- this.connectionAttempts < 3 ? this.connect(host, port, onConnected, onClose) : null
255
- previous?.catch(() => undefined)
247
+ this.connectionAttempts < 3
248
+ ? markRejectionHandled(this.connect(host, port, onConnected, onClose))
249
+ : null
256
250
  }
257
251
 
258
252
  if (!connected) reject(new Error('Socket closed before connect'))
@@ -9,6 +9,7 @@ import type {
9
9
  UnknownCommandResponse,
10
10
  } from '../../types/index.ts'
11
11
  import { logger } from '../../utils/logger.ts'
12
+ import { markRejectionHandled } from '../../utils/promise.ts'
12
13
  import { BlipError } from '../bliperror.ts'
13
14
  import { RetryableError } from '../retryableerror.ts'
14
15
  import { assertNonTransportAuth, type NonTransportAuthentication } from '../security.ts'
@@ -40,13 +41,7 @@ export class WebSocketSender extends OpenConnectionSender {
40
41
  })
41
42
  },
42
43
  () => this.rejectPending('Connection was closed'),
43
- (envelope: Envelope) => {
44
- if (this.sessionNegotiator?.negotiating) {
45
- return this.sessionNegotiator.handleEnvelope(envelope)
46
- }
47
-
48
- this.envelopeResolver.resolve(envelope)
49
- },
44
+ (envelope: Envelope) => this.handleEnvelope(envelope),
50
45
  )
51
46
  }
52
47
 
@@ -135,7 +130,7 @@ class WebSocketHandle<T> {
135
130
  onClose: () => void,
136
131
  onMessage: (message: T) => void,
137
132
  ) {
138
- this.currentWebSocketPromise = this.connect(url, onConnected, onClose, onMessage)
133
+ this.currentWebSocketPromise = markRejectionHandled(this.connect(url, onConnected, onClose, onMessage))
139
134
  }
140
135
 
141
136
  public get() {
@@ -179,12 +174,10 @@ class WebSocketHandle<T> {
179
174
  if (connected) onClose()
180
175
 
181
176
  this.connectionAttempts++
182
- // Swallow the rejection of the now-orphaned previous promise; any
183
- // in-flight get() awaiter still sees it via their captured reference.
184
- const previous = this.currentWebSocketPromise
185
177
  this.currentWebSocketPromise =
186
- this.connectionAttempts < 3 ? this.connect(url, onConnected, onClose, onMessage) : null
187
- previous?.catch(() => undefined)
178
+ this.connectionAttempts < 3
179
+ ? markRejectionHandled(this.connect(url, onConnected, onClose, onMessage))
180
+ : null
188
181
  }
189
182
 
190
183
  if (!connected) reject(new Error('WebSocket closed before open'))
package/src/types/desk.ts CHANGED
@@ -18,15 +18,17 @@ export type AttendanceHour = {
18
18
  timeZoneId?: string
19
19
  }
20
20
 
21
- export enum DayOfWeek {
22
- Sunday = 'Sunday',
23
- Monday = 'Monday',
24
- Tuesday = 'Tuesday',
25
- Wednesday = 'Wednesday',
26
- Thursday = 'Thursday',
27
- Friday = 'Friday',
28
- Saturday = 'Saturday',
29
- }
21
+ export const DayOfWeek = {
22
+ Sunday: 'Sunday',
23
+ Monday: 'Monday',
24
+ Tuesday: 'Tuesday',
25
+ Wednesday: 'Wednesday',
26
+ Thursday: 'Thursday',
27
+ Friday: 'Friday',
28
+ Saturday: 'Saturday',
29
+ } as const
30
+
31
+ export type DayOfWeek = (typeof DayOfWeek)[keyof typeof DayOfWeek]
30
32
 
31
33
  export type AttendanceHourScheduleItem = {
32
34
  id: string
package/src/types/node.ts CHANGED
@@ -6,12 +6,15 @@ export type NodeLike = Node | NodeShape
6
6
  export type PossiblyNode = NodeLike | string
7
7
 
8
8
  export class Node extends String {
9
- constructor(
10
- public readonly name: string,
11
- public readonly domain: Domain,
12
- public readonly instance?: string,
13
- ) {
9
+ public readonly name: string
10
+ public readonly domain: Domain
11
+ public readonly instance?: string
12
+
13
+ constructor(name: string, domain: Domain, instance?: string) {
14
14
  super(`${encodeURIComponent(name)}@${domain}${instance ? `/${instance}` : ''}`)
15
+ this.name = name
16
+ this.domain = domain
17
+ this.instance = instance
15
18
  }
16
19
 
17
20
  public toIdentity(): Identity {
@@ -1,12 +1,14 @@
1
- export enum ReasonCodes {
2
- PipelineTimeout = 2,
3
- MaxThroughputExceeded = 38,
4
- GeneralError = 101,
5
- FailedToSendEnvelopeViaHTTP = 2105,
1
+ export const ReasonCodes = {
2
+ PipelineTimeout: 2,
3
+ MaxThroughputExceeded: 38,
4
+ GeneralError: 101,
5
+ FailedToSendEnvelopeViaHTTP: 2105,
6
6
  // Returned on analytics requests when data is not ready but will be soon
7
- PendingRequest = 7390,
8
- CommandProcessingError = 61,
9
- }
7
+ PendingRequest: 7390,
8
+ CommandProcessingError: 61,
9
+ } as const
10
+
11
+ export type ReasonCodes = (typeof ReasonCodes)[keyof typeof ReasonCodes]
10
12
 
11
13
  export interface Reason {
12
14
  code: ReasonCodes | number
@@ -0,0 +1,5 @@
1
+ // An unawaited rejection is fatal under Node's default --unhandled-rejections=throw.
2
+ export function markRejectionHandled<T>(promise: Promise<T>): Promise<T> {
3
+ promise.catch(() => undefined)
4
+ return promise
5
+ }