@fefade/common 1.0.5 → 1.0.7

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/index.d.mts CHANGED
@@ -34,11 +34,13 @@ type MaybePromise<T> = T | Promise<T>;
34
34
  type Handler<E extends HasRequest> = (event: E) => MaybePromise<Response>;
35
35
 
36
36
  type RateLimiterLike = {
37
- consume: (ip: string) => Promise<unknown>;
37
+ consume(key: string | number, pointsToConsume?: number, options?: {
38
+ [key: string]: any;
39
+ }): Promise<unknown>;
38
40
  };
39
41
  declare function export_default$1<E extends HasRequest>(handler: Handler<E>, limiter: RateLimiterLike): Handler<E>;
40
42
 
41
- declare function export_default<E extends HasRequest>(handler: Handler<E>, secretKey: string): Handler<E>;
43
+ declare function export_default<E extends HasRequest>(handler: Handler<E>, secretKey?: string): Handler<E>;
42
44
 
43
45
  declare const ORG_NAME = "Fefade";
44
46
  declare const ACRONYM = "ff";
package/dist/index.d.ts CHANGED
@@ -34,11 +34,13 @@ type MaybePromise<T> = T | Promise<T>;
34
34
  type Handler<E extends HasRequest> = (event: E) => MaybePromise<Response>;
35
35
 
36
36
  type RateLimiterLike = {
37
- consume: (ip: string) => Promise<unknown>;
37
+ consume(key: string | number, pointsToConsume?: number, options?: {
38
+ [key: string]: any;
39
+ }): Promise<unknown>;
38
40
  };
39
41
  declare function export_default$1<E extends HasRequest>(handler: Handler<E>, limiter: RateLimiterLike): Handler<E>;
40
42
 
41
- declare function export_default<E extends HasRequest>(handler: Handler<E>, secretKey: string): Handler<E>;
43
+ declare function export_default<E extends HasRequest>(handler: Handler<E>, secretKey?: string): Handler<E>;
42
44
 
43
45
  declare const ORG_NAME = "Fefade";
44
46
  declare const ACRONYM = "ff";
