@botonic/core 0.26.0-beta.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 +44 -40
- package/lib/cjs/models/legacy-types.js +16 -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 +44 -40
- package/lib/esm/models/legacy-types.js +15 -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 +77 -75
- 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',
|
|
@@ -47,20 +71,7 @@ export enum INPUT {
|
|
|
47
71
|
RAW = 'raw',
|
|
48
72
|
CHAT_EVENT = 'chatevent',
|
|
49
73
|
WHATSAPP_BUTTON_LIST = 'whatsapp-button-list',
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
export enum CASE_STATUS {
|
|
53
|
-
WAITING = 'status_waiting',
|
|
54
|
-
ATTENDING = 'status_attending',
|
|
55
|
-
IDLE = 'status_idle',
|
|
56
|
-
RESOLVED = 'status_resolved',
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export enum CASE_RESOLUTION {
|
|
60
|
-
OK = 'result_ok',
|
|
61
|
-
NOK = 'result_nok',
|
|
62
|
-
NOT_SOLVED = 'result_not_solved',
|
|
63
|
-
BANNED = 'result_banned',
|
|
74
|
+
WHATSAPP_CTA_URL_BUTTON = 'whatsapp-cta-url-button',
|
|
64
75
|
}
|
|
65
76
|
|
|
66
77
|
export interface Locales {
|
|
@@ -85,21 +96,22 @@ export interface ResolvedPlugin extends Plugin {
|
|
|
85
96
|
export type ResolvedPlugins = Record<string, ResolvedPlugin>
|
|
86
97
|
|
|
87
98
|
export type InputType =
|
|
88
|
-
|
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
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
|
|
103
115
|
|
|
104
116
|
export interface IntentResult {
|
|
105
117
|
intent: string
|
|
@@ -130,21 +142,22 @@ export interface Input extends Partial<NluResult> {
|
|
|
130
142
|
data?: string
|
|
131
143
|
path?: string
|
|
132
144
|
payload?: string
|
|
145
|
+
referral?: string
|
|
133
146
|
type: InputType
|
|
147
|
+
context?: {
|
|
148
|
+
campaign?: Campaign
|
|
149
|
+
}
|
|
134
150
|
}
|
|
135
151
|
|
|
136
|
-
export
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
| typeof PROVIDER.WEBCHAT
|
|
146
|
-
| typeof PROVIDER.WECHAT
|
|
147
|
-
| 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
|
+
}
|
|
148
161
|
|
|
149
162
|
export interface SessionUser {
|
|
150
163
|
id: string
|
|
@@ -159,8 +172,12 @@ export interface SessionUser {
|
|
|
159
172
|
imp_id?: string
|
|
160
173
|
provider_id?: string
|
|
161
174
|
}
|
|
175
|
+
export interface HubtypeCaseContactReason {
|
|
176
|
+
id: string
|
|
177
|
+
name: string
|
|
178
|
+
project_id: string
|
|
179
|
+
}
|
|
162
180
|
|
|
163
|
-
// eslint-disable @typescript-eslint/naming-convention
|
|
164
181
|
export interface Session {
|
|
165
182
|
bot: {
|
|
166
183
|
id: string
|
|
@@ -168,18 +185,23 @@ export interface Session {
|
|
|
168
185
|
}
|
|
169
186
|
__locale?: string
|
|
170
187
|
__retries: number
|
|
188
|
+
_access_token: string
|
|
189
|
+
_hubtype_api: string
|
|
171
190
|
is_first_interaction: boolean
|
|
172
191
|
last_session?: any
|
|
173
|
-
organization: string
|
|
174
192
|
organization_id: string
|
|
193
|
+
organization: string
|
|
175
194
|
user: SessionUser
|
|
176
195
|
// after handoff
|
|
196
|
+
_botonic_action?: string
|
|
177
197
|
_hubtype_case_status?: CaseStatusType
|
|
198
|
+
_hubtype_case_id?: string
|
|
178
199
|
_hubtype_case_typification?: string
|
|
200
|
+
_hubtype_case_contact_reasons?: HubtypeCaseContactReason[]
|
|
179
201
|
_shadowing?: boolean
|
|
180
|
-
|
|
202
|
+
external?: any
|
|
203
|
+
zendesk_ticket_id?: string
|
|
181
204
|
}
|
|
182
|
-
// eslint-enable @typescript-eslint/naming-convention
|
|
183
205
|
|
|
184
206
|
export type InputMatcher = (input: Input) => boolean
|
|
185
207
|
export type ParamsMatcher =
|
|
@@ -223,7 +245,6 @@ export interface BotRequest {
|
|
|
223
245
|
input: Input
|
|
224
246
|
lastRoutePath: RoutePath
|
|
225
247
|
session: Session
|
|
226
|
-
dataProvider?: DataProvider
|
|
227
248
|
}
|
|
228
249
|
|
|
229
250
|
/** The response of the bot for the triggered actions, which can be
|
|
@@ -232,7 +253,6 @@ export interface BotRequest {
|
|
|
232
253
|
* */
|
|
233
254
|
export interface BotResponse extends BotRequest {
|
|
234
255
|
response: any
|
|
235
|
-
messageEvents: Partial<BotonicEvent>[] | null
|
|
236
256
|
}
|
|
237
257
|
|
|
238
258
|
export interface PluginPreRequest extends BotRequest {
|
|
@@ -251,24 +271,6 @@ export interface Params {
|
|
|
251
271
|
[key: string]: any
|
|
252
272
|
}
|
|
253
273
|
|
|
254
|
-
export const Providers = Object.freeze({
|
|
255
|
-
Messaging: {
|
|
256
|
-
APPLE: 'apple',
|
|
257
|
-
FACEBOOK: 'facebook',
|
|
258
|
-
GENERIC: 'generic',
|
|
259
|
-
IMBEE: 'imbee',
|
|
260
|
-
INSTAGRAM: 'instagram',
|
|
261
|
-
INTERCOM: 'intercom',
|
|
262
|
-
SMOOCH_WEB: 'smooch_web',
|
|
263
|
-
SMOOCH: 'smooch',
|
|
264
|
-
TELEGRAM: 'telegram',
|
|
265
|
-
TWITTER: 'twitter',
|
|
266
|
-
WEBCHAT: 'webchat',
|
|
267
|
-
WECHAT: 'wechat',
|
|
268
|
-
WHATSAPP: 'whatsapp',
|
|
269
|
-
},
|
|
270
|
-
})
|
|
271
|
-
|
|
272
274
|
export type Nullable<T> = T | null
|
|
273
275
|
|
|
274
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"}
|