UNPKG

@d3vtool/secid

Version:

Generate a fast, secure, and compact unique identifier (ID) for use in modern applications, providing small, URL friendly, and collision resistant values.

2 lines (1 loc) 2.37 kB
"use strict";var __classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(n,e,r,t){if(r==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?n!==e||!t:!e.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?t:r==="a"?t.call(n):t?t.value:e.get(n)},__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(n,e,r,t,o){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?n!==e||!o:!e.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?o.call(n,r):o?o.value=r:e.set(n,r),r},_a,_SecId_usageCounter,_SecId_urlSafeAlphabets,_SecId_getRandomBytes,_SecId_generateRadInt;Object.defineProperty(exports,"__esModule",{value:!0}),exports.SecId=void 0;class SecId{static generate(e=23,r=__classPrivateFieldGet(this,_a,"f",_SecId_urlSafeAlphabets)){var t;__classPrivateFieldSet(this,_a,(t=__classPrivateFieldGet(this,_a,"f",_SecId_usageCounter),++t),"f",_SecId_usageCounter);let o="";const i=__classPrivateFieldGet(this,_a,"m",_SecId_getRandomBytes).call(this,e),d=__classPrivateFieldGet(this,_a,"m",_SecId_generateRadInt).call(this,0,r.length);let s=0;const c=r.length-1;for(let a=0;a<e;++a)i[a]>=c?(s=i[a]%c,s=s>d?s-d:__classPrivateFieldGet(this,_a,"f",_SecId_usageCounter)+s<c-s?__classPrivateFieldGet(this,_a,"f",_SecId_usageCounter)+s:s):s=i[a],o+=r[s];return o}}exports.SecId=SecId,_a=SecId,_SecId_getRandomBytes=function(e=16){const r=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,t=typeof window<"u"&&window.crypto&&window.crypto.getRandomValues;if(r){const{randomBytes:o}=require("crypto");return o(e)}else if(t){const o=new Uint8Array(e);return window.crypto.getRandomValues(o)}else throw new Error("Error: Unkown environment.")},_SecId_generateRadInt=function(e,r){const t=r-e;if(t<0)throw new Error("Error Ending range value cannot be smaller then starting value.");if(t===0)throw new Error("Error Ending range value cannot be equal to starting value.");return Math.floor(Math.random()*(r-e)+1)+e},_SecId_usageCounter={value:0},_SecId_urlSafeAlphabets={value:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-"};