json-schema-faker
Version:
Generate valid JSON data from JSON Schema definitions
8 lines (6 loc) • 43 kB
JavaScript
function u0($){let G=$|0;return()=>{G=G+1831565813|0;let Z=Math.imul(G^G>>>15,1|G);return Z=Z+Math.imul(Z^Z>>>7,61|Z)^Z,((Z^Z>>>14)>>>0)/4294967296}}function x($){let G=u0($),Z=0,J={next(){return Z++,G()},int(X,Q){return X+Math.floor(J.next()*(Q-X+1))},bool(X=0.5){return J.next()<X},pick(X){return X[J.int(0,X.length-1)]},shuffle(X){let Q=[...X];for(let H=Q.length-1;H>0;H--){let Y=J.int(0,H);[Q[H],Q[Y]]=[Q[Y],Q[H]]}return Q},fork(){let X=Math.floor(J.next()*4294967296);return x(X)}};return J}function J0($){return null}function H0($){return $.random.bool()}function d($,G,Z=!1){let J=-1000,X=1000,Q=!1,H=!1;if($.minimum!==void 0)J=$.minimum;if($.maximum!==void 0)X=$.maximum;if($.exclusiveMinimum!==void 0)J=$.exclusiveMinimum,Q=!0;if($.exclusiveMaximum!==void 0)X=$.exclusiveMaximum,H=!0;if($.multipleOf!==void 0)return x0($.multipleOf,J,X,Q,H,G);if(Z){let B=Q?Math.floor(J)+1:Math.ceil(J),K=H?Math.ceil(X)-1:Math.floor(X);return G.random.int(B,K)}let Y=Q?J+Number.EPSILON:J,E=H?X-Number.EPSILON:X;return Y+G.random.next()*(E-Y)}function x0($,G,Z,J,X,Q){let H=Math.ceil(G/$),Y=Math.floor(Z/$);if(J&&H*$===G)H++;if(X&&Y*$===Z)Y--;if(H>Y)return H*$;return Q.random.int(H,Y)*$}function Q0($,G){if($.autoIncrement){let Z=$.initialOffset??1,J=l0(G.path),X=G.autoIncrementCounters??new Map,H=(X.get(J)??Z-1)+1;if(X.set(J,H),G.autoIncrementCounters)G.autoIncrementCounters.set(J,H);return H}return d($,G,!0)}function l0($){return $.split("/").filter((G)=>G!==""&&!/^\d+$/.test(G)).join("/")}function l($,G){let Z=E0($,0);return v(Z.node,G)}function v($,G){switch($.type){case"literal":return $.value;case"dot":return G.pick([..."abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#%&*()-_=+[]{}|;:',.<>/? "]);case"anchor":return"";case"charClass":return n0($,G);case"sequence":return $.nodes.map((Z)=>v(Z,G)).join("");case"alternation":return v(G.pick($.branches),G);case"quantifier":{let Z=G.int($.min,Math.min($.max,$.min+5));return Array.from({length:Z},()=>v($.node,G)).join("")}case"group":return v($.node,G)}}function n0($,G){if(!$.negated)return G.pick($.chars);let Z=new Set($.chars),J=[..."abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#%&*()-_=+[]{}|;:',.<>/? "].filter((X)=>!Z.has(X));return J.length>0?G.pick(J):"a"}function E0($,G){let Z=[],J=[];while(G<$.length){let Q=$[G];if(Q===")")break;if(Q==="|"){Z.push(Y0(J)),J=[],G++;continue}if(Q==="("){let E=G+1;if($[E]==="?")if($[E+1]===":")E+=2;else if($[E+1]==="="||$[E+1]==="!"){let V=1,z=E;while(z<$.length&&V>0){if(z++,$[z]==="(")V++;if($[z]===")")V--}G=z+1;continue}else{E+=2;while(E<$.length&&$[E]!==">")E++;E++}let B=E0($,E),K={type:"group",node:B.node};G=B.pos+1;let N=f($,G,K);J.push(N.node),G=N.pos;continue}if(Q==="["){let E=o0($,G),B=f($,E.pos,E.node);J.push(B.node),G=B.pos;continue}if(Q==="."){let E={type:"dot"};G++;let B=f($,G,E);J.push(B.node),G=B.pos;continue}if(Q==="^"||Q==="$"){J.push({type:"anchor"}),G++;continue}if(Q==="\\"){G++;let E=p0($,G);G=E.pos;let B=f($,G,E.node);J.push(B.node),G=B.pos;continue}let H={type:"literal",value:Q};G++;let Y=f($,G,H);J.push(Y.node),G=Y.pos}return Z.push(Y0(J)),{node:Z.length===1?Z[0]:{type:"alternation",branches:Z},pos:G}}function Y0($){if($.length===0)return{type:"literal",value:""};if($.length===1)return $[0];return{type:"sequence",nodes:$}}function p0($,G){let Z=$[G];switch(G++,Z){case"d":return{node:{type:"charClass",chars:[..."0123456789"],negated:!1},pos:G};case"D":return{node:{type:"charClass",chars:[..."0123456789"],negated:!0},pos:G};case"w":return{node:{type:"charClass",chars:[..."abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"],negated:!1},pos:G};case"W":return{node:{type:"charClass",chars:[..."abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"],negated:!0},pos:G};case"s":return{node:{type:"charClass",chars:[...`
`],negated:!1},pos:G};case"S":return{node:{type:"charClass",chars:[...`
`],negated:!0},pos:G};case"b":case"B":return{node:{type:"anchor"},pos:G};default:return{node:{type:"literal",value:Z},pos:G}}}function o0($,G){G++;let Z=!1;if($[G]==="^")Z=!0,G++;let J=[];while(G<$.length&&$[G]!=="]"){if($[G]==="\\"&&G+1<$.length){G++;let X=$[G];switch(X){case"d":J.push(..."0123456789");break;case"w":J.push(..."abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_");break;case"s":J.push(...`
`);break;default:J.push(X)}G++;continue}if(G+2<$.length&&$[G+1]==="-"&&$[G+2]!=="]"){let X=$.charCodeAt(G),Q=$.charCodeAt(G+2);for(let H=X;H<=Q;H++)J.push(String.fromCharCode(H));G+=3;continue}J.push($[G]),G++}return G++,{node:{type:"charClass",chars:J,negated:Z},pos:G}}function f($,G,Z){if(G>=$.length)return{node:Z,pos:G};let J=$[G],X,Q;switch(J){case"*":X=0,Q=5,G++;break;case"+":X=1,Q=5,G++;break;case"?":X=0,Q=1,G++;break;case"{":{let H=h0($,G);if(H)X=H.min,Q=H.max,G=H.pos;else return{node:Z,pos:G};break}default:return{node:Z,pos:G}}if(G<$.length&&($[G]==="?"||$[G]==="+"))G++;return{node:{type:"quantifier",node:Z,min:X,max:Q},pos:G}}function h0($,G){let Z=$.slice(G).match(/^\{(\d+)(?:,(\d*))?\}/);if(!Z)return null;let J=parseInt(Z[1],10),X;if(Z[2]===void 0)X=J;else if(Z[2]==="")X=J+5;else X=parseInt(Z[2],10);return{min:J,max:X,pos:G+Z[0].length}}function T($){return $<10?`0${$}`:`${$}`}function W0($,G){return new Date($,G,0).getDate()}var B0="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function m0($){if($==="^"||$==="$"||$==="^$")return!1;return!0}function _0($,G){if($.format){if($.format==="date-time"&&(G.minDateTime!==void 0||G.maxDateTime!==void 0))return r0(G);let H=G.formatRegistry.get($.format);if(H){let Y=H(G.random),E=G.minLength??$.minLength,B=G.maxLength??$.maxLength;if(E!==void 0&&Y.length<E)return n(Y,E,G);if(B!==void 0&&Y.length>B)return Y.slice(0,B);return Y}}if($.pattern){let H=G.minLength??$.minLength,Y=G.maxLength??$.maxLength,E=50;for(let N=0;N<50;N++){let V=l($.pattern,G.random);if(H!==void 0&&V.length<H)continue;if(Y!==void 0&&V.length>Y)continue;return V}let B=l($.pattern,G.random),K=m0($.pattern);if(H!==void 0&&B.length<H){if(K)return n(B,H,G)}if(Y!==void 0&&B.length>Y)return B.slice(0,Y);return B}let Z=$.minLength??0,J=$.maxLength??Math.max(Z+10,10),X=G.random.int(Z,J),Q="";for(let H=0;H<X;H++)Q+=G.random.pick([...B0]);if(G.maxLength!==void 0&&Q.length>G.maxLength)Q=Q.slice(0,G.maxLength);if(G.minLength!==void 0&&Q.length<G.minLength)Q=n(Q,G.minLength,G);return Q}function n($,G,Z){while($.length<G)$+=Z.random.pick([...B0]);return $}function r0($){let G=$.minDateTime?new Date($.minDateTime):new Date("1970-01-01"),Z=$.maxDateTime?new Date($.maxDateTime):new Date,J=G.getTime(),X=Z.getTime(),Q=J+$.random.next()*(X-J),H=new Date(Q),Y=H.getFullYear(),E=T(H.getMonth()+1),B=T(H.getDate());return`${Y}-${E}-${B}T01:01:01.0Z`}function p($,G){if($.const!==void 0)return structuredClone($.const);if($.enum!==void 0&&$.enum.length>0){let Z=$.enum;if($.minimum!==void 0||$.maximum!==void 0||$.exclusiveMinimum!==void 0||$.exclusiveMaximum!==void 0||$.multipleOf!==void 0){let X=$.exclusiveMinimum??$.minimum??-1/0,Q=$.exclusiveMaximum??$.maximum??1/0,H=$.exclusiveMinimum!==void 0,Y=$.exclusiveMaximum!==void 0;Z=Z.filter((E)=>{if(typeof E!=="number")return!0;let B=H?E>X:E>=X,K=Y?E<Q:E<=Q;if(!B||!K)return!1;if($.multipleOf!==void 0){let N=$.multipleOf,V=N.toString().includes(".")?N.toString().split(".")[1].length:0,z=Math.pow(10,V),R=Math.round(E*z),b=Math.round(N*z);if(R%b!==0)return!1}return!0})}if($.minLength!==void 0||$.maxLength!==void 0){let X=$.minLength??0,Q=$.maxLength??1/0;Z=Z.filter((H)=>{if(typeof H!=="string")return!0;return H.length>=X&&H.length<=Q})}if($.minItems!==void 0||$.maxItems!==void 0){let X=$.minItems??0,Q=$.maxItems??1/0;Z=Z.filter((H)=>{if(!Array.isArray(H))return!0;return H.length>=X&&H.length<=Q})}if($.minProperties!==void 0||$.maxProperties!==void 0){let X=$.minProperties??0,Q=$.maxProperties??1/0;Z=Z.filter((H)=>{if(typeof H!=="object"||H===null||Array.isArray(H))return!0;return Object.keys(H).length>=X&&Object.keys(H).length<=Q})}if(Z.length===0){let X=[];if($.minLength!==void 0)X.push(`minLength: ${$.minLength}`);if($.maxLength!==void 0)X.push(`maxLength: ${$.maxLength}`);if($.minItems!==void 0)X.push(`minItems: ${$.minItems}`);if($.maxItems!==void 0)X.push(`maxItems: ${$.maxItems}`);if($.minProperties!==void 0)X.push(`minProperties: ${$.minProperties}`);if($.maxProperties!==void 0)X.push(`maxProperties: ${$.maxProperties}`);if($.minimum!==void 0)X.push(`minimum: ${$.minimum}`);if($.maximum!==void 0)X.push(`maximum: ${$.maximum}`);if($.exclusiveMinimum!==void 0)X.push(`exclusiveMinimum: ${$.exclusiveMinimum}`);if($.exclusiveMaximum!==void 0)X.push(`exclusiveMaximum: ${$.exclusiveMaximum}`);if($.multipleOf!==void 0)X.push(`multipleOf: ${$.multipleOf}`);throw Error(`enum values conflict with constraints [${X.join(", ")}] at ${G.path}`)}let J=G.random.pick(Z);return typeof J==="object"&&J!==null?structuredClone(J):J}throw Error(`generateEnumConst called without enum or const at ${G.path}`)}function C($){let G={};for(let Z of $){if(typeof Z==="boolean"){if(!Z)return{not:{}};continue}D0(G,Z)}return G}function M0($,G){if(typeof $==="boolean"||typeof G==="boolean")return{};if(typeof $!=="object"||$===null)return typeof G==="object"&&G!==null?G:{};if(typeof G!=="object"||G===null)return $;let Z={...$};return D0(Z,G),Z}function D0($,G){if(G.type!==void 0)if($.type===void 0)$.type=G.type;else $.type=c0($.type,G.type);if(G.minimum!==void 0)$.minimum=$.minimum!==void 0?Math.max($.minimum,G.minimum):G.minimum;if(G.maximum!==void 0)$.maximum=$.maximum!==void 0?Math.min($.maximum,G.maximum):G.maximum;if(G.exclusiveMinimum!==void 0)$.exclusiveMinimum=$.exclusiveMinimum!==void 0?Math.max($.exclusiveMinimum,G.exclusiveMinimum):G.exclusiveMinimum;if(G.exclusiveMaximum!==void 0)$.exclusiveMaximum=$.exclusiveMaximum!==void 0?Math.min($.exclusiveMaximum,G.exclusiveMaximum):G.exclusiveMaximum;if(G.multipleOf!==void 0)$.multipleOf=G.multipleOf;if(G.minLength!==void 0)$.minLength=$.minLength!==void 0?Math.max($.minLength,G.minLength):G.minLength;if(G.maxLength!==void 0)$.maxLength=$.maxLength!==void 0?Math.min($.maxLength,G.maxLength):G.maxLength;if(G.pattern!==void 0)$.pattern=G.pattern;if(G.format!==void 0)$.format=G.format;if(G.minItems!==void 0)$.minItems=$.minItems!==void 0?Math.max($.minItems,G.minItems):G.minItems;if(G.maxItems!==void 0)$.maxItems=$.maxItems!==void 0?Math.min($.maxItems,G.maxItems):G.maxItems;if(G.uniqueItems)$.uniqueItems=!0;if(G.items!==void 0)$.items=G.items;if(G.prefixItems!==void 0)if($.prefixItems===void 0)$.prefixItems=G.prefixItems;else{let Z=[],J=Math.max($.prefixItems.length,G.prefixItems.length);for(let X=0;X<J;X++){let Q=$.prefixItems[X],H=G.prefixItems[X];if(Q!==void 0&&H!==void 0)Z.push(M0(Q,H));else if(Q!==void 0)Z.push(Q);else if(H!==void 0)Z.push(H)}$.prefixItems=Z}if(G.contains!==void 0)if($.containsAll!==void 0)$.containsAll=[...$.containsAll,G.contains];else if($.contains!==void 0)$.containsAll=[$.contains,G.contains],delete $.contains;else $.contains=G.contains;if(G.properties)$.properties=s0($.properties??{},G.properties);if(G.required)$.required=[...new Set([...$.required??[],...G.required])];if(G.additionalProperties!==void 0)$.additionalProperties=G.additionalProperties;if(G.patternProperties)$.patternProperties={...$.patternProperties??{},...G.patternProperties};if(G.minProperties!==void 0)$.minProperties=$.minProperties!==void 0?Math.max($.minProperties,G.minProperties):G.minProperties;if(G.maxProperties!==void 0)$.maxProperties=$.maxProperties!==void 0?Math.min($.maxProperties,G.maxProperties):G.maxProperties;if(G.const!==void 0)$.const=G.const;if(G.enum!==void 0)if($.enum!==void 0){let Z=new Set(G.enum.map((J)=>JSON.stringify(J)));$.enum=$.enum.filter((J)=>Z.has(JSON.stringify(J)))}else $.enum=G.enum;if(G.$ref)$.$ref=G.$ref;if(G.$defs)$.$defs={...$.$defs??{},...G.$defs};if(G.allOf)$.allOf=[...$.allOf??[],...G.allOf];if(G.anyOf)$.anyOf=G.anyOf;if(G.oneOf)$.oneOf=G.oneOf}function c0($,G){let Z=Array.isArray($)?$:[$],J=Array.isArray(G)?G:[G],X=Z.filter((Q)=>J.includes(Q));if(X.length===0)return Z[0];if(X.length===1)return X[0];return X}function s0($,G){let Z={...$};for(let[J,X]of Object.entries(G)){let Q=$[J];if(Q===void 0)Z[J]=X;else if(typeof Q==="object"&&typeof X==="object")Z[J]=M0(Q,X);else Z[J]=X}return Z}var k=new Set(["$schema","$id","$ref","$defs","$anchor","$dynamicRef","$dynamicAnchor","$vocabulary","$comment","type","enum","const","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","format","contentEncoding","contentMediaType","contentSchema","items","prefixItems","contains","minItems","maxItems","uniqueItems","minContains","maxContains","properties","required","additionalProperties","patternProperties","minProperties","maxProperties","propertyNames","dependentRequired","dependentSchemas","allOf","anyOf","oneOf","not","if","then","else","faker","chance","jsonPath","template","default","examples","description","title","readOnly","writeOnly","deprecated"]);function i($){if(typeof $!=="object"||$===null)return!1;return Object.keys($).some((Z)=>k.has(Z))}function U0($,G){if(typeof G!=="object"||G===null)return!1;let Z=G;if(Z.const!==void 0)return $===Z.const;if(Z.enum!==void 0)return Z.enum.some((J)=>J===$);return!1}function t0($){if(typeof $==="boolean")return!$;if(typeof $!=="object"||$===null)return!1;if($.not===!0||typeof $.not==="object"&&$.not!==null&&Object.keys($.not).length===0)return!0;return!1}function a0($){if($.properties)return $.properties;if($.type==="object"||$.type===void 0){let G={},Z=!1;for(let[J,X]of Object.entries($)){if(k.has(J))continue;if(i(X))G[J]=X,Z=!0;else G[J]={const:X},Z=!0}if(Z)return G}return{}}function e0($,G){if($.required)return $.required;if($.properties===void 0&&Object.keys(G).length>0)return Object.keys(G);return[]}async function A0($,G){let Z=a0($),J=e0($,Z);if(G.depth>=G.maxDepth){if(J.length===0)return{};let W={};for(let _ of J){let D=Z[_];if(D&&typeof D==="object"&&D!==null){let U=D;if(U.const!==void 0)W[_]=U.const;else if(U.default!==void 0)W[_]=U.default;else if(U.enum!==void 0&&U.enum.length>0)W[_]=U.enum[0];else W[_]=X1(U.type)}else W[_]=null}return W}if($.additionalProperties===!1){let W=Object.keys(Z).length>0,_=$.patternProperties&&Object.keys($.patternProperties).length>0,D=new Set(Object.keys(Z)),M=[...new Set(J)].filter((A)=>!D.has(A));if(($.minProperties??0)>0&&!W&&!_)throw Error(`missing properties for ${$.minProperties} in ${G.path}: additionalProperties is false but no properties or patternProperties defined`);if(M.length>0&&!_&&!W)throw Error(`missing properties for ${M.join(", ")} in ${G.path}: additionalProperties is false but required properties not defined in properties`)}let X=G.path==="/"?"/properties":`${G.path}/properties`,Q={...G,depth:G.depth+1,path:X},H={},Y=new Set,E=new Set(J),B=G.alwaysFakeOptionals??!1,K=G.fillProperties??!0,N=G.fixedProbabilities??!1,V=G.optionalsProbability??0.5,z=Object.keys(Z).filter((W)=>!E.has(W)),R;if(N&&!B&&z.length>0){let W=Math.round(z.length*V);R=new Set(z.slice(0,W))}let b=(W)=>{if(B)return!0;if(R)return R.has(W);return G.random.bool(V)};if(Object.keys(Z).length>0)for(let[W,_]of Object.entries(Z)){if(t0(_))continue;Y.add(W);let D=P(Q,W),U=E.has(W),M=typeof _==="object"&&_!==null&&_.type==="object",A=_;if($.patternProperties&&typeof _==="object"&&_!==null){let L=[];for(let[q,j]of Object.entries($.patternProperties))try{if(new RegExp(q).test(W))L.push(j)}catch{}if(L.length>0)A=C([_,...L])}if(U){let L=await F(A,D);if(L!==void 0)H[W]=L}else if(b(W)){let L=await F(A,D);if(L!==void 0)H[W]=L}else if(M&&!K){let L=_.required??[];if(L.length>0){let q={};for(let j of L){let d0=(_.properties??{})[j]??{},i0=P(D,j),X0=await F(d0,i0);if(X0!==void 0)q[j]=X0}H[W]=q}}}for(let W of E){if(H[W]!==void 0||Y.has(W))continue;if($.patternProperties){let _=[];for(let[D,U]of Object.entries($.patternProperties))if(new RegExp(D).test(W))_.push(U);if(_.length>0){let D=_.length===1?_[0]:C(_),U=P(Q,W),M=await F(D,U);if(M!==void 0)H[W]=M;Y.add(W)}}if(!Y.has(W)){let _=$.additionalProperties??!0;if(_!==!1){let D=P(Q,W),U=await F(_===!0?{}:_,D);if(U!==void 0)H[W]=U;Y.add(W)}}}if($.dependencies)for(let[W,_]of Object.entries($.dependencies)){if(typeof _!=="object"||_===null||Array.isArray(_))continue;if(H[W]!==void 0&&!Y.has(W+"_dep")){Y.add(W+"_dep");let D=_.oneOf??_.anyOf??_.allOf??[_],U=null;for(let M of D){if(typeof M!=="object"||M===null)continue;let{properties:A,not:L}=M;if(A&&A[W]){let q=A[W],j=H[W];if(U0(j,q)){U=M;break}}if(L?.properties){let q=L.properties[W];if(q){let j=H[W];if(!U0(j,q)){U=M;break}}}}if(!U&&D.length>0&&typeof D[0]==="object")U=D[0];if(U?.not){let M=U.not;if(M.required&&Array.isArray(M.required))for(let A of M.required)delete H[A]}if(U?.required)for(let M of U.required){if(M===W)continue;if(H[M]!==void 0)continue;let A=U.properties?.[M]??{type:"object"},L=P(Q,M),q=await F(A,L);if(q!==void 0)H[M]=q}if(U&&U.properties)for(let[M,A]of Object.entries(U.properties)){if(M===W)continue;let L=P(Q,M),q=await F(A,L);if(q!==void 0)H[M]=q}}}let O=$.minProperties??0,I=$.maxProperties;if(Object.keys(H).length<O){if($.patternProperties&&Object.keys($.patternProperties).length>0){let W=Object.entries($.patternProperties),_=0,D=1000;while(Object.keys(H).length<O&&_<D){_++;let[U,M]=G.random.pick(W),A=Z1(U,G);if(A&&!H[A]){let L=P(Q,A),q=await F(M,L);if(q!==void 0)H[A]=q;Y.add(A)}}}if(Object.keys(H).length<O){let W=$.additionalProperties,_=W===void 0||W===!0?{type:"string"}:W;if(_!==!1){let D=0,U=1000;while(Object.keys(H).length<O&&D<U){D++;let M=`prop${G.random.int(0,99999)}`;if(!H[M]){let A=P(Q,M),L=await F(_,A);if(L!==void 0)H[M]=L;Y.add(M)}}}}if(Object.keys(H).length<O){let W=Object.keys(Z).join(", ");throw Error(`properties '${W}' were not found while additionalProperties is false in ${G.path}`)}}if(I!==void 0&&Object.keys(H).length>I){let _=Object.keys(H).filter((D)=>!E.has(D));G.random.shuffle(_);while(Object.keys(H).length>I&&_.length>0){let D=_.pop();delete H[D]}}if(G.pruneProperties&&G.pruneProperties.length>0)o(H,G.pruneProperties);return G1(H,Z),H}function P($,G){let Z=$1(G),J=$.outputPath==="/"?`/${Z}`:`${$.outputPath}/${Z}`;return{...$,path:`${$.path}/${G}`,outputPath:J}}function $1($){return $.replace(/~/g,"~0").replace(/\//g,"~1")}function G1($,G){for(let[Z,J]of Object.entries(G)){if(typeof J!=="object"||J===null)continue;let X=J;if(X.template===void 0)continue;let Q=X.template;if(typeof Q!=="string")continue;let H=Q.replace(/#\{(\w+)\}/g,(Y,E)=>{let B=$[E];return B!==void 0?String(B):""});$[Z]=H}}function Z1($,G){let Z=$.match(/^\^([a-zA-Z]+)(\.\*|\(\?\:.*\))?/);if(Z){let E=Z[1],B=Z[2];if(B===".*"||B?.includes("?:")){let K=G.random.int(0,10),N="abcdefghijklmnopqrstuvwxyz",V="";for(let z=0;z<K;z++)V+=G.random.pick("abcdefghijklmnopqrstuvwxyz".split(""));return E+V}return E}let J=$.match(/(.*\*)?([a-zA-Z]+)\$$/);if(J){let E=J[2],B=G.random.int(1,10),K="abcdefghijklmnopqrstuvwxyz",N="";for(let V=0;V<B;V++)N+=G.random.pick("abcdefghijklmnopqrstuvwxyz".split(""));return N+E}let X=$.match(/^\^([a-zA-Z]+)\$$/);if(X)return X[1];let Q=G.random.int(3,10),H="abcdefghijklmnopqrstuvwxyz",Y="";for(let E=0;E<Q;E++)Y+=G.random.pick(H.split(""));try{if(new RegExp($).test(Y))return Y}catch{}return null}function o($,G){if(typeof $!=="object"||$===null)return;if(Array.isArray($)){for(let J of $)o(J,G);return}let Z=$;for(let J of Object.keys(Z))if(G.includes(J))delete Z[J];else o(Z[J],G)}function X1($){switch(Array.isArray($)?$[0]:$){case"string":return"";case"number":case"integer":return 0;case"boolean":return!1;case"null":return null;case"array":return[];case"object":return{};default:return null}}async function N0($,G){if(G.depth>=G.maxDepth){let W=$.minItems??0;return W>0?Array.from({length:W},()=>null):[]}if(G.refDepthReached){let W=$.minItems??0;return W>0?Array.from({length:W},()=>null):[]}if($.items===!1&&($.minItems??0)>0){let W=$.prefixItems?.length??0;if(($.minItems??0)>W)throw Error(`missing items for ${$.minItems} in ${G.path}: items is false but minItems (${$.minItems}) exceeds prefixItems count (${W})`)}let Z=G.path==="/"?"/items":`${G.path}/items`,J={...G,depth:G.depth+1,path:Z},X=[],Q=G.refDepthMax,H=G.minItems??$.minItems??0,Y=G.maxItems??$.maxItems??Math.max(H,G.maxDefaultItems);if($.maxItems!==void 0&&Y>$.maxItems)Y=$.maxItems;if($.minItems!==void 0&&H<$.minItems)H=$.minItems;if(Y<H)if($.maxItems!==void 0)H=Y;else Y=H;if(G.alwaysFakeOptionals)Y=Math.max(H,Y);let E=$.uniqueItems?new Set:null,B=async(W,_)=>{let D=await F(W,_);if(D===void 0)return"omitted";if(E){let U=JSON.stringify(D);if(E.has(U)){for(let M=0;M<50;M++){if(D=await F(W,S(J,X.length)),D===void 0)continue;let A=JSON.stringify(D);if(!E.has(A))return E.add(A),X.push(D),"added"}return"failed"}E.add(U)}return X.push(D),"added"};if($.prefixItems)for(let W=0;W<$.prefixItems.length&&X.length<Y;W++){let _=S(J,W);if(await B($.prefixItems[W],_)==="failed")break}let K;if(Q!==void 0&&G.refDepth>=Q-1){let W=$.minItems??0;return W>0?Array.from({length:W},()=>null):[]}let N=G.alwaysFakeOptionals??!1,V=G.fixedProbabilities??!1,z=G.optionalsProbability??0.5;if(N)K=Y;else if(V){let W=Y-Math.max(H,X.length),_=Math.round(W*z);K=Math.max(H,X.length)+_}else K=G.random.int(Math.max(H,X.length),Y);let R=$.items!==void 0,b=$.prefixItems!==void 0,O=$.additionalItems!==void 0,I;if(b){if(O)I=$.additionalItems;else if($.items!==void 0)I=$.items}else I=$.items;if(I!==!1&&I!==void 0){let W=I??{},_=0,D=Math.max(K*20,50);while(X.length<K){let U=await B(W,S(J,X.length));if(U==="added"){_=0;continue}if(_++,U==="failed"||_>=D)break}}if($.contains){let W=$.minContains??1,_=$.maxContains??Math.max(W,1),D=G.random.int(W,_);for(let U=0;U<D;U++){let M=await F($.contains,S(J,X.length));if(M===void 0)continue;if(E){let A=JSON.stringify(M);if(E.has(A)){let L=!1;for(let q=0;q<50;q++){if(M=await F($.contains,S(J,X.length)),M===void 0)continue;let j=JSON.stringify(M);if(!E.has(j)){E.add(j),L=!0;break}}if(!L)continue}else E.add(A)}if(X.length<Y){let A=G.random.int(0,X.length);X.splice(A,0,M)}else if(X.length>0){let A=G.random.int(0,X.length-1);X[A]=M}}while(X.length>Y)X.pop()}if($.containsAll){let W=new Set;for(let _ of $.containsAll){let D=await F(_,S(J,X.length));if(D===void 0)continue;if(E){let U=JSON.stringify(D);if(E.has(U)){let M=!1;for(let A=0;A<50;A++){if(D=await F(_,S(J,X.length)),D===void 0)continue;let L=JSON.stringify(D);if(!E.has(L)){E.add(L),M=!0;break}}if(!M)continue}else E.add(U)}if(X.length<Y){let U=G.random.int(0,X.length);X.splice(U,0,D);let M=new Set;for(let A of W)M.add(A>=U?A+1:A);W.clear();for(let A of M)W.add(A);W.add(U)}else if(X.length>0){let U=Array.from({length:X.length},(M,A)=>A).filter((M)=>!W.has(M));if(U.length>0){let M=U[G.random.int(0,U.length-1)];X[M]=D,W.add(M)}else X.push(D),W.add(X.length-1)}}while(X.length>Y)X.pop()}if($.uniqueItems&&X.length>0)return J1(X,$,J,H,Y,E);return X}async function J1($,G,Z,J,X,Q){let H=G.items??{},Y=0,E=100;while($.length<J&&Y<E){Y++;let B=await F(H,S(Z,$.length));if(B===void 0)continue;let K=JSON.stringify(B);if(!Q.has(K))Q.add(K),$.push(B)}while($.length>X)$.pop();return $}function S($,G){let Z=$.outputPath==="/"?`/${G}`:`${$.outputPath}/${G}`;return{...$,path:`${$.path}/${G}`,outputPath:Z}}function H1($={}){let G=$.cache??new Map,Z=$.baseUrl;return async(J)=>{let{url:X,fragment:Q}=Q1(J,Z),H;if(G.has(X))H=G.get(X);else{if(X.startsWith("http://")||X.startsWith("https://"))H=await Y1(X,$.fetch);else if(X.startsWith("file://")){let Y=decodeURIComponent(X.slice(7));H=await K0(Y,$.readFile)}else H=await K0(X,$.readFile);G.set(X,H)}return H}}function Q1($,G){let Z=$.indexOf("#");if(Z===-1)return{url:F0($,G),fragment:null};let J=$.slice(0,Z),X=$.slice(Z+1);return{url:F0(J||"#",G),fragment:X||null}}function F0($,G){if(!G||$.startsWith("http://")||$.startsWith("https://")||$.startsWith("file://"))return $==="#"?G||"#":$;if(G.startsWith("file://")){let Z=G.slice(7),J=Z.includes("/")?"/":"\\",X=Z.lastIndexOf(J);return(X>=0?Z.slice(0,X+1):"")+$}try{return new URL($,G).href}catch{return $}}async function Y1($,G){let Z=G??globalThis.fetch;if(!Z)throw Error(`Cannot fetch ${$}: fetch is not available. Provide a custom fetch function via the 'fetch' option.`);let J=await Z($);if(!J.ok)throw Error(`Failed to fetch schema from ${$}: ${J.status} ${J.statusText}`);if((J.headers.get("content-type")||"").includes("application/json"))return J.json();let Q=await J.text();try{return JSON.parse(Q)}catch(H){throw Error(`Failed to parse schema from ${$} as JSON: ${H}`)}}async function K0($,G){if(!G)throw Error(`Cannot read file ${$}: readFile is not available. Provide a custom readFile function via the 'readFile' option. In Node.js, import { readFile } from "node:fs/promises" and pass it as an option.`);let Z=await G($);return JSON.parse(Z)}function h($,G){if(!G||G==="")return $;if(typeof $!=="object"||$===null)throw Error(`Cannot resolve fragment "${G}" in non-object schema`);if(G.startsWith("/"))return E1($,G);throw Error(`Unsupported fragment type: ${G}. Only JSON pointers (starting with /) are supported.`)}function E1($,G){if(G===""||G==="/")return $;let Z=G.slice(1).split("/"),J=$;for(let X of Z){let Q=X.replace(/~1/g,"/").replace(/~0/g,"~");if(typeof J!=="object"||J===null)throw Error(`Cannot resolve JSON pointer "${G}": not an object at "${Q}"`);if(Array.isArray(J)){let H=parseInt(Q,10);if(isNaN(H)||H<0||H>=J.length)throw Error(`Cannot resolve JSON pointer "${G}": invalid array index "${Q}"`);J=J[H]}else{if(!(Q in J))throw Error(`Cannot resolve JSON pointer "${G}": property "${Q}" not found`);J=J[Q]}}return J}function V0($){let G=new Map;if(typeof $==="boolean")return G;if($.$id&&typeof $==="object"){let Z=$,J=Z.$id,{$id:X,...Q}=Z;G.set(J,Q)}if($.$defs)for(let[Z,J]of Object.entries($.$defs))G.set(`#/$defs/${Z}`,J);return G}async function y($,G){let Z=$.$ref;if(!Z)return{schema:$,ctx:G};let J=G.refDepth+1;if(G.refDepthMax!==void 0&&J>=G.refDepthMax)return{schema:{},ctx:{...G,refDepthReached:!0}};if(G.refStack.has(Z)){if(G.refDepthMax!==void 0){if(G.refDepth>=G.refDepthMax)return{schema:{},ctx:{...G,refDepthReached:!0}}}else if(G.depth>=G.maxDepth)return{schema:{type:"null"},ctx:G}}let X,Q;if(Z.startsWith("#/")){if(X=G.refRegistry.get(Z),X===void 0&&Z.length>2){let N=G.refRegistry.get("#");if(N!==void 0&&typeof N==="object")try{X=h(N,Z.slice(1))}catch{}}if(X===void 0&&G.refResolver){if(X=await G.refResolver(Z),X!==void 0)G.refRegistry.set(Z,X)}}else if(Z==="#")X=G.refRegistry.get("#")??{};else if(X=G.refRegistry.get(Z),X===void 0&&G.refResolver){Q=await G.refResolver(Z);let N=Z.indexOf("#");if(N!==-1){let V=Z.slice(N+1);if(V)X=h(Q,V);else X=Q}else X=Q;if(Q&&typeof Q==="object"&&Q!==null){let V=Q;if(V.$defs)for(let[z,R]of Object.entries(V.$defs))G.refRegistry.set(`#/$defs/${z}`,R)}}if(X===void 0)throw Error(`Unresolved $ref: ${Z}`);let H=new Set(["description","title","$comment","readOnly","writeOnly","deprecated"]),{$ref:Y,...E}=$,B=Object.fromEntries(Object.entries(E).filter(([N])=>!H.has(N)));if(Object.keys(B).length>0&&typeof X==="object"&&X!==null)X={...X,...B};let K={...G,refStack:new Set([...G.refStack,Z]),refDepth:G.refDepth+1};return{schema:X,ctx:K}}function L0($,G){if(typeof $==="boolean")return;G.set("#",$),m($,"#",G)}function m($,G,Z){if($.$id){let{$id:J,...X}=$;Z.set(J,X)}if($.$defs)for(let[J,X]of Object.entries($.$defs)){let Q=`${G}/$defs/${J}`;if(Z.set(Q,X),typeof X==="object"&&X!==null)m(X,Q,Z)}if($.properties){for(let[J,X]of Object.entries($.properties))if(typeof X==="object"&&X!==null)m(X,`${G}/properties/${J}`,Z)}}async function W1($,G){if(!$.$ref)return $;return(await y($,G)).schema}async function B1($,G){let Z=[];for(let J of $)if(typeof J==="object"&&J!==null&&"$ref"in J){let X=await W1(J,G);Z.push(X)}else if(typeof J==="object"&&J!==null)Z.push(J);return Z}async function z0($,G){let{allOf:Z,anyOf:J,oneOf:X,not:Q,if:H,then:Y,else:E,...B}=$;if(Z){let K=await B1(Z,G),N=C([B,...K]);return F(N,G)}if(X){let K=G.random.shuffle([...X]),N=B.required??[];for(let _ of K){let D=typeof _==="object"&&_!==null?_:{};if(D.$ref)D=(await y(D,G)).schema;let U=D.required??[],M=[...new Set([...N,...U])],A={...B,required:M},L=C([A,D]),q={...G,optionalsProbability:0,alwaysFakeOptionals:!1};try{return await F(L,q)}catch{}}let V=X[0],z=typeof V==="object"&&V!==null?V:{};if(z.$ref)z=(await y(z,G)).schema;let R=z.required??[],b=[...new Set([...N,...R])],O={...B,required:b},I=C([O,z]),W={...G,optionalsProbability:0,alwaysFakeOptionals:!1};return F(I,W)}if(J){let K=G.random.shuffle([...J]);for(let z of K){let R=C([B,z]);try{return await F(R,G)}catch{}}let N=J[0],V=C([B,N]);return F(V,G)}if(H!==void 0)return _1(B,H,Y,E,G);if(Q)return M1(B,Q,G);return F(B,G)}async function _1($,G,Z,J,X){if(Z!==void 0){let Q=C([$,G,Z]);try{return await F(Q,X)}catch{}}if(J!==void 0){let Q=C([$,J]);try{return await F(Q,X)}catch{}}return F($,X)}async function M1($,G,Z){if(typeof G==="boolean"){if(G===!0)throw Error(`Cannot generate value for 'not: true' at ${Z.path}`);return F($,Z)}if(G.type&&!G.enum&&!G.const){let J=Array.isArray(G.type)?G.type:[G.type],Q=["string","number","integer","boolean","null","object","array"].filter((H)=>!J.includes(H));if(Q.length>0){let H=Z.random.pick(Q),Y=C([$,{type:H}]);return F(Y,Z)}}if(G.const!==void 0||G.enum!==void 0){let J=G.enum??[G.const],X=new Set(J.map((Q)=>JSON.stringify(Q)));for(let Q=0;Q<20;Q++){let H=await F($,Z);if(!X.has(JSON.stringify(H)))return H}}return F($,Z)}class q0{extensions=new Map;define($,G){this.extensions.set($,{callback:G,context:{}})}has($){return this.extensions.has($)}reset($){if($){let G=this.extensions.get($);if(G)G.context={},this.extensions.delete($)}else this.extensions.clear()}keys(){return this.extensions.keys()}generate($,G){let Z=Object.keys($);for(let J=Z.length-1;J>=0;J--){let X=Z[J],Q=X.startsWith("x-")?X.slice(2):X,H=this.extensions.get(Q);if(H){let Y=$[X],E=H.callback.call(H.context,Y,$,G);if(E!==void 0)return E}}return}getContext($){return this.extensions.get($)?.context}}var r=new q0;function w0($,G){r.define($,G)}function T0($){r.reset($)}function j0($,G){return r.generate($,G)}var D1=["string","number","integer","boolean","null","object","array"];function R0($,G,Z){if($.faker!==void 0&&$.chance!==void 0)throw Error(`ambiguous generator: both faker and chance are defined in ${G.path}`);if($.faker!==void 0)try{let J=U1($.faker,G),X=C0(J,Z??$.type,G.path);if(typeof X==="string"&&$.format)return I0(X,$.format,G);return X}catch{}if($.chance!==void 0)try{let J=A1($.chance,G),X=C0(J,Z??$.type,G.path);if(typeof X==="string"&&$.format)return I0(X,$.format,G);return X}catch{}return}function I0($,G,Z){if(G==="date"){let J=typeof $==="string"?new Date($):$;if(J instanceof Date&&!isNaN(J.getTime())){let X=J.getFullYear(),Q=T(J.getMonth()+1),H=T(J.getDate());return`${X}-${Q}-${H}`}if(typeof $==="string"){let X=Date.parse($);if(!isNaN(X)){let Q=new Date(X),H=Q.getFullYear(),Y=T(Q.getMonth()+1),E=T(Q.getDate());return`${H}-${Y}-${E}`}}}if(G==="date-time"){let J=typeof $==="string"?new Date($):$;if(J instanceof Date&&!isNaN(J.getTime()))return J.toISOString();if(typeof $==="string"&&Date.parse($))return new Date($).toISOString()}return $}function C0($,G,Z){if(G===void 0)return $;let J=Array.isArray(G)?G[0]:G;switch(J){case"string":return $===null?"null":$===void 0?"undefined":String($);case"number":case"integer":let X=Number($);return J==="integer"?Math.floor(X):X;case"boolean":return Boolean($);case"null":return null;default:return $}}function U1($,G){if(!G.extensions?.faker){let H=typeof $==="string"?$:JSON.stringify($);throw Error(`cannot resolve faker-generator for ${H} in ${G.path}`)}let Z,J;if(typeof $==="object"&&$!==null){let H=$,Y=Object.keys(H);if(Y.length>0)Z=Y[0],J=H[Z];else throw Error(`cannot resolve faker-generator for ${JSON.stringify($)} in ${G.path}`)}else Z=$;let X=Z.split("."),Q=G.extensions.faker;for(let H of X)try{Q=Q[H]}catch{throw Error(`failed to resolve .${H} (${Z})`)}if(typeof Q==="function")return J?Q(...J):Q();else throw Error(`cannot resolve faker-generator for ${Z} in ${G.path}`)}function A1($,G){if(!G.extensions?.chance){let Z=typeof $==="string"?$:Object.keys($)[0];throw Error(`cannot resolve chance-generator for ${Z} in ${G.path}`)}if(typeof $==="string"){let Z=G.extensions.chance[$];if(typeof Z==="function")return Z.call(G.extensions.chance);throw Error(`cannot resolve chance-generator for ${$} in ${G.path}`)}if(typeof $==="object"&&$!==null){let Z=$,J=Object.keys(Z)[0],X=Z[J],Q=G.extensions.chance[J];if(typeof Q==="function")return X?Q.call(G.extensions.chance,X):Q.call(G.extensions.chance)}throw Error(`cannot resolve chance-generator in ${G.path}`)}function N1($,G){let Z=$.path==="/"?`/${G}`:`${$.path}/${G}`;return{...$,depth:$.depth+1,path:Z,refDepthReached:$.refDepthReached}}async function w($,G,Z){if(!Z.outputTransform)return $;return Z.outputTransform($,G,Z.outputPath)}async function F($,G){if($===!0)return F({},G);if($===!1)throw Error(`Cannot generate value for 'false' schema at ${G.path}`);if(G.propAliases&&typeof $==="object"&&$!==null){let Q=$,H=null;for(let[Y,E]of Object.entries(G.propAliases))if(Y in Q&&!(E in Q)){if(!H)H={...Q};H[E]=H[Y],delete H[Y]}if(H)$=H}let Z;if(Array.isArray($.type)){let Q=$.type;Z=G.random.pick(Q);let H={...G,resolvedType:Z},Y=R0($,H,Z);if(Y!==void 0){if(typeof Y==="string"&&H.maxLength!==void 0&&Y.length>H.maxLength)return w(Y.slice(0,H.maxLength),$,H);return w(Y,$,H)}}else{let Q=R0($,G,Z);if(Q!==void 0){if(typeof Q==="string"&&G.maxLength!==void 0&&Q.length>G.maxLength)return w(Q.slice(0,G.maxLength),$,G);return w(Q,$,G)}}let J=j0($,G);if(J!==void 0)return w(J,$,G);if($.$ref){let Q=await y($,G);return F(Q.schema,N1(Q.ctx,"$ref"))}if($.allOf||$.anyOf||$.oneOf||$.not||$.if)return z0($,G);if($.const!==void 0)return w(p($,G),$,G);if(G.useDefaultValue&&$.default!==void 0)return w($.default,$,G);if($.enum!==void 0)return w(p($,G),$,G);if(G.useExamplesValue){if(Array.isArray($.examples)&&$.examples.length>0)return w(G.random.pick($.examples),$,G);if($.example!==void 0)return w($.example,$,G)}let X=F1($,G);if(X===null){if(G.failOnInvalidTypes===!1){if(G.defaultInvalidTypeProduct!==void 0){let Q=G.defaultInvalidTypeProduct;if(typeof Q==="string")return V1(Q,G);return Q}return null}throw Error(`unknown primitive ${$.type} in ${G.path}/type`)}switch(X){case"null":return w(J0(G),$,G);case"boolean":return w(H0(G),$,G);case"number":return w(d($,G),$,G);case"integer":return w(Q0($,G),$,G);case"string":return w(_0($,G),$,G);case"object":return w(await A0($,G),$,G);case"array":return w(await N0($,G),$,G);default:throw Error(`Unknown type: ${X} at ${G.path}`)}}function F1($,G){if(G.resolvedType!==void 0)return G.resolvedType;if(typeof $.type==="string"){if(!["string","number","integer","boolean","null","object","array"].includes($.type))return null;return $.type}if(Array.isArray($.type))return G.random.pick($.type);if($.properties||$.required||$.additionalProperties!==void 0||$.patternProperties||$.minProperties!==void 0||$.maxProperties!==void 0)return"object";if(K1($))return"object";if($.items||$.prefixItems||$.contains||$.minItems!==void 0||$.maxItems!==void 0||$.uniqueItems)return"array";if($.minimum!==void 0||$.maximum!==void 0||$.exclusiveMinimum!==void 0||$.exclusiveMaximum!==void 0||$.multipleOf!==void 0)return"number";if($.minLength!==void 0||$.maxLength!==void 0||$.pattern||$.format||$.faker!==void 0||$.chance!==void 0)return"string";return G.random.pick(D1)}function K1($){if($.properties||$.type==="object"||$.type==="array")return!1;for(let G of Object.keys($)){if(k.has(G))continue;let Z=$[G];if(typeof Z==="object"&&Z!==null&&!Array.isArray(Z))return!0}return!1}function V1($,G){switch($){case"string":return"";case"number":case"integer":return 0;case"boolean":return!1;case"null":return null;case"object":return{};case"array":return[];default:return null}}function O0($){let G=c($),Z=s($);return`${G}T${Z}`}function c($){let G=$.int(2000,2030),Z=$.int(1,12),J=W0(G,Z),X=$.int(1,J);return`${G}-${T(Z)}-${T(X)}`}function s($){let G=$.int(0,23),Z=$.int(0,59),J=$.int(0,59);return`${T(G)}:${T(Z)}:${T(J)}Z`}var L1=["alice","bob","charlie","dave","eve","frank","grace","heidi"],z1=["example.com","test.org","demo.net","sample.io"];function t($){let G=$.pick(L1),Z=$.int(1,999),J=$.pick(z1);return`${G}${Z}@${J}`}var q1=["https"],w1=["example.com","test.org","demo.net"],T1=["api","v1","users","items","data","resource"];function g($){let G=$.pick(q1),Z=$.pick(w1),J=$.int(1,3),X=[];for(let Q=0;Q<J;Q++)X.push($.pick(T1));return`${G}://${Z}/${X.join("/")}`}var j1=["alpha","beta","gamma","delta","echo","fox","golf","hotel"],R1=["com","org","net","io","dev"];function a($){let G=$.int(1,3),Z=[];for(let J=0;J<G;J++)Z.push($.pick(j1));return Z.push($.pick(R1)),Z.join(".")}function P0($){return`${$.int(1,254)}.${$.int(0,255)}.${$.int(0,255)}.${$.int(1,254)}`}function S0($){let G=[];for(let Z=0;Z<8;Z++)G.push($.int(0,65535).toString(16));return G.join(":")}function b0($){let G=(Z)=>{let J="";for(let X=0;X<Z;X++)J+=$.int(0,15).toString(16);return J};return`${G(8)}-${G(4)}-4${G(3)}-${["8","9","a","b"][$.int(0,3)]}${G(3)}-${G(12)}`}var I1=["foo","bar","baz","items","0","1","2","name","value"];function e($){let G=$.int(1,4),Z=[];for(let J=0;J<G;J++)Z.push($.pick(I1));return"/"+Z.join("/")}function k0($){let G=["P"],Z=$.bool(),J=$.bool();if(Z){if($.bool())G.push(`${$.int(0,100)}Y`);if($.bool())G.push(`${$.int(0,12)}M`);if($.bool())G.push(`${$.int(0,30)}D`)}if(J){if(G.push("T"),$.bool())G.push(`${$.int(0,23)}H`);if($.bool())G.push(`${$.int(0,59)}M`);if($.bool())G.push(`${$.int(0,59)}S`)}if(G.length===1||G.length===2&&G[1]==="T")G.push("0D");return G.join("")}var C1=new Map([["date-time",O0],["date",c],["time",s],["duration",k0],["email",t],["idn-email",t],["uri",g],["uri-reference",g],["iri",g],["iri-reference",g],["hostname",a],["idn-hostname",a],["ipv4",P0],["ipv6",S0],["uuid",b0],["json-pointer",e],["relative-json-pointer",($)=>`${$.int(0,5)}${e($)}`]]);function $0($){let G=new Map(C1);if($)for(let[Z,J]of Object.entries($))G.set(Z,J);return G}function y0($,G,Z){Z.set($,G)}function f0($,G){if(!$.startsWith("$"))throw Error(`Invalid JSONPath: ${$} (must start with $)`);let Z=$.slice(1).split(/\.|\[(\d+|\*)\]/).filter(Boolean),J=[G];for(let X of Z){if(X==="")continue;let Q=[];for(let H of J){if(H===null||H===void 0)continue;if(X==="*"){if(Array.isArray(H))Q.push(...H)}else if(/^\d+$/.test(X)){let Y=parseInt(X,10);if(Array.isArray(H)&&Y<H.length)Q.push(H[Y])}else if(X==="")G0(H,Q);else if(typeof H==="object"&&H!==null&&X in H)Q.push(H[X])}J=Q}return J}function G0($,G){if($===null||$===void 0)return;if(Array.isArray($))for(let Z of $)G.push(Z),G0(Z,G);else if(typeof $==="object")for(let Z of Object.values($))G.push(Z),G0(Z,G)}function O1($){if($.properties)return $.properties;if($.type==="object"||$.type===void 0){let G={},Z=!1;for(let[J,X]of Object.entries($)){if(k.has(J))continue;if(i(X))G[J]=X,Z=!0;else G[J]={const:X},Z=!0}if(Z)return G}return{}}async function u($,G,Z,J){if(!Z.resolveJsonPath)return $;let X=J??$;if(G===!0||G===!1)return $;if(G.$ref)return $;let Q=G;if(Q.allOf||Q.anyOf||Q.oneOf)return $;if(typeof $==="object"&&$!==null&&!Array.isArray($)){let H={...$},Y=O1(Q);for(let[E,B]of Object.entries(Y))if(E in H){let K=H[E];if(typeof B==="object"&&B!==null&&"jsonPath"in B&&typeof B.jsonPath==="string"){let N=f0(B.jsonPath,X);if(N.length>0)H[E]=Z.random.pick(N)}else{let N=await u(K,B,Z,X);H[E]=N}}return H}if(Array.isArray($)&&Q.items){let H=[];for(let Y of $){let E=await u(Y,Q.items,Z,X);H.push(E)}return H}return $}var g0=$0(),v0=new Set(["https://json-schema.org/draft/2020-12/schema","https://json-schema.org/draft/2019-09/schema"]);async function Z0($,G){if(G?.validateSchemaVersion===!0&&!G?.propAliases){if(typeof $==="object"&&$!==null&&"$schema"in $){let N=$.$schema;if(typeof N==="string"&&!v0.has(N))throw Error(`Unsupported JSON Schema version: ${N}. Supported versions: ${[...v0].join(", ")}`)}}let Z=k1(G),J=x(G?.seed??1),X=Z.propAliases?b1($,Z.propAliases):$,Q=V0(X);L0(X,Q);let H=Z.formats?$0(Z.formats):new Map(g0),Y=Z.refDepthMin??Z.refDepth,E=Z.refDepthMax??Z.refDepth;if(Y!==void 0&&E!==void 0&&Y>E)throw Error(`refDepthMin (${Y}) cannot be greater than refDepthMax (${E})`);let B={random:J,maxDepth:Z.maxDepth??(E?E+20:5),maxDefaultItems:Z.maxDefaultItems??3,optionalsProbability:Z.optionalsProbability??0.5,depth:0,refRegistry:Q,refStack:new Set,formatRegistry:H,refResolver:Z.refResolver,minItems:Z.minItems,maxItems:Z.maxItems,minLength:Z.minLength,maxLength:Z.maxLength,useDefaultValue:Z.useDefaultValue,path:"/",outputPath:"/",alwaysFakeOptionals:Z.alwaysFakeOptionals,fixedProbabilities:Z.fixedProbabilities,fillProperties:Z.fillProperties,extensions:Z.extensions,resolveJsonPath:Z.resolveJsonPath,autoIncrementCounters:new Map,refDepth:0,refDepthMin:Y,refDepthMax:E,useExamplesValue:Z.useExamplesValue,pruneProperties:Z.pruneProperties,failOnInvalidTypes:Z.failOnInvalidTypes,defaultInvalidTypeProduct:Z.defaultInvalidTypeProduct,minDateTime:Z.minDateTime,maxDateTime:Z.maxDateTime,propAliases:Z.propAliases,outputTransform:Z.outputTransform},K=await F(X,B);if(Z.resolveJsonPath)return u(K,$,B,K);return K}function e$($){let G={...$},Z=0;return{generate(J){let X=(G.seed??1)+Z++;return Z0(J,{...G,seed:X})}}}function $2($,G){y0($,G,g0)}function G2($,G){w0($,G)}function Z2($){T0($)}async function P1($,G){let Z=await Z0($,G),J=G?.pretty!==!1?{space:2,...G?.jsonStringifyOptions}:{space:0,...G?.jsonStringifyOptions};return JSON.stringify(Z,J.replacer,J.space)}function X2($){let G={...$},Z=0;return{generate(J){let X=(G.seed??1)+Z++;return P1(J,{...G,seed:X})}}}async function S1($,G){let Z=G?.yaml??G?.extensions?.yaml;if(!Z)throw Error("YAML support requires 'yaml' package. Provide via options.extensions.yaml or options.yaml.");let J=await Z0($,G),X=G?.pretty!==!1?{indent:2,lineWidth:0}:{};return Z.stringify(J,X)}function J2($){let G={...$},Z=0;return{generate(J){let X=(G.seed??1)+Z++;return S1(J,{...G,seed:X})}}}function b1($,G){if(typeof $!=="object"||$===null)return $;let Z=$,J=null;for(let[X,Q]of Object.entries(G))if(X in Z&&!(Q in Z)){if(!J)J={...Z};J[Q]=J[X],delete J[X]}return J??$}function k1($){if(!$)return{};let G=$,Z={...$};if(G.requiredOnly===!0&&Z.optionalsProbability===void 0)Z={...Z,optionalsProbability:0,alwaysFakeOptionals:!1};if(G.ignoreProperties&&G.ignoreProperties.length>0)Z={...Z,outputTransform:y1(Z.outputTransform,f1(G.ignoreProperties))};return Z}function y1($,G){if(!$)return G;if(!G)return $;return async(Z,J,X)=>{let Q=await $(Z,J,X);return G(Q,J,X)}}function f1($){return(G,Z,J)=>{if(J==="/")return G;let X=v1(J.slice(J.lastIndexOf("/")+1));return $.some((H)=>{if(typeof H==="string")return H===X;if(H instanceof RegExp)return H.test(X);return H(Z)})?void 0:G}}function v1($){return $.replace(/~1/g,"/").replace(/~0/g,"~")}export{Z2 as reset,$2 as registerFormat,S1 as generateYaml,P1 as generateJson,Z0 as generate,G2 as define,J2 as createYamlGenerator,H1 as createRemoteResolver,X2 as createJsonGenerator,e$ as createGenerator};
//# debugId=E12AF4371D02BE0F64756E2164756E21
//# sourceMappingURL=index.js.map