@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.
@@ -0,0 +1,39 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import { Context, MessengerTypes, RequestContext } from '@vraksha/bottender';
4
+ import { FacebookBatchQueue } from 'facebook-batch';
5
+ import FacebookClient from './FacebookClient';
6
+ import FacebookEvent from './FacebookEvent';
7
+ import * as Types from './FacebookTypes';
8
+ type Session = Record<string, any>;
9
+ export type FacebookContextOptions = {
10
+ appId?: string;
11
+ client: FacebookClient;
12
+ event: FacebookEvent;
13
+ session?: Session;
14
+ initialState?: Record<string, any>;
15
+ requestContext?: RequestContext;
16
+ customAccessToken?: string;
17
+ batchQueue?: FacebookBatchQueue | null;
18
+ emitter?: EventEmitter;
19
+ };
20
+ export default class FacebookContext extends Context<FacebookClient, FacebookEvent> {
21
+ _appId: string | undefined;
22
+ _customAccessToken: string | undefined;
23
+ _batchQueue: FacebookBatchQueue | undefined;
24
+ constructor({ appId, client, event, session, initialState, requestContext, customAccessToken, batchQueue, emitter, }: FacebookContextOptions);
25
+ get platform(): 'facebook';
26
+ sendText(text: string): Promise<MessengerTypes.SendMessageSuccessResponse | undefined>;
27
+ sendMessage(message: MessengerTypes.Message): Promise<MessengerTypes.SendMessageSuccessResponse | undefined>;
28
+ sendComment(comment: string | Types.InputComment): Promise<{
29
+ id: string;
30
+ } | undefined>;
31
+ sendLike(): Promise<{
32
+ success: boolean;
33
+ }>;
34
+ getComment<T extends Types.CommentField = 'id' | 'message' | 'created_time'>({ fields, }?: Types.GetCommentOptions<T>): Promise<Pick<Types.Comment, Types.CamelCaseUnion<Types.CommentKeyMap, (typeof fields)[number]>> | null>;
35
+ getLikes(options: Types.GetLikesOptions): Promise<Types.Likes>;
36
+ canReplyPrivately(): Promise<boolean>;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=FacebookContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookContext.d.ts","sourceRoot":"","sources":["../src/FacebookContext.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EACL,OAAO,EAEP,cAAc,EACd,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAGzC,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO,CAClD,cAAc,EACd,aAAa,CACd;IACC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC,WAAW,EAAE,kBAAkB,GAAG,SAAS,CAAC;gBAEzB,EACjB,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,OAAO,GACR,EAAE,sBAAsB;IAWzB,IAAI,QAAQ,IAAI,UAAU,CAEzB;IASY,QAAQ,CACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,0BAA0B,GAAG,SAAS,CAAC;IA4CpD,WAAW,CACtB,OAAO,EAAE,cAAc,CAAC,OAAO,GAC9B,OAAO,CAAC,cAAc,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAgDpD,WAAW,CACtB,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,YAAY,GACnC,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAoCzB,QAAQ,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IA6BzC,UAAU,CACrB,CAAC,SAAS,KAAK,CAAC,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,EAChE,EACA,MAAyD,GAC1D,GAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAM,GAAG,OAAO,CAAC,IAAI,CAC/C,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CACnE,GAAG,IAAI,CAAC;IAgCF,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IAexD,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;CAOnD"}
@@ -0,0 +1,170 @@
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 FacebookBatch_1 = __importDefault(require("./FacebookBatch"));
18
+ class FacebookContext extends bottender_1.Context {
19
+ constructor({ appId, client, event, session, initialState, requestContext, customAccessToken, batchQueue, emitter, }) {
20
+ super({ client, event, session, initialState, requestContext, emitter });
21
+ this._customAccessToken = customAccessToken;
22
+ this._batchQueue = batchQueue || undefined;
23
+ this._appId = appId;
24
+ }
25
+ get platform() {
26
+ return 'facebook';
27
+ }
28
+ sendText(text) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ if (!['comment', 'post'].includes(this._event.rawEvent.value.item)) {
31
+ (0, warning_1.default)(false, 'sendText: can only work with comment and post events.');
32
+ return;
33
+ }
34
+ const value = this._event.rawEvent.value;
35
+ if (value.verb === 'remove') {
36
+ (0, warning_1.default)(false, "sendText: can't work with remove verb");
37
+ return;
38
+ }
39
+ let recipient;
40
+ if (value.item === 'comment') {
41
+ recipient = {
42
+ commentId: value.commentId,
43
+ };
44
+ }
45
+ else {
46
+ recipient = {
47
+ postId: value.postId,
48
+ };
49
+ }
50
+ if (this._batchQueue) {
51
+ return this._batchQueue.push(bottender_1.MessengerBatch.sendText(recipient, text, {
52
+ accessToken: this._customAccessToken,
53
+ }));
54
+ }
55
+ return this._client.sendText(recipient, text);
56
+ });
57
+ }
58
+ sendMessage(message) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ if (!['comment', 'post'].includes(this._event.rawEvent.value.item)) {
61
+ (0, warning_1.default)(false, 'sendMessage: can only work with comment and post events.');
62
+ return;
63
+ }
64
+ const value = this._event.rawEvent.value;
65
+ if (value.verb === 'remove') {
66
+ (0, warning_1.default)(false, "sendMessage: can't work with remove verb");
67
+ }
68
+ let recipient;
69
+ if (value.item === 'comment') {
70
+ recipient = {
71
+ commentId: value.commentId,
72
+ };
73
+ }
74
+ else {
75
+ recipient = {
76
+ postId: value.postId,
77
+ };
78
+ }
79
+ if (this._batchQueue) {
80
+ return this._batchQueue.push(bottender_1.MessengerBatch.sendMessage(recipient, message, {
81
+ accessToken: this._customAccessToken,
82
+ }));
83
+ }
84
+ return this._client.sendMessage(recipient, message);
85
+ });
86
+ }
87
+ sendComment(comment) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ let objectId;
90
+ if (this._event.isComment) {
91
+ objectId = this._event.isFirstLayerComment
92
+ ? this._event.rawEvent.value.commentId
93
+ : this._event.rawEvent.value.parentId;
94
+ }
95
+ else if (this._event.isPost) {
96
+ objectId = this._event.rawEvent.value.postId;
97
+ }
98
+ if (!objectId) {
99
+ (0, warning_1.default)(false, 'sendComment: only support comment and post events now.');
100
+ return;
101
+ }
102
+ if (this._event.isSentByPage) {
103
+ (0, warning_1.default)(false, "sendComment: can't send to page itself.");
104
+ return;
105
+ }
106
+ if (this._batchQueue) {
107
+ return this._batchQueue.push(FacebookBatch_1.default.sendComment(objectId, comment, {
108
+ accessToken: this._customAccessToken,
109
+ }));
110
+ }
111
+ return this._client.sendComment(objectId, comment);
112
+ });
113
+ }
114
+ sendLike() {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ let objectId;
117
+ if (this._event.isComment) {
118
+ objectId = this._event.rawEvent.value.commentId;
119
+ }
120
+ else if (this._event.isPost) {
121
+ objectId = this._event.rawEvent.value.postId;
122
+ }
123
+ if (!objectId) {
124
+ (0, warning_1.default)(false, 'sendLike: only support comment and post events now.');
125
+ return { success: false };
126
+ }
127
+ if (this._batchQueue) {
128
+ return this._batchQueue.push(FacebookBatch_1.default.sendLike(objectId, {
129
+ accessToken: this._customAccessToken,
130
+ }));
131
+ }
132
+ return this._client.sendLike(objectId);
133
+ });
134
+ }
135
+ getComment({ fields = ['id', 'message', 'created_time'], } = {}) {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ const commentId = this._event.rawEvent.value
138
+ .commentId;
139
+ if (!commentId) {
140
+ (0, warning_1.default)(false, 'Could not getComment if there is no comment.');
141
+ return null;
142
+ }
143
+ if (this._batchQueue) {
144
+ return this._batchQueue.push(FacebookBatch_1.default.getComment(commentId, {
145
+ accessToken: this._customAccessToken,
146
+ fields,
147
+ }));
148
+ }
149
+ return this._client.getComment(commentId, { fields });
150
+ });
151
+ }
152
+ getLikes(options) {
153
+ const objectId = this._event.rawEvent.value
154
+ .commentId;
155
+ if (this._batchQueue) {
156
+ return this._batchQueue.push(FacebookBatch_1.default.getLikes(objectId, Object.assign({ accessToken: this._customAccessToken }, options)));
157
+ }
158
+ return this._client.getLikes(objectId, options);
159
+ }
160
+ canReplyPrivately() {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ const comment = yield this.getComment({ fields: ['can_reply_privately'] });
163
+ if (!comment)
164
+ return false;
165
+ return Boolean(comment.canReplyPrivately);
166
+ });
167
+ }
168
+ }
169
+ exports.default = FacebookContext;
170
+ //# sourceMappingURL=FacebookContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookContext.js","sourceRoot":"","sources":["../src/FacebookContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { FacebookRawEvent, FeedComment, FeedPost, FeedReaction, FeedStatus } from './FacebookTypes';
2
+ export default class FacebookEvent {
3
+ _rawEvent: FacebookRawEvent;
4
+ _pageId: string | undefined;
5
+ _timestamp: number | undefined;
6
+ constructor(rawEvent: FacebookRawEvent, options?: {
7
+ pageId?: string;
8
+ timestamp?: number;
9
+ });
10
+ get pageId(): string | undefined;
11
+ get rawEvent(): FacebookRawEvent;
12
+ get timestamp(): number | undefined;
13
+ get isMessage(): boolean;
14
+ get isText(): boolean;
15
+ get text(): string | null;
16
+ get isFeed(): boolean;
17
+ get isStatus(): boolean;
18
+ get isStatusAdd(): boolean;
19
+ get isStatusEdited(): boolean;
20
+ get status(): FeedStatus | null;
21
+ get isPost(): boolean;
22
+ get isPostRemove(): boolean;
23
+ get post(): FeedPost | null;
24
+ get isComment(): boolean;
25
+ get isCommentAdd(): boolean;
26
+ get isCommentEdited(): boolean;
27
+ get isCommentRemove(): boolean;
28
+ get isFirstLayerComment(): boolean;
29
+ get comment(): FeedComment | null;
30
+ get isReaction(): boolean;
31
+ get isReactionAdd(): boolean;
32
+ get isReactionEdit(): boolean;
33
+ get isReactionRemove(): boolean;
34
+ get isPostReaction(): boolean;
35
+ get reaction(): FeedReaction | null;
36
+ get isSentByPage(): boolean;
37
+ get isPageLike(): boolean;
38
+ }
39
+ //# sourceMappingURL=FacebookEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookEvent.d.ts","sourceRoot":"","sources":["../src/FacebookEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,SAAS,EAAE,gBAAgB,CAAC;IAE5B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAG7B,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAOvD,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAMD,IAAI,QAAQ,IAAI,gBAAgB,CAE/B;IAMD,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAIlC;IAMD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAMD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAMD,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,QAAQ,IAAI,OAAO,CAMtB;IAED,IAAI,WAAW,IAAI,OAAO,CAMzB;IAED,IAAI,cAAc,IAAI,OAAO,CAM5B;IAED,IAAI,MAAM,IAAI,UAAU,GAAG,IAAI,CAS9B;IAED,IAAI,MAAM,IAAI,OAAO,CAMpB;IAED,IAAI,YAAY,IAAI,OAAO,CAM1B;IAED,IAAI,IAAI,IAAI,QAAQ,GAAG,IAAI,CAS1B;IAED,IAAI,SAAS,IAAI,OAAO,CAMvB;IAED,IAAI,YAAY,IAAI,OAAO,CAM1B;IAED,IAAI,eAAe,IAAI,OAAO,CAM7B;IAED,IAAI,eAAe,IAAI,OAAO,CAM7B;IAED,IAAI,mBAAmB,IAAI,OAAO,CAMjC;IAED,IAAI,OAAO,IAAI,WAAW,GAAG,IAAI,CAShC;IAED,IAAI,UAAU,IAAI,OAAO,CAMxB;IAED,IAAI,aAAa,IAAI,OAAO,CAM3B;IAED,IAAI,cAAc,IAAI,OAAO,CAM5B;IAED,IAAI,gBAAgB,IAAI,OAAO,CAM9B;IAED,IAAI,cAAc,IAAI,OAAO,CAI5B;IAED,IAAI,QAAQ,IAAI,YAAY,GAAG,IAAI,CASlC;IAED,IAAI,YAAY,IAAI,OAAO,CAc1B;IAID,IAAI,UAAU,IAAI,OAAO,CAcxB;CACF"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class FacebookEvent {
4
+ constructor(rawEvent, options = {}) {
5
+ this._rawEvent = rawEvent;
6
+ this._pageId = options.pageId;
7
+ this._timestamp = options.timestamp;
8
+ }
9
+ get pageId() {
10
+ return this._pageId;
11
+ }
12
+ get rawEvent() {
13
+ return this._rawEvent;
14
+ }
15
+ get timestamp() {
16
+ return 'createdTime' in this.rawEvent.value
17
+ ? this.rawEvent.value.createdTime
18
+ : this._timestamp;
19
+ }
20
+ get isMessage() {
21
+ return false;
22
+ }
23
+ get isText() {
24
+ return false;
25
+ }
26
+ get text() {
27
+ return null;
28
+ }
29
+ get isFeed() {
30
+ return 'field' in this.rawEvent && this.rawEvent.field === 'feed';
31
+ }
32
+ get isStatus() {
33
+ return Boolean(this.isFeed &&
34
+ 'value' in this.rawEvent &&
35
+ this.rawEvent.value.item === 'status');
36
+ }
37
+ get isStatusAdd() {
38
+ return Boolean(this.isStatus &&
39
+ 'value' in this.rawEvent &&
40
+ this.rawEvent.value.verb === 'add');
41
+ }
42
+ get isStatusEdited() {
43
+ return Boolean(this.isStatus &&
44
+ 'value' in this.rawEvent &&
45
+ this.rawEvent.value.verb === 'edited');
46
+ }
47
+ get status() {
48
+ if (this.isFeed &&
49
+ 'value' in this.rawEvent &&
50
+ this.rawEvent.value.item === 'status') {
51
+ return this.rawEvent.value;
52
+ }
53
+ return null;
54
+ }
55
+ get isPost() {
56
+ return Boolean(this.isFeed &&
57
+ 'value' in this.rawEvent &&
58
+ this.rawEvent.value.item === 'post');
59
+ }
60
+ get isPostRemove() {
61
+ return Boolean(this.isPost &&
62
+ 'value' in this.rawEvent &&
63
+ this.rawEvent.value.verb === 'remove');
64
+ }
65
+ get post() {
66
+ if (this.isFeed &&
67
+ 'value' in this.rawEvent &&
68
+ this.rawEvent.value.item === 'post') {
69
+ return this.rawEvent.value;
70
+ }
71
+ return null;
72
+ }
73
+ get isComment() {
74
+ return Boolean(this.isFeed &&
75
+ 'value' in this.rawEvent &&
76
+ this.rawEvent.value.item === 'comment');
77
+ }
78
+ get isCommentAdd() {
79
+ return Boolean(this.isComment &&
80
+ 'value' in this.rawEvent &&
81
+ this.rawEvent.value.verb === 'add');
82
+ }
83
+ get isCommentEdited() {
84
+ return Boolean(this.isComment &&
85
+ 'value' in this.rawEvent &&
86
+ this.rawEvent.value.verb === 'edited');
87
+ }
88
+ get isCommentRemove() {
89
+ return Boolean(this.isComment &&
90
+ 'value' in this.rawEvent &&
91
+ this.rawEvent.value.verb === 'remove');
92
+ }
93
+ get isFirstLayerComment() {
94
+ if (!this.isComment)
95
+ return false;
96
+ const comment = this.comment;
97
+ return comment.parentId === comment.postId;
98
+ }
99
+ get comment() {
100
+ if (this.isFeed &&
101
+ 'value' in this.rawEvent &&
102
+ this.rawEvent.value.item === 'comment') {
103
+ return this.rawEvent.value;
104
+ }
105
+ return null;
106
+ }
107
+ get isReaction() {
108
+ return Boolean(this.isFeed &&
109
+ 'value' in this.rawEvent &&
110
+ this.rawEvent.value.item === 'reaction');
111
+ }
112
+ get isReactionAdd() {
113
+ return Boolean(this.isReaction &&
114
+ 'value' in this.rawEvent &&
115
+ this.rawEvent.value.verb === 'add');
116
+ }
117
+ get isReactionEdit() {
118
+ return Boolean(this.isReaction &&
119
+ 'value' in this.rawEvent &&
120
+ this.rawEvent.value.verb === 'edit');
121
+ }
122
+ get isReactionRemove() {
123
+ return Boolean(this.isReaction &&
124
+ 'value' in this.rawEvent &&
125
+ this.rawEvent.value.verb === 'remove');
126
+ }
127
+ get isPostReaction() {
128
+ var _a;
129
+ return Boolean(this.isReaction && 'value' in this.rawEvent && !((_a = this.reaction) === null || _a === void 0 ? void 0 : _a.commentId));
130
+ }
131
+ get reaction() {
132
+ if (this.isFeed &&
133
+ 'value' in this.rawEvent &&
134
+ this.rawEvent.value.item === 'reaction') {
135
+ return this.rawEvent.value;
136
+ }
137
+ return null;
138
+ }
139
+ get isSentByPage() {
140
+ if (!this.isFeed) {
141
+ return false;
142
+ }
143
+ if ('value' in this.rawEvent &&
144
+ 'from' in this.rawEvent.value &&
145
+ this.rawEvent.value.from.id === this.pageId) {
146
+ return true;
147
+ }
148
+ return false;
149
+ }
150
+ get isPageLike() {
151
+ if (!this.isFeed) {
152
+ return false;
153
+ }
154
+ if ('value' in this.rawEvent &&
155
+ this.rawEvent.value.item === 'like' &&
156
+ !('from' in this.rawEvent.value)) {
157
+ return true;
158
+ }
159
+ return false;
160
+ }
161
+ }
162
+ exports.default = FacebookEvent;
163
+ //# sourceMappingURL=FacebookEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacebookEvent.js","sourceRoot":"","sources":["../src/FacebookEvent.ts"],"names":[],"mappings":"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"}