@botonic/core 1.0.0-dev.2 → 2.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/CHANGELOG.md +226 -0
  2. package/README.md +18 -9
  3. package/package.json +19 -57
  4. package/src/index.d.ts +4 -0
  5. package/src/index.js +5 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/core-bot/index.d.ts +33 -0
  8. package/src/lib/core-bot/index.js +113 -0
  9. package/src/lib/core-bot/index.js.map +1 -0
  10. package/src/lib/hubtype-service/handoff.d.ts +4 -0
  11. package/src/lib/hubtype-service/handoff.js +32 -0
  12. package/src/lib/hubtype-service/handoff.js.map +1 -0
  13. package/src/lib/hubtype-service/index.d.ts +10 -0
  14. package/src/lib/hubtype-service/index.js +96 -0
  15. package/src/lib/hubtype-service/index.js.map +1 -0
  16. package/src/lib/messages/button.d.ts +8 -0
  17. package/src/lib/messages/button.js +10 -0
  18. package/src/lib/messages/button.js.map +1 -0
  19. package/src/lib/plugins/index.d.ts +2 -0
  20. package/src/lib/plugins/index.js +23 -0
  21. package/src/lib/plugins/index.js.map +1 -0
  22. package/src/lib/routes/index.d.ts +0 -0
  23. package/src/lib/routes/index.js +2 -0
  24. package/src/lib/routes/index.js.map +1 -0
  25. package/src/lib/routes/router.d.ts +14 -0
  26. package/src/lib/routes/router.js +68 -0
  27. package/src/lib/routes/router.js.map +1 -0
  28. package/src/lib/routes/types.d.ts +15 -0
  29. package/src/lib/routes/types.js +2 -0
  30. package/src/lib/routes/types.js.map +1 -0
  31. package/{lib/cjs/utils.d.ts → src/lib/utils/index.d.ts} +0 -4
  32. package/{lib/esm/utils.js → src/lib/utils/index.js} +1 -34
  33. package/src/lib/utils/index.js.map +1 -0
  34. package/lib/cjs/constants.d.ts +0 -4
  35. package/lib/cjs/constants.js +0 -8
  36. package/lib/cjs/constants.js.map +0 -1
  37. package/lib/cjs/core-bot.d.ts +0 -36
  38. package/lib/cjs/core-bot.js +0 -96
  39. package/lib/cjs/core-bot.js.map +0 -1
  40. package/lib/cjs/debug/index.d.ts +0 -1
  41. package/lib/cjs/debug/index.js +0 -5
  42. package/lib/cjs/debug/index.js.map +0 -1
  43. package/lib/cjs/debug/inspector.d.ts +0 -24
  44. package/lib/cjs/debug/inspector.js +0 -72
  45. package/lib/cjs/debug/inspector.js.map +0 -1
  46. package/lib/cjs/handoff.d.ts +0 -67
  47. package/lib/cjs/handoff.js +0 -186
  48. package/lib/cjs/handoff.js.map +0 -1
  49. package/lib/cjs/hubtype-service.d.ts +0 -69
  50. package/lib/cjs/hubtype-service.js +0 -190
  51. package/lib/cjs/hubtype-service.js.map +0 -1
  52. package/lib/cjs/i18n.d.ts +0 -2
  53. package/lib/cjs/i18n.js +0 -11
  54. package/lib/cjs/i18n.js.map +0 -1
  55. package/lib/cjs/index.d.ts +0 -11
  56. package/lib/cjs/index.js +0 -15
  57. package/lib/cjs/index.js.map +0 -1
  58. package/lib/cjs/models/bot-state.d.ts +0 -11
  59. package/lib/cjs/models/bot-state.js +0 -3
  60. package/lib/cjs/models/bot-state.js.map +0 -1
  61. package/lib/cjs/models/channels.d.ts +0 -9
  62. package/lib/cjs/models/channels.js +0 -14
  63. package/lib/cjs/models/channels.js.map +0 -1
  64. package/lib/cjs/models/events/base-event.d.ts +0 -20
  65. package/lib/cjs/models/events/base-event.js +0 -17
  66. package/lib/cjs/models/events/base-event.js.map +0 -1
  67. package/lib/cjs/models/events/botonic-event.d.ts +0 -4
  68. package/lib/cjs/models/events/botonic-event.js +0 -3
  69. package/lib/cjs/models/events/botonic-event.js.map +0 -1
  70. package/lib/cjs/models/events/connection/connection-event.d.ts +0 -9
  71. package/lib/cjs/models/events/connection/connection-event.js +0 -9
  72. package/lib/cjs/models/events/connection/connection-event.js.map +0 -1
  73. package/lib/cjs/models/events/connection/index.d.ts +0 -1
  74. package/lib/cjs/models/events/connection/index.js +0 -5
  75. package/lib/cjs/models/events/connection/index.js.map +0 -1
  76. package/lib/cjs/models/events/index.d.ts +0 -4
  77. package/lib/cjs/models/events/index.js +0 -8
  78. package/lib/cjs/models/events/index.js.map +0 -1
  79. package/lib/cjs/models/events/integration/index.d.ts +0 -1
  80. package/lib/cjs/models/events/integration/index.js +0 -5
  81. package/lib/cjs/models/events/integration/index.js.map +0 -1
  82. package/lib/cjs/models/events/integration/integration-event.d.ts +0 -6
  83. package/lib/cjs/models/events/integration/integration-event.js +0 -3
  84. package/lib/cjs/models/events/integration/integration-event.js.map +0 -1
  85. package/lib/cjs/models/events/message/buttons.d.ts +0 -18
  86. package/lib/cjs/models/events/message/buttons.js +0 -3
  87. package/lib/cjs/models/events/message/buttons.js.map +0 -1
  88. package/lib/cjs/models/events/message/carousel.d.ts +0 -11
  89. package/lib/cjs/models/events/message/carousel.js +0 -3
  90. package/lib/cjs/models/events/message/carousel.js.map +0 -1
  91. package/lib/cjs/models/events/message/custom.d.ts +0 -6
  92. package/lib/cjs/models/events/message/custom.js +0 -3
  93. package/lib/cjs/models/events/message/custom.js.map +0 -1
  94. package/lib/cjs/models/events/message/index.d.ts +0 -9
  95. package/lib/cjs/models/events/message/index.js +0 -13
  96. package/lib/cjs/models/events/message/index.js.map +0 -1
  97. package/lib/cjs/models/events/message/location.d.ts +0 -6
  98. package/lib/cjs/models/events/message/location.js +0 -3
  99. package/lib/cjs/models/events/message/location.js.map +0 -1
  100. package/lib/cjs/models/events/message/media.d.ts +0 -18
  101. package/lib/cjs/models/events/message/media.js +0 -11
  102. package/lib/cjs/models/events/message/media.js.map +0 -1
  103. package/lib/cjs/models/events/message/message-event.d.ts +0 -30
  104. package/lib/cjs/models/events/message/message-event.js +0 -32
  105. package/lib/cjs/models/events/message/message-event.js.map +0 -1
  106. package/lib/cjs/models/events/message/postback.d.ts +0 -4
  107. package/lib/cjs/models/events/message/postback.js +0 -3
  108. package/lib/cjs/models/events/message/postback.js.map +0 -1
  109. package/lib/cjs/models/events/message/replies.d.ts +0 -7
  110. package/lib/cjs/models/events/message/replies.js +0 -3
  111. package/lib/cjs/models/events/message/replies.js.map +0 -1
  112. package/lib/cjs/models/events/message/text.d.ts +0 -8
  113. package/lib/cjs/models/events/message/text.js +0 -3
  114. package/lib/cjs/models/events/message/text.js.map +0 -1
  115. package/lib/cjs/models/index.d.ts +0 -6
  116. package/lib/cjs/models/index.js +0 -10
  117. package/lib/cjs/models/index.js.map +0 -1
  118. package/lib/cjs/models/legacy-types.d.ts +0 -184
  119. package/lib/cjs/models/legacy-types.js +0 -59
  120. package/lib/cjs/models/legacy-types.js.map +0 -1
  121. package/lib/cjs/models/session.d.ts +0 -3
  122. package/lib/cjs/models/session.js +0 -3
  123. package/lib/cjs/models/session.js.map +0 -1
  124. package/lib/cjs/models/user.d.ts +0 -14
  125. package/lib/cjs/models/user.js +0 -3
  126. package/lib/cjs/models/user.js.map +0 -1
  127. package/lib/cjs/output-parser/botonic-output-parser.d.ts +0 -16
  128. package/lib/cjs/output-parser/botonic-output-parser.js +0 -37
  129. package/lib/cjs/output-parser/botonic-output-parser.js.map +0 -1
  130. package/lib/cjs/output-parser/factory.d.ts +0 -4
  131. package/lib/cjs/output-parser/factory.js +0 -32
  132. package/lib/cjs/output-parser/factory.js.map +0 -1
  133. package/lib/cjs/output-parser/index.d.ts +0 -3
  134. package/lib/cjs/output-parser/index.js +0 -7
  135. package/lib/cjs/output-parser/index.js.map +0 -1
  136. package/lib/cjs/output-parser/parsers.d.ts +0 -22
  137. package/lib/cjs/output-parser/parsers.js +0 -147
  138. package/lib/cjs/output-parser/parsers.js.map +0 -1
  139. package/lib/cjs/plugins.d.ts +0 -6
  140. package/lib/cjs/plugins.js +0 -48
  141. package/lib/cjs/plugins.js.map +0 -1
  142. package/lib/cjs/routing/index.d.ts +0 -2
  143. package/lib/cjs/routing/index.js +0 -6
  144. package/lib/cjs/routing/index.js.map +0 -1
  145. package/lib/cjs/routing/router-utils.d.ts +0 -11
  146. package/lib/cjs/routing/router-utils.js +0 -89
  147. package/lib/cjs/routing/router-utils.js.map +0 -1
  148. package/lib/cjs/routing/router.d.ts +0 -54
  149. package/lib/cjs/routing/router.js +0 -319
  150. package/lib/cjs/routing/router.js.map +0 -1
  151. package/lib/cjs/utils.js +0 -90
  152. package/lib/cjs/utils.js.map +0 -1
  153. package/lib/esm/constants.d.ts +0 -4
  154. package/lib/esm/constants.js +0 -5
  155. package/lib/esm/constants.js.map +0 -1
  156. package/lib/esm/core-bot.d.ts +0 -36
  157. package/lib/esm/core-bot.js +0 -92
  158. package/lib/esm/core-bot.js.map +0 -1
  159. package/lib/esm/debug/index.d.ts +0 -1
  160. package/lib/esm/debug/index.js +0 -2
  161. package/lib/esm/debug/index.js.map +0 -1
  162. package/lib/esm/debug/inspector.d.ts +0 -24
  163. package/lib/esm/debug/inspector.js +0 -65
  164. package/lib/esm/debug/inspector.js.map +0 -1
  165. package/lib/esm/handoff.d.ts +0 -67
  166. package/lib/esm/handoff.js +0 -173
  167. package/lib/esm/handoff.js.map +0 -1
  168. package/lib/esm/hubtype-service.d.ts +0 -69
  169. package/lib/esm/hubtype-service.js +0 -185
  170. package/lib/esm/hubtype-service.js.map +0 -1
  171. package/lib/esm/i18n.d.ts +0 -2
  172. package/lib/esm/i18n.js +0 -7
  173. package/lib/esm/i18n.js.map +0 -1
  174. package/lib/esm/index.d.ts +0 -11
  175. package/lib/esm/index.js +0 -12
  176. package/lib/esm/index.js.map +0 -1
  177. package/lib/esm/models/bot-state.d.ts +0 -11
  178. package/lib/esm/models/bot-state.js +0 -2
  179. package/lib/esm/models/bot-state.js.map +0 -1
  180. package/lib/esm/models/channels.d.ts +0 -9
  181. package/lib/esm/models/channels.js +0 -11
  182. package/lib/esm/models/channels.js.map +0 -1
  183. package/lib/esm/models/events/base-event.d.ts +0 -20
  184. package/lib/esm/models/events/base-event.js +0 -14
  185. package/lib/esm/models/events/base-event.js.map +0 -1
  186. package/lib/esm/models/events/botonic-event.d.ts +0 -4
  187. package/lib/esm/models/events/botonic-event.js +0 -2
  188. package/lib/esm/models/events/botonic-event.js.map +0 -1
  189. package/lib/esm/models/events/connection/connection-event.d.ts +0 -9
  190. package/lib/esm/models/events/connection/connection-event.js +0 -6
  191. package/lib/esm/models/events/connection/connection-event.js.map +0 -1
  192. package/lib/esm/models/events/connection/index.d.ts +0 -1
  193. package/lib/esm/models/events/connection/index.js +0 -2
  194. package/lib/esm/models/events/connection/index.js.map +0 -1
  195. package/lib/esm/models/events/index.d.ts +0 -4
  196. package/lib/esm/models/events/index.js +0 -5
  197. package/lib/esm/models/events/index.js.map +0 -1
  198. package/lib/esm/models/events/integration/index.d.ts +0 -1
  199. package/lib/esm/models/events/integration/index.js +0 -2
  200. package/lib/esm/models/events/integration/index.js.map +0 -1
  201. package/lib/esm/models/events/integration/integration-event.d.ts +0 -6
  202. package/lib/esm/models/events/integration/integration-event.js +0 -2
  203. package/lib/esm/models/events/integration/integration-event.js.map +0 -1
  204. package/lib/esm/models/events/message/buttons.d.ts +0 -18
  205. package/lib/esm/models/events/message/buttons.js +0 -2
  206. package/lib/esm/models/events/message/buttons.js.map +0 -1
  207. package/lib/esm/models/events/message/carousel.d.ts +0 -11
  208. package/lib/esm/models/events/message/carousel.js +0 -2
  209. package/lib/esm/models/events/message/carousel.js.map +0 -1
  210. package/lib/esm/models/events/message/custom.d.ts +0 -6
  211. package/lib/esm/models/events/message/custom.js +0 -2
  212. package/lib/esm/models/events/message/custom.js.map +0 -1
  213. package/lib/esm/models/events/message/index.d.ts +0 -9
  214. package/lib/esm/models/events/message/index.js +0 -10
  215. package/lib/esm/models/events/message/index.js.map +0 -1
  216. package/lib/esm/models/events/message/location.d.ts +0 -6
  217. package/lib/esm/models/events/message/location.js +0 -2
  218. package/lib/esm/models/events/message/location.js.map +0 -1
  219. package/lib/esm/models/events/message/media.d.ts +0 -18
  220. package/lib/esm/models/events/message/media.js +0 -8
  221. package/lib/esm/models/events/message/media.js.map +0 -1
  222. package/lib/esm/models/events/message/message-event.d.ts +0 -30
  223. package/lib/esm/models/events/message/message-event.js +0 -29
  224. package/lib/esm/models/events/message/message-event.js.map +0 -1
  225. package/lib/esm/models/events/message/postback.d.ts +0 -4
  226. package/lib/esm/models/events/message/postback.js +0 -2
  227. package/lib/esm/models/events/message/postback.js.map +0 -1
  228. package/lib/esm/models/events/message/replies.d.ts +0 -7
  229. package/lib/esm/models/events/message/replies.js +0 -2
  230. package/lib/esm/models/events/message/replies.js.map +0 -1
  231. package/lib/esm/models/events/message/text.d.ts +0 -8
  232. package/lib/esm/models/events/message/text.js +0 -2
  233. package/lib/esm/models/events/message/text.js.map +0 -1
  234. package/lib/esm/models/index.d.ts +0 -6
  235. package/lib/esm/models/index.js +0 -7
  236. package/lib/esm/models/index.js.map +0 -1
  237. package/lib/esm/models/legacy-types.d.ts +0 -184
  238. package/lib/esm/models/legacy-types.js +0 -56
  239. package/lib/esm/models/legacy-types.js.map +0 -1
  240. package/lib/esm/models/session.d.ts +0 -3
  241. package/lib/esm/models/session.js +0 -2
  242. package/lib/esm/models/session.js.map +0 -1
  243. package/lib/esm/models/user.d.ts +0 -14
  244. package/lib/esm/models/user.js +0 -2
  245. package/lib/esm/models/user.js.map +0 -1
  246. package/lib/esm/output-parser/botonic-output-parser.d.ts +0 -16
  247. package/lib/esm/output-parser/botonic-output-parser.js +0 -33
  248. package/lib/esm/output-parser/botonic-output-parser.js.map +0 -1
  249. package/lib/esm/output-parser/factory.d.ts +0 -4
  250. package/lib/esm/output-parser/factory.js +0 -28
  251. package/lib/esm/output-parser/factory.js.map +0 -1
  252. package/lib/esm/output-parser/index.d.ts +0 -3
  253. package/lib/esm/output-parser/index.js +0 -4
  254. package/lib/esm/output-parser/index.js.map +0 -1
  255. package/lib/esm/output-parser/parsers.d.ts +0 -22
  256. package/lib/esm/output-parser/parsers.js +0 -130
  257. package/lib/esm/output-parser/parsers.js.map +0 -1
  258. package/lib/esm/plugins.d.ts +0 -6
  259. package/lib/esm/plugins.js +0 -43
  260. package/lib/esm/plugins.js.map +0 -1
  261. package/lib/esm/routing/index.d.ts +0 -2
  262. package/lib/esm/routing/index.js +0 -3
  263. package/lib/esm/routing/index.js.map +0 -1
  264. package/lib/esm/routing/router-utils.d.ts +0 -11
  265. package/lib/esm/routing/router-utils.js +0 -79
  266. package/lib/esm/routing/router-utils.js.map +0 -1
  267. package/lib/esm/routing/router.d.ts +0 -54
  268. package/lib/esm/routing/router.js +0 -315
  269. package/lib/esm/routing/router.js.map +0 -1
  270. package/lib/esm/utils.d.ts +0 -11
  271. package/lib/esm/utils.js.map +0 -1
  272. package/src/constants.ts +0 -6
  273. package/src/core-bot.ts +0 -181
  274. package/src/debug/index.ts +0 -1
  275. package/src/debug/inspector.ts +0 -102
  276. package/src/handoff.ts +0 -271
  277. package/src/hubtype-service.ts +0 -266
  278. package/src/i18n.ts +0 -12
  279. package/src/index.ts +0 -11
  280. package/src/models/bot-state.ts +0 -12
  281. package/src/models/channels.ts +0 -9
  282. package/src/models/events/base-event.ts +0 -22
  283. package/src/models/events/botonic-event.ts +0 -26
  284. package/src/models/events/connection/connection-event.ts +0 -11
  285. package/src/models/events/connection/index.ts +0 -1
  286. package/src/models/events/index.ts +0 -4
  287. package/src/models/events/integration/index.ts +0 -1
  288. package/src/models/events/integration/integration-event.ts +0 -13
  289. package/src/models/events/message/buttons.ts +0 -23
  290. package/src/models/events/message/carousel.ts +0 -13
  291. package/src/models/events/message/custom.ts +0 -7
  292. package/src/models/events/message/index.ts +0 -9
  293. package/src/models/events/message/location.ts +0 -7
  294. package/src/models/events/message/media.ts +0 -28
  295. package/src/models/events/message/message-event.ts +0 -37
  296. package/src/models/events/message/postback.ts +0 -5
  297. package/src/models/events/message/replies.ts +0 -8
  298. package/src/models/events/message/text.ts +0 -12
  299. package/src/models/index.ts +0 -6
  300. package/src/models/legacy-types.ts +0 -262
  301. package/src/models/session.ts +0 -3
  302. package/src/models/user.ts +0 -16
  303. package/src/output-parser/botonic-output-parser.ts +0 -38
  304. package/src/output-parser/factory.ts +0 -38
  305. package/src/output-parser/index.ts +0 -3
  306. package/src/output-parser/parsers.ts +0 -202
  307. package/src/plugins.ts +0 -59
  308. package/src/routing/index.ts +0 -2
  309. package/src/routing/router-utils.ts +0 -100
  310. package/src/routing/router.ts +0 -415
  311. package/src/utils.ts +0 -90
