@rpcbase/server 0.343.0 → 0.345.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/express/index.js
CHANGED
|
@@ -30,7 +30,7 @@ const BODY_MAX_SIZE_MB = 80
|
|
|
30
30
|
|
|
31
31
|
log("server is production:", JSON.stringify(is_production))
|
|
32
32
|
|
|
33
|
-
module.exports = () => {
|
|
33
|
+
module.exports = async() => {
|
|
34
34
|
|
|
35
35
|
const app = express()
|
|
36
36
|
|
|
@@ -77,7 +77,7 @@ module.exports = () => {
|
|
|
77
77
|
|
|
78
78
|
custom_cors(app)
|
|
79
79
|
|
|
80
|
-
sessions(app)
|
|
80
|
+
await sessions(app)
|
|
81
81
|
|
|
82
82
|
const pong_res = {app: `app_name:${JSON.stringify(process.env.RB_APP_NAME)}`, message: "pong"}
|
|
83
83
|
app.get("/__ping", (req, res) => res.json(pong_res))
|
|
@@ -31,9 +31,12 @@ const setup_handlers = (app) => {
|
|
|
31
31
|
|
|
32
32
|
// app.handler
|
|
33
33
|
app.handler = (path, fn) => {
|
|
34
|
+
|
|
35
|
+
const resolved_fn = typeof fn === "function" ? fn : fn.default
|
|
36
|
+
|
|
34
37
|
app.post(path, async (req, res, next) => {
|
|
35
38
|
try {
|
|
36
|
-
const result = await
|
|
39
|
+
const result = await resolved_fn(req.body, {req, res})
|
|
37
40
|
res.json(result)
|
|
38
41
|
} catch (err) {
|
|
39
42
|
next(err)
|
package/package.json
CHANGED
|
@@ -9,9 +9,10 @@ const RedisStore = require("connect-redis").default
|
|
|
9
9
|
const is_docker = require("@rpcbase/std/is_docker")
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
const {SESSION_STORE_PORT, APP_DOMAIN} = process.env
|
|
12
|
+
const {NODE_ENV, SESSION_STORE_PORT, APP_DOMAIN} = process.env
|
|
13
13
|
assert(SESSION_STORE_PORT, "SESSION_STORE_PORT is undefined")
|
|
14
14
|
|
|
15
|
+
const is_production = NODE_ENV === "production"
|
|
15
16
|
|
|
16
17
|
const log = debug("rb:session")
|
|
17
18
|
// log.useColors = true
|
|
@@ -28,11 +29,12 @@ const hostname = is_docker() ? "session-store" : "127.0.0.1"
|
|
|
28
29
|
|
|
29
30
|
console.log("session-store hostname", hostname, "port", SESSION_STORE_PORT)
|
|
30
31
|
|
|
31
|
-
let session_middleware = null
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
const get_session_store_middleware = async() => {
|
|
34
|
+
if (is_production) {
|
|
35
|
+
throw new Error("SESSION STORE MIDDLEWARE CANNOT BE USED IN PRODUCTION")
|
|
36
|
+
}
|
|
37
|
+
|
|
36
38
|
const reconnectStrategy = (retries) => {
|
|
37
39
|
log("redis_client::reconnectStrategy::retrying with arg", retries)
|
|
38
40
|
if (retries < 5) {
|
|
@@ -65,7 +67,7 @@ setTimeout(async() => {
|
|
|
65
67
|
proxy: true,
|
|
66
68
|
saveUninitialized: true,
|
|
67
69
|
// WARNING DO NOT USE IN PROD
|
|
68
|
-
secret: "
|
|
70
|
+
secret: "__NOT_A_SECRET_BECAUSE_THIS_MIDDLEWARE_IS_NOT_MEANT_TO_BE_USED_IN_PROD__",
|
|
69
71
|
resave: true,
|
|
70
72
|
cookie: {
|
|
71
73
|
// TODO: set to secure in production
|
|
@@ -79,21 +81,16 @@ setTimeout(async() => {
|
|
|
79
81
|
// https://stackoverflow.com/questions/1134290/cookies-on-localhost-with-explicit-domain
|
|
80
82
|
// TODO: WTF IS THIS
|
|
81
83
|
// if (is_docker() && typeof APP_DOMAIN === "string" && APP_DOMAIN.trim() !== "") {
|
|
82
|
-
// log("\n\n")
|
|
83
|
-
// log("SETTING COOKIE DOMAIN TO", APP_DOMAIN)
|
|
84
|
-
// log("SETTING secure", APP_DOMAIN)
|
|
85
|
-
// log("TRUST PROXY TRUE")
|
|
86
|
-
// log("\n\n")
|
|
87
84
|
// session_config.cookie.domain = APP_DOMAIN
|
|
88
85
|
// // session_config.cookie.secure = true
|
|
89
86
|
// session_config.cookie.sameSite = false
|
|
90
87
|
// }
|
|
91
88
|
|
|
89
|
+
const session_middleware = session(session_config)
|
|
92
90
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
module.exports = (req, res, next) => {
|
|
98
|
-
session_middleware(req, res, next)
|
|
91
|
+
return (req, res, next) => {
|
|
92
|
+
session_middleware(req, res, next)
|
|
93
|
+
}
|
|
99
94
|
}
|
|
95
|
+
|
|
96
|
+
module.exports = get_session_store_middleware
|
package/src/sessions/index.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/* @flow */
|
|
2
2
|
const pc = require("picocolors")
|
|
3
3
|
|
|
4
|
+
const get_session_store_middleware = require("./get_session_store_middleware")
|
|
5
|
+
|
|
4
6
|
|
|
5
7
|
const is_development = process.env.NODE_ENV === "development"
|
|
6
8
|
|
|
7
|
-
module.exports = (app) => {
|
|
9
|
+
module.exports = async(app) => {
|
|
8
10
|
const has_session_store = process.env.RB_SESSION_STORE === "yes"
|
|
9
11
|
|
|
10
12
|
if (has_session_store) {
|
|
11
13
|
console.log("using", pc.bold(pc.green("SESSION STORE")))
|
|
12
14
|
|
|
13
|
-
const session_store_middleware =
|
|
15
|
+
const session_store_middleware = await get_session_store_middleware()
|
|
14
16
|
app.use(session_store_middleware)
|
|
15
17
|
} else {
|
|
16
18
|
console.log("using", pc.bold(pc.red("REVERSE-PROXY SESSIONS!")), "if you want to use the session store, start with the --sessions argument")
|