interface-forge
Version:
A TypeScript library for creating strongly typed mock data factories using Faker.js for test data generation
2 lines • 5.44 kB
JavaScript
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require("./src-CMHPxZVZ.js");let l=require("ajv");l=s(l);let u=require("ajv-formats");u=s(u);function d(e,t){return c.j(e)&&c.j(t)?{...e,...t}:t===void 0||c.j(t)&&Object.keys(t).length===0?e:t}var f=new WeakMap,p=new WeakMap,m=new WeakSet,h=class{constructor(e,t){c.E(this,m),c.m(this,f,void 0),c.m(this,p,void 0),c.p(f,this,e),c.p(p,this,t)}generate(e=c.f(p,this),t=0){if(t>=(c.f(f,this).options?.maxDepth??5))return null;if(e===!0)return{};if(e===!1)throw new c.x(`Cannot generate data for boolean false JSON Schema`);let n=c.T(m,this,T).call(this,e);if(`const`in n)return n.const;if(n.enum&&n.enum.length>0)return c.f(f,this).helpers.arrayElement(n.enum);let r=n.oneOf?.[0]??n.anyOf?.[0];if(r)return this.generate(r,t+1);switch(c.T(m,this,w).call(this,n)){case`array`:return c.T(m,this,g).call(this,n,t);case`boolean`:return c.f(f,this).datatype.boolean();case`integer`:return c.T(m,this,_).call(this,n,!0);case`null`:return null;case`number`:return c.T(m,this,_).call(this,n,!1);case`object`:return c.T(m,this,v).call(this,n,t);case`string`:return c.T(m,this,y).call(this,n);default:return{}}}};function g(e,t){let n=e.minItems??c.n.DEFAULT_ARRAY_MIN,r=e.maxItems??Math.max(n,c.n.DEFAULT_ARRAY_MAX),i=c.f(f,this).number.int({max:r,min:n});if(Array.isArray(e.items))return e.items.map(e=>this.generate(e,t+1)).slice(0,i);let a=e.items??{};return Array.from({length:i},()=>this.generate(a,t+1))}function _(e,t){let n=e.minimum??(t?c.r.DEFAULT_INT_MIN:c.r.DEFAULT_MIN),r=e.maximum??(t?c.r.DEFAULT_INT_MAX:c.r.DEFAULT_MAX);if(typeof e.exclusiveMinimum==`number`?n=t?Math.floor(e.exclusiveMinimum)+1:e.exclusiveMinimum+c.r.PRECISION_OFFSET:e.exclusiveMinimum===!0&&(n=t?n+1:n+c.r.PRECISION_OFFSET),typeof e.exclusiveMaximum==`number`?r=t?Math.ceil(e.exclusiveMaximum)-1:e.exclusiveMaximum-c.r.PRECISION_OFFSET:e.exclusiveMaximum===!0&&(r=t?r-1:r-c.r.PRECISION_OFFSET),e.multipleOf){let t=Math.ceil(n/e.multipleOf),i=Math.floor(r/e.multipleOf);return c.f(f,this).number.int({max:i,min:t})*e.multipleOf}return t?c.f(f,this).number.int({max:Math.floor(r),min:Math.ceil(n)}):c.f(f,this).number.float({max:r,min:n})}function v(e,t){let n={};for(let[r,i]of Object.entries(e.properties??{}))n[r]=this.generate(i,t+1);return n}function y(e){let t=e.minLength??1,n=e.maxLength??Math.max(t,c.i.DEFAULT),r=c.T(m,this,b).call(this,e.format);if(r&&r.length>=t&&(e.maxLength===void 0||r.length<=e.maxLength))return r;if(e.pattern){let r=c.T(m,this,x).call(this,e.pattern,t,n);if(r)return r}return c.f(f,this).string.alpha({length:{max:n,min:t}})}function b(e){switch(e){case`date`:return`2026-01-01`;case`date-time`:return`2026-01-01T00:00:00Z`;case`email`:return`user@example.com`;case`time`:return`00:00:00Z`;case`uri`:return`https://example.com`;case`uuid`:return`00000000-0000-4000-8000-000000000000`;default:return}}function x(e,t,n){let r=new RegExp(e);return[c.T(m,this,C).call(this,e),c.T(m,this,S).call(this,e),`mock-value`,`aaaaa`,`0000`].filter(e=>typeof e==`string`).find(e=>e.length>=t&&e.length<=n&&r.test(e))}function S(e){let t=/^\^?([\w .-]*)\[0-9\]\{(\d+)\}\$?$/.exec(e);if(t)return`${t[1]}${`0`.repeat(Number(t[2]))}`}function C(e){let t=/^\^\[([A-Za-z0-9-]+)\]\{(\d+)\}\$$/.exec(e);if(!t)return;let[,n,r]=t,i=Number(r);return n.includes(`0-9`)?`0`.repeat(i):n.includes(`A-Z`)?`A`.repeat(i):`a`.repeat(i)}function w(e){let t=Array.isArray(e.type)?e.type.find(e=>e!==`null`):e.type;if(t)return t;if(e.properties)return`object`;if(e.items)return`array`}function T(e){if(!e.$ref)return e;let t=/^#\/(\$defs|definitions)\/(.+)$/.exec(e.$ref);if(!t||typeof c.f(p,this)==`boolean`)throw new c.x(`Unsupported JSON Schema reference: ${e.$ref}`);let n=(t[1]===`$defs`?c.f(p,this).$defs:c.f(p,this).definitions)?.[decodeURIComponent(t[2])];if(!n||typeof n==`boolean`)throw new c.x(`Unable to resolve JSON Schema reference: ${e.$ref}`);return n}var E=new WeakMap,D=new WeakMap,O=new WeakSet,k=class extends c.t{constructor(e,t,n){let r,i=c.O(t)?t:(()=>({})),a=c.k(n)?n:c.k(t)&&!c.O(t)?t:{};super(((t,n,a)=>{let o=r.generate(e),s=i(t,n,a);return s instanceof Promise?s.then(e=>d(o,e)):d(o,s)}),a),c.E(this,O),c.m(this,E,void 0),c.m(this,D,void 0),c.p(E,this,e),r=new h(this,e);let o=new l.default({allErrors:!0,strict:!1,...a.ajv});(0,u.default)(o),c.p(D,this,o.compile(e));let s=this.batch.bind(this),f=this.batchAsync.bind(this),p=this.build.bind(this),m=this.buildAsync.bind(this);this.batch=(e,t)=>s(e,t).map(e=>c.T(O,this,A).call(this,e)),this.batchAsync=async(e,t)=>(await f(e,t)).map(e=>c.T(O,this,A).call(this,e)),this.build=(e,t)=>c.T(O,this,A).call(this,p(e,t)),this.buildAsync=async(e,t)=>c.T(O,this,A).call(this,await m(e,t))}get schema(){return c.f(E,this)}};function A(e){if(!c.f(D,this).call(this,e))throw new c.w(`Generated value does not match JSON Schema: ${JSON.stringify(c.f(D,this).errors)}`);return e}exports.JsonSchemaFactory=k;
//# sourceMappingURL=json-schema.js.map