@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.
- package/lib/cjs/core-bot.d.ts +1 -3
- package/lib/cjs/core-bot.js +3 -33
- package/lib/cjs/core-bot.js.map +1 -1
- package/lib/cjs/handoff.d.ts +1 -1
- package/lib/cjs/index.d.ts +0 -1
- package/lib/cjs/index.js +0 -3
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/models/legacy-types.d.ts +42 -39
- package/lib/cjs/models/legacy-types.js +15 -32
- package/lib/cjs/models/legacy-types.js.map +1 -1
- package/lib/cjs/plugins.d.ts +2 -3
- package/lib/cjs/plugins.js +2 -4
- package/lib/cjs/plugins.js.map +1 -1
- package/lib/cjs/utils.d.ts +8 -0
- package/lib/cjs/utils.js +32 -1
- package/lib/cjs/utils.js.map +1 -1
- package/lib/esm/core-bot.d.ts +1 -3
- package/lib/esm/core-bot.js +4 -34
- package/lib/esm/core-bot.js.map +1 -1
- package/lib/esm/handoff.d.ts +1 -1
- package/lib/esm/index.d.ts +0 -1
- package/lib/esm/index.js +0 -3
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/models/legacy-types.d.ts +42 -39
- package/lib/esm/models/legacy-types.js +14 -31
- package/lib/esm/models/legacy-types.js.map +1 -1
- package/lib/esm/plugins.d.ts +2 -3
- package/lib/esm/plugins.js +2 -4
- package/lib/esm/plugins.js.map +1 -1
- package/lib/esm/utils.d.ts +8 -0
- package/lib/esm/utils.js +24 -0
- package/lib/esm/utils.js.map +1 -1
- package/package.json +1 -6
- package/src/core-bot.ts +2 -56
- package/src/handoff.ts +1 -1
- package/src/index.ts +0 -3
- package/src/models/legacy-types.ts +76 -76
- package/src/plugins.ts +2 -8
- package/src/utils.ts +32 -0
- package/lib/cjs/data-provider/dynamodb-data-provider.d.ts +0 -26
- package/lib/cjs/data-provider/dynamodb-data-provider.js +0 -107
- package/lib/cjs/data-provider/dynamodb-data-provider.js.map +0 -1
- package/lib/cjs/data-provider/dynamodb-utils.d.ts +0 -11
- package/lib/cjs/data-provider/dynamodb-utils.js +0 -121
- package/lib/cjs/data-provider/dynamodb-utils.js.map +0 -1
- package/lib/cjs/data-provider/factory.d.ts +0 -25
- package/lib/cjs/data-provider/factory.js +0 -31
- package/lib/cjs/data-provider/factory.js.map +0 -1
- package/lib/cjs/data-provider/index.d.ts +0 -4
- package/lib/cjs/data-provider/index.js +0 -8
- package/lib/cjs/data-provider/index.js.map +0 -1
- package/lib/cjs/data-provider/local-data-provider.d.ts +0 -26
- package/lib/cjs/data-provider/local-data-provider.js +0 -137
- package/lib/cjs/data-provider/local-data-provider.js.map +0 -1
- package/lib/cjs/output-parser/botonic-output-parser.d.ts +0 -16
- package/lib/cjs/output-parser/botonic-output-parser.js +0 -37
- package/lib/cjs/output-parser/botonic-output-parser.js.map +0 -1
- package/lib/cjs/output-parser/factory.d.ts +0 -4
- package/lib/cjs/output-parser/factory.js +0 -36
- package/lib/cjs/output-parser/factory.js.map +0 -1
- package/lib/cjs/output-parser/index.d.ts +0 -3
- package/lib/cjs/output-parser/index.js +0 -7
- package/lib/cjs/output-parser/index.js.map +0 -1
- package/lib/cjs/output-parser/parsers.d.ts +0 -26
- package/lib/cjs/output-parser/parsers.js +0 -171
- package/lib/cjs/output-parser/parsers.js.map +0 -1
- package/lib/esm/data-provider/dynamodb-data-provider.d.ts +0 -26
- package/lib/esm/data-provider/dynamodb-data-provider.js +0 -103
- package/lib/esm/data-provider/dynamodb-data-provider.js.map +0 -1
- package/lib/esm/data-provider/dynamodb-utils.d.ts +0 -11
- package/lib/esm/data-provider/dynamodb-utils.js +0 -113
- package/lib/esm/data-provider/dynamodb-utils.js.map +0 -1
- package/lib/esm/data-provider/factory.d.ts +0 -25
- package/lib/esm/data-provider/factory.js +0 -27
- package/lib/esm/data-provider/factory.js.map +0 -1
- package/lib/esm/data-provider/index.d.ts +0 -4
- package/lib/esm/data-provider/index.js +0 -5
- package/lib/esm/data-provider/index.js.map +0 -1
- package/lib/esm/data-provider/local-data-provider.d.ts +0 -26
- package/lib/esm/data-provider/local-data-provider.js +0 -133
- package/lib/esm/data-provider/local-data-provider.js.map +0 -1
- package/lib/esm/output-parser/botonic-output-parser.d.ts +0 -16
- package/lib/esm/output-parser/botonic-output-parser.js +0 -33
- package/lib/esm/output-parser/botonic-output-parser.js.map +0 -1
- package/lib/esm/output-parser/factory.d.ts +0 -4
- package/lib/esm/output-parser/factory.js +0 -32
- package/lib/esm/output-parser/factory.js.map +0 -1
- package/lib/esm/output-parser/index.d.ts +0 -3
- package/lib/esm/output-parser/index.js +0 -4
- package/lib/esm/output-parser/index.js.map +0 -1
- package/lib/esm/output-parser/parsers.d.ts +0 -26
- package/lib/esm/output-parser/parsers.js +0 -151
- package/lib/esm/output-parser/parsers.js.map +0 -1
- package/src/data-provider/dynamodb-data-provider.ts +0 -105
- package/src/data-provider/dynamodb-utils.ts +0 -149
- package/src/data-provider/factory.ts +0 -60
- package/src/data-provider/index.ts +0 -4
- package/src/data-provider/local-data-provider.ts +0 -154
- package/src/output-parser/botonic-output-parser.ts +0 -38
- package/src/output-parser/factory.ts +0 -45
- package/src/output-parser/index.ts +0 -3
- package/src/output-parser/parsers.ts +0 -237
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
// TODO: This file contains all the legacy types we had in index.ts. After some refactors, we should be able to get rid of many of them.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
export enum CASE_STATUS {
|
|
4
|
+
WAITING = 'status_waiting',
|
|
5
|
+
ATTENDING = 'status_attending',
|
|
6
|
+
IDLE = 'status_idle',
|
|
7
|
+
RESOLVED = 'status_resolved',
|
|
8
|
+
}
|
|
5
9
|
|
|
6
10
|
export type CaseStatusType =
|
|
7
|
-
|
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
+
| CASE_STATUS.ATTENDING
|
|
12
|
+
| CASE_STATUS.IDLE
|
|
13
|
+
| CASE_STATUS.RESOLVED
|
|
14
|
+
| CASE_STATUS.WAITING
|
|
15
|
+
|
|
16
|
+
export enum CASE_RESOLUTION {
|
|
17
|
+
OK = 'result_ok',
|
|
18
|
+
NOK = 'result_nok',
|
|
19
|
+
NOT_SOLVED = 'result_not_solved',
|
|
20
|
+
BANNED = 'result_banned',
|
|
21
|
+
}
|
|
11
22
|
|
|
12
23
|
export type CaseResolution =
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
24
|
+
| CASE_RESOLUTION.BANNED
|
|
25
|
+
| CASE_RESOLUTION.NOK
|
|
26
|
+
| CASE_RESOLUTION.NOT_SOLVED
|
|
27
|
+
| CASE_RESOLUTION.OK
|
|
17
28
|
|
|
18
29
|
export enum PROVIDER {
|
|
19
30
|
APPLE = 'apple',
|
|
@@ -30,6 +41,19 @@ export enum PROVIDER {
|
|
|
30
41
|
WHATSAPP = 'whatsapp',
|
|
31
42
|
}
|
|
32
43
|
|
|
44
|
+
export type ProviderType =
|
|
45
|
+
| PROVIDER.DEV
|
|
46
|
+
| PROVIDER.FACEBOOK
|
|
47
|
+
| PROVIDER.GENERIC
|
|
48
|
+
| PROVIDER.INSTAGRAM
|
|
49
|
+
| PROVIDER.INTERCOM
|
|
50
|
+
| PROVIDER.SMOOCH
|
|
51
|
+
| PROVIDER.TELEGRAM
|
|
52
|
+
| PROVIDER.TWITTER
|
|
53
|
+
| PROVIDER.WEBCHAT
|
|
54
|
+
| PROVIDER.WECHAT
|
|
55
|
+
| PROVIDER.WHATSAPP
|
|
56
|
+
|
|
33
57
|
export enum INPUT {
|
|
34
58
|
TEXT = 'text',
|
|
35
59
|
POSTBACK = 'postback',
|
|
@@ -50,20 +74,6 @@ export enum INPUT {
|
|
|
50
74
|
WHATSAPP_CTA_URL_BUTTON = 'whatsapp-cta-url-button',
|
|
51
75
|
}
|
|
52
76
|
|
|
53
|
-
export enum CASE_STATUS {
|
|
54
|
-
WAITING = 'status_waiting',
|
|
55
|
-
ATTENDING = 'status_attending',
|
|
56
|
-
IDLE = 'status_idle',
|
|
57
|
-
RESOLVED = 'status_resolved',
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export enum CASE_RESOLUTION {
|
|
61
|
-
OK = 'result_ok',
|
|
62
|
-
NOK = 'result_nok',
|
|
63
|
-
NOT_SOLVED = 'result_not_solved',
|
|
64
|
-
BANNED = 'result_banned',
|
|
65
|
-
}
|
|
66
|
-
|
|
67
77
|
export interface Locales {
|
|
68
78
|
[id: string]: string | string[] | Locales
|
|
69
79
|
}
|
|
@@ -86,22 +96,22 @@ export interface ResolvedPlugin extends Plugin {
|
|
|
86
96
|
export type ResolvedPlugins = Record<string, ResolvedPlugin>
|
|
87
97
|
|
|
88
98
|
export type InputType =
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
|
|
|
104
|
-
|
|
|
99
|
+
| INPUT.AUDIO
|
|
100
|
+
| INPUT.BUTTON_MESSAGE
|
|
101
|
+
| INPUT.CAROUSEL
|
|
102
|
+
| INPUT.CONTACT
|
|
103
|
+
| INPUT.CUSTOM
|
|
104
|
+
| INPUT.DOCUMENT
|
|
105
|
+
| INPUT.IMAGE
|
|
106
|
+
| INPUT.LOCATION
|
|
107
|
+
| INPUT.POSTBACK
|
|
108
|
+
| INPUT.TEXT
|
|
109
|
+
| INPUT.VIDEO
|
|
110
|
+
| INPUT.WEBCHAT_SETTINGS
|
|
111
|
+
| INPUT.WHATSAPP_TEMPLATE
|
|
112
|
+
| INPUT.CHAT_EVENT
|
|
113
|
+
| INPUT.WHATSAPP_BUTTON_LIST
|
|
114
|
+
| INPUT.WHATSAPP_CTA_URL_BUTTON
|
|
105
115
|
|
|
106
116
|
export interface IntentResult {
|
|
107
117
|
intent: string
|
|
@@ -132,21 +142,22 @@ export interface Input extends Partial<NluResult> {
|
|
|
132
142
|
data?: string
|
|
133
143
|
path?: string
|
|
134
144
|
payload?: string
|
|
145
|
+
referral?: string
|
|
135
146
|
type: InputType
|
|
147
|
+
context?: {
|
|
148
|
+
campaign?: Campaign
|
|
149
|
+
}
|
|
136
150
|
}
|
|
137
151
|
|
|
138
|
-
export
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
| typeof PROVIDER.WEBCHAT
|
|
148
|
-
| typeof PROVIDER.WECHAT
|
|
149
|
-
| typeof PROVIDER.WHATSAPP
|
|
152
|
+
export interface Campaign {
|
|
153
|
+
id: string
|
|
154
|
+
name: string
|
|
155
|
+
status: string
|
|
156
|
+
start_date: string
|
|
157
|
+
end_date: string
|
|
158
|
+
bot_path: string
|
|
159
|
+
template_name: string
|
|
160
|
+
}
|
|
150
161
|
|
|
151
162
|
export interface SessionUser {
|
|
152
163
|
id: string
|
|
@@ -161,8 +172,12 @@ export interface SessionUser {
|
|
|
161
172
|
imp_id?: string
|
|
162
173
|
provider_id?: string
|
|
163
174
|
}
|
|
175
|
+
export interface HubtypeCaseContactReason {
|
|
176
|
+
id: string
|
|
177
|
+
name: string
|
|
178
|
+
project_id: string
|
|
179
|
+
}
|
|
164
180
|
|
|
165
|
-
// eslint-disable @typescript-eslint/naming-convention
|
|
166
181
|
export interface Session {
|
|
167
182
|
bot: {
|
|
168
183
|
id: string
|
|
@@ -170,18 +185,23 @@ export interface Session {
|
|
|
170
185
|
}
|
|
171
186
|
__locale?: string
|
|
172
187
|
__retries: number
|
|
188
|
+
_access_token: string
|
|
189
|
+
_hubtype_api: string
|
|
173
190
|
is_first_interaction: boolean
|
|
174
191
|
last_session?: any
|
|
175
|
-
organization: string
|
|
176
192
|
organization_id: string
|
|
193
|
+
organization: string
|
|
177
194
|
user: SessionUser
|
|
178
195
|
// after handoff
|
|
196
|
+
_botonic_action?: string
|
|
179
197
|
_hubtype_case_status?: CaseStatusType
|
|
198
|
+
_hubtype_case_id?: string
|
|
180
199
|
_hubtype_case_typification?: string
|
|
200
|
+
_hubtype_case_contact_reasons?: HubtypeCaseContactReason[]
|
|
181
201
|
_shadowing?: boolean
|
|
182
|
-
|
|
202
|
+
external?: any
|
|
203
|
+
zendesk_ticket_id?: string
|
|
183
204
|
}
|
|
184
|
-
// eslint-enable @typescript-eslint/naming-convention
|
|
185
205
|
|
|
186
206
|
export type InputMatcher = (input: Input) => boolean
|
|
187
207
|
export type ParamsMatcher =
|
|
@@ -225,7 +245,6 @@ export interface BotRequest {
|
|
|
225
245
|
input: Input
|
|
226
246
|
lastRoutePath: RoutePath
|
|
227
247
|
session: Session
|
|
228
|
-
dataProvider?: DataProvider
|
|
229
248
|
}
|
|
230
249
|
|
|
231
250
|
/** The response of the bot for the triggered actions, which can be
|
|
@@ -234,7 +253,6 @@ export interface BotRequest {
|
|
|
234
253
|
* */
|
|
235
254
|
export interface BotResponse extends BotRequest {
|
|
236
255
|
response: any
|
|
237
|
-
messageEvents: Partial<BotonicEvent>[] | null
|
|
238
256
|
}
|
|
239
257
|
|
|
240
258
|
export interface PluginPreRequest extends BotRequest {
|
|
@@ -253,24 +271,6 @@ export interface Params {
|
|
|
253
271
|
[key: string]: any
|
|
254
272
|
}
|
|
255
273
|
|
|
256
|
-
export const Providers = Object.freeze({
|
|
257
|
-
Messaging: {
|
|
258
|
-
APPLE: 'apple',
|
|
259
|
-
FACEBOOK: 'facebook',
|
|
260
|
-
GENERIC: 'generic',
|
|
261
|
-
IMBEE: 'imbee',
|
|
262
|
-
INSTAGRAM: 'instagram',
|
|
263
|
-
INTERCOM: 'intercom',
|
|
264
|
-
SMOOCH_WEB: 'smooch_web',
|
|
265
|
-
SMOOCH: 'smooch',
|
|
266
|
-
TELEGRAM: 'telegram',
|
|
267
|
-
TWITTER: 'twitter',
|
|
268
|
-
WEBCHAT: 'webchat',
|
|
269
|
-
WECHAT: 'wechat',
|
|
270
|
-
WHATSAPP: 'whatsapp',
|
|
271
|
-
},
|
|
272
|
-
})
|
|
273
|
-
|
|
274
274
|
export type Nullable<T> = T | null
|
|
275
275
|
|
|
276
276
|
export type Action = Nullable<() => any>
|
package/src/plugins.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { DataProvider } from './data-provider'
|
|
2
1
|
import {
|
|
3
|
-
BotonicEvent,
|
|
4
2
|
Input,
|
|
5
3
|
PluginConfig,
|
|
6
4
|
ResolvedPlugins,
|
|
@@ -34,15 +32,13 @@ export async function runPlugins(
|
|
|
34
32
|
input: Input,
|
|
35
33
|
session: Session,
|
|
36
34
|
lastRoutePath: RoutePath,
|
|
37
|
-
response: string | null = null
|
|
38
|
-
messageEvents: Partial<BotonicEvent>[] | null = null,
|
|
39
|
-
dataProvider?: DataProvider
|
|
35
|
+
response: string | null = null
|
|
40
36
|
): Promise<void> {
|
|
41
37
|
for (const key in plugins) {
|
|
42
38
|
const p = await plugins[key]
|
|
43
39
|
try {
|
|
44
40
|
if (mode === 'pre' && p.pre) {
|
|
45
|
-
await p.pre({ input, session, lastRoutePath,
|
|
41
|
+
await p.pre({ input, session, lastRoutePath, plugins })
|
|
46
42
|
}
|
|
47
43
|
if (mode === 'post' && p.post) {
|
|
48
44
|
await p.post({
|
|
@@ -50,8 +46,6 @@ export async function runPlugins(
|
|
|
50
46
|
session,
|
|
51
47
|
lastRoutePath,
|
|
52
48
|
response,
|
|
53
|
-
messageEvents,
|
|
54
|
-
dataProvider,
|
|
55
49
|
plugins,
|
|
56
50
|
})
|
|
57
51
|
}
|
package/src/utils.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { PROVIDER, Session } from './models/legacy-types'
|
|
2
|
+
|
|
1
3
|
export const isNode = (): boolean => {
|
|
2
4
|
// @ts-ignore
|
|
3
5
|
return typeof IS_NODE !== 'undefined'
|
|
@@ -76,3 +78,33 @@ export const join = (...segments: string[]): string => {
|
|
|
76
78
|
// A simple function to get the dirname of a path
|
|
77
79
|
// Trailing slashes are ignored. Leading slash is preserved.
|
|
78
80
|
export const dirname = (path: string): string => join(path, '..')
|
|
81
|
+
|
|
82
|
+
// To check Provider in session
|
|
83
|
+
export function isDev(session: Session) {
|
|
84
|
+
return session.user.provider === PROVIDER.DEV
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function isWebchat(session: Session) {
|
|
88
|
+
// When the provider is DEV should we return true because it is a webchat?
|
|
89
|
+
return session.user.provider === PROVIDER.WEBCHAT
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function isWhatsapp(session: Session) {
|
|
93
|
+
return session.user.provider === PROVIDER.WHATSAPP
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function isTelegram(session: Session) {
|
|
97
|
+
return session.user.provider === PROVIDER.TELEGRAM
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function isFacebook(session: Session) {
|
|
101
|
+
return session.user.provider === PROVIDER.FACEBOOK
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function isInstagram(session: Session) {
|
|
105
|
+
return session.user.provider === PROVIDER.INSTAGRAM
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function isTwitter(session: Session) {
|
|
109
|
+
return session.user.provider === PROVIDER.TWITTER
|
|
110
|
+
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Entity, Table } from 'dynamodb-toolbox';
|
|
2
|
-
import { BotonicEvent, User } from '../models';
|
|
3
|
-
import { DataProvider } from './factory';
|
|
4
|
-
export declare class DynamoDBDataProvider implements DataProvider {
|
|
5
|
-
region: string;
|
|
6
|
-
tableName: string;
|
|
7
|
-
userEventsTable: Table;
|
|
8
|
-
userEntity: Entity<any>;
|
|
9
|
-
eventEntity: Entity<any>;
|
|
10
|
-
messageEventEntities: Record<string, Entity<any>>;
|
|
11
|
-
textMessageEventEntity: Entity<any>;
|
|
12
|
-
connectionEventEntity: Entity<any>;
|
|
13
|
-
constructor(url: string);
|
|
14
|
-
getUsers(limit?: number, offset?: number): Promise<User[]>;
|
|
15
|
-
getUser(id: string): Promise<User | undefined>;
|
|
16
|
-
getUserByWebsocketId(websocketId: string): Promise<User | undefined>;
|
|
17
|
-
getUserByField(field: string, value: any): Promise<User | undefined>;
|
|
18
|
-
saveUser(user: User): Promise<User>;
|
|
19
|
-
updateUser(user: User): Promise<User>;
|
|
20
|
-
deleteUser(id: string): Promise<User | undefined>;
|
|
21
|
-
getEvents(limit?: number, offset?: number): Promise<BotonicEvent[]>;
|
|
22
|
-
getEvent(id: string): Promise<BotonicEvent | undefined>;
|
|
23
|
-
saveEvent(event: BotonicEvent): Promise<BotonicEvent>;
|
|
24
|
-
updateEvent(event: BotonicEvent): Promise<BotonicEvent>;
|
|
25
|
-
deleteEvent(id: string): Promise<BotonicEvent | undefined>;
|
|
26
|
-
}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DynamoDBDataProvider = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const models_1 = require("../models");
|
|
6
|
-
const dynamodb_utils_1 = require("./dynamodb-utils");
|
|
7
|
-
class DynamoDBDataProvider {
|
|
8
|
-
constructor(url) {
|
|
9
|
-
try {
|
|
10
|
-
const urlParts = url.split('://')[1].split('.');
|
|
11
|
-
this.tableName = urlParts[0];
|
|
12
|
-
this.region = urlParts[1];
|
|
13
|
-
this.userEventsTable = (0, dynamodb_utils_1.getUserEventsTable)(this.tableName, this.region);
|
|
14
|
-
this.userEntity = (0, dynamodb_utils_1.getUserEntity)(this.userEventsTable);
|
|
15
|
-
this.connectionEventEntity = (0, dynamodb_utils_1.getConnectionEventEntity)(this.userEventsTable);
|
|
16
|
-
this.messageEventEntities = (0, dynamodb_utils_1.getMessageEventEntities)(this.userEventsTable);
|
|
17
|
-
}
|
|
18
|
-
catch (e) {
|
|
19
|
-
console.log({ e });
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
// @ts-ignore
|
|
23
|
-
getUsers(limit = 10, offset = 0) {
|
|
24
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
// TODO: finish to implement with offset
|
|
26
|
-
const result = yield this.userEventsTable.scan({
|
|
27
|
-
filters: { attr: dynamodb_utils_1.SORT_KEY_NAME, beginsWith: dynamodb_utils_1.USER_PREFIX },
|
|
28
|
-
limit,
|
|
29
|
-
});
|
|
30
|
-
return result.Items;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
getUser(id) {
|
|
34
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
const userById = {
|
|
36
|
-
id: id,
|
|
37
|
-
SK: id,
|
|
38
|
-
};
|
|
39
|
-
const result = yield this.userEntity.get(userById);
|
|
40
|
-
if (Object.keys(result).length === 0)
|
|
41
|
-
return undefined;
|
|
42
|
-
return result.Item;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
getUserByWebsocketId(websocketId) {
|
|
46
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
const result = yield this.userEventsTable.query(websocketId, {
|
|
48
|
-
index: dynamodb_utils_1.GLOBAL_SECONDARY_INDEX_NAME,
|
|
49
|
-
});
|
|
50
|
-
if (result.Count === 0)
|
|
51
|
-
return undefined;
|
|
52
|
-
return result.Items[0];
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
// @ts-ignore
|
|
56
|
-
getUserByField(field, value) {
|
|
57
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () { });
|
|
58
|
-
} //TODO: Implement
|
|
59
|
-
saveUser(user) {
|
|
60
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
const putUser = Object.assign(Object.assign({}, user), { id: user.id, userId: user.id });
|
|
62
|
-
yield this.userEntity.put(putUser);
|
|
63
|
-
return user;
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
updateUser(user) {
|
|
67
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
68
|
-
const updateUser = Object.assign(Object.assign({}, user), { id: user.id, userId: user.id });
|
|
69
|
-
const res = yield this.userEntity.update(updateUser);
|
|
70
|
-
return user;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
// @ts-ignore
|
|
74
|
-
deleteUser(id) {
|
|
75
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () { });
|
|
76
|
-
} // TODO: Implement
|
|
77
|
-
// @ts-ignore
|
|
78
|
-
getEvents(limit = 10, offset = 0) {
|
|
79
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () { });
|
|
80
|
-
} // TODO: Implement
|
|
81
|
-
// @ts-ignore
|
|
82
|
-
getEvent(id) {
|
|
83
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () { });
|
|
84
|
-
} // TODO: Implement
|
|
85
|
-
saveEvent(event) {
|
|
86
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
87
|
-
if (event.eventType === models_1.EventTypes.CONNECTION) {
|
|
88
|
-
yield this.connectionEventEntity.put(event);
|
|
89
|
-
}
|
|
90
|
-
if (event.eventType === models_1.EventTypes.MESSAGE) {
|
|
91
|
-
yield this.messageEventEntities[event.type].put(event);
|
|
92
|
-
}
|
|
93
|
-
// TODO: Implementation of other event types
|
|
94
|
-
return event;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
// @ts-ignore
|
|
98
|
-
updateEvent(event) {
|
|
99
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () { });
|
|
100
|
-
} // TODO: Implement
|
|
101
|
-
// @ts-ignore
|
|
102
|
-
deleteEvent(id) {
|
|
103
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () { });
|
|
104
|
-
} // TODO: Implement
|
|
105
|
-
}
|
|
106
|
-
exports.DynamoDBDataProvider = DynamoDBDataProvider;
|
|
107
|
-
//# sourceMappingURL=dynamodb-data-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dynamodb-data-provider.js","sourceRoot":"","sources":["../../../src/data-provider/dynamodb-data-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Entity, Table } from 'dynamodb-toolbox';
|
|
2
|
-
export declare const GLOBAL_SECONDARY_INDEX_NAME = "GSI1";
|
|
3
|
-
export declare const GLOBAL_SECONDARY_INDEX_ATTR = "websocketId";
|
|
4
|
-
export declare const PARTITION_KEY_NAME = "PK";
|
|
5
|
-
export declare const SORT_KEY_NAME = "SK";
|
|
6
|
-
export declare const USER_PREFIX = "USR#";
|
|
7
|
-
export declare const EVENT_PREFIX = "EVT#";
|
|
8
|
-
export declare function getUserEventsTable(tableName: string, region: string): Table;
|
|
9
|
-
export declare function getUserEntity(table: Table): Entity<any>;
|
|
10
|
-
export declare function getConnectionEventEntity(table: Table): Entity<any>;
|
|
11
|
-
export declare function getMessageEventEntities(table: Table): Record<string, Entity<any>>;
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMessageEventEntities = exports.getConnectionEventEntity = exports.getUserEntity = exports.getUserEventsTable = exports.EVENT_PREFIX = exports.USER_PREFIX = exports.SORT_KEY_NAME = exports.PARTITION_KEY_NAME = exports.GLOBAL_SECONDARY_INDEX_ATTR = exports.GLOBAL_SECONDARY_INDEX_NAME = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const dynamodb_1 = tslib_1.__importDefault(require("aws-sdk/clients/dynamodb"));
|
|
6
|
-
const dynamodb_toolbox_1 = require("dynamodb-toolbox");
|
|
7
|
-
const models_1 = require("../models");
|
|
8
|
-
// Table Definitions
|
|
9
|
-
exports.GLOBAL_SECONDARY_INDEX_NAME = 'GSI1';
|
|
10
|
-
exports.GLOBAL_SECONDARY_INDEX_ATTR = 'websocketId';
|
|
11
|
-
exports.PARTITION_KEY_NAME = 'PK';
|
|
12
|
-
exports.SORT_KEY_NAME = 'SK';
|
|
13
|
-
// Entities Definitions
|
|
14
|
-
exports.USER_PREFIX = 'USR#';
|
|
15
|
-
exports.EVENT_PREFIX = 'EVT#';
|
|
16
|
-
function capitalize(string) {
|
|
17
|
-
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
18
|
-
}
|
|
19
|
-
function getUserEventsTable(tableName, region) {
|
|
20
|
-
const documentClient = new dynamodb_1.default.DocumentClient({
|
|
21
|
-
apiVersion: '2012-08-10',
|
|
22
|
-
region: region,
|
|
23
|
-
});
|
|
24
|
-
return new dynamodb_toolbox_1.Table({
|
|
25
|
-
name: tableName,
|
|
26
|
-
partitionKey: exports.PARTITION_KEY_NAME,
|
|
27
|
-
sortKey: exports.SORT_KEY_NAME,
|
|
28
|
-
entityField: true,
|
|
29
|
-
indexes: {
|
|
30
|
-
GSI1: {
|
|
31
|
-
partitionKey: exports.GLOBAL_SECONDARY_INDEX_ATTR,
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
DocumentClient: documentClient,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
exports.getUserEventsTable = getUserEventsTable;
|
|
38
|
-
function getUserEntity(table) {
|
|
39
|
-
return new dynamodb_toolbox_1.Entity({
|
|
40
|
-
name: 'User',
|
|
41
|
-
attributes: {
|
|
42
|
-
id: { partitionKey: true, prefix: exports.USER_PREFIX },
|
|
43
|
-
[`${exports.SORT_KEY_NAME}`]: {
|
|
44
|
-
hidden: true,
|
|
45
|
-
sortKey: true,
|
|
46
|
-
prefix: exports.USER_PREFIX,
|
|
47
|
-
},
|
|
48
|
-
userId: [exports.SORT_KEY_NAME, 0],
|
|
49
|
-
websocketId: 'string',
|
|
50
|
-
isOnline: 'boolean',
|
|
51
|
-
route: 'string',
|
|
52
|
-
session: 'string',
|
|
53
|
-
},
|
|
54
|
-
table,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
exports.getUserEntity = getUserEntity;
|
|
58
|
-
function getConnectionEventEntity(table) {
|
|
59
|
-
return new dynamodb_toolbox_1.Entity({
|
|
60
|
-
name: 'Connection Event',
|
|
61
|
-
attributes: {
|
|
62
|
-
userId: { partitionKey: true, prefix: exports.USER_PREFIX },
|
|
63
|
-
[`${exports.SORT_KEY_NAME}`]: {
|
|
64
|
-
hidden: true,
|
|
65
|
-
sortKey: true,
|
|
66
|
-
prefix: exports.EVENT_PREFIX,
|
|
67
|
-
},
|
|
68
|
-
eventId: [exports.SORT_KEY_NAME, 0],
|
|
69
|
-
eventType: 'string',
|
|
70
|
-
createdAt: 'string',
|
|
71
|
-
modifiedAt: 'string',
|
|
72
|
-
status: 'string',
|
|
73
|
-
},
|
|
74
|
-
table,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
exports.getConnectionEventEntity = getConnectionEventEntity;
|
|
78
|
-
function getMessageEventEntities(table) {
|
|
79
|
-
const textAttributes = {
|
|
80
|
-
text: 'string',
|
|
81
|
-
markdown: 'boolean',
|
|
82
|
-
buttons: 'list',
|
|
83
|
-
replies: 'list',
|
|
84
|
-
};
|
|
85
|
-
const mediaAttributes = {
|
|
86
|
-
src: 'string',
|
|
87
|
-
buttons: 'list',
|
|
88
|
-
};
|
|
89
|
-
const locationAttributes = {
|
|
90
|
-
lat: 'number',
|
|
91
|
-
long: 'number',
|
|
92
|
-
};
|
|
93
|
-
const carouselAttributes = {
|
|
94
|
-
elements: 'list',
|
|
95
|
-
};
|
|
96
|
-
const customAttributes = {
|
|
97
|
-
json: 'map',
|
|
98
|
-
replies: 'list',
|
|
99
|
-
};
|
|
100
|
-
const entityWithAttributes = (type, attributes) => new dynamodb_toolbox_1.Entity({
|
|
101
|
-
name: `${capitalize(type)} Message Event`,
|
|
102
|
-
attributes: Object.assign({ userId: { partitionKey: true, prefix: exports.USER_PREFIX }, [`${exports.SORT_KEY_NAME}`]: {
|
|
103
|
-
hidden: true,
|
|
104
|
-
sortKey: true,
|
|
105
|
-
prefix: exports.EVENT_PREFIX,
|
|
106
|
-
}, eventId: [exports.SORT_KEY_NAME, 0], eventType: 'string', createdAt: 'string', modifiedAt: 'string', from: 'string', ack: 'string', typing: 'number', delay: 'number', type: 'string' }, attributes),
|
|
107
|
-
table,
|
|
108
|
-
});
|
|
109
|
-
return {
|
|
110
|
-
text: entityWithAttributes(models_1.MessageEventTypes.TEXT, textAttributes),
|
|
111
|
-
audio: entityWithAttributes(models_1.MessageEventTypes.AUDIO, mediaAttributes),
|
|
112
|
-
image: entityWithAttributes(models_1.MessageEventTypes.IMAGE, mediaAttributes),
|
|
113
|
-
document: entityWithAttributes(models_1.MessageEventTypes.DOCUMENT, mediaAttributes),
|
|
114
|
-
video: entityWithAttributes(models_1.MessageEventTypes.VIDEO, mediaAttributes),
|
|
115
|
-
location: entityWithAttributes(models_1.MessageEventTypes.LOCATION, locationAttributes),
|
|
116
|
-
carousel: entityWithAttributes(models_1.MessageEventTypes.CAROUSEL, carouselAttributes),
|
|
117
|
-
custom: entityWithAttributes(models_1.MessageEventTypes.CUSTOM, customAttributes),
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
exports.getMessageEventEntities = getMessageEventEntities;
|
|
121
|
-
//# sourceMappingURL=dynamodb-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dynamodb-utils.js","sourceRoot":"","sources":["../../../src/data-provider/dynamodb-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { BotonicEvent, User } from '../models';
|
|
2
|
-
export declare const dataProviderProtocols: {
|
|
3
|
-
DYNAMO_DB: string;
|
|
4
|
-
FILE: string;
|
|
5
|
-
};
|
|
6
|
-
export interface DataProvider {
|
|
7
|
-
getUsers(limit?: number, offset?: number): User[] | Promise<User[]>;
|
|
8
|
-
getUser(id: string): User | Promise<User | undefined> | undefined;
|
|
9
|
-
getUserByWebsocketId(websocketId: string): User | Promise<User | undefined> | undefined;
|
|
10
|
-
getUserByField(field: string, value: any): User | Promise<User | undefined> | undefined;
|
|
11
|
-
saveUser(user: User): User | Promise<User>;
|
|
12
|
-
updateUser(user: User): User | Promise<User>;
|
|
13
|
-
deleteUser(id: string): User | Promise<User | undefined> | undefined;
|
|
14
|
-
getEvents(limit?: number, offset?: number): BotonicEvent[] | Promise<BotonicEvent[]>;
|
|
15
|
-
getEvent(id: string): BotonicEvent | Promise<BotonicEvent | undefined> | undefined;
|
|
16
|
-
saveEvent(event: BotonicEvent): BotonicEvent | Promise<BotonicEvent>;
|
|
17
|
-
updateEvent(event: BotonicEvent): BotonicEvent | Promise<BotonicEvent>;
|
|
18
|
-
deleteEvent(id: string): BotonicEvent | Promise<BotonicEvent | undefined> | undefined;
|
|
19
|
-
}
|
|
20
|
-
/** URL examples:
|
|
21
|
-
* dynamodb://my-table.my-region.aws.com
|
|
22
|
-
* postgresql://my-database.my-db-provider.com
|
|
23
|
-
* file://path/to/local/db.json
|
|
24
|
-
*/
|
|
25
|
-
export declare function dataProviderFactory(url?: string): DataProvider;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dataProviderFactory = exports.dataProviderProtocols = void 0;
|
|
4
|
-
const dynamodb_data_provider_1 = require("./dynamodb-data-provider");
|
|
5
|
-
const local_data_provider_1 = require("./local-data-provider");
|
|
6
|
-
exports.dataProviderProtocols = {
|
|
7
|
-
DYNAMO_DB: 'dynamodb',
|
|
8
|
-
FILE: 'file',
|
|
9
|
-
};
|
|
10
|
-
/** URL examples:
|
|
11
|
-
* dynamodb://my-table.my-region.aws.com
|
|
12
|
-
* postgresql://my-database.my-db-provider.com
|
|
13
|
-
* file://path/to/local/db.json
|
|
14
|
-
*/
|
|
15
|
-
function dataProviderFactory(url) {
|
|
16
|
-
if (!url) {
|
|
17
|
-
return new local_data_provider_1.LocalDevDataProvider();
|
|
18
|
-
}
|
|
19
|
-
const protocol = url.split('://')[0];
|
|
20
|
-
switch (protocol) {
|
|
21
|
-
case exports.dataProviderProtocols.DYNAMO_DB:
|
|
22
|
-
return new dynamodb_data_provider_1.DynamoDBDataProvider(url);
|
|
23
|
-
case exports.dataProviderProtocols.FILE:
|
|
24
|
-
return new local_data_provider_1.LocalDevDataProvider(url);
|
|
25
|
-
default:
|
|
26
|
-
console.error(`Protocol ${protocol} not implemented, using local DB instead.`);
|
|
27
|
-
return new local_data_provider_1.LocalDevDataProvider();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.dataProviderFactory = dataProviderFactory;
|
|
31
|
-
//# sourceMappingURL=factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/data-provider/factory.ts"],"names":[],"mappings":";;;AACA,qEAA+D;AAC/D,+DAA4D;AAE/C,QAAA,qBAAqB,GAAG;IACnC,SAAS,EAAE,UAAU;IACrB,IAAI,EAAE,MAAM;CACb,CAAA;AA8BD;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,IAAI,0CAAoB,EAAE,CAAA;KAClC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,QAAQ,QAAQ,EAAE;QAChB,KAAK,6BAAqB,CAAC,SAAS;YAClC,OAAO,IAAI,6CAAoB,CAAC,GAAG,CAAC,CAAA;QACtC,KAAK,6BAAqB,CAAC,IAAI;YAC7B,OAAO,IAAI,0CAAoB,CAAC,GAAG,CAAC,CAAA;QACtC;YACE,OAAO,CAAC,KAAK,CACX,YAAY,QAAQ,2CAA2C,CAChE,CAAA;YACD,OAAO,IAAI,0CAAoB,EAAE,CAAA;KACpC;AACH,CAAC;AAjBD,kDAiBC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./dynamodb-data-provider"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./dynamodb-utils"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./factory"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./local-data-provider"), exports);
|
|
8
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-provider/index.ts"],"names":[],"mappings":";;;AAAA,mEAAwC;AACxC,2DAAgC;AAChC,oDAAyB;AACzB,gEAAqC"}
|