@thirdweb-dev/service-utils 0.9.4 → 0.9.5

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 (34) hide show
  1. package/dist/cjs/core/api.js.map +1 -1
  2. package/dist/cjs/core/rateLimit/index.js +16 -37
  3. package/dist/cjs/core/rateLimit/index.js.map +1 -1
  4. package/dist/cjs/core/rateLimit/strategies/shared.js +3 -0
  5. package/dist/cjs/core/rateLimit/strategies/shared.js.map +1 -0
  6. package/dist/cjs/core/rateLimit/strategies/sliding-window.js +51 -0
  7. package/dist/cjs/core/rateLimit/strategies/sliding-window.js.map +1 -0
  8. package/dist/cjs/index.js +5 -1
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/mocks.js +5 -0
  11. package/dist/cjs/mocks.js.map +1 -1
  12. package/dist/esm/core/api.js.map +1 -1
  13. package/dist/esm/core/rateLimit/index.js +16 -37
  14. package/dist/esm/core/rateLimit/index.js.map +1 -1
  15. package/dist/esm/core/rateLimit/strategies/shared.js +2 -0
  16. package/dist/esm/core/rateLimit/strategies/shared.js.map +1 -0
  17. package/dist/esm/core/rateLimit/strategies/sliding-window.js +48 -0
  18. package/dist/esm/core/rateLimit/strategies/sliding-window.js.map +1 -0
  19. package/dist/esm/index.js +2 -0
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/mocks.js +5 -0
  22. package/dist/esm/mocks.js.map +1 -1
  23. package/dist/types/core/api.d.ts +5 -0
  24. package/dist/types/core/api.d.ts.map +1 -1
  25. package/dist/types/core/rateLimit/index.d.ts +1 -6
  26. package/dist/types/core/rateLimit/index.d.ts.map +1 -1
  27. package/dist/types/core/rateLimit/strategies/shared.d.ts +11 -0
  28. package/dist/types/core/rateLimit/strategies/shared.d.ts.map +1 -0
  29. package/dist/types/core/rateLimit/strategies/sliding-window.d.ts +19 -0
  30. package/dist/types/core/rateLimit/strategies/sliding-window.d.ts.map +1 -0
  31. package/dist/types/index.d.ts +2 -0
  32. package/dist/types/index.d.ts.map +1 -1
  33. package/dist/types/mocks.d.ts.map +1 -1
  34. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":";;AAiOA,kDAqDC;AArDM,KAAK,UAAU,mBAAmB,CACvC,QAA4B,EAC5B,MAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,QAAQ,CAAC;IAE7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1C,IAAI,KAA0B,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,mFAAmF;oBACnF,uFAAuF;oBACvF,mBAAmB,EAAE,qBAAqB;wBACxC,CAAC,CAAC,qBAAqB;wBACvB,CAAC,CAAC,aAAa;oBACjB,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,qGAAqG;YAErG,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,yCAAyC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,KAAK,GAAG,GAAG,CAAC;YACZ,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;gBACvB,0DAA0D;gBAC1D,MAAM,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,KAAK,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,GAAW;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":";;AAsOA,kDAqDC;AArDM,KAAK,UAAU,mBAAmB,CACvC,QAA4B,EAC5B,MAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,QAAQ,CAAC;IAE7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1C,IAAI,KAA0B,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,mFAAmF;oBACnF,uFAAuF;oBACvF,mBAAmB,EAAE,qBAAqB;wBACxC,CAAC,CAAC,qBAAqB;wBACvB,CAAC,CAAC,aAAa;oBACjB,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,qGAAqG;YAErG,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,yCAAyC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,KAAK,GAAG,GAAG,CAAC;YACZ,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;gBACvB,0DAA0D;gBAC1D,MAAM,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,KAAK,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,GAAW;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CACvD,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rateLimit = rateLimit;
4
+ const sliding_window_js_1 = require("./strategies/sliding-window.js");
4
5
  const SLIDING_WINDOW_SECONDS = 10;
