@botonic/core 0.19.0-beta.1 → 0.20.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 (361) hide show
  1. package/lib/cjs/constants.d.ts +4 -0
  2. package/lib/cjs/constants.js +8 -0
  3. package/lib/cjs/constants.js.map +1 -0
  4. package/lib/cjs/core-bot.d.ts +36 -0
  5. package/lib/cjs/core-bot.js +115 -0
  6. package/lib/cjs/core-bot.js.map +1 -0
  7. package/lib/cjs/data-provider/dynamodb-data-provider.d.ts +26 -0
  8. package/lib/cjs/data-provider/dynamodb-data-provider.js +81 -0
  9. package/lib/cjs/data-provider/dynamodb-data-provider.js.map +1 -0
  10. package/lib/cjs/data-provider/dynamodb-utils.d.ts +11 -0
  11. package/lib/cjs/data-provider/dynamodb-utils.js +120 -0
  12. package/lib/cjs/data-provider/dynamodb-utils.js.map +1 -0
  13. package/lib/cjs/data-provider/factory.d.ts +25 -0
  14. package/lib/cjs/data-provider/factory.js +31 -0
  15. package/lib/cjs/data-provider/factory.js.map +1 -0
  16. package/lib/cjs/data-provider/index.d.ts +4 -0
  17. package/lib/cjs/data-provider/index.js +8 -0
  18. package/lib/cjs/data-provider/index.js.map +1 -0
  19. package/lib/cjs/data-provider/local-data-provider.d.ts +26 -0
  20. package/lib/cjs/data-provider/local-data-provider.js +137 -0
  21. package/lib/cjs/data-provider/local-data-provider.js.map +1 -0
  22. package/lib/cjs/debug/index.d.ts +1 -0
  23. package/lib/cjs/debug/index.js +5 -0
  24. package/lib/cjs/debug/index.js.map +1 -0
  25. package/lib/cjs/debug/inspector.d.ts +24 -0
  26. package/lib/{debug → cjs/debug}/inspector.js +5 -3
  27. package/lib/cjs/debug/inspector.js.map +1 -0
  28. package/lib/cjs/handoff.d.ts +67 -0
  29. package/lib/{handoff.js → cjs/handoff.js} +2 -1
  30. package/lib/cjs/handoff.js.map +1 -0
  31. package/lib/cjs/hubtype-service.d.ts +69 -0
  32. package/lib/{hubtype-service.js → cjs/hubtype-service.js} +39 -12
  33. package/lib/cjs/hubtype-service.js.map +1 -0
  34. package/lib/cjs/i18n.d.ts +2 -0
  35. package/lib/{i18n.js → cjs/i18n.js} +0 -1
  36. package/lib/cjs/i18n.js.map +1 -0
  37. package/lib/cjs/index.d.ts +11 -0
  38. package/lib/cjs/index.js +17 -0
  39. package/lib/cjs/index.js.map +1 -0
  40. package/lib/cjs/models/events/base-event.d.ts +13 -0
  41. package/lib/{models/events/index.js → cjs/models/events/base-event.js} +1 -1
  42. package/lib/cjs/models/events/base-event.js.map +1 -0
  43. package/lib/cjs/models/events/botonic-event.d.ts +3 -0
  44. package/lib/cjs/models/events/botonic-event.js +3 -0
  45. package/lib/cjs/models/events/botonic-event.js.map +1 -0
  46. package/lib/{models/events/connections/index.d.ts → cjs/models/events/connections/connection-event.d.ts} +1 -1
  47. package/lib/{models/events/connections/index.js → cjs/models/events/connections/connection-event.js} +1 -1
  48. package/lib/cjs/models/events/connections/connection-event.js.map +1 -0
  49. package/lib/cjs/models/events/connections/index.d.ts +1 -0
  50. package/lib/cjs/models/events/connections/index.js +5 -0
  51. package/lib/cjs/models/events/connections/index.js.map +1 -0
  52. package/lib/cjs/models/events/index.d.ts +4 -0
  53. package/lib/cjs/models/events/index.js +8 -0
  54. package/lib/cjs/models/events/index.js.map +1 -0
  55. package/lib/{models → cjs/models}/events/message/buttons.d.ts +0 -0
  56. package/lib/{models → cjs/models}/events/message/buttons.js +0 -0
  57. package/lib/cjs/models/events/message/buttons.js.map +1 -0
  58. package/lib/{models → cjs/models}/events/message/carousel.d.ts +1 -1
  59. package/lib/{models → cjs/models}/events/message/carousel.js +0 -0
  60. package/lib/cjs/models/events/message/carousel.js.map +1 -0
  61. package/lib/{models → cjs/models}/events/message/custom.d.ts +2 -2
  62. package/lib/{models → cjs/models}/events/message/custom.js +0 -0
  63. package/lib/cjs/models/events/message/custom.js.map +1 -0
  64. package/lib/cjs/models/events/message/index.d.ts +9 -0
  65. package/lib/cjs/models/events/message/index.js +13 -0
  66. package/lib/cjs/models/events/message/index.js.map +1 -0
  67. package/lib/{models → cjs/models}/events/message/location.d.ts +1 -1
  68. package/lib/{models → cjs/models}/events/message/location.js +0 -0
  69. package/lib/cjs/models/events/message/location.js.map +1 -0
  70. package/lib/{models → cjs/models}/events/message/media.d.ts +1 -1
  71. package/lib/cjs/models/events/message/media.js +11 -0
  72. package/lib/cjs/models/events/message/media.js.map +1 -0
  73. package/lib/{models/events/message/index.d.ts → cjs/models/events/message/message-event.d.ts} +1 -1
  74. package/lib/{models/events/message/index.js → cjs/models/events/message/message-event.js} +1 -1
  75. package/lib/cjs/models/events/message/message-event.js.map +1 -0
  76. package/lib/{models → cjs/models}/events/message/postback.d.ts +1 -1
  77. package/lib/{models → cjs/models}/events/message/postback.js +0 -0
  78. package/lib/cjs/models/events/message/postback.js.map +1 -0
  79. package/lib/{models → cjs/models}/events/message/replies.d.ts +0 -0
  80. package/lib/{models → cjs/models}/events/message/replies.js +0 -0
  81. package/lib/cjs/models/events/message/replies.js.map +1 -0
  82. package/lib/{models → cjs/models}/events/message/text.d.ts +1 -1
  83. package/lib/{models → cjs/models}/events/message/text.js +0 -0
  84. package/lib/cjs/models/events/message/text.js.map +1 -0
  85. package/lib/cjs/models/index.d.ts +3 -0
  86. package/lib/cjs/models/index.js +7 -0
  87. package/lib/cjs/models/index.js.map +1 -0
  88. package/lib/cjs/models/legacy-types.d.ts +207 -0
  89. package/lib/cjs/models/legacy-types.js +60 -0
  90. package/lib/cjs/models/legacy-types.js.map +1 -0
  91. package/lib/{models → cjs/models}/user.d.ts +1 -1
  92. package/lib/{models → cjs/models}/user.js +0 -0
  93. package/lib/{models → cjs/models}/user.js.map +1 -1
  94. package/lib/{output-parser/index.d.ts → cjs/output-parser/botonic-output-parser.d.ts} +1 -1
  95. package/lib/{output-parser/index.js → cjs/output-parser/botonic-output-parser.js} +2 -1
  96. package/lib/cjs/output-parser/botonic-output-parser.js.map +1 -0
  97. package/lib/{output-parser → cjs/output-parser}/factory.d.ts +1 -1
  98. package/lib/{output-parser → cjs/output-parser}/factory.js +7 -8
  99. package/lib/cjs/output-parser/factory.js.map +1 -0
  100. package/lib/cjs/output-parser/index.d.ts +3 -0
  101. package/lib/cjs/output-parser/index.js +7 -0
  102. package/lib/cjs/output-parser/index.js.map +1 -0
  103. package/lib/{output-parser → cjs/output-parser}/parsers.d.ts +3 -9
  104. package/lib/{output-parser → cjs/output-parser}/parsers.js +21 -12
  105. package/lib/cjs/output-parser/parsers.js.map +1 -0
  106. package/lib/cjs/plugins.d.ts +7 -0
  107. package/lib/{plugins.js → cjs/plugins.js} +8 -5
  108. package/lib/cjs/plugins.js.map +1 -0
  109. package/lib/cjs/routing/index.d.ts +2 -0
  110. package/lib/cjs/routing/index.js +6 -0
  111. package/lib/cjs/routing/index.js.map +1 -0
  112. package/lib/cjs/routing/router-utils.d.ts +11 -0
  113. package/lib/cjs/routing/router-utils.js +89 -0
  114. package/lib/cjs/routing/router-utils.js.map +1 -0
  115. package/lib/cjs/routing/router.d.ts +54 -0
  116. package/lib/cjs/routing/router.js +315 -0
  117. package/lib/cjs/routing/router.js.map +1 -0
  118. package/lib/cjs/utils.d.ts +11 -0
  119. package/lib/{utils.js → cjs/utils.js} +14 -5
  120. package/lib/cjs/utils.js.map +1 -0
  121. package/lib/esm/constants.d.ts +4 -0
  122. package/lib/esm/constants.js +5 -0
  123. package/lib/esm/constants.js.map +1 -0
  124. package/lib/esm/core-bot.d.ts +36 -0
  125. package/lib/esm/core-bot.js +111 -0
  126. package/lib/esm/core-bot.js.map +1 -0
  127. package/lib/esm/data-provider/dynamodb-data-provider.d.ts +26 -0
  128. package/lib/esm/data-provider/dynamodb-data-provider.js +77 -0
  129. package/lib/esm/data-provider/dynamodb-data-provider.js.map +1 -0
  130. package/lib/esm/data-provider/dynamodb-utils.d.ts +11 -0
  131. package/lib/esm/data-provider/dynamodb-utils.js +113 -0
  132. package/lib/esm/data-provider/dynamodb-utils.js.map +1 -0
  133. package/lib/esm/data-provider/factory.d.ts +25 -0
  134. package/lib/esm/data-provider/factory.js +27 -0
  135. package/lib/esm/data-provider/factory.js.map +1 -0
  136. package/lib/esm/data-provider/index.d.ts +4 -0
  137. package/lib/esm/data-provider/index.js +5 -0
  138. package/lib/esm/data-provider/index.js.map +1 -0
  139. package/lib/esm/data-provider/local-data-provider.d.ts +26 -0
  140. package/lib/esm/data-provider/local-data-provider.js +133 -0
  141. package/lib/esm/data-provider/local-data-provider.js.map +1 -0
  142. package/lib/esm/debug/index.d.ts +1 -0
  143. package/lib/esm/debug/index.js +2 -0
  144. package/lib/esm/debug/index.js.map +1 -0
  145. package/lib/esm/debug/inspector.d.ts +24 -0
  146. package/lib/esm/debug/inspector.js +65 -0
  147. package/lib/esm/debug/inspector.js.map +1 -0
  148. package/lib/esm/handoff.d.ts +67 -0
  149. package/lib/esm/handoff.js +171 -0
  150. package/lib/esm/handoff.js.map +1 -0
  151. package/lib/esm/hubtype-service.d.ts +69 -0
  152. package/lib/esm/hubtype-service.js +209 -0
  153. package/lib/esm/hubtype-service.js.map +1 -0
  154. package/lib/esm/i18n.d.ts +2 -0
  155. package/lib/esm/i18n.js +7 -0
  156. package/lib/esm/i18n.js.map +1 -0
  157. package/lib/esm/index.d.ts +11 -0
  158. package/lib/esm/index.js +14 -0
  159. package/lib/esm/index.js.map +1 -0
  160. package/lib/esm/models/events/base-event.d.ts +13 -0
  161. package/lib/esm/models/events/base-event.js +8 -0
  162. package/lib/esm/models/events/base-event.js.map +1 -0
  163. package/lib/esm/models/events/botonic-event.d.ts +3 -0
  164. package/lib/esm/models/events/botonic-event.js +2 -0
  165. package/lib/esm/models/events/botonic-event.js.map +1 -0
  166. package/lib/esm/models/events/connections/connection-event.d.ts +9 -0
  167. package/lib/esm/models/events/connections/connection-event.js +6 -0
  168. package/lib/esm/models/events/connections/connection-event.js.map +1 -0
  169. package/lib/esm/models/events/connections/index.d.ts +1 -0
  170. package/lib/esm/models/events/connections/index.js +2 -0
  171. package/lib/esm/models/events/connections/index.js.map +1 -0
  172. package/lib/esm/models/events/index.d.ts +4 -0
  173. package/lib/esm/models/events/index.js +5 -0
  174. package/lib/esm/models/events/index.js.map +1 -0
  175. package/lib/esm/models/events/message/buttons.d.ts +18 -0
  176. package/lib/esm/models/events/message/buttons.js +2 -0
  177. package/lib/esm/models/events/message/buttons.js.map +1 -0
  178. package/lib/esm/models/events/message/carousel.d.ts +11 -0
  179. package/lib/esm/models/events/message/carousel.js +2 -0
  180. package/lib/esm/models/events/message/carousel.js.map +1 -0
  181. package/lib/esm/models/events/message/custom.d.ts +6 -0
  182. package/lib/esm/models/events/message/custom.js +2 -0
  183. package/lib/esm/models/events/message/custom.js.map +1 -0
  184. package/lib/esm/models/events/message/index.d.ts +9 -0
  185. package/lib/esm/models/events/message/index.js +10 -0
  186. package/lib/esm/models/events/message/index.js.map +1 -0
  187. package/lib/esm/models/events/message/location.d.ts +6 -0
  188. package/lib/esm/models/events/message/location.js +2 -0
  189. package/lib/esm/models/events/message/location.js.map +1 -0
  190. package/lib/esm/models/events/message/media.d.ts +18 -0
  191. package/lib/esm/models/events/message/media.js +8 -0
  192. package/lib/esm/models/events/message/media.js.map +1 -0
  193. package/lib/esm/models/events/message/message-event.d.ts +30 -0
  194. package/lib/esm/models/events/message/message-event.js +29 -0
  195. package/lib/esm/models/events/message/message-event.js.map +1 -0
  196. package/lib/esm/models/events/message/postback.d.ts +4 -0
  197. package/lib/esm/models/events/message/postback.js +2 -0
  198. package/lib/esm/models/events/message/postback.js.map +1 -0
  199. package/lib/esm/models/events/message/replies.d.ts +7 -0
  200. package/lib/esm/models/events/message/replies.js +2 -0
  201. package/lib/esm/models/events/message/replies.js.map +1 -0
  202. package/lib/esm/models/events/message/text.d.ts +8 -0
  203. package/lib/esm/models/events/message/text.js +2 -0
  204. package/lib/esm/models/events/message/text.js.map +1 -0
  205. package/lib/esm/models/index.d.ts +3 -0
  206. package/lib/esm/models/index.js +4 -0
  207. package/lib/esm/models/index.js.map +1 -0
  208. package/lib/esm/models/legacy-types.d.ts +207 -0
  209. package/lib/esm/models/legacy-types.js +57 -0
  210. package/lib/esm/models/legacy-types.js.map +1 -0
  211. package/lib/esm/models/user.d.ts +10 -0
  212. package/lib/esm/models/user.js +2 -0
  213. package/lib/esm/models/user.js.map +1 -0
  214. package/lib/esm/output-parser/botonic-output-parser.d.ts +16 -0
  215. package/lib/esm/output-parser/botonic-output-parser.js +33 -0
  216. package/lib/esm/output-parser/botonic-output-parser.js.map +1 -0
  217. package/lib/esm/output-parser/factory.d.ts +4 -0
  218. package/lib/esm/output-parser/factory.js +28 -0
  219. package/lib/esm/output-parser/factory.js.map +1 -0
  220. package/lib/esm/output-parser/index.d.ts +3 -0
  221. package/lib/esm/output-parser/index.js +4 -0
  222. package/lib/esm/output-parser/index.js.map +1 -0
  223. package/lib/esm/output-parser/parsers.d.ts +22 -0
  224. package/lib/esm/output-parser/parsers.js +130 -0
  225. package/lib/esm/output-parser/parsers.js.map +1 -0
  226. package/lib/esm/plugins.d.ts +7 -0
  227. package/lib/esm/plugins.js +42 -0
  228. package/lib/esm/plugins.js.map +1 -0
  229. package/lib/esm/routing/index.d.ts +2 -0
  230. package/lib/esm/routing/index.js +3 -0
  231. package/lib/esm/routing/index.js.map +1 -0
  232. package/lib/esm/routing/router-utils.d.ts +11 -0
  233. package/lib/esm/routing/router-utils.js +79 -0
  234. package/lib/esm/routing/router-utils.js.map +1 -0
  235. package/lib/esm/routing/router.d.ts +54 -0
  236. package/lib/esm/routing/router.js +311 -0
  237. package/lib/esm/routing/router.js.map +1 -0
  238. package/lib/esm/utils.d.ts +11 -0
  239. package/lib/esm/utils.js +78 -0
  240. package/lib/esm/utils.js.map +1 -0
  241. package/package.json +22 -9
  242. package/src/constants.ts +6 -0
  243. package/src/core-bot.ts +213 -0
  244. package/src/data-provider/dynamodb-data-provider.ts +103 -0
  245. package/src/data-provider/dynamodb-utils.ts +149 -0
  246. package/src/data-provider/factory.ts +60 -0
  247. package/src/data-provider/index.ts +4 -0
  248. package/src/data-provider/local-data-provider.ts +154 -0
  249. package/src/{types/debug/index.d.ts → debug/index.ts} +0 -0
  250. package/src/debug/{inspector.js → inspector.ts} +39 -14
  251. package/src/{handoff.js → handoff.ts} +88 -24
  252. package/src/{hubtype-service.js → hubtype-service.ts} +99 -34
  253. package/src/{i18n.js → i18n.ts} +7 -1
  254. package/src/index.ts +13 -0
  255. package/src/models/events/base-event.ts +14 -0
  256. package/src/models/events/botonic-event.ts +24 -0
  257. package/src/models/events/connections/connection-event.ts +11 -0
  258. package/src/models/events/connections/index.ts +1 -11
  259. package/src/models/events/index.ts +4 -39
  260. package/src/models/events/message/carousel.ts +1 -1
  261. package/src/models/events/message/custom.ts +2 -2
  262. package/src/models/events/message/index.ts +9 -37
  263. package/src/models/events/message/location.ts +1 -1
  264. package/src/models/events/message/media.ts +1 -1
  265. package/src/models/events/message/message-event.ts +37 -0
  266. package/src/models/events/message/postback.ts +1 -1
  267. package/src/models/events/message/text.ts +1 -1
  268. package/src/models/index.ts +3 -0
  269. package/src/{types/index.d.ts → models/legacy-types.ts} +141 -80
  270. package/src/models/user.ts +2 -1
  271. package/src/output-parser/botonic-output-parser.ts +38 -0
  272. package/src/output-parser/factory.ts +1 -3
  273. package/src/output-parser/index.ts +3 -37
  274. package/src/output-parser/parsers.ts +27 -17
  275. package/src/{plugins.js → plugins.ts} +21 -12
  276. package/src/routing/index.ts +2 -0
  277. package/src/routing/router-utils.ts +100 -0
  278. package/src/routing/router.ts +409 -0
  279. package/src/{utils.js → utils.ts} +26 -13
  280. package/index.d.ts +0 -1
  281. package/lib/constants.d.ts +0 -15
  282. package/lib/constants.js +0 -19
  283. package/lib/constants.js.map +0 -1
  284. package/lib/core-bot.d.ts +0 -40
  285. package/lib/core-bot.js +0 -78
  286. package/lib/core-bot.js.map +0 -1
  287. package/lib/debug/index.d.ts +0 -1
  288. package/lib/debug/index.js +0 -9
  289. package/lib/debug/index.js.map +0 -1
  290. package/lib/debug/inspector.d.ts +0 -20
  291. package/lib/debug/inspector.js.map +0 -1
  292. package/lib/debug/inspector.test.d.ts +0 -1
  293. package/lib/debug/inspector.test.js +0 -8
  294. package/lib/debug/inspector.test.js.map +0 -1
  295. package/lib/errors.d.ts +0 -4
  296. package/lib/errors.js +0 -11
  297. package/lib/errors.js.map +0 -1
  298. package/lib/handoff.d.ts +0 -34
  299. package/lib/handoff.js.map +0 -1
  300. package/lib/handoff.test.d.ts +0 -1
  301. package/lib/handoff.test.js +0 -62
  302. package/lib/handoff.test.js.map +0 -1
  303. package/lib/hubtype-service.d.ts +0 -58
  304. package/lib/hubtype-service.js.map +0 -1
  305. package/lib/hubtype-service.test.d.ts +0 -1
  306. package/lib/hubtype-service.test.js +0 -21
  307. package/lib/hubtype-service.test.js.map +0 -1
  308. package/lib/i18n.d.ts +0 -1
  309. package/lib/i18n.js.map +0 -1
  310. package/lib/index.d.ts +0 -48
  311. package/lib/index.js +0 -58
  312. package/lib/index.js.map +0 -1
  313. package/lib/models/events/connections/index.js.map +0 -1
  314. package/lib/models/events/index.d.ts +0 -21
  315. package/lib/models/events/index.js.map +0 -1
  316. package/lib/models/events/message/buttons.js.map +0 -1
  317. package/lib/models/events/message/carousel.js.map +0 -1
  318. package/lib/models/events/message/custom.js.map +0 -1
  319. package/lib/models/events/message/index.js.map +0 -1
  320. package/lib/models/events/message/location.js.map +0 -1
  321. package/lib/models/events/message/media.js +0 -11
  322. package/lib/models/events/message/media.js.map +0 -1
  323. package/lib/models/events/message/postback.js.map +0 -1
  324. package/lib/models/events/message/replies.js.map +0 -1
  325. package/lib/models/events/message/text.js.map +0 -1
  326. package/lib/output-parser/factory.js.map +0 -1
  327. package/lib/output-parser/index.js.map +0 -1
  328. package/lib/output-parser/parsers.js.map +0 -1
  329. package/lib/output-parser/util.d.ts +0 -2
  330. package/lib/output-parser/util.js +0 -14
  331. package/lib/output-parser/util.js.map +0 -1
  332. package/lib/plugins.d.ts +0 -2
  333. package/lib/plugins.js.map +0 -1
  334. package/lib/router.d.ts +0 -55
  335. package/lib/router.js +0 -268
  336. package/lib/router.js.map +0 -1
  337. package/lib/router.test.d.ts +0 -1
  338. package/lib/router.test.js +0 -271
  339. package/lib/router.test.js.map +0 -1
  340. package/lib/utils.d.ts +0 -8
  341. package/lib/utils.js.map +0 -1
  342. package/src/constants.js +0 -15
  343. package/src/core-bot.js +0 -108
  344. package/src/debug/index.js +0 -6
  345. package/src/debug/inspector.test.js +0 -6
  346. package/src/errors.js +0 -8
  347. package/src/handoff.test.js +0 -61
  348. package/src/hubtype-service.test.js +0 -23
  349. package/src/index.js +0 -52
  350. package/src/output-parser/util.ts +0 -8
  351. package/src/router.js +0 -273
  352. package/src/router.test.js +0 -345
  353. package/src/types/constants.d.ts +0 -14
  354. package/src/types/core-bot.d.ts +0 -46
  355. package/src/types/debug/inspector.d.ts +0 -33
  356. package/src/types/handoff.d.ts +0 -84
  357. package/src/types/hubtype-service.d.ts +0 -52
  358. package/src/types/i18n.d.ts +0 -8
  359. package/src/types/plugins.d.ts +0 -13
  360. package/src/types/router.d.ts +0 -57
  361. package/src/types/utils.d.ts +0 -12
