@nlabs/reaktor 0.4.6 → 0.5.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/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './actions';
2
+ export * from './lambdas/authorizer';
2
3
  export * from './utils';
3
4
  export * from './types';
package/lib/index.js CHANGED
@@ -18,6 +18,7 @@ var __toModule = (module2) => {
18
18
  };
19
19
  __markAsModule(exports);
20
20
  __reExport(exports, __toModule(require("./actions")));
21
+ __reExport(exports, __toModule(require("./lambdas/authorizer")));
21
22
  __reExport(exports, __toModule(require("./utils")));
22
23
  __reExport(exports, __toModule(require("./types")));
23
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUlBLG9CQUFjO0FBQ2Qsb0JBQWM7QUFDZCxvQkFBYzsiLAogICJuYW1lcyI6IFtdCn0K
24
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbGFtYmRhcy9hdXRob3JpemVyJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUlBLG9CQUFjO0FBQ2Qsb0JBQWM7QUFDZCxvQkFBYztBQUNkLG9CQUFjOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,6 @@
1
+ import { ApiContext } from '../../types/auth';
2
+ export declare const addConnection: (connectionId: string, token: string) => Promise<any>;
3
+ export declare const getConnectionByUserId: (userId: string) => Promise<any>;
4
+ export declare const getConnectionById: (connectionId: string) => Promise<any>;
5
+ export declare const getConnectionByConvo: (context: ApiContext, convoId: string) => Promise<any>;
6
+ export declare const removeConnection: (connectionId: string) => Promise<any>;
@@ -0,0 +1,149 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
25
+ var __export = (target, all) => {
26
+ __markAsModule(target);
27
+ for (var name in all)
28
+ __defProp(target, name, { get: all[name], enumerable: true });
29
+ };
30
+ var __reExport = (target, module2, desc) => {
31
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
32
+ for (let key of __getOwnPropNames(module2))
33
+ if (!__hasOwnProp.call(target, key) && key !== "default")
34
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
35
+ }
36
+ return target;
37
+ };
38
+ var __toModule = (module2) => {
39
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
40
+ };
41
+ __export(exports, {
42
+ addConnection: () => addConnection,
43
+ getConnectionByConvo: () => getConnectionByConvo,
44
+ getConnectionById: () => getConnectionById,
45
+ getConnectionByUserId: () => getConnectionByUserId,
46
+ removeConnection: () => removeConnection
47
+ });
48
+ var import_utils = __toModule(require("@nlabs/utils"));
49
+ var import_arangojs = __toModule(require("arangojs"));
50
+ var import_isEmpty = __toModule(require("lodash/isEmpty"));
51
+ var import_arangodb = __toModule(require("../../utils/arangodb"));
52
+ var import_session = __toModule(require("../../utils/session"));
53
+ const { ARANGODB_DATABASE: database } = process.env;
54
+ const addConnection = async (connectionId, token) => {
55
+ const formatConnId = (0, import_utils.parseString)(connectionId, 32);
56
+ const { userId } = (0, import_session.getSession)(token);
57
+ if ((0, import_isEmpty.default)(userId)) {
58
+ return {};
59
+ }
60
+ try {
61
+ const db = (0, import_arangodb.useDb)(database);
62
+ const update = {
63
+ connectionId: formatConnId,
64
+ modified: Date.now()
65
+ };
66
+ const insert = __spreadProps(__spreadValues({}, update), {
67
+ _key: (0, import_utils.createHash)(`connection-${formatConnId}`),
68
+ userId
69
+ });
70
+ const aqlQry = import_arangojs.aql`UPSERT {userId: ${insert.userId}}
71
+ INSERT ${insert}
72
+ UPDATE ${update}
73
+ IN connections RETURN NEW`;
74
+ return db.query(aqlQry).then((cursor) => cursor.next()).catch((error) => {
75
+ throw error;
76
+ });
77
+ } catch (error) {
78
+ console.log("parseContext::error", error);
79
+ throw new Error("Unauthorized Context");
80
+ }
81
+ };
82
+ const getConnectionByUserId = (userId) => {
83
+ const formatUserId = (0, import_utils.parseId)(userId);
84
+ const db = (0, import_arangodb.useDb)(database);
85
+ const aqlQry = import_arangojs.aql`FOR c IN connections
86
+ FILTER c.userId == ${formatUserId}
87
+ LIMIT 1
88
+ RETURN c`;
89
+ return db.query(aqlQry).then((cursor) => cursor.next()).catch((error) => {
90
+ throw error;
91
+ });
92
+ };
93
+ const getConnectionById = (connectionId) => {
94
+ const formatConnId = (0, import_utils.parseString)(connectionId, 32);
95
+ const db = (0, import_arangodb.useDb)(database);
96
+ const aqlQry = import_arangojs.aql`FOR c IN connections
97
+ FILTER c.connectionId == ${formatConnId}
98
+ LET user = FIRST(
99
+ FOR u IN users
100
+ FILTER u.userId == c.userId
101
+ LIMIT 1
102
+ RETURN u;
103
+ )
104
+ LIMIT 1
105
+ RETURN MERGE(c, {user:user}`;
106
+ return db.query(aqlQry).then((cursor) => cursor.next()).catch((error) => {
107
+ throw error;
108
+ });
109
+ };
110
+ const getConnectionByConvo = (context, convoId) => {
111
+ const { session: { userId: sessionId } } = context;
112
+ const sessionDocId = `users/${(0, import_utils.parseId)(sessionId)}`;
113
+ const convoDocId = `conversations/${(0, import_utils.parseId)(convoId)}`;
114
+ const db = (0, import_arangodb.useDb)(database);
115
+ const aqlQry = import_arangojs.aql`FOR c, e IN 1..1 OUTBOUND ${sessionDocId} hasConversations
116
+ FILTER c._id == ${convoDocId}
117
+ LIMIT 1
118
+ LET u = (
119
+ FOR inUser, inEdge IN 1..1 INBOUND ${convoDocId} hasConversations
120
+ FOR n IN connections
121
+ FILTER inUser.userId == n.userId
122
+ RETURN n.connectionId
123
+ )
124
+ RETURN u`;
125
+ return db.query(aqlQry).then((cursor) => cursor.all()).catch((error) => {
126
+ throw error;
127
+ });
128
+ };
129
+ const removeConnection = (connectionId) => {
130
+ const formatConnId = (0, import_utils.parseString)(connectionId, 32);
131
+ const db = (0, import_arangodb.useDb)(database);
132
+ const aqlQry = import_arangojs.aql`FOR c IN connections
133
+ FILTER c.connectionId == ${formatConnId}
134
+ LIMIT 1
135
+ REMOVE c IN connections
136
+ RETURN OLD`;
137
+ return db.query(aqlQry).then((cursor) => cursor.next()).catch((error) => {
138
+ throw error;
139
+ });
140
+ };
141
+ // Annotate the CommonJS export names for ESM import in node:
142
+ 0 && (module.exports = {
143
+ addConnection,
144
+ getConnectionByConvo,
145
+ getConnectionById,
146
+ getConnectionByUserId,
147
+ removeConnection
148
+ });
149
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvYWN0aW9ucy93ZWJzb2NrZXRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsLCBEYXRhYmFzZX0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5cbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi8uLi91dGlscy9hcmFuZ29kYic7XG5pbXBvcnQge2dldFNlc3Npb259IGZyb20gJy4uLy4uL3V0aWxzL3Nlc3Npb24nO1xuXG5jb25zdCB7QVJBTkdPREJfREFUQUJBU0U6IGRhdGFiYXNlfSA9IHByb2Nlc3MuZW52O1xuXG5leHBvcnQgY29uc3QgYWRkQ29ubmVjdGlvbiA9IGFzeW5jIChjb25uZWN0aW9uSWQ6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIC8vIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IGZvcm1hdENvbm5JZDogc3RyaW5nID0gcGFyc2VTdHJpbmcoY29ubmVjdGlvbklkLCAzMik7XG5cbiAgLy8gVmVyaWZpZXMgdG9rZW5cbiAgY29uc3Qge3VzZXJJZH0gPSBnZXRTZXNzaW9uKHRva2VuKTtcblxuICBpZihpc0VtcHR5KHVzZXJJZCkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGRiOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlKTtcbiAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICBjb25uZWN0aW9uSWQ6IGZvcm1hdENvbm5JZCxcbiAgICAgIG1vZGlmaWVkOiBEYXRlLm5vdygpXG4gICAgfTtcbiAgICBjb25zdCBpbnNlcnQgPSB7XG4gICAgICAuLi51cGRhdGUsXG4gICAgICBfa2V5OiBjcmVhdGVIYXNoKGBjb25uZWN0aW9uLSR7Zm9ybWF0Q29ubklkfWApLFxuICAgICAgdXNlcklkXG4gICAgfTtcbiAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7dXNlcklkOiAke2luc2VydC51c2VySWR9fVxuICAgICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgICAgVVBEQVRFICR7dXBkYXRlfVxuICAgICAgSU4gY29ubmVjdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgICByZXR1cm4gZGIucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZygncGFyc2VDb250ZXh0OjplcnJvcicsIGVycm9yKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYXV0aG9yaXplZCBDb250ZXh0Jyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uQnlVc2VySWQgPSAodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBmb3JtYXRVc2VySWQ6IHN0cmluZyA9IHBhcnNlSWQodXNlcklkKTtcbiAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2UpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIGMgSU4gY29ubmVjdGlvbnNcbiAgICBGSUxURVIgYy51c2VySWQgPT0gJHtmb3JtYXRVc2VySWR9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBjYDtcblxuICByZXR1cm4gZGIucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbm5lY3Rpb25CeUlkID0gKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3QgZm9ybWF0Q29ubklkOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhjb25uZWN0aW9uSWQsIDMyKTtcbiAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2UpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIGMgSU4gY29ubmVjdGlvbnNcbiAgICBGSUxURVIgYy5jb25uZWN0aW9uSWQgPT0gJHtmb3JtYXRDb25uSWR9XG4gICAgTEVUIHVzZXIgPSBGSVJTVChcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgdS51c2VySWQgPT0gYy51c2VySWRcbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiB1O1xuICAgIClcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIE1FUkdFKGMsIHt1c2VyOnVzZXJ9YDtcblxuICByZXR1cm4gZGIucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbm5lY3Rpb25CeUNvbnZvID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IHtzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7cGFyc2VJZChzZXNzaW9uSWQpfWA7XG4gIGNvbnN0IGNvbnZvRG9jSWQ6IHN0cmluZyA9IGBjb252ZXJzYXRpb25zLyR7cGFyc2VJZChjb252b0lkKX1gO1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7c2Vzc2lvbkRvY0lkfSBoYXNDb252ZXJzYXRpb25zXG4gIEZJTFRFUiBjLl9pZCA9PSAke2NvbnZvRG9jSWR9XG4gIExJTUlUIDFcbiAgTEVUIHUgPSAoXG4gICAgRk9SIGluVXNlciwgaW5FZGdlIElOIDEuLjEgSU5CT1VORCAke2NvbnZvRG9jSWR9IGhhc0NvbnZlcnNhdGlvbnNcbiAgICBGT1IgbiBJTiBjb25uZWN0aW9uc1xuICAgIEZJTFRFUiBpblVzZXIudXNlcklkID09IG4udXNlcklkXG4gICAgUkVUVVJOIG4uY29ubmVjdGlvbklkXG4gIClcbiAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVDb25uZWN0aW9uID0gKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgLy8gY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlJztcbiAgY29uc3QgZm9ybWF0Q29ubklkOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhjb25uZWN0aW9uSWQsIDMyKTtcbiAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2UpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIGMgSU4gY29ubmVjdGlvbnNcbiAgICAgIEZJTFRFUiBjLmNvbm5lY3Rpb25JZCA9PSAke2Zvcm1hdENvbm5JZH1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFTU9WRSBjIElOIGNvbm5lY3Rpb25zXG4gICAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGIucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSxtQkFBK0M7QUFDL0Msc0JBQTRCO0FBRzVCLHFCQUFvQjtBQUdwQixzQkFBb0I7QUFDcEIscUJBQXlCO0FBRXpCLE1BQU0sRUFBQyxtQkFBbUIsYUFBWSxRQUFRO0FBRXZDLE1BQU0sZ0JBQWdCLE9BQU8sY0FBc0IsVUFBZ0M7QUFFeEYsUUFBTSxlQUF1Qiw4QkFBWSxjQUFjO0FBR3ZELFFBQU0sRUFBQyxXQUFVLCtCQUFXO0FBRTVCLE1BQUcsNEJBQVEsU0FBUztBQUNsQixXQUFPO0FBQUE7QUFHVCxNQUFJO0FBQ0YsVUFBTSxLQUFlLDJCQUFNO0FBQzNCLFVBQU0sU0FBUztBQUFBLE1BQ2IsY0FBYztBQUFBLE1BQ2QsVUFBVSxLQUFLO0FBQUE7QUFFakIsVUFBTSxTQUFTLGlDQUNWLFNBRFU7QUFBQSxNQUViLE1BQU0sNkJBQVcsY0FBYztBQUFBLE1BQy9CO0FBQUE7QUFFRixVQUFNLFNBQW1CLHNDQUFzQixPQUFPO0FBQUEsZUFDM0M7QUFBQSxlQUNBO0FBQUE7QUFHWCxXQUFPLEdBQUcsTUFBTSxRQUNiLEtBQUssQ0FBQyxXQUFXLE9BQU8sUUFDeEIsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFlBQU07QUFBQTtBQUFBLFdBRUosT0FBTjtBQUNBLFlBQVEsSUFBSSx1QkFBdUI7QUFDbkMsVUFBTSxJQUFJLE1BQU07QUFBQTtBQUFBO0FBSWIsTUFBTSx3QkFBd0IsQ0FBQyxXQUFpQztBQUNyRSxRQUFNLGVBQXVCLDBCQUFRO0FBQ3JDLFFBQU0sS0FBZSwyQkFBTTtBQUMzQixRQUFNLFNBQVM7QUFBQSx5QkFDUTtBQUFBO0FBQUE7QUFJdkIsU0FBTyxHQUFHLE1BQU0sUUFDYixLQUFLLENBQUMsV0FBVyxPQUFPLFFBQ3hCLE1BQU0sQ0FBQyxVQUFpQjtBQUN2QixVQUFNO0FBQUE7QUFBQTtBQUlMLE1BQU0sb0JBQW9CLENBQUMsaUJBQXVDO0FBQ3ZFLFFBQU0sZUFBdUIsOEJBQVksY0FBYztBQUN2RCxRQUFNLEtBQWUsMkJBQU07QUFDM0IsUUFBTSxTQUFTO0FBQUEsK0JBQ2M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVTdCLFNBQU8sR0FBRyxNQUFNLFFBQ2IsS0FBSyxDQUFDLFdBQVcsT0FBTyxRQUN4QixNQUFNLENBQUMsVUFBaUI7QUFDdkIsVUFBTTtBQUFBO0FBQUE7QUFJTCxNQUFNLHVCQUF1QixDQUFDLFNBQXFCLFlBQWtDO0FBQzFGLFFBQU0sRUFBQyxTQUFTLEVBQUMsUUFBUSxnQkFBYztBQUN2QyxRQUFNLGVBQXVCLFNBQVMsMEJBQVE7QUFDOUMsUUFBTSxhQUFxQixpQkFBaUIsMEJBQVE7QUFDcEQsUUFBTSxLQUFlLDJCQUFNO0FBQzNCLFFBQU0sU0FBUyxnREFBZ0M7QUFBQSxvQkFDN0I7QUFBQTtBQUFBO0FBQUEseUNBR3FCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU92QyxTQUFPLEdBQUcsTUFBTSxRQUNiLEtBQUssQ0FBQyxXQUFXLE9BQU8sT0FDeEIsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFVBQU07QUFBQTtBQUFBO0FBSUwsTUFBTSxtQkFBbUIsQ0FBQyxpQkFBdUM7QUFFdEUsUUFBTSxlQUF1Qiw4QkFBWSxjQUFjO0FBQ3ZELFFBQU0sS0FBZSwyQkFBTTtBQUMzQixRQUFNLFNBQVM7QUFBQSxpQ0FDZ0I7QUFBQTtBQUFBO0FBQUE7QUFLL0IsU0FBTyxHQUFHLE1BQU0sUUFDYixLQUFLLENBQUMsV0FBd0IsT0FBTyxRQUNyQyxNQUFNLENBQUMsVUFBaUI7QUFDdkIsVUFBTTtBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,20 @@
1
+ export declare const generatePolicyDocument: (effect: any, methodArn: any) => {
2
+ Version: string;
3
+ Statement: {
4
+ Action: string;
5
+ Effect: any;
6
+ Resource: any;
7
+ }[];
8
+ };
9
+ export declare const generateAuthResponse: (principalId: any, effect: any, methodArn: any) => {
10
+ principalId: any;
11
+ policyDocument: {
12
+ Version: string;
13
+ Statement: {
14
+ Action: string;
15
+ Effect: any;
16
+ Resource: any;
17
+ }[];
18
+ };
19
+ };
20
+ export declare const authorizer: (event: any, context: any, callback: any) => any;
@@ -0,0 +1,72 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ __markAsModule(target);
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __reExport = (target, module2, desc) => {
14
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
15
+ for (let key of __getOwnPropNames(module2))
16
+ if (!__hasOwnProp.call(target, key) && key !== "default")
17
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
18
+ }
19
+ return target;
20
+ };
21
+ var __toModule = (module2) => {
22
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
23
+ };
24
+ __export(exports, {
25
+ authorizer: () => authorizer,
26
+ generateAuthResponse: () => generateAuthResponse,
27
+ generatePolicyDocument: () => generatePolicyDocument
28
+ });
29
+ var import_isEmpty = __toModule(require("lodash/isEmpty"));
30
+ var import__ = __toModule(require(".."));
31
+ const generatePolicyDocument = (effect, methodArn) => {
32
+ if (!effect || !methodArn) {
33
+ return null;
34
+ }
35
+ const policyDocument = {
36
+ Version: "2012-10-17",
37
+ Statement: [
38
+ {
39
+ Action: "execute-api:Invoke",
40
+ Effect: effect,
41
+ Resource: methodArn
42
+ }
43
+ ]
44
+ };
45
+ return policyDocument;
46
+ };
47
+ const generateAuthResponse = (principalId, effect, methodArn) => {
48
+ const policyDocument = generatePolicyDocument(effect, methodArn);
49
+ return {
50
+ principalId,
51
+ policyDocument
52
+ };
53
+ };
54
+ const authorizer = (event, context, callback) => {
55
+ const { authorizationToken = "", methodArn } = event;
56
+ const token = authorizationToken.replace("Bearer", "").trim();
57
+ if ((0, import_isEmpty.default)(token) || (0, import_isEmpty.default)(methodArn)) {
58
+ return callback(null, "Unauthorized");
59
+ }
60
+ const session = (0, import__.getSession)(token);
61
+ if (session && session.id) {
62
+ return callback(null, generateAuthResponse(session.id, "Allow", methodArn));
63
+ }
64
+ return callback(null, generateAuthResponse(session.id, "Deny", methodArn));
65
+ };
66
+ // Annotate the CommonJS export names for ESM import in node:
67
+ 0 && (module.exports = {
68
+ authorizer,
69
+ generateAuthResponse,
70
+ generatePolicyDocument
71
+ });
72
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xhbWJkYXMvYXV0aG9yaXplci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcblxuaW1wb3J0IHtnZXRTZXNzaW9ufSBmcm9tICcuLic7XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVBvbGljeURvY3VtZW50ID0gKGVmZmVjdCwgbWV0aG9kQXJuKSA9PiB7XG4gIGlmKCFlZmZlY3QgfHwgIW1ldGhvZEFybikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcG9saWN5RG9jdW1lbnQgPSB7XG4gICAgVmVyc2lvbjogJzIwMTItMTAtMTcnLFxuICAgIFN0YXRlbWVudDogW1xuICAgICAge1xuICAgICAgICBBY3Rpb246ICdleGVjdXRlLWFwaTpJbnZva2UnLFxuICAgICAgICBFZmZlY3Q6IGVmZmVjdCxcbiAgICAgICAgUmVzb3VyY2U6IG1ldGhvZEFyblxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICByZXR1cm4gcG9saWN5RG9jdW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVBdXRoUmVzcG9uc2UgPSAocHJpbmNpcGFsSWQsIGVmZmVjdCwgbWV0aG9kQXJuKSA9PiB7XG4gIGNvbnN0IHBvbGljeURvY3VtZW50ID0gZ2VuZXJhdGVQb2xpY3lEb2N1bWVudChlZmZlY3QsIG1ldGhvZEFybik7XG5cbiAgcmV0dXJuIHtcbiAgICBwcmluY2lwYWxJZCxcbiAgICBwb2xpY3lEb2N1bWVudFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGF1dGhvcml6ZXIgPSAoZXZlbnQsIGNvbnRleHQsIGNhbGxiYWNrKSA9PiB7XG4gIGNvbnN0IHthdXRob3JpemF0aW9uVG9rZW4gPSAnJywgbWV0aG9kQXJufSA9IGV2ZW50O1xuICBjb25zdCB0b2tlbjogc3RyaW5nID0gYXV0aG9yaXphdGlvblRva2VuLnJlcGxhY2UoJ0JlYXJlcicsICcnKS50cmltKCk7XG5cbiAgaWYoaXNFbXB0eSh0b2tlbikgfHwgaXNFbXB0eShtZXRob2RBcm4pKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsICdVbmF1dGhvcml6ZWQnKTtcbiAgfVxuXG4gIC8vIFZlcmlmaWVzIHRva2VuXG4gIGNvbnN0IHNlc3Npb246IGFueSA9IGdldFNlc3Npb24odG9rZW4pO1xuXG4gIGlmKHNlc3Npb24gJiYgc2Vzc2lvbi5pZCkge1xuICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBnZW5lcmF0ZUF1dGhSZXNwb25zZShzZXNzaW9uLmlkLCAnQWxsb3cnLCBtZXRob2RBcm4pKTtcbiAgfVxuXG4gIHJldHVybiBjYWxsYmFjayhudWxsLCBnZW5lcmF0ZUF1dGhSZXNwb25zZShzZXNzaW9uLmlkLCAnRGVueScsIG1ldGhvZEFybikpO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLHFCQUFvQjtBQUVwQixlQUF5QjtBQUVsQixNQUFNLHlCQUF5QixDQUFDLFFBQVEsY0FBYztBQUMzRCxNQUFHLENBQUMsVUFBVSxDQUFDLFdBQVc7QUFDeEIsV0FBTztBQUFBO0FBR1QsUUFBTSxpQkFBaUI7QUFBQSxJQUNyQixTQUFTO0FBQUEsSUFDVCxXQUFXO0FBQUEsTUFDVDtBQUFBLFFBQ0UsUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsVUFBVTtBQUFBO0FBQUE7QUFBQTtBQUtoQixTQUFPO0FBQUE7QUFHRixNQUFNLHVCQUF1QixDQUFDLGFBQWEsUUFBUSxjQUFjO0FBQ3RFLFFBQU0saUJBQWlCLHVCQUF1QixRQUFRO0FBRXRELFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQTtBQUFBO0FBQUE7QUFJRyxNQUFNLGFBQWEsQ0FBQyxPQUFPLFNBQVMsYUFBYTtBQUN0RCxRQUFNLEVBQUMscUJBQXFCLElBQUksY0FBYTtBQUM3QyxRQUFNLFFBQWdCLG1CQUFtQixRQUFRLFVBQVUsSUFBSTtBQUUvRCxNQUFHLDRCQUFRLFVBQVUsNEJBQVEsWUFBWTtBQUN2QyxXQUFPLFNBQVMsTUFBTTtBQUFBO0FBSXhCLFFBQU0sVUFBZSx5QkFBVztBQUVoQyxNQUFHLFdBQVcsUUFBUSxJQUFJO0FBQ3hCLFdBQU8sU0FBUyxNQUFNLHFCQUFxQixRQUFRLElBQUksU0FBUztBQUFBO0FBR2xFLFNBQU8sU0FBUyxNQUFNLHFCQUFxQixRQUFRLElBQUksUUFBUTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,12 @@
1
+ export declare const connectHandler: (event: any) => Promise<{
2
+ statusCode: number;
3
+ } | {
4
+ message: any;
5
+ statusCode: number;
6
+ }>;
7
+ export declare const defaultHandler: (event: any) => Promise<{
8
+ statusCode: number;
9
+ }>;
10
+ export declare const messageHandler: (event: any) => Promise<{
11
+ statusCode: number;
12
+ }>;
@@ -0,0 +1,113 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
25
+ var __export = (target, all) => {
26
+ __markAsModule(target);
27
+ for (var name in all)
28
+ __defProp(target, name, { get: all[name], enumerable: true });
29
+ };
30
+ var __reExport = (target, module2, desc) => {
31
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
32
+ for (let key of __getOwnPropNames(module2))
33
+ if (!__hasOwnProp.call(target, key) && key !== "default")
34
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
35
+ }
36
+ return target;
37
+ };
38
+ var __toModule = (module2) => {
39
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
40
+ };
41
+ __export(exports, {
42
+ connectHandler: () => connectHandler,
43
+ defaultHandler: () => defaultHandler,
44
+ messageHandler: () => messageHandler
45
+ });
46
+ var import_isEmpty = __toModule(require("lodash/isEmpty"));
47
+ var import__ = __toModule(require(".."));
48
+ var import_websockets = __toModule(require("./actions/websockets"));
49
+ var import_message = __toModule(require("./utils/message"));
50
+ var import_websocket2 = __toModule(require("./utils/websocket"));
51
+ const successStatus = { statusCode: 200 };
52
+ const errorStatus = { statusCode: 500 };
53
+ const { ARANGODB_DATABASE: databaseName } = process.env;
54
+ const getBasicContext = (userId) => ({ database: (0, import__.useDb)(databaseName), session: { userId } });
55
+ const connectHandler = async (event) => {
56
+ import_websocket2.wsClient.setupClient(event);
57
+ const { queryStringParameters = {}, requestContext } = event;
58
+ const { connectionId, eventType } = requestContext;
59
+ const { token } = queryStringParameters;
60
+ try {
61
+ if (eventType === "CONNECT") {
62
+ await (0, import_websockets.addConnection)(connectionId, token);
63
+ return successStatus;
64
+ } else if (eventType === "DISCONNECT") {
65
+ await (0, import_websockets.removeConnection)(connectionId);
66
+ return successStatus;
67
+ }
68
+ return __spreadProps(__spreadValues({}, errorStatus), { message: "Unknown type" });
69
+ } catch (error) {
70
+ return __spreadProps(__spreadValues({}, errorStatus), { message: error.message });
71
+ }
72
+ };
73
+ const defaultHandler = async (event) => {
74
+ await import_websocket2.wsClient.send(event, {
75
+ event: "error",
76
+ message: "invalid action type"
77
+ });
78
+ return successStatus;
79
+ };
80
+ const messageHandler = async (event) => {
81
+ const { body, requestContext } = event;
82
+ const { connectionId } = requestContext;
83
+ const message = JSON.parse(body).data;
84
+ const { conversationId, content } = message;
85
+ const formatContent = (0, import_message.parseMessage)(content);
86
+ const connection = await (0, import_websockets.getConnectionById)(connectionId);
87
+ const { user } = connection;
88
+ const { _key: userId } = user;
89
+ const authContext = getBasicContext(userId);
90
+ const conversation = await (0, import__.getConversation)(authContext, conversationId);
91
+ const { users = [] } = conversation;
92
+ await Promise.all(users.map(async (user2) => {
93
+ const { userId: userId2 } = user2;
94
+ const connection2 = await (0, import_websockets.getConnectionByUserId)(userId2);
95
+ if (connection2) {
96
+ const { connectionId: connectionId2 } = connection2;
97
+ if (!(0, import_isEmpty.default)(connectionId2)) {
98
+ import_websocket2.wsClient.send(connectionId2, {
99
+ action: "reaktorMessage",
100
+ data: formatContent
101
+ });
102
+ }
103
+ }
104
+ }));
105
+ return successStatus;
106
+ };
107
+ // Annotate the CommonJS export names for ESM import in node:
108
+ 0 && (module.exports = {
109
+ connectHandler,
110
+ defaultHandler,
111
+ messageHandler
112
+ });
113
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2xhbWJkYXMvY29ubmVjdGlvbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcblxuaW1wb3J0IHtnZXRDb252ZXJzYXRpb24sIHVzZURifSBmcm9tICcuLic7XG5pbXBvcnQge1dlYnNvY2tldE1lc3NhZ2VUeXBlfSBmcm9tICcuLi90eXBlcy93ZWJzb2NrZXQnO1xuaW1wb3J0IHthZGRDb25uZWN0aW9uLCBnZXRDb25uZWN0aW9uQnlJZCwgZ2V0Q29ubmVjdGlvbkJ5VXNlcklkLCByZW1vdmVDb25uZWN0aW9ufSBmcm9tICcuL2FjdGlvbnMvd2Vic29ja2V0cyc7XG5pbXBvcnQge3BhcnNlTWVzc2FnZX0gZnJvbSAnLi91dGlscy9tZXNzYWdlJztcbmltcG9ydCB7d3NDbGllbnR9IGZyb20gJy4vdXRpbHMvd2Vic29ja2V0JztcblxuY29uc3Qgc3VjY2Vzc1N0YXR1cyA9IHtzdGF0dXNDb2RlOiAyMDB9O1xuY29uc3QgZXJyb3JTdGF0dXMgPSB7c3RhdHVzQ29kZTogNTAwfTtcbmNvbnN0IHtBUkFOR09EQl9EQVRBQkFTRTogZGF0YWJhc2VOYW1lfSA9IHByb2Nlc3MuZW52O1xuY29uc3QgZ2V0QmFzaWNDb250ZXh0ID0gKHVzZXJJZDogc3RyaW5nKSA9PiAoe2RhdGFiYXNlOiB1c2VEYihkYXRhYmFzZU5hbWUpLCBzZXNzaW9uOiB7dXNlcklkfX0pO1xuXG5leHBvcnQgY29uc3QgY29ubmVjdEhhbmRsZXIgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgLy8gV2UgZG8gdGhpcyBzbyBmaXJzdCBjb25uZWN0IEVWRVIgc2V0cyB1cCBzb21lIG5lZWRlZCBjb25maWcgc3RhdGUgaW4gZGJcbiAgLy8gdGhpcyBnb2VzIGF3YXkgYWZ0ZXIgQ2xvdWRGb3JtYXRpb24gc3VwcG9ydCBpcyBhZGRlZCBmb3Igd2ViIHNvY2tldHNcbiAgd3NDbGllbnQuc2V0dXBDbGllbnQoZXZlbnQpO1xuICBjb25zdCB7cXVlcnlTdHJpbmdQYXJhbWV0ZXJzID0ge30sIHJlcXVlc3RDb250ZXh0fSA9IGV2ZW50O1xuICBjb25zdCB7Y29ubmVjdGlvbklkLCBldmVudFR5cGV9ID0gcmVxdWVzdENvbnRleHQ7XG4gIGNvbnN0IHt0b2tlbn0gPSBxdWVyeVN0cmluZ1BhcmFtZXRlcnM7XG5cbiAgdHJ5IHtcbiAgICBpZihldmVudFR5cGUgPT09ICdDT05ORUNUJykge1xuICAgICAgYXdhaXQgYWRkQ29ubmVjdGlvbihjb25uZWN0aW9uSWQsIHRva2VuKTtcbiAgICAgIHJldHVybiBzdWNjZXNzU3RhdHVzO1xuICAgIH0gZWxzZSBpZihldmVudFR5cGUgPT09ICdESVNDT05ORUNUJykge1xuICAgICAgYXdhaXQgcmVtb3ZlQ29ubmVjdGlvbihjb25uZWN0aW9uSWQpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3NTdGF0dXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsuLi5lcnJvclN0YXR1cywgbWVzc2FnZTogJ1Vua25vd24gdHlwZSd9O1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIHsuLi5lcnJvclN0YXR1cywgbWVzc2FnZTogZXJyb3IubWVzc2FnZX07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SGFuZGxlciA9IGFzeW5jIChldmVudCkgPT4ge1xuICBhd2FpdCB3c0NsaWVudC5zZW5kKGV2ZW50LCB7XG4gICAgZXZlbnQ6ICdlcnJvcicsXG4gICAgbWVzc2FnZTogJ2ludmFsaWQgYWN0aW9uIHR5cGUnXG4gIH0pO1xuXG4gIHJldHVybiBzdWNjZXNzU3RhdHVzO1xufTtcblxuZXhwb3J0IGNvbnN0IG1lc3NhZ2VIYW5kbGVyID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IHtib2R5LCByZXF1ZXN0Q29udGV4dH0gPSBldmVudDtcbiAgY29uc3Qge2Nvbm5lY3Rpb25JZH0gPSByZXF1ZXN0Q29udGV4dDtcbiAgY29uc3QgbWVzc2FnZTogV2Vic29ja2V0TWVzc2FnZVR5cGUgPSBKU09OLnBhcnNlKGJvZHkpLmRhdGE7XG4gIGNvbnN0IHtjb252ZXJzYXRpb25JZCwgY29udGVudH0gPSBtZXNzYWdlO1xuICBjb25zdCBmb3JtYXRDb250ZW50OiBzdHJpbmcgPSBwYXJzZU1lc3NhZ2UoY29udGVudCk7XG5cbiAgLy8gR2V0IGN1cnJlbnQgdXNlciBieSBjb25uZWN0aW9uXG4gIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBnZXRDb25uZWN0aW9uQnlJZChjb25uZWN0aW9uSWQpO1xuICBjb25zdCB7dXNlcn0gPSBjb25uZWN0aW9uO1xuICBjb25zdCB7X2tleTogdXNlcklkfSA9IHVzZXI7XG4gIGNvbnN0IGF1dGhDb250ZXh0ID0gZ2V0QmFzaWNDb250ZXh0KHVzZXJJZCk7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbiA9IGF3YWl0IGdldENvbnZlcnNhdGlvbihhdXRoQ29udGV4dCwgY29udmVyc2F0aW9uSWQpO1xuICBjb25zdCB7dXNlcnMgPSBbXX0gPSBjb252ZXJzYXRpb247XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwodXNlcnMubWFwKGFzeW5jICh1c2VyKSA9PiB7XG4gICAgY29uc3Qge3VzZXJJZH0gPSB1c2VyO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBnZXRDb25uZWN0aW9uQnlVc2VySWQodXNlcklkKTtcblxuICAgIGlmKGNvbm5lY3Rpb24pIHtcbiAgICAgIGNvbnN0IHtjb25uZWN0aW9uSWR9ID0gY29ubmVjdGlvbjtcblxuICAgICAgaWYoIWlzRW1wdHkoY29ubmVjdGlvbklkKSkge1xuICAgICAgICB3c0NsaWVudC5zZW5kKGNvbm5lY3Rpb25JZCwge1xuICAgICAgICAgIGFjdGlvbjogJ3JlYWt0b3JNZXNzYWdlJyxcbiAgICAgICAgICBkYXRhOiBmb3JtYXRDb250ZW50XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiBzdWNjZXNzU3RhdHVzO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEscUJBQW9CO0FBRXBCLGVBQXFDO0FBRXJDLHdCQUF3RjtBQUN4RixxQkFBMkI7QUFDM0Isd0JBQXVCO0FBRXZCLE1BQU0sZ0JBQWdCLEVBQUMsWUFBWTtBQUNuQyxNQUFNLGNBQWMsRUFBQyxZQUFZO0FBQ2pDLE1BQU0sRUFBQyxtQkFBbUIsaUJBQWdCLFFBQVE7QUFDbEQsTUFBTSxrQkFBa0IsQ0FBQyxXQUFvQixHQUFDLFVBQVUsb0JBQU0sZUFBZSxTQUFTLEVBQUM7QUFFaEYsTUFBTSxpQkFBaUIsT0FBTyxVQUFVO0FBRzdDLDZCQUFTLFlBQVk7QUFDckIsUUFBTSxFQUFDLHdCQUF3QixJQUFJLG1CQUFrQjtBQUNyRCxRQUFNLEVBQUMsY0FBYyxjQUFhO0FBQ2xDLFFBQU0sRUFBQyxVQUFTO0FBRWhCLE1BQUk7QUFDRixRQUFHLGNBQWMsV0FBVztBQUMxQixZQUFNLHFDQUFjLGNBQWM7QUFDbEMsYUFBTztBQUFBLGVBQ0MsY0FBYyxjQUFjO0FBQ3BDLFlBQU0sd0NBQWlCO0FBQ3ZCLGFBQU87QUFBQTtBQUdULFdBQU8saUNBQUksY0FBSixFQUFpQixTQUFTO0FBQUEsV0FDM0IsT0FBTjtBQUNBLFdBQU8saUNBQUksY0FBSixFQUFpQixTQUFTLE1BQU07QUFBQTtBQUFBO0FBSXBDLE1BQU0saUJBQWlCLE9BQU8sVUFBVTtBQUM3QyxRQUFNLDJCQUFTLEtBQUssT0FBTztBQUFBLElBQ3pCLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQTtBQUdYLFNBQU87QUFBQTtBQUdGLE1BQU0saUJBQWlCLE9BQU8sVUFBVTtBQUM3QyxRQUFNLEVBQUMsTUFBTSxtQkFBa0I7QUFDL0IsUUFBTSxFQUFDLGlCQUFnQjtBQUN2QixRQUFNLFVBQWdDLEtBQUssTUFBTSxNQUFNO0FBQ3ZELFFBQU0sRUFBQyxnQkFBZ0IsWUFBVztBQUNsQyxRQUFNLGdCQUF3QixpQ0FBYTtBQUczQyxRQUFNLGFBQWEsTUFBTSx5Q0FBa0I7QUFDM0MsUUFBTSxFQUFDLFNBQVE7QUFDZixRQUFNLEVBQUMsTUFBTSxXQUFVO0FBQ3ZCLFFBQU0sY0FBYyxnQkFBZ0I7QUFDcEMsUUFBTSxlQUFlLE1BQU0sOEJBQWdCLGFBQWE7QUFDeEQsUUFBTSxFQUFDLFFBQVEsT0FBTTtBQUVyQixRQUFNLFFBQVEsSUFBSSxNQUFNLElBQUksT0FBTyxVQUFTO0FBQzFDLFVBQU0sRUFBQyxvQkFBVTtBQUNqQixVQUFNLGNBQWEsTUFBTSw2Q0FBc0I7QUFFL0MsUUFBRyxhQUFZO0FBQ2IsWUFBTSxFQUFDLGdDQUFnQjtBQUV2QixVQUFHLENBQUMsNEJBQVEsZ0JBQWU7QUFDekIsbUNBQVMsS0FBSyxlQUFjO0FBQUEsVUFDMUIsUUFBUTtBQUFBLFVBQ1IsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTWQsU0FBTztBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1 @@
1
+ export declare const parseMessage: (content: string) => string;
@@ -0,0 +1,36 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ __markAsModule(target);
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __reExport = (target, module2, desc) => {
14
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
15
+ for (let key of __getOwnPropNames(module2))
16
+ if (!__hasOwnProp.call(target, key) && key !== "default")
17
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
18
+ }
19
+ return target;
20
+ };
21
+ var __toModule = (module2) => {
22
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
23
+ };
24
+ __export(exports, {
25
+ parseMessage: () => parseMessage
26
+ });
27
+ var import_sanitize_html = __toModule(require("sanitize-html"));
28
+ const parseMessage = (content) => (0, import_sanitize_html.default)(content, {
29
+ allowedAttributes: {},
30
+ allowedTags: ["ul", "ol", "b", "i", "em", "strike", "pre", "strong", "li"]
31
+ });
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ parseMessage
35
+ });
36
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvdXRpbHMvbWVzc2FnZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1odG1sJztcblxuZXhwb3J0IGNvbnN0IHBhcnNlTWVzc2FnZSA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4gc2FuaXRpemUoY29udGVudCwge1xuICBhbGxvd2VkQXR0cmlidXRlczoge30sXG4gIGFsbG93ZWRUYWdzOiBbJ3VsJywgJ29sJywgJ2InLCAnaScsICdlbScsICdzdHJpa2UnLCAncHJlJywgJ3N0cm9uZycsICdsaSddXG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBSUEsMkJBQXFCO0FBRWQsTUFBTSxlQUFlLENBQUMsWUFBNEIsa0NBQVMsU0FBUztBQUFBLEVBQ3pFLG1CQUFtQjtBQUFBLEVBQ25CLGFBQWEsQ0FBQyxNQUFNLE1BQU0sS0FBSyxLQUFLLE1BQU0sVUFBVSxPQUFPLFVBQVU7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,7 @@
1
+ export declare class WebsocketClient {
2
+ client: any;
3
+ constructor(config?: any);
4
+ setupClient(config: any): void;
5
+ send(connections: any, payload: any): Promise<boolean>;
6
+ }
7
+ export declare const wsClient: WebsocketClient;
@@ -0,0 +1,92 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ __markAsModule(target);
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __reExport = (target, module2, desc) => {
14
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
15
+ for (let key of __getOwnPropNames(module2))
16
+ if (!__hasOwnProp.call(target, key) && key !== "default")
17
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
18
+ }
19
+ return target;
20
+ };
21
+ var __toModule = (module2) => {
22
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
23
+ };
24
+ __export(exports, {
25
+ WebsocketClient: () => WebsocketClient,
26
+ wsClient: () => wsClient
27
+ });
28
+ var import_aws_sdk = __toModule(require("aws-sdk"));
29
+ var import_isPlainObject = __toModule(require("lodash/isPlainObject"));
30
+ var import_websockets = __toModule(require("../actions/websockets"));
31
+ const { API_ID, DOMAIN_NAME, stage } = process.env;
32
+ class WebsocketClient {
33
+ constructor(config) {
34
+ if (config) {
35
+ this.setupClient(config);
36
+ } else {
37
+ this.setupClient({ requestContext: { apiId: API_ID, domainName: DOMAIN_NAME, stage } });
38
+ }
39
+ }
40
+ setupClient(config) {
41
+ if (!this.client) {
42
+ const { requestContext } = config;
43
+ const { apiId, domainName, stage: stage2 } = requestContext;
44
+ let updatedDomainName = domainName;
45
+ if (apiId) {
46
+ updatedDomainName = `${apiId}.execute-api.${process.env.region}.amazonaws.com`;
47
+ }
48
+ let endpoint;
49
+ switch (stage2) {
50
+ case "prod":
51
+ endpoint = `https://${updatedDomainName}/prod`;
52
+ break;
53
+ case "dev":
54
+ endpoint = `https://${updatedDomainName}/dev`;
55
+ break;
56
+ default:
57
+ endpoint = "http://local.phantaze.com:3001";
58
+ break;
59
+ }
60
+ this.client = new import_aws_sdk.ApiGatewayManagementApi({
61
+ apiVersion: "2018-11-29",
62
+ endpoint
63
+ });
64
+ }
65
+ }
66
+ async send(connections, payload) {
67
+ const connectionIds = [];
68
+ if ((0, import_isPlainObject.default)(connections)) {
69
+ await this.setupClient(connections);
70
+ const { connectionId: connId } = connections.requestContext;
71
+ connectionIds.push(connId);
72
+ } else {
73
+ connectionIds.push(...connections);
74
+ }
75
+ if (this.client) {
76
+ await Promise.all(connectionIds.map((connectionId) => this.client.postToConnection({ ConnectionId: connectionId, Data: JSON.stringify(payload) }).promise().catch(async (postError) => {
77
+ console.log("WebsocketError::postError", JSON.stringify(postError));
78
+ if (postError.statusCode === 410) {
79
+ await (0, import_websockets.removeConnection)(connectionId);
80
+ }
81
+ })));
82
+ }
83
+ return true;
84
+ }
85
+ }
86
+ const wsClient = new WebsocketClient();
87
+ // Annotate the CommonJS export names for ESM import in node:
88
+ 0 && (module.exports = {
89
+ WebsocketClient,
90
+ wsClient
91
+ });
92
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xhbWJkYXMvdXRpbHMvd2Vic29ja2V0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtBcGlHYXRld2F5TWFuYWdlbWVudEFwaX0gZnJvbSAnYXdzLXNkayc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2gvaXNQbGFpbk9iamVjdCc7XG5cbmltcG9ydCB7cmVtb3ZlQ29ubmVjdGlvbn0gZnJvbSAnLi4vYWN0aW9ucy93ZWJzb2NrZXRzJztcblxuY29uc3Qge0FQSV9JRCwgRE9NQUlOX05BTUUsIHN0YWdlfSA9IHByb2Nlc3MuZW52O1xuXG5leHBvcnQgY2xhc3MgV2Vic29ja2V0Q2xpZW50IHtcbiAgY2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz8pIHtcbiAgICBpZihjb25maWcpIHtcbiAgICAgIHRoaXMuc2V0dXBDbGllbnQoY29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXR1cENsaWVudCh7cmVxdWVzdENvbnRleHQ6IHthcGlJZDogQVBJX0lELCBkb21haW5OYW1lOiBET01BSU5fTkFNRSwgc3RhZ2V9fSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWxsb3cganVzdCBwYXNzaW5nIGEgc2luZ2xlIGV2ZW50IHRvIHNldHVwIHRoZSBjbGllbnQgZm9yIGVhc2Ugb2YgdXNlXG4gIHNldHVwQ2xpZW50KGNvbmZpZykge1xuICAgIGlmKCF0aGlzLmNsaWVudCkge1xuICAgICAgY29uc3Qge3JlcXVlc3RDb250ZXh0fSA9IGNvbmZpZztcbiAgICAgIGNvbnN0IHthcGlJZCwgZG9tYWluTmFtZSwgc3RhZ2V9ID0gcmVxdWVzdENvbnRleHQ7XG4gICAgICBsZXQgdXBkYXRlZERvbWFpbk5hbWU6IHN0cmluZyA9IGRvbWFpbk5hbWU7XG5cbiAgICAgIGlmKGFwaUlkKSB7XG4gICAgICAgIHVwZGF0ZWREb21haW5OYW1lID0gYCR7YXBpSWR9LmV4ZWN1dGUtYXBpLiR7cHJvY2Vzcy5lbnYucmVnaW9ufS5hbWF6b25hd3MuY29tYDtcbiAgICAgIH1cblxuICAgICAgbGV0IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgICAgIHN3aXRjaChzdGFnZSkge1xuICAgICAgICBjYXNlICdwcm9kJzpcbiAgICAgICAgICBlbmRwb2ludCA9IGBodHRwczovLyR7dXBkYXRlZERvbWFpbk5hbWV9L3Byb2RgO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdkZXYnOlxuICAgICAgICAgIGVuZHBvaW50ID0gYGh0dHBzOi8vJHt1cGRhdGVkRG9tYWluTmFtZX0vZGV2YDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBlbmRwb2ludCA9ICdodHRwOi8vbG9jYWwucGhhbnRhemUuY29tOjMwMDEnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsaWVudCA9IG5ldyBBcGlHYXRld2F5TWFuYWdlbWVudEFwaSh7XG4gICAgICAgIGFwaVZlcnNpb246ICcyMDE4LTExLTI5JyxcbiAgICAgICAgZW5kcG9pbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmQoY29ubmVjdGlvbnMsIHBheWxvYWQpIHtcbiAgICAvLyBDaGVhdCBhbmQgYWxsb3cgZXZlbnQgdG8gYmUgcGFzc2VkIGluIHRoaXMgYWxzbyBsZXRzIHVzIGRlZmF1bHQgdG8gc2V0dXBDbGllbnQgdG9vXG4gICAgY29uc3QgY29ubmVjdGlvbklkczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmKGlzUGxhaW5PYmplY3QoY29ubmVjdGlvbnMpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldHVwQ2xpZW50KGNvbm5lY3Rpb25zKTtcbiAgICAgIGNvbnN0IHtjb25uZWN0aW9uSWQ6IGNvbm5JZH0gPSBjb25uZWN0aW9ucy5yZXF1ZXN0Q29udGV4dDtcbiAgICAgIGNvbm5lY3Rpb25JZHMucHVzaChjb25uSWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25uZWN0aW9uSWRzLnB1c2goLi4uY29ubmVjdGlvbnMpO1xuICAgIH1cblxuICAgIGlmKHRoaXMuY2xpZW50KSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY29ubmVjdGlvbklkcy5tYXAoKGNvbm5lY3Rpb25JZDogc3RyaW5nKSA9PlxuICAgICAgICAgIHRoaXMuY2xpZW50LnBvc3RUb0Nvbm5lY3Rpb24oe0Nvbm5lY3Rpb25JZDogY29ubmVjdGlvbklkLCBEYXRhOiBKU09OLnN0cmluZ2lmeShwYXlsb2FkKX0pXG4gICAgICAgICAgICAucHJvbWlzZSgpXG4gICAgICAgICAgICAuY2F0Y2goYXN5bmMgKHBvc3RFcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnV2Vic29ja2V0RXJyb3I6OnBvc3RFcnJvcicsIEpTT04uc3RyaW5naWZ5KHBvc3RFcnJvcikpO1xuXG4gICAgICAgICAgICAgIGlmKHBvc3RFcnJvci5zdGF0dXNDb2RlID09PSA0MTApIHtcbiAgICAgICAgICAgICAgICAvLyBEaXNjb25uZWN0IGNsaWVudFxuICAgICAgICAgICAgICAgIGF3YWl0IHJlbW92ZUNvbm5lY3Rpb24oY29ubmVjdGlvbklkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd3NDbGllbnQgPSBuZXcgV2Vic29ja2V0Q2xpZW50KCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEscUJBQXNDO0FBQ3RDLDJCQUEwQjtBQUUxQix3QkFBK0I7QUFFL0IsTUFBTSxFQUFDLFFBQVEsYUFBYSxVQUFTLFFBQVE7QUFFdEMsc0JBQXNCO0FBQUEsRUFHM0IsWUFBWSxRQUFTO0FBQ25CLFFBQUcsUUFBUTtBQUNULFdBQUssWUFBWTtBQUFBLFdBQ1o7QUFDTCxXQUFLLFlBQVksRUFBQyxnQkFBZ0IsRUFBQyxPQUFPLFFBQVEsWUFBWSxhQUFhO0FBQUE7QUFBQTtBQUFBLEVBSy9FLFlBQVksUUFBUTtBQUNsQixRQUFHLENBQUMsS0FBSyxRQUFRO0FBQ2YsWUFBTSxFQUFDLG1CQUFrQjtBQUN6QixZQUFNLEVBQUMsT0FBTyxZQUFZLGtCQUFTO0FBQ25DLFVBQUksb0JBQTRCO0FBRWhDLFVBQUcsT0FBTztBQUNSLDRCQUFvQixHQUFHLHFCQUFxQixRQUFRLElBQUk7QUFBQTtBQUcxRCxVQUFJO0FBRUosY0FBTztBQUFBLGFBQ0E7QUFDSCxxQkFBVyxXQUFXO0FBQ3RCO0FBQUEsYUFDRztBQUNILHFCQUFXLFdBQVc7QUFDdEI7QUFBQTtBQUVBLHFCQUFXO0FBQ1g7QUFBQTtBQUdKLFdBQUssU0FBUyxJQUFJLHVDQUF3QjtBQUFBLFFBQ3hDLFlBQVk7QUFBQSxRQUNaO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFLQSxLQUFLLGFBQWEsU0FBUztBQUUvQixVQUFNLGdCQUEwQjtBQUVoQyxRQUFHLGtDQUFjLGNBQWM7QUFDN0IsWUFBTSxLQUFLLFlBQVk7QUFDdkIsWUFBTSxFQUFDLGNBQWMsV0FBVSxZQUFZO0FBQzNDLG9CQUFjLEtBQUs7QUFBQSxXQUNkO0FBQ0wsb0JBQWMsS0FBSyxHQUFHO0FBQUE7QUFHeEIsUUFBRyxLQUFLLFFBQVE7QUFDZCxZQUFNLFFBQVEsSUFDWixjQUFjLElBQUksQ0FBQyxpQkFDakIsS0FBSyxPQUFPLGlCQUFpQixFQUFDLGNBQWMsY0FBYyxNQUFNLEtBQUssVUFBVSxZQUM1RSxVQUNBLE1BQU0sT0FBTyxjQUFjO0FBQzFCLGdCQUFRLElBQUksNkJBQTZCLEtBQUssVUFBVTtBQUV4RCxZQUFHLFVBQVUsZUFBZSxLQUFLO0FBRS9CLGdCQUFNLHdDQUFpQjtBQUFBO0FBQUE7QUFBQTtBQU9uQyxXQUFPO0FBQUE7QUFBQTtBQUlKLE1BQU0sV0FBVyxJQUFJOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,14 @@
1
+ export interface WebsocketMessageType {
2
+ readonly _id?: string;
3
+ readonly _key?: string;
4
+ readonly added?: number;
5
+ readonly content?: string;
6
+ readonly conversationId?: string;
7
+ readonly files?: string[];
8
+ readonly images?: string[];
9
+ readonly messageId?: string;
10
+ readonly modified?: number;
11
+ readonly read?: boolean;
12
+ readonly saved?: boolean;
13
+ readonly userId?: string;
14
+ }
@@ -0,0 +1,4 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
3
+ __markAsModule(exports);
4
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3R5cGVzL3dlYnNvY2tldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Vic29ja2V0TWVzc2FnZVR5cGUge1xuICByZWFkb25seSBfaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IF9rZXk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkZGVkPzogbnVtYmVyO1xuICByZWFkb25seSBjb250ZW50Pzogc3RyaW5nO1xuICByZWFkb25seSBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgcmVhZG9ubHkgZmlsZXM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgaW1hZ2VzPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IG1lc3NhZ2VJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgbW9kaWZpZWQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlYWQ/OiBib29sZWFuO1xuICByZWFkb25seSBzYXZlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVzZXJJZD86IHN0cmluZztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7O0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/reaktor",
3
- "version": "0.4.6",
3
+ "version": "0.5.0",
4
4
  "description": "Reaktor",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./lib/index.js",
@@ -61,6 +61,7 @@
61
61
  "node-yelp": "^0.0.2",
62
62
  "numeral": "^2.0.6",
63
63
  "request-promise": "^4.2.6",
64
+ "sanitize-html": "^2.5.0",
64
65
  "stripe": "^8.174.0",
65
66
  "to": "^0.2.9",
66
67
  "twilio": "^3.67.2",