5
6
  /**
6
7
  * Increments the request count for this team and returns whether the team has hit their rate limit.
@@ -11,51 +12,29 @@ const SLIDING_WINDOW_SECONDS = 10;
11
12
  async function rateLimit(args) {
12
13
  const { team, limitPerSecond, serviceConfig, redis, increment = 1 } = args;
13
14
  const { serviceScope } = serviceConfig;
14
- if (limitPerSecond === 0) {
15
- // No rate limit is provided. Assume the request is not rate limited.
16
- return {
17
- rateLimited: false,
18
- requestCount: 0,
19
- rateLimit: 0,
20
- };
21
- }
22
- // Enforce rate limit: sum the total requests in the last `SLIDING_WINDOW_SECONDS` seconds.
23
- const currentSecond = Math.floor(Date.now() / 1000);
24
- const keys = Array.from({ length: SLIDING_WINDOW_SECONDS }, (_, i) => getRequestCountAtSecondCacheKey(serviceScope, team.id, currentSecond - i));
25
- const counts = await redis.mget(keys);
26
- const totalCount = counts.reduce((sum, count) => sum + (count ? Number.parseInt(count) : 0), 0);
27
- const limitPerWindow = limitPerSecond * SLIDING_WINDOW_SECONDS;
28
- if (totalCount > limitPerWindow) {
15
+ const rateLimitResult = await (0, sliding_window_js_1.rateLimitSlidingWindow)({
16
+ redis,
17
+ limitPerSecond,
18
+ key: `rate-limit:${serviceScope}:${team.id}`,
19
+ increment,
20
+ windowSeconds: SLIDING_WINDOW_SECONDS,
21
+ });
22
+ // if the request is rate limited, return the rate limit result.
23
+ if (rateLimitResult.rateLimited) {
29
24
  return {
30
25
  rateLimited: true,
31
- requestCount: totalCount,
32
- rateLimit: limitPerWindow,
26
+ requestCount: rateLimitResult.requestCount,
27
+ rateLimit: rateLimitResult.rateLimit,
33
28
  status: 429,
34
- errorMessage: `You've exceeded your ${serviceScope} rate limit at ${limitPerSecond} reqs/sec. Please upgrade your plan to get higher rate limits.`,
29
+ errorMessage: `You've exceeded your ${serviceScope} rate limit at ${limitPerSecond} requests per second. Please upgrade your plan to increase your limits: https://thirdweb.com/team/${team.slug}/~/settings/billing`,
35
30
  errorCode: "RATE_LIMIT_EXCEEDED",
36
31
  };
37
32
  }
38
- // Non-blocking: increment the request count for the current second.
39
- (async () => {
40
- try {
41
- const key = getRequestCountAtSecondCacheKey(serviceScope, team.id, currentSecond);
42
- await redis.incrby(key, increment);
43
- // If this is the first time setting this key, expire it after the sliding window is past.
44
- if (counts[0] === null) {
45
- await redis.expire(key, SLIDING_WINDOW_SECONDS + 1);
46
- }
47
- }
48
- catch (error) {
49
- console.error("Error updating rate limit key:", error);
50
- }
51
- })();
33
+ // otherwise, the request is not rate limited.
52
34
  return {
53
35
  rateLimited: false,
54
- requestCount: totalCount + increment,
55
- rateLimit: limitPerWindow,
36
+ requestCount: rateLimitResult.requestCount,
37
+ rateLimit: rateLimitResult.rateLimit,
56
38
  };
57
39
  }
58
- function getRequestCountAtSecondCacheKey(serviceScope, teamId, second) {
59
- return `rate-limit:${serviceScope}:${teamId}:${second}`;
60
- }
61
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":";;AAkBA,8BAsEC;AArFD,MAAM,sBAAsB,GAAG,EAAE,CAAC;AASlC;;;;;GAKG;AACI,KAAK,UAAU,SAAS,CAAC,IAU/B;IACC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAC3E,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;IAEvC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,qEAAqE;QACrE,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,2FAA2F;IAC3F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnE,+BAA+B,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,GAAG,CAAC,CAAC,CAC1E,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAC9B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1D,CAAC,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,cAAc,GAAG,sBAAsB,CAAC;IAE/D,IAAI,UAAU,GAAG,cAAc,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,wBAAwB,YAAY,kBAAkB,cAAc,gEAAgE;YAClJ,SAAS,EAAE,qBAAqB;SACjC,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,CAAC,KAAK,IAAI,EAAE;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,+BAA+B,CACzC,YAAY,EACZ,IAAI,CAAC,EAAE,EACP,aAAa,CACd,CAAC;YACF,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACnC,0FAA0F;YAC1F,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,UAAU,GAAG,SAAS;QACpC,SAAS,EAAE,cAAc;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,YAA+C,EAC/C,MAAc,EACd,MAAc;IAEd,OAAO,cAAc,YAAY,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":";;AAaA,8BAuCC;AAlDD,sEAAwE;AAGxE,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;;GAKG;AACI,KAAK,UAAU,SAAS,CAAC,IAU/B;IACC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAC3E,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;IAEvC,MAAM,eAAe,GAAG,MAAM,IAAA,0CAAsB,EAAC;QACnD,KAAK;QACL,cAAc;QACd,GAAG,EAAE,cAAc,YAAY,IAAI,IAAI,CAAC,EAAE,EAAE;QAC5C,SAAS;QACT,aAAa,EAAE,sBAAsB;KACtC,CAAC,CAAC;IAEH,gEAAgE;IAChE,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,eAAe,CAAC,YAAY;YAC1C,SAAS,EAAE,eAAe,CAAC,SAAS;YACpC,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,wBAAwB,YAAY,kBAAkB,cAAc,qGAAqG,IAAI,CAAC,IAAI,qBAAqB;YACrN,SAAS,EAAE,qBAAqB;SACjC,CAAC;IACJ,CAAC;IACD,8CAA8C;IAC9C,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,SAAS,EAAE,eAAe,CAAC,SAAS;KACrC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/core/rateLimit/strategies/shared.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rateLimitSlidingWindow = rateLimitSlidingWindow;
4
+ async function rateLimitSlidingWindow(options) {
5
+ const WINDOW_SIZE = options.windowSeconds || 10;
6
+ const INCREMENT_BY = options.increment || 1;
7
+ // No rate limit is provided. Assume the request is not rate limited.
8
+ if (options.limitPerSecond <= 0) {
9
+ return {
10
+ rateLimited: false,
11
+ requestCount: INCREMENT_BY,
12
+ rateLimit: 0,
13
+ };
14
+ }
15
+ // Enforce rate limit: sum the total requests in the last `SLIDING_WINDOW_SECONDS` seconds.
16
+ const currentSecond = Math.floor(Date.now() / 1000);
17
+ const keys = Array.from({ length: WINDOW_SIZE }, (_, i) => getRequestCountAtSecondCacheKey(options.key, currentSecond - i));
18
+ const counts = await options.redis.mget(keys);
19
+ const totalCount = counts.reduce((sum, count) => sum + (count ? Number.parseInt(count) : 0), 0);
20
+ const limitPerWindow = options.limitPerSecond * WINDOW_SIZE;
21
+ if (totalCount > limitPerWindow) {
22
+ return {
23
+ rateLimited: true,
24
+ requestCount: totalCount,
25
+ rateLimit: limitPerWindow,
26
+ };
27
+ }
28
+ // Non-blocking: increment the request count for the current second.
29
+ (async () => {
30
+ try {
31
+ const incrKey = getRequestCountAtSecondCacheKey(options.key, currentSecond);
32
+ await options.redis.incrby(incrKey, INCREMENT_BY);
33
+ // If this is the first time setting this key, expire it after the sliding window is past.
34
+ if (counts[0] === null) {
35
+ await options.redis.expire(incrKey, WINDOW_SIZE + 1);
36
+ }
37
+ }
38
+ catch (error) {
39
+ console.error("Error updating rate limit key:", error);
40
+ }
41
+ })();
42
+ return {
43
+ rateLimited: false,
44
+ requestCount: totalCount + INCREMENT_BY,
45
+ rateLimit: limitPerWindow,
46
+ };
47
+ }
48
+ function getRequestCountAtSecondCacheKey(key, second) {
49
+ return `${key}:s_${second}`;
50
+ }
51
+ //# sourceMappingURL=sliding-window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sliding-window.js","sourceRoot":"","sources":["../../../../../src/core/rateLimit/strategies/sliding-window.ts"],"names":[],"mappings":";;AAkBA,wDA0DC;AA1DM,KAAK,UAAU,sBAAsB,CAC1C,OAAsC;IAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IAE5C,qEAAqE;IACrE,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,YAAY;YAC1B,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,2FAA2F;IAC3F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxD,+BAA+B,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAC9B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1D,CAAC,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC;IAE5D,IAAI,UAAU,GAAG,cAAc,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,cAAc;SAC1B,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,CAAC,KAAK,IAAI,EAAE;QACV,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,+BAA+B,CAC7C,OAAO,CAAC,GAAG,EACX,aAAa,CACd,CAAC;YACF,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAClD,0FAA0F;YAC1F,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,UAAU,GAAG,YAAY;QACvC,SAAS,EAAE,cAAc;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CAAC,GAAW,EAAE,MAAc;IAClE,OAAO,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;AAC9B,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.authorizeDomain = exports.authorizeBundleId = exports.fetchTeamAndProject = void 0;
3
+ exports.rateLimit = exports.rateLimitSlidingWindow = exports.authorizeDomain = exports.authorizeBundleId = exports.fetchTeamAndProject = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  // Exports the public service definitions.
6
6
  tslib_1.__exportStar(require("./core/services.js"), exports);
@@ -9,4 +9,8 @@ Object.defineProperty(exports, "fetchTeamAndProject", { enumerable: true, get: f
9
9
  var client_js_1 = require("./core/authorize/client.js");
10
10
  Object.defineProperty(exports, "authorizeBundleId", { enumerable: true, get: function () { return client_js_1.authorizeBundleId; } });
11
11
  Object.defineProperty(exports, "authorizeDomain", { enumerable: true, get: function () { return client_js_1.authorizeDomain; } });
12
+ var sliding_window_js_1 = require("./core/rateLimit/strategies/sliding-window.js");
13
+ Object.defineProperty(exports, "rateLimitSlidingWindow", { enumerable: true, get: function () { return sliding_window_js_1.rateLimitSlidingWindow; } });
14
+ var index_js_1 = require("./core/rateLimit/index.js");
15
+ Object.defineProperty(exports, "rateLimit", { enumerable: true, get: function () { return index_js_1.rateLimit; } });
12
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,0CAA0C;AAC1C,6DAAmC;AAenC,wCAAoD;AAA3C,6GAAA,mBAAmB,OAAA;AAE5B,wDAGoC;AAFlC,8GAAA,iBAAiB,OAAA;AACjB,4GAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,0CAA0C;AAC1C,6DAAmC;AAenC,wCAAoD;AAA3C,6GAAA,mBAAmB,OAAA;AAE5B,wDAGoC;AAFlC,8GAAA,iBAAiB,OAAA;AACjB,4GAAA,eAAe,OAAA;AAGjB,mFAAuF;AAA9E,2HAAA,sBAAsB,OAAA;AAC/B,sDAAsD;AAA7C,qGAAA,SAAS,OAAA"}
package/dist/cjs/mocks.js CHANGED
@@ -87,6 +87,11 @@ exports.validTeamResponse = {
87
87
  customAuth: true,
88
88
  customBranding: true,
89
89
  },
90
+ engineCloud: {
91
+ enabled: true,
92
+ mainnetEnabled: true,
93
+ rateLimit: 100,
94
+ },
90
95
  },
91
96
  };
92
97
  exports.validTeamAndProjectResponse = {
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../src/mocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../src/mocks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":"AAiOA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAA4B,EAC5B,MAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,QAAQ,CAAC;IAE7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1C,IAAI,KAA0B,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,mFAAmF;oBACnF,uFAAuF;oBACvF,mBAAmB,EAAE,qBAAqB;wBACxC,CAAC,CAAC,qBAAqB;wBACvB,CAAC,CAAC,aAAa;oBACjB,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,qGAAqG;YAErG,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,yCAAyC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,KAAK,GAAG,GAAG,CAAC;YACZ,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;gBACvB,0DAA0D;gBAC1D,MAAM,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,KAAK,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,GAAW;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":"AAsOA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAA4B,EAC5B,MAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,QAAQ,CAAC;IAE7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IAC1C,IAAI,KAA0B,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,mFAAmF;oBACnF,uFAAuF;oBACvF,mBAAmB,EAAE,qBAAqB;wBACxC,CAAC,CAAC,qBAAqB;wBACvB,CAAC,CAAC,aAAa;oBACjB,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,qGAAqG;YAErG,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,yCAAyC,QAAQ,CAAC,MAAM,MAAM,IAAI,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,KAAK,GAAG,GAAG,CAAC;YACZ,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;gBACvB,0DAA0D;gBAC1D,MAAM,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,KAAK,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,GAAW;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CACvD,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { rateLimitSlidingWindow } from "./strategies/sliding-window.js";
1
2
  const SLIDING_WINDOW_SECONDS = 10;
2
3
  /**
3
4
  * Increments the request count for this team and returns whether the team has hit their rate limit.
@@ -8,51 +9,29 @@ const SLIDING_WINDOW_SECONDS = 10;
8
9
  export async function rateLimit(args) {
9
10
  const { team, limitPerSecond, serviceConfig, redis, increment = 1 } = args;
10
11
  const { serviceScope } = serviceConfig;
11
- if (limitPerSecond === 0) {
12
- // No rate limit is provided. Assume the request is not rate limited.
13
- return {
14
- rateLimited: false,
15
- requestCount: 0,
16
- rateLimit: 0,
17
- };
18
- }
19
- // Enforce rate limit: sum the total requests in the last `SLIDING_WINDOW_SECONDS` seconds.
20
- const currentSecond = Math.floor(Date.now() / 1000);
21
- const keys = Array.from({ length: SLIDING_WINDOW_SECONDS }, (_, i) => getRequestCountAtSecondCacheKey(serviceScope, team.id, currentSecond - i));
22
- const counts = await redis.mget(keys);
23
- const totalCount = counts.reduce((sum, count) => sum + (count ? Number.parseInt(count) : 0), 0);
24
- const limitPerWindow = limitPerSecond * SLIDING_WINDOW_SECONDS;
25
- if (totalCount > limitPerWindow) {
12
+ const rateLimitResult = await rateLimitSlidingWindow({
13
+ redis,
14
+ limitPerSecond,
15
+ key: `rate-limit:${serviceScope}:${team.id}`,
16
+ increment,
17
+ windowSeconds: SLIDING_WINDOW_SECONDS,
18
+ });
19
+ // if the request is rate limited, return the rate limit result.
20
+ if (rateLimitResult.rateLimited) {
26
21
  return {
27
22
  rateLimited: true,
28
- requestCount: totalCount,
29
- rateLimit: limitPerWindow,
23
+ requestCount: rateLimitResult.requestCount,
24
+ rateLimit: rateLimitResult.rateLimit,
30
25
  status: 429,
31
- errorMessage: `You've exceeded your ${serviceScope} rate limit at ${limitPerSecond} reqs/sec. Please upgrade your plan to get higher rate limits.`,
26
+ errorMessage: `You've exceeded your ${serviceScope} rate limit at ${limitPerSecond} requests per second. Please upgrade your plan to increase your limits: https://thirdweb.com/team/${team.slug}/~/settings/billing`,
32
27
  errorCode: "RATE_LIMIT_EXCEEDED",
33
28
  };
34
29
  }
35
- // Non-blocking: increment the request count for the current second.
36
- (async () => {
37
- try {
38
- const key = getRequestCountAtSecondCacheKey(serviceScope, team.id, currentSecond);
39
- await redis.incrby(key, increment);
40
- // If this is the first time setting this key, expire it after the sliding window is past.
41
- if (counts[0] === null) {
42
- await redis.expire(key, SLIDING_WINDOW_SECONDS + 1);
43
- }
44
- }
45
- catch (error) {
46
- console.error("Error updating rate limit key:", error);
47
- }
48
- })();
30
+ // otherwise, the request is not rate limited.
49
31
  return {
50
32
  rateLimited: false,
51
- requestCount: totalCount + increment,
52
- rateLimit: limitPerWindow,
33
+ requestCount: rateLimitResult.requestCount,
34
+ rateLimit: rateLimitResult.rateLimit,
53
35
  };
54
36
  }
55
- function getRequestCountAtSecondCacheKey(serviceScope, teamId, second) {
56
- return `rate-limit:${serviceScope}:${teamId}:${second}`;
57
- }
58
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":"AAGA,MAAM,sBAAsB,GAAG,EAAE,CAAC;AASlC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAU/B;IACC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAC3E,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;IAEvC,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,qEAAqE;QACrE,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,2FAA2F;IAC3F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnE,+BAA+B,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,GAAG,CAAC,CAAC,CAC1E,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAC9B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1D,CAAC,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,cAAc,GAAG,sBAAsB,CAAC;IAE/D,IAAI,UAAU,GAAG,cAAc,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,wBAAwB,YAAY,kBAAkB,cAAc,gEAAgE;YAClJ,SAAS,EAAE,qBAAqB;SACjC,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,CAAC,KAAK,IAAI,EAAE;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,+BAA+B,CACzC,YAAY,EACZ,IAAI,CAAC,EAAE,EACP,aAAa,CACd,CAAC;YACF,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACnC,0FAA0F;YAC1F,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,UAAU,GAAG,SAAS;QACpC,SAAS,EAAE,cAAc;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,YAA+C,EAC/C,MAAc,EACd,MAAc;IAEd,OAAO,cAAc,YAAY,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAU/B;IACC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAC3E,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;IAEvC,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAAC;QACnD,KAAK;QACL,cAAc;QACd,GAAG,EAAE,cAAc,YAAY,IAAI,IAAI,CAAC,EAAE,EAAE;QAC5C,SAAS;QACT,aAAa,EAAE,sBAAsB;KACtC,CAAC,CAAC;IAEH,gEAAgE;IAChE,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,eAAe,CAAC,YAAY;YAC1C,SAAS,EAAE,eAAe,CAAC,SAAS;YACpC,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,wBAAwB,YAAY,kBAAkB,cAAc,qGAAqG,IAAI,CAAC,IAAI,qBAAqB;YACrN,SAAS,EAAE,qBAAqB;SACjC,CAAC;IACJ,CAAC;IACD,8CAA8C;IAC9C,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,SAAS,EAAE,eAAe,CAAC,SAAS;KACrC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../src/core/rateLimit/strategies/shared.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ export async function rateLimitSlidingWindow(options) {
2
+ const WINDOW_SIZE = options.windowSeconds || 10;
3
+ const INCREMENT_BY = options.increment || 1;
4
+ // No rate limit is provided. Assume the request is not rate limited.
5
+ if (options.limitPerSecond <= 0) {
6
+ return {
7
+ rateLimited: false,
8
+ requestCount: INCREMENT_BY,
9
+ rateLimit: 0,
10
+ };
11
+ }
12
+ // Enforce rate limit: sum the total requests in the last `SLIDING_WINDOW_SECONDS` seconds.
13
+ const currentSecond = Math.floor(Date.now() / 1000);
14
+ const keys = Array.from({ length: WINDOW_SIZE }, (_, i) => getRequestCountAtSecondCacheKey(options.key, currentSecond - i));
15
+ const counts = await options.redis.mget(keys);
16
+ const totalCount = counts.reduce((sum, count) => sum + (count ? Number.parseInt(count) : 0), 0);
17
+ const limitPerWindow = options.limitPerSecond * WINDOW_SIZE;
18
+ if (totalCount > limitPerWindow) {
19
+ return {
20
+ rateLimited: true,
21
+ requestCount: totalCount,
22
+ rateLimit: limitPerWindow,
23
+ };
24
+ }
25
+ // Non-blocking: increment the request count for the current second.
26
+ (async () => {
27
+ try {
28
+ const incrKey = getRequestCountAtSecondCacheKey(options.key, currentSecond);
29
+ await options.redis.incrby(incrKey, INCREMENT_BY);
30
+ // If this is the first time setting this key, expire it after the sliding window is past.
31
+ if (counts[0] === null) {
32
+ await options.redis.expire(incrKey, WINDOW_SIZE + 1);
33
+ }
34
+ }
35
+ catch (error) {
36
+ console.error("Error updating rate limit key:", error);
37
+ }
38
+ })();
39
+ return {
40
+ rateLimited: false,
41
+ requestCount: totalCount + INCREMENT_BY,
42
+ rateLimit: limitPerWindow,
43
+ };
44
+ }
45
+ function getRequestCountAtSecondCacheKey(key, second) {
46
+ return `${key}:s_${second}`;
47
+ }
48
+ //# sourceMappingURL=sliding-window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sliding-window.js","sourceRoot":"","sources":["../../../../../src/core/rateLimit/strategies/sliding-window.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAsC;IAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IAE5C,qEAAqE;IACrE,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,YAAY;YAC1B,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,2FAA2F;IAC3F,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxD,+BAA+B,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAC9B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1D,CAAC,CACF,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC;IAE5D,IAAI,UAAU,GAAG,cAAc,EAAE,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE,cAAc;SAC1B,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,CAAC,KAAK,IAAI,EAAE;QACV,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,+BAA+B,CAC7C,OAAO,CAAC,GAAG,EACX,aAAa,CACd,CAAC;YACF,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAClD,0FAA0F;YAC1F,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,UAAU,GAAG,YAAY;QACvC,SAAS,EAAE,cAAc;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CAAC,GAAW,EAAE,MAAc;IAClE,OAAO,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;AAC9B,CAAC"}
package/dist/esm/index.js CHANGED
@@ -2,4 +2,6 @@
2
2
  export * from "./core/services.js";
3
3
  export { fetchTeamAndProject } from "./core/api.js";
4
4
  export { authorizeBundleId, authorizeDomain, } from "./core/authorize/client.js";
5
+ export { rateLimitSlidingWindow } from "./core/rateLimit/strategies/sliding-window.js";
6
+ export { rateLimit } from "./core/rateLimit/index.js";
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,cAAc,oBAAoB,CAAC;AAenC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,cAAc,oBAAoB,CAAC;AAenC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/esm/mocks.js CHANGED
@@ -84,6 +84,11 @@ export const validTeamResponse = {
84
84
  customAuth: true,
85
85
  customBranding: true,
86
86
  },
87
+ engineCloud: {
88
+ enabled: true,
89
+ mainnetEnabled: true,
90
+ rateLimit: 100,
91
+ },
87
92
  },
88
93
  };
89
94
  export const validTeamAndProjectResponse = {
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../src/mocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../src/mocks.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,11 @@ type TeamCapabilities = {
72
72
  customAuth: boolean;
73
73
  customBranding: boolean;
74
74
  };
75
+ engineCloud: {
76
+ enabled: boolean;
77
+ mainnetEnabled: boolean;
78
+ rateLimit: number;
79
+ };
75
80
  };
76
81
  type TeamPlan = "free" | "starter" | "starter_legacy" | "growth_legacy" | "growth" | "accelerate" | "scale" | "pro";
77
82
  export type TeamResponse = {
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,6 @@
1
1
  import type { CoreServiceConfig, TeamResponse } from "../api.js";
2
+ import type { IRedis } from "./strategies/shared.js";
2
3
  import type { RateLimitResult } from "./types.js";
3
- type IRedis = {
4
- incrby(key: string, value: number): Promise<number>;
5
- mget(keys: string[]): Promise<(string | null)[]>;
6
- expire(key: string, seconds: number): Promise<number>;
7
- };
8
4
  /**
9
5
  * Increments the request count for this team and returns whether the team has hit their rate limit.
10
6
  * Uses a sliding 10 second window.
@@ -22,5 +18,4 @@ export declare function rateLimit(args: {
22
18
  */
