@botonic/core 0.26.0 → 0.27.0-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 (106) 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 +16 -16
  5. package/lib/cjs/handoff.js +9 -2
  6. package/lib/cjs/handoff.js.map +1 -1
  7. package/lib/cjs/index.d.ts +0 -1
  8. package/lib/cjs/index.js +0 -3
  9. package/lib/cjs/index.js.map +1 -1
  10. package/lib/cjs/models/legacy-types.d.ts +44 -39
  11. package/lib/cjs/models/legacy-types.js +15 -32
  12. package/lib/cjs/models/legacy-types.js.map +1 -1
  13. package/lib/cjs/plugins.d.ts +2 -3
  14. package/lib/cjs/plugins.js +2 -4
  15. package/lib/cjs/plugins.js.map +1 -1
  16. package/lib/cjs/utils.d.ts +8 -0
  17. package/lib/cjs/utils.js +32 -1
  18. package/lib/cjs/utils.js.map +1 -1
  19. package/lib/esm/core-bot.d.ts +1 -3
  20. package/lib/esm/core-bot.js +4 -34
  21. package/lib/esm/core-bot.js.map +1 -1
  22. package/lib/esm/handoff.d.ts +16 -16
  23. package/lib/esm/handoff.js +9 -2
  24. package/lib/esm/handoff.js.map +1 -1
  25. package/lib/esm/index.d.ts +0 -1
  26. package/lib/esm/index.js +0 -3
  27. package/lib/esm/index.js.map +1 -1
  28. package/lib/esm/models/legacy-types.d.ts +44 -39
  29. package/lib/esm/models/legacy-types.js +14 -31
  30. package/lib/esm/models/legacy-types.js.map +1 -1
  31. package/lib/esm/plugins.d.ts +2 -3
  32. package/lib/esm/plugins.js +2 -4
  33. package/lib/esm/plugins.js.map +1 -1
  34. package/lib/esm/utils.d.ts +8 -0
  35. package/lib/esm/utils.js +24 -0
  36. package/lib/esm/utils.js.map +1 -1
  37. package/package.json +1 -6
  38. package/src/core-bot.ts +2 -56
  39. package/src/handoff.ts +29 -19
  40. package/src/index.ts +0 -3
  41. package/src/models/legacy-types.ts +78 -76
  42. package/src/plugins.ts +2 -8
  43. package/src/utils.ts +32 -0
  44. package/lib/cjs/data-provider/dynamodb-data-provider.d.ts +0 -26
  45. package/lib/cjs/data-provider/dynamodb-data-provider.js +0 -107
  46. package/lib/cjs/data-provider/dynamodb-data-provider.js.map +0 -1
  47. package/lib/cjs/data-provider/dynamodb-utils.d.ts +0 -11
  48. package/lib/cjs/data-provider/dynamodb-utils.js +0 -121
  49. package/lib/cjs/data-provider/dynamodb-utils.js.map +0 -1
  50. package/lib/cjs/data-provider/factory.d.ts +0 -25
  51. package/lib/cjs/data-provider/factory.js +0 -31
  52. package/lib/cjs/data-provider/factory.js.map +0 -1
  53. package/lib/cjs/data-provider/index.d.ts +0 -4
  54. package/lib/cjs/data-provider/index.js +0 -8
  55. package/lib/cjs/data-provider/index.js.map +0 -1
  56. package/lib/cjs/data-provider/local-data-provider.d.ts +0 -26
  57. package/lib/cjs/data-provider/local-data-provider.js +0 -137
  58. package/lib/cjs/data-provider/local-data-provider.js.map +0 -1
  59. package/lib/cjs/output-parser/botonic-output-parser.d.ts +0 -16
  60. package/lib/cjs/output-parser/botonic-output-parser.js +0 -37
  61. package/lib/cjs/output-parser/botonic-output-parser.js.map +0 -1
  62. package/lib/cjs/output-parser/factory.d.ts +0 -4
  63. package/lib/cjs/output-parser/factory.js +0 -36
  64. package/lib/cjs/output-parser/factory.js.map +0 -1
  65. package/lib/cjs/output-parser/index.d.ts +0 -3
  66. package/lib/cjs/output-parser/index.js +0 -7
  67. package/lib/cjs/output-parser/index.js.map +0 -1
  68. package/lib/cjs/output-parser/parsers.d.ts +0 -26
  69. package/lib/cjs/output-parser/parsers.js +0 -171
  70. package/lib/cjs/output-parser/parsers.js.map +0 -1
  71. package/lib/esm/data-provider/dynamodb-data-provider.d.ts +0 -26
  72. package/lib/esm/data-provider/dynamodb-data-provider.js +0 -103
  73. package/lib/esm/data-provider/dynamodb-data-provider.js.map +0 -1
  74. package/lib/esm/data-provider/dynamodb-utils.d.ts +0 -11
  75. package/lib/esm/data-provider/dynamodb-utils.js +0 -113
  76. package/lib/esm/data-provider/dynamodb-utils.js.map +0 -1
  77. package/lib/esm/data-provider/factory.d.ts +0 -25
  78. package/lib/esm/data-provider/factory.js +0 -27
  79. package/lib/esm/data-provider/factory.js.map +0 -1
  80. package/lib/esm/data-provider/index.d.ts +0 -4
  81. package/lib/esm/data-provider/index.js +0 -5
  82. package/lib/esm/data-provider/index.js.map +0 -1
  83. package/lib/esm/data-provider/local-data-provider.d.ts +0 -26
  84. package/lib/esm/data-provider/local-data-provider.js +0 -133
  85. package/lib/esm/data-provider/local-data-provider.js.map +0 -1
  86. package/lib/esm/output-parser/botonic-output-parser.d.ts +0 -16
  87. package/lib/esm/output-parser/botonic-output-parser.js +0 -33
  88. package/lib/esm/output-parser/botonic-output-parser.js.map +0 -1
  89. package/lib/esm/output-parser/factory.d.ts +0 -4
  90. package/lib/esm/output-parser/factory.js +0 -32
  91. package/lib/esm/output-parser/factory.js.map +0 -1
  92. package/lib/esm/output-parser/index.d.ts +0 -3
  93. package/lib/esm/output-parser/index.js +0 -4
  94. package/lib/esm/output-parser/index.js.map +0 -1
  95. package/lib/esm/output-parser/parsers.d.ts +0 -26
  96. package/lib/esm/output-parser/parsers.js +0 -151
  97. package/lib/esm/output-parser/parsers.js.map +0 -1
  98. package/src/data-provider/dynamodb-data-provider.ts +0 -105
  99. package/src/data-provider/dynamodb-utils.ts +0 -149
  100. package/src/data-provider/factory.ts +0 -60
  101. package/src/data-provider/index.ts +0 -4
  102. package/src/data-provider/local-data-provider.ts +0 -154
  103. package/src/output-parser/botonic-output-parser.ts +0 -38
  104. package/src/output-parser/factory.ts +0 -45
  105. package/src/output-parser/index.ts +0 -3
  106. package/src/output-parser/parsers.ts +0 -237
