limitly 1.0.2 → 3.0.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.
Files changed (118) hide show
  1. package/README.md +471 -22
  2. package/dist/algorithms/concurrency.d.ts +11 -0
  3. package/dist/algorithms/concurrency.d.ts.map +1 -0
  4. package/dist/algorithms/concurrency.js +19 -0
  5. package/dist/algorithms/concurrency.js.map +1 -0
  6. package/dist/algorithms/factory.d.ts +3 -2
  7. package/dist/algorithms/factory.d.ts.map +1 -1
  8. package/dist/algorithms/factory.js +9 -3
  9. package/dist/algorithms/factory.js.map +1 -1
  10. package/dist/algorithms/gcra.d.ts +10 -0
  11. package/dist/algorithms/gcra.d.ts.map +1 -0
  12. package/dist/algorithms/gcra.js +15 -0
  13. package/dist/algorithms/gcra.js.map +1 -0
  14. package/dist/algorithms/sliding-window.d.ts +4 -4
  15. package/dist/algorithms/sliding-window.d.ts.map +1 -1
  16. package/dist/algorithms/sliding-window.js +3 -23
  17. package/dist/algorithms/sliding-window.js.map +1 -1
  18. package/dist/algorithms/token-bucket.d.ts +4 -4
  19. package/dist/algorithms/token-bucket.d.ts.map +1 -1
  20. package/dist/algorithms/token-bucket.js +3 -20
  21. package/dist/algorithms/token-bucket.js.map +1 -1
  22. package/dist/index.d.ts +19 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +46 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/limiter.d.ts +23 -7
  27. package/dist/limiter.d.ts.map +1 -1
  28. package/dist/limiter.js +86 -16
  29. package/dist/limiter.js.map +1 -1
  30. package/dist/middleware/bun.d.ts +9 -0
  31. package/dist/middleware/bun.d.ts.map +1 -0
  32. package/dist/middleware/bun.js +107 -0
  33. package/dist/middleware/bun.js.map +1 -0
  34. package/dist/middleware/express.d.ts.map +1 -1
  35. package/dist/middleware/express.js +30 -14
  36. package/dist/middleware/express.js.map +1 -1
  37. package/dist/middleware/fastify.d.ts +3 -3
  38. package/dist/middleware/fastify.d.ts.map +1 -1
  39. package/dist/middleware/fastify.js +34 -17
  40. package/dist/middleware/fastify.js.map +1 -1
  41. package/dist/middleware/hono.d.ts +5 -0
  42. package/dist/middleware/hono.d.ts.map +1 -0
  43. package/dist/middleware/hono.js +71 -0
  44. package/dist/middleware/hono.js.map +1 -0
  45. package/dist/middleware/koa.d.ts +5 -0
  46. package/dist/middleware/koa.d.ts.map +1 -0
  47. package/dist/middleware/koa.js +65 -0
  48. package/dist/middleware/koa.js.map +1 -0
  49. package/dist/middleware/nest.d.ts +14 -0
  50. package/dist/middleware/nest.d.ts.map +1 -0
  51. package/dist/middleware/nest.js +112 -0
  52. package/dist/middleware/nest.js.map +1 -0
  53. package/dist/observability/index.d.ts +4 -0
  54. package/dist/observability/index.d.ts.map +1 -0
  55. package/dist/observability/index.js +10 -0
  56. package/dist/observability/index.js.map +1 -0
  57. package/dist/observability/opentelemetry.d.ts +28 -0
  58. package/dist/observability/opentelemetry.d.ts.map +1 -0
  59. package/dist/observability/opentelemetry.js +85 -0
  60. package/dist/observability/opentelemetry.js.map +1 -0
  61. package/dist/observability/prometheus.d.ts +27 -0
  62. package/dist/observability/prometheus.d.ts.map +1 -0
  63. package/dist/observability/prometheus.js +88 -0
  64. package/dist/observability/prometheus.js.map +1 -0
  65. package/dist/observability/types.d.ts +9 -0
  66. package/dist/observability/types.d.ts.map +1 -0
  67. package/dist/observability/types.js +3 -0
  68. package/dist/observability/types.js.map +1 -0
  69. package/dist/prometheus.d.ts +3 -0
  70. package/dist/prometheus.d.ts.map +1 -0
  71. package/dist/prometheus.js +9 -0
  72. package/dist/prometheus.js.map +1 -0
  73. package/dist/scripts/concurrencyAcquire.lua +34 -0
  74. package/dist/scripts/concurrencyRelease.lua +9 -0
  75. package/dist/scripts/gcra.lua +38 -0
  76. package/dist/stores/factory.d.ts +5 -0
  77. package/dist/stores/factory.d.ts.map +1 -0
  78. package/dist/stores/factory.js +40 -0
  79. package/dist/stores/factory.js.map +1 -0
  80. package/dist/stores/memcached-store.d.ts +16 -0
  81. package/dist/stores/memcached-store.d.ts.map +1 -0
  82. package/dist/stores/memcached-store.js +211 -0
  83. package/dist/stores/memcached-store.js.map +1 -0
  84. package/dist/stores/redis-store.d.ts +19 -0
  85. package/dist/stores/redis-store.d.ts.map +1 -0
  86. package/dist/stores/redis-store.js +97 -0
  87. package/dist/stores/redis-store.js.map +1 -0
  88. package/dist/stores/types.d.ts +11 -0
  89. package/dist/stores/types.d.ts.map +1 -0
  90. package/dist/stores/types.js +3 -0
  91. package/dist/stores/types.js.map +1 -0
  92. package/dist/types/index.d.ts +94 -5
  93. package/dist/types/index.d.ts.map +1 -1
  94. package/dist/utils/defaults.d.ts +8 -0
  95. package/dist/utils/defaults.d.ts.map +1 -0
  96. package/dist/utils/defaults.js +100 -0
  97. package/dist/utils/defaults.js.map +1 -0
  98. package/dist/utils/limit-execution.d.ts +40 -0
  99. package/dist/utils/limit-execution.d.ts.map +1 -0
  100. package/dist/utils/limit-execution.js +50 -0
  101. package/dist/utils/limit-execution.js.map +1 -0
  102. package/dist/utils/memcached.d.ts +12 -0
  103. package/dist/utils/memcached.d.ts.map +1 -0
  104. package/dist/utils/memcached.js +103 -0
  105. package/dist/utils/memcached.js.map +1 -0
  106. package/dist/utils/metrics.d.ts +21 -0
  107. package/dist/utils/metrics.d.ts.map +1 -0
  108. package/dist/utils/metrics.js +99 -0
  109. package/dist/utils/metrics.js.map +1 -0
  110. package/dist/utils/redis.d.ts +5 -1
  111. package/dist/utils/redis.d.ts.map +1 -1
  112. package/dist/utils/redis.js +38 -3
  113. package/dist/utils/redis.js.map +1 -1
  114. package/dist/utils/scripts.d.ts +16 -2
  115. package/dist/utils/scripts.d.ts.map +1 -1
  116. package/dist/utils/scripts.js +79 -33
  117. package/dist/utils/scripts.js.map +1 -1
  118. package/package.json +86 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "limitly",
