@botonic/core 0.26.0 → 0.26.1-alpha.0

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 (102) hide show
  1. package/lib/cjs/core-bot.d.ts +1 -3
  2. package/lib/cjs/core-bot.js +3 -33
  3. package/lib/cjs/core-bot.js.map +1 -1
  4. package/lib/cjs/handoff.d.ts +1 -1
  5. package/lib/cjs/index.d.ts +0 -1
  6. package/lib/cjs/index.js +0 -3
  7. package/lib/cjs/index.js.map +1 -1
  8. package/lib/cjs/models/legacy-types.d.ts +42 -39
  9. package/lib/cjs/models/legacy-types.js +15 -32
  10. package/lib/cjs/models/legacy-types.js.map +1 -1
  11. package/lib/cjs/plugins.d.ts +2 -3
  12. package/lib/cjs/plugins.js +2 -4
  13. package/lib/cjs/plugins.js.map +1 -1
  14. package/lib/cjs/utils.d.ts +8 -0
  15. package/lib/cjs/utils.js +32 -1
  16. package/lib/cjs/utils.js.map +1 -1
  17. package/lib/esm/core-bot.d.ts +1 -3
  18. package/lib/esm/core-bot.js +4 -34
  19. package/lib/esm/core-bot.js.map +1 -1
  20. package/lib/esm/handoff.d.ts +1 -1
  21. package/lib/esm/index.d.ts +0 -1
  22. package/lib/esm/index.js +0 -3
  23. package/lib/esm/index.js.map +1 -1
  24. package/lib/esm/models/legacy-types.d.ts +42 -39
  25. package/lib/esm/models/legacy-types.js +14 -31
  26. package/lib/esm/models/legacy-types.js.map +1 -1
  27. package/lib/esm/plugins.d.ts +2 -3
  28. package/lib/esm/plugins.js +2 -4
  29. package/lib/esm/plugins.js.map +1 -1
  30. package/lib/esm/utils.d.ts +8 -0
  31. package/lib/esm/utils.js +24 -0
  32. package/lib/esm/utils.js.map +1 -1
  33. package/package.json +1 -6
  34. package/src/core-bot.ts +2 -56
  35. package/src/handoff.ts +1 -1
  36. package/src/index.ts +0 -3
  37. package/src/models/legacy-types.ts +76 -76
  38. package/src/plugins.ts +2 -8
  39. package/src/utils.ts +32 -0
  40. package/lib/cjs/data-provider/dynamodb-data-provider.d.ts +0 -26
  41. package/lib/cjs/data-provider/dynamodb-data-provider.js +0 -107
  42. package/lib/cjs/data-provider/dynamodb-data-provider.js.map +0 -1
  43. package/lib/cjs/data-provider/dynamodb-utils.d.ts +0 -11
  44. package/lib/cjs/data-provider/dynamodb-utils.js +0 -121
  45. package/lib/cjs/data-provider/dynamodb-utils.js.map +0 -1
  46. package/lib/cjs/data-provider/factory.d.ts +0 -25
  47. package/lib/cjs/data-provider/factory.js +0 -31
  48. package/lib/cjs/data-provider/factory.js.map +0 -1
  49. package/lib/cjs/data-provider/index.d.ts +0 -4
  50. package/lib/cjs/data-provider/index.js +0 -8
  51. package/lib/cjs/data-provider/index.js.map +0 -1
  52. package/lib/cjs/data-provider/local-data-provider.d.ts +0 -26
  53. package/lib/cjs/data-provider/local-data-provider.js +0 -137
  54. package/lib/cjs/data-provider/local-data-provider.js.map +0 -1
  55. package/lib/cjs/output-parser/botonic-output-parser.d.ts +0 -16
  56. package/lib/cjs/output-parser/botonic-output-parser.js +0 -37
  57. package/lib/cjs/output-parser/botonic-output-parser.js.map +0 -1
  58. package/lib/cjs/output-parser/factory.d.ts +0 -4
  59. package/lib/cjs/output-parser/factory.js +0 -36
  60. package/lib/cjs/output-parser/factory.js.map +0 -1
  61. package/lib/cjs/output-parser/index.d.ts +0 -3
  62. package/lib/cjs/output-parser/index.js +0 -7
  63. package/lib/cjs/output-parser/index.js.map +0 -1
  64. package/lib/cjs/output-parser/parsers.d.ts +0 -26
  65. package/lib/cjs/output-parser/parsers.js +0 -171
  66. package/lib/cjs/output-parser/parsers.js.map +0 -1
  67. package/lib/esm/data-provider/dynamodb-data-provider.d.ts +0 -26
  68. package/lib/esm/data-provider/dynamodb-data-provider.js +0 -103
  69. package/lib/esm/data-provider/dynamodb-data-provider.js.map +0 -1
  70. package/lib/esm/data-provider/dynamodb-utils.d.ts +0 -11
  71. package/lib/esm/data-provider/dynamodb-utils.js +0 -113
  72. package/lib/esm/data-provider/dynamodb-utils.js.map +0 -1
  73. package/lib/esm/data-provider/factory.d.ts +0 -25
  74. package/lib/esm/data-provider/factory.js +0 -27
  75. package/lib/esm/data-provider/factory.js.map +0 -1
  76. package/lib/esm/data-provider/index.d.ts +0 -4
  77. package/lib/esm/data-provider/index.js +0 -5
  78. package/lib/esm/data-provider/index.js.map +0 -1
  79. package/lib/esm/data-provider/local-data-provider.d.ts +0 -26
  80. package/lib/esm/data-provider/local-data-provider.js +0 -133
  81. package/lib/esm/data-provider/local-data-provider.js.map +0 -1
  82. package/lib/esm/output-parser/botonic-output-parser.d.ts +0 -16
  83. package/lib/esm/output-parser/botonic-output-parser.js +0 -33
  84. package/lib/esm/output-parser/botonic-output-parser.js.map +0 -1
  85. package/lib/esm/output-parser/factory.d.ts +0 -4
  86. package/lib/esm/output-parser/factory.js +0 -32
  87. package/lib/esm/output-parser/factory.js.map +0 -1
  88. package/lib/esm/output-parser/index.d.ts +0 -3
  89. package/lib/esm/output-parser/index.js +0 -4
  90. package/lib/esm/output-parser/index.js.map +0 -1
  91. package/lib/esm/output-parser/parsers.d.ts +0 -26
  92. package/lib/esm/output-parser/parsers.js +0 -151
  93. package/lib/esm/output-parser/parsers.js.map +0 -1
  94. package/src/data-provider/dynamodb-data-provider.ts +0 -105
  95. package/src/data-provider/dynamodb-utils.ts +0 -149
  96. package/src/data-provider/factory.ts +0 -60
  97. package/src/data-provider/index.ts +0 -4
  98. package/src/data-provider/local-data-provider.ts +0 -154
  99. package/src/output-parser/botonic-output-parser.ts +0 -38
  100. package/src/output-parser/factory.ts +0 -45
  101. package/src/output-parser/index.ts +0 -3
  102. package/src/output-parser/parsers.ts +0 -237
