@knsdev/node-utils 3.1.0 → 3.2.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
@@ -1,6 +1,6 @@
1
1
  # @knsdev/node-utils
2
2
 
3
- TypeScript utilities for Node.js APIs: JWT (HS256), bcrypt passwords, Express cookies, OAuth (Google / Facebook), Cloudflare Turnstile, HMAC, validation helpers, Zod schemas, and small math/random helpers. Published as **ES modules** (`"type": "module"`).
3
+ TypeScript utilities for Node.js APIs: JWT (HS256), bcrypt passwords, Express cookies and small Express helpers, OAuth (Google / Facebook), Cloudflare Turnstile, HMAC, validation helpers, Zod schemas, pagination/sleep helpers, and math/random utilities. Published as **ES modules** (`"type": "module"`).
4
4
 
5
5
  ## Requirements
6
6
 
@@ -15,11 +15,12 @@ pnpm add @knsdev/node-utils
15
15
  npm install @knsdev/node-utils
16
16
  ```
17
17
 
18
- Build from source (for contributors):
18
+ Build from source (for contributors). `build` runs `clean` first so `dist/` never keeps stale files after renames.
19
19
 
20
20
  ```bash
21
21
  pnpm install
22
22
  pnpm run build
23
+ # optional: pnpm run clean
23
24
  ```
24
25
 
25
26
  ## How to import
@@ -58,7 +59,7 @@ const [parsed, parseErr] = tryCatch2(() => JSON.parse('{"a":1}'));
58
59
 
59
60
  ### `getEnvv`
60
61
 
61
- Read `process.env` with a small schema: `string`, `int`, `float`, `boolean`, or `appEnv` (`dev` | `test` | `prod`). Throws a single `Error` listing missing keys and value problems.
62
+ Read `process.env` with a small schema: `string`, `int`, `float`, `boolean`, or `appEnv` (`dev` | `test` | `prod`). On failure, throws one `Error` whose message has up to two sections separated by a line of `================================`: `Not found keys: …` and/or `Value errors: …`.
62
63
 
63
64
  ```ts
64
65
  import { getEnvv } from "@knsdev/node-utils/getEnvv.js";
@@ -110,7 +111,18 @@ if (hashResult.success) {
110
111
  console.log(hashResult.hashedPassword);
111
112
  }
112
113
 
113
- const ok = await PasswordUtils.comparePassword("plain", storedHash);
114
+ const cmp = await PasswordUtils.comparePassword("plain", storedHash);
115
+ if (cmp.success) {
116
+ /* logged in */
117
+ } else {
118
+ /* cmp.error — e.g. BadRequest for wrong password */
119
+ }
120
+
121
+ try {
122
+ await PasswordUtils.comparePasswordOrThrow("plain", storedHash); // true on match; throws on mismatch / bcrypt error
123
+ } catch (e) {
124
+ /* handle */
125
+ }
114
126
 
