token-bucket.ts 1.0.1 → 1.1.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/README.md CHANGED
@@ -85,6 +85,10 @@ bucket.prune()
85
85
  | `prune()` | Remove fully-recovered buckets. Returns number removed. Only works when `initial >= capacity` |
86
86
  | `size` | Get number of tracked buckets |
87
87
 
88
+ ### Key Type
89
+
90
+ Keys can be `string` or `number`. Numbers are converted to strings internally, so `123` and `'123'` refer to the same bucket.
91
+
88
92
  ### Return Value
89
93
 
90
94
  ```typescript
package/dist/index.d.ts CHANGED
@@ -24,9 +24,9 @@ export declare class TokenBucket {
24
24
  private refill_bucket;
25
25
  private calc_token_wait_time;
26
26
  private calc_cooldown_wait_time;
27
- check(key: string, amount?: number): TokenBucketResult;
28
- consume(key: string, amount?: number): TokenBucketResult;
29
- reset(key: string): void;
27
+ check(key: string | number, amount?: number): TokenBucketResult;
28
+ consume(key: string | number, amount?: number): TokenBucketResult;
29
+ reset(key: string | number): void;
30
30
  reset_all(): void;
31
31
  get size(): number;
32
32
  /**
package/dist/index.js CHANGED
@@ -50,6 +50,7 @@ class TokenBucket {
50
50
  return this.cooldown - elapsed;
51
51
  }
52
52
  check(key, amount = 1) {
53
+ key = String(key);
53
54
  if (Number.isNaN(amount)) {
54
55
  throw new Error('amount must be a number');
55
56
  }
@@ -68,6 +69,7 @@ class TokenBucket {
68
69
  };
69
70
  }
70
71
  consume(key, amount = 1) {
72
+ key = String(key);
71
73
  if (Number.isNaN(amount)) {
72
74
  throw new Error('amount must be a number');
73
75
  }
@@ -89,7 +91,7 @@ class TokenBucket {
89
91
  return { wait_time };
90
92
  }
91
93
  reset(key) {
92
- this.buckets.delete(key);
94
+ this.buckets.delete(String(key));
93
95
  }
94
96
  reset_all() {
95
97
  this.buckets.clear();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "token-bucket.ts",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "type": "commonjs",
5
5
  "description": "A simple, lightweight token bucket rate limiter for TypeScript/JavaScript.",
6
6
  "keywords": [