23
19
  increment?: number;
24
20
  }): Promise<RateLimitResult>;
25
- export {};
26
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,KAAK,MAAM,GAAG;IACZ,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,iBAAiB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,CAAC,CA4D3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,iBAAiB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6B3B"}
@@ -0,0 +1,11 @@
1
+ export type IRedis = {
2
+ incrby(key: string, value: number): Promise<number>;
3
+ mget(keys: string[]): Promise<(string | null)[]>;
4
+ expire(key: string, seconds: number): Promise<number>;
5
+ };
6
+ export type CoreRateLimitResult = {
7
+ rateLimited: boolean;
8
+ requestCount: number;
9
+ rateLimit: number;
10
+ };
11
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../../src/core/rateLimit/strategies/shared.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { CoreRateLimitResult, IRedis } from "./shared.js";
2
+ type RateLimitSlidingWindowOptions = {
3
+ redis: IRedis;
4
+ limitPerSecond: number;
5
+ key: string;
6
+ /**
7
+ * The number of requests to increment by.
8
+ * @default 1
9
+ */
10
+ increment?: number;
11
+ /**
12
+ * The number of seconds to look back for the sliding window.
13
+ * @default 10
14
+ */
15
+ windowSeconds?: number;
16
+ };
17
+ export declare function rateLimitSlidingWindow(options: RateLimitSlidingWindowOptions): Promise<CoreRateLimitResult>;
18
+ export {};
19
+ //# sourceMappingURL=sliding-window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sliding-window.d.ts","sourceRoot":"","sources":["../../../../../src/core/rateLimit/strategies/sliding-window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/D,KAAK,6BAA6B,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAwD9B"}
@@ -2,4 +2,6 @@ export * from "./core/services.js";
2
2
  export type { ApiResponse, CoreServiceConfig, PolicyResult, UserOpData, ProjectResponse, ProjectSecretKey, ProjectBundlerService, ProjectService, TeamAndProjectResponse, TeamResponse, ProjectEmbeddedWalletsService, } from "./core/api.js";