@@ -1,133 +0,0 @@
1
- import { JsonDB } from 'node-json-db';
2
- import { Config } from 'node-json-db/dist/lib/JsonDBConfig';
3
- export class LocalDevDataProvider {
4
- constructor(url) {
5
- this.DB_PATH = 'tmp/localDb';
6
- this.SEPARATOR = '/';
7
- this.paths = {
8
- USERS: '/users',
9
- EVENTS: '/events',
10
- CONNECTIONS: '/connections',
11
- };
12
- const dbPath = url ? url.split('://')[1] : this.DB_PATH;
13
- this.db = new JsonDB(new Config(dbPath, true, false, this.SEPARATOR));
14
- }
15
- getUsers(limit = 10, offset = 0) {
16
- const path = this.paths.USERS;
17
- this.db.reload();
18
- const userList = this.db.getObject(path);
19
- const users = Object.values(userList);
20
- const to = limit !== 0 ? offset + limit : undefined;
21
- return users.slice(offset, to);
22
- }
23
- getUser(userId) {
24
- const path = this.createPath([this.paths.USERS, userId]);
25
- this.db.reload();
26
- return this.db.exists(path) ? this.db.getObject(path) : undefined;
27
- }
28
- getUserByWebsocketId(websocketId) {
29
- return this.getUserByField('websocketId', websocketId);
30
- }
31
- getUserByField(field, value) {
32
- const path = this.paths.USERS;
33
- this.db.reload();
34
- const dbUser = this.db.exists(path)
35
- ? this.db.find(path, (user) => user[field] === value)
36
- : undefined;
37
- return dbUser;
38
- }
39
- saveUser(user) {
40
- const path = this.createPath([this.paths.USERS, user.id]);
41
- this.db.reload();
42
- if (!this.db.exists(path)) {
43
- this.db.push(path, user);
44
- }
45
- return user;
46
- }
47
- updateUser(user) {
48
- const path = this.createPath([this.paths.USERS, user.id]);
49
- this.db.reload();
50
- if (this.db.exists(path)) {
51
- this.db.push(path, user, true);
52
- }
53
- return user;
54
- }
55
- deleteUser(id) {
56
- const path = this.createPath([this.paths.USERS, id]);
57
- this.db.reload();
58
- const user = this.db.exists(path)
59
- ? this.db.getObject(path)
60
- : undefined;
61
- if (user) {
62
- this.db.delete(path);
63
- return user;
64
- }
65
- return undefined;
66
- }
67
- getEvents(limit = 10, offset = 0) {
68
- const path = this.paths.EVENTS;
69
- this.db.reload();
70
- const eventList = this.db.getObject(path);
71
- const events = Object.values(eventList);
72
- const to = limit !== 0 ? offset + limit : undefined;
73
- return events.slice(offset, to);
74
- }
75
- getEvent(id) {
76
- const path = this.createPath([this.paths.EVENTS, id]);
77
- this.db.reload();
78
- return this.db.exists(path)
79
- ? this.db.getObject(path)
80
- : undefined;
81
- }
82
- saveEvent(event) {
83
- const path = this.createPath([this.paths.EVENTS, event.eventId]);
84
- this.db.reload();
85
- if (!this.db.exists(path)) {
86
- this.db.push(path, event);
87
- }
88
- return event;
89
- }
90
- updateEvent(event) {
91
- const path = this.createPath([this.paths.EVENTS, event.eventId]);
92
- this.db.reload();
93
- if (this.db.exists(path)) {
94
- this.db.push(path, event, true);
95
- }
96
- return event;
97
- }
98
- deleteEvent(id) {
99
- const path = this.createPath([this.paths.EVENTS, id]);
100
- this.db.reload();
101
- const event = this.db.exists(path)
102
- ? this.db.getObject(path)
103
- : undefined;
104
- if (event) {
105
- this.db.delete(path);
106
- return event;
107
- }
108
- return undefined;
109
- }
110
- addConnection(websocketId) {
111
- const path = this.createPath([this.paths.CONNECTIONS, websocketId]);
112
- this.db.reload();
113
- if (!this.db.exists(path)) {
114
- this.db.push(path, '', false);
115
- }
116
- }
117
- updateConnection(websocketId, userId) {
118
- const path = this.createPath([this.paths.CONNECTIONS, websocketId]);
119
- this.db.reload();
120
- if (this.db.exists(path)) {
121
- this.db.push(path, userId, true);
122
- }
123
- }
124
- deleteConnection(websocketId) {
125
- const path = this.createPath([this.paths.CONNECTIONS, websocketId]);
126
- this.db.reload();
127
- this.db.delete(path);
128
- }
129
- createPath(urlChunks) {
130
- return urlChunks.join(this.SEPARATOR);
131
- }
132
- }
133
- //# sourceMappingURL=local-data-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-data-provider.js","sourceRoot":"","sources":["../../../src/data-provider/local-data-provider.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { BotonicEvent } from '../models';
2
- import { MessageParsingFactory } from './factory';
3
- export declare const TEXT_NODE_NAME = "text";
4
- export declare class BotonicOutputParser {
5
- private readonly factory;
6
- private static OPTIONS;
7
- constructor(factory?: MessageParsingFactory);
8
- xmlToMessageEvents(html: string): Partial<BotonicEvent>[];
9
- /**
10
- * Right now, when saving BotonicEvents to DataProvider, we need the standarized Botonic event
11
- * to be saved. This is, converting a botonic input like: '{id: 'msgId', data: 'rawData', payload: 'somePayload'}'
12
- * into a BotonicEvent with the expected properties.
13
- */
14
- parseFromUserInput(input: any): Partial<BotonicEvent>;
15
- private xmlToJSONMessages;
16
- }
@@ -1,33 +0,0 @@
1
- // eslint-disable-next-line import/named
2
- import { parse } from 'fast-xml-parser';
3
- import { decode } from 'html-entities';
4
- import { MessageParsingFactory } from './factory';
5
- export const TEXT_NODE_NAME = 'text';
6
- export class BotonicOutputParser {
7
- constructor(factory = new MessageParsingFactory()) {
8
- this.factory = factory;
9
- }
10
- xmlToMessageEvents(html) {
11
- const jsonMessages = this.xmlToJSONMessages(html);
12
- return jsonMessages.map(msgToParse => this.factory.parse(msgToParse));
13
- }
14
- /**
15
- * Right now, when saving BotonicEvents to DataProvider, we need the standarized Botonic event
16
- * to be saved. This is, converting a botonic input like: '{id: 'msgId', data: 'rawData', payload: 'somePayload'}'
17
- * into a BotonicEvent with the expected properties.
18
- */
19
- parseFromUserInput(input) {
20
- return this.factory.parse(input);
21
- }
22
- xmlToJSONMessages(html) {
23
- return parse(html, BotonicOutputParser.OPTIONS).message;
24
- }
25
- }
26
- BotonicOutputParser.OPTIONS = {
27
- ignoreAttributes: false,
28
- attributeNamePrefix: '',
29
- textNodeName: TEXT_NODE_NAME,
30
- arrayMode: true,
31
- attrValueProcessor: a => decode(a),
32
- };
33
- //# sourceMappingURL=botonic-output-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"botonic-output-parser.js","sourceRoot":"","sources":["../../../src/output-parser/botonic-output-parser.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,KAAK,EAAc,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAGtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC,MAAM,OAAO,mBAAmB;IAS9B,YAA6B,UAAU,IAAI,qBAAqB,EAAE;QAArC,YAAO,GAAP,OAAO,CAA8B;IAAG,CAAC;IAEtE,kBAAkB,CAAC,IAAY;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACjD,OAAO,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;IACvE,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,KAAU;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAEO,iBAAiB,CAAC,IAAS;QACjC,OAAO,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAA;IACzD,CAAC;;AA1Bc,2BAAO,GAAwB;IAC5C,gBAAgB,EAAE,KAAK;IACvB,mBAAmB,EAAE,EAAE;IACvB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,IAAI;IACf,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CACnC,CAAA"}
@@ -1,4 +0,0 @@
1
- import { BotonicEvent } from '../models';
2
- export declare class MessageParsingFactory {
3
- parse(msgToParse: any): Partial<BotonicEvent>;
4
- }
@@ -1,32 +0,0 @@
1
- import { MEDIA_TYPES, MessageEventTypes } from '../models';
2
- import { parseButtons, parseCarousel, parseContact, parseCustom, parseForm, parseLocation, parseMedia, parseMessage, parseMissed, parsePostback, parseReplies, parseText, } from './parsers';
3
- export class MessageParsingFactory {
4
- parse(msgToParse) {
5
- const type = msgToParse.type;
6
- const parsedMessage = parseMessage({ toParse: msgToParse });
7
- if (MEDIA_TYPES.includes(type)) {
8
- return parseMedia(parseButtons(parsedMessage)).parsed;
9
- }
10
- switch (type) {
11
- case MessageEventTypes.TEXT:
12
- // statement 1
13
- return parseText(parseReplies(parseButtons(parsedMessage))).parsed;
14
- case MessageEventTypes.POSTBACK:
15
- return parsePostback(parsedMessage).parsed;
16
- case MessageEventTypes.LOCATION:
17
- return parseLocation(parsedMessage).parsed;
18
- case MessageEventTypes.CAROUSEL:
19
- return parseCarousel(parsedMessage).parsed;
20
- case MessageEventTypes.CUSTOM:
21
- return parseCustom(parseReplies(parsedMessage)).parsed;
22
- case MessageEventTypes.FORM:
23
- return parseForm(parsedMessage).parsed;
24
- case MessageEventTypes.CONTACT:
25
- return parseContact(parsedMessage).parsed;
26
- case MessageEventTypes.MISSED:
27
- return parseMissed(parsedMessage).parsed;
28
- }
29
- throw new Error(`Parsing for type: '${type}' not implemented.`);
30
- }
31
- }
32
- //# sourceMappingURL=factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/output-parser/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,YAAY,EACZ,SAAS,GACV,MAAM,WAAW,CAAA;AAElB,MAAM,OAAO,qBAAqB;IAChC,KAAK,CAAC,UAAe;QACnB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;QAC5B,MAAM,aAAa,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;QAC3D,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAA;SACtD;QACD,QAAQ,IAAI,EAAE;YACZ,KAAK,iBAAiB,CAAC,IAAI;gBACzB,cAAc;gBACd,OAAO,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YACpE,KAAK,iBAAiB,CAAC,QAAQ;gBAC7B,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAA;YAC5C,KAAK,iBAAiB,CAAC,QAAQ;gBAC7B,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAA;YAC5C,KAAK,iBAAiB,CAAC,QAAQ;gBAC7B,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAA;YAC5C,KAAK,iBAAiB,CAAC,MAAM;gBAC3B,OAAO,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAA;YACxD,KAAK,iBAAiB,CAAC,IAAI;gBACzB,OAAO,SAAS,CAAC,aAAa,CAAC,CAAC,MAAM,CAAA;YACxC,KAAK,iBAAiB,CAAC,OAAO;gBAC5B,OAAO,YAAY,CAAC,aAAa,CAAC,CAAC,MAAM,CAAA;YAC3C,KAAK,iBAAiB,CAAC,MAAM;gBAC3B,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAA;SAC3C;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,oBAAoB,CAAC,CAAA;IACjE,CAAC;CACF"}
@@ -1,3 +0,0 @@
1
- export * from './botonic-output-parser';
2
- export * from './factory';
3
- export * from './parsers';
@@ -1,4 +0,0 @@
1
- export * from './botonic-output-parser';
2
- export * from './factory';
3
- export * from './parsers';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output-parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA"}
@@ -1,26 +0,0 @@
1
- import { AudioMessageEvent, BotonicMessageEvent, Button, CarouselElement, CarouselMessageEvent, CustomMessageEvent, DocumentMessageEvent, FormMessageEvent, ImageMessageEvent, LocationMessageEvent, MissedMessageEvent, PostbackMessageEvent, Reply, TextMessageEvent, VideoMessageEvent, WithButtons, WithReplies } from '../models';
2
- import { ContactMessageEvent } from '../models/events/message/contact';
3
- export declare function parseNumber(strNumber: string): number;
4
- export declare function parseBoolean(strNumber: string): boolean;
5
- export type ParseFunction<Out> = (args: {
6
- toParse: any;
7
- parsed?: any;
8
- }) => {
9
- toParse: any;
10
- parsed: Partial<Out>;
11
- };
12
- export declare const parseMessage: ParseFunction<BotonicMessageEvent>;
13
- export declare const parseButton: (button: any) => Button;
14
- export declare const parseButtons: ParseFunction<WithButtons>;
15
- export declare const parseReply: (reply: any) => Reply;
16
- export declare const parseReplies: ParseFunction<WithReplies>;
17
- export declare const parseText: ParseFunction<TextMessageEvent>;
18
- export declare const parsePostback: ParseFunction<PostbackMessageEvent>;
19
- export declare const parseMedia: ParseFunction<AudioMessageEvent | DocumentMessageEvent | ImageMessageEvent | VideoMessageEvent>;
20
- export declare const parseLocation: ParseFunction<LocationMessageEvent>;
21
- export declare const parseElement: (element: any) => CarouselElement;
22
- export declare const parseCarousel: ParseFunction<CarouselMessageEvent>;
23
- export declare const parseCustom: ParseFunction<CustomMessageEvent>;
24
- export declare const parseMissed: ParseFunction<MissedMessageEvent>;
25
- export declare const parseForm: ParseFunction<FormMessageEvent>;
26
- export declare const parseContact: ParseFunction<ContactMessageEvent>;
@@ -1,151 +0,0 @@
1
- import { EventTypes, } from '../models';
2
- import { TEXT_NODE_NAME } from './botonic-output-parser';
3
- export function parseNumber(strNumber) {
4
- return parseInt(strNumber);
5
- }
6
- export function parseBoolean(strNumber) {
7
- if (strNumber === '0')
8
- return false;
9
- return true;
10
- }
11
- // COMMON
12
- export const parseMessage = args => {
13
- const typingAndDelay = {};
14
- if (args.toParse.delay !== undefined) {
15
- typingAndDelay['delay'] = parseNumber(args.toParse.delay);
16
- }
17
- if (args.toParse.typing !== undefined) {
18
- typingAndDelay['typing'] = parseNumber(args.toParse.typing);
19
- }
20
- return {
21
- toParse: args.toParse,
22
- parsed: Object.assign({
23
- // Following properties added later before saving event: eventId, userId, createdAt, from, ack
24
- eventType: EventTypes.MESSAGE, type: args.toParse.type, ack: args.toParse.ack, from: args.toParse.from }, typingAndDelay),
25
- };
26
- };
27
- // BUTTONS
28
- export const parseButton = (button) => {
29
- const title = button[TEXT_NODE_NAME];
30
- if ('payload' in button) {
31
- return { title, payload: button.payload };
32
- }
33
- if ('url' in button) {
34
- const b = { title, url: button.url, target: button.target };
35
- if (button.target)
36
- b.target = button.target;
37
- return b;
38
- }
39
- if ('webview' in button) {
40
- return {
41
- title,
42
- webview: button.webview,
43
- params: button.params,
44
- };
45
- }
46
- throw new Error('Invalid parsed Button');
47
- };
48
- export const parseButtons = args => {
49
- var _a, _b;
50
- const hasButtons = ((_b = (_a = args.toParse) === null || _a === void 0 ? void 0 : _a.button) === null || _b === void 0 ? void 0 : _b.length) > 0;
51
- let buttons = [];
52
- if (hasButtons) {
53
- buttons = args.toParse.button.map(button => parseButton(button));
54
- }
55
- return {
56
- toParse: args.toParse,
57
- parsed: Object.assign(Object.assign({}, args.parsed), { buttons }),
58
- };
59
- };
60
- // REPLIES
61
- export const parseReply = (reply) => ({
62
- title: reply[TEXT_NODE_NAME],
63
- payload: reply.payload,
64
- });
65
- export const parseReplies = args => {
66
- var _a, _b;
67
- const hasReplies = ((_b = (_a = args.toParse) === null || _a === void 0 ? void 0 : _a.reply) === null || _b === void 0 ? void 0 : _b.length) > 0;
68
- let replies = [];
69
- if (hasReplies) {
70
- replies = args.toParse.reply.map(reply => parseReply(reply));
71
- }
72
- return {
73
- toParse: args.toParse,
74
- parsed: Object.assign(Object.assign({}, args.parsed), { replies }),
75
- };
76
- };
77
- // TEXT
78
- export const parseText = args => {
79
- return {
80
- toParse: args.toParse,
81
- parsed: Object.assign(Object.assign({}, args.parsed), { text: args.toParse[TEXT_NODE_NAME], markdown: parseBoolean(args.toParse.markdown) }),
82
- };
83
- };
84
- // POSTBACK
85
- export const parsePostback = args => {
86
- return {
87
- toParse: args.toParse,
88
- parsed: Object.assign(Object.assign({}, args.parsed), { payload: args.toParse.payload }),
89
- };
90
- };
91
- // MEDIA
92
- export const parseMedia = args => {
93
- return {
94
- toParse: args.toParse,
95
- parsed: Object.assign(Object.assign({}, args.parsed), { src: args.toParse.src }),
96
- };
97
- };
98
- // LOCATION
99
- export const parseLocation = args => {
100
- return {
101
- toParse: args.toParse,
102
- parsed: Object.assign(Object.assign({}, args.parsed), { lat: args.toParse.lat, long: args.toParse.long }),
103
- };
104
- };
105
- // CAROUSEL
106
- export const parseElement = (element) => {
107
- const e = {
108
- pic: element.pic,
109
- title: element.title,
110
- subtitle: element.desc,
111
- };
112
- const hasButtons = element.button !== undefined;
113
- if (hasButtons)
114
- e.buttons = element.button.map(b => parseButton(b));
115
- return e;
116
- };
117
- export const parseCarousel = args => {
118
- return {
119
- toParse: args.toParse,
120
- parsed: Object.assign(Object.assign({}, args.parsed), { elements: args.toParse.element.map(element => parseElement(element)) }),
121
- };
122
- };
123
- // CUSTOM
124
- export const parseCustom = args => {
125
- return {
126
- toParse: args.toParse,
127
- parsed: Object.assign(Object.assign({}, args.parsed), { json: JSON.parse(args.toParse.json) }),
128
- };
129
- };
130
- // MISSED
131
- export const parseMissed = args => {
132
- return {
133
- toParse: args.toParse,
134
- parsed: Object.assign(Object.assign({}, args.parsed), { reason: args.toParse.reason, media_type: args.toParse.media_type }),
135
- };
136
- };
137
- // FORM
138
- export const parseForm = args => {
139
- return {
140
- toParse: args.toParse,
141
- parsed: Object.assign(Object.assign({}, args.parsed), { form_title: args.toParse.form_title, form_answers: args.toParse.form_answers }),
142
- };
143
- };
144
- // CONTACT
145
- export const parseContact = args => {
146
- return {
147
- toParse: args.toParse,
148
- parsed: Object.assign(Object.assign({}, args.parsed), { phone_number: args.toParse.phone_number, first_name: args.toParse.first_name, last_name: args.toParse.last_name, vcard: args.toParse.vcard }),
149
- };
150
- };
151
- //# sourceMappingURL=parsers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/output-parser/parsers.ts"],"names":[],"mappings":"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"}
@@ -1,105 +0,0 @@
1
- import { Entity, Table } from 'dynamodb-toolbox'
2
-
3
- import { BotonicEvent, EventTypes, User } from '../models'
4
- import {
5
- getConnectionEventEntity,
6
- getMessageEventEntities,
7
- getUserEntity,
8
- getUserEventsTable,
9
- GLOBAL_SECONDARY_INDEX_NAME,
10
- SORT_KEY_NAME,
11
- USER_PREFIX,
12
- } from './dynamodb-utils'
13
- import { DataProvider } from './factory'
14
-
15
- export class DynamoDBDataProvider implements DataProvider {
16
- region: string
17
- tableName: string
18
- userEventsTable: Table
19
- userEntity: Entity<any>
20
- eventEntity: Entity<any>
21
- messageEventEntities: Record<string, Entity<any>>
22
- textMessageEventEntity: Entity<any>
23
- connectionEventEntity: Entity<any>
24
- constructor(url: string) {
25
- try {
26
- const urlParts = url.split('://')[1].split('.')
27
- this.tableName = urlParts[0]
28
- this.region = urlParts[1]
29
- this.userEventsTable = getUserEventsTable(this.tableName, this.region)
30
- this.userEntity = getUserEntity(this.userEventsTable)
31
- this.connectionEventEntity = getConnectionEventEntity(
32
- this.userEventsTable
33
- )
34
- this.messageEventEntities = getMessageEventEntities(this.userEventsTable)
35
- } catch (e) {
36
- console.log({ e })
37
- }
38
- }
39
-
40
- // @ts-ignore
41
- async getUsers(limit = 10, offset = 0): Promise<User[]> {
42
- // TODO: finish to implement with offset
43
- const result = await this.userEventsTable.scan({
44
- filters: { attr: SORT_KEY_NAME, beginsWith: USER_PREFIX },
45
- limit,
46
- })
47
- return result.Items
48
- }
49
-
50
- async getUser(id: string): Promise<User | undefined> {
51
- const userById = {
52
- id: id,
53
- SK: id,
54
- }
55
- const result = await this.userEntity.get(userById)
56
- if (Object.keys(result).length === 0) return undefined
57
- return result.Item
58
- }
59
-
60
- async getUserByWebsocketId(websocketId: string): Promise<User | undefined> {
61
- const result = await this.userEventsTable.query(websocketId, {
62
- index: GLOBAL_SECONDARY_INDEX_NAME,
63
- })
64
- if (result.Count === 0) return undefined
65
- return result.Items[0]
66
- }
67
- // @ts-ignore
68
- async getUserByField(field: string, value: any): Promise<User | undefined> {} //TODO: Implement
69
-
70
- async saveUser(user: User): Promise<User> {
71
- const putUser = { ...user, id: user.id, userId: user.id }
72
- await this.userEntity.put(putUser)
73
- return user
74
- }
75
- async updateUser(user: User): Promise<User> {
76
- const updateUser = { ...user, id: user.id, userId: user.id }
77
- const res = await this.userEntity.update(updateUser)
78
- return user
79
- }
80
- // @ts-ignore
81
- async deleteUser(id: string): Promise<User | undefined> {} // TODO: Implement
82
-
83
- // @ts-ignore
84
- async getEvents(limit = 10, offset = 0): Promise<BotonicEvent[]> {} // TODO: Implement
85
-
86
- // @ts-ignore
87
- async getEvent(id: string): Promise<BotonicEvent | undefined> {} // TODO: Implement
88
-
89
- async saveEvent(event: BotonicEvent): Promise<BotonicEvent> {
90
- if (event.eventType === EventTypes.CONNECTION) {
91
- await this.connectionEventEntity.put(event)
92
- }
93
- if (event.eventType === EventTypes.MESSAGE) {
94
- await this.messageEventEntities[event.type].put(event)
95
- }
96
- // TODO: Implementation of other event types
97
- return event
98
- }
99
-
100
- // @ts-ignore
101
- async updateEvent(event: BotonicEvent): Promise<BotonicEvent> {} // TODO: Implement
102
-
103
- // @ts-ignore
104
- async deleteEvent(id: string): Promise<BotonicEvent | undefined> {} // TODO: Implement
105
- }