Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 22 additions & 17 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,27 +59,32 @@ async function fastifyRateLimit (fastify, settings) {
}, settings.addHeadersOnExceeding)

// Global maximum allowed requests
globalParams.max = ((typeof settings.max === 'number' && Number.isFinite(settings.max) && (settings.max = Math.trunc(settings.max)) >= 0) || typeof settings.max === 'function')
? settings.max
: defaultMax
if (Number.isFinite(settings.max) && settings.max >= 0) {
globalParams.max = Math.trunc(settings.max)
} else if (
typeof settings.max === 'function'
) {
globalParams.max = settings.max
} else {
globalParams.max = defaultMax
}

// Global time window
const twType = typeof settings.timeWindow
globalParams.timeWindow = defaultTimeWindow
if (twType === 'function') {
globalParams.timeWindow = settings.timeWindow
} else if (twType === 'string') {
if (Number.isFinite(settings.timeWindow) && settings.timeWindow >= 0) {
globalParams.timeWindow = Math.trunc(settings.timeWindow)
} else if (typeof settings.timeWindow === 'string') {
globalParams.timeWindow = ms.parse(settings.timeWindow)
} else if (
twType === 'number' &&
Number.isFinite(settings.timeWindow) && settings.timeWindow >= 0
typeof settings.timeWindow === 'function'
) {
globalParams.timeWindow = Math.trunc(settings.timeWindow)
globalParams.timeWindow = settings.timeWindow
} else {
globalParams.timeWindow = defaultTimeWindow
}

globalParams.hook = settings.hook || defaultHook
globalParams.allowList = settings.allowList || settings.whitelist || null
globalParams.ban = typeof settings.ban === 'number' && Number.isFinite(settings.ban) && settings.ban >= 0 ? Math.trunc(settings.ban) : -1
globalParams.ban = Number.isFinite(settings.ban) && settings.ban >= 0 ? Math.trunc(settings.ban) : -1
globalParams.onBanReach = typeof settings.onBanReach === 'function' ? settings.onBanReach : null
globalParams.onExceeding = typeof settings.onExceeding === 'function' ? settings.onExceeding : null
globalParams.onExceeded = typeof settings.onExceeded === 'function' ? settings.onExceeded : null
Expand Down Expand Up @@ -150,21 +155,21 @@ async function fastifyRateLimit (fastify, settings) {
function mergeParams (...params) {
const result = Object.assign({}, ...params)

if (typeof result.timeWindow === 'string') {
result.timeWindow = ms.parse(result.timeWindow)
} else if (typeof result.timeWindow === 'number' && Number.isFinite(result.timeWindow) && result.timeWindow >= 0) {
if (Number.isFinite(result.timeWindow) && result.timeWindow >= 0) {
result.timeWindow = Math.trunc(result.timeWindow)
} else if (typeof result.timeWindow === 'string') {
result.timeWindow = ms.parse(result.timeWindow)
} else if (typeof result.timeWindow !== 'function') {
result.timeWindow = defaultTimeWindow
}

if (typeof result.max === 'number' && Number.isFinite(result.max) && result.max >= 0) {
if (Number.isFinite(result.max) && result.max >= 0) {
result.max = Math.trunc(result.max)
} else if (typeof result.max !== 'function') {
result.max = defaultMax
}

if (typeof result.ban === 'number' && Number.isFinite(result.ban) && result.ban >= 0) {
if (Number.isFinite(result.ban) && result.ban >= 0) {
result.ban = Math.trunc(result.ban)
} else {
result.ban = -1
Expand Down