somod-chat-service 0.4.2 → 0.4.3
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/build/lib/message.js +7 -6
- package/build/lib/types.d.ts +6 -1
- package/build/lib/types.js +5 -1
- package/build/serverless/functions/message.http.json +1 -1
- package/build/serverless/functions/message.js +3 -2
- package/build/serverless/functions/wsOnMessage.js +3 -2
- package/build/serverless/functions/wsOnMessage.websocket.json +1 -1
- package/package.json +1 -1
package/build/lib/message.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { __assign, __awaiter, __generator } from "tslib";
|
|
2
2
|
import { marshall } from "@aws-sdk/util-dynamodb";
|
|
3
|
+
import { typeToAllowedActionsMap } from "./types";
|
|
3
4
|
import { DynamoDBClient, PutItemCommand } from "@aws-sdk/client-dynamodb";
|
|
4
5
|
import { threadCache } from "./threadCache";
|
|
5
6
|
var dynamodb = new DynamoDBClient();
|
|
@@ -27,7 +28,7 @@ export var putMessage = function (tableName, userId, message) { return __awaiter
|
|
|
27
28
|
});
|
|
28
29
|
}); };
|
|
29
30
|
export var validateIncomingMessage = function (message, userId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
30
|
-
var errorMessage, thread;
|
|
31
|
+
var errorMessage, thread, sessionActions;
|
|
31
32
|
return __generator(this, function (_a) {
|
|
32
33
|
switch (_a.label) {
|
|
33
34
|
case 0:
|
|
@@ -35,18 +36,18 @@ export var validateIncomingMessage = function (message, userId) { return __await
|
|
|
35
36
|
return [4 /*yield*/, threadCache.get(message.threadId)];
|
|
36
37
|
case 1:
|
|
37
38
|
thread = _a.sent();
|
|
39
|
+
sessionActions = ["sessionStart", "sessionExtend", "sessionEnd"];
|
|
38
40
|
if (thread === undefined) {
|
|
39
41
|
errorMessage = "Invalid threadId : does not exist";
|
|
40
42
|
}
|
|
41
43
|
else if (!thread.participants.includes(userId)) {
|
|
42
44
|
errorMessage = "Invalid threadId : from '".concat(userId, "' is not a participant in thread '").concat(thread.id, "'");
|
|
43
45
|
}
|
|
44
|
-
else if (
|
|
45
|
-
message.type
|
|
46
|
-
errorMessage = "Invalid type : type must be 'control' for ".concat(message.action, " action");
|
|
46
|
+
else if (!typeToAllowedActionsMap[message.type].includes(message.action)) {
|
|
47
|
+
errorMessage = "Invalid action : action must be '".concat(typeToAllowedActionsMap[message.type].join(","), "' for '").concat(message.type, "' type");
|
|
47
48
|
}
|
|
48
|
-
else if (message.action
|
|
49
|
-
errorMessage = "Required 'sessionToken' field when action is '
|
|
49
|
+
else if (sessionActions.includes(message.action) && !message.sessionToken) {
|
|
50
|
+
errorMessage = "Required 'sessionToken' field when action is '".concat(message.action, "'");
|
|
50
51
|
}
|
|
51
52
|
if (errorMessage) {
|
|
52
53
|
return [2 /*return*/, {
|
package/build/lib/types.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type Thread = {
|
|
|
7
7
|
export type MessageInput = {
|
|
8
8
|
threadId: string;
|
|
9
9
|
type: "text" | "image" | "control";
|
|
10
|
-
action: "new" | "edit" | "delete" | "
|
|
10
|
+
action: "new" | "edit" | "delete" | "sessionStart" | "sessionExtend" | "sessionEnd";
|
|
11
11
|
message: string;
|
|
12
12
|
sessionToken?: string;
|
|
13
13
|
};
|
|
@@ -24,3 +24,8 @@ export type Session = {
|
|
|
24
24
|
startTime: number;
|
|
25
25
|
endTime: number;
|
|
26
26
|
};
|
|
27
|
+
export declare const typeToAllowedActionsMap: {
|
|
28
|
+
text: string[];
|
|
29
|
+
image: string[];
|
|
30
|
+
control: string[];
|
|
31
|
+
};
|
package/build/lib/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"/post-message":{"POST":{"body":{"parser":"json","schema":{"type":"object","additionalProperties":false,"required":["threadId","type","action","message"],"properties":{"threadId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"type":{"enum":["text","image","control"]},"action":{"enum":["new","edit","delete","
|
|
1
|
+
{"/post-message":{"POST":{"body":{"parser":"json","schema":{"type":"object","additionalProperties":false,"required":["threadId","type","action","message"],"properties":{"threadId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"type":{"enum":["text","image","control"]},"action":{"enum":["new","edit","delete","sessionStart","sessionExtend","sessionEnd"]},"message":{"type":"string","maxLength":512},"sessionToken":{"type":"string","maxLength":16384}}}}}},"/sync-messages":{"GET":{"parameters":[{"name":"from","in":"query","schema":{"type":"string","pattern":"^[0-9]*$"},"required":false}]}}}
|
|
@@ -9,7 +9,7 @@ import { handleSessionToken } from "../../lib/sessionUtil";
|
|
|
9
9
|
var dynamodb = new DynamoDBClient();
|
|
10
10
|
var builder = new RouteBuilder();
|
|
11
11
|
var postMessageHandler = function (request, event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
12
|
-
var userId, messageValidationError, sessionIdResult, _a, sessionToken, msg, message;
|
|
12
|
+
var userId, messageValidationError, sessionIdResult, _a, sessionToken, msg, actions, message;
|
|
13
13
|
return __generator(this, function (_b) {
|
|
14
14
|
switch (_b.label) {
|
|
15
15
|
case 0:
|
|
@@ -31,7 +31,8 @@ var postMessageHandler = function (request, event) { return __awaiter(void 0, vo
|
|
|
31
31
|
}];
|
|
32
32
|
}
|
|
33
33
|
_a = request.body, sessionToken = _a.sessionToken, msg = __rest(_a, ["sessionToken"]);
|
|
34
|
-
|
|
34
|
+
actions = ["sessionStart", "sessionExtend", "sessionEnd"];
|
|
35
|
+
return [4 /*yield*/, putMessage(process.env.MESSAGE_BOX_TABLE_NAME + "", userId, __assign(__assign(__assign({}, msg), { sessionId: sessionIdResult.sessionId, id: v1uuid().split("-").join(""), from: userId, sentAt: Date.now() }), (actions.includes(request.body.action)
|
|
35
36
|
? { sessionToken: sessionToken }
|
|
36
37
|
: {})))];
|
|
37
38
|
case 2:
|
|
@@ -6,7 +6,7 @@ import { UserProviderMiddlewareKey } from "../../lib";
|
|
|
6
6
|
import { handleSessionToken } from "../../lib/sessionUtil";
|
|
7
7
|
var builder = new RouteBuilder();
|
|
8
8
|
builder.add("$default", function (message, event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
9
|
-
var userId, messageValidationError, sessionIdResult, _a, wsMsgId, sessionToken, msg, messageResult;
|
|
9
|
+
var userId, messageValidationError, sessionIdResult, _a, wsMsgId, sessionToken, msg, actions, messageResult;
|
|
10
10
|
return __generator(this, function (_b) {
|
|
11
11
|
switch (_b.label) {
|
|
12
12
|
case 0:
|
|
@@ -28,7 +28,8 @@ builder.add("$default", function (message, event) { return __awaiter(void 0, voi
|
|
|
28
28
|
}];
|
|
29
29
|
}
|
|
30
30
|
_a = message.body, wsMsgId = _a.wsMsgId, sessionToken = _a.sessionToken, msg = __rest(_a, ["wsMsgId", "sessionToken"]);
|
|
31
|
-
|
|
31
|
+
actions = ["sessionStart", "sessionExtend", "sessionEnd"];
|
|
32
|
+
return [4 /*yield*/, putMessage(process.env.MESSAGE_BOX_TABLE_NAME + "", userId, __assign(__assign(__assign({}, msg), { sessionId: sessionIdResult.sessionId, from: userId, id: v1uuid().split("-").join(""), sentAt: Date.now() }), (actions.includes(message.body.action)
|
|
32
33
|
? { sessionToken: sessionToken }
|
|
33
34
|
: {})))];
|
|
34
35
|
case 2:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$default":{"body":{"parser":"json","schema":{"type":"object","additionalProperties":false,"required":["wsMsgId","threadId","type","action","message"],"properties":{"wsMsgId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"threadId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"type":{"enum":["text","image","control"]},"action":{"enum":["new","edit","delete","
|
|
1
|
+
{"$default":{"body":{"parser":"json","schema":{"type":"object","additionalProperties":false,"required":["wsMsgId","threadId","type","action","message"],"properties":{"wsMsgId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"threadId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"type":{"enum":["text","image","control"]},"action":{"enum":["new","edit","delete","sessionStart","sessionExtend","sessionEnd"]},"message":{"type":"string","maxLength":512},"sessionToken":{"type":"string","maxLength":16384}}}}}}
|
package/package.json
CHANGED