3
- "version": "1.0.2",
3
+ "version": "3.0.0",
4
4
  "description": "Express-rate-limit, but distributed, Redis-powered, and production ready.",
5
5
  "author": "Arpan Das <dasarpan471@gmail.com>",
6
6
  "license": "MIT",
@@ -30,6 +30,36 @@
30
30
  "types": "./dist/middleware/fastify.d.ts",
31
31
  "import": "./dist/middleware/fastify.js",
32
32
  "require": "./dist/middleware/fastify.js"
33
+ },
34
+ "./nest": {
35
+ "types": "./dist/middleware/nest.d.ts",
36
+ "import": "./dist/middleware/nest.js",
37
+ "require": "./dist/middleware/nest.js"
38
+ },
39
+ "./hono": {
40
+ "types": "./dist/middleware/hono.d.ts",
41
+ "import": "./dist/middleware/hono.js",
42
+ "require": "./dist/middleware/hono.js"
43
+ },
44
+ "./koa": {
45
+ "types": "./dist/middleware/koa.d.ts",
46
+ "import": "./dist/middleware/koa.js",
47
+ "require": "./dist/middleware/koa.js"
48
+ },
49
+ "./bun": {
50
+ "types": "./dist/middleware/bun.d.ts",
51
+ "import": "./dist/middleware/bun.js",
52
+ "require": "./dist/middleware/bun.js"
53
+ },
54
+ "./otel": {
55
+ "types": "./dist/observability/index.d.ts",
56
+ "import": "./dist/observability/index.js",
57
+ "require": "./dist/observability/index.js"
58
+ },
59
+ "./prometheus": {
60
+ "types": "./dist/prometheus.d.ts",
61
+ "import": "./dist/prometheus.js",
62
+ "require": "./dist/prometheus.js"
33
63
  }
