@observ33r/object-generator
Version:
High-performance, customizable dummy object generator for testing and benchmarking.
3 lines (2 loc) • 2.29 kB
JavaScript
var e=0;const a=[Object,Array,Set,Map],t=[...a,Uint8Array],r=[Boolean,Number,String,Date,RegExp,Uint8Array,NaN,void 0,null],n=4294967296;function s(l){null!=l&&"object"==typeof l||(l={});const i=("string"==typeof l.prefix&&l.prefix.length>0||"number"==typeof l.prefix)&&l.prefix,c=t.includes(l.type)?l.type:Object,$=Math.max(0,Number.isInteger(l.size)?l.size:16),o=Math.max(1,Number.isInteger(l.nestedSize)?l.nestedSize:16),u=Math.max(0,Number.isInteger(l.depth)?l.depth:0),b=Array.isArray(l.valueTypes)?l.valueTypes:[String],p=b.filter((e=>r.includes(e))),d=b.filter((e=>a.includes(e))),h=!1!==l.globalIndex,g=!0===l.circular,f=!0===l.shuffle;let y=f?Number.isInteger(l.seed)?l.seed:Math.floor(Math.random()*n):0;const m=Number.isInteger(l.level)?l.level:0;0===m&&(e=-1),0===d.length&&m<u&&d.push(Object);const x=m>0?o:$,k=m<u||g?p.slice(0,Math.max(0,x-d.length)).concat(d):p.length>0?p:[String],w=k.length,A=g?Math.max(2,w%2==1?w-2:w-1):0,M=c===Uint8Array?new Uint8Array(x):new c,v=f?new Set:null;let N,S,j,I;for(let a=0;a<x;a++){if(f){do{y=(1664525*y+1013904223)%n,N=Math.floor(y/n*x)}while(v.has(N));v.add(N)}else N=a;if(c===Uint8Array){M[a]=N%256;continue}e++;const t=u>0?h?`${$}-${m}-${e}-${N}`:`${$}-${m}-${N}`:`${$}-${N}`,r=k[N%w];if(!g||m!==u-1&&e%A!==0||!d.includes(r)){switch(r){case Boolean:I="boolean",j=N%2==0;break;case Number:I="number",j=N;break;case String:I="string",j=!1!==i?`${i}-value-${t}`:`value-${t}`;break;case Date:I="date",j=h?new Date(2025,e,N):new Date(2025,N);break;case RegExp:I="regexp";j=new RegExp(!1!==i?`${i}-pattern-${t}`:`pattern-${t}`,"g");break;case void 0:I="undefined",j=void 0;break;case null:I="null",j=null;break;case Uint8Array:case Object:case Array:case Map:case Set:I=r.name.toLowerCase(),j=s({...l,type:r,level:m+1,seed:y});break;default:r!=r&&(I="nan",j=NaN)}switch(c){case Object:S=!1!==i?`${i}-${I}-${t}`:`${I}-${t}`,M[S]=j;break;case Array:M.push(j);break;case Map:S=!1!==i?`${i}-${I}-${t}`:`${I}-${t}`,M.set(S,j);break;case Set:M.add(j)}}else switch(I=r.name.toLowerCase(),c){case Object:S=!1!==i?`${i}-${I}-${t}`:`${I}-${t}`,M[S]=M;break;case Array:M.push(M);break;case Map:S=!1!==i?`${i}-${I}-${t}`:`${I}-${t}`,M.set(S,M);break;case Set:M.add(M)}}return M}export{s as objectGenerator};
//# sourceMappingURL=object-generator.esm.js.map