@@ -1,202 +0,0 @@
1
- import {
2
- AudioMessageEvent,
3
- BotonicMessageEvent,
4
- Button,
5
- CarouselElement,
6
- CarouselMessageEvent,
7
- CustomMessageEvent,
8
- DocumentMessageEvent,
9
- EventTypes,
10
- ImageMessageEvent,
11
- LocationMessageEvent,
12
- PostbackMessageEvent,
13
- Reply,
14
- TextMessageEvent,
15
- VideoMessageEvent,
16
- WithButtons,
17
- WithReplies,
18
- } from '../models'
19
- import { TEXT_NODE_NAME } from './botonic-output-parser'
20
-
21
- export function parseNumber(strNumber: string): number {
22
- return parseInt(strNumber)
23
- }
24
-
25
- export function parseBoolean(strNumber: string): boolean {
26
- if (strNumber === '0') return false
27
- return true
28
- }
29
-
30
- export type ParseFunction<Out> = (args: {
31
- toParse: any
32
- parsed?: any
33
- }) => {
34
- toParse: any
35
- parsed: Partial<Out>
36
- }
37
-
38
- // COMMON
39
- export const parseMessage: ParseFunction<BotonicMessageEvent> = args => {
40
- const typingAndDelay = {}
41
- if (args.toParse.delay !== undefined) {
42
- typingAndDelay['delay'] = parseNumber(args.toParse.delay)
43
- }
44
- if (args.toParse.typing !== undefined) {
45
- typingAndDelay['typing'] = parseNumber(args.toParse.typing)
46
- }
47
- return {
48
- toParse: args.toParse,
49
- parsed: {
50
- // Following properties added later before saving event: eventId, userId, createdAt, from, ack
51
- eventType: EventTypes.MESSAGE,
52
- type: args.toParse.type,
53
- ack: args.toParse.ack,
54
- from: args.toParse.from,
55
- channel: args.toParse.channel,
56
- idFromChannel: args.toParse.idFromChannel,
57
- ...typingAndDelay,
58
- },
59
- }
60
- }
61
-
62
- // BUTTONS
63
- export const parseButton = (button: any): Button => {
64
- const title = button[TEXT_NODE_NAME]
65
- if ('payload' in button) {
66
- return { title, payload: button.payload }
67
- }
68
- if ('url' in button) {
69
- const b = { title, url: button.url, target: button.target }
70
- if (button.target) b.target = button.target
71
- return b
72
- }
73
- if ('webview' in button) {
74
- return {
75
- title,
76
- webview: button.webview,
77
- params: button.params,
78
- }
79
- }
80
- throw new Error('Invalid parsed Button')
81
- }
82
-
83
- export const parseButtons: ParseFunction<WithButtons> = args => {
84
- const hasButtons = args.toParse?.button?.length > 0
85
- let buttons: Button[] = []
86
- if (hasButtons) {
87
- buttons = args.toParse.button.map(button => parseButton(button))
88
- }
89
- return {
90
- toParse: args.toParse,
91
- parsed: {
92
- ...args.parsed,
93
- buttons,
94
- },
95
- }
96
- }
97
-
98
- // REPLIES
99
- export const parseReply = (reply: any): Reply => ({
100
- title: reply[TEXT_NODE_NAME],
101
- payload: reply.payload,
102
- })
103
-
104
- export const parseReplies: ParseFunction<WithReplies> = args => {
105
- const hasReplies = args.toParse?.reply?.length > 0
106
- let replies: Reply[] = []
107
- if (hasReplies) {
108
- replies = args.toParse.reply.map(reply => parseReply(reply))
109
- }
110
- return {
111
- toParse: args.toParse,
112
- parsed: {
113
- ...args.parsed,
114
- replies,
115
- },
116
- }
117
- }
118
-
119
- // TEXT
120
- export const parseText: ParseFunction<TextMessageEvent> = args => {
121
- return {
122
- toParse: args.toParse,
123
- parsed: {
124
- ...args.parsed,
125
- text: args.toParse[TEXT_NODE_NAME],
126
- markdown: parseBoolean(args.toParse.markdown),
127
- },
128
- }
129
- }
130
-
131
- // POSTBACK
132
-
133
- export const parsePostback: ParseFunction<PostbackMessageEvent> = args => {
134
- return {
135
- toParse: args.toParse,
136
- parsed: {
137
- ...args.parsed,
138
- payload: args.toParse.payload,
139
- },
140
- }
141
- }
142
-
143
- // MEDIA
144
- export const parseMedia: ParseFunction<
145
- | AudioMessageEvent
146
- | DocumentMessageEvent
147
- | ImageMessageEvent
148
- | VideoMessageEvent
149
- > = args => {
150
- return {
151
- toParse: args.toParse,
152
- parsed: {
153
- ...args.parsed,
154
- src: args.toParse.src,
155
- },
156
- }
157
- }
158
-
159
- // LOCATION
160
- export const parseLocation: ParseFunction<LocationMessageEvent> = args => {
161
- return {
162
- toParse: args.toParse,
163
- parsed: {
164
- ...args.parsed,
165
- lat: args.toParse.lat,
166
- long: args.toParse.long,
167
- },
168
- }
169
- }
170
-
171
- // CAROUSEL
172
- export const parseElement = (element: any): CarouselElement => {
173
- const e: CarouselElement = {
174
- pic: element.pic,
175
- title: element.title,
176
- subtitle: element.desc,
177
- }
178
- const hasButtons = element.button !== undefined
179
- if (hasButtons) e.buttons = element.button.map(b => parseButton(b))
180
- return e
181
- }
182
-
183
- export const parseCarousel: ParseFunction<CarouselMessageEvent> = args => {
184
- return {
185
- toParse: args.toParse,
186
- parsed: {
187
- ...args.parsed,
188
- elements: args.toParse.element.map(element => parseElement(element)),
189
- },
190
- }
191
- }
192
-
193
- // CUSTOM
194
- export const parseCustom: ParseFunction<CustomMessageEvent> = args => {
195
- return {
196
- toParse: args.toParse,
197
- parsed: {
198
- ...args.parsed,
199
- json: JSON.parse(args.toParse.json),
200
- },
201
- }
202
- }
package/src/plugins.ts DELETED
@@ -1,59 +0,0 @@
1
- import {
2
- BotonicEvent,
3
- BotState,
4
- Input,
5
- PluginConfig,
6
- RoutePath,
7
- Session,
8
- } from './models'
9
-
10
- type PluginMode = 'pre' | 'post'
11
-
12
- export function loadPlugins(plugins: PluginConfig<any>[]): any {
13
- if (!plugins) return []
14
- const _plugins = {}
15
- const pluginsLength = plugins.length
16
- for (let i = 0; i < pluginsLength; i++) {
17
- const pluginRequired = plugins[i].resolve
18
- const options = plugins[i].options
19
- const Plugin = pluginRequired.default
20
- const instance = new Plugin(options)
21
- const id = plugins[i].id || `${instance.constructor.name}`
22
- _plugins[id] = instance
23
- _plugins[id].id = id
24
- _plugins[id].config = options
25
- _plugins[id].name = `${instance.constructor.name}`
26
- }
27
- return _plugins
28
- }
29
-
30
- export async function runPlugins(
31
- plugins: any, // // TODO: Add type for resolvedPlugins, they differ from loaded plugins
32
- mode: PluginMode,
33
- input: Input,
34
- session: Session,
35
- botState: BotState,
36
- response: string | null = null,
37
- messageEvents: Partial<BotonicEvent>[] | null = null,
38
- dataProvider?: any // TODO: type as dataProvider
39
- ): Promise<void> {
40
- for (const key in plugins) {
41
- const p = await plugins[key]
42
- try {
43
- if (mode === 'pre')
44
- await p.pre({ input, session, botState, dataProvider, plugins })
45
- if (mode === 'post')
46
- await p.post({
47
- input,
48
- session,
49
- botState,
50
- response,
51
- messageEvents,
52
- dataProvider,
53
- plugins,
54
- })
55
- } catch (e) {
56
- console.log(e)
57
- }
58
- }
59
- }
@@ -1,2 +0,0 @@
1
- export * from './router'
2
- export * from './router-utils'
@@ -1,100 +0,0 @@
1
- import {
2
- EMPTY_ACTION_PATH,
3
- NOT_FOUND_PATH,
4
- PATH_PAYLOAD_IDENTIFIER,
5
- PATH_PAYLOAD_REGEXP,
6
- } from '../constants'
7
- import {
8
- Action,
9
- BotRequest,
10
- Input,
11
- Params,
12
- PathParams,
13
- Route,
14
- Routes,
15
- } from '../models'
16
-
17
- export class NoMatchingRouteError extends Error {
18
- input: Input
19
- constructor(input: Input) {
20
- super(
21
- `No route found for input '${JSON.stringify(
22
- input
23
- )}' and no ${NOT_FOUND_PATH} route defined`
24
- )
25
- this.input = input
26
- }
27
- }
28
-
29
- export function isPathPayload(payload?: string): boolean {
30
- if (!payload) return false
31
- const isPathPayload = PATH_PAYLOAD_REGEXP.exec(payload)
32
- return Boolean(isPathPayload)
33
- }
34
-
35
- export function getPathParamsFromPathPayload(payload?: string): PathParams {
36
- const defaultPathParams = {
37
- path: null,
38
- params: {},
39
- }
40
- if (!payload) return defaultPathParams
41
- if (!isPathPayload(payload)) return defaultPathParams
42
- try {
43
- const pathWithParams = payload.split(PATH_PAYLOAD_IDENTIFIER)[1]
44
- if (!pathWithParams) {
45
- throw `${PATH_PAYLOAD_IDENTIFIER} is empty`
46
- }
47
- const [path, params] = pathWithParams.split('?')
48
- return { path: path ?? null, params: pathParamsToParams(params) }
49
- } catch (e) {
50
- console.error('Error getting path and params from input.payload:', e)
51
- return defaultPathParams
52
- }
53
- }
54
-
55
- export function pathParamsToParams(pathParams?: string): Params {
56
- if (!pathParams) return {}
57
- try {
58
- const params = {}
59
- const searchParams = new URLSearchParams(pathParams)
60
- for (const [key, value] of searchParams) {
61
- params[key] = value
62
- }
63
- return params
64
- } catch (e) {
65
- return {}
66
- }
67
- }
68
-
69
- export function getEmptyAction(childRoutes?: Route[]): Action {
70
- if (!childRoutes) return null
71
- const emptyActionRoute = childRoutes.find(r => r.path === EMPTY_ACTION_PATH)
72
- if (!emptyActionRoute) return null
73
- return emptyActionRoute.action
74
- }
75
-
76
- export function getNotFoundAction(input: Input, routes: Route[]): Action {
77
- const notFoundActionRoute = routes.find(r => r.path === NOT_FOUND_PATH)
78
- if (!notFoundActionRoute) throw new NoMatchingRouteError(input)
79
- return notFoundActionRoute.action
80
- }
81
-
82
- export async function getComputedRoutes(
83
- routes: Routes,
84
- request: BotRequest
85
- ): Promise<Route[]> {
86
- if (routes instanceof Function) {
87
- return await getComputedRoutes(await routes(request), request)
88
- }
89
- for (const [key, route] of Object.entries(routes) as any) {
90
- if (route.childRoutes && route.childRoutes instanceof Function) {
91
- routes[key].childRoutes = await getComputedRoutes(
92
- await route.childRoutes(request),
93
- request
94
- )
95
- } else {
96
- routes[key] = route
97
- }
98
- }
99
- return routes
100
- }