summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-03-15 12:55:07 -0300
committerEuAndreh <eu@euandre.org>2024-03-15 12:55:07 -0300
commitb28393ee10aa7b90968d546ef781488fe636eef0 (patch)
treed45542b63c02a71e668e883a1af86e07fab7162a
parentsrc/hero.mjs: Add buildHttpPayload() (diff)
downloadpapod-b28393ee10aa7b90968d546ef781488fe636eef0.tar.gz
papod-b28393ee10aa7b90968d546ef781488fe636eef0.tar.xz
src/hero.mjs: Add support for "WEBSOCKET" type of route
-rw-r--r--src/hero.mjs9
-rw-r--r--tests/js/hero.mjs5
2 files changed, 12 insertions, 2 deletions
diff --git a/src/hero.mjs b/src/hero.mjs
index daf8141..10fa06e 100644
--- a/src/hero.mjs
+++ b/src/hero.mjs
@@ -172,12 +172,17 @@ export const addRoute = (table, methods, path, handlerFn) => {
return addRoute(table, [methods], path, handlerFn);
}
- assert.ok(methods.every(m => HTTP_METHODS.has(m)));
+ assert.ok(methods.every(isValidLabel));
const segments = pathToSegments(path);
const kw = hasPathParams(segments) ? "dynamic" : "static";
return methods.reduce(
- (acc, el) => u.assocIn(acc, [kw, el].concat(segments), handlerFn),
+ (acc, el) =>
+ u.assocIn(
+ acc,
+ comboForLabel(el, kw).concat(segments),
+ handlerFn,
+ ),
table,
);
};
diff --git a/tests/js/hero.mjs b/tests/js/hero.mjs
index 627aa33..f964a88 100644
--- a/tests/js/hero.mjs
+++ b/tests/js/hero.mjs
@@ -663,6 +663,11 @@ const test_addRoute = async t => {
);
assert.deepEqual(
+ addRoute({}, "WEBSOCKET", "/socket", fn1),
+ { websocket: { GET: { socket: { "": fn1 }}}},
+ );
+
+ assert.deepEqual(
addRoute({}, ["PUT", "PATCH"], "/api/org/:orgid/member/:memberid", fn1),
{
dynamic: {