feat: add logs, modifier and throttling stuff
このコミットが含まれているのは:
コミット
aade7ca2f7
|
@ -0,0 +1,17 @@
|
|||
import rateLimit from "express-rate-limit";
|
||||
import slowDown from "express-slow-down";
|
||||
|
||||
const limiter = rateLimit({
|
||||
windowMs: 15 * 60 * 1000,
|
||||
max: 50,
|
||||
message: "Too nasty, please slow down"
|
||||
});
|
||||
|
||||
const slow = slowDown({
|
||||
delayAfter: 50,
|
||||
windowMs: 15 * 60 * 1000,
|
||||
delayMs: 1000,
|
||||
maxDelayMs: 20000,
|
||||
});
|
||||
|
||||
export { limiter, slow };
|
|
@ -0,0 +1,8 @@
|
|||
import pino from "pino";
|
||||
|
||||
export const logger = pino({
|
||||
level: "info",
|
||||
transport: {
|
||||
target: "pino-pretty"
|
||||
},
|
||||
});
|
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* Auto space on url
|
||||
* @param str the string to be spaced
|
||||
* @returns string
|
||||
*/
|
||||
export function spacer(str: string) {
|
||||
return str.replace(/\s/g, "+");
|
||||
}
|
||||
|
||||
/**
|
||||
* Error handler
|
||||
* @param success when success is false, it will return error
|
||||
* @param message error message
|
||||
* @returns object
|
||||
*/
|
||||
export function maybeError(success: boolean, message: string) {
|
||||
return { success, message };
|
||||
}
|
||||
|
||||
export function timeAgo(input: Date) {
|
||||
const date = new Date(input);
|
||||
const formatter: any = new Intl.RelativeTimeFormat("en");
|
||||
const ranges: { [key: string]: number } = {
|
||||
years: 3600 * 24 * 365,
|
||||
months: 3600 * 24 * 30,
|
||||
weeks: 3600 * 24 * 7,
|
||||
days: 3600 * 24,
|
||||
hours: 3600,
|
||||
minutes: 60,
|
||||
seconds: 1
|
||||
};
|
||||
const secondsElapsed = (date.getTime() - Date.now()) / 1000;
|
||||
for (const key in ranges) {
|
||||
if (ranges[key] < Math.abs(secondsElapsed)) {
|
||||
const delta = secondsElapsed / ranges[key];
|
||||
return formatter.format(Math.round(delta), key);
|
||||
}
|
||||
}
|
||||
}
|
読み込み中…
新しいイシューから参照