@@ -1,45 +0,0 @@
1
- import { BotonicEvent, MEDIA_TYPES, MessageEventTypes } from '../models'
2
- import {
3
- parseButtons,
4
- parseCarousel,
5
- parseContact,
6
- parseCustom,
7
- parseForm,
8
- parseLocation,
9
- parseMedia,
10
- parseMessage,
11
- parseMissed,
12
- parsePostback,
13
- parseReplies,
14
- parseText,
15
- } from './parsers'
16
-
17
- export class MessageParsingFactory {
18
- parse(msgToParse: any): Partial<BotonicEvent> {
19
- const type = msgToParse.type
20
- const parsedMessage = parseMessage({ toParse: msgToParse })
21
- if (MEDIA_TYPES.includes(type)) {
22
- return parseMedia(parseButtons(parsedMessage)).parsed
23
- }
24
- switch (type) {
25
- case MessageEventTypes.TEXT:
26
- // statement 1
27
- return parseText(parseReplies(parseButtons(parsedMessage))).parsed
28
- case MessageEventTypes.POSTBACK:
29
- return parsePostback(parsedMessage).parsed
30
- case MessageEventTypes.LOCATION:
31
- return parseLocation(parsedMessage).parsed
32
- case MessageEventTypes.CAROUSEL:
33
- return parseCarousel(parsedMessage).parsed
34
- case MessageEventTypes.CUSTOM:
35
- return parseCustom(parseReplies(parsedMessage)).parsed
36
- case MessageEventTypes.FORM:
37
- return parseForm(parsedMessage).parsed
38
- case MessageEventTypes.CONTACT:
39
- return parseContact(parsedMessage).parsed
40
- case MessageEventTypes.MISSED:
41
- return parseMissed(parsedMessage).parsed
42
- }
43
- throw new Error(`Parsing for type: '${type}' not implemented.`)
44
- }
45
- }
@@ -1,3 +0,0 @@
1
- export * from './botonic-output-parser'
2
- export * from './factory'
3
- export * from './parsers'
@@ -1,237 +0,0 @@
1
- import {
2
- AudioMessageEvent,
3
- BotonicMessageEvent,
4
- Button,
5
- CarouselElement,
6
- CarouselMessageEvent,
7
- CustomMessageEvent,
8
- DocumentMessageEvent,
9
- EventTypes,
10
- FormMessageEvent,
11
- ImageMessageEvent,
12
- LocationMessageEvent,
13
- MissedMessageEvent,
14
- PostbackMessageEvent,
15
- Reply,
16
- TextMessageEvent,
17
- VideoMessageEvent,
18
- WithButtons,
19
- WithReplies,
20
- } from '../models'
21
- import { ContactMessageEvent } from '../models/events/message/contact'
22
- import { TEXT_NODE_NAME } from './botonic-output-parser'
23
-
24
- export function parseNumber(strNumber: string): number {
25
- return parseInt(strNumber)
26
- }
27
-
28
- export function parseBoolean(strNumber: string): boolean {
29
- if (strNumber === '0') return false
30
- return true
31
- }
32
-
33
- export type ParseFunction<Out> = (args: { toParse: any; parsed?: any }) => {
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
- ...typingAndDelay,
56
- },
57
- }
58
- }
59
-
60
- // BUTTONS
61
- export const parseButton = (button: any): Button => {
62
- const title = button[TEXT_NODE_NAME]
63
- if ('payload' in button) {
64
- return { title, payload: button.payload }
65
- }
66
- if ('url' in button) {
67
- const b = { title, url: button.url, target: button.target }
68
- if (button.target) b.target = button.target
69
- return b
70
- }
71
- if ('webview' in button) {
72
- return {
73
- title,
74
- webview: button.webview,
75
- params: button.params,
76
- }
77
- }
78
- throw new Error('Invalid parsed Button')
79
- }
80
-
81
- export const parseButtons: ParseFunction<WithButtons> = args => {
82
- const hasButtons = args.toParse?.button?.length > 0
83
- let buttons: Button[] = []
84
- if (hasButtons) {
85
- buttons = args.toParse.button.map(button => parseButton(button))
86
- }
87
- return {
88
- toParse: args.toParse,
89
- parsed: {
90
- ...args.parsed,
91
- buttons,
92
- },
93
- }
94
- }
95
-
96
- // REPLIES
97
- export const parseReply = (reply: any): Reply => ({
98
- title: reply[TEXT_NODE_NAME],
99
- payload: reply.payload,
100
- })
101
-
102
- export const parseReplies: ParseFunction<WithReplies> = args => {
103
- const hasReplies = args.toParse?.reply?.length > 0
104
- let replies: Reply[] = []
105
- if (hasReplies) {
106
- replies = args.toParse.reply.map(reply => parseReply(reply))
107
- }
108
- return {
109
- toParse: args.toParse,
110
- parsed: {
111
- ...args.parsed,
112
- replies,
113
- },
114
- }
115
- }
116
-
117
- // TEXT
118
- export const parseText: ParseFunction<TextMessageEvent> = args => {
119
- return {
120
- toParse: args.toParse,
121
- parsed: {
122
- ...args.parsed,
123
- text: args.toParse[TEXT_NODE_NAME],
124
- markdown: parseBoolean(args.toParse.markdown),
125
- },
126
- }
127
- }
128
-
129
- // POSTBACK
130
- export const parsePostback: ParseFunction<PostbackMessageEvent> = args => {
131
- return {
132
- toParse: args.toParse,
133
- parsed: {
134
- ...args.parsed,
135
- payload: args.toParse.payload,
136
- },
137
- }
138
- }
139
-
140
- // MEDIA
141
- export const parseMedia: ParseFunction<
142
- | AudioMessageEvent
143
- | DocumentMessageEvent
144
- | ImageMessageEvent
145
- | VideoMessageEvent
146
- > = args => {
147
- return {
148
- toParse: args.toParse,
149
- parsed: {
150
- ...args.parsed,
151
- src: args.toParse.src,
152
- },
153
- }
154
- }
155
-
156
- // LOCATION
157
- export const parseLocation: ParseFunction<LocationMessageEvent> = args => {
158
- return {
159
- toParse: args.toParse,
160
- parsed: {
161
- ...args.parsed,
162
- lat: args.toParse.lat,
163
- long: args.toParse.long,
164
- },
165
- }
166
- }
167
-
168
- // CAROUSEL
169
- export const parseElement = (element: any): CarouselElement => {
170
- const e: CarouselElement = {
171
- pic: element.pic,
172
- title: element.title,
173
- subtitle: element.desc,
174
- }
175
- const hasButtons = element.button !== undefined
176
- if (hasButtons) e.buttons = element.button.map(b => parseButton(b))
177
- return e
178
- }
179
-
180
- export const parseCarousel: ParseFunction<CarouselMessageEvent> = args => {
181
- return {
182
- toParse: args.toParse,
183
- parsed: {
184
- ...args.parsed,
185
- elements: args.toParse.element.map(element => parseElement(element)),
186
- },
187
- }
188
- }
189
-
190
- // CUSTOM
191
- export const parseCustom: ParseFunction<CustomMessageEvent> = args => {
192
- return {
193
- toParse: args.toParse,
194
- parsed: {
195
- ...args.parsed,
196
- json: JSON.parse(args.toParse.json),
197
- },
198
- }
199
- }
200
-
201
- // MISSED
202
- export const parseMissed: ParseFunction<MissedMessageEvent> = args => {
203
- return {
204
- toParse: args.toParse,
205
- parsed: {
206
- ...args.parsed,
207
- reason: args.toParse.reason,
208
- media_type: args.toParse.media_type,
209
- },
210
- }
211
- }
212
-
213
- // FORM
214
- export const parseForm: ParseFunction<FormMessageEvent> = args => {
215
- return {
216
- toParse: args.toParse,
217
- parsed: {
218
- ...args.parsed,
219
- form_title: args.toParse.form_title,
220
- form_answers: args.toParse.form_answers,
221
- },
222
- }
223
- }
224
-
225
- // CONTACT
226
- export const parseContact: ParseFunction<ContactMessageEvent> = args => {
227
- return {
228
- toParse: args.toParse,
229
- parsed: {
230
- ...args.parsed,
231
- phone_number: args.toParse.phone_number,
232
- first_name: args.toParse.first_name,
233
- last_name: args.toParse.last_name,
234
- vcard: args.toParse.vcard,
235
- },
236
- }
237
- }