package/dist/index.js CHANGED
@@ -14010,9 +14010,9 @@ function handleError_default(err) {
14010
14010
  if (err instanceof external_exports.ZodError) {
14011
14011
  return new Errors(err.issues[0].message, "VALIDATION_ERROR", 400);
14012
14012
  }
14013
- const parsedError = firebaseError(err);
14014
- if (parsedError instanceof Errors) {
14015
- return parsedError;
14013
+ const fbError = firebaseError(err);
14014
+ if (fbError instanceof Errors) {
14015
+ return fbError;
14016
14016
  }
14017
14017
  return new Errors("Internal server error", "INTERNAL_SERVER_ERROR", 500);
14018
14018
  }
@@ -14042,45 +14042,50 @@ function getIp_default(request) {
14042
14042
 
14043
14043
  // src/withRateLimit.ts
14044
14044
  function isRateLimiterRes(err) {
14045
- return err && typeof err === "object" && "msBeforeNext" in err && "remainingPoints" in err;
14045
+ return typeof err === "object" && err !== null && "msBeforeNext" in err && "remainingPoints" in err;
14046
14046
  }
14047
14047
  function withRateLimit_default(handler, limiter) {
14048
14048
  return async (event) => {
14049
- const ip = getIp_default(event.request);
14049
+ const ipAddress = getIp_default(event.request);
14050
14050
  try {
14051
- await limiter.consume(ip);
14051
+ await limiter.consume(ipAddress);
14052
14052
  } catch (err) {
14053
14053
  if (isRateLimiterRes(err)) {
14054
- Response.json(
14055
- { error: "Too many requests" },
14056
- {
14057
- status: 429,
14058
- headers: {
14059
- "Retry-After": "1800",
14060
- "Content-Type": "application/json"
14061
- }
14054
+ return new Response(JSON.stringify({ error: "Too many requests" }), {
14055
+ status: 429,
14056
+ headers: {
14057
+ "Retry-After": "1800",
14058
+ "Content-Type": "application/json"
14062
14059
  }
14063
- );
14060
+ });
14064
14061
  }
14065
- return Response.json(
14066
- { error: "Internal server error" },
14067
- {
14068
- status: 500
14069
- }
14070
- );
14062
+ throw err;
14071
14063
  }
14072
- return handler({ ...event, ip });
14064
+ return handler(event);
14073
14065
  };
14074
14066
  }
14075
14067
 
14076
14068
  // src/validateTurnstile.ts
14077
14069
  function validateTurnstile_default(handler, secretKey) {
14078
14070
  return async (event) => {
14071
+ if (!secretKey) {
14072
+ return new Response(JSON.stringify({ error: "Invalid secret key" }), {
14073
+ status: 500,
14074
+ headers: {
14075
+ "Content-Type": "application/json"
14076
+ }
14077
+ });
14078
+ }
14079
14079
  const body = await event.request.json();
14080
14080
  const token = body["cf-turnstile-response"];
14081
- const ip = getIp_default(event.request);
14081
+ const ipAddress = getIp_default(event.request);
14082
14082
  if (!token) {
14083
- return Response.json({ error: "Captcha not sent" });
14083
+ return new Response(JSON.stringify({ error: "Captcha not sent" }), {
14084
+ status: 400,
14085
+ headers: {
14086
+ "Content-Type": "application/json"
14087
+ }
14088
+ });
14084
14089
  }
14085
14090
  const response = await fetch(
14086
14091
  "https://challenges.cloudflare.com/turnstile/v0/siteverify",
@@ -14092,14 +14097,19 @@ function validateTurnstile_default(handler, secretKey) {
14092
14097
  body: JSON.stringify({
14093
14098
  secret: secretKey,
14094
14099
  response: token.toString(),
14095
- remoteip: ip
14100
+ remoteip: ipAddress
14096
14101
  })
14097
14102
  }
14098
14103
  );
14099
14104
  if (!response.ok) {
14100
- return Response.json({ error: "Invalid verification" }, { status: 400 });
14105
+ return new Response(JSON.stringify({ error: "Invalid verification" }), {
14106
+ status: 400,
14107
+ headers: {
14108
+ "Content-Type": "application/json"
14109
+ }
14110
+ });
14101
14111
  }
14102
- return handler({ ...event, ip });
14112
+ return handler(event);
14103
14113
  };
14104
14114
  }
14105
14115
 
package/dist/index.mjs CHANGED
@@ -13982,9 +13982,9 @@ function handleError_default(err) {
13982
13982
  if (err instanceof external_exports.ZodError) {
13983
13983
  return new Errors(err.issues[0].message, "VALIDATION_ERROR", 400);
13984
13984
  }
13985
- const parsedError = firebaseError(err);
13986
- if (parsedError instanceof Errors) {
13987
- return parsedError;
13985
+ const fbError = firebaseError(err);
13986
+ if (fbError instanceof Errors) {
13987
+ return fbError;
13988
13988
  }
13989
13989
  return new Errors("Internal server error", "INTERNAL_SERVER_ERROR", 500);
13990
13990
  }
@@ -14014,45 +14014,50 @@ function getIp_default(request) {
14014
14014
 
14015
14015
  // src/withRateLimit.ts
14016
14016
  function isRateLimiterRes(err) {
14017
- return err && typeof err === "object" && "msBeforeNext" in err && "remainingPoints" in err;
14017
+ return typeof err === "object" && err !== null && "msBeforeNext" in err && "remainingPoints" in err;
14018
14018
  }
14019
14019
  function withRateLimit_default(handler, limiter) {
14020
14020
  return async (event) => {
14021
- const ip = getIp_default(event.request);
14021
+ const ipAddress = getIp_default(event.request);
14022
14022
  try {
14023
- await limiter.consume(ip);
14023
+ await limiter.consume(ipAddress);
14024
14024
  } catch (err) {
14025
14025
  if (isRateLimiterRes(err)) {
14026
- Response.json(
14027
- { error: "Too many requests" },
14028
- {
14029
- status: 429,
14030
- headers: {
14031
- "Retry-After": "1800",
14032
- "Content-Type": "application/json"
14033
- }
14026
+ return new Response(JSON.stringify({ error: "Too many requests" }), {
14027
+ status: 429,
14028
+ headers: {
14029
+ "Retry-After": "1800",
14030
+ "Content-Type": "application/json"
14034
14031
  }
14035
- );
14032
+ });
14036
14033
  }
14037
- return Response.json(
14038
- { error: "Internal server error" },
14039
- {
14040
- status: 500
14041
- }
14042
- );
14034
+ throw err;
14043
14035
  }
14044
- return handler({ ...event, ip });
14036
+ return handler(event);
14045
14037
  };
14046
14038
  }
14047
14039
 
14048
14040
  // src/validateTurnstile.ts
14049
14041
  function validateTurnstile_default(handler, secretKey) {
14050
14042
  return async (event) => {
14043
+ if (!secretKey) {
14044
+ return new Response(JSON.stringify({ error: "Invalid secret key" }), {
14045
+ status: 500,
14046
+ headers: {
14047
+ "Content-Type": "application/json"
14048
+ }
14049
+ });
14050
+ }
14051
14051
  const body = await event.request.json();
14052
14052
  const token = body["cf-turnstile-response"];
14053
- const ip = getIp_default(event.request);
14053
+ const ipAddress = getIp_default(event.request);
14054
14054
  if (!token) {
14055
- return Response.json({ error: "Captcha not sent" });
14055
+ return new Response(JSON.stringify({ error: "Captcha not sent" }), {
14056
+ status: 400,
14057
+ headers: {
14058
+ "Content-Type": "application/json"
14059
+ }
14060
+ });
14056
14061
  }
14057
14062
  const response = await fetch(
14058
14063
  "https://challenges.cloudflare.com/turnstile/v0/siteverify",
@@ -14064,14 +14069,19 @@ function validateTurnstile_default(handler, secretKey) {
14064
14069
  body: JSON.stringify({
14065
14070
  secret: secretKey,
14066
14071
  response: token.toString(),
14067
- remoteip: ip
14072
+ remoteip: ipAddress
14068
14073
  })
14069
14074
  }
14070
14075
  );
14071
14076
  if (!response.ok) {
14072
- return Response.json({ error: "Invalid verification" }, { status: 400 });
14077
+ return new Response(JSON.stringify({ error: "Invalid verification" }), {
14078
+ status: 400,
14079
+ headers: {
14080
+ "Content-Type": "application/json"
14081
+ }
14082
+ });
14073
14083
  }
14074
- return handler({ ...event, ip });
14084
+ return handler(event);
14075
14085
  };
14076
14086
  }
14077
14087
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fefade/common",
3
3
  "description": "Containing common resources, constants, images, and utility functions that are used across various projects. This package aims to promote reusability and maintain consistency across different applications by centralizing commonly used assets and code.",
4
- "version": "1.0.5",
4
+ "version": "1.0.7",
5
5
  "private": false,
6
6
  "publishConfig": {
7
7
  "access": "public"