@thirdweb-dev/service-utils 0.8.19 → 0.9.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/dist/cjs/core/api.js.map +1 -1
- package/dist/cjs/core/rateLimit/index.js +15 -8
- package/dist/cjs/core/rateLimit/index.js.map +1 -1
- package/dist/esm/core/api.js.map +1 -1
- package/dist/esm/core/rateLimit/index.js +15 -8
- package/dist/esm/core/rateLimit/index.js.map +1 -1
- package/dist/types/core/api.d.ts +3 -2
- package/dist/types/core/api.d.ts.map +1 -1
- package/dist/types/core/rateLimit/index.d.ts +8 -2
- package/dist/types/core/rateLimit/index.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/cjs/core/api.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":";;AAiOA,kDA+CC;AA/CM,KAAK,UAAU,mBAAmB,CACvC,QAA4B,EAC5B,MAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAEtC,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,mBAAmB,EAAE,aAAa;oBAClC,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,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"}
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.rateLimit = rateLimit;
|
4
4
|
const RATE_LIMIT_WINDOW_SECONDS = 10;
|
5
5
|
async function rateLimit(args) {
|
6
|
-
const { team, limitPerSecond, serviceConfig, redis, sampleRate = 1.0 } = args;
|
6
|
+
const { team, limitPerSecond, serviceConfig, redis, sampleRate = 1.0, increment = 1, } = args;
|
7
7
|
const shouldSampleRequest = Math.random() < sampleRate;
|
8
8
|
if (!shouldSampleRequest) {
|
9
9
|
return {
|
@@ -25,12 +25,8 @@ async function rateLimit(args) {
|
|
25
25
|
const timestampWindow = Math.floor(Date.now() / (1000 * RATE_LIMIT_WINDOW_SECONDS)) *
|
26
26
|
RATE_LIMIT_WINDOW_SECONDS;
|
27
27
|
const key = `rate-limit:${serviceScope}:${team.id}:${timestampWindow}`;
|
28
|
-
//
|
29
|
-
const requestCount = await redis.
|
30
|
-
if (requestCount === 1) {
|
31
|
-
// For the first increment, set an expiration to clean up this key.
|
32
|
-
await redis.expire(key, RATE_LIMIT_WINDOW_SECONDS);
|
33
|
-
}
|
28
|
+
// first read the request count from redis
|
29
|
+
const requestCount = Number((await redis.get(key).catch(() => "0")) || "0");
|
34
30
|
// Get the limit for this window accounting for the sample rate.
|
35
31
|
const limitPerWindow = limitPerSecond * sampleRate * RATE_LIMIT_WINDOW_SECONDS;
|
36
32
|
if (requestCount > limitPerWindow) {
|
@@ -43,9 +39,20 @@ async function rateLimit(args) {
|
|
43
39
|
errorCode: "RATE_LIMIT_EXCEEDED",
|
44
40
|
};
|
45
41
|
}
|
42
|
+
// do not await this, it just needs to execute at all
|
43
|
+
(async () =>
|
44
|
+
// always incrementBy the amount specified for the key
|
45
|
+
await redis.incrBy(key, increment).then(async () => {
|
46
|
+
// if the initial request count was 0, set the key to expire in the future
|
47
|
+
if (requestCount === 0) {
|
48
|
+
await redis.expire(key, RATE_LIMIT_WINDOW_SECONDS);
|
49
|
+
}
|
50
|
+
}))().catch(() => {
|
51
|
+
console.error("Error incrementing rate limit key", key);
|
52
|
+
});
|
46
53
|
return {
|
47
54
|
rateLimited: false,
|
48
|
-
requestCount,
|
55
|
+
requestCount: requestCount + increment,
|
49
56
|
rateLimit: limitPerWindow,
|
50
57
|
};
|
51
58
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":";;AAYA,8BAuFC;AAhGD,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAS9B,KAAK,UAAU,SAAS,CAAC,IAgB/B;IACC,MAAM,EACJ,IAAI,EACJ,cAAc,EACd,aAAa,EACb,KAAK,EACL,UAAU,GAAG,GAAG,EAChB,SAAS,GAAG,CAAC,GACd,GAAG,IAAI,CAAC;IAET,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;IACvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,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,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAEhD,uDAAuD;IACvD,MAAM,eAAe,GACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,yBAAyB,CAAC,CAAC;QAC3D,yBAAyB,CAAC;IAC5B,MAAM,GAAG,GAAG,cAAc,YAAY,IAAI,IAAI,CAAC,EAAE,IAAI,eAAe,EAAE,CAAC;IAEvE,0CAA0C;IAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAE5E,gEAAgE;IAChE,MAAM,cAAc,GAClB,cAAc,GAAG,UAAU,GAAG,yBAAyB,CAAC;IAE1D,IAAI,YAAY,GAAG,cAAc,EAAE,CAAC;QAClC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,YAAY;YACZ,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,wBAAwB,YAAY,kBAAkB,cAAc,sFAAsF;YACxK,SAAS,EAAE,qBAAqB;SACjC,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,CAAC,KAAK,IAAI,EAAE;IACV,uDAAuD;IACvD,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACjD,0EAA0E;QAC1E,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;QACjB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,YAAY,GAAG,SAAS;QACtC,SAAS,EAAE,cAAc;KAC1B,CAAC;AACJ,CAAC"}
|
package/dist/esm/core/api.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":"
|
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,GAAG,QAAQ,CAAC;IAEtC,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,mBAAmB,EAAE,aAAa;oBAClC,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,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,6 @@
|
|
1
1
|
const RATE_LIMIT_WINDOW_SECONDS = 10;
|
2
2
|
export async function rateLimit(args) {
|
3
|
-
const { team, limitPerSecond, serviceConfig, redis, sampleRate = 1.0 } = args;
|
3
|
+
const { team, limitPerSecond, serviceConfig, redis, sampleRate = 1.0, increment = 1, } = args;
|
4
4
|
const shouldSampleRequest = Math.random() < sampleRate;
|
5
5
|
if (!shouldSampleRequest) {
|
6
6
|
return {
|
@@ -22,12 +22,8 @@ export async function rateLimit(args) {
|
|
22
22
|
const timestampWindow = Math.floor(Date.now() / (1000 * RATE_LIMIT_WINDOW_SECONDS)) *
|
23
23
|
RATE_LIMIT_WINDOW_SECONDS;
|
24
24
|
const key = `rate-limit:${serviceScope}:${team.id}:${timestampWindow}`;
|
25
|
-
//
|
26
|
-
const requestCount = await redis.
|
27
|
-
if (requestCount === 1) {
|
28
|
-
// For the first increment, set an expiration to clean up this key.
|
29
|
-
await redis.expire(key, RATE_LIMIT_WINDOW_SECONDS);
|
30
|
-
}
|
25
|
+
// first read the request count from redis
|
26
|
+
const requestCount = Number((await redis.get(key).catch(() => "0")) || "0");
|
31
27
|
// Get the limit for this window accounting for the sample rate.
|
32
28
|
const limitPerWindow = limitPerSecond * sampleRate * RATE_LIMIT_WINDOW_SECONDS;
|
33
29
|
if (requestCount > limitPerWindow) {
|
@@ -40,9 +36,20 @@ export async function rateLimit(args) {
|
|
40
36
|
errorCode: "RATE_LIMIT_EXCEEDED",
|
41
37
|
};
|
42
38
|
}
|
39
|
+
// do not await this, it just needs to execute at all
|
40
|
+
(async () =>
|
41
|
+
// always incrementBy the amount specified for the key
|
42
|
+
await redis.incrBy(key, increment).then(async () => {
|
43
|
+
// if the initial request count was 0, set the key to expire in the future
|
44
|
+
if (requestCount === 0) {
|
45
|
+
await redis.expire(key, RATE_LIMIT_WINDOW_SECONDS);
|
46
|
+
}
|
47
|
+
}))().catch(() => {
|
48
|
+
console.error("Error incrementing rate limit key", key);
|
49
|
+
});
|
43
50
|
return {
|
44
51
|
rateLimited: false,
|
45
|
-
requestCount,
|
52
|
+
requestCount: requestCount + increment,
|
46
53
|
rateLimit: limitPerWindow,
|
47
54
|
};
|
48
55
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":"AAGA,MAAM,yBAAyB,GAAG,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/rateLimit/index.ts"],"names":[],"mappings":"AAGA,MAAM,yBAAyB,GAAG,EAAE,CAAC;AASrC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAgB/B;IACC,MAAM,EACJ,IAAI,EACJ,cAAc,EACd,aAAa,EACb,KAAK,EACL,UAAU,GAAG,GAAG,EAChB,SAAS,GAAG,CAAC,GACd,GAAG,IAAI,CAAC;IAET,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;IACvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,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,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAEhD,uDAAuD;IACvD,MAAM,eAAe,GACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,yBAAyB,CAAC,CAAC;QAC3D,yBAAyB,CAAC;IAC5B,MAAM,GAAG,GAAG,cAAc,YAAY,IAAI,IAAI,CAAC,EAAE,IAAI,eAAe,EAAE,CAAC;IAEvE,0CAA0C;IAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAE5E,gEAAgE;IAChE,MAAM,cAAc,GAClB,cAAc,GAAG,UAAU,GAAG,yBAAyB,CAAC;IAE1D,IAAI,YAAY,GAAG,cAAc,EAAE,CAAC;QAClC,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,YAAY;YACZ,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,wBAAwB,YAAY,kBAAkB,cAAc,sFAAsF;YACxK,SAAS,EAAE,qBAAqB;SACjC,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,CAAC,KAAK,IAAI,EAAE;IACV,uDAAuD;IACvD,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACjD,0EAA0E;QAC1E,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;QACjB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,YAAY,GAAG,SAAS;QACtC,SAAS,EAAE,cAAc;KAC1B,CAAC;AACJ,CAAC"}
|
package/dist/types/core/api.d.ts
CHANGED
@@ -73,13 +73,14 @@ type TeamCapabilities = {
|
|
73
73
|
customBranding: boolean;
|
74
74
|
};
|
75
75
|
};
|
76
|
+
type TeamPlan = "free" | "starter" | "starter_legacy" | "growth_legacy" | "growth" | "accelerate" | "scale" | "pro";
|
76
77
|
export type TeamResponse = {
|
77
78
|
id: string;
|
78
79
|
name: string;
|
79
80
|
slug: string;
|
80
81
|
image: string | null;
|
81
|
-
billingPlan:
|
82
|
-
supportPlan:
|
82
|
+
billingPlan: TeamPlan;
|
83
|
+
supportPlan: TeamPlan;
|
83
84
|
billingPlanVersion: number;
|
84
85
|
createdAt: string;
|
85
86
|
updatedAt: string | null;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IAGf,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,WAAW,GAAG,gBAAgB,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC9D,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,KAAK,gBAAgB,GAAG;IACtB,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE;YACR,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,MAAM,EAAE;YACN,uBAAuB,EAAE,MAAM,CAAC;YAChC,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,OAAO,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,eAAe,EAAE;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/core/api.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import type { CoreServiceConfig, TeamResponse } from "../api.js";
|
2
2
|
import type { RateLimitResult } from "./types.js";
|
3
3
|
type IRedis = {
|
4
|
-
|
5
|
-
expire
|
4
|
+
get: (key: string) => Promise<string | null>;
|
5
|
+
expire(key: string, seconds: number): Promise<number>;
|
6
|
+
incrBy(key: string, value: number): Promise<number>;
|
6
7
|
};
|
7
8
|
export declare function rateLimit(args: {
|
8
9
|
team: TeamResponse;
|
@@ -15,6 +16,11 @@ export declare function rateLimit(args: {
|
|
15
16
|
* @default 1.0
|
16
17
|
*/
|
17
18
|
sampleRate?: number;
|
19
|
+
/**
|
20
|
+
* The number of requests to increment by.
|
21
|
+
* @default 1
|
22
|
+
*/
|
23
|
+
increment?: number;
|
18
24
|
}): Promise<RateLimitResult>;
|
19
25
|
export {};
|
20
26
|
//# 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,
|
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,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrD,CAAC;AAEF,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;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuE3B"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@thirdweb-dev/service-utils",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.9.0",
|
4
4
|
"type": "module",
|
5
5
|
"main": "dist/cjs/index.js",
|
6
6
|
"module": "dist/esm/index.js",
|
@@ -50,10 +50,10 @@
|
|
50
50
|
"zod": "3.24.2"
|
51
51
|
},
|
52
52
|
"devDependencies": {
|
53
|
-
"@cloudflare/workers-types": "4.
|
54
|
-
"@types/node": "22.
|
55
|
-
"typescript": "5.8.
|
56
|
-
"vitest": "3.
|
53
|
+
"@cloudflare/workers-types": "4.20250405.0",
|
54
|
+
"@types/node": "22.14.0",
|
55
|
+
"typescript": "5.8.3",
|
56
|
+
"vitest": "3.1.1"
|
57
57
|
},
|
58
58
|
"scripts": {
|
59
59
|
"format": "biome format ./src --write",
|