3
3
  export { fetchTeamAndProject } from "./core/api.js";
4
4
  export { authorizeBundleId, authorizeDomain, } from "./core/authorize/client.js";
5
+ export { rateLimitSlidingWindow } from "./core/rateLimit/strategies/sliding-window.js";
6
+ export { rateLimit } from "./core/rateLimit/index.js";
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,YAAY,EACb,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,oBAAoB,EAAE,eAoClC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,YAkD/B,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,sBAIzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAKhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAIvC,CAAC"}
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,YAAY,EACb,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,oBAAoB,EAAE,eAoClC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,YAuD/B,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,sBAIzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAKhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,iBAIvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thirdweb-dev/service-utils",
3
- "version": "0.9.4",
3
+ "version": "0.9.5",
4
4
  "type": "module",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -45,15 +45,15 @@
45
45
  ],
46
46
  "sideEffects": false,
47
47
  "dependencies": {
48
- "@confluentinc/kafka-javascript": "^1.2.0",
48
+ "@confluentinc/kafka-javascript": "1.3.0",
49
49
  "aws4fetch": "1.0.20",
50
- "zod": "3.24.2"
50
+ "zod": "3.24.3"
51
51
  },
52
52
  "devDependencies": {
53
- "@cloudflare/workers-types": "4.20250405.0",
54
- "@types/node": "22.14.0",
53
+ "@cloudflare/workers-types": "4.20250421.0",
54
+ "@types/node": "22.14.1",
55
55
  "typescript": "5.8.3",
56
- "vitest": "3.1.1"
56
+ "vitest": "3.1.2"
57
57
  },
58
58
  "scripts": {
59
59
  "format": "biome format ./src --write",