115
127
  if (!PasswordUtils.validateStrength(pw, 8, 128)) {
116
128
  /* reject */
@@ -147,6 +159,36 @@ function logout(res: Response) {
147
159
  }
148
160
  ```
149
161
 
162
+ ### `express` (helpers)
163
+
164
+ Typed `res.json` wrapper and async route wrapper that forwards errors to `next`.
165
+
166
+ ```ts
167
+ import type { RequestHandler } from "express";
168
+ import { CatchExpress, SendRes } from "@knsdev/node-utils/express.js";
169
+
170
+ type Health = { ok: true };
171
+
172
+ const health: RequestHandler = (req, res) => {
173
+ SendRes<Health>(res, { ok: true });
174
+ };
175
+
176
+ app.get("/health", CatchExpress(health));
177
+ ```
178
+
179
+ ### `utils`
180
+
181
+ `sleep(ms)` and `PageLimit(query)` for list endpoints (page, limit, skip, sort, optional `searchTerm`, remaining keys as `filtersData`).
182
+
183
+ ```ts
184
+ import { PageLimit, sleep } from "@knsdev/node-utils/utils.js";
185
+
186
+ await sleep(500);
187
+
188
+ const { page, limit, skip, sortBy, sortOrder, searchTerm, filtersData } =
189
+ PageLimit(req.query);
190
+ ```
191
+
150
192
  ### `HMACUtils`
151
193
 
152
194
  SHA-256 HMAC (hex) and timing-safe comparison.
@@ -268,7 +310,7 @@ const fromCode = await GoogleUtils.getUserFromCode(
268
310
 
269
311
  ### `FacebookUtils`
270
312
 
271
- Validates a user access token via Graph API `debug_token`, then loads `/me` (POST bodies to avoid putting secrets in query strings). Returns normalized profile or `null`.
313
+ Validates a **Facebook user access token** (not a JWT) via Graph API `debug_token`, then loads `/me`. Requests use POST bodies so tokens and app secrets stay out of query strings. Returns `{ oauth_id, name, email, picture }` or `null`. The Graph API version used by this module is defined in code as a single constant (currently `v19.0`) for easy upgrades.
272
314
 
273
315
  ```ts
274
316
  import { FacebookUtils } from "@knsdev/node-utils/FBUtils.js";
@@ -302,7 +344,7 @@ if (failure) {
302
344
  console.log(success.hostname, success.challenge_ts);
303
345
  }
304
346
 
305
- // Or throw on any failure:
347
+ // Or throw on any failure (last arg is reserved for API stability / future use; pass your app env):
306
348
  const result = await TurnstileValidator.validateOrThrow(
307
349
  secret,
308
350
  tokenFromClient,
@@ -339,7 +381,7 @@ function configure(env: TAppEnvs) {
339
381
 
340
382
  ### `zod` (optional)
341
383
 
342
- Prebuilt Zod schemas aligned with `ECApiCodes` / length constants (password, email, slug, 6-digit codes, Turnstile token, etc.).
384
+ Prebuilt Zod schemas aligned with `CLengths` and machine-friendly error codes (`TZodCodes` / `ECApiCodes` style): `z_PASSWORD`, `z_GENERAL_TOKEN`, `z_CODE_6_DIGITS`, `z_SLUG`, `z_EMAIL`, `z_FIRST_NAME`, `z_LAST_NAME`, `z_TURNSTILE_TOKEN`, `z_LOGOUT_OTHER_SESSIONS`, `z_REMEMBER_ME`.
343
385
 
344
386
  ```ts
345
387
  import { z_EMAIL, z_PASSWORD } from "@knsdev/node-utils/zod.js";
@@ -361,7 +403,7 @@ const LoginBody = z.object({
361
403
  | Google ID token | `jose` |
362
404
  | Passwords | `bcrypt` |
363
405
  | Schemas | `zod` |
364
- | Cookies | `express` (types / `Response`) |
406
+ | Cookies + Express helpers | `express` (types / `Response`) |
365
407
 
366
408
  ---
367
409
 
package/dist/FBUtils.d.ts CHANGED
@@ -1,11 +1,15 @@
1
+ /**
2
+ * Facebook Graph API helpers: validate a user access token and load profile data.
3
+ * Import via: `@knsdev/node-utils/FBUtils.js`.
4
+ */
1
5
  declare class facebookUtils {
2
6
  /**
3
- * Validates a Facebook access token and fetches user profile details.
4
- * Uses POST bodies so tokens and app secrets are not placed in request URLs (fewer access-log leaks).
7
+ * Validates a Facebook **user access token** (not a JWT) and fetches profile details.
8
+ * Calls `debug_token` then `/me` via POST so tokens and app secrets stay out of query strings (fewer access-log leaks).
5
9
  * @param token - Facebook user access token.
6
10
  * @param appId - Facebook application ID.
7
11
  * @param appSecret - Facebook application secret.
8
- * @returns Normalized user profile or `null` if token/profile lookup fails.
12
+ * @returns Normalized user profile or `null` if validation or profile lookup fails.
9
13
  */
10
14
  readonly getUserFromAccessToken: (token: string, appId: string, appSecret: string) => Promise<{
11
15
  name: string | undefined;
@@ -15,7 +19,7 @@ declare class facebookUtils {
15
19
  } | null>;
16
20
  }
17
21
  /**
18
- * Singleton instance of Facebook OAuth utilities.
22
+ * Singleton instance of {@link facebookUtils}.
19
23
  */
20
24
  export declare const FacebookUtils: facebookUtils;
21
25
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"FBUtils.d.ts","sourceRoot":"","sources":["../src/FBUtils.ts"],"names":[],"mappings":"AAYA,cAAM,aAAa;IAClB;;;;;;;OAOG;IACH,QAAQ,CAAC,sBAAsB,GAAU,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC;QAClG,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC,CA4DR;CACD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"FBUtils.d.ts","sourceRoot":"","sources":["../src/FBUtils.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,cAAM,aAAa;IAClB;;;;;;;OAOG;IACH,QAAQ,CAAC,sBAAsB,GAAU,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC;QAClG,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC,CA4DR;CACD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
package/dist/FBUtils.js CHANGED
@@ -1,14 +1,19 @@
1
1
  import { tryCatch } from "./tryCatch.js";
2
2
  const FORM_URLENCODED = "application/x-www-form-urlencoded";
3
+ /** Graph API version segment used in `https://graph.facebook.com/{version}/…` URLs. */
3
4
  const FB_GRAPH_API_VERSION = "v19.0";
5
+ /**
6
+ * Facebook Graph API helpers: validate a user access token and load profile data.
7
+ * Import via: `@knsdev/node-utils/FBUtils.js`.
8
+ */
4
9
  class facebookUtils {
5
10
  /**
6
- * Validates a Facebook access token and fetches user profile details.
7
- * Uses POST bodies so tokens and app secrets are not placed in request URLs (fewer access-log leaks).
11
+ * Validates a Facebook **user access token** (not a JWT) and fetches profile details.
12
+ * Calls `debug_token` then `/me` via POST so tokens and app secrets stay out of query strings (fewer access-log leaks).
8
13
  * @param token - Facebook user access token.
9
14
  * @param appId - Facebook application ID.
10
15
  * @param appSecret - Facebook application secret.
11
- * @returns Normalized user profile or `null` if token/profile lookup fails.
16
+ * @returns Normalized user profile or `null` if validation or profile lookup fails.
12
17
  */
13
18
  getUserFromAccessToken = async (token, appId, appSecret) => {
14
19
  const debugBody = new URLSearchParams({
@@ -63,7 +68,7 @@ class facebookUtils {
63
68
  };
64
69
  }
65
70
  /**
66
- * Singleton instance of Facebook OAuth utilities.
71
+ * Singleton instance of {@link facebookUtils}.
67
72
  */
68
73
  export const FacebookUtils = new facebookUtils();
69
74
  //# sourceMappingURL=FBUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FBUtils.js","sourceRoot":"","sources":["../src/FBUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,MAAM,eAAe,GAAG,mCAAmC,CAAC;AAC5D,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAErC,MAAM,aAAa;IAClB;;;;;;;OAOG;IACM,sBAAsB,GAAG,KAAK,EAAE,KAAa,EAAE,KAAa,EAAE,SAAiB,EAK9E,EAAE;QAEX,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC;YACrC,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE;SACrC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,8BAA8B,oBAAoB,cAAc,EAAE;YAChH,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;YAC5C,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAC,CAAC;QACJ,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyE,CAAC;QAC7G,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,2FAA2F;QAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YAClC,MAAM,EAAE,mCAAmC;YAC3C,YAAY,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,8BAA8B,oBAAoB,KAAK,EAAE;YACvG,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;YAC5C,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;SACvB,CAAC,CAAC,CAAC;QACJ,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAkB,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO;YACN,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,WAAW;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;SAC1C,CAAC;IACH,CAAC,CAAA;CACD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"FBUtils.js","sourceRoot":"","sources":["../src/FBUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,MAAM,eAAe,GAAG,mCAAmC,CAAC;AAE5D,uFAAuF;AACvF,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAErC;;;GAGG;AACH,MAAM,aAAa;IAClB;;;;;;;OAOG;IACM,sBAAsB,GAAG,KAAK,EAAE,KAAa,EAAE,KAAa,EAAE,SAAiB,EAK9E,EAAE;QAEX,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC;YACrC,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE;SACrC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,8BAA8B,oBAAoB,cAAc,EAAE;YAChH,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;YAC5C,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAC,CAAC;QACJ,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyE,CAAC;QAC7G,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,2FAA2F;QAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YAClC,MAAM,EAAE,mCAAmC;YAC3C,YAAY,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,8BAA8B,oBAAoB,KAAK,EAAE;YACvG,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;YAC5C,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;SACvB,CAAC,CAAC,CAAC;QACJ,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAkB,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO;YACN,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,WAAW;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;SAC1C,CAAC;IACH,CAAC,CAAA;CACD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
@@ -34,6 +34,10 @@ declare class hMACUtils {
34
34
  */
35
35
  readonly compare: (a: string | Buffer, b: string | Buffer) => boolean;
36
36
  }
37
+ /**
38
+ * Singleton instance of HMAC utilities.
39
+ * Import via: `@knsdev/node-utils/HMACUtils.js`.
40
+ */
37
41
  export declare const HMACUtils: hMACUtils;
38
42
  export {};
39
43
  //# sourceMappingURL=HMACUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HMACUtils.d.ts","sourceRoot":"","sources":["../src/HMACUtils.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,cAAM,SAAS;IAEd;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAa5G;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAAM,CAE7D;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,GAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,KAAG,OAAO,CAcnE;CACD;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
1
+ {"version":3,"file":"HMACUtils.d.ts","sourceRoot":"","sources":["../src/HMACUtils.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,cAAM,SAAS;IAEd;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAa5G;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAAM,CAE7D;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,GAAI,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,KAAG,OAAO,CAcnE;CACD;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,WAAkB,CAAC"}
package/dist/HMACUtils.js CHANGED
@@ -57,5 +57,9 @@ class hMACUtils {
57
57
  }
58
58
  };
59
59
  }
60
+ /**
61
+ * Singleton instance of HMAC utilities.
62
+ * Import via: `@knsdev/node-utils/HMACUtils.js`.
63
+ */
60
64
  export const HMACUtils = new hMACUtils();
61
65
  //# sourceMappingURL=HMACUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HMACUtils.js","sourceRoot":"","sources":["../src/HMACUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGrD;;;GAGG;AACH,MAAM,SAAS;IAEd;;;;;OAKG;IACM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAa,EAAgE,EAAE;QAC/G,IAAI,CAAC;YACJ,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;gBACrC,KAAK,EAAE,IAAI;aACX,CAAC;QACH,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACd,OAAO;gBACN,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,KAAc;aACrB,CAAC;QACH,CAAC;IACF,CAAC,CAAA;IAED;;;;;;;OAOG;IACM,WAAW,GAAG,CAAC,MAAc,EAAE,KAAa,EAAU,EAAE;QAChE,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC,CAAA;IAED;;;;;;OAMG;IACM,OAAO,GAAG,CAAC,CAAkB,EAAE,CAAkB,EAAW,EAAE;QACtE,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAE7D,iDAAiD;YACjD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACd,CAAC;YAED,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC,CAAA;CACD;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"HMACUtils.js","sourceRoot":"","sources":["../src/HMACUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGrD;;;GAGG;AACH,MAAM,SAAS;IAEd;;;;;OAKG;IACM,IAAI,GAAG,CAAC,MAAc,EAAE,KAAa,EAAgE,EAAE;QAC/G,IAAI,CAAC;YACJ,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;gBACrC,KAAK,EAAE,IAAI;aACX,CAAC;QACH,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACd,OAAO;gBACN,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,KAAc;aACrB,CAAC;QACH,CAAC;IACF,CAAC,CAAA;IAED;;;;;;;OAOG;IACM,WAAW,GAAG,CAAC,MAAc,EAAE,KAAa,EAAU,EAAE;QAChE,OAAO,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC,CAAA;IAED;;;;;;OAMG;IACM,OAAO,GAAG,CAAC,CAAkB,EAAE,CAAkB,EAAW,EAAE;QACtE,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAE7D,iDAAiD;YACjD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACd,CAAC;YAED,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC,CAAA;CACD;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
@@ -43,8 +43,8 @@ declare class jwtUtils {
43
43
  };
44
44
  }
45
45
  /**
46
- * JWT utilities for use across projects.
47
- * Import via: @sajjat/utils/JwtUtils
46
+ * Singleton instance of JWT utilities.
47
+ * Import via: `@knsdev/node-utils/JwtUtils.js`.
48
48
  */
49
49
  export declare const JwtUtils: jwtUtils;
50
50
  export {};
package/dist/JwtUtils.js CHANGED
@@ -71,8 +71,8 @@ class jwtUtils {
71
71
  };
72
72
  }
73
73
  /**
74
- * JWT utilities for use across projects.
75
- * Import via: @sajjat/utils/JwtUtils
74
+ * Singleton instance of JWT utilities.
75
+ * Import via: `@knsdev/node-utils/JwtUtils.js`.
76
76
  */
77
77
  export const JwtUtils = new jwtUtils();
78
78
  //# sourceMappingURL=JwtUtils.js.map
@@ -24,7 +24,7 @@ declare class passwordUtils {
24
24
  * Compare plain-text password with bcrypt hash.
25
25
  * @param password - Plain-text password.
26
26
  * @param hashedPassword - BCrypt hash.
27
- * @returns `{ success: true }` if password matches hash, `{ success: false, error: Error }` if not.
27
+ * @returns `{ success: true }` when the password matches; `{ success: false, error }` when it does not (`BadRequest`) or `bcrypt.compare` throws (`InternalServerError`).
28
28
  */
29
29
  readonly comparePassword: (password: string, hashedPassword: string) => Promise<{
30
30
  success: true;
@@ -33,11 +33,12 @@ declare class passwordUtils {
33
33
  error: Error;
34
34
  }>;
35
35
  /**
36
- * Compare plain-text password with bcrypt hash and throw on failure.
36
+ * Compare plain-text password with bcrypt hash; throw when the password does not match or comparison errors.
37
37
  * @param password - Plain-text password.
38
38
  * @param hashedPassword - BCrypt hash.
39
- * @returns `true` when password matches hash, otherwise `false`.
40
- * @throws {InternalServerError} If comparison fails unexpectedly.
39
+ * @returns `true` when the password matches the hash.
40
+ * @throws {BadRequest} When the password does not match (same error as `comparePassword` failure path).
41
+ * @throws {InternalServerError} When `bcrypt.compare` throws unexpectedly.
41
42
  */
42
43
  readonly comparePasswordOrThrow: (password: string, hashedPassword: string) => Promise<boolean>;
43
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PassUtils.d.ts","sourceRoot":"","sources":["../src/PassUtils.ts"],"names":[],"mappings":"AAKA,cAAM,aAAa;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,GACpB,UAAU,MAAM,EAChB,mBAAgC,KAC9B,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAOtF;IAEF;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,GAC3B,UAAU,MAAM,EAChB,mBAAgC,KAC9B,OAAO,CAAC,MAAM,CAAC,CAOhB;IAEF;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,GACvB,UAAU,MAAM,EAChB,gBAAgB,MAAM,KACpB,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAW9D;IAEF;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,GAC9B,UAAU,MAAM,EAChB,gBAAgB,MAAM,KACpB,OAAO,CAAC,OAAO,CAAC,CAMjB;IAEF;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAC/B;IAE9D;;;;OAIG;IACH,QAAQ,CAAC,YAAY,GAAI,OAAO,MAAM,KAAG,OAAO,CACI;CACpD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"PassUtils.d.ts","sourceRoot":"","sources":["../src/PassUtils.ts"],"names":[],"mappings":"AAKA,cAAM,aAAa;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,GACpB,UAAU,MAAM,EAChB,mBAAgC,KAC9B,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAOtF;IAEF;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,GAC3B,UAAU,MAAM,EAChB,mBAAgC,KAC9B,OAAO,CAAC,MAAM,CAAC,CAOhB;IAEF;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,GACvB,UAAU,MAAM,EAChB,gBAAgB,MAAM,KACpB,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAW9D;IAEF;;;;;;;OAOG;IACH,QAAQ,CAAC,sBAAsB,GAC9B,UAAU,MAAM,EAChB,gBAAgB,MAAM,KACpB,OAAO,CAAC,OAAO,CAAC,CAMjB;IAEF;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAC/B;IAE9D;;;;OAIG;IACH,QAAQ,CAAC,YAAY,GAAI,OAAO,MAAM,KAAG,OAAO,CACI;CACpD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
package/dist/PassUtils.js CHANGED
@@ -35,7 +35,7 @@ class passwordUtils {
35
35
  * Compare plain-text password with bcrypt hash.
36
36
  * @param password - Plain-text password.
37
37
  * @param hashedPassword - BCrypt hash.
38
- * @returns `{ success: true }` if password matches hash, `{ success: false, error: Error }` if not.
38
+ * @returns `{ success: true }` when the password matches; `{ success: false, error }` when it does not (`BadRequest`) or `bcrypt.compare` throws (`InternalServerError`).
39
39
  */
40
40
  comparePassword = async (password, hashedPassword) => {
41
41
  try {
@@ -50,11 +50,12 @@ class passwordUtils {
50
50
  }
51
51
  };
52
52
  /**
53
- * Compare plain-text password with bcrypt hash and throw on failure.
53
+ * Compare plain-text password with bcrypt hash; throw when the password does not match or comparison errors.
54
54
  * @param password - Plain-text password.
55
55
  * @param hashedPassword - BCrypt hash.
56
- * @returns `true` when password matches hash, otherwise `false`.
57
- * @throws {InternalServerError} If comparison fails unexpectedly.
56
+ * @returns `true` when the password matches the hash.
57
+ * @throws {BadRequest} When the password does not match (same error as `comparePassword` failure path).
58
+ * @throws {InternalServerError} When `bcrypt.compare` throws unexpectedly.
58
59
  */
59
60
  comparePasswordOrThrow = async (password, hashedPassword) => {
60
61
  const res = await this.comparePassword(password, hashedPassword);
@@ -1 +1 @@
1
- {"version":3,"file":"PassUtils.js","sourceRoot":"","sources":["../src/PassUtils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,MAAM,aAAa;IAClB;;;;;OAKG;IACM,YAAY,GAAG,KAAK,EAC5B,QAAgB,EAChB,UAAU,GAAG,mBAAmB,EACwD,EAAE;QAC1F,IAAI,CAAC;YACJ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;QACnF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;QAClD,CAAC;IACF,CAAC,CAAC;IAEF;;;;;;OAMG;IACM,mBAAmB,GAAG,KAAK,EACnC,QAAgB,EAChB,UAAU,GAAG,mBAAmB,EACd,EAAE;QACpB,IAAI,CAAC;YACJ,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,CAAC;YACN,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;IAEF;;;;;OAKG;IACM,eAAe,GAAG,KAAK,EAC/B,QAAgB,EAChB,cAAsB,EAC0C,EAAE;QAClE,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,oCAAoC,CAAC,EAAE,CAAC;YACxF,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,CAAC;YACN,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC7D,CAAC;IACF,CAAC,CAAC;IAEF;;;;;;OAMG;IACM,sBAAsB,GAAG,KAAK,EACtC,QAAgB,EAChB,cAAsB,EACH,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,GAAG,CAAC,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC;IACpB,CAAC,CAAC;IAEF;;;;;;OAMG;IACM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAE,SAAiB,EAAW,EAAE,CAC/F,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC;IAE9D;;;;OAIG;IACM,YAAY,GAAG,CAAC,KAAa,EAAW,EAAE,CAClD,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"PassUtils.js","sourceRoot":"","sources":["../src/PassUtils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,MAAM,aAAa;IAClB;;;;;OAKG;IACM,YAAY,GAAG,KAAK,EAC5B,QAAgB,EAChB,UAAU,GAAG,mBAAmB,EACwD,EAAE;QAC1F,IAAI,CAAC;YACJ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;QACnF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;QAClD,CAAC;IACF,CAAC,CAAC;IAEF;;;;;;OAMG;IACM,mBAAmB,GAAG,KAAK,EACnC,QAAgB,EAChB,UAAU,GAAG,mBAAmB,EACd,EAAE;QACpB,IAAI,CAAC;YACJ,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,CAAC;YACN,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACjC,CAAC;IACF,CAAC,CAAC;IAEF;;;;;OAKG;IACM,eAAe,GAAG,KAAK,EAC/B,QAAgB,EAChB,cAAsB,EAC0C,EAAE;QAClE,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,oCAAoC,CAAC,EAAE,CAAC;YACxF,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,CAAC;YACN,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC7D,CAAC;IACF,CAAC,CAAC;IAEF;;;;;;;OAOG;IACM,sBAAsB,GAAG,KAAK,EACtC,QAAgB,EAChB,cAAsB,EACH,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,GAAG,CAAC,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,CAAC,OAAO,CAAC;IACpB,CAAC,CAAC;IAEF;;;;;;OAMG;IACM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAE,SAAiB,EAAW,EAAE,CAC/F,QAAQ,CAAC,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC;IAE9D;;;;OAIG;IACM,YAAY,GAAG,CAAC,KAAa,EAAW,EAAE,CAClD,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
@@ -39,9 +39,9 @@ declare class turnstileValidator {
39
39
  * @param remoteip - Optional client IP.
40
40
  * @param options - Optional expected action/hostname and idempotency key.
41
41
  * @param timeout - Request timeout in milliseconds.
42
- * @param _APP_ENV - Reserved; forwarded to `validate` for API stability.
42
+ * @param _APP_ENV - Reserved for callers (e.g. future logging policy); forwarded to `validate` for API stability; unused.
43
43
  * @returns Successful Turnstile verification payload.
44
- * @throws {BadRequest} When token validation fails.
44
+ * @throws {BadRequest} With code `CAPTCHA__VALIDATION_FAILED` when token validation fails.
45
45
  */
46
46
  readonly validateOrThrow: (secretKey: string, token: string, remoteip: string | null | undefined, options: {
47
47
  expectedAction?: string;
@@ -80,9 +80,9 @@ class turnstileValidator {
80
80
  * @param remoteip - Optional client IP.
81
81
  * @param options - Optional expected action/hostname and idempotency key.
82
82
  * @param timeout - Request timeout in milliseconds.
83
- * @param _APP_ENV - Reserved; forwarded to `validate` for API stability.
83
+ * @param _APP_ENV - Reserved for callers (e.g. future logging policy); forwarded to `validate` for API stability; unused.
84
84
  * @returns Successful Turnstile verification payload.
85
- * @throws {BadRequest} When token validation fails.
85
+ * @throws {BadRequest} With code `CAPTCHA__VALIDATION_FAILED` when token validation fails.
86
86
  */
87
87
  validateOrThrow = async (secretKey, token, remoteip, options = {}, timeout = 10000, _APP_ENV) => {
88
88
  const [result, error] = await this.validate(secretKey, token, remoteip, options, timeout, _APP_ENV);
@@ -0,0 +1,17 @@
1
+ import type { NextFunction, Request, RequestHandler, Response } from "express";
2
+ import type { NoInfer } from "./types.js";
3
+ /**
4
+ * Send JSON on the response. Requires an explicit generic payload type at the call site.
5
+ * @template T - Response body type (must be provided explicitly).
6
+ * @param res - Express `Response`.
7
+ * @param data - Serializable payload to send as JSON.
8
+ * @returns The result of `res.json(data)`.
9
+ */
10
+ export declare const SendRes: <T = "Error: A generic type parameter is required">(res: Response, data: NoInfer<T>) => Response<any, Record<string, any>>;
11
+ /**
12
+ * Wrap a route handler so rejected promises and thrown errors are passed to `next(error)`.
13
+ * @param fn - Async or sync Express `RequestHandler`.
14
+ * @returns A middleware that runs `fn` inside `try/catch` and forwards failures to `next`.
15
+ */
16
+ export declare const CatchExpress: (fn: RequestHandler) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
17
+ //# sourceMappingURL=express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,GAAG,6CAA6C,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,uCAAmB,CAAC;AAE9H;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,IAAI,cAAc,MAAY,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,OAAO,CAAC,IAAI,CAOxH,CAAC"}
@@ -0,0 +1,23 @@
1
+ // Express helpers: typed JSON + async error forwarding. Import: `@knsdev/node-utils/express.js`.
2
+ /**
3
+ * Send JSON on the response. Requires an explicit generic payload type at the call site.
4
+ * @template T - Response body type (must be provided explicitly).
5
+ * @param res - Express `Response`.
6
+ * @param data - Serializable payload to send as JSON.
7
+ * @returns The result of `res.json(data)`.
8
+ */
9
+ export const SendRes = (res, data) => res.json(data);
10
+ /**
11
+ * Wrap a route handler so rejected promises and thrown errors are passed to `next(error)`.
12
+ * @param fn - Async or sync Express `RequestHandler`.
13
+ * @returns A middleware that runs `fn` inside `try/catch` and forwards failures to `next`.
14
+ */
15
+ export const CatchExpress = (fn) => async (req, res, next) => {
16
+ try {
17
+ await fn(req, res, next);
18
+ }
19
+ catch (error) {
20
+ next(error);
21
+ }
22
+ };
23
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAGA,iGAAiG;AAEjG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAoD,GAAa,EAAE,IAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE9H;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAiB,EAAE;IAC5H,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,CAAC,CAAC;IACb,CAAC;AACF,CAAC,CAAC"}
package/dist/getEnvv.d.ts CHANGED
@@ -12,9 +12,10 @@ type ResolvedEnv<T extends EnvSchema> = {
12
12
  };
13
13
  /**
14
14
  * Resolve and validate environment variables from a schema.
15
- * @param schema - Map of env keys to expected primitive types.
15
+ * @param schema - Map of env keys to expected primitive types (`string`, `int`, `float`, `boolean`, `appEnv`).
16
16
  * @returns Parsed environment object with inferred value types.
17
- * @throws {Error} If required keys are missing or values fail validation.
17
+ * @throws {Error} When any key is missing/empty or any value fails type checks. The message is two sections joined by
18
+ * a line of `================================`: `Not found keys: …` (if applicable) and `Value errors: …` (if applicable).
18
19
  */
19
20
  export declare const getEnvv: <T extends EnvSchema>(schema: T) => ResolvedEnv<T>;
20
21
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"getEnvv.d.ts","sourceRoot":"","sources":["../src/getEnvv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,OAAO,GAAG;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC;AAE/C,KAAK,WAAW,CAAC,CAAC,SAAS,SAAS,IAAI;KACtC,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,SAAS,EAAE,QAAQ,CAAC,KAAG,WAAW,CAAC,CAAC,CAgErE,CAAC"}
1
+ {"version":3,"file":"getEnvv.d.ts","sourceRoot":"","sources":["../src/getEnvv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,KAAK,OAAO,GAAG;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC;AAE/C,KAAK,WAAW,CAAC,CAAC,SAAS,SAAS,IAAI;KACtC,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,SAAS,EAAE,QAAQ,CAAC,KAAG,WAAW,CAAC,CAAC,CAgErE,CAAC"}
package/dist/getEnvv.js CHANGED
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Resolve and validate environment variables from a schema.
3
- * @param schema - Map of env keys to expected primitive types.
3
+ * @param schema - Map of env keys to expected primitive types (`string`, `int`, `float`, `boolean`, `appEnv`).
4
4
  * @returns Parsed environment object with inferred value types.
5
- * @throws {Error} If required keys are missing or values fail validation.
5
+ * @throws {Error} When any key is missing/empty or any value fails type checks. The message is two sections joined by
6
+ * a line of `================================`: `Not found keys: …` (if applicable) and `Value errors: …` (if applicable).
6
7
  */
7
8
  export const getEnvv = (schema) => {
8
9
  const result = {};
@@ -1 +1 @@
1
- {"version":3,"file":"getEnvv.js","sourceRoot":"","sources":["../src/getEnvv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getEnvv.js","sourceRoot":"","sources":["../src/getEnvv.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,11 @@
1
+ /**
2
+ * Convenience barrel re-exporting public modules. Prefer **per-file** imports from `@knsdev/node-utils/<Module>.js` in apps (matches `package.json` `exports`).
3
+ */
1
4
  export { CookieUtils } from "./Cookies.js";
2
5
  export * from "./bnUtils.js";
3
6
  export type { ECApiCodes } from "./ECApiCodes.js";
4
7
  export * from "./ErrorClasses.js";
8
+ export { CatchExpress, SendRes } from "./express.js";
5
9
  export { FacebookUtils } from "./FBUtils.js";
6
10
  export { getEnvv } from "./getEnvv.js";
7
11
  export { GoogleUtils } from "./GoogleUtils.js";
@@ -15,5 +19,6 @@ export * from "./Rand.js";
15
19
  export { tryCatch, tryCatch2 } from "./tryCatch.js";
16
20
  export { TurnstileValidator } from "./TurnstileValidator.js";
17
21
  export type * from "./types.js";
22
+ export { PageLimit, sleep } from "./utils.js";
18
23
  export { validateUUID } from "./validators.js";
19
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,10 @@
1
+ /**
2
+ * Convenience barrel re-exporting public modules. Prefer **per-file** imports from `@knsdev/node-utils/<Module>.js` in apps (matches `package.json` `exports`).
3
+ */
1
4
  export { CookieUtils } from "./Cookies.js";
2
5
  export * from "./bnUtils.js";
3
6
  export * from "./ErrorClasses.js";
7
+ export { CatchExpress, SendRes } from "./express.js";
4
8
  export { FacebookUtils } from "./FBUtils.js";
5
9
  export { getEnvv } from "./getEnvv.js";
6
10
  export { GoogleUtils } from "./GoogleUtils.js";
@@ -13,5 +17,6 @@ export { PasswordUtils } from "./PassUtils.js";
13
17
  export * from "./Rand.js";
14
18
  export { tryCatch, tryCatch2 } from "./tryCatch.js";
15
19
  export { TurnstileValidator } from "./TurnstileValidator.js";
20
+ export { PageLimit, sleep } from "./utils.js";
16
21
  export { validateUUID } from "./validators.js";
17
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,cAAc,cAAc,CAAC;AAE7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,cAAc,cAAc,CAAC;AAE7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -6,4 +6,5 @@ export type TUserStatuses = 'active' | 'inactive' | 'pending' | 'blocked' | 'del
6
6
  export type TUserGenders = 'male' | 'female' | 'other' | 'prefer_not_to_say';
7
7
  export type TVisibility = 'public' | 'private' | 'protected' | 'hidden';
8
8
  export type TThemes = 'light' | 'dark' | 'system';
9
+ export type NoInfer<T> = [T][T extends unknown ? 0 : never];
9
10
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAC1J,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAC1H,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AACxG,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AACtF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,mBAAmB,CAAC;AAC7E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AACxE,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAC1J,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAC1H,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;AACxG,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AACtF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,mBAAmB,CAAC;AAC7E,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AACxE,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAClD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Resolve after `ms` milliseconds.
3
+ * @param ms - Delay in milliseconds.
4
+ * @returns A promise that resolves with `undefined` after the delay.
5
+ */
6
+ export declare const sleep: (ms: number) => Promise<unknown>;
7
+ /**
8
+ * Normalize common list-query parameters: page, limit, skip, sort, optional search, and remaining keys as string filters.
9
+ * @param query - Typically `req.query` or a similar flat object (values may be string, number, or undefined).
10
+ * @returns Pagination/sorting fields plus `filtersData` (all other keys coerced to string values).
11
+ */
12
+ export declare const PageLimit: (query: {
13
+ [key: string]: string | number | undefined;
14
+ }) => {
15
+ page: number;
16
+ limit: number;
17
+ skip: number;
18
+ sortBy: string;
19
+ sortOrder: string;
20
+ searchTerm?: string;
21
+ filtersData: {
22
+ [key: string]: string;
23
+ };
24
+ };
25
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBAAoD,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,SAAS,GACrB,OAAO;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,KACnD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CAe7I,CAAA"}
package/dist/utils.js ADDED
@@ -0,0 +1,22 @@
1
+ // Timing and list-query helpers. Import: `@knsdev/node-utils/utils.js`.
2
+ /**
3
+ * Resolve after `ms` milliseconds.
4
+ * @param ms - Delay in milliseconds.
5
+ * @returns A promise that resolves with `undefined` after the delay.
6
+ */
7
+ export const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
8
+ /**
9
+ * Normalize common list-query parameters: page, limit, skip, sort, optional search, and remaining keys as string filters.
10
+ * @param query - Typically `req.query` or a similar flat object (values may be string, number, or undefined).
11
+ * @returns Pagination/sorting fields plus `filtersData` (all other keys coerced to string values).
12
+ */
13
+ export const PageLimit = (query) => {
14
+ const { page: rawPage, limit: rawLimit, sortBy: rawSortBy, sortOrder: rawSortOrder, searchTerm, ...filtersData } = query;
15
+ const page = Number(rawPage || 1);
16
+ const limit = Number(rawLimit || 10);
17
+ const skip = (page - 1) * limit;
18
+ const sortBy = rawSortBy || "created_at";
19
+ const sortOrder = rawSortOrder || "desc";
20
+ return { page, limit, skip, sortBy, sortOrder, searchTerm, filtersData };
21
+ };
22
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAErF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACxB,KAAqD,EAC2F,EAAE;IAClJ,MAAM,EACL,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,YAAY,EACvB,UAAU,EACV,GAAG,WAAW,EACd,GAAG,KAAK,CAAC;IACV,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IAChC,MAAM,MAAM,GAAG,SAAS,IAAI,YAAY,CAAC;IACzC,MAAM,SAAS,GAAG,YAAY,IAAI,MAAM,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAmJ,CAAA;AAC1N,CAAC,CAAA"}
package/dist/zod.d.ts CHANGED
@@ -1,12 +1,22 @@
1
1
  import { z } from "zod";
2
+ /** Password string within configured min/max length. */
2
3
  export declare const z_PASSWORD: z.ZodString;
4
+ /** Alphanumeric + hyphen/underscore token of fixed length (`CLengths.GENERAL_TOKEN`). */
3
5
  export declare const z_GENERAL_TOKEN: z.ZodString;
6
+ /** Exactly six decimal digits. */
4
7
  export declare const z_CODE_6_DIGITS: z.ZodString;
8
+ /** URL-safe slug: length bounds and `[a-zA-Z0-9-_]` only. */
5
9
  export declare const z_SLUG: z.ZodString;
10
+ /** Email with configured min/max length (beyond Zod’s built-in email check). */
6
11
  export declare const z_EMAIL: z.ZodEmail;
12
+ /** First name within configured length. */
7
13
  export declare const z_FIRST_NAME: z.ZodString;
14
+ /** Last name within configured length. */
8
15
  export declare const z_LAST_NAME: z.ZodString;
16
+ /** Cloudflare Turnstile response token length bounds. */
9
17
  export declare const z_TURNSTILE_TOKEN: z.ZodString;
18
+ /** Boolean flag for “log out other sessions” style fields. */
10
19
  export declare const z_LOGOUT_OTHER_SESSIONS: z.ZodBoolean;
20
+ /** Boolean flag for “remember me” style fields. */
11
21
  export declare const z_REMEMBER_ME: z.ZodBoolean;
12
22
  //# sourceMappingURL=zod.d.ts.map
package/dist/zod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../src/zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,UAAU,aAEgC,CAAC;AAExD,eAAO,MAAM,eAAe,aAE4B,CAAC;AAEzD,eAAO,MAAM,eAAe,aAE0B,CAAC;AAEvD,eAAO,MAAM,MAAM,aAG4B,CAAC;AAEhD,eAAO,MAAM,OAAO,YAE6B,CAAA;AAEjD,eAAO,MAAM,YAAY,aAEkC,CAAC;AAE5D,eAAO,MAAM,WAAW,aAEiC,CAAC;AAE1D,eAAO,MAAM,iBAAiB,aAEuC,CAAA;AAErE,eAAO,MAAM,uBAAuB,cAAiD,CAAC;AAEtF,eAAO,MAAM,aAAa,cAAuC,CAAC"}
1
+ {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../src/zod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,wDAAwD;AACxD,eAAO,MAAM,UAAU,aAEgC,CAAC;AAExD,yFAAyF;AACzF,eAAO,MAAM,eAAe,aAE4B,CAAC;AAEzD,kCAAkC;AAClC,eAAO,MAAM,eAAe,aAE0B,CAAC;AAEvD,6DAA6D;AAC7D,eAAO,MAAM,MAAM,aAG4B,CAAC;AAEhD,gFAAgF;AAChF,eAAO,MAAM,OAAO,YAE6B,CAAC;AAElD,2CAA2C;AAC3C,eAAO,MAAM,YAAY,aAEkC,CAAC;AAE5D,0CAA0C;AAC1C,eAAO,MAAM,WAAW,aAEiC,CAAC;AAE1D,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,aAEuC,CAAC;AAEtE,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,cAAiD,CAAC;AAEtF,mDAAmD;AACnD,eAAO,MAAM,aAAa,cAAuC,CAAC"}
package/dist/zod.js CHANGED
@@ -1,31 +1,42 @@
1
1
  import { z } from "zod";
2
2
  import { CLengths } from "./CLengths.js";
3
+ // Prebuilt schemas: `CLengths` + `TZodCodes`. Import: `@knsdev/node-utils/zod.js`.
3
4
  const k = (key) => key;
5
+ /** Password string within configured min/max length. */
4
6
  export const z_PASSWORD = z.string(k('PASSWORD__INVALID'))
5
7
  .min(CLengths.PASSWORD.min, k('PASSWORD__MIN_LENGTH'))
6
8
  .max(CLengths.PASSWORD.max, k('PASSWORD__MAX_LENGTH'));
9
+ /** Alphanumeric + hyphen/underscore token of fixed length (`CLengths.GENERAL_TOKEN`). */
7
10
  export const z_GENERAL_TOKEN = z.string(k('GENERAL_TOKEN__INVALID'))
8
11
  .length(CLengths.GENERAL_TOKEN, k('GENERAL_TOKEN__LENGTH'))
9
12
  .regex(/^[a-zA-Z0-9-_]+$/, k('GENERAL_TOKEN__INVALID'));
13
+ /** Exactly six decimal digits. */
10
14
  export const z_CODE_6_DIGITS = z.string(k('CODE_6_DIGITS__INVALID'))
11
15
  .length(CLengths.Code_6_digits, k('CODE_6_DIGITS__LENGTH'))
12
16
  .regex(/^\d{6}$/, k('CODE_6_DIGITS__INVALID_FORMAT'));
17
+ /** URL-safe slug: length bounds and `[a-zA-Z0-9-_]` only. */
13
18
  export const z_SLUG = z.string(k('SLUG__INVALID'))
14
19
  .min(CLengths.SLUG.min, k('SLUG__MIN_LENGTH'))
15
20
  .max(CLengths.SLUG.max, k('SLUG__MAX_LENGTH'))
16
21
  .regex(/^[a-zA-Z0-9-_]+$/, k('SLUG__INVALID'));
22
+ /** Email with configured min/max length (beyond Zod’s built-in email check). */
17
23
  export const z_EMAIL = z.email(k('EMAIL__INVALID'))
18
24
  .min(CLengths.EMAIL.min, k('EMAIL__MIN_LENGTH'))
19
25
  .max(CLengths.EMAIL.max, k('EMAIL__MAX_LENGTH'));
26
+ /** First name within configured length. */
20
27
  export const z_FIRST_NAME = z.string(k('FIRST_NAME__INVALID'))
21
28
  .min(CLengths.FIRST_NAME.min, k('FIRST_NAME__MIN_LENGTH'))
22
29
  .max(CLengths.FIRST_NAME.max, k('FIRST_NAME__MAX_LENGTH'));
30
+ /** Last name within configured length. */
23
31
  export const z_LAST_NAME = z.string(k('LAST_NAME__INVALID'))
24
32
  .min(CLengths.LAST_NAME.min, k('LAST_NAME__MIN_LENGTH'))
25
33
  .max(CLengths.LAST_NAME.max, k('LAST_NAME__MAX_LENGTH'));
34
+ /** Cloudflare Turnstile response token length bounds. */
26
35
  export const z_TURNSTILE_TOKEN = z.string(k('TURNSTILE_TOKEN__INVALID'))
27
36
  .min(CLengths.TURNSTILE_TOKEN.min, k('TURNSTILE_TOKEN__MIN_LENGTH'))
28
37
  .max(CLengths.TURNSTILE_TOKEN.max, k('TURNSTILE_TOKEN__MAX_LENGTH'));
38
+ /** Boolean flag for “log out other sessions” style fields. */
29
39
  export const z_LOGOUT_OTHER_SESSIONS = z.boolean(k('LOGOUT_OTHER_SESSIONS__INVALID'));
40
+ /** Boolean flag for “remember me” style fields. */
30
41
  export const z_REMEMBER_ME = z.boolean(k('REMEMBER_ME__INVALID'));
31
42
  //# sourceMappingURL=zod.js.map
package/dist/zod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"zod.js","sourceRoot":"","sources":["../src/zod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zod.js","sourceRoot":"","sources":["../src/zod.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knsdev/node-utils",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "description": "",
5
5
  "exports": {
6
6
  "./*": {