@@ -1,35 +1,54 @@
1
+ import { Route, RouteMatcher } from '../models'
1
2
  export class RouteInspector {
2
- routeMatched(route, routeKey, routeValue, input) {}
3
- routeNotMatched(route, routeKey, routeValue, inputValue) {}
3
+ routeMatched(
4
+ _route: Route,
5
+ _routeKey: string,
6
+ _routeValue: RouteMatcher,
7
+ _input: any
8
+ ): void {}
9
+ routeNotMatched(
10
+ _route: Route,
11
+ _routeKey: string,
12
+ _routeValue: RouteMatcher,
13
+ _input: any
14
+ ): void {}
4
15
  }
5
16
 
6
17
  export class FocusRouteInspector extends RouteInspector {
18
+ focusRoutePaths: string[] | null
19
+ focusOnMatches: boolean
7
20
  constructor() {
8
21
  super()
9
22
  this.focusRoutePaths = null
10
23
  this.focusOnMatches = false
11
24
  }
12
25
 
13
- focusOnlyOnRoutes(focusRoutePaths) {
26
+ focusOnlyOnRoutes(focusRoutePaths: string[]): this {
14
27
  this.focusRoutePaths = focusRoutePaths
15
28
  return this
16
29
  }
17
30
 
18
- focusOnlyOnMatches() {
31
+ focusOnlyOnMatches(): this {
19
32
  this.focusOnMatches = true
20
33
  return this
21
34
  }
22
35
 
23
- _isOnFocus(route) {
24
- if (this.focusRoutePaths == null) {
36
+ _isOnFocus(route: Route): boolean {
37
+ if (this.focusRoutePaths === null) {
25
38
  return true
26
39
  }
40
+ // @ts-ignore
27
41
  return this.focusRoutePaths.includes(route.path)
28
42
  }
29
43
  }
30
44
 
31
45
  export class LogRouteInspector extends FocusRouteInspector {
32
- routeMatched(route, routeKey, routeValue, inputValue) {
46
+ routeMatched(
47
+ route: Route,
48
+ routeKey: string,
49
+ routeValue: RouteMatcher,
50
+ inputValue: string
51
+ ): void {
33
52
  if (!this._isOnFocus(route)) {
34
53
  return
35
54
  }
@@ -39,7 +58,13 @@ export class LogRouteInspector extends FocusRouteInspector {
39
58
  )
40
59
  }
41
60
 
42
- routeNotMatched(route, routeKey, routeValue, inputValue) {
61
+ // @ts-ignore
62
+ routeNotMatched(
63
+ route: Route,
64
+ routeKey: string,
65
+ routeValue: RouteMatcher,
66
+ inputValue: string
67
+ ): void {
43
68
  if (!this._isOnFocus(route) || this.focusOnMatches) {
44
69
  return
45
70
  }
@@ -49,7 +74,7 @@ export class LogRouteInspector extends FocusRouteInspector {
49
74
  )
50
75
  }
51
76
 
52
- _routeName(obj) {
77
+ _routeName(obj: Route): string {
53
78
  let name = obj.path || '<<no path defined>>'
54
79
  if (obj.action) {
55
80
  name = `'${name}' (to action '${obj.action.name}')`
@@ -57,21 +82,21 @@ export class LogRouteInspector extends FocusRouteInspector {
57
82
  if (obj.redirect) {
58
83
  name = `'${name}' (with redirect to '${obj.redirect}')`
59
84
  }
60
-
61
- return name
85
+ return name as string
62
86
  }
63
87
 
64
- _log(message, ...optionalParams) {
88
+ _log(message: string, ...optionalParams: string[]): void {
65
89
  console.log(message, ...optionalParams)
66
90
  }
67
91
  }
68
92
 
69
93
  export class Inspector {
70
- constructor(routeInspector = undefined) {
94
+ routeInspector: RouteInspector
95
+ constructor(routeInspector: RouteInspector | undefined = undefined) {
71
96
  this.routeInspector = routeInspector || new RouteInspector()
72
97
  }
73
98
 
74
- getRouteInspector() {
99
+ getRouteInspector(): RouteInspector {
75
100
  return this.routeInspector
76
101
  }
77
102
  }
@@ -1,14 +1,45 @@
1
1
  import axios from 'axios'
2
2
 
3
+ import { PATH_PAYLOAD_IDENTIFIER } from './constants'
4
+ import { Session } from './models'
5
+
3
6
  const HUBTYPE_API_URL = 'https://api.hubtype.com'
4
7
 
5
- function contextDefaults(context) {
8
+ export interface HubtypeAgentsInfo {
9
+ attending_count: number
10
+ email: string
11
+ idle_count: number
12
+ last_message_sent: string
13
+ status: string
14
+ }
15
+ export interface HubtypeSession extends Session {
16
+ _hubtype_api?: string
17
+ _access_token: string
18
+ }
19
+
20
+ export interface SessionWithBotonicAction extends Session {
21
+ _botonic_action: string
22
+ }
23
+ export interface BackendContext {
24
+ timeoutMs: number
25
+ }
26
+
27
+ export interface VacationRange {
28
+ end_date: number // timestamp
29
+ id: number
30
+ start_date: number // timestamp
31
+ }
32
+
33
+ function contextDefaults(context: any): BackendContext {
6
34
  return {
7
35
  timeoutMs: context.timeoutMs || 10000,
8
36
  }
9
37
  }
10
38
 
11
- export async function getOpenQueues(session, context = {}) {
39
+ export async function getOpenQueues(
40
+ session: HubtypeSession,
41
+ context = {}
42
+ ): Promise<{ queues: string[] }> {
12
43
  //be aware of https://github.com/axios/axios/issues/1543
13
44
  const baseUrl = session._hubtype_api || HUBTYPE_API_URL
14
45
  const endpointUrl = `${baseUrl}/v1/queues/get_open_queues/`
@@ -20,57 +51,66 @@ export async function getOpenQueues(session, context = {}) {
20
51
  method: 'post',
21
52
  url: endpointUrl,
22
53
  data: { bot_id: session.bot.id },
23
- timeout: context.timeoutMs,
54
+ timeout: (context as BackendContext).timeoutMs,
24
55
  })
25
56
  return resp.data
26
57
  }
27
58
 
28
59
  export class HandOffBuilder {
29
- constructor(session) {
60
+ _session: SessionWithBotonicAction
61
+ _queue: string
62
+ _onFinish: string
63
+ _email: string
64
+ _agentId: string
65
+ _note: string
66
+ _caseInfo: string
67
+ _shadowing: boolean
68
+
69
+ constructor(session: SessionWithBotonicAction) {
30
70
  this._session = session
31
71
  }
32
72
 
33
- withQueue(queueNameOrId) {
73
+ withQueue(queueNameOrId: string): this {
34
74
  this._queue = queueNameOrId
35
75
  return this
36
76
  }
37
77
 
38
- withOnFinishPayload(payload) {
78
+ withOnFinishPayload(payload: string): this {
39
79
  this._onFinish = payload
40
80
  return this
41
81
  }
42
82
 
43
- withOnFinishPath(path) {
44
- this._onFinish = `__PATH_PAYLOAD__${path}`
83
+ withOnFinishPath(path: string): this {
84
+ this._onFinish = `${PATH_PAYLOAD_IDENTIFIER}${path}`
45
85
  return this
46
86
  }
47
87
 
48
- withAgentEmail(email) {
88
+ withAgentEmail(email: string): this {
49
89
  this._email = email
50
90
  return this
51
91
  }
52
92
 
53
- withAgentId(agentId) {
93
+ withAgentId(agentId: string): this {
54
94
  this._agentId = agentId
55
95
  return this
56
96
  }
57
97
 
58
- withNote(note) {
98
+ withNote(note: string): this {
59
99
  this._note = note
60
100
  return this
61
101
  }
62
102
 
63
- withCaseInfo(caseInfo) {
103
+ withCaseInfo(caseInfo: string): this {
64
104
  this._caseInfo = caseInfo
65
105
  return this
66
106
  }
67
107
 
68
- withShadowing(shadowing = true) {
108
+ withShadowing(shadowing = true): this {
69
109
  this._shadowing = shadowing
70
110
  return this
71
111
  }
72
112
 
73
- async handOff() {
113
+ async handOff(): Promise<void> {
74
114
  return _humanHandOff(
75
115
  this._session,
76
116
  this._queue,
@@ -104,17 +144,26 @@ export async function humanHandOff(session, queueNameOrId = '', onFinish) {
104
144
  return builder.handOff()
105
145
  }
106
146
 
147
+ interface HubtypeHandoffParams {
148
+ queue?: string
149
+ agent_email?: string
150
+ agent_id?: string
151
+ case_info?: string
152
+ note?: string
153
+ shadowing?: boolean
154
+ on_finish?: string
155
+ }
107
156
  async function _humanHandOff(
108
- session,
157
+ session: SessionWithBotonicAction,
109
158
  queueNameOrId = '',
110
- onFinish,
159
+ onFinish: string,
111
160
  agentEmail = '',
112
161
  agentId = '',
113
162
  caseInfo = '',
114
163
  note = '',
115
164
  shadowing = false
116
165
  ) {
117
- const params = {}
166
+ const params: HubtypeHandoffParams = {}
118
167
  if (queueNameOrId) {
119
168
  params.queue = queueNameOrId
120
169
  }
@@ -139,7 +188,11 @@ async function _humanHandOff(
139
188
  session._botonic_action = `create_case:${JSON.stringify(params)}`
140
189
  }
141
190
 
142
- export async function storeCaseRating(session, rating, context = {}) {
191
+ export async function storeCaseRating(
192
+ session: HubtypeSession,
193
+ rating: number,
194
+ context: any = {}
195
+ ): Promise<{ status: string }> {
143
196
  const baseUrl = session._hubtype_api || HUBTYPE_API_URL
144
197
  const chatId = session.user.id
145
198
  context = contextDefaults(context)
@@ -150,12 +203,15 @@ export async function storeCaseRating(session, rating, context = {}) {
150
203
  method: 'post',
151
204
  url: `${baseUrl}/v1/chats/${chatId}/store_case_rating/`,
152
205
  data: { chat_id: chatId, rating },
153
- timeout: context.timeoutMs,
206
+ timeout: (context as BackendContext).timeoutMs,
154
207
  })
155
208
  return resp.data
156
209
  }
157
210
 
158
- export async function getAvailableAgentsByQueue(session, queueId) {
211
+ export async function getAvailableAgentsByQueue(
212
+ session: HubtypeSession,
213
+ queueId: string
214
+ ): Promise<{ agents: string[] }> {
159
215
  const baseUrl = session._hubtype_api || HUBTYPE_API_URL
160
216
  const resp = await axios({
161
217
  headers: {
@@ -167,7 +223,9 @@ export async function getAvailableAgentsByQueue(session, queueId) {
167
223
  return resp.data
168
224
  }
169
225
 
170
- export async function getAvailableAgents(session) {
226
+ export async function getAvailableAgents(
227
+ session: HubtypeSession
228
+ ): Promise<{ agents: HubtypeAgentsInfo[] }> {
171
229
  const baseUrl = session._hubtype_api || HUBTYPE_API_URL
172
230
  const botId = session.bot.id
173
231
  const resp = await axios({
@@ -180,7 +238,10 @@ export async function getAvailableAgents(session) {
180
238
  return resp.data
181
239
  }
182
240
 
183
- export async function getAgentVacationRanges(session, { agentId, agentEmail }) {
241
+ export async function getAgentVacationRanges(
242
+ session: HubtypeSession,
243
+ { agentId, agentEmail }: { agentId?: string; agentEmail?: string }
244
+ ): Promise<{ vacation_ranges: VacationRange[] }> {
184
245
  const baseUrl = session._hubtype_api || HUBTYPE_API_URL
185
246
  const botId = session.bot.id
186
247
  const resp = await axios({
@@ -194,12 +255,15 @@ export async function getAgentVacationRanges(session, { agentId, agentEmail }) {
194
255
  return resp.data
195
256
  }
196
257
 
197
- export function cancelHandoff(session, typification = null) {
258
+ export function cancelHandoff(
259
+ session: SessionWithBotonicAction,
260
+ typification: string | null = null
261
+ ): void {
198
262
  let action = 'discard_case'
199
263
  if (typification) action = `${action}:${JSON.stringify({ typification })}`
200
264
  session._botonic_action = action
201
265
  }
202
266
 
203
- export function deleteUser(session) {
267
+ export function deleteUser(session: SessionWithBotonicAction): void {
204
268
  session._botonic_action = `delete_user`
205
269
  }
@@ -1,16 +1,57 @@
1
- import axios from 'axios'
2
- import Pusher from 'pusher-js'
1
+ import axios, { AxiosResponse } from 'axios'
2
+ import { inflate } from 'pako'
3
+ import Pusher, { AuthOptions, Channel } from 'pusher-js'
4
+ import Channels from 'pusher-js/types/src/core/channels/channels'
3
5
 
6
+ import { Input, SessionUser } from './models'
4
7
  import { getWebpackEnvVar } from './utils'
5
8
 
9
+ interface UnsentInput {
10
+ id: string
11
+ ack: number
12
+ unsentInput: Input
13
+ }
14
+ interface BotonicHeaders {
15
+ 'X-BOTONIC-USER-ID': string
16
+ 'X-BOTONIC-LAST-MESSAGE-ID': string
17
+ 'X-BOTONIC-LAST-MESSAGE-UPDATE-DATE': string
18
+ }
19
+ interface ServerConfig {
20
+ activityTimeout?: number
21
+ pongTimeout?: number
22
+ }
23
+ interface HubtypeServiceArgs {
24
+ appId: string
25
+ user: SessionUser
26
+ lastMessageId: string
27
+ lastMessageUpdateDate: string
28
+ onEvent: any
29
+ unsentInputs: () => UnsentInput[]
30
+ server: ServerConfig
31
+ }
32
+ /**
33
+ *
34
+ * @param compressedData a string representing gzipped data previously encoded to base64 for very large contents
35
+ * @returns a string representing the information of a very large content
36
+ * Ref: https://stackoverflow.com/questions/4875020/javascript-decompress-inflate-unzip-ungzip-strings
37
+ */
38
+ function decompressData(compressedData) {
39
+ const strData = atob(compressedData)
40
+ const charData = strData.split('').map(x => x.charCodeAt(0))
41
+ const binData = new Uint8Array(charData)
42
+ const data = inflate(binData)
43
+ // @ts-ignore
44
+ return String.fromCharCode.apply(null, new Uint8Array(data))
45
+ }
46
+
6
47
  const _WEBCHAT_PUSHER_KEY_ = getWebpackEnvVar(
7
- // eslint-disable-next-line no-undef
48
+ // @ts-ignore
8
49
  typeof WEBCHAT_PUSHER_KEY !== 'undefined' && WEBCHAT_PUSHER_KEY,
9
50
  'WEBCHAT_PUSHER_KEY',
10
51
  '434ca667c8e6cb3f641c'
11
52
  )
12
53
  const _HUBTYPE_API_URL_ = getWebpackEnvVar(
13
- // eslint-disable-next-line no-undef
54
+ // @ts-ignore
14
55
  typeof HUBTYPE_API_URL !== 'undefined' && HUBTYPE_API_URL,
15
56
  'HUBTYPE_API_URL',
16
57
  'https://api.hubtype.com'
@@ -23,6 +64,15 @@ const PONG_TIMEOUT = 5 * 1000 // https://pusher.com/docs/channels/using_channels
23
64
  * Calls Hubtype APIs from Webchat
24
65
  */
25
66
  export class HubtypeService {
67
+ appId: string
68
+ user: SessionUser
69
+ lastMessageId: string
70
+ lastMessageUpdateDate: string
71
+ onEvent: any
72
+ unsentInputs: () => UnsentInput[]
73
+ pusher: Pusher | null
74
+ channel: Channel
75
+ server: ServerConfig
26
76
  PUSHER_CONNECT_TIMEOUT_MS = 10000
27
77
  constructor({
28
78
  appId,
@@ -32,7 +82,7 @@ export class HubtypeService {
32
82
  onEvent,
33
83
  unsentInputs,
34
84
  server,
35
- }) {
85
+ }: HubtypeServiceArgs) {
36
86
  this.appId = appId
37
87
  this.user = user || {}
38
88
  this.lastMessageId = lastMessageId
@@ -44,6 +94,7 @@ export class HubtypeService {
44
94
  // It's safe not awaiting Promise because:
45
95
  // * it will never be called from AWS lambda
46
96
  // * though init() is called again from postMesage, it does nothing if Pusher already created
97
+ // @ts-ignore
47
98
  this.init()
48
99
  }
49
100
  }
@@ -51,7 +102,7 @@ export class HubtypeService {
51
102
  /**
52
103
  * @returns {Promise<void>}
53
104
  */
54
- init(user, lastMessageId, lastMessageUpdateDate) {
105
+ init(user, lastMessageId, lastMessageUpdateDate): Promise<void> {
55
106
  if (user) this.user = user
56
107
  if (lastMessageId) this.lastMessageId = lastMessageId
57
108
  if (lastMessageUpdateDate)
@@ -62,7 +113,7 @@ export class HubtypeService {
62
113
  /**
63
114
  * @returns {Promise<void>}
64
115
  */
65
- _initPusher() {
116
+ _initPusher(): Promise<void> {
66
117
  if (this.pusher) return Promise.resolve()
67
118
  if (!this.user.id || !this.appId) {
68
119
  // TODO recover user & appId somehow
@@ -74,11 +125,11 @@ export class HubtypeService {
74
125
  forceTLS: true,
75
126
  auth: {
76
127
  headers: this.constructHeaders(),
77
- },
128
+ } as AuthOptions,
78
129
  ...this.resolveServerConfig(),
79
130
  })
80
131
  this.channel = this.pusher.subscribe(this.pusherChannel)
81
- const connectionPromise = new Promise((resolve, reject) => {
132
+ const connectionPromise = new Promise<void>((resolve, reject) => {
82
133
  const cleanAndReject = msg => {
83
134
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
84
135
  clearTimeout(connectTimeout)
@@ -96,18 +147,27 @@ export class HubtypeService {
96
147
  resolve()
97
148
  })
98
149
  this.channel.bind('botonic_response', data => this.onPusherEvent(data))
99
- this.channel.bind('update_message_info', data => this.onPusherEvent(data))
100
-
101
- this.pusher.connection.bind('error', event => {
102
- if (event.type == 'WebSocketError') this.handleConnectionChange(false)
103
- else {
104
- const errorMsg =
105
- event.error && event.error.data
106
- ? event.error.data.code || event.error.data.message
107
- : 'Connection error'
108
- cleanAndReject(`Pusher error (${errorMsg})`)
150
+ this.channel.bind('botonic_response_compressed', compressedData => {
151
+ try {
152
+ const data = JSON.parse(decompressData(compressedData))
153
+ this.onPusherEvent(data)
154
+ } catch (e) {
155
+ console.error('Error: Unable to decompress data', e)
109
156
  }
110
157
  })
158
+ this.channel.bind('update_message_info', data => this.onPusherEvent(data))
159
+
160
+ this.pusher &&
161
+ this.pusher.connection.bind('error', event => {
162
+ if (event.type == 'WebSocketError') this.handleConnectionChange(false)
163
+ else {
164
+ const errorMsg =
165
+ event.error && event.error.data
166
+ ? event.error.data.code || event.error.data.message
167
+ : 'Connection error'
168
+ cleanAndReject(`Pusher error (${errorMsg})`)
169
+ }
170
+ })
111
171
  })
112
172
  this.pusher.connection.bind('state_change', states => {
113
173
  if (states.current === 'connecting') this.updateAuthHeaders()
@@ -118,17 +178,17 @@ export class HubtypeService {
118
178
  return connectionPromise
119
179
  }
120
180
 
121
- constructHeaders() {
181
+ constructHeaders(): BotonicHeaders {
122
182
  const headers = {}
123
183
  if (this.user && this.user.id) headers['X-BOTONIC-USER-ID'] = this.user.id
124
184
  if (this.lastMessageId)
125
185
  headers['X-BOTONIC-LAST-MESSAGE-ID'] = this.lastMessageId
126
186
  if (this.lastMessageUpdateDate)
127
187
  headers['X-BOTONIC-LAST-MESSAGE-UPDATE-DATE'] = this.lastMessageUpdateDate
128
- return headers
188
+ return headers as BotonicHeaders
129
189
  }
130
190
 
131
- resolveServerConfig() {
191
+ resolveServerConfig(): ServerConfig {
132
192
  if (!this.server) {
133
193
  return { activityTimeout: ACTIVITY_TIMEOUT, pongTimeout: PONG_TIMEOUT }
134
194
  }
@@ -138,7 +198,7 @@ export class HubtypeService {
138
198
  }
139
199
  }
140
200
 
141
- updateAuthHeaders() {
201
+ updateAuthHeaders(): void {
142
202
  if (this.pusher) {
143
203
  this.pusher.config.auth.headers = {
144
204
  ...this.pusher.config.auth.headers,
@@ -147,26 +207,26 @@ export class HubtypeService {
147
207
  }
148
208
  }
149
209
 
150
- handleConnectionChange(online) {
210
+ handleConnectionChange(online: boolean): void {
151
211
  this.onPusherEvent({ action: 'connectionChange', online })
152
212
  }
153
213
 
154
- onPusherEvent(event) {
214
+ onPusherEvent(event: any): void {
155
215
  if (this.onEvent && typeof this.onEvent === 'function') this.onEvent(event)
156
216
  }
157
217
 
158
- get pusherChannel() {
218
+ get pusherChannel(): string {
159
219
  return `private-encrypted-${this.appId}-${this.user.id}`
160
220
  }
161
221
 
162
- handleSentInput(message) {
222
+ handleSentInput(message: any): void {
163
223
  this.onEvent({
164
224
  action: 'update_message_info',
165
225
  message: { id: message.id, ack: 1 },
166
226
  })
167
227
  }
168
228
 
169
- handleUnsentInput(message) {
229
+ handleUnsentInput(message: any): void {
170
230
  this.onEvent({
171
231
  action: 'update_message_info',
172
232
  message: { id: message.id, ack: 0, unsentInput: message },
@@ -176,8 +236,9 @@ export class HubtypeService {
176
236
  /**
177
237
  * @return {Promise<void>}
178
238
  */
179
- async postMessage(user, message) {
239
+ async postMessage(user: SessionUser, message: any): Promise<void> {
180
240
  try {
241
+ // @ts-ignore
181
242
  await this.init(user)
182
243
  await axios.post(
183
244
  `${_HUBTYPE_API_URL_}/v1/provider_accounts/webhooks/webchat/${this.appId}/`,
@@ -196,26 +257,30 @@ export class HubtypeService {
196
257
  return Promise.resolve()
197
258
  }
198
259
 
199
- static async getWebchatVisibility({ appId }) {
260
+ static async getWebchatVisibility({
261
+ appId,
262
+ }: {
263
+ appId: string
264
+ }): Promise<AxiosResponse<any>> {
200
265
  return axios.get(
201
266
  `${_HUBTYPE_API_URL_}/v1/provider_accounts/${appId}/visibility/`
202
267
  )
203
268
  }
204
269
 
205
- destroyPusher() {
270
+ destroyPusher(): void {
206
271
  if (!this.pusher) return
207
272
  this.pusher.disconnect()
208
273
  this.pusher.unsubscribe(this.pusherChannel)
209
274
  this.pusher.unbind_all()
210
- this.pusher.channels = {}
275
+ this.pusher.channels = {} as Channels
211
276
  this.pusher = null
212
277
  }
213
278
 
214
- async onConnectionRegained() {
279
+ async onConnectionRegained(): Promise<void> {
215
280
  await this.resendUnsentInputs()
216
281
  }
217
282
 
218
- async resendUnsentInputs() {
283
+ async resendUnsentInputs(): Promise<void> {
219
284
  for (const message of this.unsentInputs()) {
220
285
  message.unsentInput &&
221
286
  (await this.postMessage(this.user, message.unsentInput))
@@ -1,5 +1,11 @@
1
1
  // eslint-disable-next-line filenames/match-regex
2
- export const getString = (locales, locale, stringID) => {
2
+ import { Locales } from './models'
3
+
4
+ export const getString = (
5
+ locales: Locales,
6
+ locale: string,
7
+ stringID: string
8
+ ): string => {
3
9
  let l = stringID.split('.').reduce((o, i) => o[i], locales[locale])
4
10
  if (l instanceof Array) l = l[Math.floor(Math.random() * l.length)]
5
11
  return String(l)
package/src/index.ts ADDED
@@ -0,0 +1,13 @@
1
+ export * from './constants'
2
+ export * from './core-bot'
3
+ // TODO: Review @botonic/react's tree-shaking to remove dataProvider from bundle
4
+ // export * from './data-provider'
5
+ export * from './debug'
6
+ export * from './handoff'
7
+ export * from './hubtype-service'
8
+ export * from './i18n'
9
+ export * from './models'
10
+ export * from './output-parser'
11
+ export * from './plugins'
12
+ export * from './routing'
13
+ export * from './utils'
@@ -0,0 +1,14 @@
1
+ export enum EventTypes {
2
+ CONNECTION = 'connection',
3
+ MESSAGE = 'message',
4
+ ACK = 'ack',
5
+ TRACK = 'track',
6
+ }
7
+
8
+ export interface BaseEvent {
9
+ eventId: string
10
+ userId: string
11
+ eventType: EventTypes
12
+ createdAt: string
13
+ modifiedAt?: string
14
+ }
@@ -0,0 +1,24 @@
1
+ import { ConnectionEvent } from './connections'
2
+ import {
3
+ AudioMessageEvent,
4
+ CarouselMessageEvent,
5
+ CustomMessageEvent,
6
+ DocumentMessageEvent,
7
+ ImageMessageEvent,
8
+ LocationMessageEvent,
9
+ PostbackMessageEvent,
10
+ TextMessageEvent,
11
+ VideoMessageEvent,
12
+ } from './message'
13
+
14
+ export type BotonicEvent =
15
+ | TextMessageEvent
16
+ | PostbackMessageEvent
17
+ | AudioMessageEvent
18
+ | DocumentMessageEvent
19
+ | ImageMessageEvent
20
+ | VideoMessageEvent
21
+ | LocationMessageEvent
22
+ | CarouselMessageEvent
23
+ | CustomMessageEvent
24
+ | ConnectionEvent
@@ -0,0 +1,11 @@
1
+ import { BaseEvent, EventTypes } from '../base-event'
2
+
3
+ export enum ConnectionEventStatuses {
4
+ CONNECTED = 'connected',
5
+ DISCONNECTED = 'disconnected',
6
+ }
7
+
8
+ export interface ConnectionEvent extends BaseEvent {
9
+ eventType: EventTypes.CONNECTION
10
+ status: ConnectionEventStatuses
11
+ }