@vraksha/bottender-facebook 1.7.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017-present Yoctol (github.com/Yoctol/bottender)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,49 @@
1
+ import { MergeExclusive } from 'type-fest';
2
+ import { MessengerTypes } from '@vraksha/bottender';
3
+ import * as Types from './FacebookTypes';
4
+ declare function sendComment(objectId: string, comment: string | Types.InputComment, options?: {
5
+ accessToken?: string;
6
+ }): MessengerTypes.BatchItem;
7
+ declare function sendLike(objectId: string, options?: {
8
+ accessToken?: string;
9
+ }): MessengerTypes.BatchItem;
10
+ declare function getComment(commentId: string, { summary, filter, fields, accessToken, }?: {
11
+ summary?: boolean;
12
+ filter?: 'toplevel' | 'stream';
13
+ fields?: string | Types.CommentField[];
14
+ accessToken?: string;
15
+ }): MessengerTypes.BatchItem;
16
+ declare function getLikes(objectId: string, { summary, accessToken, }?: {
17
+ summary?: boolean;
18
+ accessToken?: string;
19
+ }): MessengerTypes.BatchItem;
20
+ declare function getPageInsights<P extends 'day' | 'week' | 'days_28'>(options: {
21
+ accessToken?: string;
22
+ metric: P extends 'day' ? Types.PageInsightsMetricDay[] : P extends 'week' ? Types.PageInsightsMetricWeek[] : P extends 'days_28' ? Types.PageInsightsMetricDays28[] : never;
23
+ period: P;
24
+ } & MergeExclusive<{
25
+ datePreset?: Types.DatePreset;
26
+ }, {
27
+ since?: string | Date;
28
+ until?: string | Date;
29
+ }>): MessengerTypes.BatchItem;
30
+ declare function getPostInsights<P extends 'day' | 'lifetime'>(postId: string, options: {
31
+ accessToken?: string;
32
+ metric: P extends 'day' ? Types.PostInsightsMetricDay[] : P extends 'lifetime' ? Types.PostInsightsMetricLifetime[] : never;
33
+ period?: P;
34
+ } & MergeExclusive<{
35
+ datePreset?: Types.DatePreset;
36
+ }, {
37
+ since?: string | Date;
38
+ until?: string | Date;
39
+ }>): MessengerTypes.BatchItem;
40
+ declare const FacebookBatch: {
41
+ sendComment: typeof sendComment;
42
+ sendLike: typeof sendLike;
43
+ getComment: typeof getComment;
44
+ getLikes: typeof getLikes;
45
+ getPageInsights: typeof getPageInsights;
46
+ getPostInsights: typeof getPostInsights;
47
+ };
48
+ export default FacebookBatch;
49
+ //# sourceMappingURL=FacebookBatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookBatch.d.ts","sourceRoot":"","sources":["../src/FacebookBatch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAkBzC,iBAAS,WAAW,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,EACpC,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,cAAc,CAAC,SAAS,CAW1B;AAUD,iBAAS,QAAQ,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,cAAc,CAAC,SAAS,CAQ1B;AAUD,iBAAS,UAAU,CACjB,SAAS,EAAE,MAAM,EACjB,EACE,OAAO,EACP,MAAM,EACN,MAAM,EACN,WAAW,GACZ,GAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,cAAc,CAAC,SAAS,CAc1B;AAUD,iBAAS,QAAQ,CACf,QAAQ,EAAE,MAAM,EAChB,EACE,OAAO,EACP,WAAW,GACZ,GAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,cAAc,CAAC,SAAS,CAU1B;AASD,iBAAS,eAAe,CAAC,CAAC,SAAS,KAAK,GAAG,MAAM,GAAG,SAAS,EAC3D,OAAO,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,SAAS,KAAK,GACnB,KAAK,CAAC,qBAAqB,EAAE,GAC7B,CAAC,SAAS,MAAM,GAChB,KAAK,CAAC,sBAAsB,EAAE,GAC9B,CAAC,SAAS,SAAS,GACnB,KAAK,CAAC,wBAAwB,EAAE,GAChC,KAAK,CAAC;IACV,MAAM,EAAE,CAAC,CAAC;CACX,GAAG,cAAc,CAChB;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAA;CAAE,EACjC;IACE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CACF,GACA,cAAc,CAAC,SAAS,CAiB1B;AAUD,iBAAS,eAAe,CAAC,CAAC,SAAS,KAAK,GAAG,UAAU,EACnD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,SAAS,KAAK,GACnB,KAAK,CAAC,qBAAqB,EAAE,GAC7B,CAAC,SAAS,UAAU,GACpB,KAAK,CAAC,0BAA0B,EAAE,GAClC,KAAK,CAAC;IACV,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,GAAG,cAAc,CAChB;IACE,UAAU,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;CAC/B,EACD;IACE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CACF,GACA,cAAc,CAAC,SAAS,CAiB1B;AAED,QAAA,MAAM,aAAa;;;;;;;CAQlB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const querystring_1 = __importDefault(require("querystring"));
7
+ const isNil_1 = __importDefault(require("lodash/isNil"));
8
+ const omitBy_1 = __importDefault(require("lodash/omitBy"));
9
+ function formatDate(date) {
10
+ if (date instanceof Date) {
11
+ return date.toISOString();
12
+ }
13
+ return date;
14
+ }
15
+ function sendComment(objectId, comment, options) {
16
+ const body = typeof comment === 'string' ? { message: comment } : comment;
17
+ return {
18
+ method: 'POST',
19
+ relativeUrl: `${objectId}/comments`,
20
+ body: Object.assign(Object.assign({}, body), options),
21
+ };
22
+ }
23
+ function sendLike(objectId, options) {
24
+ return {
25
+ method: 'POST',
26
+ relativeUrl: `${objectId}/likes`,
27
+ body: Object.assign({}, options),
28
+ };
29
+ }
30
+ function getComment(commentId, { summary, filter, fields, accessToken, } = {}) {
31
+ const conjunctFields = Array.isArray(fields) ? fields.join(',') : fields;
32
+ const query = Object.assign(Object.assign(Object.assign(Object.assign({}, (summary && { summary: 'true' })), (filter && { filter })), (conjunctFields && { fields: conjunctFields })), (accessToken && { access_token: accessToken }));
33
+ return {
34
+ method: 'GET',
35
+ relativeUrl: `${commentId}?${querystring_1.default.stringify(query)}`,
36
+ };
37
+ }
38
+ function getLikes(objectId, { summary, accessToken, } = {}) {
39
+ const query = Object.assign(Object.assign({}, (summary && { summary: 'true' })), (accessToken && { access_token: accessToken }));
40
+ return {
41
+ method: 'GET',
42
+ relativeUrl: `${objectId}/likes?${querystring_1.default.stringify(query)}`,
43
+ };
44
+ }
45
+ function getPageInsights(options) {
46
+ const query = (0, omitBy_1.default)({
47
+ access_token: options.accessToken,
48
+ period: options.period,
49
+ metric: options.metric.join(','),
50
+ date_preset: 'datePreset' in options ? options.datePreset : undefined,
51
+ since: 'since' in options ? formatDate(options.since) : undefined,
52
+ until: 'until' in options ? formatDate(options.until) : undefined,
53
+ }, isNil_1.default);
54
+ return {
55
+ method: 'GET',
56
+ relativeUrl: `/me/insights?${querystring_1.default.stringify(query)}`,
57
+ };
58
+ }
59
+ function getPostInsights(postId, options) {
60
+ const query = (0, omitBy_1.default)({
61
+ access_token: options.accessToken,
62
+ period: options.period,
63
+ metric: options.metric.join(','),
64
+ date_preset: 'datePreset' in options ? options.datePreset : undefined,
65
+ since: 'since' in options ? formatDate(options.since) : undefined,
66
+ until: 'until' in options ? formatDate(options.until) : undefined,
67
+ }, isNil_1.default);
68
+ return {
69
+ method: 'GET',
70
+ relativeUrl: `/${postId}/insights?${querystring_1.default.stringify(query)}`,
71
+ };
72
+ }
73
+ const FacebookBatch = {
74
+ sendComment,
75
+ sendLike,
76
+ getComment,
77
+ getLikes,
78
+ getPageInsights,
79
+ getPostInsights,
80
+ };
81
+ exports.default = FacebookBatch;
82
+ //# sourceMappingURL=FacebookBatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookBatch.js","sourceRoot":"","sources":["../src/FacebookBatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import { MergeExclusive } from 'type-fest';
2
+ import { MessengerClient } from '@vraksha/bottender';
3
+ import * as Types from './FacebookTypes';
4
+ export default class FacebookClient extends MessengerClient {
5
+ sendComment(objectId: string, comment: string | Types.InputComment): Promise<{
6
+ id: string;
7
+ }>;
8
+ sendLike(objectId: string): Promise<{
9
+ success: true;
10
+ }>;
11
+ getComment<T extends Types.CommentField = 'id' | 'message' | 'created_time'>(commentId: string, { fields, }?: {
12
+ fields?: T[];
13
+ }): Promise<Pick<Types.Comment, Types.CamelCaseUnion<Types.CommentKeyMap, (typeof fields)[number]>>>;
14
+ getComments<T extends Types.CommentField = 'id' | 'message' | 'created_time', U extends boolean = false>(objectId: string, { limit, summary, filter, order, fields, }?: Types.GetCommentsOptions<T, U>): Promise<Types.PagingData<Pick<Types.Comment, Types.CamelCaseUnion<Types.CommentKeyMap, (typeof fields)[number]>>[]> & (U extends true ? {
15
+ summary: {
16
+ order: 'ranked' | 'chronological' | 'reverse_chronological';
17
+ totalCount: number;
18
+ canComment: boolean;
19
+ };
20
+ } : any)>;
21
+ getLikes(objectId: string, { summary }?: Types.GetLikesOptions): Promise<Types.Likes>;
22
+ getPageInsights<D extends (({
23
+ id: string;
24
+ title: string;
25
+ description: string;
26
+ period: P;
27
+ } & {
28
+ name: Exclude<P extends 'day' ? Types.PageInsightsMetricDay : P extends 'week' ? Types.PageInsightsMetricWeek : P extends 'days_28' ? Types.PageInsightsMetricDays28 : never, 'page_tab_views_login_top_unique' | 'page_tab_views_login_top' | 'page_tab_views_logout_top' | 'page_negative_feedback_by_type' | 'page_positive_feedback_by_type' | 'page_fans_by_like_source' | 'page_fans_by_like_source_unique' | 'page_fans_by_unlike_source_unique' | 'page_fans_by_unlike_source' | 'page_content_activity_by_action_type_unique' | 'page_content_activity_by_action_type'>;
29
+ values: {
30
+ value: number;
31
+ endTime: string;
32
+ }[];
33
+ }) | {
34
+ name: 'page_tab_views_login_top_unique' | 'page_tab_views_login_top' | 'page_tab_views_logout_top';
35
+ values: {
36
+ value: {
37
+ allactivity?: number;
38
+ app?: number;
39
+ info?: number;
40
+ insights?: number;
41
+ likes?: number;
42
+ locations?: number;
43
+ photos?: number;
44
+ photosAlbums?: number;
45
+ photosStream?: number;
46
+ profile?: number;
47
+ profileInfo?: number;
48
+ profileLikes?: number;
49
+ profilePhotos?: number;
50
+ timeline?: number;
51
+ events?: number;
52
+ videos?: number;
53
+ wall?: number;
54
+ tabHome?: number;
55
+ reviews?: number;
56
+ about?: number;
57
+ profileHome?: number;
58
+ profileVideos?: number;
59
+ profilePosts?: number;
60
+ community?: number;
61
+ posts?: number;
62
+ home?: number;
63
+ };
64
+ endTime: string;
65
+ }[];
66
+ } | {
67
+ name: 'page_negative_feedback_by_type';
68
+ values: {
69
+ value: {
70
+ hideClicks?: number;
71
+ hideAllClicks?: number;
72
+ reportSpamClicks?: number;
73
+ unlikePageClicks?: number;
74
+ };
75
+ endTime: string;
76
+ }[];
77
+ } | {
78
+ name: 'page_positive_feedback_by_type';
79
+ values: {
80
+ value: {
81
+ answer?: number;
82
+ claim?: number;
83
+ comment?: number;
84
+ like?: number;
85
+ link?: number;
86
+ other?: number;
87
+ rsvp?: number;
88
+ };
89
+ endTime: string;
90
+ }[];
91
+ } | {
92
+ name: 'page_fans_by_like_source' | 'page_fans_by_like_source_unique';
93
+ values: {
94
+ value: {
95
+ ads?: number;
96
+ newsFeed?: number;
97
+ pageSuggestions?: number;
98
+ restoredLikesFromReactivatedAccounts?: number;
99
+ search?: number;
100
+ yourPage?: number;
101
+ other?: number;
102
+ };
103
+ endTime: string;
104
+ }[];
105
+ } | {
106
+ name: 'page_fans_by_unlike_source_unique' | 'page_fans_by_unlike_source';
107
+ values: {
108
+ value: {
109
+ deactivatedOrMemorializedAccountRemovals?: number;
110
+ other?: number;
111
+ suspiciousAccountRemovals?: number;
112
+ unlikesFromPagePostsOrNewsFeed?: number;
113
+ unlikesFromSearch?: number;
114
+ };
115
+ endTime: string;
116
+ }[];
117
+ } | {
118
+ name: 'page_content_activity_by_action_type_unique' | 'page_content_activity_by_action_type';
119
+ values: {
120
+ value: {
121
+ checkin?: number;
122
+ coupon?: number;
123
+ event?: number;
124
+ fan?: number;
125
+ mention?: number;
126
+ pagePost?: number;
127
+ question?: number;
128
+ userPost?: number;
129
+ other?: number;
130
+ };
131
+ endTime: string;
132
+ }[];
133
+ })[], P extends 'day' | 'week' | 'days_28'>(options: {
134
+ metric: P extends 'day' ? Types.PageInsightsMetricDay[] : P extends 'week' ? Types.PageInsightsMetricWeek[] : P extends 'days_28' ? Types.PageInsightsMetricDays28[] : never;
135
+ period: P;
136
+ } & MergeExclusive<{
137
+ datePreset?: Types.DatePreset;
138
+ }, {
139
+ since?: string | Date;
140
+ until?: string | Date;
141
+ }>): Promise<D>;
142
+ getPostInsights<D extends {
143
+ id: string;
144
+ title: string;
145
+ description: string;
146
+ name: P extends 'day' ? Types.PostInsightsMetricDay : P extends 'lifetime' ? Types.PostInsightsMetricLifetime : never;
147
+ period: P;
148
+ values: P extends 'day' ? {
149
+ value: number;
150
+ endTime: string;
151
+ }[] : P extends 'lifetime' ? {
152
+ value: number;
153
+ } : never;
154
+ }[], P extends 'day' | 'lifetime'>(postId: string, options: {
155
+ metric: P extends 'day' ? Types.PostInsightsMetricDay[] : P extends 'lifetime' ? Types.PostInsightsMetricLifetime[] : never;
156
+ period?: P;
157
+ } & MergeExclusive<{
158
+ datePreset?: Types.DatePreset;
159
+ }, {
160
+ since?: string | Date;
161
+ until?: string | Date;
162
+ }>): Promise<D>;
163
+ }
164
+ //# sourceMappingURL=FacebookClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookClient.d.ts","sourceRoot":"","sources":["../src/FacebookClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const axios_error_1 = __importDefault(require("axios-error"));
7
+ const get_1 = __importDefault(require("lodash/get"));
8
+ const bottender_1 = require("@vraksha/bottender");
9
+ function handleError(err) {
10
+ if (err.response && err.response.data) {
11
+ const error = (0, get_1.default)(err, 'response.data.error');
12
+ if (error) {
13
+ const msg = `Facebook API - ${error.code} ${error.type} ${error.message}`;
14
+ throw new axios_error_1.default(msg, err);
15
+ }
16
+ }
17
+ throw new axios_error_1.default(err.message, err);
18
+ }
19
+ class FacebookClient extends bottender_1.MessengerClient {
20
+ sendComment(objectId, comment) {
21
+ const body = typeof comment === 'string' ? { message: comment } : comment;
22
+ return this.axios
23
+ .post(`/${objectId}/comments`, body, {
24
+ params: {
25
+ access_token: this.accessToken,
26
+ },
27
+ })
28
+ .then((res) => res.data, handleError);
29
+ }
30
+ sendLike(objectId) {
31
+ return this.axios
32
+ .post(`/${objectId}/likes`, undefined, {
33
+ params: {
34
+ access_token: this.accessToken,
35
+ },
36
+ })
37
+ .then((res) => res.data, handleError);
38
+ }
39
+ getComment(commentId, { fields = ['id', 'message', 'created_time'], } = {}) {
40
+ const conjunctFields = Array.isArray(fields) ? fields.join(',') : fields;
41
+ return this.axios
42
+ .get(`/${commentId}`, {
43
+ params: {
44
+ fields: conjunctFields,
45
+ access_token: this.accessToken,
46
+ },
47
+ })
48
+ .then((res) => res.data, handleError);
49
+ }
50
+ getComments(objectId, { limit, summary, filter, order, fields = ['id', 'message', 'created_time'], } = {}) {
51
+ const conjunctFields = Array.isArray(fields) ? fields.join(',') : fields;
52
+ return this.axios
53
+ .get(`/${objectId}/comments`, {
54
+ params: {
55
+ limit,
56
+ summary: summary ? 'true' : undefined,
57
+ filter,
58
+ order,
59
+ fields: conjunctFields,
60
+ access_token: this.accessToken,
61
+ },
62
+ })
63
+ .then((res) => res.data, handleError);
64
+ }
65
+ getLikes(objectId, { summary } = {}) {
66
+ return this.axios
67
+ .get(`/${objectId}/likes`, {
68
+ params: {
69
+ summary: summary ? 'true' : undefined,
70
+ access_token: this.accessToken,
71
+ },
72
+ })
73
+ .then((res) => res.data.likes, handleError);
74
+ }
75
+ getPageInsights(options) {
76
+ return this.axios
77
+ .get('/me/insights', {
78
+ params: {
79
+ access_token: this.accessToken,
80
+ period: options.period,
81
+ metric: options.metric.join(','),
82
+ date_preset: 'datePreset' in options ? options.datePreset : undefined,
83
+ since: 'since' in options ? options.since : undefined,
84
+ until: 'until' in options ? options.until : undefined,
85
+ },
86
+ })
87
+ .then((res) => res.data.data, handleError);
88
+ }
89
+ getPostInsights(postId, options) {
90
+ return this.axios
91
+ .get(`/${postId}/insights`, {
92
+ params: {
93
+ access_token: this.accessToken,
94
+ period: options.period,
95
+ metric: options.metric.join(','),
96
+ date_preset: 'datePreset' in options ? options.datePreset : undefined,
97
+ since: 'since' in options ? options.since : undefined,
98
+ until: 'until' in options ? options.until : undefined,
99
+ },
100
+ })
101
+ .then((res) => res.data.data, handleError);
102
+ }
103
+ }
104
+ exports.default = FacebookClient;
105
+ //# sourceMappingURL=FacebookClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookClient.js","sourceRoot":"","sources":["../src/FacebookClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import { BatchConfig } from 'facebook-batch';
4
+ import { Connector, FacebookBaseConnector, MessengerConnector, MessengerContext, MessengerEvent, RequestContext } from '@vraksha/bottender';
5
+ import FacebookClient from './FacebookClient';
6
+ import FacebookContext from './FacebookContext';
7
+ import FacebookEvent from './FacebookEvent';
8
+ import { FacebookWebhookRequestBody } from './FacebookTypes';
9
+ type Session = Record<string, any>;
10
+ export type FacebookConnectorOptions = {
11
+ appId: string;
12
+ appSecret: string;
13
+ accessToken?: string;
14
+ client?: FacebookClient;
15
+ mapPageToAccessToken?: (pageId: string) => Promise<string>;
16
+ verifyToken?: string;
17
+ batchConfig?: BatchConfig;
18
+ origin?: string;
19
+ skipAppSecretProof?: boolean;
20
+ skipProfile?: boolean;
21
+ };
22
+ export default class FacebookConnector extends FacebookBaseConnector<FacebookWebhookRequestBody, FacebookClient> implements Connector<FacebookWebhookRequestBody, FacebookClient> {
23
+ _mapPageToAccessToken: ((pageId: string) => Promise<string>) | null;
24
+ _messengerConnector: MessengerConnector;
25
+ constructor(options: FacebookConnectorOptions);
26
+ get platform(): 'facebook';
27
+ getUniqueSessionKey(event: FacebookEvent | MessengerEvent): string | null;
28
+ updateSession(session: Session, event: FacebookEvent | MessengerEvent): Promise<void>;
29
+ mapRequestToEvents(body: FacebookWebhookRequestBody): (FacebookEvent | MessengerEvent)[];
30
+ createContext(params: {
31
+ event: FacebookEvent | MessengerEvent;
32
+ session?: Session;
33
+ initialState?: Record<string, any>;
34
+ requestContext?: RequestContext;
35
+ emitter?: EventEmitter;
36
+ }): Promise<FacebookContext | MessengerContext>;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=FacebookConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookConnector.d.ts","sourceRoot":"","sources":["../src/FacebookConnector.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EAEd,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAgB,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAG3E,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEnC,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,iBACnB,SAAQ,qBAAqB,CAAC,0BAA0B,EAAE,cAAc,CACxE,YAAW,SAAS,CAAC,0BAA0B,EAAE,cAAc,CAAC;IAEhE,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAQ;IAE3E,mBAAmB,EAAE,kBAAkB,CAAC;gBAErB,OAAO,EAAE,wBAAwB;IAoBpD,IAAI,QAAQ,IAAI,UAAU,CAEzB;IAED,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,IAAI;IAS5D,aAAa,CACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,aAAa,GAAG,cAAc,GACpC,OAAO,CAAC,IAAI,CAAC;IA8BT,kBAAkB,CACvB,IAAI,EAAE,0BAA0B,GAC/B,CAAC,aAAa,GAAG,cAAc,CAAC,EAAE;IAsCxB,aAAa,CAAC,MAAM,EAAE;QACjC,KAAK,EAAE,aAAa,GAAG,cAAc,CAAC;QACtC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnC,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,OAAO,CAAC,EAAE,YAAY,CAAC;KACxB,GAAG,OAAO,CAAC,eAAe,GAAG,gBAAgB,CAAC;CA4ChD"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const warning_1 = __importDefault(require("warning"));
16
+ const bottender_1 = require("@vraksha/bottender");
17
+ const FacebookClient_1 = __importDefault(require("./FacebookClient"));
18
+ const FacebookContext_1 = __importDefault(require("./FacebookContext"));
19
+ const FacebookEvent_1 = __importDefault(require("./FacebookEvent"));
20
+ class FacebookConnector extends bottender_1.FacebookBaseConnector {
21
+ constructor(options) {
22
+ super(Object.assign(Object.assign({}, options), { ClientClass: FacebookClient_1.default }));
23
+ this._mapPageToAccessToken = null;
24
+ const { mapPageToAccessToken } = options;
25
+ this._mapPageToAccessToken = mapPageToAccessToken !== null && mapPageToAccessToken !== void 0 ? mapPageToAccessToken : null;
26
+ this._messengerConnector = new bottender_1.MessengerConnector(Object.assign(Object.assign({}, options), { ClientClass: FacebookClient_1.default, mapPageToAccessToken }));
27
+ }
28
+ get platform() {
29
+ return 'facebook';
30
+ }
31
+ getUniqueSessionKey(event) {
32
+ if (event instanceof bottender_1.MessengerEvent) {
33
+ return this._messengerConnector.getUniqueSessionKey(event);
34
+ }
35
+ return null;
36
+ }
37
+ updateSession(session, event) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ if (!session.user) {
40
+ session.page = {
41
+ id: event.pageId,
42
+ _updatedAt: new Date().toISOString(),
43
+ };
44
+ session.user = {
45
+ _updatedAt: new Date().toISOString(),
46
+ id: this.getUniqueSessionKey(event),
47
+ };
48
+ }
49
+ Object.freeze(session.user);
50
+ Object.defineProperty(session, 'user', {
51
+ configurable: false,
52
+ enumerable: true,
53
+ writable: false,
54
+ value: session.user,
55
+ });
56
+ Object.freeze(session.page);
57
+ Object.defineProperty(session, 'page', {
58
+ configurable: false,
59
+ enumerable: true,
60
+ writable: false,
61
+ value: session.page,
62
+ });
63
+ });
64
+ }
65
+ mapRequestToEvents(body) {
66
+ if (body.object !== 'page') {
67
+ return [];
68
+ }
69
+ const bodyEntry = body.entry;
70
+ return bodyEntry
71
+ .map((entry) => {
72
+ const pageId = entry.id;
73
+ const timestamp = entry.time;
74
+ if ('messaging' in entry) {
75
+ return new bottender_1.MessengerEvent(entry.messaging[0], {
76
+ pageId,
77
+ isStandby: false,
78
+ });
79
+ }
80
+ if ('standby' in entry) {
81
+ return new bottender_1.MessengerEvent(entry.standby[0], {
82
+ pageId,
83
+ isStandby: true,
84
+ });
85
+ }
86
+ if ('changes' in entry) {
87
+ return new FacebookEvent_1.default(entry.changes[0], { pageId, timestamp });
88
+ }
89
+ return null;
90
+ })
91
+ .filter((event) => event !== null);
92
+ }
93
+ createContext(params) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ let customAccessToken;
96
+ if (this._mapPageToAccessToken) {
97
+ const { pageId } = params.event;
98
+ if (!pageId) {
99
+ (0, warning_1.default)(false, 'Could not find pageId from request body.');
100
+ }
101
+ else {
102
+ customAccessToken = yield this._mapPageToAccessToken(pageId);
103
+ }
104
+ }
105
+ let client;
106
+ if (customAccessToken) {
107
+ client = new FacebookClient_1.default({
108
+ accessToken: customAccessToken,
109
+ appSecret: this._appSecret,
110
+ origin: this._origin,
111
+ skipAppSecretProof: this._skipAppSecretProof,
112
+ });
113
+ }
114
+ else {
115
+ client = this._client;
116
+ }
117
+ if (params.event instanceof FacebookEvent_1.default) {
118
+ return new FacebookContext_1.default(Object.assign(Object.assign({}, params), { event: params.event, client,
119
+ customAccessToken, batchQueue: this._batchQueue, appId: this._appId }));
120
+ }
121
+ return new bottender_1.MessengerContext(Object.assign(Object.assign({}, params), { event: params.event, client,
122
+ customAccessToken, batchQueue: this._batchQueue, appId: this._appId }));
123
+ });
124
+ }
125
+ }
126
+ exports.default = FacebookConnector;
127
+ //# sourceMappingURL=FacebookConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookConnector.js","sourceRoot":"","sources":["../src/FacebookConnector.ts"],"names":[],"mappings":"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"}