34
64
  },
35
65
  "files": [
@@ -55,35 +85,88 @@
55
85
  "redis",
56
86
  "express",
57
87
  "fastify",
88
+ "hono",
89
+ "koa",
90
+ "bun",
91
+ "nestjs",
92
+ "nest",
58
93
  "sliding-window",
59
94
  "token-bucket",
60
95
  "distributed",
61
96
  "middleware",
62
- "ioredis"
97
+ "ioredis",
98
+ "valkey",
99
+ "dragonfly",
100
+ "dragonflydb",
101
+ "memcached",
102
+ "opentelemetry",
103
+ "otel",
104
+ "observability",
105
+ "tracing",
106
+ "metrics",
107
+ "prometheus"
63
108
  ],
64
109
  "publishConfig": {
65
110
  "access": "public",
66
111
  "registry": "https://registry.npmjs.org/"
67
112
  },
68
113
  "peerDependencies": {
114
+ "@nestjs/common": ">=9.0.0",
115
+ "@nestjs/core": ">=9.0.0",
69
116
  "express": ">=4.0.0",
70
117
  "fastify": ">=4.0.0",
71
- "ioredis": ">=5.0.0"
118
+ "hono": ">=4.0.0",
119
+ "ioredis": ">=5.0.0",
120
+ "koa": ">=2.14.0",
121
+ "memcached": ">=2.2.0",
122
+ "@opentelemetry/api": ">=1.4.0",
123
+ "prom-client": ">=15.0.0"
72
124
  },
73
125
  "peerDependenciesMeta": {
126
+ "@nestjs/common": {
127
+ "optional": true
128
+ },
129
+ "@nestjs/core": {
130
+ "optional": true
131
+ },
74
132
  "express": {
75
133
  "optional": true
76
134
  },
77
135
  "fastify": {
78
136
  "optional": true
137
+ },
138
+ "hono": {
139
+ "optional": true
140
+ },
141
+ "koa": {
142
+ "optional": true
143
+ },
144
+ "memcached": {
145
+ "optional": true
146
+ },
147
+ "@opentelemetry/api": {
148
+ "optional": true
149
+ },
150
+ "prom-client": {
151
+ "optional": true
79
152
  }
80
153
  },
81
154
  "devDependencies": {
155
+ "@opentelemetry/api": "^1.9.0",
156
+ "prom-client": "^15.1.3",
157
+ "@nestjs/common": "^10.4.0",
158
+ "@nestjs/core": "^10.4.0",
159
+ "@nestjs/testing": "^10.4.0",
82
160
  "@types/express": "^4.17.21",
161
+ "@types/koa": "^2.15.0",
162
+ "@types/memcached": "^2.2.10",
83
163
  "@types/node": "^20.14.0",
84
164
  "express": "^4.19.2",
85
165
  "fastify": "^4.28.0",
166
+ "hono": "^4.6.0",
86
167
  "ioredis": "^5.4.1",
168
+ "koa": "^2.15.0",
169
+ "memcached": "^2.2.2",
87
170
  "typescript": "^5.5.0",
88
171
  "vitest": "^1.6.0"
89
172
  },