mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-17 13:20:41 -07:00
feat: DoS prevention, #250
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
import { assert } from './assert'
|
||||
|
||||
export class Limiter {
|
||||
private message: string
|
||||
private base = 0
|
||||
private limit: number
|
||||
constructor (resource: string, limit: number) {
|
||||
this.message = `${resource} limit exceeded`
|
||||
this.limit = limit
|
||||
}
|
||||
use (count: number) {
|
||||
assert(this.base + count <= this.limit, this.message)
|
||||
this.base += count
|
||||
}
|
||||
check (count: number) {
|
||||
assert(count <= this.limit, this.message)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user