@fnlb-project/shared 1.5.38 → 1.5.40

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.
@@ -1 +1 @@
1
- class b{lockPromise;constructor(){this.lockPromise=void 0}get isLocked(){return!!this.lockPromise}wait(){return this.lockPromise?.promise||Promise.resolve()}lock(){let e,r=new Promise((t)=>{e=t});this.lockPromise={promise:r,resolve:e}}unlock(){this.lockPromise?.resolve(),this.lockPromise=void 0}}import c from"crypto";var h="md5",a="base64url",u=12,T=8,v=64,d=process.env.TOKEN_SECRET;if(!d)throw new Error("TOKEN_SECRET not set.");var m=d;class E{static isValidBase64Url(e){if(!e)return!1;for(let r=0;r<e.length;r++){let t=e.charCodeAt(r);if(!(t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===45||t===95))return!1}return!0}static validateInputLengths(e,r){if(e.length%2!==0||r.length%2!==0)return!1;if(e.length!==u*2)return!1;let t=r.length/2;if(t<T||t>v)return!1;return!0}static encodeToken(e,r){if(!this.validateInputLengths(e,r))return null;try{let t=Buffer.from(e,"hex"),s=Buffer.from(r,"hex"),n=Buffer.concat([t,s]),i=n.toString(a),o=c.createHmac(h,m);o.update(n);let l=o.digest().toString(a);return`${i}.${l}`}catch(t){return console.error("Error encoding token:",t),null}}static decodeToken(e){if(!e)return null;let r=e.split(".");if(r.length!==2)return null;let[t,s]=r;if(!t||!s)return null;if(!this.isValidBase64Url(t)||!this.isValidBase64Url(s))return null;try{let n=Buffer.from(t,a),i=Buffer.from(s,a),o=c.createHmac(h,m);o.update(n);let l=o.digest();if(n.length<u)return null;if(i.length!==l.length)return null;if(!c.timingSafeEqual(i,l))return null;let g=n.subarray(0,u),y=n.subarray(u),p=g.toString("hex"),f=y.toString("hex");if(!this.validateInputLengths(p,f))return null;return{id:p,auth:f}}catch(n){return null}}}class x{static wait(e){return new Promise((r)=>setTimeout(r,e))}}class B extends Map{ttl;constructor(e){super();this.ttl=e}pull(e){return super.get(e)?.value}push(e,r){let t=setTimeout(()=>this.delete(e),this.ttl);return super.set(e,{handle:t,value:r})}remove(e){let r=this.get(e);if(r)clearTimeout(r.handle);return super.delete(e)}modify(e,r){let t=super.get(e);if(t)return t.value=r,!0;return!1}}class _{static cutText(e,r,t=!0){return e.length>r?`${e.slice(0,t?Math.max(r-3,0):r)}${t?"...":""}`:e}}export{_ as TextUtil,B as TemporalMap,x as PromiseUtil,E as AuthUtil,b as AsyncLock,a as AU_STRING_ENCODING,u as AU_ID_BYTE_LENGTH,h as AU_HASH_ALGORITHM,T as AU_AUTH_MIN_BYTE_LENGTH,v as AU_AUTH_MAX_BYTE_LENGTH};
1
+ class y{lockPromise;constructor(){this.lockPromise=void 0}get isLocked(){return!!this.lockPromise}wait(){return this.lockPromise?.promise||Promise.resolve()}lock(){let e,r=new Promise((t)=>{e=t});this.lockPromise={promise:r,resolve:e}}unlock(){this.lockPromise?.resolve(),this.lockPromise=void 0}}import p from"crypto";var m="md5",a="base64url",u=12,b=8,T=64,c=process.env.TOKEN_SECRET;class E{static isValidBase64Url(e){if(!e)return!1;for(let r=0;r<e.length;r++){let t=e.charCodeAt(r);if(!(t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||t===45||t===95))return!1}return!0}static validateInputLengths(e,r){if(e.length%2!==0||r.length%2!==0)return!1;if(e.length!==u*2)return!1;let t=r.length/2;if(t<b||t>T)return!1;return!0}static encodeToken(e,r){if(!c)throw new Error("TOKEN_SECRET not set.");if(!this.validateInputLengths(e,r))return null;try{let t=Buffer.from(e,"hex"),o=Buffer.from(r,"hex"),n=Buffer.concat([t,o]),i=n.toString(a),s=p.createHmac(m,c);s.update(n);let l=s.digest().toString(a);return`${i}.${l}`}catch(t){return console.error("Error encoding token:",t),null}}static decodeToken(e){if(!c)throw new Error("TOKEN_SECRET not set.");if(!e)return null;let r=e.split(".");if(r.length!==2)return null;let[t,o]=r;if(!t||!o)return null;if(!this.isValidBase64Url(t)||!this.isValidBase64Url(o))return null;try{let n=Buffer.from(t,a),i=Buffer.from(o,a),s=p.createHmac(m,c);s.update(n);let l=s.digest();if(n.length<u)return null;if(i.length!==l.length)return null;if(!p.timingSafeEqual(i,l))return null;let d=n.subarray(0,u),g=n.subarray(u),f=d.toString("hex"),h=g.toString("hex");if(!this.validateInputLengths(f,h))return null;return{id:f,auth:h}}catch(n){return null}}}class v{static wait(e){return new Promise((r)=>setTimeout(r,e))}}class x extends Map{ttl;constructor(e){super();this.ttl=e}pull(e){return super.get(e)?.value}push(e,r){let t=setTimeout(()=>this.delete(e),this.ttl);return super.set(e,{handle:t,value:r})}remove(e){let r=this.get(e);if(r)clearTimeout(r.handle);return super.delete(e)}modify(e,r){let t=super.get(e);if(t)return t.value=r,!0;return!1}}class B{static cutText(e,r,t=!0){return e.length>r?`${e.slice(0,t?Math.max(r-3,0):r)}${t?"...":""}`:e}}export{B as TextUtil,x as TemporalMap,v as PromiseUtil,E as AuthUtil,y as AsyncLock,a as AU_STRING_ENCODING,u as AU_ID_BYTE_LENGTH,m as AU_HASH_ALGORITHM,b as AU_AUTH_MIN_BYTE_LENGTH,T as AU_AUTH_MAX_BYTE_LENGTH};
@@ -1 +1 @@
1
- class r{static isValidNumber(t){return!Number.isNaN(t)}static isValidInteger(t){return r.isValidNumber(t)&&Number.isInteger(t)}static isValidString(t){return typeof t==="string"&&!!t.trim()}static isAlphanumeric(t){return r.isValidString(t)&&/^[\w-.=:]+$/.test(t)}static isValidStringArray(t){return t.every((e)=>r.isValidString(e))}static isValidStringList(...t){return r.isValidStringArray(t)}static isStringLengthBetweenLimits(t,e,i){return r.isValidString(t)&&t.length>=e&&t.length<=i}static isStringArrayLengthBetweenLimits(t,e,i){return i.every((n)=>r.isStringLengthBetweenLimits(n,t,e))}static isStringListLengthBetweenLimits(t,e,...i){return r.isStringArrayLengthBetweenLimits(t,e,i)}static isFlatArrayUnique(t){let e=new Set;for(let i of t){if(e.has(i))return!1;e.add(i)}return!0}static isFlatArrayListUnique(...t){return t.every((e)=>r.isFlatArrayUnique(e))}static isArrayUniqueByValue(t,e){let i=new Set;for(let n of t){let s=e?e(n):JSON.stringify(n);if(i.has(s))return!1;i.add(s)}return!0}static isArrayListUniqueByValue(t,...e){return e.every((i)=>r.isArrayUniqueByValue(i,t))}static isValidEmail(t){if(!r.isValidString(t))return!1;let e=t.trim();if(!/^(?![_.-])(?!.*[_.-]{2})[a-zA-Z0-9._-]+(?<![_.-])@[a-zA-Z0-9-]+(\.[a-zA-Z]{2,})+$/.test(e))return!1;if(e.length>254)return!1;let n=e.split("@");if(n.length!==2)return!1;let[s,u]=n;if(!u)return!1;if(!s||s.length>64)return!1;if(u.split(".").some((a)=>a.length===0)||u.startsWith("-")||u.endsWith("-"))return!1;if(["mailinator.com","10minutemail.com","tempmail.com"].includes(u.toLowerCase()))return!1;return!0}}export{r as DataValidator};
1
+ class r{static isValidNumber(t){return typeof t==="number"&&!Number.isNaN(t)}static isValidInteger(t){return r.isValidNumber(t)&&Number.isInteger(t)}static isValidString(t){return typeof t==="string"&&!!t.trim()}static isAlphanumeric(t){return r.isValidString(t)&&/^[\w-.=:]+$/.test(t)}static isValidStringArray(t){return Array.isArray(t)&&t.every((e)=>r.isValidString(e))}static isValidStringList(...t){return r.isValidStringArray(t)}static isStringLengthBetweenLimits(t,e,i){return r.isValidString(t)&&t.length>=e&&t.length<=i}static isStringArrayLengthBetweenLimits(t,e,i){return Array.isArray(i)&&i.every((s)=>r.isStringLengthBetweenLimits(s,t,e))}static isStringListLengthBetweenLimits(t,e,...i){return r.isStringArrayLengthBetweenLimits(t,e,i)}static isFlatArrayUnique(t){if(!Array.isArray(t))return!1;let e=new Set;for(let i of t){if(e.has(i))return!1;e.add(i)}return!0}static isFlatArrayListUnique(...t){return Array.isArray(t)&&t.every((e)=>r.isFlatArrayUnique(e))}static isArrayUniqueByValue(t,e){if(!Array.isArray(t))return!1;let i=new Set;for(let s of t){let a=e?e(s):JSON.stringify(s);if(i.has(a))return!1;i.add(a)}return!0}static isArrayListUniqueByValue(t,...e){return e.every((i)=>r.isArrayUniqueByValue(i,t))}static isValidEmail(t){if(!this.isStringLengthBetweenLimits(t,1,254))return!1;let e=t.trim();if(!/^(?![_.-])[a-zA-Z0-9._-]+(?<![_.-])@[a-zA-Z0-9-]+(\.[a-zA-Z]{2,})+$/.test(e))return!1;if(/[.\-_]{2}/.test(e))return!1;let a=e.split("@");if(a.length!==2)return!1;let[u,m]=a;if(!m)return!1;if(!u||u.length>64)return!1;if(m.split(".").some((n)=>n.length===0||n.startsWith("-")||n.endsWith("-")))return!1;let o=["mailinator.com","10minutemail.com","tempmail.com"],g=m.toLowerCase();if(o.some((n)=>g===n||g.endsWith("."+n)))return!1;return!0}}export{r as DataValidator};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnlb-project/shared",
3
- "version": "1.5.38",
3
+ "version": "1.5.40",
4
4
  "description": "FNLB Shared Library",
5
5
  "files": ["dist"],
6
6
  "author": "FNLB-Project",
@@ -42,7 +42,7 @@
42
42
  "access": "public"
43
43
  },
44
44
  "scripts": {
45
- "build": "bun run build.ts",
45
+ "build": "bun run src/build.ts",
46
46
  "prepublishOnly": "bun run build",
47
47
  "lint": "bun run lint:biome && bun run lint:tsc",
48
48
  "lint:biome": "bun biome check --write .",